1 // SPDX-FileCopyrightText: 2002 Dominique Devriese <devriese@kde.org> 2 3 // SPDX-License-Identifier: GPL-2.0-or-later 4 5 #ifndef KIG_OBJECTS_POINT_TYPE_H 6 #define KIG_OBJECTS_POINT_TYPE_H 7 8 #include "base_type.h" 9 #include "common.h" 10 #include "circle_imp.h" 11 12 class FixedPointType 13 : public ArgsParserObjectType 14 { 15 FixedPointType(); 16 ~FixedPointType(); 17 18 static const ArgsParser::spec argsspec[1]; 19 public: 20 static const FixedPointType* instance(); 21 22 bool inherits( int type ) const override; 23 24 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 25 bool canMove( const ObjectTypeCalcer& ourobj ) const override; 26 bool isFreelyTranslatable( const ObjectTypeCalcer& ourobj ) const override; 27 std::vector<ObjectCalcer*> movableParents( const ObjectTypeCalcer& ourobj ) const override; 28 const Coordinate moveReferencePoint( const ObjectTypeCalcer& ourobj ) const override; 29 void move( ObjectTypeCalcer& ourobj, const Coordinate& to, 30 const KigDocument& ) const override; 31 const ObjectImpType* resultId() const override; 32 33 QStringList specialActions() const override; 34 void executeAction( int i, ObjectHolder& o, ObjectTypeCalcer& t, 35 KigPart& d, KigWidget& w, NormalMode& m ) const override; 36 }; 37 38 class RelativePointType 39 : public ArgsParserObjectType 40 { 41 RelativePointType(); 42 ~RelativePointType(); 43 44 static const ArgsParser::spec argsspec[1]; 45 public: 46 static const RelativePointType* instance(); 47 48 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 49 bool canMove( const ObjectTypeCalcer& ourobj ) const override; 50 bool isFreelyTranslatable( const ObjectTypeCalcer& ourobj ) const override; 51 std::vector<ObjectCalcer*> movableParents( const ObjectTypeCalcer& ourobj ) const override; 52 const Coordinate moveReferencePoint( const ObjectTypeCalcer& ourobj ) const override; 53 void move( ObjectTypeCalcer& ourobj, const Coordinate& to, 54 const KigDocument& ) const override; 55 const ObjectImpType* resultId() const override; 56 57 // QStringList specialActions() const; 58 // void executeAction( int i, ObjectHolder& o, ObjectTypeCalcer& t, 59 // KigPart& d, KigWidget& w, NormalMode& m ) const; 60 }; 61 62 class ConstrainedRelativePointType 63 : public ArgsParserObjectType 64 { 65 ConstrainedRelativePointType(); 66 ~ConstrainedRelativePointType(); 67 68 static const ArgsParser::spec argsspec[1]; 69 public: 70 static const ConstrainedRelativePointType* instance(); 71 72 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 73 bool canMove( const ObjectTypeCalcer& ourobj ) const override; 74 bool isFreelyTranslatable( const ObjectTypeCalcer& ourobj ) const override; 75 std::vector<ObjectCalcer*> movableParents( const ObjectTypeCalcer& ourobj ) const override; 76 const Coordinate moveReferencePoint( const ObjectTypeCalcer& ourobj ) const override; 77 void move( ObjectTypeCalcer& ourobj, const Coordinate& to, 78 const KigDocument& ) const override; 79 const ObjectImpType* resultId() const override; 80 }; 81 82 class CursorPointType 83 : public ObjectType 84 { 85 CursorPointType(); 86 ~CursorPointType(); 87 88 public: 89 static const CursorPointType* instance(); 90 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 91 92 const ObjectImpType* impRequirement( const ObjectImp* o, const Args& parents ) const override; 93 bool isDefinedOnOrThrough( const ObjectImp* o, const Args& parents ) const override; 94 std::vector<ObjectCalcer*> sortArgs( const std::vector<ObjectCalcer*>& args ) const override; 95 Args sortArgs( const Args& args ) const override; 96 bool canMove( const ObjectTypeCalcer& ourobj ) const override; 97 void move( ObjectTypeCalcer& ourobj, const Coordinate& to, 98 const KigDocument& ) const override; 99 const ObjectImpType* resultId() const override; 100 }; 101 102 class ConstrainedPointType 103 : public ArgsParserObjectType 104 { 105 ConstrainedPointType(); 106 ~ConstrainedPointType(); 107 public: 108 static const ConstrainedPointType* instance(); 109 110 bool inherits( int type ) const override; 111 112 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 113 114 bool canMove( const ObjectTypeCalcer& ourobj ) const override; 115 bool isFreelyTranslatable( const ObjectTypeCalcer& ourobj ) const override; 116 std::vector<ObjectCalcer*> movableParents( const ObjectTypeCalcer& ourobj ) const override; 117 const Coordinate moveReferencePoint( const ObjectTypeCalcer& ourobj ) const override; 118 void move( ObjectTypeCalcer& ourobj, const Coordinate& to, 119 const KigDocument& ) const override; 120 const ObjectImpType* resultId() const override; 121 122 QStringList specialActions() const override; 123 void executeAction( int i, ObjectHolder&, ObjectTypeCalcer& o, KigPart& d, KigWidget& w, 124 NormalMode& m ) const override; 125 }; 126 127 class MidPointType 128 : public ObjectABType 129 { 130 MidPointType(); 131 ~MidPointType(); 132 public: 133 static const MidPointType* instance(); 134 // calcx was an overloaded calc, which produced a compilation warning 135 ObjectImp* calcx( const Coordinate& a, const Coordinate& b ) const override; 136 const ObjectImpType* resultId() const override; 137 }; 138 139 class GoldenPointType 140 : public ObjectABType 141 { 142 GoldenPointType(); 143 ~GoldenPointType(); 144 public: 145 static const GoldenPointType* instance(); 146 // calcx was an overloaded calc, which produced a compilation warning 147 ObjectImp* calcx( const Coordinate& a, const Coordinate& b ) const override; 148 const ObjectImpType* resultId() const override; 149 }; 150 151 class MeasureTransportType 152 : public ObjectType 153 { 154 MeasureTransportType(); 155 ~MeasureTransportType(); 156 public: 157 static const MeasureTransportType* instance(); 158 159 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 160 const ObjectImpType* resultId() const override; 161 const ObjectImpType* impRequirement( const ObjectImp* o, const Args& parents ) const override; 162 bool isDefinedOnOrThrough( const ObjectImp* o, const Args& parents ) const override; 163 std::vector<ObjectCalcer*> sortArgs( const std::vector<ObjectCalcer*>& args )const override; 164 Args sortArgs( const Args& args ) const override; 165 }; 166 167 class MeasureTransportTypeOld 168 : public ArgsParserObjectType 169 { 170 MeasureTransportTypeOld(); 171 ~MeasureTransportTypeOld(); 172 public: 173 static const MeasureTransportTypeOld* instance(); 174 175 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 176 const ObjectImpType* resultId() const override; 177 }; 178 179 class PointByCoordsType 180 : public ArgsParserObjectType 181 { 182 PointByCoordsType(); 183 ~PointByCoordsType(); 184 public: 185 static const PointByCoordsType* instance(); 186 187 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 188 const ObjectImpType* resultId() const override; 189 }; 190 191 class ProjectedPointType 192 : public ArgsParserObjectType 193 { 194 ProjectedPointType(); 195 ~ProjectedPointType(); 196 public: 197 static const ProjectedPointType* instance(); 198 199 ObjectImp* calc( const Args& parents, const KigDocument& ) const override; 200 const ObjectImpType * resultId() const override; 201 }; 202 203 #endif 204