Qt:Документация 4.3.2/demos-composition-composition-h
Материал из Wiki.crossplatform.ru
Версия от 08:44, 20 ноября 2008; 217.174.98.237 (Обсуждение)
Внимание: Актуальная версия перевода документации находится здесь |
__NOTOC__
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции |
[править] composition.h Example File
demos/composition/composition.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. ** ** Trolltech ASA (c) 2007 ** ** 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> #endif class CompositionWidget : public QWidget { Q_OBJECT public: 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
Copyright © 2007 Trolltech | Trademarks | Qt 4.3.2
|