Isis 3 Programmer Reference
ChipViewport.h
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 
20 class QImage;
21 
22 namespace 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???
134  void userMovedTackPoint();
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;
196  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 
210 
211  int m_width;
212  int m_height;
213 
214  bool m_geomIt;
217 
218  double m_zoomFactor;
220 
221  QImage *m_image;
224  bool m_cross;
225  bool m_circle;
227 
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 
241  };
242 };
243 
244 #endif
Isis::ChipViewport::m_zoomFactor
double m_zoomFactor
Zoom Factor.
Definition: ChipViewport.h:218
Isis::ChipViewport::BandInfo::stretch
Stretch stretch
Stretch for the band BandInfo constructor.
Definition: ChipViewport.h:195
Isis::ChipViewport::m_paintImage
bool m_paintImage
Paint Image?
Definition: ChipViewport.h:222
Isis::ChipViewport::chipLines
int chipLines() const
Return the number of lines in the chip.
Definition: ChipViewport.h:102
Isis::ChipViewport::m_matchChip
Chip * m_matchChip
The matching chip.
Definition: ChipViewport.h:215
QWidget
Isis::ChipViewport::m_circleSize
int m_circleSize
Circle size.
Definition: ChipViewport.h:226
Isis::ChipViewport::zoom
void zoom(double zoomFactor)
Zoom by a specified factor.
Definition: ChipViewport.cpp:454
Isis::ChipViewport::enterEvent
void enterEvent(QEvent *e)
If mouse enters, make sure key events are processed w/o clicking.
Definition: ChipViewport.cpp:486
Isis::ChipViewport::setCircleSize
void setCircleSize(int size)
Set the size of the circle.
Definition: ChipViewport.cpp:603
Isis::ChipViewport::grayStretch
Stretch grayStretch() const
Draw X on point.
Definition: ChipViewport.h:122
Isis::ChipViewport::grayBand
int grayBand() const
Return the gray band currently viewed.
Definition: ChipViewport.h:107
Isis::ChipViewport::m_gray
BandInfo m_gray
Info for the gray bands.
Definition: ChipViewport.h:207
Isis::ChipViewport::zoomOut
void zoomOut()
Zoom out.
Definition: ChipViewport.cpp:434
Isis::Stretch::SetLis
void SetLis(const double value)
Sets the mapping for LIS pixels.
Definition: Stretch.h:105
Isis::Stretch
Pixel value mapper.
Definition: Stretch.h:58
Isis::ChipViewport::m_stretchLocked
bool m_stretchLocked
Whether or not to lock the stretch when transforming.
Definition: ChipViewport.h:239
Isis::ChipViewport::m_chipCube
Cube * m_chipCube
The chip's cube.
Definition: ChipViewport.h:209
Isis::ChipViewport::paintImage
void paintImage()
Paints the chip viewport after the chip has been updated.
Definition: ChipViewport.cpp:236
Isis::Stretch::SetHrs
void SetHrs(const double value)
Sets the mapping for HRS pixels.
Definition: Stretch.h:138
Isis::ChipViewport::setCross
void setCross(bool checked)
Slot to change state of crosshair.
Definition: ChipViewport.cpp:572
Isis::ChipViewport::tackSample
double tackSample()
Return the position of cube under cross hair.
Definition: ChipViewport.cpp:353
Isis::Stretch::SetLrs
void SetLrs(const double value)
Sets the mapping for LRS pixels.
Definition: Stretch.h:116
Isis::ChipViewport::m_image
QImage * m_image
The image.
Definition: ChipViewport.h:221
Isis::ChipViewport::tackLine
double tackLine()
Returns tack line.
Definition: ChipViewport.cpp:364
Isis::ChipViewport::BandInfo
Sets the mapping for gray band stretch.
Definition: ChipViewport.h:192
Isis::Stretch::SetHis
void SetHis(const double value)
Sets the mapping for HIS pixels.
Definition: Stretch.h:127
Isis::ChipViewport::m_showPoints
bool m_showPoints
Draw control points.
Definition: ChipViewport.h:223
Isis::ChipViewport::computeStretch
void computeStretch(Stretch &stretch, bool force=false)
Compute automatic stretch for a portion of the cube.
Definition: ChipViewport.cpp:197
Isis::ChipViewport::m_tempView
ChipViewport * m_tempView
Temporary viewport.
Definition: ChipViewport.h:228
Isis::ChipViewport::setControlNet
void setControlNet(ControlNet *newControlNet)
sets the ControlNet to be used for drawing measure locations
Definition: ChipViewport.h:167
Isis::ChipViewport::rotateChip
void rotateChip(int rotation)
Slot to rotate chip.
Definition: ChipViewport.cpp:677
Isis::Chip::Lines
int Lines() const
Definition: Chip.h:106
Isis::ChipViewport::m_height
int m_height
Chip height.
Definition: ChipViewport.h:212
Isis::ChipViewport::keyPressEvent
void keyPressEvent(QKeyEvent *e)
Process arrow keystrokes on cube.
Definition: ChipViewport.cpp:496
Isis::ChipViewport::m_geomIt
bool m_geomIt
geomIt?
Definition: ChipViewport.h:214
Isis::ChipViewport::refreshView
void refreshView(double tackSample, double tackLine)
Slot to refresh viewport when the tack point has changed.
Definition: ChipViewport.cpp:476
Isis::ChipViewport::~ChipViewport
virtual ~ChipViewport()
Destructor.
Definition: ChipViewport.cpp:67
Isis::ChipViewport::reloadChip
void reloadChip(double tackSample=0., double tackLine=0.)
Reloads the chip at the given tack point on the cube.
Definition: ChipViewport.cpp:707
Isis::ChipViewport::geomChip
void geomChip(Chip *matchChip, Cube *matchChipCube)
Slot to geom chip (apply geometry transformation)
Definition: ChipViewport.cpp:621
Isis::ChipViewport::paintEvent
void paintEvent(QPaintEvent *e)
Repaint the viewport.
Definition: ChipViewport.cpp:264
Isis::ChipViewport::m_matchChipCube
Cube * m_matchChipCube
The matching chip's cube.
Definition: ChipViewport.h:216
Isis::ChipViewport::zoomFactor
double zoomFactor()
Return the zoom factor.
Definition: ChipViewport.cpp:465
Isis::ChipViewport::m_circle
bool m_circle
Draw circle.
Definition: ChipViewport.h:225
Isis::ChipViewport::zoom1
void zoom1()
Zoom by a factor of one.
Definition: ChipViewport.cpp:443
Isis::ControlNet
a control network
Definition: ControlNet.h:257
Isis::Cube
IO Handler for Isis Cubes.
Definition: Cube.h:167
Isis::ChipViewport::m_stretch
Stretch * m_stretch
Current stretch on the chip viewport.
Definition: ChipViewport.h:240
Isis::CubeViewport
Widget to display Isis cubes for qt apps.
Definition: CubeViewport.h:122
Isis::ChipViewport::ChipViewport
ChipViewport(int width, int height, QWidget *parent=0)
Construct an empty viewport.
Definition: ChipViewport.cpp:35
Isis::ChipViewport::panLeft
void panLeft()
Pan left.
Definition: ChipViewport.cpp:399
Isis::ChipViewport
Viewport for Isis Chips.
Definition: ChipViewport.h:71
Isis::ChipViewport::autoStretch
void autoStretch()
Apply automatic stretch using data from entire chip.
Definition: ChipViewport.cpp:135
Isis::ChipViewport::panRight
void panRight()
Pan right.
Definition: ChipViewport.cpp:412
Isis::ChipViewport::setChip
void setChip(Chip *chip, Cube *chipCube)
Set chip.
Definition: ChipViewport.cpp:110
Isis::ChipViewport::mousePressEvent
void mousePressEvent(QMouseEvent *event)
Process mouse events.
Definition: ChipViewport.cpp:534
Isis::ChipViewport::tackPointChanged
void tackPointChanged(double)
< Signal sent when tack point changes
Isis::Stretch::SetNull
void SetNull(const double value)
Sets the mapping for NULL pixels.
Definition: Stretch.h:94
Isis::ChipViewport::changeStretchLock
void changeStretchLock(int)
Locks or unlocks the stretch on the chip viewport during transformations (zoom, pan,...
Definition: ChipViewport.cpp:182
Isis::ChipViewport::m_rotation
int m_rotation
Rotation.
Definition: ChipViewport.h:219
Isis::ChipViewport::BandInfo::band
int band
The gray band.
Definition: ChipViewport.h:194
Isis::Chip
A small chip of data used for pattern matching.
Definition: Chip.h:86
Isis::Chip::Samples
int Samples() const
Definition: Chip.h:99
Isis::ChipViewport::m_cross
bool m_cross
Draw crosshair.
Definition: ChipViewport.h:224
Isis::ChipViewport::chipSamples
int chipSamples() const
Return the number of samples in the chip.
Definition: ChipViewport.h:97
Isis::ChipViewport::setPoints
void setPoints(bool checked)
Slot to set whether control points are drawn.
Definition: ChipViewport.cpp:556
Isis::ChipViewport::setCircle
void setCircle(bool checked)
Slot to change state of circle.
Definition: ChipViewport.cpp:588
Isis::ChipViewport::chip
Chip * chip() const
Return chip.
Definition: ChipViewport.h:88
Isis::ChipViewport::loadView
void loadView(ChipViewport &newView)
Load with another ChipViewport, used for blinking.
Definition: ChipViewport.cpp:342
Isis::ChipViewport::zoomIn
void zoomIn()
Zoom in.
Definition: ChipViewport.cpp:425
Isis::ChipViewport::nogeomChip
void nogeomChip()
Slot to un-geom chip (revert geometry transformation)
Definition: ChipViewport.cpp:649
Isis::ChipViewport::stretchFromCubeViewport
void stretchFromCubeViewport(Stretch *, CubeViewport *)
Applies a new stretch to the specified cube viewport.
Definition: ChipViewport.cpp:148
Isis::ChipViewport::cubeToViewport
bool cubeToViewport(double samp, double line, int &x, int &y)
Get viewport x and y from cube sample and line.
Definition: ChipViewport.cpp:85
Isis::ChipViewport::panDown
void panDown()
Pan down.
Definition: ChipViewport.cpp:386
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::ChipViewport::m_chip
Chip * m_chip
The chip.
Definition: ChipViewport.h:208
Isis::ChipViewport::m_width
int m_width
Chip width.
Definition: ChipViewport.h:211
Isis::ChipViewport::panUp
void panUp()
Pan up.
Definition: ChipViewport.cpp:373