Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

pathdeform.h Example File
demos/deform/pathdeform.h

    /****************************************************************************
    **
    ** Copyright (C) 2005-2006 Trolltech AS. All rights reserved.
    **
    ** This file is part of the documentation 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://www.trolltech.com/products/qt/opensource.html
    **
    ** If you are unsure which license is appropriate for your use, please
    ** review the following information:
    ** http://www.trolltech.com/products/qt/licensing.html or contact the
    ** sales department at sales@trolltech.com.
    **
    ** 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 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);

        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 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;

        double m_intensity;
        double m_radius;
        QPointF m_pos;
        QPointF m_offset;
        QPointF m_direction;
    };

    class PathDeformWidget : public QWidget
    {
    public:
        PathDeformWidget(QWidget *parent);

    private:
        PathDeformRenderer *m_renderer;
    };

    #endif // PATHDEFORM_H


Copyright © 2006 Trolltech Trademarks
Qt 4.1.3