![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2003 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: compositeDrawer.h,v $ $Revision: 1.5 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef DtCompositeDrawer_H_ 00013 #define DtCompositeDrawer_H_ 00014 00016 #include "symbolDrawer/baseSymbolDrawer.h" 00017 00018 class DtSymbol; 00019 00021 #include <QtGui/QPixmap> 00022 #include "ngutil/dtqlist.h" 00023 00026 #include "symbolDrawer/symbolDrawerDefines.h" 00027 00028 class DT_DLL_symbolDrawer DtCompositeDrawer : public DtBaseSymbolDrawer 00029 { 00030 public: 00031 00032 DtCompositeDrawer(); 00033 virtual ~DtCompositeDrawer(); 00034 00039 virtual bool draw( QPainter& paint, 00040 const DtSymbol * const symbol ) const; 00041 00044 virtual QSize calcBBox( const DtSymbol * const symbol ) const; 00045 00046 virtual void addDrawer(DtSymbolDrawer* drawer); 00047 virtual void removeDrawer(DtSymbolDrawer* drawer); 00048 virtual DtPtrQList<DtSymbolDrawer*>* drawers(); 00049 00053 void destroyDrawer(DtSymbolDrawer*, bool add = true); 00054 00055 protected: 00056 virtual bool forceUpdate(const DtSymbol* const symbol) const; 00057 00060 virtual bool endTransparentDraw(QPainter& paint, 00061 const DtSymbol * const symbol) const; 00062 00063 private: 00065 DtCompositeDrawer(const DtCompositeDrawer& orig); 00066 DtCompositeDrawer& operator=(const DtCompositeDrawer& orig); 00068 00069 protected: 00070 DtPtrQList<DtSymbolDrawer*> mySymbolDrawers; 00071 DtPtrQList<DtSymbolDrawer*> myDrawersToDestroy; 00072 }; 00073 00074 inline void DtCompositeDrawer::destroyDrawer(DtSymbolDrawer* d, bool add) 00075 { 00076 if (add) 00077 { 00078 if (myDrawersToDestroy.findRef(d) == -1) 00079 { 00080 myDrawersToDestroy.append(d); 00081 } 00082 } 00083 else 00084 { 00085 myDrawersToDestroy.remove(d); 00086 } 00087 } 00088 00089 #endif