Subversion Repositories Scribus

Rev

Rev 19080 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
10928 fschmid 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
/***************************************************************************
8
*   Copyright (C) 2007 by Franz Schmid                                     *
9
*   franz.schmid@altmuehlnet.de                                            *
10
*                                                                          *
11
*   This program is free software; you can redistribute it and/or modify   *
12
*   it under the terms of the GNU General Public License as published by   *
13
*   the Free Software Foundation; either version 2 of the License, or      *
14
*   (at your option) any later version.                                    *
15
*                                                                          *
16
*   This program is distributed in the hope that it will be useful,        *
17
*   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
18
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
19
*   GNU General Public License for more details.                           *
20
*                                                                          *
21
*   You should have received a copy of the GNU General Public License      *
22
*   along with this program; if not, write to the                          *
23
*   Free Software Foundation, Inc.,                                        *
18122 mrdocs 24
*   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.              *
10928 fschmid 25
****************************************************************************/
26
 
27
#ifndef LENSDIALOG_H
28
#define LENSDIALOG_H
29
 
30
#include <QDialog>
31
#include <QList>
32
#include <QPainterPath>
33
#include <QGraphicsItem>
10966 fschmid 34
#include <QGraphicsRectItem>
10928 fschmid 35
#include <QGraphicsPathItem>
22440 jghali 36
 
10928 fschmid 37
#include "ui_lensdialogbase.h"
10933 jghali 38
#include "pluginapi.h"
10928 fschmid 39
#include "scribusdoc.h"
19080 craig 40
 
10928 fschmid 41
class LensDialog;
22440 jghali 42
class QGraphicsSceneHoverEvent;
43
class QGraphicsSceneMouseEvent;
44
class QStyleOptionGraphicsItem;
10928 fschmid 45
 
10966 fschmid 46
class PLUGIN_API LensItem : public QGraphicsRectItem
10928 fschmid 47
{
48
public:
49
        LensItem(QRectF geom, LensDialog *parent);
50
        ~LensItem() {};
22440 jghali 51
 
10928 fschmid 52
        void setStrength(double s);
53
        void updateEffect();
54
        QPainterPath lensDeform(const QPainterPath &source, const QPointF &offset, double m_radius, double s);
10966 fschmid 55
        void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget);
10928 fschmid 56
        double strength;
10966 fschmid 57
        double scaling;
58
        int handle;
59
        QPointF mousePoint;
22440 jghali 60
 
10928 fschmid 61
protected:
62
        QVariant itemChange(GraphicsItemChange change, const QVariant &value);
10966 fschmid 63
        void mousePressEvent(QGraphicsSceneMouseEvent *event);
64
        void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
65
        void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
66
        void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
67
        void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
68
        void hoverLeaveEvent(QGraphicsSceneHoverEvent *);
10928 fschmid 69
        LensDialog *dialog;
70
};
71
 
10933 jghali 72
class PLUGIN_API LensDialog : public QDialog, Ui::LensDialogBase
10928 fschmid 73
{
74
        Q_OBJECT
75
 
76
public:
77
        LensDialog(QWidget* parent, ScribusDoc *doc);
78
        ~LensDialog() {};
22440 jghali 79
 
16115 fschmid 80
        void addItemsToScene(Selection* itemSelection, ScribusDoc *doc, QGraphicsPathItem* parentItem, PageItem* parent);
10928 fschmid 81
        void lensSelected(LensItem *item);
82
        void setLensPositionValues(QPointF p);
83
        QGraphicsScene scene;
84
        QList<QPainterPath> origPath;
85
        QList<QGraphicsPathItem*> origPathItem;
16115 fschmid 86
        QList<PageItem*> origPageItem;
10928 fschmid 87
        QList<LensItem*> lensList;
88
        int currentLens;
10932 fschmid 89
        bool isFirst;
10928 fschmid 90
 
10932 fschmid 91
protected:
92
        void showEvent(QShowEvent *e);
93
 
10928 fschmid 94
private slots:
95
        void doZoomIn();
96
        void doZoomOut();
97
        void addLens();
98
        void removeLens();
10966 fschmid 99
        void changeLens();
100
        void selectionHasChanged();
10928 fschmid 101
        void setNewLensX(double x);
102
        void setNewLensY(double y);
103
        void setNewLensRadius(double radius);
104
        void setNewLensStrength(double s);
105
};
106
 
107
#endif