USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::CubeViewport Class Referenceabstract

Widget to display Isis cubes for qt apps. More...

#include <CubeViewport.h>

Inheritance diagram for Isis::CubeViewport:
Inheritance graph
Collaboration diagram for Isis::CubeViewport:
Collaboration graph

Classes

class  BandInfo
 

Public Slots

QSize sizeHint () const
 Make viewports show up as 512 by 512.
 
void setScale (double scale)
 Change the scale of the cube to the given parameter value.
 
void setScale (double scale, double sample, double line)
 Change the scale of the cube after moving samp/line to the center.
 
void setScale (double scale, int x, int y)
 Change the scale of the cube after moving x,y to the center.
 
void center (int x, int y)
 Bring the cube pixel under viewport x/y to the center.
 
void center (double sample, double line)
 Bring the cube sample/line the center.
 
virtual void viewRGB (int redBand, int greenBand, int blueBand)
 View cube as color.
 
virtual void viewGray (int band)
 View cube as gray.
 
void stretchGray (const QString &string)
 Apply stretch pairs to gray band.
 
void stretchRed (const QString &string)
 Apply stretch pairs to red bands.
 
void stretchGreen (const QString &string)
 Apply stretch pairs to green bands.
 
void stretchBlue (const QString &string)
 Apply stretch pairs to blue bands.
 
void stretchGray (const Stretch &stretch)
 Sets the stretch for gray mode.
 
void stretchRed (const Stretch &stretch)
 Sets the stretch for red in rgb mode.
 
void stretchGreen (const Stretch &stretch)
 Sets the stretch for green in rgb mode.
 
void stretchBlue (const Stretch &stretch)
 Sets the stretch for blue in rgb mode.
 
void stretchKnownGlobal ()
 List<Tool *> p This stretches to the global stretch.
 
void cubeChanged (bool changed)
 This method is called when the cube has changed or changes have been finalized.
 
void showEvent (QShowEvent *)
 This method is called to initially show the viewport.
 
void scrollBy (int dx, int dy)
 Move the scrollbars by dx/dy screen pixels.
 
void changeCursor (QCursor cursor)
 Allows users to change the cursor type on the viewport.
 
void onProgressTimer ()
 This updates the progress bar visually.
 
void enableProgress ()
 This restarts the progress bar.
 

Signals

void viewportUpdated ()
 Emitted when viewport updated.
 
void viewportClosed (CubeViewport *)
 Emitted when viewport is closed.
 
void mouseEnter ()
 Emitted when the mouse enters the viewport.
 
void mouseMove (QPoint)
 Emitted when the mouse moves.
 
void mouseMove (QPoint, Qt::MouseButton)
 Emitted when the mouse moves.
 
void mouseLeave ()
 Emitted when the mouse leaves the viewport.
 
void mouseButtonPress (QPoint, Qt::MouseButton)
 Emitted when mouse button pressed.
 
void mouseButtonRelease (QPoint, Qt::MouseButton)
 Emitted when mouse button released.
 
void mouseDoubleClick (QPoint)
 Emitted when double click happens.
 
void windowTitleChanged ()
 Emitted when window title changes.
 
void scaleChanged ()
 Emitted when zoom factor changed just before the repaint event.
 
void saveChanges (CubeViewport *)
 Emitted when changes should be saved.
 
void discardChanges (CubeViewport *)
 Emitted when changes should be discarded.
 
void screenPixelsChanged ()
 Emitted when cube pixels that should be on the screen change.
 
void progressChanged (int)
 Emitted with current progress (0 to 100) when working.
 
void doneWithData (int, const Isis::Brick *)
 Emitted when a brick is no longer needed, should only be sent to cube data thread.
 

Public Member Functions

 CubeViewport (Cube *cube, CubeDataThread *cdt=0, QWidget *parent=0)
 Construct a cube viewport.
 
virtual ~CubeViewport ()
 Destructor.
 
void setCube (Cube *cube)
 This method sets the viewports cube.
 
int cubeSamples () const
 Return the number of samples in the cube.
 
int cubeLines () const
 Return the number of lines in the cube.
 
int cubeBands () const
 Return the number of bands in the cube.
 
bool isColor () const
 Is the viewport shown in 3-band color.
 
bool isGray () const
 Is the viewport shown in gray / b&w.
 
int grayBand () const
 Return the gray band currently viewed.
 
int redBand () const
 Return the red band currently viewed.
 
int greenBand () const
 Return the green band currently viewed.
 
int blueBand () const
 Return the blue band currently viewed.
 
double scale () const
 Return the scale.
 
bool cubeShown () const
 Return if the cube is visible.
 
int comboCount () const
 Return the BandBin combo box count.
 
int comboIndex () const
 Return the BandBin combo box index.
 
void cubeContentsChanged (QRect rect)
 Cube changed, repaint given area.
 
double fitScale () const
 Determine the scale that causes the full cube to fit in the viewport.
 
double fitScaleWidth () const
 Determine the scale of cube in the width to fit in the viewport.
 
double fitScaleHeight () const
 Determine the scale of cube in heighth to fit in the viewport.
 
void viewportToCube (int x, int y, double &sample, double &line) const
 Convert a viewport x/y to a cube sample/line (may be outside the cube)
 
void cubeToViewport (double sample, double line, int &x, int &y) const
 Convert a cube sample/line to a viewport x/y (may be outside the viewport)
 
void contentsToCube (int x, int y, double &sample, double &line) const
 Convert a contents x/y to a cube sample/line (may be outside the cube)
 
void cubeToContents (double sample, double line, int &x, int &y) const
 Convert a cube sample/line to a contents x/y (should not be outside)
 
double redPixel (int sample, int line)
 Return the red pixel value at a sample/line.
 
double greenPixel (int sample, int line)
 Return the green pixel value at a sample/line.
 
double bluePixel (int sample, int line)
 Return the blue pixel value at a sample/line.
 
double grayPixel (int sample, int line)
 Return the gray pixel value at a sample/line.
 
Stretch grayStretch () const
 Return the gray band stretch.
 
Stretch redStretch () const
 Return the red band stretch.
 
Stretch greenStretch () const
 Return the green band stretch.
 
Stretch blueStretch () const
 Return the blue band stretch.
 
Cubecube () const
 Return the cube associated with viewport.
 
