Isis Developer Reference
ChipViewport.h
Go to the documentation of this file.
1#ifndef ChipViewport_h
2#define ChipViewport_h
3
10/* SPDX-License-Identifier: CC0-1.0 */
11
12#include <QPaintEvent>
13#include <QResizeEvent>
14#include <QWidget>
15
16#include "Chip.h"
17#include "Histogram.h"
18#include "Stretch.h"
19
20class QImage;
21
22namespace Isis {
23 class ControlNet;
24 class CubeViewport;
25
71 class ChipViewport : public QWidget {
72 Q_OBJECT
73
74
75 public:
76 ChipViewport(int width, int height, QWidget *parent = 0);
77 virtual ~ChipViewport();
78
79 bool cubeToViewport(double samp, double line, int &x, int &y);
80
82 void setChip(Chip *chip, Cube *chipCube);
83
85 void loadView(ChipViewport &newView);
86
88 Chip *chip() const {
89 return m_chip;
90 };
91
92 Cube *chipCube() const {
93 return m_chipCube;
94 };
95
97 int chipSamples() const {
98 return m_chip->Samples();
99 };
100
102 int chipLines() const {
103 return m_chip->Lines();
104 };
105
107 int grayBand() const {
108 return m_gray.band;
109 };
110
112 double tackSample();
113 double tackLine();
114
116 double zoomFactor();
117
119 //void markPoint (double sample, double line);
120
123 return m_gray.stretch;
124 };
125
126
127 signals:
129 void tackPointChanged(double);
130
131 // TODO: This needs better name, tackPointChanged signal is emitted
132 // even if user does not initiate, maybe change tackPointChanged signal
133 // to only emit if user moves the tack point???
135
136
137 public slots:
138 void autoStretch();
140 void changeStretchLock(int);
141 void setPoints(bool checked);
142 void setCross(bool checked);
143 void rotateChip(int rotation);
144 void setCircle(bool checked);
145 void setCircleSize(int size);
146
147 void geomChip(Chip *matchChip, Cube *matchChipCube);
148 void nogeomChip();
149
150 void panUp();
151 void panDown();
152 void panLeft();
153 void panRight();
154
155 void zoomIn();
156 void zoomOut();
157 void zoom1();
158 void zoom(double zoomFactor);
159
160 void refreshView(double tackSample, double tackLine);
161
167 void setControlNet(ControlNet *newControlNet) {
168 m_controlNet = newControlNet;
169 }
170
171
172 protected:
173 void paintEvent(QPaintEvent *e);
174 void enterEvent(QEvent *e);
175 void keyPressEvent(QKeyEvent *e);
176 void mousePressEvent(QMouseEvent *event);
177
178
179 private:
180 void reloadChip(double tackSample = 0., double tackLine = 0.);
181
182 void computeStretch(Stretch &stretch, bool force = false);
183 void paintImage();
184
192 class BandInfo {
193 public:
194 int band;
195 Stretch stretch;
197 BandInfo() {
198 band = 1;
199 stretch.SetNull(0.0);
200 stretch.SetLis(0.0);
201 stretch.SetLrs(0.0);
202 stretch.SetHis(255.0);
203 stretch.SetHrs(255.0);
204 };
205 };
206
207 BandInfo m_gray;
208 Chip *m_chip;
209 Cube *m_chipCube;
210
211 int m_width;
212 int m_height;
213
214 bool m_geomIt;
215 Chip *m_matchChip;
216 Cube *m_matchChipCube;
217
218 double m_zoomFactor;
219 int m_rotation;
220
221 QImage *m_image;
222 bool m_paintImage;
223 bool m_showPoints;
224 bool m_cross;
225 bool m_circle;
226 int m_circleSize;
227
228 ChipViewport *m_tempView;
229
230 // The ControlNet pointed to by this pointer is not owned by this class!
231 // It is ok for m_controlNet to be NULL any time. If it is not NULL then
232 // it is used to paint measures in the viewport.
233 //
234 // After construction, it is the responsibility of the user of this class
235 // to maintain this pointer with the setControlNet method (to make sure
236 // that either NULL or a valid ControlNet is being pointed to).
237 ControlNet *m_controlNet;
238
239 bool m_stretchLocked;
240 Stretch *m_stretch;
241 };
242};
243
244#endif
A small chip of data used for pattern matching.
Definition Chip.h:86
int Samples() const
Definition Chip.h:99
int Lines() const
Definition Chip.h:106
Viewport for Isis Chips.
Definition ChipViewport.h:71
void loadView(ChipViewport &newView)
Load with another ChipViewport, used for blinking.
Definition ChipViewport.cpp:338
void setPoints(bool checked)
Slot to set whether control points are drawn.
Definition ChipViewport.cpp:552
void setCircle(bool checked)
Slot to change state of circle.
Definition ChipViewport.cpp:584
virtual ~ChipViewport()
Destructor.
Definition ChipViewport.cpp:65
void enterEvent(QEvent *e)
If mouse enters, make sure key events are processed w/o clicking.
Definition ChipViewport.cpp:482
void setControlNet(ControlNet *newControlNet)
sets the ControlNet to be used for drawing measure locations
Definition ChipViewport.h:167
Chip * chip() const
Return chip.
Definition ChipViewport.h:88
ChipViewport(int width, int height, QWidget *parent=0)
Construct an empty viewport.
Definition ChipViewport.cpp:33
double tackSample()
Return the position of cube under cross hair.
Definition ChipViewport.cpp:349
void zoomOut()
Zoom out.
Definition ChipViewport.cpp:430
double tackLine()
Returns tack line.
Definition ChipViewport.cpp:360
Cube * chipCube() const
Definition ChipViewport.h:92
void zoom(double zoomFactor)
Zoom by a specified factor.
Definition ChipViewport.cpp:450
void nogeomChip()
Slot to un-geom chip (revert geometry transformation)
Definition ChipViewport.cpp:645
void rotateChip(int rotation)
Slot to rotate chip.
Definition ChipViewport.cpp:673
double zoomFactor()
Return the zoom factor.
Definition ChipViewport.cpp:461
void paintEvent(QPaintEvent *e)
Repaint the viewport.
Definition ChipViewport.cpp:260
Stretch grayStretch() const
Draw X on point.
Definition ChipViewport.h:122
void panLeft()
Pan left.
Definition ChipViewport.cpp:395
int grayBand() const
Return the gray band currently viewed.
Definition ChipViewport.h:107
void panRight()
Pan right.
Definition ChipViewport.cpp:408
void panUp()
Pan up.
Definition ChipViewport.cpp:369
bool cubeToViewport(double samp, double line, int &x, int &y)
Get viewport x and y from cube sample and line.
Definition ChipViewport.cpp:83
void panDown()
Pan down.
Definition ChipViewport.cpp:382
void autoStretch()
Apply automatic stretch using data from entire chip.
Definition ChipViewport.cpp:133
void geomChip(Chip *matchChip, Cube *matchChipCube)
Slot to geom chip (apply geometry transformation)
Definition ChipViewport.cpp:617
void changeStretchLock(int)
Locks or unlocks the stretch on the chip viewport during transformations (zoom, pan,...
Definition ChipViewport.cpp:178
void setCircleSize(int size)
Set the size of the circle.
Definition ChipViewport.cpp:599
void stretchFromCubeViewport(Stretch *, CubeViewport *)
Applies a new stretch to the specified cube viewport.
Definition ChipViewport.cpp:146
void tackPointChanged(double)
< Signal sent when tack point changes
void zoomIn()
Zoom in.
Definition ChipViewport.cpp:421
int chipSamples() const
Return the number of samples in the chip.
Definition ChipViewport.h:97
void mousePressEvent(QMouseEvent *event)
Process mouse events.
Definition ChipViewport.cpp:530
void setCross(bool checked)
Slot to change state of crosshair.
Definition ChipViewport.cpp:568
void zoom1()
Zoom by a factor of one.
Definition ChipViewport.cpp:439
int chipLines() const
Return the number of lines in the chip.
Definition ChipViewport.h:102
void refreshView(double tackSample, double tackLine)
Slot to refresh viewport when the tack point has changed.
Definition ChipViewport.cpp:472
void keyPressEvent(QKeyEvent *e)
Process arrow keystrokes on cube.
Definition ChipViewport.cpp:492
void setChip(Chip *chip, Cube *chipCube)
Set chip.
Definition ChipViewport.cpp:108
a control network
Definition ControlNet.h:258
IO Handler for Isis Cubes.
Definition Cube.h:168
Widget to display Isis cubes for qt apps.
Definition CubeViewport.h:122
Pixel value mapper.
Definition Stretch.h:58
void SetNull(const double value)
Sets the mapping for NULL pixels.
Definition Stretch.h:94
void SetHrs(const double value)
Sets the mapping for HRS pixels.
Definition Stretch.h:138
void SetHis(const double value)
Sets the mapping for HIS pixels.
Definition Stretch.h:127
void SetLis(const double value)
Sets the mapping for LIS pixels.
Definition Stretch.h:105
void SetLrs(const double value)
Sets the mapping for LRS pixels.
Definition Stretch.h:116
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16