]> Shamusworld >> Repos - architektonas/blob - src/base/rs_creation.h
Changed RS_Graphic to Drawing; this is less confusing as a drawing is
[architektonas] / src / base / rs_creation.h
1 #ifndef RS_CREATION_H
2 #define RS_CREATION_H
3
4 #include "rs_entitycontainer.h"
5 #include "rs_line.h"
6 #include "rs_polyline.h"
7 #include "rs_insert.h"
8 #include "rs_image.h"
9
10 /**
11  * Data needed to insert library items.
12  */
13 struct RS_LibraryInsertData
14 {
15         QString file;
16         Vector insertionPoint;
17         double factor;
18         double angle;
19 };
20
21 /**
22  * Class for the creation of new entities.
23  * This class is bound to an entity container in which the
24  * entities are stored.
25  *
26  * @author Andrew Mustun
27  */
28 class RS_Creation
29 {
30         public:
31                 RS_Creation(RS_EntityContainer * container, RS_GraphicView * graphicView = NULL,
32                         bool handleUndo = true);
33
34                 RS_Entity * createParallelThrough(const Vector & coord, int number,
35                         RS_Entity * e);
36
37                 RS_Entity * createParallel(const Vector & coord, double distance,
38                         int number, RS_Entity * e);
39
40                 RS_Line * createParallelLine(const Vector & coord, double distance, int number,
41                         RS_Line * e);
42
43                 RS_Arc * createParallelArc(const Vector & coord, double distance, int number,
44                         RS_Arc * e);
45
46                 RS_Circle * createParallelCircle(const Vector & coord, double distance, int number,
47                         RS_Circle * e);
48
49                 RS_Line * createBisector(const Vector & coord1, const Vector & coord2, double length,
50                         int num, RS_Line * l1, RS_Line * l2);
51
52                 RS_Line * createTangent1(const Vector & coord, const Vector & point, RS_Entity * circle);
53
54                 RS_Line * createTangent2(const Vector & coord, RS_Entity * circle1, RS_Entity * circle2);
55
56                 RS_Line * createLineRelAngle(const Vector & coord, RS_Entity * entity,
57                         double angle, double length);
58
59                 RS_Line * createPolygon(const Vector & center, const Vector & corner, int number);
60
61                 RS_Line * createPolygon2(const Vector & corner1, const Vector & corner2, int number);
62
63                 RS_Insert * createInsert(RS_InsertData & data);
64
65                 RS_Image * createImage(RS_ImageData & data);
66
67                 RS_Block * createBlock(const RS_BlockData & data, const Vector & referencePoint,
68                         const bool remove);
69
70                 RS_Insert * createLibraryInsert(RS_LibraryInsertData & data);
71
72                 //void createPoint(const Vector& p);
73                 //void createLine2P(const Vector& p1, const Vector& p2);
74                 //void createRectangle(const Vector& e1, const Vector& e2);
75                 //RS_Polyline* createPolyline(const Vector& p);
76
77         protected:
78                 RS_EntityContainer * container;
79                 Drawing * graphic;
80                 RS_Document * document;
81                 RS_GraphicView * graphicView;
82                 bool handleUndo;
83 };
84
85 #endif