source: branches/Rappture 1.2/packages/vizservers/vtkvis/RpVtkRenderer.h @ 3224

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

Add protocol to axes for toggling minor ticks, inner gridlines, inner grid
polygons/planes. Make contour2d/3d default to scalar color mode. Add color
mode to heightmap consistent with other objects: currently affects only
pseudocolor mesh portion of heightmap, not contour lines.

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