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

系统编程

开发平台:

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 QMOVIE_H
  38. #define QMOVIE_H
  39. #include <QtCore/qobject.h>
  40. #ifndef QT_NO_MOVIE
  41. #include <QtCore/qbytearray.h>
  42. #include <QtCore/qlist.h>
  43. #include <QtCore/qobject.h>
  44. #include <QtGui/qimagereader.h>
  45. #ifdef QT3_SUPPORT
  46. #include <QtGui/qimage.h>
  47. #include <QtGui/qpixmap.h>
  48. #endif
  49. QT_BEGIN_HEADER
  50. QT_BEGIN_NAMESPACE
  51. QT_MODULE(Gui)
  52. class QByteArray;
  53. class QColor;
  54. class QIODevice;
  55. class QImage;
  56. class QPixmap;
  57. class QRect;
  58. class QSize;
  59. class QMoviePrivate;
  60. class Q_GUI_EXPORT QMovie : public QObject
  61. {
  62.     Q_OBJECT
  63.     Q_DECLARE_PRIVATE(QMovie)
  64.     Q_ENUMS(MovieState CacheMode)
  65.     Q_PROPERTY(int speed READ speed WRITE setSpeed)
  66.     Q_PROPERTY(CacheMode cacheMode READ cacheMode WRITE setCacheMode)
  67. public:
  68.     enum MovieState {
  69.         NotRunning,
  70.         Paused,
  71.         Running
  72.     };
  73.     enum CacheMode {
  74.         CacheNone,
  75.         CacheAll
  76.     };
  77.     QMovie(QObject *parent = 0);
  78.     explicit QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent = 0);
  79.     explicit QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent = 0);
  80.     ~QMovie();
  81.     static QList<QByteArray> supportedFormats();
  82.     void setDevice(QIODevice *device);
  83.     QIODevice *device() const;
  84.     void setFileName(const QString &fileName);
  85.     QString fileName() const;
  86.     void setFormat(const QByteArray &format);
  87.     QByteArray format() const;
  88.     void setBackgroundColor(const QColor &color);
  89.     QColor backgroundColor() const;
  90.     MovieState state() const;
  91.     QRect frameRect() const;
  92.     QImage currentImage() const;
  93.     QPixmap currentPixmap() const;
  94.     bool isValid() const;
  95.     bool jumpToFrame(int frameNumber);
  96.     int loopCount() const;
  97.     int frameCount() const;
  98.     int nextFrameDelay() const;
  99.     int currentFrameNumber() const;
  100.     int speed() const;
  101.     QSize scaledSize();
  102.     void setScaledSize(const QSize &size);
  103.     CacheMode cacheMode() const;
  104.     void setCacheMode(CacheMode mode);
  105.     CacheMode cacheMode(); // ### Qt 5: remove me
  106. Q_SIGNALS:
  107.     void started();
  108.     void resized(const QSize &size);
  109.     void updated(const QRect &rect);
  110.     void stateChanged(QMovie::MovieState state);
  111.     void error(QImageReader::ImageReaderError error);
  112.     void finished();
  113.     void frameChanged(int frameNumber);
  114. public Q_SLOTS:
  115.     void start();
  116.     bool jumpToNextFrame();
  117.     void setPaused(bool paused);
  118.     void stop();
  119.     void setSpeed(int percentSpeed);
  120. private:
  121.     Q_DISABLE_COPY(QMovie)
  122.     Q_PRIVATE_SLOT(d_func(), void _q_loadNextFrame())
  123. #ifdef QT3_SUPPORT
  124. public:
  125.     inline QT3_SUPPORT bool isNull() const { return isValid(); }
  126.     inline QT3_SUPPORT int frameNumber() const { return currentFrameNumber(); }
  127.     inline QT3_SUPPORT bool running() const { return state() == Running; }
  128.     inline QT3_SUPPORT bool paused() const { return state() == Paused; }
  129.     inline QT3_SUPPORT bool finished() const { return state() == NotRunning; }
  130.     inline QT3_SUPPORT void restart() { stop(); start(); }
  131.     inline QT3_SUPPORT QImage frameImage() const { return currentImage(); }
  132.     inline QT3_SUPPORT QPixmap framePixmap() const { return currentPixmap(); }
  133.     inline QT3_SUPPORT void step() { jumpToNextFrame(); }
  134.     inline QT3_SUPPORT void pause() { setPaused(true); }
  135.     inline QT3_SUPPORT void unpause() { setPaused(false); }
  136. #endif
  137. };
  138. QT_END_NAMESPACE
  139. QT_END_HEADER
  140. #endif // QT_NO_MOVIE
  141. #endif // QMOVIE_H