00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __koPictureEps_h__
00021 #define __koPictureEps_h__
00022
00023 #include <QString>
00024
00025 #include <QPixmap>
00026
00027 class QPainter;
00028 class QSize;
00029 class KoPictureEpsPrivate;
00030
00031
00032
00037 class KoPictureEps : public KoPictureBase
00038 {
00039 public:
00043 KoPictureEps();
00044
00048 virtual ~KoPictureEps();
00049
00050 KoPictureType::Type getType(void) const;
00051
00052 KoPictureBase* newCopy(void) const;
00053
00057 virtual bool isNull(void) const;
00058
00077 virtual void draw(QPainter& painter, int x, int y, int width, int height, int sx = 0, int sy = 0, int sw = -1, int sh = -1, bool fastMode = false);
00078
00079 virtual bool loadData(const QByteArray& array, const QString& extension);
00080
00081 virtual bool save(QIODevice* io) const;
00082
00083 virtual QSize getOriginalSize(void) const;
00084
00085 virtual QPixmap generatePixmap(const QSize& size, bool smoothScale = false);
00086
00087 virtual QString getMimeType(const QString& extension) const;
00088
00093 virtual QImage generateImage(const QSize& size);
00094
00095 virtual void clearCache(void);
00096 protected:
00097 QPixmap getPixmap(QImage& image);
00098 void scaleAndCreatePixmap(const QSize& size, bool fastMode, const int resolutionx, const int resolutiony );
00099 QImage scaleWithGhostScript( const QSize& size, const int resolutionx, const int resolutiony );
00100 bool extractPostScriptStream( void );
00101
00102 private:
00103 int tryScaleWithGhostScript(QImage &image, const QSize& size, const int resolutionx, const int resolutiony, const char* device );
00118 QString readLine( const QByteArray& array, const uint start, const uint length, uint& pos, bool& lastCharWasCr );
00119
00120 private:
00124 QByteArray m_rawData;
00125 QPixmap m_cachedPixmap;
00126 QSize m_originalSize;
00127 QSize m_cachedSize;
00128 QRect m_boundingBox;
00129 uint m_psStreamStart;
00130 uint m_psStreamLength;
00131
00135 bool m_cacheIsInFastMode;
00136 };
00137
00138 #endif