File failed to load: https://isis.astrogeology.usgs.gov/6.0.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
ChipViewport.cpp
1 
7 /* SPDX-License-Identifier: CC0-1.0 */
8 
9 #include "IsisDebug.h"
10 
11 #include "ChipViewport.h"
12 
13 #include <iostream>
14 
15 #include <QMessageBox>
16 #include <QPainter>
17 
18 #include "ControlMeasure.h"
19 #include "ControlNet.h"
20 #include "ControlPoint.h"
21 #include "Cube.h"
22 #include "CubeViewport.h"
23 #include "SerialNumber.h"
24 #include "Stretch.h"
25 
26 namespace Isis {
27 
35  ChipViewport::ChipViewport(int width, int height, QWidget *parent) : QWidget(parent) {
36 
37  setFixedSize(width, height);
38  setBackgroundRole(QPalette::Dark);
39 // setFocusPolicy(Qt::StrongFocus);
40 
41  m_width = width;
42  m_height = height;
43  m_zoomFactor = 1.0;
44  m_rotation = 0;
45  m_geomIt = false;
46  m_tempView = NULL;
47  m_cross = true;
48  m_circle = false;
49  m_chip = NULL;
50  m_chipCube = NULL;
51  m_matchChip = NULL;
52  m_matchChipCube = NULL;
53  m_image = NULL;
54  m_image = new QImage(512, 512, QImage::Format_RGB32);
55  m_image->fill(Qt::black);
56  m_controlNet = NULL;
57  m_stretchLocked = false;
58  m_stretch = NULL;
59 
60  m_stretch = new Stretch;
61  }
62 
63 
68  if (m_stretch) {
69  delete m_stretch;
70  m_stretch = NULL;
71  }
72  }
73 
74 
85  bool ChipViewport::cubeToViewport(double samp, double line,
86  int &x, int &y) {
87 
88  m_chip->SetCubePosition(samp, line);
89  x = ((int) m_chip->ChipSample()) - 1;
90  y = ((int) m_chip->ChipLine()) - 1;
91 
92  return m_chip->IsInsideChip(samp, line);
93  }
94 
95 
110  void ChipViewport::setChip(Chip *chip, Cube *chipCube) {
111  // Is the chip usable?
112  if (chip == NULL || chipCube == NULL) {
114  "Can not view NULL chip pointer",
115  _FILEINFO_);
116  }
117 
118  m_zoomFactor = 1.0;
119  m_rotation = 0;
120 
121  m_chip = chip;
122  m_chipCube = chipCube;
123  if (m_image != NULL)
124  delete m_image;
125  m_image = new QImage(chip->Samples(), chip->Lines(), QImage::Format_RGB32);
126 
127  autoStretch();
129  }
130 
131 
137  paintImage();
138  update();
139  }
140 
141 
149 
150  ASSERT(cvp != NULL);
151 
152  if (!cvp || !m_chipCube)
153  return;
154 
155  // only stretch if the CubeViewport is opened to the same cube as we are,
156  // otherwise the signal was meant for a different ChipViewport!
157  if (cvp->cube()->fileName() == m_chipCube->fileName()) {
158 
159  // if user right clicked in the CubeViewport then we get a SIGNAL with a
160  // NULL Stretch. This is used to signify that we need to restretch on our
161  // own (go back to global).
162  if (!newStretch) {
164  paintImage();
165  update();
166  }
167  else {
168  *m_stretch = *newStretch;
169  m_gray.stretch = *newStretch;
170  paintImage();
171  update();
172  }
173  }
174  }
175 
176 
182  void ChipViewport::changeStretchLock(int newStatus) {
183  if (newStatus == 0)
184  m_stretchLocked = false;
185  else
186  m_stretchLocked = true;
187  }
188 
189 
197  void ChipViewport::computeStretch(Stretch &stretch, bool force) {
198  if (m_stretchLocked && !force) {
199  stretch = *m_stretch;
200  }
201  else {
202  Statistics stats;
203  for (int line = 1; line < m_chip->Lines(); line++) {
204  for (int samp = 1; samp < m_chip->Samples(); samp++) {
205  double value = m_chip->GetValue(samp, line);
206  stats.AddData(&value, 1);
207  }
208  }
209 
210  Histogram hist(stats.BestMinimum(), stats.BestMaximum());
211  for (int line = 1; line <= m_chip->Lines(); line++) {
212  for (int samp = 1; samp <= m_chip->Samples(); samp++) {
213  double value = m_chip->GetValue(samp, line);
214  hist.AddData(&value, 1);
215  }
216  }
217 
218  stretch.ClearPairs();
219  if (hist.Percent(0.5) != hist.Percent(99.5)) {
220  stretch.AddPair(hist.Percent(0.5), 0.0);
221  stretch.AddPair(hist.Percent(99.5), 255.0);
222  }
223  else {
224  stretch.AddPair(-DBL_MAX, 0.0);
225  stretch.AddPair(DBL_MAX, 255.0);
226  }
227 
228  *m_stretch = stretch;
229  }
230  }
231 
232 
237  //TODO ??? Need something similar to CubeViewport clipping, so that
238  // at edge of image, fill viewport w/ black
239  for (int y = 0; y < m_chip->Lines(); y++) {
240  QRgb *rgb = (QRgb *) m_image->scanLine(y);
241  int r, g, b;
242  for (int x = 0; x < m_chip->Samples(); x++) {
243  r = g = b = (int) m_gray.stretch.Map(m_chip->GetValue(x + 1, y + 1));
244  rgb[x] = qRgb(r, g, b);
245  }
246  }
247  repaint();
248 
249  }
250 
251 
264  void ChipViewport::paintEvent(QPaintEvent *e) {
265 
266  QPainter painter(this);
267 
268  if (m_tempView != NULL) {
269  painter.drawImage(0, 0, *(m_tempView->m_image));
270  }
271  else {
272  painter.drawImage(0, 0, *m_image);
273  }
274 
275  if (m_cross == true) {
276  painter.setPen(Qt::red);
277  painter.drawLine(0, (m_height - 1) / 2, m_width - 1, (m_height - 1) / 2);
278  painter.drawLine((m_width - 1) / 2, 0, (m_width - 1) / 2, m_height - 1);
279  }
280 
281  if (m_circle == true) {
282  painter.setPen(Qt::red);
283  painter.drawEllipse((m_height - 1) / 2 - m_circleSize / 2,
284  (m_width - 1) / 2 - m_circleSize / 2,
286  }
287 
288  QString serialNumber = m_chipCube? SerialNumber::Compose(*m_chipCube) : QString();
289  if (m_controlNet && !serialNumber.isEmpty()
290  && m_controlNet->GetCubeSerials().contains(serialNumber)) {
291  // draw measure locations if we have a control network
292  // If the serial number is Unknown, we probably have a ground source
293  // file or level 2 which means it does not exist in the network
294  //TODO Is there a better way to handle this?
295  if (m_showPoints && serialNumber.compare("Unknown") &&
296  m_controlNet->GetNumPoints() != 0) {
297  QList<ControlMeasure *> measures =
298  m_controlNet->GetMeasuresInCube(serialNumber);
299  // loop through all points in the control net
300  for (int i = 0; i < measures.count(); i++) {
301  ControlMeasure *m = measures[i];
302  // Find the measurments on the viewport
303  double samp = m->GetSample();
304  double line = m->GetLine();
305  int x, y;
306 
307  cubeToViewport(samp, line, x, y);
308  // Determine pen color
309  // if the point or measure is ignored set to yellow
310  if (m->Parent()->IsIgnored() ||
311  (!m->Parent()->IsIgnored() && m->IsIgnored())) {
312  painter.setPen(QColor(255, 255, 0)); // set point marker yellow
313  }
314  // check for ground measure
315  else if (m->Parent()->GetType() == ControlPoint::Fixed) {
316  painter.setPen(Qt::magenta);// set point marker magenta
317  }
318  else {
319  painter.setPen(Qt::green); // set all other point markers green
320  }
321 
322  // draw points which are not under cross
323  if (x != (m_width - 1) / 2 || y != (m_height - 1) / 2) {
324  painter.drawLine(x - 5, y, x + 5, y);
325  painter.drawLine(x, y - 5, x, y + 5);
326  }
327  }
328  }
329  }
330 
331  m_tempView = NULL;
332  //painter.end();
333 
334  }
335 
336 
343  m_tempView = &newView;
344  update();
345  }
346 
347 
355  return m_chip->CubeSample();
356  }
357 
358 
366  return m_chip->CubeLine();
367  }
368 
369 
374  int x, y;
375  x = m_chip->TackSample();
376  y = m_chip->TackLine() - 1;
377  // Reload with new cube position
378  m_chip->SetChipPosition((double)x, (double)y);
380  }
381 
382 
387  int x, y;
388  x = m_chip->TackSample();
389  y = m_chip->TackLine() + 1;
390  // Reload with new cube position
391  m_chip->SetChipPosition((double)x, (double)y);
393  }
394 
395 
400  int x, y;
401  x = m_chip->TackSample() - 1;
402  y = m_chip->TackLine();
403  // Reload with new cube position
404  m_chip->SetChipPosition((double)x, (double)y);
406  }
407 
408 
413  int x, y;
414  x = m_chip->TackSample() + 1;
415  y = m_chip->TackLine();
416  // Reload with new cube position
417  m_chip->SetChipPosition((double)x, (double)y);
419  }
420 
421 
426  m_zoomFactor /= 2.0;
427  reloadChip();
428  }
429 
430 
435  m_zoomFactor *= 2.0;
436  reloadChip();
437  }
438 
439 
444  m_zoomFactor = 1.0;
445  reloadChip();
446  }
447 
448 
454  void ChipViewport::zoom(double zoomFactor) {
456  reloadChip();
457  }
458 
459 
466  return m_zoomFactor;
467  }
468 
469 
476  void ChipViewport::refreshView(double tackSample, double tackLine) {
478  }
479 
480 
486  void ChipViewport::enterEvent(QEvent *e) {
487  setFocus();
488  }
489 
490 
496  void ChipViewport::keyPressEvent(QKeyEvent *e) {
497 
498  int x, y;
499  x = m_chip->TackSample();
500  y = m_chip->TackLine();
501  if (e->key() == Qt::Key_Up) {
502  y--;
503  }
504  else if (e->key() == Qt::Key_Down) {
505  y++;
506  }
507  else if (e->key() == Qt::Key_Left) {
508  x--;
509  }
510  else if (e->key() == Qt::Key_Right) {
511  x++;
512  }
513  else {
514  QWidget::keyPressEvent(e);
515  return;
516  }
517 
518  // Reload with new cube position
519  m_chip->SetChipPosition((double)x, (double)y);
521  emit userMovedTackPoint();
522  }
523 
524 
534  void ChipViewport::mousePressEvent(QMouseEvent *event) {
535 
536  QPoint p = event->pos();
537  if (event->button() == Qt::LeftButton) {
538  // Reload with new cube position
539  m_chip->SetChipPosition((double)p.x(), (double)p.y());
541  emit userMovedTackPoint();
542  // This was added when the scrolled area was added to the QnetTool.
543  // For some reason when clicking in the ChipViewport, focus would be
544  // lost and the arrow keys would no longer work.
545  //TODO Is this the correct way to fix this, why is it happening?
546  setFocus();
547  }
548  }
549 
550 
556  void ChipViewport::setPoints(bool checked) {
557 
558  if (checked == m_showPoints)
559  return;
560 
561  m_showPoints = checked;
562  repaint();
563 
564  }
565 
566 
572  void ChipViewport::setCross(bool checked) {
573 
574  if (checked == m_cross)
575  return;
576 
577  m_cross = checked;
578  repaint();
579 
580  }
581 
582 
588  void ChipViewport::setCircle(bool checked) {
589 
590  if (checked == m_circle)
591  return;
592 
593  m_circle = checked;
594  repaint();
595  }
596 
597 
604 
605  m_circleSize = size;
606  repaint();
607 
608  }
609 
610 
621  void ChipViewport::geomChip(Chip *matchChip, Cube *matchChipCube) {
622 
623  m_geomIt = true;
624  m_matchChip = matchChip;
625  m_matchChipCube = matchChipCube;
626  try {
627  m_chip->Load(*m_chipCube, *matchChip, *matchChipCube);
628 // m_chip->ReLoad(*matchChip,m_zoomFactor);
629  }
630  catch (IException &e) {
631  QString msg = "Cannot geom chip.\n";
632  msg += e.toString();
633  QMessageBox::information((QWidget *)parent(), "Error", msg);
634  return;
635  }
636 
637  //TODO ??? Can these be added to paintEvent method ???
638  autoStretch();
639  }
640 
641 
650 
651  m_geomIt = false;
652  try {
654  }
655  catch (IException &e) {
656  QString msg = "Cannot load no geom chip.\n";
657  msg += e.toString();
658  QMessageBox::information((QWidget *)parent(), "Error", msg);
659  return;
660  }
661 
662  //TODO ??? Can these be added to paintEvent method ???
663  autoStretch();
664  }
665 
666 
677  void ChipViewport::rotateChip(int rotation) {
678 
679  m_rotation = -rotation;
680  try {
681  m_chip->Load(*m_chipCube, -rotation, m_zoomFactor);
682  }
683  catch (IException &e) {
684  QString msg = "Cannot load rotated chip.\n";
685  msg += e.toString();
686  QMessageBox::information((QWidget *)parent(), "Error", msg);
687  return;
688  }
689 
690  //TODO ??? Can these be added to paintEvent method ???
691  autoStretch();
692  }
693 
694 
707  void ChipViewport::reloadChip(double tackSample, double tackLine) {
708 
709  // Is the chip usable?
710  if (m_chip == NULL) {
712  "Can not view NULL chip pointer",
713  _FILEINFO_);
714  }
715 
716  if (tackSample != 0. && tackLine != 0.)
718  if (m_geomIt) {
719  if (m_matchChip == NULL) {
720  throw IException(IException::User, "Invalid match chip", _FILEINFO_);
721  }
722  try {
724  }
725  catch (IException &e) {
726  QString msg = "Cannot reload chip.\n";
727  msg += e.toString();
728  QMessageBox::information((QWidget *)parent(), "Error", msg);
729  return;
730  }
731 // m_chip->ReLoad(*m_matchChip,m_zoomFactor);
732  }
733  else {
734  try {
736  }
737  catch (IException &e) {
738  QString msg = "Cannot reload chip.\n";
739  msg += e.toString();
740  QMessageBox::information((QWidget *)parent(), "Error", msg);
741  return;
742  }
743  }
744 
745 
746  //TODO ??? Can these be added to paintEvent method ???
747  autoStretch();
748 
749  // emit signal indicating tack point changed so that the TieTool
750  // can update the sample/line label.
752  }
753 }
Isis::Chip::IsInsideChip
bool IsInsideChip(double sample, double line)
Definition: Chip.cpp:162
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_matchChip
Chip * m_matchChip
The matching chip.
Definition: ChipViewport.h:215
QWidget
Isis::Statistics
This class is used to accumulate statistics on double arrays.
Definition: Statistics.h:94
Isis::Cube::fileName
virtual QString fileName() const
Returns the opened cube's filename.
Definition: Cube.cpp:1563
Isis::ChipViewport::m_circleSize
int m_circleSize
Circle size.
Definition: ChipViewport.h:226
Isis::Statistics::AddData
void AddData(const double *data, const unsigned int count)
Add an array of doubles to the accumulators and counters.
Definition: Statistics.cpp:141
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::Histogram::Percent
double Percent(const double percent) const
Computes and returns the value at X percent of the histogram.
Definition: Histogram.cpp:351
Isis::ChipViewport::setCircleSize
void setCircleSize(int size)
Set the size of the circle.
Definition: ChipViewport.cpp:603
QList
This is free and unencumbered software released into the public domain.
Definition: BoxcarCachingAlgorithm.h:13
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::Chip::TackCube
void TackCube(const double cubeSample, const double cubeLine)
This sets which cube position will be located at the chip tack position.
Definition: Chip.cpp:182
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::SerialNumber::Compose
static QString Compose(Pvl &label, bool def2filename=false)
Compose a SerialNumber from a PVL.
Definition: SerialNumber.cpp:38
Isis::Chip::GetValue
double GetValue(int sample, int line)
Loads a Chip with a value.
Definition: Chip.h:145
Isis::Chip::ChipSample
double ChipSample() const
Definition: Chip.h:219
Isis::Chip::SetCubePosition
void SetCubePosition(const double sample, const double line)
Compute the position of the chip given a cube coordinate.
Definition: Chip.cpp:660
Isis::ChipViewport::paintImage
void paintImage()
Paints the chip viewport after the chip has been updated.
Definition: ChipViewport.cpp:236
Isis::ChipViewport::setCross
void setCross(bool checked)
Slot to change state of crosshair.
Definition: ChipViewport.cpp:572
Isis::ControlNet::GetMeasuresInCube
QList< ControlMeasure * > GetMeasuresInCube(QString serialNumber)
Get all the measures pertaining to a given cube serial number.
Definition: ControlNet.cpp:1065
Isis::ChipViewport::tackSample
double tackSample()
Return the position of cube under cross hair.
Definition: ChipViewport.cpp:353
Isis::Chip::CubeSample
double CubeSample() const
Definition: Chip.h:203
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::ControlNet::GetCubeSerials
QList< QString > GetCubeSerials() const
Use this method to get a complete list of all the cube serial numbers in the network.
Definition: ControlNet.cpp:1016
Isis::ChipViewport::m_showPoints
bool m_showPoints
Draw control points.
Definition: ChipViewport.h:223
Isis::Chip::Load
void Load(Cube &cube, const double rotation=0.0, const double scale=1.0, const int band=1)
Load cube data into the Chip.
Definition: Chip.cpp:203
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::Chip::TackSample
int TackSample() const
This method returns a chip's fixed tack sample; the middle of the chip.
Definition: Chip.h:176
Isis::Chip::CubeLine
double CubeLine() const
Definition: Chip.h:210
Isis::ChipViewport::rotateChip
void rotateChip(int rotation)
Slot to rotate chip.
Definition: ChipViewport.cpp:677
Isis::ControlPoint::Fixed
@ Fixed
A Fixed point is a Control Point whose lat/lon is well established and should not be changed.
Definition: ControlPoint.h:371
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::ControlNet::GetNumPoints
int GetNumPoints() const
Return the number of control points in the network.
Definition: ControlNet.cpp:1465
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::Chip::TackLine
int TackLine() const
This method returns a chip's fixed tack line; the middle of the chip.
Definition: Chip.h:187
Isis::IException::toString
QString toString() const
Returns a string representation of this exception.
Definition: IException.cpp:537
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::Chip::ChipLine
double ChipLine() const
Definition: Chip.h:226
Isis::Histogram::AddData
virtual void AddData(const double *data, const unsigned int count)
Add an array of doubles to the histogram counters.
Definition: Histogram.cpp:232
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::Stretch::AddPair
void AddPair(const double input, const double output)
Adds a stretch pair to the list of pairs.
Definition: Stretch.cpp:48
Isis::Stretch::ClearPairs
void ClearPairs()
Clears the stretch pairs.
Definition: Stretch.h:170
Isis::Statistics::BestMaximum
double BestMaximum(const double percent=99.5) const
This method returns the better of the absolute maximum or the Chebyshev maximum.
Definition: Statistics.cpp:625
Isis::ChipViewport::zoom1
void zoom1()
Zoom by a factor of one.
Definition: ChipViewport.cpp:443
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::IException
Isis exception class.
Definition: IException.h:91
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::IException::Programmer
@ Programmer
This error is for when a programmer made an API call that was illegal.
Definition: IException.h:146
Isis::ChipViewport::changeStretchLock
void changeStretchLock(int)
Locks or unlocks the stretch on the chip viewport during transformations (zoom, pan,...
Definition: ChipViewport.cpp:182
Isis::Histogram
Container of a cube histogram.
Definition: Histogram.h:74
Isis::Statistics::BestMinimum
double BestMinimum(const double percent=99.5) const
This method returns the better of the absolute minimum or the Chebyshev minimum.
Definition: Statistics.cpp:598
Isis::ChipViewport::m_rotation
int m_rotation
Rotation.
Definition: ChipViewport.h:219
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::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::ControlPoint::GetType
PointType GetType() const
Definition: ControlPoint.cpp:1401
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::Chip::SetChipPosition
void SetChipPosition(const double sample, const double line)
Compute the position of the cube given a chip coordinate.
Definition: Chip.cpp:643
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::CubeViewport::cube
Cube * cube() const
Definition: CubeViewport.h:338
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::IException::User
@ User
A type of error that could only have occurred due to a mistake on the user's part (e....
Definition: IException.h:126
Isis::ChipViewport::m_width
int m_width
Chip width.
Definition: ChipViewport.h:211
Isis::ChipViewport::panUp
void panUp()
Pan up.
Definition: ChipViewport.cpp:373
Isis::ControlMeasure
a control measurement
Definition: ControlMeasure.h:175
Isis::Stretch::Map
double Map(const double value) const
Maps an input value to an output value based on the stretch pairs and/or special pixel mappings.
Definition: Stretch.cpp:69

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/13/2023 15:16:15