VR-Forces 4.1 Class Documentation
symbol.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2002 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: symbol.h,v $ $Revision: 1.90 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DtSymbol_H_
13 #define DtSymbol_H_
14 
18 
19 #include <QtCore/QSize>
20 #include <QtCore/QRect>
21 #include <QtCore/QObject>
22 #include <QtCore/QSize>
23 #include <QtCore/QString>
24 #include <QtCore/QList>
25 #include <QtCore/QVector>
26 #include <QtGui/QColor>
27 #include <QtGui/QPolygon>
28 
30 
31 class DtPaintDevice;
32 
33 class DtSymbol;
34 class DtStaticAnimData;
35 class QImage;
36 class QPixmap;
38 
39 class QTimer;
40 
46 };
47 
50 typedef DtSymbol* (*DtSymbolCreatorFcn)(DtSymbolDrawer& drawer);
51 
56 {
57  Q_OBJECT
58 
59 public:
60 
63  typedef enum
64  {
65  DtSymbol_BoundingSphere = 0,
66  DtSymbol_BoundingBox = 1,
67  DtSymbol_SpherePieces = 2,
68  DtSymbol_BoxPieces = 3,
69  DtSymbol_Exact = 4
70  } DtSymbol_OverlapTest;
71 
72  typedef enum
73  {
74  DtSymbol_DrawAsEntered = 0,
75  DtSymbol_DrawFirst = 1,
76  DtSymbol_DrawLast = 2,
77  } DtSymbol_DrawOrder;
78 
79  typedef enum
80  {
81  DtSymbol_Always = 0,
82  DtSymbol_Never = 1,
83  DtSymbol_OnlyIfCloned = 2
84  } DtSymbolCompositeDrawOptions;
85 
86 public:
87 
89  virtual ~DtSymbol();
90 
92  DtSymbol(const DtSymbol& orig);
93 
97  DtSymbol& operator=(const DtSymbol& orig);
98 
100  DtSymbol( DtSymbolDrawer & drawer );
101 
106  virtual void copyDataFrom(const DtSymbol* symbol);
107 
110  virtual DtSymbol* clone() const;
111 
113  virtual void setName(const QString& name);
114  virtual const QString& name()const;
115 
118  virtual void setHighlight(const bool highlight);
119  virtual bool highlight() const;
120  virtual bool selected() const;
121 
124  virtual const DtDisplayPoint centerPoint() const;
125 
128  virtual const DtDisplayPoint topLeftPoint() const;
129 
134  virtual bool setLocationData(const QPolygon*);
135 
139  virtual const QPolygon* getLocationData() const;
140 
141 
146  virtual void setOrigin(const QPoint & center);
147 
149  virtual void setOrigin( int x, int y );
150 
154  virtual const QPoint origin() const;
155 
157  virtual void shift(QPoint p);
158 
159  virtual void draw(QPainter& paint) const;
160  virtual void drawHidden(QPainter& paint) const;
161  virtual const DtSymbolDrawer& drawer() const;
162 
164  virtual QSize bbox() const;
165  virtual QRect brect() const;
166 
169  virtual QRect selBbox() const;
170 
176  virtual void clearOffsetToParent();
177  virtual void setOffsetToParent(const QPoint& offsetToParent);
179  virtual const QPoint* offsetToParent() const;
180 
181 
187  virtual bool show(DtShowHideContext module);
188  virtual bool hide(DtShowHideContext module);
189 
192  virtual void show();
193 
195  virtual void hide();
196 
199  virtual void addIgnoreContext(DtShowHideContext);
200  virtual void removeIgnoreContext(DtShowHideContext);
201  const QVector<DtShowHideContext>& ignoreContexts() const;
202 
206  virtual void wasHidden(DtSymbol*);
207 
209  virtual void wasShown(DtSymbol*);
210 
211  virtual bool isShown() const;
212 
213  virtual DtSymbol* parent() const;
214  virtual void setParent(DtSymbol* dad);
215 
217 
220  virtual bool isComposite() {return false;}
221 
222  virtual DtSymbolGeometry geometry() const;
223  virtual void setGeometry(DtSymbolGeometry geom);
224 
225 
228  virtual void setCategoryTag(const QString& name);
229  virtual const QString& categoryTag()const;
230 
232 
235  virtual bool select(const QPoint& aPoint);
236 
239  virtual bool select(const QPoint& aPoint,
240  const QSize& rectangleSize);
241 
246  virtual void setSelectable(bool value);
247  virtual bool isSelectable() const;
248 
251  virtual void setEditable(bool b);
252  virtual bool editable() const;
253 
257  virtual void setAllowEditOnSelection(bool b);
258  virtual bool allowEditOnSelection() const;
259 
264  virtual void setInternalSelectable(bool value);
265  virtual bool isInternalSelectable() const;
266 
269  virtual void setAddToDrawOrder(bool b);
270  virtual bool addToDrawOrder() const;
271 
272 //---- Overlap Options
273 
279  virtual bool overlapsSymbol(const DtSymbol & aSymbol,
280  const DtSymbol_OverlapTest aTest = DtSymbol_BoxPieces,
281  const float aTolerance = 0) const;
282 
285  virtual bool overlapsAreaSymbol(const DtSymbol & aSymbol,
286  const DtSymbol_OverlapTest aTest = DtSymbol_BoxPieces,
287  const float aTolerance = 0) const;
288 
291  virtual bool overlapsLineSymbol(DtSymbol & aSymbol,
292  const float aTolerance = 0) const;
293 
294 
297  virtual bool isOriginal() const;
298 
299  virtual DtStaticAnimData* staticAnimData() const;
300 
303  virtual void setDrawOnComposite(DtSymbolCompositeDrawOptions opt);
304  virtual bool drawOnComposite() const;
305  virtual DtSymbolCompositeDrawOptions drawOnCompositeValue() const;
306 
310  virtual bool drawFirst() const;
311  virtual void setDrawFirst(bool b);
312 
316  virtual bool drawLast() const;
317  virtual void setDrawLast(bool b);
318 
323  virtual bool selectAdditionalSymbols(QList<DtSymbol*>& additionalSymbols);
324 
328  virtual bool forceUpdate() const;
329 
333  virtual void setColor(const QColor& color);
334 
336  virtual void clearColor();
337 
341  virtual bool adjustPoints(QPolygon& pnts, bool constrain);
342 
347  virtual void setDragClone(DtSymbol* clone);
348  virtual DtSymbol* dragClone() const;
349 
351  virtual void setScaleBy(double factor);
352  virtual double scaleBy() const;
353 
355  virtual bool isScalable() const;
356 
357  virtual void enableVisibilityChange(bool b);
358 
361  virtual void scheduleDisplayComplete(int);
362 
363  virtual void setShouldSelect(bool);
364  virtual bool shouldSelect() const;
365 
367  virtual void setTransparencyLevel(int);
368  virtual int transparencyLevel() const;
369 
373  virtual bool needsTransparentRedraw() const;
374  virtual QPixmap* transparentImage() const;
375  virtual QPixmap* cacheTransparentImage(const QPixmap& pixmap);
376  virtual QPixmap* cacheTransparentImage(const QImage& image);
377  virtual bool transparentCacheChanged() const;
378  virtual void cacheTransparentVariables();
379 
381  virtual bool wantsTransparentDraw() const;
382 
383  bool operator==(const DtSymbol& orig) const;
384  bool operator!=(const DtSymbol& orig) const;
385 
388  virtual DtSymbolDrawer* symbolDrawer();
389  virtual DtSymbolDrawer* setDrawer(const DtSymbolDrawer&);
390 
393  virtual DtSymbolDrawer& backupDrawer() const;
394  virtual void setBackupDrawer(DtSymbolDrawer*);
395 
396  static DtNullDrawer* nullDrawer();
397 
400  virtual bool removeIfOffScreen() const;
401 
405  void setRemoveIfOffScreen(bool b);
406 
407  virtual void setSymbolDisplayOptions(DtSymbolDisplayOptions*);
408  virtual const DtSymbolDisplayOptions* symbolDisplayOptions() const;
409  virtual DtSymbolDisplayOptions* symbolDisplayOptions();
410  virtual int displayOptionsCache() const;
411 
412  void setAdjustPoints(bool);
413  bool adjustPoints() const;
414 
416  const QVector<DtShowHideContext>& hiddenByModules() const;
417  bool hiddenByModule(DtShowHideContext module) const;
418 
421  virtual void blockSignals(bool);
422 
425  virtual bool originIsCenterOfMass() const;
426 
430  virtual void setCacheSymbolAsBitmap(bool);
431  bool cacheSymbolAsBitmap() const;
432 
435  virtual const QString& bitmapSymbolCacheKey() const;
436 
439  virtual void reset();
440 
445  virtual bool editMode();
446  virtual void setEditMode(bool onOff);
447 
448 public slots:
449 
454  virtual void invalidateStaticAnimData();
455 
459  virtual void displayComplete();
460 
464  virtual void clearDragClone(QObject*);
465 
466 signals:
469  void originalSymbolDestroyed();
470 
473  void destroyed(const DtSymbol *);
474 
476  void originChanged(const DtSymbol*);
477 
480  void visibilityChanged(const DtSymbol*);
481 
483  void displayComplete(const DtSymbol*);
484 
485 protected:
488  bool overlapsBoundingSphere(const DtSymbol & aSymbol,
489  const float aTolerance) const;
490 
493  bool overlapsBoundingBox(const DtSymbol & aSymbol,
494  const float aTolerance) const;
495 
496 protected:
498 
501  QPoint myOrigin;
505  bool myIsShown;
509  QString myName;
510  QString myCategoryTag;
512 
513  //Note: deleting a child does not delete the parent!
515 
519 
523 
525 
527 
529 
531  QTimer *myTimer;
532 
534 
538 
543 
545 
547  QVector<DtShowHideContext> myHiddenByModules;
548  QVector<DtShowHideContext> myIgnoreContexts;
549 
553  mutable QString mySymbolBitmapCacheKey;
554 };
555 
556 inline bool DtSymbol::cacheSymbolAsBitmap() const
557 {
558  return myCacheSymbolAsBitmap;
559 }
560 
561 inline void DtSymbol::setAdjustPoints(bool b)
562 {
563  myAdjustPoints = b;
564 }
565 
566 inline bool DtSymbol::adjustPoints() const
567 {
568  return myAdjustPoints;
569 }
570 
571 inline const QVector<DtShowHideContext>& DtSymbol::hiddenByModules() const
572 {
573  return myHiddenByModules;
574 }
575 
576 inline const QVector<DtShowHideContext>& DtSymbol::ignoreContexts() const
577 {
578  return myIgnoreContexts;
579 }
580 
582 {
583  return (myHiddenByModules.indexOf(module) != -1);
584 }
585 
587 {
589 }
590 
594 #include "symbology/symbolList.h"
595 
596 #endif

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)