/demos/deform/pathdeform.h
C Header | 153 lines | 87 code | 23 blank | 43 comment | 0 complexity | c58750b3df29e49be56327f3cbcf5db7 MD5 | raw file
- /****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the demonstration applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** GNU Lesser General Public License Usage
- ** This file may be used under the terms of the GNU Lesser General Public
- ** License version 2.1 as published by the Free Software Foundation and
- ** appearing in the file LICENSE.LGPL included in the packaging of this
- ** file. Please review the following information to ensure the GNU Lesser
- ** General Public License version 2.1 requirements will be met:
- ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Nokia gives you certain additional
- ** rights. These rights are described in the Nokia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU General
- ** Public License version 3.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 the GNU General
- ** Public License version 3.0 requirements will be met:
- ** http://www.gnu.org/copyleft/gpl.html.
- **
- ** Other Usage
- ** Alternatively, this file may be used in accordance with the terms and
- ** conditions contained in a signed written agreement between you and Nokia.
- **
- **
- **
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
- #ifndef PATHDEFORM_H
- #define PATHDEFORM_H
- #include "arthurwidgets.h"
- #include <QPainterPath>
- #include <QBasicTimer>
- #include <QDateTime>
- class PathDeformRenderer : public ArthurFrame
- {
- Q_OBJECT
- Q_PROPERTY(bool animated READ animated WRITE setAnimated)
- Q_PROPERTY(int radius READ radius WRITE setRadius)
- Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize)
- Q_PROPERTY(int intensity READ intensity WRITE setIntensity)
- Q_PROPERTY(QString text READ text WRITE setText)
- public:
- PathDeformRenderer(QWidget *widget, bool smallScreen = false);
- void paint(QPainter *painter);
- void mousePressEvent(QMouseEvent *e);
- void mouseReleaseEvent(QMouseEvent *e);
- void mouseMoveEvent(QMouseEvent *e);
- void timerEvent(QTimerEvent *e);
- QSize sizeHint() const { return QSize(600, 500); }
- bool animated() const { return m_animated; }
- int radius() const { return int(m_radius); }
- int fontSize() const { return m_fontSize; }
- int intensity() const { return int(m_intensity); }
- QString text() const { return m_text; }
- public slots:
- void setRadius(int radius);
- void setFontSize(int fontSize) { m_fontSize = fontSize; setText(m_text); }
- void setText(const QString &text);
- void setIntensity(int intensity);
- void setAnimated(bool animated);
- signals:
- void clicked();
- // void frameRate(double fps);
- private:
- void generateLensPixmap();
- QPainterPath lensDeform(const QPainterPath &source, const QPointF &offset);
- QBasicTimer m_repaintTimer;
- // QBasicTimer m_fpsTimer;
- // int m_fpsCounter;
- QTime m_repaintTracker;
- QVector<QPainterPath> m_paths;
- QVector<QPointF> m_advances;
- QRectF m_pathBounds;
- QString m_text;
- QPixmap m_lens_pixmap;
- QImage m_lens_image;
- int m_fontSize;
- bool m_animated;
- qreal m_intensity;
- qreal m_radius;
- QPointF m_pos;
- QPointF m_offset;
- QPointF m_direction;
- QPointF m_mousePress;
- bool m_mouseDrag;
- bool m_smallScreen;
- };
- class PathDeformControls : public QWidget
- {
- Q_OBJECT
- public:
- PathDeformControls(QWidget *parent, PathDeformRenderer* renderer, bool smallScreen);
- signals:
- void okPressed();
- void quitPressed();
- private:
- PathDeformRenderer* m_renderer;
- void layoutForDesktop();
- void layoutForSmallScreen();
- private slots:
- void emitQuitSignal();
- void emitOkSignal();
- };
- class PathDeformWidget : public QWidget
- {
- Q_OBJECT
- public:
- PathDeformWidget(QWidget *parent, bool smallScreen);
- void setStyle ( QStyle * style );
- private:
- PathDeformRenderer *m_renderer;
- PathDeformControls *m_controls;
- private slots:
- void showControls();
- void hideControls();
- };
- #endif // PATHDEFORM_H