//============================================================================= // // File : kvi_pixmap.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-2007 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 opinion) 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. // //============================================================================= #define __KVILIB__ #include "kvi_debug.h" #include "kvi_pixmap.h" #include "kvi_qstring.h" #include KviPixmap::KviPixmap() { m_pPix = 0; } KviPixmap::KviPixmap(const char * path) { m_pPix = 0; load(path); } KviPixmap::KviPixmap(const KviPixmap &pix) { m_pPix = 0; m_szPath = pix.path(); if(!m_szPath.isEmpty()) { if(pix.pixmap()) { m_pPix = new TQPixmap(*(pix.pixmap())); } } } KviPixmap::~KviPixmap() { if(m_pPix)delete m_pPix; m_pPix = 0; // just to be sure :) } bool KviPixmap::load(const char * path) { if(m_pPix)delete m_pPix; m_pPix = 0; m_szPath = path; if(m_szPath.isEmpty())return false; m_pPix = new TQPixmap(m_szPath); if(m_pPix->isNull()) { delete m_pPix; m_pPix = 0; m_szPath = ""; return false; } return true; } bool KviPixmap::load(const TQString& path) { if(m_pPix)delete m_pPix; m_pPix = 0; m_szPath = path; if(m_szPath.isEmpty())return false; m_pPix = new TQPixmap(m_szPath); if(m_pPix->isNull()) { delete m_pPix; m_pPix = 0; m_szPath = ""; return false; } return true; } void KviPixmap::set(const TQPixmap &pix,const TQString &szPath) { if(pix.isNull()) { setNull(); return; } if(m_pPix)delete m_pPix; m_pPix = new TQPixmap(pix); m_szPath = szPath; } void KviPixmap::setNull() { if(m_pPix)delete m_pPix; m_pPix = 0; m_szPath = ""; } KviPixmap & KviPixmap::operator=(const KviPixmap &pix) { if(m_pPix == pix.m_pPix)return (*this); // self assignment (!!!) if(KviTQString::equalCI(m_szPath,pix.path()))return (*this); // same pix if(m_pPix)delete m_pPix; m_pPix = 0; m_szPath = pix.path(); if(!m_szPath.isEmpty()) { if(pix.pixmap()) { m_pPix = new TQPixmap(*(pix.pixmap())); } } return (*this); } void KviPixmapUtils::drawPixmapWithPainter(TQPainter* p,TQPixmap * pix,int flags,const TQRect& paintRect,int iWidgetWidth,int iWidgetHeight,int dx,int dy) { if(!pix)return; if(!flags) { p->drawTiledPixmap(paintRect.left(),paintRect.top(),paintRect.width(),paintRect.height(),*pix,dx,dy); return; } int iPixWidth=pix->width(); int iPixHeight=pix->height(); int x=0; int y=0; if( !(flags & TQt::AlignHorizontal_Mask )) x=-1; else if ( flags & TQt::AlignRight ) x=iWidgetWidth - iPixWidth; else if( flags & TQt::AlignHCenter ) x=(iWidgetWidth - iPixWidth)/2; if( !(flags & TQt::AlignVertical_Mask )) y=-1; else if ( flags & TQt::AlignBottom ) y=iWidgetHeight - iPixHeight; else if( flags & TQt::AlignVCenter ) y=(iWidgetHeight - iPixHeight)/2; if(x==-1) { p->drawTiledPixmap(paintRect.left(),y,paintRect.width(),iPixHeight,*pix,dx,dy); } else if(y==-1) { p->drawTiledPixmap(x,paintRect.top(),iPixWidth,paintRect.height(),*pix,dx,dy); } else { p->drawPixmap(x,y,*pix); } }