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
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
;
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
;
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
;
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
,
66 const int wantArgs( const std::vector
<ObjectCalcer
*>& os
,
70 void handleArgs( const std::vector
<ObjectCalcer
*>& os
,
74 QString
useText( const ObjectCalcer
& o
, const std::vector
<ObjectCalcer
*>& sel
,
75 const KigDocument
& d
, const KigWidget
& v
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
,
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
;
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
,
105 const int wantArgs( const std::vector
<ObjectCalcer
*>& os
,
106 const KigDocument
& d
,
109 void handleArgs( const std::vector
<ObjectCalcer
*>& os
,
113 QString
useText( const ObjectCalcer
& o
, const std::vector
<ObjectCalcer
*>& sel
,
114 const KigDocument
& d
, const KigWidget
& v
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
,
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
;
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
,
146 const int wantArgs( const std::vector
<ObjectCalcer
*>& os
,
147 const KigDocument
& d
,
150 void handleArgs( const std::vector
<ObjectCalcer
*>& os
,
154 QString
useText( const ObjectCalcer
& o
, const std::vector
<ObjectCalcer
*>& sel
,
155 const KigDocument
& d
, const KigWidget
& v
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
,
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
;
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
;
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...
200 const std::vector
<ObjectCalcer
*>& os
, const KigDocument
& d
,
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
217 GenericAffinityConstructor();
218 ~GenericAffinityConstructor();
221 class GenericProjectivityConstructor
222 : public MergeObjectConstructor
225 GenericProjectivityConstructor();
226 ~GenericProjectivityConstructor();
229 class InversionConstructor
230 : public MergeObjectConstructor
233 InversionConstructor();
234 ~InversionConstructor();
237 class GenericIntersectionConstructor
238 : public MergeObjectConstructor
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
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
;
273 TestConstructor( const ArgsParserObjectType
* type
, const char* descname
,
274 const char* desc
, const char* iconfile
);
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;
286 BaseConstructMode
* constructMode( KigPart
& doc
);
289 class TangentConstructor
290 : public MergeObjectConstructor
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;
304 : public MergeObjectConstructor
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
);