qpicture.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:6k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QPICTURE_H
  38. #define QPICTURE_H
  39. #include <QtGui/qpaintdevice.h>
  40. #include <QtCore/qstringlist.h>
  41. QT_BEGIN_HEADER
  42. QT_BEGIN_NAMESPACE
  43. QT_MODULE(Gui)
  44. #ifndef QT_NO_PICTURE
  45. class QPicturePrivate;
  46. class Q_GUI_EXPORT QPicture : public QPaintDevice
  47. {
  48.     Q_DECLARE_PRIVATE(QPicture)
  49. public:
  50.     explicit QPicture(int formatVersion = -1);
  51.     QPicture(const QPicture &);
  52.     ~QPicture();
  53.     bool isNull() const;
  54.     int devType() const;
  55.     uint size() const;
  56.     const char* data() const;
  57.     virtual void setData(const char* data, uint size);
  58.     bool play(QPainter *p);
  59.     bool load(QIODevice *dev, const char *format = 0);
  60.     bool load(const QString &fileName, const char *format = 0);
  61.     bool save(QIODevice *dev, const char *format = 0);
  62.     bool save(const QString &fileName, const char *format = 0);
  63.     QRect boundingRect() const;
  64.     void setBoundingRect(const QRect &r);
  65.     QPicture& operator=(const QPicture &p);
  66.     void detach();
  67.     bool isDetached() const;
  68.     friend Q_GUI_EXPORT QDataStream &operator<<(QDataStream &in, const QPicture &p);
  69.     friend Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QPicture &p);
  70.     static const char* pictureFormat(const QString &fileName);
  71.     static QList<QByteArray> inputFormats();
  72.     static QList<QByteArray> outputFormats();
  73.     static QStringList inputFormatList();
  74.     static QStringList outputFormatList();
  75.     QPaintEngine *paintEngine() const;
  76. protected:
  77.     QPicture(QPicturePrivate &data);
  78.     int metric(PaintDeviceMetric m) const;
  79. #ifdef QT3_SUPPORT
  80.     inline QT3_SUPPORT QPicture copy() const { QPicture p(*this); p.detach(); return p; }
  81. #endif
  82. private:
  83.     bool exec(QPainter *p, QDataStream &ds, int i);
  84.     void detach_helper();
  85.     QPicturePrivate *d_ptr;
  86.     friend class QPicturePaintEngine;
  87.     friend class Q3Picture;
  88.     friend class QAlphaPaintEngine;
  89.     friend class QPreviewPaintEngine;
  90. public:
  91.     typedef QPicturePrivate* DataPtr;
  92.     inline DataPtr &data_ptr() { return d_ptr; }
  93. };
  94. Q_DECLARE_SHARED(QPicture)
  95. #ifndef QT_NO_PICTUREIO
  96. class QIODevice;
  97. class QPictureIO;
  98. typedef void (*picture_io_handler)(QPictureIO *); // picture IO handler
  99. struct QPictureIOData;
  100. class Q_GUI_EXPORT QPictureIO
  101. {
  102. public:
  103.     QPictureIO();
  104.     QPictureIO(QIODevice *ioDevice, const char *format);
  105.     QPictureIO(const QString &fileName, const char *format);
  106.     ~QPictureIO();
  107.     const QPicture &picture() const;
  108.     int status() const;
  109.     const char *format() const;
  110.     QIODevice *ioDevice() const;
  111.     QString fileName() const;
  112.     int quality() const;
  113.     QString description() const;
  114.     const char *parameters() const;
  115.     float gamma() const;
  116.     void setPicture(const QPicture &);
  117.     void setStatus(int);
  118.     void setFormat(const char *);
  119.     void setIODevice(QIODevice *);
  120.     void setFileName(const QString &);
  121.     void setQuality(int);
  122.     void setDescription(const QString &);
  123.     void setParameters(const char *);
  124.     void setGamma(float);
  125.     bool read();
  126.     bool write();
  127.     static QByteArray pictureFormat(const QString &fileName);
  128.     static QByteArray pictureFormat(QIODevice *);
  129.     static QList<QByteArray> inputFormats();
  130.     static QList<QByteArray> outputFormats();
  131.     static void defineIOHandler(const char *format,
  132.                                 const char *header,
  133.                                 const char *flags,
  134.                                 picture_io_handler read_picture,
  135.                                 picture_io_handler write_picture);
  136. private:
  137.     Q_DISABLE_COPY(QPictureIO)
  138.     void init();
  139.     QPictureIOData *d;
  140. };
  141. #endif //QT_NO_PICTUREIO
  142. /*****************************************************************************
  143.   QPicture stream functions
  144.  *****************************************************************************/
  145. Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QPicture &);
  146. Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPicture &);
  147. #endif // QT_NO_PICTURE
  148. QT_END_NAMESPACE
  149. QT_END_HEADER
  150. #endif // QPICTURE_H