Projectionprojection () const
 Return the projection associated with cube (NULL implies none)
 
Cameracamera () const
 Return the camera associated with the cube (NULL implies none)
 
UniversalGroundMapuniversalGroundMap () const
 Return the universal ground map associated with the cube (NULL implies none)
 
void moveCursor (int x, int y)
 Move the cursor by x,y if possible.
 
bool cursorInside () const
 Is cursor inside viewport.
 
QPoint cursorPosition () const
 Return the cursor position in the viewport.
 
void setCursorPosition (int x, int y)
 Set the cursor position to x/y in the viewport.
 
void setCaption ()
 Change the caption on the viewport title bar.
 
void setBackground (QColor color)
 Sets the background color.
 
void setComboCount (int count)
 Sets the band bin combo box count.
 
void setComboIndex (int index)
 Sets the band bin combo box index.
 
QPixmap pixmap ()
 Returns the pixmap.
 
ViewportBuffergrayBuffer ()
 Returns the gray viewport buffer (Will be NULL if in RGB mode.)
 
ViewportBufferredBuffer ()
 Returns the red viewport buffer (Will be NULL if in Gray mode.)
 
ViewportBuffergreenBuffer ()
 Returns the green viewport buffer (Will be NULL if in Gray mode.)
 
ViewportBufferblueBuffer ()
 Returns the blue viewport buffer (Will be NULL if in Gray mode.)
 
void bufferUpdated (QRect rect)
 This method is called by ViewportBuffer upon successful completion of all operations and gives the appropriate rect to be repainted.
 
virtual void restretch (ViewportBuffer *buffer)=0
 This is called by internal viewport buffers when a stretch action should be performed.
 
void paintPixmap ()
 Paint the whole pixmap.
 
void forgetStretches ()
 Resets all remembered stretches.
 
void setAllBandStretches (Stretch stretch)
 Sets a stretch for all bands.
 
CubeDataThreadcubeDataThread ()
 
int cubeID ()
 
void getAllWhatsThisInfo (Pvl &pWhatsThisPvl)
 Get All WhatsThis info - viewport, cube, area in PVL format.
 
void getBandFilterName (PvlKeyword &pFilterNameKey)
 Get Band Filter name from the Isis cube label.
 
void getCubeArea (double &pdStartSample, double &pdEndSample, double &pdStartLine, double &pdEndLine)
 Get Cube area corresponding to the viewport's dimension.
 
bool confirmClose ()
 This method should be called during a close event that would cause this viewport to close.
 

Protected Slots

virtual void cubeDataChanged (int cubeId, const Isis::Brick *)
 This method updates the internal viewport buffer based on changes in cube DN values.
 

Protected Member Functions

void scrollContentsBy (int dx, int dy)
 Scroll the viewport contents by dx/dy screen pixels.
 
virtual void resizeEvent (QResizeEvent *e)
 The viewport is being resized.
 
virtual bool eventFilter (QObject *o, QEvent *e)
 Event filter to watch for mouse events on viewport.
 
virtual void keyPressEvent (QKeyEvent *e)
 Process arrow keystrokes on cube.
 
virtual void paintEvent (QPaintEvent *e)
 Repaint the viewport.
 

Protected Attributes

QPixmap p_pixmap
 The qpixmap.
 
QVector< Stretch * > * p_knownStretches
 Stretches for each previously stretched band.
 
QVector< Stretch * > * p_globalStretches
 Global stretches for each stretched band.
 

Private Member Functions

void paintPixmap (QRect rect)
 Paint a region of the pixmap.
 
void shiftPixmap (int dx, int dy)
 Shifts the pixels on the pixmap without reading new data.
 
void updateScrollBars (int x, int y)
 Update the scroll bar.
 
void paintPixmapRects ()
 Goes through the list of requested paints, from the viewport buffer, and paints them.
 
void updateWhatsThis ()
 Update the What's This text.
 

Private Attributes

ViewportBufferp_grayBuffer
 Viewport Buffer to manage gray band.
 
ViewportBufferp_redBuffer
 Viewport Buffer to manage red band.
 
ViewportBufferp_greenBuffer
 Viewport Buffer to manage green band.
 
ViewportBufferp_blueBuffer
 Viewport Buffer to manage blue band.
 
QColor p_bgColor
 The color to paint the background of the viewport.
 
Cubep_cube
 The cube associated with the viewport.
 
Camerap_camera
 The camera from the cube.
 
Projectionp_projection
 The projection from the cube.
 
UniversalGroundMapp_groundMap
 The universal ground map from the cube.
 
QTimer * p_progressTimer
 Activated to update progress bar.
 
double p_scale
 The scale number.
 
bool p_color
 Is the viewport in color?
 
BandInfo p_gray
 Gray band info.
 
BandInfo p_red
 Red band info.
 
BandInfo p_green
 Green band info.
 
BandInfo p_blue
 Blue band info.
 
int p_comboCount
 Number of elements in band bin combo box.
 
int p_comboIndex
 Current element chosen from combo box.
 
Brickp_redBrick
 Bricks for every color.
 
Brickp_grnBrick
 Bricks for every color.
 
Brickp_bluBrick
 Bricks for every color.
 
Brickp_gryBrick
 Bricks for every color.
 
Brickp_pntBrick
 Bricks for every color.
 
bool p_saveEnabled
 Has the cube changed?
 
bool p_cubeShown
 Is the cube visible?
 
QImage * p_image
 The qimage.
 
bool p_paintPixmap
 Paint the pixmap?
 
bool p_updatingBuffers
 Changing RGB and need to not repaint pixmap?
 
QString p_whatsThisText
 The text for What's this.
 
QString p_cubeWhatsThisText
 The text for the cube's What's this.
 
QString p_viewportWhatsThisText
 The text for the viewport's what's this.
 
QList< QRect * > * p_pixmapPaintRects
 A list of rects that the viewport buffers have requested painted.
 
CubeDataThreadp_cubeData
 Does all the cube I/O.
 
int p_cubeId
 Cube ID given from cube data thread for I/O.
 
bool p_thisOwnsCubeData
 if true then this owns the CubeDataThread, and should thus delete it
 

Detailed Description

Widget to display Isis cubes for qt apps.

Author
????-??-?? Jeff Anderson
History:

2007-01-30 Tracie Sucharski, Add information message if spice not found.

2007-02-07 Tracie Sucharski, Remove error message, decided it was more of a hassle to click ok when displaying many images without spice.

2007-03-20 Tracie Sucharski, Add fitScaleMinDimension, fitScaleWidth and fitScaleHeight methods. Change cursor to wait cursor in paintPixmap.

2007-04-13 Tracie Sucharski, Remove fitScaleMinDimension, turns out it was not needed.

2007-09-11 Steven Lambright, Added double click signal

2007-12-11 Steven Lambright, Added 1x1xn cube auto stretch support

2008-06-19 Noah Hilt, Added a close event for saving and discarding changes and a method to set the cube.

2008-12-04 Jeannie Walldren, Fixed a bug in computeStretch() method for comparing precision difference on 32 bit Linux system. Added try/catch in showCube() to set p_cubeShown = false if this fails.

2009-03-09 Steven Lambright - Changed the way we do floating point math in autoStretch to work better in order to allow more cubes to open.

2009-03-27 Noah Hilt/Steven Lambright - Removed old rubber band methods and variables. Added new ViewportBuffer to read and store visible dn values in the viewport.

2009-10-23 Steven Lambright - Camera::SetBand is now called when switching the band being shown.

2010-04-08 Steven Lambright and Eric Hyer - Now supports ViewportBuffer using threaded cube I/O

2010-04-30 Steven Lambright - Bug fixes and better support for threaded cube I/O

2010-05-20 Steven Lambright - Added memory of global stretches

2010-05-24 Eric Hyer - Fixed bug where QPainter construction was being attempted with a potentially null pixmap

2010-06-26 Eric Hyer - Moved MDI specific code to new child class called MdiCubeViewport. Fixed many include mistakes.

2010-07-12 Jeannie Walldren - Changed setScale() method's maximum value from hard-coded 16 to the max of the viewport width and height. Added setScale() minimum value of 1/min(samps,lines). Added exceptions to ViewportBuffer to help track errors.

2010-11-08 Eric Hyer - Added better mouseMove signal

2010-12-01 Steven Lambright - The initial scale now uses fitScale so that it is consistent with the zoom tool.

2011-03-30 Sharmila Prasad - Set the frame shadow and style to remove border around the image

2011-03-31 Sharmila Prasad - Added band info to "whatsthis" API to store the whatsthis info in a PVL format

2011-04-25 Steven Lambright - Fixed "center" and added more safety checks.

2012-03-22 Steven Lambright and Jai Rideout - Fixed bug where screenPixelsChanged was not correctly emitted on resize.

2012-05-29 Steven Lambright - Changed destructor to clean up the cube when necessary.

2012-06-28 Steven Lambright - Stretching gray no longer removes stretch special pixel values from the RGB stretches. References #684.

2012-07-27 Tracie Sucharski - Added viewportClosed signal so that tools can respond to the user closing a viewport rather than when the application exits.

2013-11-04 Janet Barrett - Added the p_comboCount and p_comboIndex variables to store the current state of the band bin combo box. Also added comboCount(), comboIndex(), setComboCount(), and setComboIndex() accessors and setters to allow the BandTool class to retain the settings for each cube viewport. Fixes #1612.

Definition at line 121 of file CubeViewport.h.

Constructor & Destructor Documentation

Member Function Documentation

ViewportBuffer* Isis::CubeViewport::blueBuffer ( )
inline
double Isis::CubeViewport::bluePixel ( int  sample,
int  line 
)

Return the blue pixel value at a sample/line.

Parameters
sample
line
Returns
double

Definition at line 1630 of file CubeViewport.cpp.

References p_blue, p_cube, p_pntBrick, Isis::Cube::read(), and Isis::Brick::SetBasePosition().

void Isis::CubeViewport::bufferUpdated ( QRect  rect)

This method is called by ViewportBuffer upon successful completion of all operations and gives the appropriate rect to be repainted.

This is intended to update the screen once all data is done and ready to be displayed.

Parameters
rectArea to update screen

Definition at line 1104 of file CubeViewport.cpp.

References p_blueBuffer, p_grayBuffer, p_greenBuffer, p_redBuffer, paintPixmap(), and Isis::ViewportBuffer::working().

Camera* Isis::CubeViewport::camera ( ) const
inline
void Isis::CubeViewport::center ( int  x,
int  y 
)
slot

Bring the cube pixel under viewport x/y to the center.

Parameters
x
y

Definition at line 726 of file CubeViewport.cpp.

References viewportToCube().

Referenced by setScale().

void Isis::CubeViewport::center ( double  sample,
double  line 
)
slot
void Isis::CubeViewport::changeCursor ( QCursor  cursor)
slot

Allows users to change the cursor type on the viewport.

Parameters
cursor

Definition at line 2353 of file CubeViewport.cpp.

int Isis::CubeViewport::comboCount ( ) const
inline

Return the BandBin combo box count.

Definition at line 193 of file CubeViewport.h.

References p_comboCount.

Referenced by Isis::BandTool::setBandBin().

int Isis::CubeViewport::comboIndex ( ) const
inline

Return the BandBin combo box index.

Definition at line 198 of file CubeViewport.h.

References p_comboIndex.

Referenced by Isis::BandTool::setBandBin().

bool Isis::CubeViewport::confirmClose ( )

This method should be called during a close event that would cause this viewport to close.

If changes have been made to this viewport it opens an information dialog that asks the user if they want to save, discard changes, or cancel.

Returns
True if closing is OK, false if it needs to be cancelled.

Definition at line 520 of file CubeViewport.cpp.

References cube(), discardChanges(), p_saveEnabled, and saveChanges().

void Isis::CubeViewport::contentsToCube ( int  x,
int  y,
double &  sample,
double &  line 
) const

Convert a contents x/y to a cube sample/line (may be outside the cube)

Parameters
x
y
sample
line

Definition at line 798 of file CubeViewport.cpp.

References p_scale.

Referenced by setScale(), and viewportToCube().

Cube* Isis::CubeViewport::cube ( ) const
inline

Return the cube associated with viewport.

Definition at line 228 of file CubeViewport.h.

References p_cube.

Referenced by confirmClose(), Isis::MatchTool::createPoint(), cubeContentsChanged(), cubeDataChanged(), CubeViewport(), Isis::QnetTool::drawAllMeasurments(), Isis::SpectralPlotWindow::drawBandMarkers(), Isis::FeatureNomenclatureTool::featuresForViewportFound(), Isis::FeatureNomenclatureTool::findMissingNomenclature(), Isis::SpatialPlotTool::getSpatialStatistics(), Isis::SpectralPlotTool::getSpectralStatistics(), Isis::StatisticsTool::getStatistics(), Isis::ScatterPlotWindow::isXCube(), Isis::ScatterPlotWindow::isYCube(), Isis::SunShadowTool::mouseButtonPress(), Isis::EditTool::mouseButtonRelease(), Isis::MatchTool::mouseButtonRelease(), Isis::QnetTool::mouseButtonRelease(), Isis::QnetTool::openGround(), Isis::CubePlotCurve::paint(), Isis::StereoTool::paintViewport(), Isis::SunShadowTool::recalculateShadowHeight(), Isis::EditTool::redoEdit(), Isis::HistogramTool::refreshPlot(), Isis::ScatterPlotConfigDialog::refreshWidgetStates(), Isis::AbstractPlotTool::repaintViewports(), Isis::EditTool::rubberBandComplete(), Isis::FileTool::save(), Isis::FileTool::saveAsCubeByOption(), Isis::FileTool::saveAsReducedCube(), Isis::ScatterPlotConfigDialog::ScatterPlotConfigDialog(), Isis::MatchTool::serialNumberList(), setCube(), Isis::StretchTool::stretchBand(), Isis::AdvancedTrackTool::TrackMosaicOrigin(), Isis::EditTool::undoAll(), Isis::EditTool::undoEdit(), Isis::MeasureTool::updateDist(), Isis::AdvancedTrackTool::updateRow(), Isis::BandTool::updateTool(), Isis::SunShadowTool::updateTool(), Isis::SpectralPlotTool::updateTool(), Isis::EditTool::writeToCube(), Isis::ScatterPlotConfigDialog::xAxisCubeViewport(), and Isis::ScatterPlotConfigDialog::yAxisCubeViewport().

int Isis::CubeViewport::cubeBands ( ) const

Return the number of bands in the cube.

Definition at line 440 of file CubeViewport.cpp.

References Isis::Cube::bandCount(), and p_cube.

Referenced by Isis::BandTool::copyAllViewports(), and Isis::BandTool::copyLinkedViewports().

void Isis::CubeViewport::cubeChanged ( bool  changed)
slot

This method is called when the cube has changed or changes have been finalized.

Parameters
changed

Definition at line 556 of file CubeViewport.cpp.

References p_saveEnabled.

Referenced by Isis::EditTool::redoEdit(), Isis::EditTool::save(), Isis::EditTool::undoEdit(), and Isis::EditTool::writeToCube().

void Isis::CubeViewport::cubeContentsChanged ( QRect  cubeRect)

Cube changed, repaint given area.

Parameters
[in]cubeRect(QRect rect) Rectange containing portion of cube (sample/line) that changed.

Definition at line 2289 of file CubeViewport.cpp.

References cube(), cubeToViewport(), Isis::ViewportBuffer::fillBuffer(), Isis::Cube::lineCount(), p_blueBuffer, p_grayBuffer, p_greenBuffer, p_redBuffer, p_updatingBuffers, paintPixmapRects(), and Isis::Cube::sampleCount().

Referenced by Isis::EditTool::redoEdit(), Isis::EditTool::undoEdit(), and Isis::EditTool::writeToCube().

void Isis::CubeViewport::cubeDataChanged ( int  cubeId,
const Isis::Brick data 
)
protectedvirtualslot

This method updates the internal viewport buffer based on changes in cube DN values.

Parameters
cubeIdCube that the changed brick belongs to
dataNew data

Definition at line 452 of file CubeViewport.cpp.

References cube(), cubeToViewport(), doneWithData(), Isis::ViewportBuffer::fillBuffer(), Isis::Buffer::Line(), Isis::Cube::lineCount(), Isis::Buffer::LineDimension(), p_blueBuffer, p_cubeId, p_grayBuffer, p_greenBuffer, p_redBuffer, p_updatingBuffers, paintPixmapRects(), Isis::Buffer::Sample(), Isis::Cube::sampleCount(), and Isis::Buffer::SampleDimension().

Referenced by CubeViewport().

CubeDataThread* Isis::CubeViewport::cubeDataThread ( )
inline
Returns
this CubeViewport's CubeDataThread

Definition at line 358 of file CubeViewport.h.

References p_cubeData.

int Isis::CubeViewport::cubeID ( )
inline
Returns
the CubeViewport's cube id

Definition at line 365 of file CubeViewport.h.

References p_cubeId.

bool Isis::CubeViewport::cubeShown ( ) const
inline

Return if the cube is visible.

Definition at line 188 of file CubeViewport.h.

References p_cubeShown.

void Isis::CubeViewport::cubeToContents ( double  sample,
double  line,
int &  x,
int &  y 
) const

Convert a cube sample/line to a contents x/y (should not be outside)

Parameters
sample
line
x
y

Definition at line 835 of file CubeViewport.cpp.

References p_scale.

Referenced by center(), cubeToViewport(), and setScale().

void Isis::CubeViewport::cubeToViewport ( double  sample,
double  line,
int &  x,
int &  y 
) const
bool Isis::CubeViewport::cursorInside ( ) const

Is cursor inside viewport.

Returns
bool

Definition at line 1786 of file CubeViewport.cpp.

QPoint Isis::CubeViewport::cursorPosition ( ) const

Return the cursor position in the viewport.

Returns
QPoint

Definition at line 1811 of file CubeViewport.cpp.

void Isis::CubeViewport::discardChanges ( CubeViewport )
signal

Emitted when changes should be discarded.

Referenced by confirmClose().

void Isis::CubeViewport::doneWithData ( int  ,
const Isis::Brick  
)
signal

Emitted when a brick is no longer needed, should only be sent to cube data thread.

Referenced by cubeDataChanged(), and CubeViewport().

void Isis::CubeViewport::enableProgress ( )
slot

This restarts the progress bar.

Does nothing if already loading.

Definition at line 972 of file CubeViewport.cpp.

References p_progressTimer, and progressChanged().

bool Isis::CubeViewport::eventFilter ( QObject o,
QEvent *  e 
)
protectedvirtual

Event filter to watch for mouse events on viewport.

Parameters
o
e
Returns
bool

Reimplemented in Isis::IndependentCubeViewport.

Definition at line 1686 of file CubeViewport.cpp.

References mouseButtonPress(), mouseButtonRelease(), mouseDoubleClick(), mouseEnter(), mouseLeave(), and mouseMove().

double Isis::CubeViewport::fitScale ( ) const

Determine the scale that causes the full cube to fit in the viewport.

Returns
The scale

Definition at line 2247 of file CubeViewport.cpp.

References cubeLines(), cubeSamples(), and scale().

Referenced by showEvent(), and Isis::ZoomTool::zoomFit().

double Isis::CubeViewport::fitScaleHeight ( ) const

Determine the scale of cube in heighth to fit in the viewport.

Returns
The scale for height

Definition at line 2275 of file CubeViewport.cpp.

References cubeLines(), and scale().

Referenced by Isis::ZoomTool::zoomFitHeight().

double Isis::CubeViewport::fitScaleWidth ( ) const

Determine the scale of cube in the width to fit in the viewport.

Returns
The scale for width

Definition at line 2262 of file CubeViewport.cpp.

References cubeSamples(), and scale().

Referenced by Isis::ZoomTool::zoomFitWidth().

void Isis::CubeViewport::forgetStretches ( )

Resets all remembered stretches.

Definition at line 1950 of file CubeViewport.cpp.

References p_knownStretches.

Referenced by Isis::StretchTool::stretchGlobalAllBands().

void Isis::CubeViewport::getAllWhatsThisInfo ( Pvl pWhatsThisPvl)

Get All WhatsThis info - viewport, cube, area in PVL format.

Parameters
pWhatsThisPvl- Pvl for all whatsthis info
Author
Sharmila Prasad (4/5/2011)
Parameters
pWhatsThisPvl- Pvl for all whatsthis info

Definition at line 1364 of file CubeViewport.cpp.

References Isis::Cube::bandCount(), Isis::Cube::fileName(), Isis::ViewportBuffer::getBand(), getBandFilterName(), getCubeArea(), Isis::Cube::lineCount(), p_blueBuffer, p_color, p_cube, p_grayBuffer, p_greenBuffer, p_redBuffer, Isis::Cube::physicalBand(), Isis::Cube::sampleCount(), Isis::PvlKeyword::size(), and Isis::toString().

Referenced by Isis::FileTool::saveInfo().

void Isis::CubeViewport::getBandFilterName ( PvlKeyword pFilterNameKey)

Get Band Filter name from the Isis cube label.

Parameters
pFilterNameKey- FilterName keyword containing the corresponding keyword from the Isis Cube label
Author
Sharmila Prasad (4/5/2011)
Parameters
PvlKeyword&pFilterNameKey - FilterName keyword containing the corresponding keyword from the Isis Cube label

Definition at line 1466 of file CubeViewport.cpp.

References Isis::PvlObject::findGroup(), Isis::PvlContainer::findKeyword(), Isis::PvlObject::findObject(), Isis::PvlObject::hasGroup(), Isis::PvlContainer::hasKeyword(), Isis::Cube::label(), and p_cube.

Referenced by getAllWhatsThisInfo(), and updateWhatsThis().

void Isis::CubeViewport::getCubeArea ( double &  pdStartSample,
double &  pdEndSample,
double &  pdStartLine,
double &  pdEndLine 
)

Get Cube area corresponding to the viewport's dimension.

Parameters
pdStartSample- Cube Start Sample
pdEndSample- Cube End Sample
pdStartLine- Cube Start Line
pdEndLine- Cube End Line

Definition at line 1487 of file CubeViewport.cpp.

References cubeLines(), cubeSamples(), and viewportToCube().

Referenced by getAllWhatsThisInfo(), and updateWhatsThis().

ViewportBuffer* Isis::CubeViewport::grayBuffer ( )
inline

Returns the gray viewport buffer (Will be NULL if in RGB mode.)

Returns
ViewportBuffer*

Definition at line 296 of file CubeViewport.h.

References p_grayBuffer.

Referenced by Isis::ScatterPlotWindow::paint(), Isis::StretchTool::setCubeViewport(), Isis::StretchTool::stretchRect(), Isis::StretchTool::stretchRequested(), Isis::StretchTool::updateHistograms(), and Isis::TrackTool::updateLabels().

double Isis::CubeViewport::grayPixel ( int  sample,
int  line 
)

Return the gray pixel value at a sample/line.

Parameters
sample
line
Returns
double

Definition at line 1646 of file CubeViewport.cpp.

References p_cube, p_gray, p_pntBrick, Isis::Cube::read(), and Isis::Brick::SetBasePosition().

Referenced by Isis::AdvancedTrackTool::updateRow().

ViewportBuffer* Isis::CubeViewport::greenBuffer ( )
inline
double Isis::CubeViewport::greenPixel ( int  sample,
int  line 
)

Return the green pixel value at a sample/line.

Parameters
sample
line
Returns
double

Definition at line 1614 of file CubeViewport.cpp.

References p_cube, p_green, p_pntBrick, Isis::Cube::read(), and Isis::Brick::SetBasePosition().

bool Isis::CubeViewport::isColor ( ) const
inline
void Isis::CubeViewport::keyPressEvent ( QKeyEvent *  e)
protectedvirtual

Process arrow keystrokes on cube.

Parameters
e

Definition at line 1747 of file CubeViewport.cpp.

References moveCursor(), p_scale, scale(), and setScale().

void Isis::CubeViewport::mouseButtonPress ( QPoint  ,
Qt::MouseButton   
)
signal

Emitted when mouse button pressed.

Referenced by eventFilter().

void Isis::CubeViewport::mouseButtonRelease ( QPoint  ,
Qt::MouseButton   
)
signal

Emitted when mouse button released.

Referenced by eventFilter().

void Isis::CubeViewport::mouseDoubleClick ( QPoint  )
signal

Emitted when double click happens.

Referenced by eventFilter().

void Isis::CubeViewport::mouseEnter ( )
signal

Emitted when the mouse enters the viewport.

Referenced by eventFilter().

void Isis::CubeViewport::mouseLeave ( )
signal

Emitted when the mouse leaves the viewport.

Referenced by eventFilter().

void Isis::CubeViewport::mouseMove ( QPoint  )
signal

Emitted when the mouse moves.

Referenced by eventFilter().

void Isis::CubeViewport::mouseMove ( QPoint  ,
Qt::MouseButton   
)
signal

Emitted when the mouse moves.

void Isis::CubeViewport::moveCursor ( int  x,
int  y 
)

Move the cursor by x,y if possible.

Parameters
x
y

Definition at line 1824 of file CubeViewport.cpp.

Referenced by keyPressEvent().

void Isis::CubeViewport::onProgressTimer ( )
slot

This updates the progress bar visually.

Conceptually it emits the progressChanged signal with the current progress.

Definition at line 262 of file CubeViewport.cpp.

References Isis::ViewportBuffer::currentProgress(), p_blueBuffer, p_grayBuffer, p_greenBuffer, p_progressTimer, p_redBuffer, progressChanged(), screenPixelsChanged(), and Isis::ViewportBuffer::working().

Referenced by CubeViewport().

void Isis::CubeViewport::paintEvent ( QPaintEvent *  e)
protectedvirtual

Repaint the viewport.

Parameters
e[in] (QPaintEvent *) event
History:
2007-04-30 Tracie Sucharski - Add the QPainter to the call to Tool::paintViewport.

Reimplemented in Isis::IndependentCubeViewport, and Isis::MdiCubeViewport.

Definition at line 1089 of file CubeViewport.cpp.

References p_cubeShown.

Referenced by Isis::IndependentCubeViewport::paintEvent().

void Isis::CubeViewport::paintPixmap ( )
void Isis::CubeViewport::paintPixmapRects ( )
private

Goes through the list of requested paints, from the viewport buffer, and paints them.

Definition at line 779 of file CubeViewport.cpp.

References p_pixmapPaintRects, and paintPixmap().

Referenced by center(), cubeContentsChanged(), cubeDataChanged(), resizeEvent(), and setScale().

QPixmap Isis::CubeViewport::pixmap ( )
inline

Returns the pixmap.

Returns
QPixmap

Definition at line 286 of file CubeViewport.h.

References p_pixmap.

Referenced by Isis::BlinkTool::eventFilter().

void Isis::CubeViewport::progressChanged ( int  )
signal

Emitted with current progress (0 to 100) when working.

Referenced by enableProgress(), and onProgressTimer().

Projection* Isis::CubeViewport::projection ( ) const
inline
ViewportBuffer* Isis::CubeViewport::redBuffer ( )
inline
double Isis::CubeViewport::redPixel ( int  sample,
int  line 
)

Return the red pixel value at a sample/line.

Parameters
sample
line
Returns
double

Definition at line 1598 of file CubeViewport.cpp.

References p_cube, p_pntBrick, p_red, Isis::Cube::read(), and Isis::Brick::SetBasePosition().

Referenced by Isis::AdvancedTrackTool::updateRow().

void Isis::CubeViewport::resizeEvent ( QResizeEvent *  e)
protectedvirtual
virtual void Isis::CubeViewport::restretch ( ViewportBuffer buffer)
pure virtual

This is called by internal viewport buffers when a stretch action should be performed.

The buffer passes itself as the argument.

Parameters
buffer

Implemented in Isis::IndependentCubeViewport, and Isis::MdiCubeViewport.

void Isis::CubeViewport::saveChanges ( CubeViewport )
signal

Emitted when changes should be saved.

Referenced by confirmClose().

void Isis::CubeViewport::scaleChanged ( )
signal

Emitted when zoom factor changed just before the repaint event.

Referenced by setScale(), and updateScrollBars().

void Isis::CubeViewport::screenPixelsChanged ( )
signal

Emitted when cube pixels that should be on the screen change.

Referenced by center(), onProgressTimer(), resizeEvent(), scrollContentsBy(), and setScale().

void Isis::CubeViewport::scrollBy ( int  dx,
int  dy 
)
slot

Move the scrollbars by dx/dy screen pixels.

Parameters
dx
dy

Definition at line 869 of file CubeViewport.cpp.

References scrollContentsBy(), and updateScrollBars().

void Isis::CubeViewport::scrollContentsBy ( int  dx,
int  dy 
)
protected
void Isis::CubeViewport::setAllBandStretches ( Stretch  stretch)

Sets a stretch for all bands.

Parameters
stretch

Definition at line 1960 of file CubeViewport.cpp.

References p_knownStretches.

Referenced by Isis::StretchTool::setStretchAcrossBands().

void Isis::CubeViewport::setBackground ( QColor  color)
inline

Sets the background color.

Parameters
color

Definition at line 258 of file CubeViewport.h.

References p_bgColor.

Referenced by Isis::SpecialPixelTool::apply().

void Isis::CubeViewport::setCaption ( )
void Isis::CubeViewport::setComboCount ( int  count)
inline

Sets the band bin combo box count.

Parameters
count

Definition at line 267 of file CubeViewport.h.

References p_comboCount.

Referenced by Isis::BandTool::setBandBin(), and Isis::BandTool::setList().

void Isis::CubeViewport::setComboIndex ( int  index)
inline

Sets the band bin combo box index.

Parameters
index

Definition at line 276 of file CubeViewport.h.

References p_comboIndex.

Referenced by Isis::BandTool::setBandBin(), and Isis::BandTool::setList().

void Isis::CubeViewport::setCube ( Cube cube)

This method sets the viewports cube.

Parameters
cube

Definition at line 421 of file CubeViewport.cpp.

References cube(), p_cube, and setCaption().

void Isis::CubeViewport::setCursorPosition ( int  x,
int  y 
)

Set the cursor position to x/y in the viewport.

Parameters
x
y

Definition at line 1851 of file CubeViewport.cpp.

void Isis::CubeViewport::setScale ( double  scale)
slot

Change the scale of the cube to the given parameter value.

This method will reset the scale value if the value passed in is too large or too small.

Parameters
scaleValue by which to scale the image.
History:
2010-07-12 Jeannie Walldren - Changed scale maximum value from hard-coded 16 to the max of the viewport width and height. Added scale minimum value of 1/min(samps,lines).

Definition at line 583 of file CubeViewport.cpp.

References contentsToCube(), cubeLines(), cubeSamples(), cubeToContents(), p_blueBuffer, p_grayBuffer, p_greenBuffer, p_redBuffer, p_scale, p_updatingBuffers, paintPixmap(), paintPixmapRects(), scale(), Isis::ViewportBuffer::scaleChanged(), scaleChanged(), screenPixelsChanged(), setCaption(), and updateScrollBars().

Referenced by Isis::FindTool::centerLinkedViewports(), keyPressEvent(), Isis::ZoomTool::setScale(), setScale(), and showEvent().

void Isis::CubeViewport::setScale ( double  scale,
double  sample,
double  line 
)
slot

Change the scale of the cube after moving samp/line to the center.

Parameters
scale
sample
line

Definition at line 666 of file CubeViewport.cpp.

References center(), Isis::ViewportBuffer::enable(), Isis::ViewportBuffer::enabled(), p_blueBuffer, p_grayBuffer, p_greenBuffer, p_paintPixmap, p_redBuffer, paintPixmap(), screenPixelsChanged(), and setScale().

void Isis::CubeViewport::setScale ( double  scale,
int  x,
int  y 
)
slot

Change the scale of the cube after moving x,y to the center.

Parameters
scale
x
y

Definition at line 650 of file CubeViewport.cpp.

References setScale(), and viewportToCube().

void Isis::CubeViewport::shiftPixmap ( int  dx,
int  dy 
)
private

Shifts the pixels on the pixmap without reading new data.

Parameters
dx
dy

Definition at line 1284 of file CubeViewport.cpp.

References p_bgColor, p_paintPixmap, p_pixmap, and paintPixmap().

Referenced by center(), and scrollContentsBy().

void Isis::CubeViewport::showEvent ( QShowEvent *  event)
slot

This method is called to initially show the viewport.

It will set the scale to show the entire cube and enable the gray buffer.

Definition at line 232 of file CubeViewport.cpp.

References Isis::ViewportBuffer::addStretchAction(), cubeLines(), cubeSamples(), Isis::ViewportBuffer::enable(), Isis::ViewportBuffer::enabled(), fitScale(), p_grayBuffer, p_paintPixmap, p_scale, paintPixmap(), and setScale().

QSize Isis::CubeViewport::sizeHint ( ) const
slot

Make viewports show up as 512 by 512.

Returns
QSize

Definition at line 566 of file CubeViewport.cpp.

void Isis::CubeViewport::stretchBlue ( const Stretch stretch)
slot

Sets the stretch for blue in rgb mode.

Parameters
stretch

Definition at line 2227 of file CubeViewport.cpp.

References blueBand(), p_blue, p_globalStretches, paintPixmap(), and Isis::Stretch::Pairs().

void Isis::CubeViewport::stretchGray ( const QString &  string)
slot
void Isis::CubeViewport::stretchGray ( const Stretch stretch)
slot

Sets the stretch for gray mode.

Parameters
stretch

Definition at line 2161 of file CubeViewport.cpp.

References Isis::Stretch::CopyPairs(), grayBand(), p_blue, p_globalStretches, p_gray, p_green, p_red, paintPixmap(), and Isis::Stretch::Pairs().

void Isis::CubeViewport::stretchGreen ( const Stretch stretch)
slot

Sets the stretch for green in rgb mode.

Parameters
stretch

Definition at line 2209 of file CubeViewport.cpp.

References greenBand(), p_globalStretches, p_green, paintPixmap(), and Isis::Stretch::Pairs().

void Isis::CubeViewport::stretchKnownGlobal ( )
slot

List<Tool *> p This stretches to the global stretch.

Definition at line 2130 of file CubeViewport.cpp.

References blueBand(), grayBand(), greenBand(), isGray(), p_globalStretches, redBand(), stretchBlue(), stretchGray(), stretchGreen(), and stretchRed().

Referenced by Isis::StretchTool::stretchChanged(), and Isis::StretchTool::stretchGlobal().

void Isis::CubeViewport::stretchRed ( const Stretch stretch)
slot

Sets the stretch for red in rgb mode.

Parameters
stretch

Definition at line 2191 of file CubeViewport.cpp.

References p_globalStretches, p_red, paintPixmap(), Isis::Stretch::Pairs(), and redBand().

void Isis::CubeViewport::updateScrollBars ( int  x,
int  y 
)
private

Update the scroll bar.

Parameters
x
y

Definition at line 1865 of file CubeViewport.cpp.

References cubeLines(), cubeSamples(), p_scale, and scaleChanged().

Referenced by center(), resizeEvent(), scrollBy(), and setScale().

void Isis::CubeViewport::viewportClosed ( CubeViewport )
signal

Emitted when viewport is closed.

void Isis::CubeViewport::viewportUpdated ( )
signal

Emitted when viewport updated.

void Isis::CubeViewport::viewRGB ( int  rband,
int  gband,
int  bband 
)
virtualslot
void Isis::CubeViewport::windowTitleChanged ( )
signal

Emitted when window title changes.

Referenced by setCaption().

Member Data Documentation

QColor Isis::CubeViewport::p_bgColor
private

The color to paint the background of the viewport.

Definition at line 504 of file CubeViewport.h.

Referenced by CubeViewport(), paintPixmap(), setBackground(), and shiftPixmap().

Brick* Isis::CubeViewport::p_bluBrick
private

Bricks for every color.

Definition at line 527 of file CubeViewport.h.

Referenced by CubeViewport(), and ~CubeViewport().

BandInfo Isis::CubeViewport::p_blue
private

Blue band info.

Definition at line 520 of file CubeViewport.h.

Referenced by blueBand(), bluePixel(), blueStretch(), paintPixmap(), setCaption(), stretchBlue(), stretchGray(), and viewRGB().

Camera* Isis::CubeViewport::p_camera
private

The camera from the cube.

Definition at line 507 of file CubeViewport.h.

Referenced by camera(), CubeViewport(), viewGray(), and viewRGB().

bool Isis::CubeViewport::p_color
private

Is the viewport in color?

Definition at line 516 of file CubeViewport.h.

Referenced by CubeViewport(), getAllWhatsThisInfo(), isColor(), isGray(), setCaption(), updateWhatsThis(), viewGray(), and viewRGB().

int Isis::CubeViewport::p_comboCount
private

Number of elements in band bin combo box.

Definition at line 522 of file CubeViewport.h.

Referenced by comboCount(), CubeViewport(), and setComboCount().

int Isis::CubeViewport::p_comboIndex
private

Current element chosen from combo box.

