// Copyright (C) 2003 Dominique Devriese // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA // 02110-1301, USA. #ifndef KIG_MISC_SPECIAL_CONSTRUCTORS_H #define KIG_MISC_SPECIAL_CONSTRUCTORS_H #include "object_constructor.h" class PolygonVertexTypeConstructor : public StandardConstructorBase { const ArgsParserObjectType* mtype; ArgsParser margsparser; public: PolygonVertexTypeConstructor(); ~PolygonVertexTypeConstructor(); void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; }; class PolygonSideTypeConstructor : public StandardConstructorBase { const ArgsParserObjectType* mtype; ArgsParser margsparser; public: PolygonSideTypeConstructor(); ~PolygonSideTypeConstructor(); void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; }; class PolygonBNPTypeConstructor : public ObjectConstructor { const ObjectType* mtype; public: PolygonBNPTypeConstructor(); ~PolygonBNPTypeConstructor(); const TQString descriptiveName() const; const TQString description() const; const TQCString iconFileName( const bool canBeNull = false ) const; const bool isAlreadySelectedOK( const std::vector& os, const int& ) const; const int wantArgs( const std::vector& os, const KigDocument& d, const KigWidget& v ) const; void handleArgs( const std::vector& os, KigPart& d, KigWidget& v ) const; TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; TQString selectStatement( const std::vector& sel, const KigDocument& d, const KigWidget& w ) const; void handlePrelim( KigPainter& p, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; }; class PolygonBCVConstructor : public ObjectConstructor { const ObjectType* mtype; public: PolygonBCVConstructor(); ~PolygonBCVConstructor(); const TQString descriptiveName() const; const TQString description() const; const TQCString iconFileName( const bool canBeNull = false ) const; const bool isAlreadySelectedOK( const std::vector& os, const int& ) const; const int wantArgs( const std::vector& os, const KigDocument& d, const KigWidget& v ) const; void handleArgs( const std::vector& os, KigPart& d, KigWidget& v ) const; TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; TQString selectStatement( const std::vector& sel, const KigDocument& d, const KigWidget& w ) const; void handlePrelim( KigPainter& p, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; int computeNsides( const Coordinate& c, const Coordinate& v, const Coordinate& cntrl, int& winding ) const; Coordinate getRotatedCoord( const Coordinate& c1, const Coordinate& c2, double alpha ) const; }; class MeasureTransportConstructor : public ObjectConstructor { const ObjectType* mtype; public: MeasureTransportConstructor(); ~MeasureTransportConstructor(); const TQString descriptiveName() const; const TQString description() const; const TQCString iconFileName( const bool canBeNull = false ) const; const bool isAlreadySelectedOK( const std::vector& os, const int& ) const; const int wantArgs( const std::vector& os, const KigDocument& d, const KigWidget& v ) const; void handleArgs( const std::vector& os, KigPart& d, KigWidget& v ) const; TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; TQString selectStatement( const std::vector& sel, const KigDocument& d, const KigWidget& w ) const; void handlePrelim( KigPainter& p, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; }; class ConicRadicalConstructor : public StandardConstructorBase { const ArgsParserObjectType* mtype; const ArgsParser mparser; public: ConicRadicalConstructor(); ~ConicRadicalConstructor(); TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; }; class LocusConstructor : public StandardConstructorBase { ArgsParser margsparser; public: LocusConstructor(); ~LocusConstructor(); /** * we override the wantArgs() function, since we need to see * something about the objects that an ArgsParser can't know about, * namely, whether the first point is a constrained point... */ const int wantArgs( const std::vector& os, const KigDocument& d, const KigWidget& v ) const; TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; }; class GenericAffinityConstructor : public MergeObjectConstructor { public: GenericAffinityConstructor(); ~GenericAffinityConstructor(); }; class GenericProjectivityConstructor : public MergeObjectConstructor { public: GenericProjectivityConstructor(); ~GenericProjectivityConstructor(); }; class InversionConstructor : public MergeObjectConstructor { public: InversionConstructor(); ~InversionConstructor(); }; class GenericIntersectionConstructor : public MergeObjectConstructor { public: GenericIntersectionConstructor(); ~GenericIntersectionConstructor(); bool isIntersection() const; TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; TQString selectStatement( const std::vector& sel, const KigDocument& d, const KigWidget& w ) const; }; class MidPointOfTwoPointsConstructor : public StandardConstructorBase { ArgsParser mparser; public: MidPointOfTwoPointsConstructor(); ~MidPointOfTwoPointsConstructor(); void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; }; class TestConstructor : public StandardConstructorBase { const ArgsParserObjectType* mtype; public: TestConstructor( const ArgsParserObjectType* type, const char* descname, const char* desc, const char* iconfile ); ~TestConstructor(); void drawprelim( const ObjectDrawer& drawer, KigPainter& p, const std::vector& parents, const KigDocument& ) const; std::vector build( const std::vector& os, KigDocument& d, KigWidget& w ) const; const int wantArgs( const std::vector& os, const KigDocument& d, const KigWidget& v ) const; void plug( KigPart* doc, KigGUIAction* kact ); bool isTransform() const; bool isTest() const; BaseConstructMode* constructMode( KigPart& doc ); }; class TangentConstructor : public MergeObjectConstructor { public: TangentConstructor(); ~TangentConstructor(); TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; // TQString selectStatement( // const std::vector& sel, const KigDocument& d, // const KigWidget& w ) const; }; class CocConstructor : public MergeObjectConstructor { public: CocConstructor(); ~CocConstructor(); TQString useText( const ObjectCalcer& o, const std::vector& sel, const KigDocument& d, const KigWidget& v ) const; // TQString selectStatement( // const std::vector& sel, const KigDocument& d, // const KigWidget& w ) const; }; bool relativePrimes( int n, int p ); #endif