00001
00009 #ifndef VIEWER_H
00010 #define VIEWER_H
00011
00012 #if _MSC_VER > 1000
00013 #pragma once
00014 #endif // _MSC_VER > 1000
00015
00016 #include <string>
00017
00018 #include <boost/shared_ptr.hpp>
00019 #include <boost/scoped_ptr.hpp>
00020
00021
00022 #ifndef EEML_DEFINED
00023 struct _eui_BasePart;
00024 typedef struct _eui_BasePart Eui_BasePart;
00025 typedef Eui_BasePart * Eeml_Part;
00026 #endif
00027
00028
00029 #ifndef __EVUE_H
00030 struct _Evue_Connection;
00031 typedef struct _Evue_Connection Evue_Connection;
00032 typedef void * Evue_DisplayHandle;
00033 typedef void * Evue_LayerHandle;
00034 #endif
00035
00036 #ifndef ESTR_DEFINED
00037 struct _estr_StringList;
00038 typedef _estr_StringList Estr_StringList;
00039 #endif
00040
00041
00042
00043
00044 namespace Imagine
00045 {
00046
00047 class ViewWindow;
00048 class ViewLayer;
00049
00061 class Viewer
00062 {
00063 public:
00064
00065 Viewer();
00066
00067 virtual ~Viewer();
00068
00069
00082 virtual boost::shared_ptr<Evue_Connection> openConnection() = 0;
00083
00084
00085
00096 boost::shared_ptr<Evue_Connection> connection();
00097
00098
00103 void closeConnection();
00104
00105
00106
00115 virtual void setVirtualRoam( bool ) = 0;
00116
00117
00118
00122 virtual void setStatusBar( bool ) = 0;
00123
00124
00126
00130 class Imp;
00131
00132
00133 protected:
00135 Viewer( Imp * );
00136
00138
00139 Imp const * imp() const { return imp_.get(); }
00140 Imp * imp() { return imp_.get(); }
00142
00143 private:
00144
00149 boost::scoped_ptr<Imp> imp_;
00150
00151 };
00152
00153
00154
00155
00156
00157
00162 class ClientViewer : public Viewer
00163 {
00164 public:
00165
00166 ClientViewer();
00167
00168 virtual ~ClientViewer()
00169 {}
00170
00171
00184 boost::shared_ptr<Evue_Connection> openConnection();
00185
00186
00187
00196 void setVirtualRoam( bool );
00197
00198
00199
00203 void setStatusBar( bool );
00204
00205
00206
00211 Evue_DisplayHandle selectExistingViewer();
00212
00213
00218 Evue_DisplayHandle createViewer();
00219
00220
00223 Evue_DisplayHandle displayHandle();
00224
00225
00229 Evue_LayerHandle topLayer();
00230
00231
00237 Estr_StringList * openGenericLayer( std::string const & data_filename );
00238
00239 private:
00240
00241 class ClientImp;
00242
00243 };
00244
00245
00246
00253 class EmbeddedViewer : public Viewer
00254 {
00255 public:
00256
00257 EmbeddedViewer();
00258
00259 virtual ~EmbeddedViewer()
00260 {}
00261
00276 boost::shared_ptr<Evue_Connection> openConnection();
00277
00278
00279
00294 ViewWindow & createViewerOnPart( Eeml_Part viewer_part, Eeml_Part frame_part );
00295
00296
00299 ViewWindow & viewWindow();
00300
00301
00302
00311 void setVirtualRoam( bool );
00312
00313
00314
00318 void setStatusBar( bool );
00319
00320
00326 ViewLayer & openImageLayer( std::string const & data_filename );
00327
00328
00334 ViewLayer & openVectorLayer( std::string const & data_filename );
00335
00336
00337 private:
00338
00339 class EmbeddedImp;
00340
00341 };
00342
00343
00344 }
00345
00346 #endif