lib Library API Documentation

koPicture.cc

00001 /* This file is part of the KDE project 00002 Copyright (c) 2001 Simon Hausmann <hausmann@kde.org> 00003 Copyright (C) 2002, 2003 Nicolas GOUTTE <goutte@kde.org> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 Boston, MA 02111-1307, USA. 00019 */ 00020 00021 #include <qpainter.h> 00022 #include <qfile.h> 00023 00024 #include <kdebug.h> 00025 #include <kurl.h> 00026 #include <kio/netaccess.h> 00027 00028 #include "koPictureKey.h" 00029 #include "koPictureBase.h" 00030 #include "koPictureShared.h" 00031 #include "koPicture.h" 00032 00033 KoPicture::KoPicture(void) : m_sharedData(NULL) 00034 { 00035 } 00036 00037 KoPicture::~KoPicture(void) 00038 { 00039 unlinkSharedData(); 00040 } 00041 00042 KoPicture::KoPicture(const KoPicture &other) 00043 { 00044 m_sharedData=NULL; 00045 (*this)=other; 00046 } 00047 00048 KoPicture& KoPicture::operator=( const KoPicture &other ) 00049 { 00050 //kdDebug(30003) << "KoPicture::= before" << endl; 00051 if (other.m_sharedData) 00052 other.linkSharedData(); 00053 if (m_sharedData) 00054 unlinkSharedData(); 00055 m_sharedData=other.m_sharedData; 00056 m_key=other.m_key; 00057 //kdDebug(30003) << "KoPicture::= after" << endl; 00058 return *this; 00059 } 00060 00061 void KoPicture::unlinkSharedData(void) 00062 { 00063 if (m_sharedData && m_sharedData->deref()) 00064 delete m_sharedData; 00065 00066 m_sharedData=NULL; 00067 } 00068 00069 void KoPicture::linkSharedData(void) const 00070 { 00071 if (m_sharedData) 00072 m_sharedData->ref(); 00073 } 00074 00075 void KoPicture::createSharedData(void) 00076 { 00077 if (!m_sharedData) 00078 { 00079 m_sharedData=new KoPictureShared(); 00080 // Do not call m_sharedData->ref() 00081 } 00082 } 00083 00084 KoPictureType::Type KoPicture::getType(void) const 00085 { 00086 if (m_sharedData) 00087 return m_sharedData->getType(); 00088 return KoPictureType::TypeUnknown; 00089 } 00090 00091 KoPictureKey KoPicture::getKey(void) const 00092 { 00093 return m_key; 00094 } 00095 00096 void KoPicture::setKey(const KoPictureKey& key) 00097 { 00098 m_key=key; 00099 } 00100 00101 bool KoPicture::isNull(void) const 00102 { 00103 if (m_sharedData) 00104 return m_sharedData->isNull(); 00105 return true; 00106 } 00107 00108 void KoPicture::draw(QPainter& painter, int x, int y, int width, int height, int sx, int sy, int sw, int sh, bool fastMode) 00109 { 00110 if (m_sharedData) 00111 m_sharedData->draw(painter, x, y, width, height, sx, sy, sw, sh, fastMode); 00112 else 00113 { 00114 // Draw a white box 00115 kdWarning(30003) << "Drawing white rectangle! (KoPicture::draw)" << endl; 00116 painter.save(); 00117 painter.setBrush(QColor(255, 255, 255)); 00118 painter.drawRect(x,y,width,height); 00119 painter.restore(); 00120 } 00121 } 00122 00123 bool KoPicture::loadXpm(QIODevice* io) 00124 { 00125 kdDebug(30003) << "KoPicture::loadXpm" << endl; 00126 if (!io) 00127 { 00128 kdError(30003) << "No QIODevice!" << endl; 00129 return false; 00130 } 00131 createSharedData(); 00132 return m_sharedData->loadXpm(io); 00133 } 00134 00135 bool KoPicture::save(QIODevice* io) 00136 { 00137 if (!io) 00138 return false; 00139 if (m_sharedData) 00140 return m_sharedData->save(io); 00141 return false; 00142 } 00143 00144 bool KoPicture::saveAsKOffice1Dot1(QIODevice* io) 00145 { 00146 if (!io) 00147 return false; 00148 if (m_sharedData) 00149 return m_sharedData->saveAsKOffice1Dot1(io); 00150 return false; 00151 } 00152 00153 void KoPicture::clear(void) 00154 { 00155 unlinkSharedData(); 00156 } 00157 00158 void KoPicture::clearAndSetMode(const QString& newMode) 00159 { 00160 createSharedData(); 00161 m_sharedData->clearAndSetMode(newMode); 00162 } 00163 00164 QString KoPicture::getExtension(void) const 00165 { 00166 if (m_sharedData) 00167 return m_sharedData->getExtension(); 00168 return "null"; // Just a dummy 00169 } 00170 00171 QString KoPicture::getExtensionAsKOffice1Dot1(void) const 00172 { 00173 if (m_sharedData) 00174 return m_sharedData->getExtensionAsKOffice1Dot1(); 00175 return "null"; // Just a dummy 00176 } 00177 00178 QString KoPicture::getMimeType(void) const 00179 { 00180 if (m_sharedData) 00181 return m_sharedData->getMimeType(); 00182 return QString(NULL_MIME_TYPE); 00183 } 00184 00185 bool KoPicture::load(QIODevice* io, const QString& extension) 00186 { 00187 kdDebug(30003) << "KoPicture::load(QIODevice*, const QString&) " << extension << endl; 00188 createSharedData(); 00189 00190 return m_sharedData->load(io,extension); 00191 } 00192 00193 bool KoPicture::loadFromFile(const QString& fileName) 00194 { 00195 kdDebug(30003) << "KoPicture::loadFromFile " << fileName << endl; 00196 createSharedData(); 00197 return m_sharedData->loadFromFile(fileName); 00198 } 00199 00200 QSize KoPicture::getOriginalSize(void) const 00201 { 00202 if (m_sharedData) 00203 return m_sharedData->getOriginalSize(); 00204 return QSize(0,0); 00205 } 00206 00207 QPixmap KoPicture::generatePixmap(const QSize& size, bool smoothScale) 00208 { 00209 if (m_sharedData) 00210 return m_sharedData->generatePixmap(size, smoothScale); 00211 return QPixmap(); 00212 } 00213 00214 bool KoPicture::isClipartAsKOffice1Dot1(void) const 00215 { 00216 if (m_sharedData) 00217 return m_sharedData->isClipartAsKOffice1Dot1(); 00218 return false; 00219 } 00220 00221 bool KoPicture::setKeyAndDownloadPicture(const KURL& url) 00222 { 00223 bool result=false; 00224 00225 QString tmpFileName; 00226 if ( KIO::NetAccess::download(url, tmpFileName) ) 00227 { 00228 KoPictureKey key; 00229 key.setKeyFromFile( tmpFileName ); 00230 setKey( key ); 00231 result=loadFromFile( tmpFileName ); 00232 KIO::NetAccess::removeTempFile( tmpFileName ); 00233 } 00234 00235 return result; 00236 } 00237 00238 QDragObject* KoPicture::dragObject( QWidget *dragSource, const char *name ) 00239 { 00240 if (m_sharedData) 00241 return m_sharedData->dragObject( dragSource, name ); 00242 return 0L; 00243 } 00244 00245 QImage KoPicture::generateImage(const QSize& size) 00246 { 00247 if (m_sharedData) 00248 return m_sharedData->generateImage( size ); 00249 return QImage(); 00250 } 00251 00252 bool KoPicture::hasAlphaBuffer() const 00253 { 00254 if (m_sharedData) 00255 return m_sharedData->hasAlphaBuffer(); 00256 return false; 00257 } 00258 00259 void KoPicture::setAlphaBuffer(bool enable) 00260 { 00261 if (m_sharedData) 00262 m_sharedData->setAlphaBuffer(enable); 00263 } 00264 00265 QImage KoPicture::createAlphaMask(int conversion_flags) const 00266 { 00267 if (m_sharedData) 00268 return m_sharedData->createAlphaMask(conversion_flags); 00269 return QImage(); 00270 } 00271 00272 void KoPicture::clearCache(void) 00273 { 00274 if (m_sharedData) 00275 m_sharedData->clearCache(); 00276 } 00277
KDE Logo
This file is part of the documentation for lib Library Version 1.3.5.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Nov 17 06:54:17 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003