00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef KIG_OBJECTS_OBJECT_IMP_H
00019 #define KIG_OBJECTS_OBJECT_IMP_H
00020
00021 #include "common.h"
00022
00023 class IntImp;
00024 class DoubleImp;
00025 class StringImp;
00026 class InvalidImp;
00027 class HierarchyImp;
00028 class TransformationImp;
00029 class TestResultImp;
00030 class CurveImp;
00031 class LineImp;
00032 class PointImp;
00033 class TextImp;
00034 class AngleImp;
00035 class VectorImp;
00036 class LocusImp;
00037 class CircleImp;
00038 class ConicImp;
00039 class CubicImp;
00040 class SegmentImp;
00041 class RayImp;
00042 class ArcImp;
00043 class PolygonImp;
00044
00053 class ObjectImpVisitor
00054 {
00055 public:
00056 virtual ~ObjectImpVisitor();
00057 void visit( const ObjectImp* imp );
00058 virtual void visit( const IntImp* imp );
00059 virtual void visit( const DoubleImp* imp );
00060 virtual void visit( const StringImp* imp );
00061 virtual void visit( const InvalidImp* imp );
00062 virtual void visit( const HierarchyImp* imp );
00063 virtual void visit( const TransformationImp* imp );
00064 virtual void visit( const TestResultImp* imp );
00065 virtual void visit( const LineImp* imp );
00066 virtual void visit( const PointImp* imp );
00067 virtual void visit( const TextImp* imp );
00068 virtual void visit( const AngleImp* imp );
00069 virtual void visit( const VectorImp* imp );
00070 virtual void visit( const LocusImp* imp );
00071 virtual void visit( const CircleImp* imp );
00072 virtual void visit( const ConicImp* imp );
00073 virtual void visit( const CubicImp* imp );
00074 virtual void visit( const SegmentImp* imp );
00075 virtual void visit( const RayImp* imp );
00076 virtual void visit( const ArcImp* imp );
00077 virtual void visit( const PolygonImp* imp );
00078 };
00079
00080 typedef unsigned int uint;
00081
00088 class ObjectImpType
00089 {
00090 const ObjectImpType* mparent;
00091 const char* minternalname;
00092 const char* mtranslatedname;
00093 const char* mselectstatement;
00094 const char* mselectnamestatement;
00095 const char* mremoveastatement;
00096 const char* maddastatement;
00097 const char* mmoveastatement;
00098 const char* mattachtothisstatement;
00099 const char* mshowastatement;
00100 const char* mhideastatement;
00101 class StaticPrivate;
00102 static StaticPrivate* sd();
00103 public:
00111 static const ObjectImpType* typeFromInternalName( const char* n );
00112
00133 ObjectImpType(
00134 const ObjectImpType* parent, const char* internalname,
00135 const char* translatedname,
00136 const char* selectstatement,
00137 const char* selectnamestatement,
00138 const char* removeastatement,
00139 const char* addastatement,
00140 const char* moveastatement,
00141 const char* attachtothisstatement,
00142 const char* showastatement,
00143 const char* hideastatement );
00144 ~ObjectImpType();
00145
00150 bool inherits( const ObjectImpType* t ) const;
00151
00157 const char* internalName() const;
00161 TQString translatedName() const;
00167 const char* selectStatement() const;
00168
00175 const char* selectNameStatement() const;
00176
00181 TQString removeAStatement() const;
00186 TQString addAStatement() const;
00191 TQString moveAStatement() const;
00197 TQString attachToThisStatement() const;
00198
00203 TQString showAStatement() const;
00204
00209 TQString hideAStatement() const;
00210 };
00211
00218 class ObjectImp
00219 {
00220 protected:
00221 ObjectImp();
00222 public:
00227 static const ObjectImpType* stype();
00228
00229 virtual ~ObjectImp();
00230
00245 bool inherits( const ObjectImpType* t ) const;
00246
00263 virtual Coordinate attachPoint( ) const = 0;
00264
00268 virtual ObjectImp* transform( const Transformation& t ) const = 0;
00269
00270 virtual void draw( KigPainter& p ) const = 0;
00271 virtual bool contains( const Coordinate& p, int width,
00272 const KigWidget& si ) const = 0;
00273 virtual bool inRect( const Rect& r, int width,
00274 const KigWidget& si ) const = 0;
00275 virtual Rect surroundingRect() const = 0;
00276
00282 bool valid() const;
00283
00284 virtual const uint numberOfProperties() const;
00285
00286
00287 virtual const QCStringList properties() const;
00288
00289
00290
00291 virtual const QCStringList propertiesInternalNames() const;
00292 virtual ObjectImp* property( uint which, const KigDocument& d ) const;
00293
00294
00295
00296 virtual const ObjectImpType* impRequirementForProperty( uint which ) const;
00297
00298
00299
00300 virtual bool isPropertyDefinedOnOrThroughThisImp( uint which ) const;
00301
00302 virtual const char* iconForProperty( uint which ) const;
00303
00319 virtual const ObjectImpType* type() const = 0;
00320 virtual void visit( ObjectImpVisitor* vtor ) const = 0;
00321
00327 virtual ObjectImp* copy() const = 0;
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338 virtual bool canFillInNextEscape() const;
00339 virtual void fillInNextEscape( TQString& s, const KigDocument& ) const;
00340
00348 virtual bool equals( const ObjectImp& rhs ) const = 0;
00349
00358 virtual bool isCache() const;
00359 };
00360 #endif