moved kdeaccessibility kdeaddons kdeadmin kdeartwork kdebindings kdeedu kdegames...
[kdeedu.git] / kig / misc / special_constructors.h
blobf4f0ee6e838a0bb7159834fc71de067aa4e865dc
1 // Copyright (C) 2003 Dominique Devriese <devriese@kde.org>
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
16 // 02111-1307, USA.
18 #ifndef KIG_MISC_SPECIAL_CONSTRUCTORS_H
19 #define KIG_MISC_SPECIAL_CONSTRUCTORS_H
21 #include "object_constructor.h"
23 class PolygonVertexTypeConstructor
24 : public StandardConstructorBase
26 const ArgsParserObjectType* mtype;
27 ArgsParser margsparser;
28 public:
29 PolygonVertexTypeConstructor();
30 ~PolygonVertexTypeConstructor();
32 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents, const KigDocument& ) const;
33 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w ) const;
34 void plug( KigPart* doc, KigGUIAction* kact );
35 bool isTransform() const;
38 class PolygonSideTypeConstructor
39 : public StandardConstructorBase
41 const ArgsParserObjectType* mtype;
42 ArgsParser margsparser;
43 public:
44 PolygonSideTypeConstructor();
45 ~PolygonSideTypeConstructor();
47 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents, const KigDocument& ) const;
48 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w ) const;
49 void plug( KigPart* doc, KigGUIAction* kact );
50 bool isTransform() const;
53 class PolygonBNPTypeConstructor
54 : public ObjectConstructor
56 const ObjectType* mtype;
57 public:
58 PolygonBNPTypeConstructor();
59 ~PolygonBNPTypeConstructor();
61 const QString descriptiveName() const;
62 const QString description() const;
63 const QCString iconFileName( const bool canBeNull = false ) const;
64 const bool isAlreadySelectedOK( const std::vector<ObjectCalcer*>& os,
65 const int& ) const;
66 const int wantArgs( const std::vector<ObjectCalcer*>& os,
67 const KigDocument& d,
68 const KigWidget& v
69 ) const;
70 void handleArgs( const std::vector<ObjectCalcer*>& os,
71 KigPart& d,
72 KigWidget& v
73 ) const;
74 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel,
75 const KigDocument& d, const KigWidget& v
76 ) const;
77 QString selectStatement(
78 const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
79 const KigWidget& w ) const;
80 void handlePrelim( KigPainter& p,
81 const std::vector<ObjectCalcer*>& sel,
82 const KigDocument& d,
83 const KigWidget& v
84 ) const;
86 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents, const KigDocument& ) const;
87 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w ) const;
88 void plug( KigPart* doc, KigGUIAction* kact );
89 bool isTransform() const;
92 class PolygonBCVConstructor
93 : public ObjectConstructor
95 const ObjectType* mtype;
96 public:
97 PolygonBCVConstructor();
98 ~PolygonBCVConstructor();
100 const QString descriptiveName() const;
101 const QString description() const;
102 const QCString iconFileName( const bool canBeNull = false ) const;
103 const bool isAlreadySelectedOK( const std::vector<ObjectCalcer*>& os,
104 const int& ) const;
105 const int wantArgs( const std::vector<ObjectCalcer*>& os,
106 const KigDocument& d,
107 const KigWidget& v
108 ) const;
109 void handleArgs( const std::vector<ObjectCalcer*>& os,
110 KigPart& d,
111 KigWidget& v
112 ) const;
113 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel,
114 const KigDocument& d, const KigWidget& v
115 ) const;
116 QString selectStatement(
117 const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
118 const KigWidget& w ) const;
119 void handlePrelim( KigPainter& p,
120 const std::vector<ObjectCalcer*>& sel,
121 const KigDocument& d,
122 const KigWidget& v
123 ) const;
124 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents, const KigDocument& ) const;
125 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w ) const;
126 void plug( KigPart* doc, KigGUIAction* kact );
127 bool isTransform() const;
128 int computeNsides( const Coordinate& c, const Coordinate& v, const Coordinate& cntrl, int& winding ) const;
129 Coordinate getRotatedCoord( const Coordinate& c,
130 const Coordinate& c, double alpha ) const;
133 class MeasureTransportConstructor
134 : public ObjectConstructor
136 const ObjectType* mtype;
137 public:
138 MeasureTransportConstructor();
139 ~MeasureTransportConstructor();
141 const QString descriptiveName() const;
142 const QString description() const;
143 const QCString iconFileName( const bool canBeNull = false ) const;
144 const bool isAlreadySelectedOK( const std::vector<ObjectCalcer*>& os,
145 const int& ) const;
146 const int wantArgs( const std::vector<ObjectCalcer*>& os,
147 const KigDocument& d,
148 const KigWidget& v
149 ) const;
150 void handleArgs( const std::vector<ObjectCalcer*>& os,
151 KigPart& d,
152 KigWidget& v
153 ) const;
154 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel,
155 const KigDocument& d, const KigWidget& v
156 ) const;
157 QString selectStatement(
158 const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
159 const KigWidget& w ) const;
160 void handlePrelim( KigPainter& p,
161 const std::vector<ObjectCalcer*>& sel,
162 const KigDocument& d,
163 const KigWidget& v
164 ) const;
166 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents, const KigDocument& ) const;
167 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w ) const;
168 void plug( KigPart* doc, KigGUIAction* kact );
169 bool isTransform() const;
172 class ConicRadicalConstructor
173 : public StandardConstructorBase
175 const ArgsParserObjectType* mtype;
176 const ArgsParser mparser;
177 public:
178 ConicRadicalConstructor();
179 ~ConicRadicalConstructor();
180 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
181 const KigWidget& v ) const;
182 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents, const KigDocument& ) const;
183 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w ) const;
184 void plug( KigPart* doc, KigGUIAction* kact );
186 bool isTransform() const;
189 class LocusConstructor
190 : public StandardConstructorBase
192 ArgsParser margsparser;
193 public:
194 LocusConstructor();
195 ~LocusConstructor();
196 // we override the wantArgs() function, since we need to see
197 // something about the objects that an ArgsParser can't know about,
198 // namely, whether the first point is a constrained point...
199 const int wantArgs(
200 const std::vector<ObjectCalcer*>& os, const KigDocument& d,
201 const KigWidget& v
202 ) const;
203 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
204 const KigWidget& v ) const;
206 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents, const KigDocument& ) const;
207 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d, KigWidget& w ) const;
208 void plug( KigPart* doc, KigGUIAction* kact );
210 bool isTransform() const;
213 class GenericAffinityConstructor
214 : public MergeObjectConstructor
216 public:
217 GenericAffinityConstructor();
218 ~GenericAffinityConstructor();
221 class GenericProjectivityConstructor
222 : public MergeObjectConstructor
224 public:
225 GenericProjectivityConstructor();
226 ~GenericProjectivityConstructor();
229 class InversionConstructor
230 : public MergeObjectConstructor
232 public:
233 InversionConstructor();
234 ~InversionConstructor();
237 class GenericIntersectionConstructor
238 : public MergeObjectConstructor
240 public:
241 GenericIntersectionConstructor();
242 ~GenericIntersectionConstructor();
244 bool isIntersection() const;
246 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
247 const KigWidget& v ) const;
248 QString selectStatement(
249 const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
250 const KigWidget& w ) const;
253 class MidPointOfTwoPointsConstructor
254 : public StandardConstructorBase
256 ArgsParser mparser;
257 public:
258 MidPointOfTwoPointsConstructor();
259 ~MidPointOfTwoPointsConstructor();
260 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents,
261 const KigDocument& ) const;
262 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d,
263 KigWidget& w ) const;
264 void plug( KigPart* doc, KigGUIAction* kact );
265 bool isTransform() const;
268 class TestConstructor
269 : public StandardConstructorBase
271 const ArgsParserObjectType* mtype;
272 public:
273 TestConstructor( const ArgsParserObjectType* type, const char* descname,
274 const char* desc, const char* iconfile );
275 ~TestConstructor();
276 void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector<ObjectCalcer*>& parents,
277 const KigDocument& ) const;
278 std::vector<ObjectHolder*> build( const std::vector<ObjectCalcer*>& os, KigDocument& d,
279 KigWidget& w ) const;
280 const int wantArgs( const std::vector<ObjectCalcer*>& os,
281 const KigDocument& d, const KigWidget& v ) const;
282 void plug( KigPart* doc, KigGUIAction* kact );
283 bool isTransform() const;
284 bool isTest() const;
286 BaseConstructMode* constructMode( KigPart& doc );
289 class TangentConstructor
290 : public MergeObjectConstructor
292 public:
293 TangentConstructor();
294 ~TangentConstructor();
296 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
297 const KigWidget& v ) const;
298 // QString selectStatement(
299 // const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
300 // const KigWidget& w ) const;
303 class CocConstructor
304 : public MergeObjectConstructor
306 public:
307 CocConstructor();
308 ~CocConstructor();
310 QString useText( const ObjectCalcer& o, const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
311 const KigWidget& v ) const;
312 // QString selectStatement(
313 // const std::vector<ObjectCalcer*>& sel, const KigDocument& d,
314 // const KigWidget& w ) const;
317 bool relativePrimes( int n, int p );
318 #endif