source: trunk/packages/vizservers/vtkvis/Image.h @ 3991

Last change on this file since 3991 was 3991, checked in by ldelgass, 11 years ago

Add debugging of window/level

  • Property svn:eol-style set to native
File size: 4.4 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright (C) 2004-2013  HUBzero Foundation, LLC
4 *
5 * Author: Leif Delgass <ldelgass@purdue.edu>
6 */
7
8#ifndef VTKVIS_IMAGE_H
9#define VTKVIS_IMAGE_H
10
11#include <vtkSmartPointer.h>
12#include <vtkImageSlice.h>
13#include <vtkImageActor.h>
14#include <vtkImageMapper3D.h>
15#include <vtkImageResliceMapper.h>
16#include <vtkImageSliceMapper.h>
17#include <vtkLookupTable.h>
18#include <vtkPlaneCollection.h>
19
20#include "ColorMap.h"
21#include "GraphicsObject.h"
22#include "DataSet.h"
23#include "Trace.h"
24
25namespace VtkVis {
26
27/**
28 * \brief Image Slicer
29 *
30 */
31class Image : public GraphicsObject
32{
33public:
34    Image();
35    virtual ~Image();
36
37    virtual const char *getClassName() const
38    {
39        return "Image";
40    }
41
42    virtual void initProp();
43
44    virtual void setColor(float color[3]);
45
46    virtual void setClippingPlanes(vtkPlaneCollection *planes);
47
48    void updateColorMap()
49    {
50        setColorMap(_colorMap);
51    }
52
53    void setColorMap(ColorMap *cmap);
54
55    ColorMap *getColorMap()
56    {
57        return _colorMap;
58    }
59
60    void setExtents(int extent[6])
61    {
62        vtkImageActor *actor = getImageActor();
63        if (actor == NULL)
64            return;
65
66        actor->SetDisplayExtent(extent);
67    }
68
69    void setZSlice(int z)
70    {
71        vtkImageActor *actor = getImageActor();
72        if (actor == NULL)
73            return;
74
75        TRACE("before slice # %d, (%d,%d), whole z: (%d,%d)",
76              actor->GetSliceNumber(), actor->GetSliceNumberMin(), actor->GetSliceNumberMax(),
77              actor->GetZSlice(), actor->GetWholeZMin(), actor->GetWholeZMax());
78
79        actor->SetZSlice(z);
80
81        TRACE("after slice # %d, (%d,%d), whole z: (%d,%d)",
82              actor->GetSliceNumber(), actor->GetSliceNumberMin(), actor->GetSliceNumberMax(),
83              actor->GetZSlice(), actor->GetWholeZMin(), actor->GetWholeZMax());
84    }
85
86    double getWindow()
87    {
88        vtkImageProperty *property = getImageProperty();
89        if (property == NULL)
90            return 0.0;
91
92        return property->GetColorWindow();
93    }
94
95    void setWindow(double window)
96    {
97        vtkImageProperty *property = getImageProperty();
98        if (property == NULL)
99            return;
100
101        property->SetColorWindow(window);
102    }
103
104    double getLevel()
105    {
106        vtkImageProperty *property = getImageProperty();
107        if (property == NULL)
108            return 0.0;
109
110        return property->GetColorLevel();
111    }
112
113    void setLevel(double level)
114    {
115        vtkImageProperty *property = getImageProperty();
116        if (property == NULL)
117            return;
118
119        property->SetColorLevel(level);
120    }
121
122    void setWindowAndLevel(double window, double level)
123    {
124        vtkImageProperty *property = getImageProperty();
125        if (property == NULL)
126            return;
127
128        property->SetColorWindow(window);
129        property->SetColorLevel(level);
130    }
131
132    void setBacking(bool state)
133    {
134        vtkImageProperty *property = getImageProperty();
135        if (property == NULL)
136            return;
137
138        property->SetBacking((state ? 1 : 0));
139    }
140
141    void setBorder(bool state)
142    {
143        vtkImageMapper3D *mapper = getImageMapper();
144        if (mapper == NULL)
145            return;
146
147        mapper->SetBorder((state ? 1 : 0));
148    }
149
150    void setBackground(bool state)
151    {
152        vtkImageMapper3D *mapper = getImageMapper();
153        if (mapper == NULL)
154            return;
155
156        mapper->SetBackground((state ? 1 : 0));
157    }
158
159private:
160    virtual void update();
161
162    vtkImageProperty *getImageProperty()
163    {
164        if (getImageSlice() != NULL) {
165            return getImageSlice()->GetProperty();
166        } else {
167            return NULL;
168        }
169    }
170
171    vtkImageMapper3D *getImageMapper()
172    {
173        if (getImageSlice() != NULL) {
174            return getImageSlice()->GetMapper();
175        } else {
176            return NULL;
177        }
178    }
179
180    vtkImageResliceMapper *getImageResliceMapper()
181    {
182        if (getImageSlice() != NULL) {
183            return vtkImageResliceMapper::SafeDownCast(getImageSlice()->GetMapper());
184        } else {
185            return NULL;
186        }
187    }
188
189    vtkImageSliceMapper *getImageSliceMapper()
190    {
191        if (getImageSlice() != NULL) {
192            return vtkImageSliceMapper::SafeDownCast(getImageSlice()->GetMapper());
193        } else {
194            return NULL;
195        }
196    }
197
198    ColorMap *_colorMap;
199
200    vtkSmartPointer<vtkLookupTable> _lut;
201};
202
203}
204
205#endif
Note: See TracBrowser for help on using the repository browser.