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 13:19:24 2004 by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2003