⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 composition.h

📁 奇趣公司比较新的qt/emd版本
💻 H
字号:
/******************************************************************************** Copyright (C) 2005-2007 Trolltech ASA. All rights reserved.**** This file is part of the demonstration applications of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef COMPOSITION_H#define COMPOSITION_H#include "arthurwidgets.h"#include <QPainter>#include <QEvent>class QPushButton;class QRadioButton;#ifdef QT_OPENGL_SUPPORT#include <QtOpenGL>#endifclass CompositionWidget : public QWidget{    Q_OBJECTpublic:    CompositionWidget(QWidget *parent);public slots:void nextMode();private:    bool m_cycle_enabled;    QRadioButton *rbClear;    QRadioButton *rbSource;    QRadioButton *rbDest;    QRadioButton *rbSourceOver;    QRadioButton *rbDestOver;    QRadioButton *rbSourceIn;    QRadioButton *rbDestIn;    QRadioButton *rbSourceOut;    QRadioButton *rbDestOut;    QRadioButton *rbSourceAtop;    QRadioButton *rbDestAtop;    QRadioButton *rbXor;};class CompositionRenderer : public ArthurFrame{    Q_OBJECT    enum ObjectType { NoObject, Circle, Rectangle, Image };    Q_PROPERTY(int circleColor READ circleColor WRITE setCircleColor)    Q_PROPERTY(int circleAlpha READ circleAlpha WRITE setCircleAlpha)    Q_PROPERTY(bool animation READ animationEnabled WRITE setAnimationEnabled)public:    CompositionRenderer(QWidget *parent);    void paint(QPainter *);    void mousePressEvent(QMouseEvent *);    void mouseMoveEvent(QMouseEvent *);    void mouseReleaseEvent(QMouseEvent *);    void setCirclePos(const QPointF &pos) { m_circle_pos = pos; update(); }    QSize sizeHint() const { return QSize(500, 400); }    bool animationEnabled() const { return m_animation_enabled; }    int circleColor() const { return m_circle_hue; }    int circleAlpha() const { return m_circle_alpha; }public slots:void setClearMode() { m_composition_mode = QPainter::CompositionMode_Clear; update(); }    void setSourceMode() { m_composition_mode = QPainter::CompositionMode_Source; update(); }    void setDestMode() { m_composition_mode = QPainter::CompositionMode_Destination; update(); }    void setSourceOverMode() { m_composition_mode = QPainter::CompositionMode_SourceOver; update(); }    void setDestOverMode() { m_composition_mode = QPainter::CompositionMode_DestinationOver; update(); }    void setSourceInMode() { m_composition_mode = QPainter::CompositionMode_SourceIn; update(); }    void setDestInMode() { m_composition_mode = QPainter::CompositionMode_DestinationIn; update(); }    void setSourceOutMode() { m_composition_mode = QPainter::CompositionMode_SourceOut; update(); }    void setDestOutMode() { m_composition_mode = QPainter::CompositionMode_DestinationOut; update(); }    void setSourceAtopMode() { m_composition_mode = QPainter::CompositionMode_SourceAtop; update(); }    void setDestAtopMode() { m_composition_mode = QPainter::CompositionMode_DestinationAtop; update(); }    void setXorMode() { m_composition_mode = QPainter::CompositionMode_Xor; update(); }    void setCircleAlpha(int alpha) { m_circle_alpha = alpha; update(); }    void setCircleColor(int hue) { m_circle_hue = hue; update(); }    void setAnimationEnabled(bool enabled) { m_animation_enabled = enabled; update(); }private:    void updateCirclePos();    void drawBase(QPainter &p);    void drawSource(QPainter &p);    QPainter::CompositionMode m_composition_mode;    QImage m_image;    QImage m_buffer;    QImage m_base_buffer;    int m_circle_alpha;    int m_circle_hue;    QPointF m_circle_pos;    QPointF m_offset;    ObjectType m_current_object;    bool m_animation_enabled;#ifdef QT_OPENGL_SUPPORT    QGLPixelBuffer *m_pbuffer;    GLuint m_base_tex;    GLuint m_compositing_tex;    int m_pbuffer_size; // width==height==size of pbuffer    QSize m_previous_size;#endif};#endif // COMPOSITION_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -