source: branches/blt4/packages/vizservers/vtkvis/RpVtkRenderer.h @ 2542

Last change on this file since 2542 was 2542, checked in by gah, 13 years ago

update from trunk

File size: 23.7 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright (C) 2011, Purdue Research Foundation
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 <vtkSmartPointer.h>
12#include <vtkCubeAxesActor.h>
13#ifdef USE_CUSTOM_AXES
14#include "vtkRpCubeAxesActor2D.h"
15#else
16#include <vtkCubeAxesActor2D.h>
17#endif
18#include <vtkScalarBarActor.h>
19#include <vtkRenderer.h>
20#include <vtkRenderWindow.h>
21#include <vtkUnsignedCharArray.h>
22
23#include <string>
24#include <vector>
25#include <tr1/unordered_map>
26
27#include "ColorMap.h"
28#include "RpVtkDataSet.h"
29#include "RpContour2D.h"
30#include "RpContour3D.h"
31#include "RpGlyphs.h"
32#include "RpHeightMap.h"
33#include "RpLIC.h"
34#include "RpMolecule.h"
35#include "RpPolyData.h"
36#include "RpPseudoColor.h"
37#include "RpStreamlines.h"
38#include "RpVolume.h"
39#include "Trace.h"
40
41// Controls if TGA format is sent to client
42//#define RENDER_TARGA
43#define TARGA_BYTES_PER_PIXEL 3
44
45namespace Rappture {
46namespace VtkVis {
47
48/**
49 * \brief VTK Renderer
50 */
51class Renderer
52{
53public:
54    Renderer();
55    virtual ~Renderer();
56
57    enum Axis {
58        X_AXIS,
59        Y_AXIS,
60        Z_AXIS
61    };
62
63    enum PrincipalPlane {
64        PLANE_XY,
65        PLANE_ZY,
66        PLANE_XZ
67    };
68
69    enum AxesFlyMode {
70        FLY_OUTER_EDGES = 0,
71        FLY_CLOSEST_TRIAD,
72        FLY_FURTHEST_TRIAD,
73        FLY_STATIC_EDGES,
74        FLY_STATIC_TRIAD
75    };
76
77    enum AxesTickPosition {
78        TICKS_INSIDE,
79        TICKS_OUTSIDE,
80        TICKS_BOTH
81    };
82
83    enum CameraMode {
84        PERSPECTIVE,
85        ORTHO,
86        IMAGE
87    };
88
89    enum LegendType {
90        ACTIVE_SCALAR,
91        ACTIVE_VECTOR_MAGNITUDE,
92        ACTIVE_VECTOR_X,
93        ACTIVE_VECTOR_Y,
94        ACTIVE_VECTOR_Z
95    };
96
97    typedef std::string DataSetId;
98    typedef std::string ColorMapId;
99    typedef std::tr1::unordered_map<DataSetId, DataSet *> DataSetHashmap;
100    typedef std::tr1::unordered_map<ColorMapId, ColorMap *> ColorMapHashmap;
101    typedef std::tr1::unordered_map<DataSetId, Contour2D *> Contour2DHashmap;
102    typedef std::tr1::unordered_map<DataSetId, Contour3D *> Contour3DHashmap;
103    typedef std::tr1::unordered_map<DataSetId, Glyphs *> GlyphsHashmap;
104    typedef std::tr1::unordered_map<DataSetId, HeightMap *> HeightMapHashmap;
105    typedef std::tr1::unordered_map<DataSetId, LIC *> LICHashmap;
106    typedef std::tr1::unordered_map<DataSetId, Molecule *> MoleculeHashmap;
107    typedef std::tr1::unordered_map<DataSetId, PolyData *> PolyDataHashmap;
108    typedef std::tr1::unordered_map<DataSetId, PseudoColor *> PseudoColorHashmap;
109    typedef std::tr1::unordered_map<DataSetId, Streamlines *> StreamlinesHashmap;
110    typedef std::tr1::unordered_map<DataSetId, Volume *> VolumeHashmap;
111
112    // Data sets
113
114    void addDataSet(const DataSetId& id);
115
116    void deleteDataSet(const DataSetId& id);
117
118    DataSet *getDataSet(const DataSetId& id);
119
120    void getDataSetNames(std::vector<std::string>& names);
121
122    bool setData(const DataSetId& id, char *data, int nbytes);
123
124    bool setDataFile(const DataSetId& id, const char *filename);
125
126    bool setDataSetActiveScalars(const DataSetId& id, const char *scalarName);
127
128    bool setDataSetActiveVectors(const DataSetId& id, const char *vectorName);
129
130    bool getScalarValueAtPixel(const DataSetId& id, int x, int y, double *value);
131
132    bool getScalarValue(const DataSetId& id, double x, double y, double z, double *value);
133
134    bool getVectorValueAtPixel(const DataSetId& id, int x, int y, double vector[3]);
135
136    bool getVectorValue(const DataSetId& id, double x, double y, double z, double vector[3]);
137
138    void setDataSetShowBounds(const DataSetId& id, bool state);
139
140    void setDataSetOutlineColor(const DataSetId& id, float color[3]);
141
142    void setDataSetOpacity(const DataSetId& id, double opacity);
143
144    void setDataSetVisibility(const DataSetId& id, bool state);
145
146    void setUseCumulativeDataRange(bool state, bool onlyVisible = false);
147
148    // Render window
149
150    /// Get the VTK render window object this Renderer uses
151    vtkRenderWindow *getRenderWindow()
152    {
153        return _renderWindow;
154    }
155
156    void setWindowSize(int width, int height);
157
158    int getWindowWidth() const;
159
160    int getWindowHeight() const;
161
162    // Camera controls
163
164    void setViewAngle(int height);
165
166    void setCameraMode(CameraMode mode);
167
168    CameraMode getCameraMode() const;
169
170    void resetCamera(bool resetOrientation = true);
171
172    void resetCameraClippingRange();
173
174    void setCameraZoomRegionPixels(int x, int y, int width, int height);
175
176    void setCameraZoomRegion(double x, double y, double width, double height);
177
178    void getCameraZoomRegion(double xywh[4]) const;
179
180    void getScreenWorldCoords(double xywh[4]) const;
181
182    void rotateCamera(double yaw, double pitch, double roll);
183
184    void setCameraOrientation(const double quat[4], bool absolute = true);
185
186    void panCamera(double x, double y, bool absolute = true);
187
188    void zoomCamera(double z, bool absolute = true);
189
190    void setCameraOrientationAndPosition(const double position[3],
191                                         const double focalPoint[3],
192                                         const double viewUp[3]);
193
194    void getCameraOrientationAndPosition(double position[3],
195                                         double focalPoint[3],
196                                         double viewUp[3]);
197
198    // Rendering an image
199
200    void setBackgroundColor(float color[3]);
201
202    void setClipPlane(Axis axis, double ratio, int direction);
203
204    void setUseTwoSidedLighting(bool state);
205
206    void setUseDepthPeeling(bool state);
207
208    void eventuallyRender();
209
210    bool render();
211
212    void getRenderedFrame(vtkUnsignedCharArray *imgData);
213
214    // Axes
215
216    void setAxesFlyMode(AxesFlyMode mode);
217
218    void setAxesVisibility(bool state);
219
220    void setAxesGridVisibility(bool state);
221
222    void setAxesLabelVisibility(bool state);
223
224    void setAxesTickVisibility(bool state);
225
226    void setAxesTickPosition(AxesTickPosition pos);
227
228    void setAxesColor(double color[3]);
229
230    void setAxisVisibility(Axis axis, bool state);
231
232    void setAxisGridVisibility(Axis axis, bool state);
233
234    void setAxisLabelVisibility(Axis axis, bool state);
235
236    void setAxisTickVisibility(Axis axis, bool state);
237
238    void setAxisTitle(Axis axis, const char *title);
239
240    void setAxisUnits(Axis axis, const char *units);
241
242    // Colormaps
243
244    void addColorMap(const ColorMapId& id, ColorMap *colorMap);
245
246    void deleteColorMap(const ColorMapId& id);
247
248    ColorMap *getColorMap(const ColorMapId& id);
249
250    bool renderColorMap(const ColorMapId& id,
251                        const DataSetId& dataSetID,
252                        LegendType legendType,
253                        std::string& title,
254                        double range[2],
255                        int width, int height,
256                        int numLabels,
257                        vtkUnsignedCharArray *imgData);
258
259    // 2D Contour plots
260
261    bool addContour2D(const DataSetId& id, int numContours);
262
263    bool addContour2D(const DataSetId& id, const std::vector<double>& contours);
264
265    void deleteContour2D(const DataSetId& id);
266
267    Contour2D *getContour2D(const DataSetId& id);
268
269    void setContour2DTransform(const DataSetId& id, vtkMatrix4x4 *trans);
270
271    void setContour2DOrientation(const DataSetId& id, double quat[4]);
272
273    void setContour2DOrientation(const DataSetId& id, double angle, double axis[3]);
274
275    void setContour2DPosition(const DataSetId& id, double pos[3]);
276
277    void setContour2DScale(const DataSetId& id, double scale[3]);
278
279    void setContour2DColor(const DataSetId& id, float color[3]);
280
281    void setContour2DEdgeWidth(const DataSetId& id, float edgeWidth);
282
283    void setContour2DLighting(const DataSetId& id, bool state);
284   
285    void setContour2DOpacity(const DataSetId& id, double opacity);
286
287    void setContour2DVisibility(const DataSetId& id, bool state);
288
289    void setContour2DContours(const DataSetId& id, int numContours);
290
291    void setContour2DContourList(const DataSetId& id, const std::vector<double>& contours);
292
293    // 3D Contour (isosurface) plots
294
295    bool addContour3D(const DataSetId& id, int numContours);
296
297    bool addContour3D(const DataSetId& id, const std::vector<double>& contours);
298
299    void deleteContour3D(const DataSetId& id);
300
301    Contour3D *getContour3D(const DataSetId& id);
302
303    void setContour3DTransform(const DataSetId& id, vtkMatrix4x4 *trans);
304
305    void setContour3DOrientation(const DataSetId& id, double quat[4]);
306
307    void setContour3DOrientation(const DataSetId& id, double angle, double axis[3]);
308
309    void setContour3DPosition(const DataSetId& id, double pos[3]);
310
311    void setContour3DScale(const DataSetId& id, double scale[3]);
312
313    void setContour3DColor(const DataSetId& id, float color[3]);
314
315    void setContour3DEdgeVisibility(const DataSetId& id, bool state);
316
317    void setContour3DEdgeColor(const DataSetId& id, float color[3]);
318
319    void setContour3DEdgeWidth(const DataSetId& id, float edgeWidth);
320
321    void setContour3DLighting(const DataSetId& id, bool state);
322
323    void setContour3DOpacity(const DataSetId& id, double opacity);
324
325    void setContour3DVisibility(const DataSetId& id, bool state);
326
327    void setContour3DWireframe(const DataSetId& id, bool state);
328
329    void setContour3DContours(const DataSetId& id, int numContours);
330
331    void setContour3DContourList(const DataSetId& id, const std::vector<double>& contours);
332
333    void setContour3DColorMap(const DataSetId& id, const ColorMapId& colorMapId);
334
335    // Glyphs
336
337    bool addGlyphs(const DataSetId& id, Glyphs::GlyphShape shape);
338
339    void deleteGlyphs(const DataSetId& id);
340
341    Glyphs *getGlyphs(const DataSetId& id);
342
343    void setGlyphsTransform(const DataSetId& id, vtkMatrix4x4 *trans);
344
345    void setGlyphsOrientation(const DataSetId& id, double quat[4]);
346
347    void setGlyphsOrientation(const DataSetId& id, double angle, double axis[3]);
348
349    void setGlyphsPosition(const DataSetId& id, double pos[3]);
350
351    void setGlyphsScale(const DataSetId& id, double scale[3]);
352
353    void setGlyphsColor(const DataSetId& id, float color[3]);
354
355    void setGlyphsEdgeVisibility(const DataSetId& id, bool state);
356
357    void setGlyphsEdgeColor(const DataSetId& id, float color[3]);
358
359    void setGlyphsEdgeWidth(const DataSetId& id, float edgeWidth);
360
361    void setGlyphsLighting(const DataSetId& id, bool state);
362
363    void setGlyphsOpacity(const DataSetId& id, double opacity);
364
365    void setGlyphsVisibility(const DataSetId& id, bool state);
366
367    void setGlyphsWireframe(const DataSetId& id, bool state);
368
369    void setGlyphsColorMap(const DataSetId& id, const ColorMapId& colorMapId);
370
371    void setGlyphsShape(const DataSetId& id, Glyphs::GlyphShape shape);
372
373    void setGlyphsColorMode(const DataSetId& id, Glyphs::ColorMode mode);
374
375    void setGlyphsScalingMode(const DataSetId& id, Glyphs::ScalingMode mode);
376
377    void setGlyphsNormalizeScale(const DataSetId& id, bool normalize);
378
379    void setGlyphsScaleFactor(const DataSetId& id, double scale);
380
381    // Height maps
382
383    bool addHeightMap(const DataSetId& id, int numContours, double heightScale);
384
385    bool addHeightMap(const DataSetId& id, const std::vector<double>& contours, double heightScale);
386
387    void deleteHeightMap(const DataSetId& id);
388
389    HeightMap *getHeightMap(const DataSetId& id);
390
391    void setHeightMapTransform(const DataSetId& id, vtkMatrix4x4 *trans);
392
393    void setHeightMapOrientation(const DataSetId& id, double quat[4]);
394
395    void setHeightMapOrientation(const DataSetId& id, double angle, double axis[3]);
396
397    void setHeightMapPosition(const DataSetId& id, double pos[3]);
398
399    void setHeightMapScale(const DataSetId& id, double scale[3]);
400   
401    void setHeightMapEdgeVisibility(const DataSetId& id, bool state);
402
403    void setHeightMapEdgeColor(const DataSetId& id, float color[3]);
404
405    void setHeightMapEdgeWidth(const DataSetId& id, float edgeWidth);
406
407    void setHeightMapLighting(const DataSetId& id, bool state);
408
409    void setHeightMapOpacity(const DataSetId& id, double opacity);
410
411    void setHeightMapVisibility(const DataSetId& id, bool state);
412
413    void setHeightMapWireframe(const DataSetId& id, bool state);
414
415    void setHeightMapVolumeSlice(const DataSetId& id, HeightMap::Axis axis, double ratio);
416
417    void setHeightMapHeightScale(const DataSetId& id, double scale);
418
419    void setHeightMapColorMap(const DataSetId& id, const ColorMapId& colorMapId);
420
421    void setHeightMapNumContours(const DataSetId& id, int numContours);
422
423    void setHeightMapContourList(const DataSetId& id, const std::vector<double>& contours);
424
425    void setHeightMapContourSurfaceVisibility(const DataSetId& id, bool state);
426
427    void setHeightMapContourLineVisibility(const DataSetId& id, bool state);
428
429    void setHeightMapContourEdgeColor(const DataSetId& id, float color[3]);
430
431    void setHeightMapContourEdgeWidth(const DataSetId& id, float edgeWidth);
432
433    // LIC plots
434
435    bool addLIC(const DataSetId& id);
436   
437    void deleteLIC(const DataSetId& id);
438
439    LIC *getLIC(const DataSetId& id);
440
441    void setLICTransform(const DataSetId& id, vtkMatrix4x4 *trans);
442
443    void setLICOrientation(const DataSetId& id, double quat[4]);
444
445    void setLICOrientation(const DataSetId& id, double angle, double axis[3]);
446
447    void setLICPosition(const DataSetId& id, double pos[3]);
448
449    void setLICScale(const DataSetId& id, double scale[3]);
450
451    void setLICEdgeVisibility(const DataSetId& id, bool state);
452   
453    void setLICEdgeColor(const DataSetId& id, float color[3]);
454
455    void setLICEdgeWidth(const DataSetId& id, float edgeWidth);
456
457    void setLICLighting(const DataSetId& id, bool state);
458
459    void setLICOpacity(const DataSetId& id, double opacity);
460
461    void setLICVisibility(const DataSetId& id, bool state);
462
463    void setLICVolumeSlice(const DataSetId& id, LIC::Axis axis, double ratio);
464
465    void setLICColorMap(const DataSetId& id, const ColorMapId& colorMapId);
466
467    // Molecules
468
469    bool addMolecule(const DataSetId& id);
470   
471    void deleteMolecule(const DataSetId& id);
472
473    Molecule *getMolecule(const DataSetId& id);
474
475    void setMoleculeTransform(const DataSetId& id, vtkMatrix4x4 *trans);
476
477    void setMoleculeOrientation(const DataSetId& id, double quat[4]);
478
479    void setMoleculeOrientation(const DataSetId& id, double angle, double axis[3]);
480
481    void setMoleculePosition(const DataSetId& id, double pos[3]);
482
483    void setMoleculeScale(const DataSetId& id, double scale[3]);
484   
485    void setMoleculeEdgeVisibility(const DataSetId& id, bool state);
486
487    void setMoleculeEdgeColor(const DataSetId& id, float color[3]);
488
489    void setMoleculeEdgeWidth(const DataSetId& id, float edgeWidth);
490
491    void setMoleculeLighting(const DataSetId& id, bool state);
492
493    void setMoleculeOpacity(const DataSetId& id, double opacity);
494
495    void setMoleculeVisibility(const DataSetId& id, bool state);
496
497    void setMoleculeWireframe(const DataSetId& id, bool state);
498
499    void setMoleculeColorMap(const DataSetId& id, const ColorMapId& colorMapId);
500
501    void setMoleculeAtomScaling(const DataSetId& id, Molecule::AtomScaling scaling);
502
503    void setMoleculeAtomVisibility(const DataSetId& id, bool state);
504
505    void setMoleculeBondVisibility(const DataSetId& id, bool state);
506
507    // PolyData Meshes
508
509    bool addPolyData(const DataSetId& id);
510   
511    void deletePolyData(const DataSetId& id);
512
513    PolyData *getPolyData(const DataSetId& id);
514
515    void setPolyDataTransform(const DataSetId& id, vtkMatrix4x4 *trans);
516
517    void setPolyDataOrientation(const DataSetId& id, double quat[4]);
518
519    void setPolyDataOrientation(const DataSetId& id, double angle, double axis[3]);
520
521    void setPolyDataPosition(const DataSetId& id, double pos[3]);
522
523    void setPolyDataScale(const DataSetId& id, double scale[3]);
524
525    void setPolyDataColor(const DataSetId& id, float color[3]);
526
527    void setPolyDataEdgeVisibility(const DataSetId& id, bool state);
528
529    void setPolyDataEdgeColor(const DataSetId& id, float color[3]);
530
531    void setPolyDataEdgeWidth(const DataSetId& id, float edgeWidth);
532
533    void setPolyDataPointSize(const DataSetId& id, float size);
534
535    void setPolyDataLighting(const DataSetId& id, bool state);
536
537    void setPolyDataOpacity(const DataSetId& id, double opacity);
538
539    void setPolyDataVisibility(const DataSetId& id, bool state);
540
541    void setPolyDataWireframe(const DataSetId& id, bool state);
542
543    // Color-mapped surfaces
544
545    bool addPseudoColor(const DataSetId& id);
546
547    void deletePseudoColor(const DataSetId& id);
548
549    PseudoColor *getPseudoColor(const DataSetId& id);
550
551    void setPseudoColorTransform(const DataSetId& id, vtkMatrix4x4 *trans);
552
553    void setPseudoColorOrientation(const DataSetId& id, double quat[4]);
554
555    void setPseudoColorOrientation(const DataSetId& id, double angle, double axis[3]);
556
557    void setPseudoColorPosition(const DataSetId& id, double pos[3]);
558
559    void setPseudoColorScale(const DataSetId& id, double scale[3]);
560
561    void setPseudoColorColor(const DataSetId& id, float color[3]);
562
563    void setPseudoColorEdgeVisibility(const DataSetId& id, bool state);
564
565    void setPseudoColorEdgeColor(const DataSetId& id, float color[3]);
566
567    void setPseudoColorEdgeWidth(const DataSetId& id, float edgeWidth);
568
569    void setPseudoColorLighting(const DataSetId& id, bool state);
570   
571    void setPseudoColorOpacity(const DataSetId& id, double opacity);
572
573    void setPseudoColorVisibility(const DataSetId& id, bool state);
574
575    void setPseudoColorWireframe(const DataSetId& id, bool state);
576
577    void setPseudoColorColorMap(const DataSetId& id, const ColorMapId& colorMapId);
578
579    void setPseudoColorColorMode(const DataSetId& id, PseudoColor::ColorMode mode);
580
581    // Streamlines
582
583    bool addStreamlines(const DataSetId& id);
584
585    void deleteStreamlines(const DataSetId& id);
586
587    Streamlines *getStreamlines(const DataSetId& id);
588
589    void setStreamlinesTransform(const DataSetId& id, vtkMatrix4x4 *trans);
590
591    void setStreamlinesOrientation(const DataSetId& id, double quat[4]);
592
593    void setStreamlinesOrientation(const DataSetId& id, double angle, double axis[3]);
594
595    void setStreamlinesPosition(const DataSetId& id, double pos[3]);
596
597    void setStreamlinesScale(const DataSetId& id, double scale[3]);
598
599    void setStreamlinesColor(const DataSetId& id, float color[3]);
600
601    void setStreamlinesEdgeVisibility(const DataSetId& id, bool state);
602
603    void setStreamlinesEdgeColor(const DataSetId& id, float color[3]);
604
605    void setStreamlinesEdgeWidth(const DataSetId& id, float edgeWidth);
606
607    void setStreamlinesLighting(const DataSetId& id, bool state);
608
609    void setStreamlinesOpacity(const DataSetId& id, double opacity);
610
611    void setStreamlinesVisibility(const DataSetId& id, bool state);
612
613    void setStreamlinesSeedToRandomPoints(const DataSetId& id, int numPoints);
614
615    void setStreamlinesSeedToRake(const DataSetId& id,
616                                  double start[3], double end[3],
617                                  int numPoints);
618
619    void setStreamlinesSeedToDisk(const DataSetId& id,
620                                  double center[3], double normal[3],
621                                  double radius, double innerRadius,
622                                  int numPoints);
623
624    void setStreamlinesSeedToPolygon(const DataSetId& id,
625                                     double center[3], double normal[3],
626                                     double angle, double radius,
627                                     int numSides);
628
629    void setStreamlinesSeedToFilledPolygon(const DataSetId& id,
630                                           double center[3], double normal[3],
631                                           double angle, double radius,
632                                           int numSides, int numPoints);
633
634    void setStreamlinesLength(const DataSetId& id, double length);
635
636    void setStreamlinesTypeToLines(const DataSetId& id);
637
638    void setStreamlinesTypeToTubes(const DataSetId& id, int numSides, double radius);
639
640    void setStreamlinesTypeToRibbons(const DataSetId& id, double width, double angle);
641
642    void setStreamlinesSeedVisibility(const DataSetId& id, bool state);
643
644    void setStreamlinesColorMode(const DataSetId& id, Streamlines::ColorMode mode);
645
646    void setStreamlinesColorMap(const DataSetId& id, const ColorMapId& colorMapId);
647
648    void setStreamlinesSeedColor(const DataSetId& id, float color[3]);
649
650    // Volumes
651
652    bool addVolume(const DataSetId& id);
653
654    void deleteVolume(const DataSetId& id);
655
656    Volume *getVolume(const DataSetId& id);
657
658    void setVolumeTransform(const DataSetId& id, vtkMatrix4x4 *trans);
659
660    void setVolumeOrientation(const DataSetId& id, double quat[4]);
661
662    void setVolumeOrientation(const DataSetId& id, double angle, double axis[3]);
663
664    void setVolumePosition(const DataSetId& id, double pos[3]);
665
666    void setVolumeScale(const DataSetId& id, double scale[3]);
667
668    void setVolumeAmbient(const DataSetId& id, double coeff);
669
670    void setVolumeDiffuse(const DataSetId& id, double coeff);
671
672    void setVolumeSpecular(const DataSetId& id, double coeff, double power);
673
674    void setVolumeLighting(const DataSetId& id, bool state);
675   
676    void setVolumeOpacity(const DataSetId& id, double opacity);
677
678    void setVolumeVisibility(const DataSetId& id, bool state);
679
680    void setVolumeColorMap(const DataSetId& id, const ColorMapId& colorMapId);
681
682private:
683    static void printCameraInfo(vtkCamera *camera);
684    static inline double min2(double a, double b)
685    {
686        return ((a < b) ? a : b);
687    }
688    static inline double max2(double a, double b)
689    {
690        return ((a > b) ? a : b);
691    }
692    static void mergeBounds(double *boundsDest, const double *bounds1, const double *bounds2);
693
694    void collectBounds(double *bounds, bool onlyVisible);
695
696    void collectDataRanges();
697
698    void collectScalarRanges(double *range, bool onlyVisible);
699
700    void collectVectorMagnitudeRanges(double *range, bool onlyVisible);
701
702    void collectVectorComponentRanges(double *range, int component, bool onlyVisible);
703
704    void updateRanges();
705
706    void updateColorMap(ColorMap *cmap);
707
708    bool colorMapUsed(ColorMap *cmap);
709
710    void setCameraFromMatrix(vtkCamera *camera, vtkMatrix4x4 &mat);
711
712    void computeDisplayToWorld(double x, double y, double z, double worldPt[4]);
713
714    void computeWorldToDisplay(double x, double y, double z, double displayPt[3]);
715
716    void computeScreenWorldCoords();
717
718    bool is2D(const double bounds[6],
719              PrincipalPlane *plane,
720              double *offset) const;
721    void initCamera();
722    void initAxes();
723    void resetAxes(double bounds[6] = NULL);
724    void setCameraClippingPlanes();
725
726    bool _needsRedraw;
727    int _windowWidth, _windowHeight;
728    double _imgWorldOrigin[2];
729    double _imgWorldDims[2];
730    PrincipalPlane _imgCameraPlane;
731    double _imgCameraOffset;
732    double _screenWorldCoords[4];
733    double _cameraOrientation[4];
734    double _cameraZoomRatio;
735    double _cameraPan[2];
736    float _bgColor[3];
737    bool _useCumulativeRange;
738    bool _cumulativeRangeOnlyVisible;
739    double _cumulativeScalarRange[2];
740    double _cumulativeVectorMagnitudeRange[2];
741    double _cumulativeVectorComponentRange[3][2];
742
743    ColorMapHashmap _colorMaps;
744    DataSetHashmap _dataSets;
745    Contour2DHashmap _contour2Ds;
746    Contour3DHashmap _contour3Ds;
747    GlyphsHashmap _glyphs;
748    HeightMapHashmap _heightMaps;
749    LICHashmap _lics;
750    MoleculeHashmap _molecules;
751    PolyDataHashmap _polyDatas;
752    PseudoColorHashmap _pseudoColors;
753    StreamlinesHashmap _streamlines;
754    VolumeHashmap _volumes;
755
756    CameraMode _cameraMode;
757
758    vtkSmartPointer<vtkPlane> _cameraClipPlanes[4];
759    vtkSmartPointer<vtkPlane> _userClipPlanes[6];
760    vtkSmartPointer<vtkPlaneCollection> _activeClipPlanes;
761    vtkSmartPointer<vtkCubeAxesActor> _cubeAxesActor; // For 3D view
762#ifdef USE_CUSTOM_AXES
763    vtkSmartPointer<vtkRpCubeAxesActor2D> _cubeAxesActor2D; // For 2D view
764#else
765    vtkSmartPointer<vtkCubeAxesActor2D> _cubeAxesActor2D; // For 2D view
766#endif
767    vtkSmartPointer<vtkScalarBarActor> _scalarBarActor;
768    vtkSmartPointer<vtkRenderer> _renderer;
769    vtkSmartPointer<vtkRenderer> _legendRenderer;
770    vtkSmartPointer<vtkRenderWindow> _renderWindow;
771    vtkSmartPointer<vtkRenderWindow> _legendRenderWindow;
772};
773
774}
775}
776
777#endif
Note: See TracBrowser for help on using the repository browser.