![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: lineSymbol.h,v $ $Revision: 1.38 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtLineSymbol_H_ 00013 #define DtLineSymbol_H_ 00014 00015 #include "symbology/colorizedSymbol.h" 00016 00017 #include "ngutil/linkedList.h" 00018 #include "ngutil/dtqlist.h" 00019 00020 class DtNullDrawer; 00021 class DtPoint; 00022 00026 #include "symbology/symbologyDefines.h" 00027 class DT_DLL_symbology DtLineSymbol : public DtColorizedSymbol 00028 { 00029 public: 00030 00032 DtLineSymbol( DtSymbolDrawer & drawer); 00033 DtLineSymbol( DtSymbolDrawer & drawer, 00034 const QPoint & startPoint, const QPoint & endPoint); 00035 DtLineSymbol( DtNullDrawer & drawer); 00036 00037 DtLineSymbol(const DtLineSymbol& orig); 00038 DtLineSymbol& operator=(const DtLineSymbol& orig); 00039 00040 virtual ~DtLineSymbol(); 00041 virtual DtSymbol * clone()const; 00042 00043 enum DtLineSelectionMode 00044 { 00045 DtLineSelected_None = -2, 00046 DtLineSelected_Line = -1, 00047 DtLineSelected_Point 00048 }; 00049 00050 enum DtArrowStyle{ 00051 DtStyle_NoArrow = 0, 00052 DtStyle_Simple, 00053 DtStyle_Main, 00054 DtStyle_Double, 00055 DtStyle_Capped, 00056 DtStyle_Triangle, 00057 DtStyle_2525DispTail, 00058 DtStyle_Thick, 00059 DtStyle_ThickDouble, 00060 DtStyle_Feint, 00061 DtStyle_Bridge, 00062 DtStyle_AirAxis, 00063 DtStyle_SegmentMode, 00064 DtStyle_NoArrowDrawLine, 00066 DtStyle_ArrowStyle_MAX 00067 }; 00068 00070 virtual unsigned width() const; 00071 virtual void setWidth(unsigned w); 00072 00074 virtual void setLineWidth(int i); 00075 00076 //Center Point is calculated 00077 virtual const DtDisplayPoint centerPoint() const; 00078 virtual void shift(QPoint p); 00079 00081 virtual void setStartPosition(const QPoint& position); 00082 virtual QPoint startPosition() const; 00083 00085 virtual void setEndPosition(const QPoint& position); 00086 virtual QPoint endPosition() const; 00087 00088 virtual void setNumPoints(const int num); 00089 virtual int getNumPoints() const; 00090 00091 virtual void addPoint(const QPoint* pnt); 00092 virtual void insertPoint(int iIndex, const QPoint* pnt); 00093 virtual void removePoint(int iIndex); 00094 00095 virtual const QPoint getPoint(int pointNum) const; 00096 virtual void setPoint(int pointNum,const QPoint* pnt); 00097 virtual bool setLocationData(const QPolygon* pts); 00098 virtual const QPolygon* getLocationData() const; 00099 00101 00104 virtual bool select(const QPoint& aPoint); 00105 virtual bool selected() const; 00106 00109 virtual bool select(const QPoint& aPoint, 00110 const QSize& rectangleSize); 00111 00113 virtual void reverseLine(); 00114 00117 virtual void setKnobSize(int i); 00118 virtual int knobSize() const; 00119 00120 virtual void setHighlight(const bool highlight); 00121 00123 virtual bool pointHighlighted() const; 00124 00126 virtual int pointSelected() const; 00127 virtual void selectPoint(int iPoint); 00128 virtual void clearSelection(); 00129 00131 virtual bool pointSelected(const QPoint& pnt); 00132 00135 virtual void setLineSelected(bool b, int iSegment = -1); 00136 virtual int segmentSelected() const; 00137 00141 virtual int getNumVertexPoints() const; 00142 virtual const QPoint getVertexPoint(int pointNum) const; 00143 00145 virtual void setCanAddPoint(bool b); 00146 virtual bool canAddPoint() const; 00147 00151 virtual bool setAndCalculatePoint(int iIndex, const QPoint& pnt); 00152 00154 virtual bool setAndCalculatePoint(int iIndex, const DtPoint& pnt, QVector<DtPoint>* list); 00155 00159 virtual void setFixedLength(int iLen); 00160 00162 static double calculateLineAngle(const QPoint& origin, const QPoint& end); 00163 00165 virtual DtArrowStyle arrowStyle() const; 00167 virtual void setArrowStyle(DtArrowStyle style); 00168 00172 virtual void setDrawVertexPoints(const QVector<int> pnts); 00173 00176 virtual int getVertexOffset(int index) const; 00177 00180 virtual int mapPointSelectedToIndex(int iPointSelected) const; 00181 00183 virtual void setPenStyle(Qt::PenStyle style); 00184 virtual Qt::PenStyle penStyle() const; 00185 00186 00188 virtual bool isSkipPoint(int pointNum) const; 00189 00193 virtual bool freehand() const; 00194 virtual void setFreehand(bool b); 00195 00196 bool operator==(const DtLineSymbol& orig) const; 00197 bool operator!=(const DtLineSymbol& orig) const; 00198 00199 virtual bool transparentCacheChanged() const; 00200 00202 virtual bool keepAspectRatio() const; 00203 00205 virtual bool originIsCenterOfMass() const; 00206 00207 protected: 00208 00209 //Center Point is calculated 00210 virtual const DtDisplayPoint calcCenterPoint() const; 00211 virtual const DtDisplayPoint calcCenterPoint(QPoint& pnt) const; 00212 00213 private: 00215 DtLineSymbol(); 00216 00217 protected: 00218 00219 QPolygon* myPoints; 00220 unsigned myWidth; 00221 00222 int myKnobSize; 00223 int mySegmentSelected; 00224 00225 DtLineSelectionMode mySelection; 00226 QVector<int> myDrawVertexPoints; 00227 00228 bool myCanAddPoint; 00229 int myFixedLength; 00230 00231 DtArrowStyle myArrowStyle; 00232 00233 Qt::PenStyle myPenStyle; 00234 00235 bool myFreehand; 00236 }; 00237 00238 #endif