00001 00010 #ifndef _VisualizerFactory_h 00011 #define _VisualizerFactory_h 00012 00013 // SYSTEM INCLUDES 00014 // 00015 00016 // PROJECT INCLUDES 00017 // 00018 00019 // LOCAL INCLUDES 00020 // 00021 #include "../CountedPtr.h" 00022 #include "../Result.h" 00023 00024 #include "ResultLayer.h" 00025 #include "TextIterationVisualizer.h" 00026 #include "TextVisualizer.h" 00027 #include "Visualizer.h" 00028 #include "FullPlotVisualizer.h" 00029 00030 00031 // FORWARD REFERENCES 00032 // 00033 00034 00035 class VisualizerFactory 00036 { 00037 public: 00038 00040 typedef vector<Visualizer*> VisualizerContainer; 00041 00042 // LIFECYCLE 00043 00044 // OPERATORS 00045 00046 // OPERATIONS 00047 00062 static VisualizerContainer CreateVisualizers(wxWindow* pParent, 00063 const Result& result); 00064 00065 00071 static void* RegisterTextVisualizer 00072 (IterationData::IterationDataIdType id, 00073 const TextIterationVisualizer::Creator function); 00074 00078 static void* RegisterFullPlotVisualizer 00079 (IterationData::IterationDataIdType id, 00080 const ResultLayer::Creator creator); 00081 00085 static void* RegisterIterationValueVisualizer 00086 (IterationData::IterationDataIdType); 00087 00088 // ACCESS 00089 // INQUIRY 00090 00091 protected: 00092 00094 class VisualizerCreators 00095 { 00096 public: 00098 VisualizerCreators(); 00099 00101 void Merge(const VisualizerCreators& creators); 00102 00104 bool IsEmpty() const; 00106 bool IsComplete() const; 00107 00108 // DATA 00109 00111 TextIterationVisualizer::Creator mTextCreator; 00112 ResultLayer::Creator mFullPlotCreator; 00113 bool mIterationValueFlag; 00114 // TODO: pozostałe 00115 }; // VisualizerCreators 00116 00120 typedef map<IterationData::IterationDataIdType, 00121 VisualizerCreators> CreatorMapType; 00122 00123 static CreatorMapType& CreatorMap(); 00124 private: 00125 }; 00126 00127 // INLINE METHODS 00128 // 00129 00130 // EXTERNAL REFERENCES 00131 // 00132 00133 #endif // _VisualizerFactory_h