VAPoR  3.0.0
renderer.h
Go to the documentation of this file.
1 
2 //************************************************************************
3 // *
4 // Copyright (C) 2004 *
5 // University Corporation for Atmospheric Research *
6 // All Rights Reserved *
7 // *
8 //************************************************************************///
9 // File: renderer.h
10 //
11 // Author: Alan Norton
12 // National Center for Atmospheric Research
13 // PO 3000, Boulder, Colorado
14 //
15 // Date: September 2004
16 //
17 // Description: Defines the Renderer class.
18 // A pure virtual class that is implemented for each renderer.
19 // Methods are called by the visualizer class as needed.
20 //
21 
22 #ifndef RENDERER_H
23 #define RENDERER_H
24 
25 
26 #include <vapor/MyBase.h>
27 #include <vapor/common.h>
28 #include "vapor/ControlExecutive.h"
29 #include "params.h"
30 #include "visualizer.h"
31 
32 using namespace VetsUtil;
33 
34 namespace VAPoR {
35 class DataMgrV3_0;
49 public:
50  RendererBase(Visualizer* vw, Params* p, string name);
51  virtual ~RendererBase();
56  virtual int initializeGL();
57 
59  Visualizer* GetVisualizer() { return _visualizer;}
60 
63  bool isInitialized() {return _initialized;}
64 
67  const string getMyName() const {return(_rendererName);};
68 
71  virtual void invalidateCache() {}
72 protected:
76  virtual int _initializeGL() = 0;
77 
80  size_t _timestep;
81  string _rendererName;
83 
84 };
96 {
97 
98 public:
102  //
103  Renderer(Visualizer* vw, RenderParams* rp, string name);
104 
105  virtual ~Renderer();
106 
108  typedef Renderer* (*RendererCreateMethod)(Visualizer*, RenderParams*);
109 
113  static void RegisterRenderer(string tag, RendererCreateMethod);
114 
119  static Renderer* CreateInstance(RenderParams* p, Visualizer* viz);
120 
125  virtual int paintGL(DataMgrV3_0* dataMgr);
126 
130  virtual void setRenderParams(RenderParams* rp) {_currentRenderParams = rp;}
131 
134  RenderParams* getRenderParams(){return _currentRenderParams;}
135 
139  void setBypass(int timestep) {if(_currentRenderParams)_currentRenderParams->setBypass(timestep);}
140 
145  void setPartialBypass(int timestep) {if(_currentRenderParams)_currentRenderParams->setPartialBypass(timestep);}
146 
151  void setAllBypass(bool val){if (_currentRenderParams) _currentRenderParams->setAllBypass(val);}
152 
156  bool doBypass(int timestep) {return (_currentRenderParams && _currentRenderParams->doBypass(timestep));}
157 
162  bool doAlwaysBypass(int timestep) {
163  return (_currentRenderParams && _currentRenderParams->doAlwaysBypass(timestep));
164  }
165 
170  virtual void setAllDataDirty() {return;}
171 
175  Renderer* iRender = ControlExec::GetVisualizer(ControlExec::GetActiveVizIndex())->getRenderer(rp);
176  if (iRender) iRender->invalidateCache();
177  }
178 
181  virtual void invalidateCache() {}
182 
194  static int getGrids(DataMgrV3_0* dataMgr,
195  size_t ts,
196  const vector<string>& varnames,
197  const double extents[6],
198  int* refLevel,
199  int* lod,
200  RegularGrid** grids);
201 
206 
218  static void UndoRedo(bool isUndo, int instance, Params* beforeP, Params* afterP, Params* auxPrev = 0, Params* auxNext = 0);
219 
228  void buildLocal2DTransform(int dataOrientation, float a[2],float b[2], float* constVal, int mappedDims[3]);
229 
233  void getLocalContainingRegion(float regMin[3], float regMax[3]);
234 
236 protected:
237 
239  virtual int _paintGL(DataMgrV3_0*) = 0;
240 
245  void enableClippingPlanes(const double extents[6]);
248  void enableFullClippingPlanes();
251  void enableRegionClippingPlanes();
254  void enable2DClippingPlanes();
257  void disableClippingPlanes();
258 
261  size_t GetCurrentTimestep() {return _timestep;}
262 
263 
264 #ifndef DOXYGEN_SKIP_THIS
265  static map<string,RendererCreateMethod> _createRendererMap;
268 
269  RenderParams* _currentRenderParams;
270 
271 
272 #endif //DOXYGEN_SKIP_THIS
273 };
274 };
275 
276 #endif // RENDERER_H
RenderParams * getRenderParams()
Definition: renderer.h:134
static void invalidateRenderCache(RenderParams *rp)
Definition: renderer.h:174
A pure virtual class for managing parameters used in visualization.
Definition: params.h:129
string _rendererName
Definition: renderer.h:81
A Params subclass for managing parameters used by Renderers.
Definition: renderparams.h:57
void setAllBypass(bool val)
Definition: renderer.h:151
bool doBypass(int timestep)
Definition: renderer.h:156
A base class for Renderer classes.
Definition: renderer.h:48
virtual void setAllDataDirty()
Definition: renderer.h:170
const string getMyName() const
Definition: renderer.h:67
bool doAlwaysBypass(int timestep)
Definition: renderer.h:162
Visualizer * GetVisualizer()
Obtain the Visualizer associated with this Renderer.
Definition: renderer.h:59
size_t GetCurrentTimestep()
Definition: renderer.h:261
Params * _params
Definition: renderer.h:82
Visualizer * _visualizer
Definition: renderer.h:78
void setPartialBypass(int timestep)
Definition: renderer.h:145
A class for performing OpenGL rendering in VAPOR GUI Window.
Definition: visualizer.h:61
VetsUtil base class.
Definition: MyBase.h:68
virtual void invalidateCache()
Definition: renderer.h:181
bool isInitialized()
Definition: renderer.h:63
Definition: DC.h:10
virtual void setRenderParams(RenderParams *rp)
Definition: renderer.h:130
virtual void invalidateCache()
Definition: renderer.h:71
void setBypass(int timestep)
Definition: renderer.h:139
A cache based data reader.
Definition: DataMgrV3_0.h:100
A class that performs rendering in a Visualizer.
Definition: renderer.h:95