]> Shamusworld >> Repos - architektonas/blob - src/actions/rs_actiondrawimage.h
aa5061f0f83a9242f2152f4574cfcbbf31e984a3
[architektonas] / src / actions / rs_actiondrawimage.h
1 /****************************************************************************
2 ** $Id: rs_actiondrawimage.h 1062 2004-01-16 21:51:20Z andrew $
3 **
4 ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
5 **
6 ** This file is part of the qcadlib Library project.
7 **
8 ** This file may be distributed and/or modified under the terms of the
9 ** GNU General Public License version 2 as published by the Free Software
10 ** Foundation and appearing in the file LICENSE.GPL included in the
11 ** packaging of this file.
12 **
13 ** Licensees holding valid qcadlib Professional Edition licenses may use 
14 ** this file in accordance with the qcadlib Commercial License
15 ** Agreement provided with the Software.
16 **
17 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
18 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 **
20 ** See http://www.ribbonsoft.com for further details.
21 **
22 ** Contact info@ribbonsoft.com if any conditions of this licensing are
23 ** not clear to you.
24 **
25 **********************************************************************/
26
27 #ifndef RS_ACTIONDRAWIMAGE_H
28 #define RS_ACTIONDRAWIMAGE_H
29
30 #include "rs_previewactioninterface.h"
31 #include "rs_image.h"
32
33 /**
34  * This action class can handle user events for inserting bitmaps into the
35  * current drawing.
36  *
37  * @author Andrew Mustun
38  */
39 class RS_ActionDrawImage : public RS_PreviewActionInterface {
40         //Q_OBJECT
41 public:
42     /**
43      * Action States.
44      */
45     enum Status {
46                 ShowDialog,        /**< Dialog. */
47         SetTargetPoint,    /**< Setting the reference point. */
48                 SetAngle,          /**< Setting angle in the command line. */
49                 SetFactor          /**< Setting factor in the command line. */
50                 //SetColumns,        /**< Setting columns in the command line. */
51                 //SetRows,           /**< Setting rows in the command line. */
52                 //SetColumnSpacing,  /**< Setting column spacing in the command line. */
53                 //SetRowSpacing      /**< Setting row spacing in the command line. */
54     };
55
56 public:
57     RS_ActionDrawImage(RS_EntityContainer& container,
58                         RS_GraphicView& graphicView);
59     ~RS_ActionDrawImage();
60
61         static QAction* createGUIAction(RS2::ActionType /*type*/, QObject* /*parent*/);
62         
63         virtual RS2::ActionType rtti() {
64                 return RS2::ActionDrawImage;
65         }
66
67     virtual void init(int status=0);
68
69         void reset();
70
71     virtual void trigger();
72
73     virtual void mouseMoveEvent(QMouseEvent* e);
74     virtual void mouseReleaseEvent(QMouseEvent* e);
75
76     virtual void coordinateEvent(RS_CoordinateEvent* e);
77     virtual void commandEvent(RS_CommandEvent* e);
78         virtual QStringList getAvailableCommands();
79
80         virtual void showOptions();
81         virtual void hideOptions();
82
83     virtual void updateMouseButtonHints();
84     virtual void updateMouseCursor();
85     virtual void updateToolBar();
86
87         double getAngle() {
88                 return data.uVector.angle();
89         }
90
91         void setAngle(double a) {
92                 double l = data.uVector.magnitude();
93                 data.uVector.setPolar(l, a);
94                 data.vVector.setPolar(l, a+M_PI/2);
95         }
96
97         double getFactor() {
98                 return data.uVector.magnitude();
99         }
100
101         void setFactor(double f) {
102                 double a = data.uVector.angle();
103                 data.uVector.setPolar(f, a);
104                 data.vVector.setPolar(f, a+M_PI/2);
105         }
106
107 protected:
108         RS_ImageData data;
109         QImage img;
110         
111         /** Last status before entering option. */
112         Status lastStatus;
113 };
114
115 #endif