//============================================================================= // // File : KviPixmap.cpp // Creation date : Sat Jun 24 2000 14:00:27 by Szymon Stefanek // // This file is part of the KVIrc IRC client distribution // Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net) // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the HOPE that it will be USEFUL, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= #include "kvi_debug.h" #include "KviPixmap.h" #include "KviQString.h" #include #include KviPixmap::KviPixmap() = default; KviPixmap::KviPixmap(const char * path) { load(path); } KviPixmap::KviPixmap(const KviPixmap & pix) { if(!pix.path().isEmpty() && !pix.isNull()) set(*(pix.pixmap()), pix.path()); } bool KviPixmap::load(const char * path) { return load(QString(path)); } bool KviPixmap::load(const QString & path) { if(path.isEmpty()) { setNull(); return false; } m_pPix = std::make_unique(path); if(m_pPix->isNull()) { setNull(); return false; } m_szPath = path; return true; } void KviPixmap::set(const QPixmap & pix, const QString & szPath) { if(pix.isNull()) { setNull(); return; } m_pPix = std::make_unique(pix); m_szPath = szPath; } void KviPixmap::setNull() { m_pPix.reset(); m_szPath = ""; } KviPixmap & KviPixmap::operator=(const KviPixmap & pix) { if(this == &pix) return *this; // self assignment if(KviQString::equalCI(m_szPath, pix.path())) return *this; // same pix if(!pix.path().isEmpty() && !pix.isNull()) { m_szPath = pix.path(); m_pPix = std::make_unique(*(pix.pixmap())); } else setNull(); return *this; }