]> Shamusworld >> Repos - architektonas/blob - src/actions/rs_actiondrawspline.h
9b1cc7ef7a32b472812d8b26073b5472676d64a1
[architektonas] / src / actions / rs_actiondrawspline.h
1 /****************************************************************************
2 ** $Id: rs_actiondrawspline.h 1155 2004-11-18 16:01:06Z 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_ACTIONDRAWSPLINE_H
28 #define RS_ACTIONDRAWSPLINE_H
29
30 #include <QtCore>
31 #include "rs_previewactioninterface.h"
32 #include "rs_spline.h"
33
34 /**
35  * This action class can handle user events to draw splines.
36  *
37  * @author Andrew Mustun
38  */
39 class RS_ActionDrawSpline: public RS_PreviewActionInterface
40 {
41 //hm    //Q_OBJECT
42         public:
43                 /**
44                 * Action States.
45                 */
46                 enum Status {
47                         SetStartpoint,   /**< Setting the startpoint.  */
48                         SetNextPoint      /**< Setting the next point. */
49                 };
50
51         public:
52                 RS_ActionDrawSpline(RS_EntityContainer & container, RS_GraphicView & graphicView);
53                 virtual ~RS_ActionDrawSpline();
54
55                 virtual RS2::ActionType rtti();
56                 static QAction * createGUIAction(RS2::ActionType /*type*/, QObject * /*parent*/);
57                 void reset();
58                 virtual void init(int status=0);
59                 virtual void trigger();
60                 virtual void mouseMoveEvent(QMouseEvent * e);
61                 virtual void mouseReleaseEvent(QMouseEvent * e);
62                 virtual void coordinateEvent(RS_CoordinateEvent * e);
63                 virtual void commandEvent(RS_CommandEvent * e);
64                 virtual QStringList getAvailableCommands();
65                 virtual void showOptions();
66                 virtual void hideOptions();
67                 virtual void updateMouseButtonHints();
68                 virtual void updateMouseCursor();
69                 virtual void updateToolBar();
70
71                 //void close();
72                 void undo();
73                 void setDegree(int deg);
74                 int getDegree();
75                 void setClosed(bool c);
76                 bool isClosed();
77
78         protected:
79                 /**
80                 * Spline data defined so far.
81                 */
82                 RS_SplineData data;
83
84                 /**
85                 * Polyline entity we're working on.
86                 */
87                 RS_Spline * spline;
88
89                 /**
90                 * last point.
91                 */
92                 //Vector point;
93
94                 /**
95                 * Start point of the series of nodes. Used for close function.
96                 */
97                 //Vector start;
98
99                 /**
100                 * Point history (for undo)
101                 */
102 //              Q3PtrList<Vector> history;
103                 QList<Vector *> history;
104
105                 /**
106                 * Bulge history (for undo)
107                 */
108                 //Q3PtrList<double> bHistory;
109 };
110
111 #endif