VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtFaccManager.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile:  $ $Revision:  $ $State:  $
00007 ******************************************************************************/
00008 
00012 
00013 #pragma once
00014 #include <vrvCore/vrvCore.h>
00015 #include <vrvCore/DtFeature.h>
00016 #include <vrvUtil/DtUnicode.h>
00017 #include <vrvUtil/DtVirtualBaseClass.h>
00018 #include <vrvUtil/DtFaccCode.h>
00019 #include <boost/unordered_map.hpp>
00020 #include <boost/signal.hpp>
00021 #include <map>
00022 
00023 namespace makArchives
00024 {
00025    class DtFeatureSettingsRecord;
00026 }
00027 
00028 namespace makVrv
00029 {
00030    class DtFaccSignaler;
00031    class DtDeSettings;
00032 
00033    class DtFaccInfo
00034    {
00035    public:
00036 
00037       DtFaccInfo(const DtUnicode& name = DtUnicode())
00038       : myName(name)
00039       {         
00040          myColor[3] = myColor[2] = myColor[1] = myColor[0] = 1.0f;
00041       }
00042 
00043       DtFaccInfo(const DtUnicode& name, float r, float g, float b, float a)
00044       : myName(name)
00045       {         
00046          myColor[0] = r;
00047          myColor[1] = g;
00048          myColor[2] = b;
00049          myColor[3] = a;
00050       }
00051 
00052       const DtUnicode& name() const
00053       {
00054          return myName;
00055       }
00056 
00057       void setName(const DtUnicode& name)
00058       {
00059          myName = name;
00060       }
00061 
00062       const float* color() const
00063       {
00064          return myColor;
00065       }
00066 
00067       void setColor(const float color[4])
00068       {
00069          memcpy(myColor,color,sizeof(float[4]));
00070       }
00071 
00072    protected:
00073       DtUnicode myName;
00074       float myColor[4];
00075    };
00076 
00080    class DT_DLL_VRVCORE DtFaccManager : public DtVirtualBaseClass
00081    {
00082    public:
00083 
00084       //Using std::map to ensure that the Info is sorted by facc code.
00085       typedef std::map<DtFaccCode, DtFaccInfo> FaccCodeInfo;
00086 
00088       static DtFaccManager& instance(DtDe& de);
00089 
00092       static void registerInstance(DtDe& de, DtFaccManager* );
00093 
00095       virtual ~DtFaccManager();
00096 
00098       DtFaccInfo categoryInfo(const DtFaccCode& code) const;
00099 
00101       DtFaccInfo subcategoryInfo(const DtFaccCode& code) const;
00102 
00104       DtFaccInfo info(const DtFaccCode& code) const;
00105 
00108       virtual void setFaccInfo(const DtFaccCode& code, const DtFaccInfo& info, 
00109          bool disableAutoSave = false);
00110       
00112       virtual void removeFaccInfo(const DtFaccCode& code);
00113 
00115       const FaccCodeInfo& features() const;
00116 
00118       virtual void setFromRecord(const makArchives::DtFeatureSettingsRecord& record);
00119 
00121       virtual void getRecord(makArchives::DtFeatureSettingsRecord& record) const;
00122 
00124       virtual void exportSettings(const std::string& filename);
00125 
00127       virtual void importSettings(const std::string& filename);
00128 
00130       virtual DtDeSettings* settings();
00131 
00132    protected:
00133 
00135       DtFaccManager(DtDe& de);
00136 
00137       virtual void loadDefaults();
00138       virtual void autoSave();
00139 
00140    protected:
00141       DtDe& myDe;
00142       DtFaccSignaler& mySignaler;
00143       FaccCodeInfo myCodeInfo;
00144    };
00145 
00148    class DT_DLL_VRVCORE DtFaccSignaler : public DtVirtualBaseClass
00149    {
00150    public:
00151 
00153       static DtFaccSignaler& instance(DtDe&);
00154 
00155       virtual ~DtFaccSignaler();
00156 
00158       boost::signal< void (const DtFaccCode&, const DtFaccInfo&) > signal_infoChanged;
00159 
00160    protected:
00161 
00162       DtFaccSignaler();
00163 
00164    };
00165 }

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)