source: branches/nanovis2/packages/vizservers/vtkvis/RpVtkRenderer.h @ 3305

Last change on this file since 3305 was 3305, checked in by ldelgass, 12 years ago

sync with trunk

  • Property svn:eol-style set to native
File size: 24.8 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright (C) 2004-2012  HUBzero Foundation, LLC
4 *
5 * Author: Leif Delgass <ldelgass@purdue.edu>
6 */
7
8#ifndef __RAPPTURE_VTKVIS_RENDERER_H__
9#define __RAPPTURE_VTKVIS_RENDERER_H__
10
11#include <string>
12#include <vector>
13#include <tr1/unordered_map>
14#include <typeinfo>
15
16#include <vtkVersion.h>
17#if (VTK_MAJOR_VERSION >= 6)
18#define USE_VTK6
19#endif
20#include <vtkSmartPointer.h>
21#ifdef USE_CUSTOM_AXES
22#include "vtkRpCubeAxesActor.h"
23#include "vtkRpCubeAxesActor2D.h"
24#else
25#include <vtkCubeAxesActor.h>
26#include <vtkCubeAxesActor2D.h>
27#endif
28#include <vtkScalarBarActor.h>
29#include <vtkRenderer.h>
30#include <vtkRenderWindow.h>
31#include <vtkUnsignedCharArray.h>
32
33#include "ColorMap.h"
34#include "RpTypes.h"
35#include "RpVtkDataSet.h"
36#include "RpArc.h"
37#include "RpArrow.h"
38#include "RpBox.h"
39#include "RpCone.h"
40#include "RpContour2D.h"
41#include "RpContour3D.h"
42#include "RpCutplane.h"
43#include "RpCylinder.h"
44#include "RpDisk.h"
45#include "RpGlyphs.h"
46#include "RpGroup.h"
47#include "RpHeightMap.h"
48#include "RpLIC.h"
49#include "RpLine.h"
50#include "RpMolecule.h"
51#include "RpPolyData.h"
52#include "RpPolygon.h"
53#include "RpPseudoColor.h"
54#include "RpSphere.h"
55#include "RpStreamlines.h"
56#include "RpVolume.h"
57#include "RpWarp.h"
58#include "Trace.h"
59
60// Controls if TGA format is sent to client
61//#define RENDER_TARGA
62#define TARGA_BYTES_PER_PIXEL 3
63
64namespace Rappture {
65namespace VtkVis {
66
67/**
68 * \brief VTK Renderer
69 */
70class Renderer
71{
72public:
73    Renderer();
74    virtual ~Renderer();
75
76    enum AxesFlyMode {
77        FLY_OUTER_EDGES = 0,
78        FLY_CLOSEST_TRIAD,
79        FLY_FURTHEST_TRIAD,
80        FLY_STATIC_EDGES,
81        FLY_STATIC_TRIAD
82    };
83
84    enum AxesTickPosition {
85        TICKS_INSIDE,
86        TICKS_OUTSIDE,
87        TICKS_BOTH
88    };
89
90    enum CameraMode {
91        PERSPECTIVE,
92        ORTHO,
93        IMAGE
94    };
95
96    enum LegendType {
97        LEGEND_SCALAR,
98        LEGEND_VECTOR_MAGNITUDE,
99        LEGEND_VECTOR_X,
100        LEGEND_VECTOR_Y,
101        LEGEND_VECTOR_Z
102    };
103
104    typedef std::string DataSetId;
105    typedef std::string ColorMapId;
106    typedef std::string FieldId;
107
108    // Data sets
109
110    void addDataSet(const DataSetId& id);
111
112    void deleteDataSet(const DataSetId& id);
113
114    DataSet *getDataSet(const DataSetId& id);
115
116    void getDataSetNames(std::vector<std::string>& names);
117
118    bool setData(const DataSetId& id, char *data, int nbytes);
119
120    bool setDataFile(const DataSetId& id, const char *filename);
121
122    bool setDataSetActiveScalars(const DataSetId& id, const char *scalarName);
123
124    bool setDataSetActiveVectors(const DataSetId& id, const char *vectorName);
125
126    bool getScalarValueAtPixel(const DataSetId& id, int x, int y, double *value);
127
128    bool getScalarValue(const DataSetId& id, double x, double y, double z, double *value);
129
130    bool getVectorValueAtPixel(const DataSetId& id, int x, int y, double vector[3]);
131
132    bool getVectorValue(const DataSetId& id, double x, double y, double z, double vector[3]);
133
134    void setDataSetShowBounds(const DataSetId& id, bool state);
135
136    void setDataSetOutlineColor(const DataSetId& id, float color[3]);
137
138    void setDataSetOpacity(const DataSetId& id, double opacity);
139
140    void setDataSetVisibility(const DataSetId& id, bool state);
141
142    void setUseCumulativeDataRange(bool state, bool onlyVisible = false);
143
144    bool getUseCumulativeRange();
145
146    bool getCumulativeDataRange(double *range, const char *name,
147                                int numComponents,
148                                int component = -1);
149
150    bool getCumulativeDataRange(double *range, const char *name,
151                                DataSet::DataAttributeType type,
152                                int numComponents,
153                                int component = -1);
154
155    // Render window
156
157    /// Get the VTK render window object this Renderer uses
158    vtkRenderWindow *getRenderWindow()
159    {
160        return _renderWindow;
161    }
162
163    void setWindowSize(int width, int height);
164
165    int getWindowWidth() const;
166
167    int getWindowHeight() const;
168
169    // Camera controls
170
171    void setViewAngle(int height);
172
173    vtkCamera *getVtkCamera()
174    {
175        if (_renderer != NULL)
176            return _renderer->GetActiveCamera();
177        else
178            return NULL;
179    }
180
181    void setCameraMode(CameraMode mode);
182
183    CameraMode getCameraMode() const;
184
185    void resetCamera(bool resetOrientation = true);
186
187    void resetCameraClippingRange();
188
189    void setCameraZoomRegionPixels(int x, int y, int width, int height);
190
191    void setCameraZoomRegion(double x, double y, double width, double height);
192
193    void getCameraZoomRegion(double xywh[4]) const;
194
195    void getScreenWorldCoords(double xywh[4]) const;
196
197    void rotateCamera(double yaw, double pitch, double roll);
198
199    void setCameraOrientation(const double quat[4], bool absolute = true);
200
201    void panCamera(double x, double y, bool absolute = true);
202
203    void zoomCamera(double z, bool absolute = true);
204
205    void setCameraOrientationAndPosition(const double position[3],
206                                         const double focalPoint[3],
207                                         const double viewUp[3]);
208
209    void getCameraOrientationAndPosition(double position[3],
210                                         double focalPoint[3],
211                                         double viewUp[3]);
212
213    // Rendering an image
214
215    void setBackgroundColor(float color[3]);
216
217    void setClipPlane(Axis axis, double ratio, int direction);
218
219    void setUseTwoSidedLighting(bool state);
220
221    void setUseDepthPeeling(bool state);
222
223    void eventuallyRender();
224
225    bool render();
226
227    void getRenderedFrame(vtkUnsignedCharArray *imgData);
228
229    // Axes
230
231    void setAxesFlyMode(AxesFlyMode mode);
232
233    void setAxesVisibility(bool state);
234
235    void setAxesGridVisibility(bool state);
236
237    void setAxesLabelVisibility(bool state);
238
239    void setAxesTickVisibility(bool state);
240
241    void setAxesTickPosition(AxesTickPosition pos);
242
243    void setAxesColor(double color[3]);
244
245    void setAxisVisibility(Axis axis, bool state);
246
247    void setAxisGridVisibility(Axis axis, bool state);
248
249    void setAxisLabelVisibility(Axis axis, bool state);
250
251    void setAxisTickVisibility(Axis axis, bool state);
252
253    void setAxisTitle(Axis axis, const char *title);
254
255    void setAxisUnits(Axis axis, const char *units);
256
257    // Colormaps
258
259    void addColorMap(const ColorMapId& id, ColorMap *colorMap);
260
261    void deleteColorMap(const ColorMapId& id);
262
263    ColorMap *getColorMap(const ColorMapId& id);
264
265    bool renderColorMap(const ColorMapId& id,
266                        const DataSetId& dataSetID,
267                        LegendType legendType,
268                        const char *fieldName,
269                        DataSet::DataAttributeType type,
270                        std::string& title,
271                        double range[2],
272                        int width, int height,
273                        bool opaque,
274                        int numLabels,
275                        vtkUnsignedCharArray *imgData);
276
277    bool renderColorMap(const ColorMapId& id,
278                        const DataSetId& dataSetID,
279                        LegendType legendType,
280                        const char *fieldName,
281                        std::string& title,
282                        double range[2],
283                        int width, int height,
284                        bool opaque,
285                        int numLabels,
286                        vtkUnsignedCharArray *imgData);
287
288    bool renderColorMap(const ColorMapId& id,
289                        const DataSetId& dataSetID,
290                        LegendType legendType,
291                        std::string& title,
292                        double range[2],
293                        int width, int height,
294                        bool opaque,
295                        int numLabels,
296                        vtkUnsignedCharArray *imgData);
297
298    // Generic VtkGraphicsObject methods
299
300    template<class GraphicsObject>
301    GraphicsObject *getGraphicsObject(const DataSetId& id);
302
303    template<class GraphicsObject>
304    bool addGraphicsObject(const DataSetId& id);
305
306    template<class GraphicsObject>
307    void deleteGraphicsObject(const DataSetId& id);
308
309    template<class GraphicsObject>
310    void deleteAllGraphicsObjects();
311
312    template<class GraphicsObject>
313    void mergeGraphicsObjectBounds(double *bounds, bool onlyVisible);
314
315    template<class GraphicsObject>
316    void mergeGraphicsObjectUnscaledBounds(double *bounds, bool onlyVisible);
317
318    template<class GraphicsObject>
319    void updateGraphicsObjectFieldRanges();
320
321    template<class GraphicsObject>
322    void setGraphicsObjectClippingPlanes(vtkPlaneCollection *planes);
323
324    template<class GraphicsObject>
325    void setGraphicsObjectAspect(double aspectRatio);
326
327    template<class GraphicsObject>
328    void setGraphicsObjectColorMap(const DataSetId& id, const ColorMapId& colorMapId);
329
330    template<class GraphicsObject>
331    void updateGraphicsObjectColorMap(ColorMap *cmap);
332
333    template<class GraphicsObject>
334    bool graphicsObjectColorMapUsed(ColorMap *cmap);
335
336    template<class GraphicsObject>
337    void setGraphicsObjectVolumeSlice(const DataSetId& id, Axis axis, double ratio);
338
339    //   Prop/Prop3D properties
340
341    template<class GraphicsObject>
342    void setGraphicsObjectOrientation(const DataSetId& id, double quat[4]);
343
344    template<class GraphicsObject>
345    void setGraphicsObjectOrientation(const DataSetId& id, double angle, double axis[3]);
346
347    template<class GraphicsObject>
348    void setGraphicsObjectPosition(const DataSetId& id, double pos[3]);
349
350    template<class GraphicsObject>
351    void setGraphicsObjectAspect(const DataSetId& id, double aspect);
352
353    template<class GraphicsObject>
354    void setGraphicsObjectScale(const DataSetId& id, double scale[3]);
355
356    template<class GraphicsObject>
357    void setGraphicsObjectTransform(const DataSetId& id, vtkMatrix4x4 *trans);
358
359    template<class GraphicsObject>
360    void setGraphicsObjectVisibility(const DataSetId& id, bool state);
361
362    //   Actor properties
363
364    template<class GraphicsObject>
365    void setGraphicsObjectColor(const DataSetId& id, float color[3]);
366
367    template<class GraphicsObject>
368    void setGraphicsObjectEdgeVisibility(const DataSetId& id, bool state);
369
370    template<class GraphicsObject>
371    void setGraphicsObjectEdgeColor(const DataSetId& id, float color[3]);
372
373    template<class GraphicsObject>
374    void setGraphicsObjectEdgeWidth(const DataSetId& id, float edgeWidth);
375
376    template<class GraphicsObject>
377    void setGraphicsObjectAmbient(const DataSetId& id, double coeff);
378
379    template<class GraphicsObject>
380    void setGraphicsObjectDiffuse(const DataSetId& id, double coeff);
381
382    template<class GraphicsObject>
383    void setGraphicsObjectSpecular(const DataSetId& id, double coeff, double power);
384
385    template<class GraphicsObject>
386    void setGraphicsObjectLighting(const DataSetId& id, bool state);
387
388    template<class GraphicsObject>
389    void setGraphicsObjectOpacity(const DataSetId& id, double opacity);
390
391    template<class GraphicsObject>
392    void setGraphicsObjectPointSize(const DataSetId& id, float size);
393
394    template<class GraphicsObject>
395    void setGraphicsObjectWireframe(const DataSetId& id, bool state);
396
397    // Arcs
398
399    bool addArc(const DataSetId& id, double pt1[3], double pt2[3]);
400
401    void setArcResolution(const DataSetId& id, int res);
402
403    // Arrows
404
405    bool addArrow(const DataSetId& id, double tipRadius, double shaftRadius, double tipLength);
406
407    void setArrowResolution(const DataSetId& id, int resTip, int resShaft);
408
409    // Cones
410
411    bool addCone(const DataSetId& id, double radius, double height, bool cap);
412
413    void setConeResolution(const DataSetId& id, int res);
414
415    // 2D Contour plots
416
417    bool addContour2D(const DataSetId& id, int numContours);
418
419    bool addContour2D(const DataSetId& id, const std::vector<double>& contours);
420
421    void setContour2DContours(const DataSetId& id, int numContours);
422
423    void setContour2DContourList(const DataSetId& id, const std::vector<double>& contours);
424
425    void setContour2DColorMode(const DataSetId& id,
426                               Contour2D::ColorMode mode,
427                               const char *name, double range[2] = NULL);
428
429    void setContour2DColorMode(const DataSetId& id,
430                               Contour2D::ColorMode mode,
431                               DataSet::DataAttributeType type,
432                               const char *name, double range[2] = NULL);
433
434    // 3D Contour (isosurface) plots
435
436    bool addContour3D(const DataSetId& id, int numContours);
437
438    bool addContour3D(const DataSetId& id, const std::vector<double>& contours);
439
440    void setContour3DContours(const DataSetId& id, int numContours);
441
442    void setContour3DContourList(const DataSetId& id, const std::vector<double>& contours);
443
444    // Cutplanes
445
446    void setCutplaneOutlineVisibility(const DataSetId& id, bool state);
447
448    void setCutplaneSliceVisibility(const DataSetId& id, Axis axis, bool state);
449
450    void setCutplaneColorMode(const DataSetId& id,
451                              Cutplane::ColorMode mode,
452                              const char *name, double range[2] = NULL);
453
454    void setCutplaneColorMode(const DataSetId& id,
455                              Cutplane::ColorMode mode,
456                              DataSet::DataAttributeType type,
457                              const char *name, double range[2] = NULL);
458
459    // Cylinders
460
461    bool addCylinder(const DataSetId& id, double radius, double height, bool cap);
462
463    void setCylinderResolution(const DataSetId& id, int res);
464
465    // Disks
466
467    bool addDisk(const DataSetId& id, double innerRadius, double outerRadius);
468
469    void setDiskResolution(const DataSetId& id, int resRadial, int resCircum);
470
471    // Glyphs
472
473    bool addGlyphs(const DataSetId& id, Glyphs::GlyphShape shape);
474
475    void setGlyphsShape(const DataSetId& id, Glyphs::GlyphShape shape);
476
477    void setGlyphsOrientMode(const DataSetId& id, bool state, const char *name);
478
479    void setGlyphsColorMode(const DataSetId& id,
480                            Glyphs::ColorMode mode,
481                            const char *name,
482                            double range[2] = NULL);
483
484    void setGlyphsScalingMode(const DataSetId& id,
485                              Glyphs::ScalingMode mode,
486                              const char *name,
487                              double range[2] = NULL);
488
489    void setGlyphsNormalizeScale(const DataSetId& id, bool normalize);
490
491    void setGlyphsScaleFactor(const DataSetId& id, double scale);
492
493    // Height maps
494
495    bool addHeightMap(const DataSetId& id, int numContours, double heightScale);
496
497    bool addHeightMap(const DataSetId& id, const std::vector<double>& contours, double heightScale);
498
499    void setHeightMapHeightScale(const DataSetId& id, double scale);
500
501    void setHeightMapNumContours(const DataSetId& id, int numContours);
502
503    void setHeightMapContourList(const DataSetId& id, const std::vector<double>& contours);
504
505    void setHeightMapContourSurfaceVisibility(const DataSetId& id, bool state);
506
507    void setHeightMapContourLineVisibility(const DataSetId& id, bool state);
508
509    void setHeightMapContourEdgeColor(const DataSetId& id, float color[3]);
510
511    void setHeightMapContourEdgeWidth(const DataSetId& id, float edgeWidth);
512
513    // Lines
514
515    bool addLine(const DataSetId& id, double pt1[3], double pt2[3]);
516
517    // Molecules
518
519    void setMoleculeAtomRadiusScale(const DataSetId& id, double scale);
520
521    void setMoleculeBondRadiusScale(const DataSetId& id, double scale);
522
523    void setMoleculeAtomScaling(const DataSetId& id, Molecule::AtomScaling scaling);
524
525    void setMoleculeAtomVisibility(const DataSetId& id, bool state);
526
527    void setMoleculeAtomLabelVisibility(const DataSetId& id, bool state);
528
529    void setMoleculeBondVisibility(const DataSetId& id, bool state);
530
531    void setMoleculeBondStyle(const DataSetId& id, Molecule::BondStyle style);
532
533    void setMoleculeBondColorMode(const DataSetId& id, Molecule::BondColorMode mode);
534
535    void setMoleculeBondColor(const DataSetId& id, float color[3]);
536
537    void setMoleculeColorMode(const DataSetId& id,
538                              Molecule::ColorMode mode,
539                              const char *name, double range[2] = NULL);
540
541    void setMoleculeColorMode(const DataSetId& id,
542                              Molecule::ColorMode mode,
543                              DataSet::DataAttributeType type,
544                              const char *name, double range[2] = NULL);
545
546    // N-sided Regular Polygons
547
548    bool addPolygon(const DataSetId& id, int numSides);
549
550    // Color-mapped surfaces
551
552    void setPseudoColorColorMode(const DataSetId& id,
553                                 PseudoColor::ColorMode mode,
554                                 const char *name, double range[2] = NULL);
555
556    void setPseudoColorColorMode(const DataSetId& id,
557                                 PseudoColor::ColorMode mode,
558                                 DataSet::DataAttributeType type,
559                                 const char *name, double range[2] = NULL);
560
561    // Spheres
562
563    void setSphereSection(const DataSetId& id, double thetaStart, double thetaEnd,
564                          double phiStart, double phiEnd);
565
566    void setSphereResolution(const DataSetId& id, int thetaRes, int phiRes);
567
568    // Streamlines
569
570    void setStreamlinesNumberOfSeedPoints(const DataSetId& id, int numPoints);
571
572    void setStreamlinesSeedToMeshPoints(const DataSetId& id);
573
574    void setStreamlinesSeedToFilledMesh(const DataSetId& id, int numPoints);
575
576    bool setStreamlinesSeedToMeshPoints(const DataSetId& id,
577                                        char *data, size_t nbytes);
578
579    bool setStreamlinesSeedToFilledMesh(const DataSetId& id,
580                                        char *data, size_t nbytes,
581                                        int numPoints);
582
583    void setStreamlinesSeedToRake(const DataSetId& id,
584                                  double start[3], double end[3],
585                                  int numPoints);
586
587    void setStreamlinesSeedToDisk(const DataSetId& id,
588                                  double center[3], double normal[3],
589                                  double radius, double innerRadius,
590                                  int numPoints);
591
592    void setStreamlinesSeedToPolygon(const DataSetId& id,
593                                     double center[3], double normal[3],
594                                     double angle, double radius,
595                                     int numSides);
596
597    void setStreamlinesSeedToFilledPolygon(const DataSetId& id,
598                                           double center[3], double normal[3],
599                                           double angle, double radius,
600                                           int numSides, int numPoints);
601
602    void setStreamlinesLength(const DataSetId& id, double length);
603
604    void setStreamlinesTypeToLines(const DataSetId& id);
605
606    void setStreamlinesTypeToTubes(const DataSetId& id, int numSides, double radius);
607
608    void setStreamlinesTypeToRibbons(const DataSetId& id, double width, double angle);
609
610    void setStreamlinesSeedVisibility(const DataSetId& id, bool state);
611
612    void setStreamlinesColorMode(const DataSetId& id,
613                                 Streamlines::ColorMode mode,
614                                 const char *name, double range[2] = NULL);
615
616    void setStreamlinesColorMode(const DataSetId& id,
617                                 Streamlines::ColorMode mode,
618                                 DataSet::DataAttributeType type,
619                                 const char *name, double range[2] = NULL);
620
621    void setStreamlinesSeedColor(const DataSetId& id, float color[3]);
622
623    // Volumes
624
625    void setVolumeSampleDistance(const DataSetId& id, double distance);
626
627    // Warps
628
629    void setWarpWarpScale(const DataSetId& id, double scale);
630
631private:
632    typedef std::tr1::unordered_map<DataSetId, DataSet *> DataSetHashmap;
633    typedef std::tr1::unordered_map<FieldId, double *> FieldRangeHashmap;
634    typedef std::tr1::unordered_map<ColorMapId, ColorMap *> ColorMapHashmap;
635
636    typedef std::tr1::unordered_map<DataSetId, Arc *> ArcHashmap;
637    typedef std::tr1::unordered_map<DataSetId, Arrow *> ArrowHashmap;
638    typedef std::tr1::unordered_map<DataSetId, Box *> BoxHashmap;
639    typedef std::tr1::unordered_map<DataSetId, Cone *> ConeHashmap;
640    typedef std::tr1::unordered_map<DataSetId, Contour2D *> Contour2DHashmap;
641    typedef std::tr1::unordered_map<DataSetId, Contour3D *> Contour3DHashmap;
642    typedef std::tr1::unordered_map<DataSetId, Cutplane *> CutplaneHashmap;
643    typedef std::tr1::unordered_map<DataSetId, Cylinder *> CylinderHashmap;
644    typedef std::tr1::unordered_map<DataSetId, Disk *> DiskHashmap;
645    typedef std::tr1::unordered_map<DataSetId, Glyphs *> GlyphsHashmap;
646    typedef std::tr1::unordered_map<DataSetId, Group *> GroupHashmap;
647    typedef std::tr1::unordered_map<DataSetId, HeightMap *> HeightMapHashmap;
648    typedef std::tr1::unordered_map<DataSetId, LIC *> LICHashmap;
649    typedef std::tr1::unordered_map<DataSetId, Line *> LineHashmap;
650    typedef std::tr1::unordered_map<DataSetId, Molecule *> MoleculeHashmap;
651    typedef std::tr1::unordered_map<DataSetId, PolyData *> PolyDataHashmap;
652    typedef std::tr1::unordered_map<DataSetId, Polygon *> PolygonHashmap;
653    typedef std::tr1::unordered_map<DataSetId, PseudoColor *> PseudoColorHashmap;
654    typedef std::tr1::unordered_map<DataSetId, Sphere *> SphereHashmap;
655    typedef std::tr1::unordered_map<DataSetId, Streamlines *> StreamlinesHashmap;
656    typedef std::tr1::unordered_map<DataSetId, Volume *> VolumeHashmap;
657    typedef std::tr1::unordered_map<DataSetId, Warp *> WarpHashmap;
658
659    static void printCameraInfo(vtkCamera *camera);
660
661    static void setCameraFromMatrix(vtkCamera *camera, vtkMatrix4x4 &mat);
662
663    static void mergeBounds(double *boundsDest, const double *bounds1, const double *bounds2);
664
665    template<class GraphicsObject>
666    std::tr1::unordered_map<DataSetId, GraphicsObject *>&getGraphicsObjectHashmap();
667
668    void setObjectAspects(double aspectRatio);
669
670    void collectBounds(double *bounds, bool onlyVisible);
671
672    void collectUnscaledBounds(double *bounds, bool onlyVisible);
673
674    void collectDataRanges();
675
676    void collectDataRanges(double *range, const char *name,
677                           DataSet::DataAttributeType type,
678                           int component, bool onlyVisible);
679
680    void clearFieldRanges();
681
682    void initFieldRanges();
683
684    void updateFieldRanges();
685
686    void updateColorMap(ColorMap *cmap);
687
688    bool colorMapUsed(ColorMap *cmap);
689
690    void computeDisplayToWorld(double x, double y, double z, double worldPt[4]);
691
692    void computeWorldToDisplay(double x, double y, double z, double displayPt[3]);
693
694    void computeScreenWorldCoords();
695
696    bool is2D(const double bounds[6],
697              PrincipalPlane *plane,
698              double *offset) const;
699    void initCamera(bool initCameraMode = false);
700    void initAxes();
701    void resetAxes(double bounds[6] = NULL);
702    void setCameraClippingPlanes();
703
704    bool _needsRedraw;
705    int _windowWidth, _windowHeight;
706    CameraMode _cameraMode;
707    double _imgWorldOrigin[2];
708    double _imgWorldDims[2];
709    PrincipalPlane _imgCameraPlane;
710    double _imgCameraOffset;
711    double _screenWorldCoords[4];
712    double _cameraOrientation[4];
713    double _cameraZoomRatio;
714    double _cameraPan[2];
715    float _bgColor[3];
716    bool _useCumulativeRange;
717    bool _cumulativeRangeOnlyVisible;
718
719    FieldRangeHashmap _scalarPointDataRange;
720    FieldRangeHashmap _vectorPointDataRange;
721    FieldRangeHashmap _vectorCompPointDataRange[3];
722    FieldRangeHashmap _scalarCellDataRange;
723    FieldRangeHashmap _vectorCellDataRange;
724    FieldRangeHashmap _vectorCompCellDataRange[3];
725
726    ColorMapHashmap _colorMaps;
727    DataSetHashmap _dataSets;
728    ArcHashmap _arcs;
729    ArrowHashmap _arrows;
730    BoxHashmap _boxes;
731    ConeHashmap _cones;
732    Contour2DHashmap _contour2Ds;
733    Contour3DHashmap _contour3Ds;
734    CutplaneHashmap _cutplanes;
735    CylinderHashmap _cylinders;
736    DiskHashmap _disks;
737    GlyphsHashmap _glyphs;
738    GroupHashmap _groups;
739    HeightMapHashmap _heightMaps;
740    LICHashmap _lics;
741    LineHashmap _lines;
742    MoleculeHashmap _molecules;
743    PolyDataHashmap _polyDatas;
744    PolygonHashmap _polygons;
745    PseudoColorHashmap _pseudoColors;
746    SphereHashmap _spheres;
747    StreamlinesHashmap _streamlines;
748    VolumeHashmap _volumes;
749    WarpHashmap _warps;
750
751    vtkSmartPointer<vtkPlane> _cameraClipPlanes[4];
752    vtkSmartPointer<vtkPlane> _userClipPlanes[6];
753    vtkSmartPointer<vtkPlaneCollection> _activeClipPlanes;
754#ifdef USE_CUSTOM_AXES
755    vtkSmartPointer<vtkRpCubeAxesActor> _cubeAxesActor; // For 3D view
756    vtkSmartPointer<vtkRpCubeAxesActor2D> _cubeAxesActor2D; // For 2D view
757#else
758    vtkSmartPointer<vtkCubeAxesActor> _cubeAxesActor; // For 3D view
759#ifndef USE_VTK6
760    vtkSmartPointer<vtkCubeAxesActor2D> _cubeAxesActor2D; // For 2D view
761#endif
762#endif
763    vtkSmartPointer<vtkScalarBarActor> _scalarBarActor;
764    vtkSmartPointer<vtkRenderer> _renderer;
765    vtkSmartPointer<vtkRenderer> _legendRenderer;
766    vtkSmartPointer<vtkRenderWindow> _renderWindow;
767    vtkSmartPointer<vtkRenderWindow> _legendRenderWindow;
768};
769
770}
771}
772
773#endif
Note: See TracBrowser for help on using the repository browser.