Definition at line 523 of file CubeViewport.h.

Referenced by comboIndex(), CubeViewport(), and setComboIndex().

Cube* Isis::CubeViewport::p_cube
private
CubeDataThread* Isis::CubeViewport::p_cubeData
private

Does all the cube I/O.

Definition at line 544 of file CubeViewport.h.

Referenced by cubeDataThread(), CubeViewport(), viewGray(), viewRGB(), and ~CubeViewport().

int Isis::CubeViewport::p_cubeId
private

Cube ID given from cube data thread for I/O.

Definition at line 545 of file CubeViewport.h.

Referenced by cubeDataChanged(), cubeID(), CubeViewport(), viewGray(), and viewRGB().

bool Isis::CubeViewport::p_cubeShown
private

Is the cube visible?

Definition at line 531 of file CubeViewport.h.

Referenced by cubeShown(), CubeViewport(), and paintEvent().

QString Isis::CubeViewport::p_cubeWhatsThisText
private

The text for the cube's What's this.

Definition at line 537 of file CubeViewport.h.

Referenced by CubeViewport(), and updateWhatsThis().

QVector< Stretch * >* Isis::CubeViewport::p_globalStretches
protected

Global stretches for each stretched band.

Definition at line 495 of file CubeViewport.h.

Referenced by CubeViewport(), stretchBlue(), stretchGray(), stretchGreen(), stretchKnownGlobal(), stretchRed(), and ~CubeViewport().

BandInfo Isis::CubeViewport::p_gray
private

Gray band info.

Definition at line 517 of file CubeViewport.h.

Referenced by grayBand(), grayPixel(), grayStretch(), setCaption(), stretchGray(), and viewGray().

BandInfo Isis::CubeViewport::p_green
private

Green band info.

Definition at line 519 of file CubeViewport.h.

Referenced by greenBand(), greenPixel(), greenStretch(), paintPixmap(), setCaption(), stretchGray(), stretchGreen(), and viewRGB().

Brick* Isis::CubeViewport::p_grnBrick
private

Bricks for every color.

Definition at line 526 of file CubeViewport.h.

Referenced by CubeViewport(), and ~CubeViewport().

UniversalGroundMap* Isis::CubeViewport::p_groundMap
private

The universal ground map from the cube.

Definition at line 509 of file CubeViewport.h.

Referenced by CubeViewport(), universalGroundMap(), and ~CubeViewport().

Brick* Isis::CubeViewport::p_gryBrick
private

Bricks for every color.

Definition at line 528 of file CubeViewport.h.

Referenced by CubeViewport(), and ~CubeViewport().

QImage* Isis::CubeViewport::p_image
private

The qimage.

Definition at line 532 of file CubeViewport.h.

Referenced by CubeViewport(), paintPixmap(), resizeEvent(), and ~CubeViewport().

QVector< Stretch * >* Isis::CubeViewport::p_knownStretches
protected

Stretches for each previously stretched band.

Definition at line 492 of file CubeViewport.h.

Referenced by CubeViewport(), forgetStretches(), setAllBandStretches(), viewGray(), viewRGB(), and ~CubeViewport().

bool Isis::CubeViewport::p_paintPixmap
private

Paint the pixmap?

Definition at line 533 of file CubeViewport.h.

Referenced by CubeViewport(), paintPixmap(), resizeEvent(), setScale(), shiftPixmap(), and showEvent().

QPixmap Isis::CubeViewport::p_pixmap
protected

The qpixmap.

Definition at line 489 of file CubeViewport.h.

Referenced by paintPixmap(), pixmap(), resizeEvent(), and shiftPixmap().

QList< QRect * >* Isis::CubeViewport::p_pixmapPaintRects
private

A list of rects that the viewport buffers have requested painted.

Definition at line 542 of file CubeViewport.h.

Referenced by CubeViewport(), paintPixmap(), paintPixmapRects(), scrollContentsBy(), and ~CubeViewport().

Brick* Isis::CubeViewport::p_pntBrick
private

Bricks for every color.

Definition at line 529 of file CubeViewport.h.

Referenced by bluePixel(), CubeViewport(), grayPixel(), greenPixel(), redPixel(), and ~CubeViewport().

QTimer* Isis::CubeViewport::p_progressTimer
private

Activated to update progress bar.

Definition at line 512 of file CubeViewport.h.

Referenced by CubeViewport(), enableProgress(), onProgressTimer(), and ~CubeViewport().

Projection* Isis::CubeViewport::p_projection
private

The projection from the cube.

Definition at line 508 of file CubeViewport.h.

Referenced by CubeViewport(), and projection().

BandInfo Isis::CubeViewport::p_red
private

Red band info.

Definition at line 518 of file CubeViewport.h.

Referenced by paintPixmap(), redBand(), redPixel(), redStretch(), setCaption(), stretchGray(), stretchRed(), and viewRGB().

Brick* Isis::CubeViewport::p_redBrick
private

Bricks for every color.

Definition at line 525 of file CubeViewport.h.

Referenced by CubeViewport(), and ~CubeViewport().

bool Isis::CubeViewport::p_saveEnabled
private

Has the cube changed?

Definition at line 530 of file CubeViewport.h.

Referenced by confirmClose(), cubeChanged(), CubeViewport(), and setCaption().

double Isis::CubeViewport::p_scale
private
bool Isis::CubeViewport::p_thisOwnsCubeData
private

if true then this owns the CubeDataThread, and should thus delete it

Definition at line 551 of file CubeViewport.h.

Referenced by CubeViewport(), and ~CubeViewport().

bool Isis::CubeViewport::p_updatingBuffers
private

Changing RGB and need to not repaint pixmap?

Definition at line 534 of file CubeViewport.h.

Referenced by center(), cubeContentsChanged(), cubeDataChanged(), CubeViewport(), paintPixmap(), resizeEvent(), scrollContentsBy(), and setScale().

QString Isis::CubeViewport::p_viewportWhatsThisText
private

The text for the viewport's what's this.

Definition at line 538 of file CubeViewport.h.

Referenced by resizeEvent(), and updateWhatsThis().

QString Isis::CubeViewport::p_whatsThisText
private

The text for What's this.

Definition at line 536 of file CubeViewport.h.

Referenced by CubeViewport(), and updateWhatsThis().


The documentation for this class was generated from the following files: