VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtRangeRingVisualizer.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002  * Copyright (c) 2011 MAK Technologies, Inc.
00003  * All rights reserved.
00004  *****************************************************************************/
00005 
00009 
00010 #pragma once
00011 
00012 #include <vrfGuiCore/vrfGuiCore.h>
00013 #include <vrvCore/DtStateVisualizer.h>
00014 #include <vrvUtil/DtUnicode.h>
00015 #include <vrfGuiCore/DtAttachableUpdaterWithLevelOrientationAgent.hpp>
00016 #include <vrvUtil/DtUnitConverterCollection.h>
00017 
00018 namespace makVrv
00019 {
00020    class DtOverlayEllipseArcModelAgent;
00021    class DtWidgetLabelAgent;
00022    class DtProjectedWidgetModelAgent;
00023    class DtVisualizerDefinition;
00024    class DtAttachableUpdaterAgent;
00025    class DtOverlaySegmentedLineModelAgent;
00026    class DtLineModelUpdaterAgent;
00027 }
00028 
00029 namespace makVrf
00030 {
00031    class DtEntityStateListenerExtensions;
00032    class DtAttachableUpdaterWithLevelOrientationAgent;
00033 
00036    class DT_DLL_VRFGUICORE DtRangeRingVisualizer : public makVrv::DtStateVisualizer
00037    {
00038    protected:
00039       struct RingStruct
00040       {
00041          //This struct has separate instances of scene objects and updater agents for
00045          makVrv::DtOverlayEllipseArcModelAgent* myRangeRing;
00046          makVrv::DtSceneObjectAgent* myRingSceneObjectAgent;
00047          makVrv::DtSceneObjectAgent* myLineSceneObjectAgent;
00048          DtAttachableUpdaterWithLevelOrientationAgent* myRingUpdaterAgent;
00049          DtAttachableUpdaterWithLevelOrientationAgent* myLineUpdaterAgent;
00050          makVrv::DtOverlaySegmentedLineModelAgent* myVerticalLine;
00051 
00052          //Label components
00053          makVrv::DtSceneObjectAgent* myLabelSceneObjectAgent;
00054          DtAttachableUpdaterWithLevelOrientationAgent* myLabelUpdaterAgent;
00055          makVrv::DtProjectedWidgetModelAgent* myLabelProjectedWidgetModelAgent;
00056          makVrv::DtWidgetLabelAgent* myLabel;
00057       };
00058 
00059    public:
00060 
00062       DtRangeRingVisualizer( makVrv::DtBaseConnection& connection,
00063          makVrv::DtStateListener& listener, int modelSet );
00064 
00066       virtual ~DtRangeRingVisualizer();
00067 
00068       //connect method called in the creator class
00069       virtual void connect();
00070 
00071       //connect method called in the destructor
00072       virtual void disconnect();
00073       
00074       //initialize method called in the creator class
00075       virtual void initialize_settings();
00076 
00078       virtual void setVisualizerDefinition( const makVrv::DtVisualizerDefinition& visDef );
00079 
00080       virtual void setModelDefinitionForAgents();
00081 
00083       virtual const makVrv::DtStateVisualizer::TypeInfo& typeInfo() const;
00084 
00086       static const makVrv::DtStateVisualizer::TypeInfo& theTypeInfo();
00087 
00089       static const makVrv::DtVisualizerSchema& theDtRangeRingSchema();
00090 
00091 
00092 
00093    protected:
00094       virtual void createModelAgents();
00095       virtual void destroyModelAgents();
00096 
00097       //Creates a new set of ring visualizers, populates a struct and adds it to myRangeRings
00098       virtual void createRing();
00099       virtual void destroyOuterRing();
00100       virtual void tryToDraw();
00101 
00102       virtual void updateRangeRingsCount();
00103       //override of parent method - destroys all subordinate visualizers if turned off
00104       virtual bool setVisible(bool visible, int context);
00106       virtual void setRangeRingsScale(float);
00108       virtual void setRangeRingsFill(bool);
00109       virtual void setRangeRingsGeometry();
00110       virtual void setRangeRingsColors();
00111       virtual void setRangeRingsLabels();
00112       virtual void slot_entityRangeRingsEnabled(const std::string& markingText, int setting);
00113       virtual void slot_displayUnitChanged(makVrv::DtUnitConverterCollection::DisplayUnitType, int, int);
00114 
00115    protected:
00116       std::vector<RingStruct> myRangeRings;
00117       DtEntityStateListenerExtensions* myExtensions;
00118       std::string myFontFile;
00119       float myFontSizeUnscaled;
00120       float myScale;
00121       bool myFill;
00122       bool myEntityRangeRingsEnabled;
00123    };
00124    //The creator class is normally templated in visualizers, but I want to split out the 
00126 
00127    class DtRangeRingVisualizerCreator: public makVrv::DtStateVisualizerCreator
00128    {
00129 public:
00130 
00132    DtRangeRingVisualizerCreator();
00133 
00135    virtual ~DtRangeRingVisualizerCreator();
00136 
00137    virtual DtRangeRingVisualizerCreator* clone() const;
00138 
00140    virtual makVrv::DtStateVisualizer* create(makVrv::DtBaseConnection& simulation, makVrv::DtStateListener& listener, int modelSet) const;
00141 
00143    virtual const makVrv::DtStateVisualizer::TypeInfo& visualizerTypeInfo() const;
00144 
00145    virtual const std::string& tag();
00146   };
00147 
00148 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)