USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::CubeViewport Class Reference

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

#include <CubeViewport.h>

Inheritance diagram for Isis::CubeViewport:
Inheritance graph
[legend]
Collaboration diagram for Isis::CubeViewport:
Collaboration graph
[legend]

List of all members.

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.
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.
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.
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

For internal use only.

History:
2007-01-30 Tracie Sucharski, Add information message if spice not found.
History:
2007-02-07 Tracie Sucharski, Remove error message, decided it was more of a hassle to click ok when displaying many images without spice.
History:
2007-03-20 Tracie Sucharski, Add fitScaleMinDimension, fitScaleWidth and fitScaleHeight methods. Change cursor to wait cursor in paintPixmap.
History:
2007-04-13 Tracie Sucharski, Remove fitScaleMinDimension, turns out it was not needed.
History:
2007-09-11 Steven Lambright, Added double click signal
History:
2007-12-11 Steven Lambright, Added 1x1xn cube auto stretch support
History:
2008-06-19 Noah Hilt, Added a close event for saving and discarding changes and a method to set the cube.
History:
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.
History:
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.
History:
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.
History:
2009-10-23 Steven Lambright - Camera::SetBand is now called when switching the band being shown.
History:
2010-04-08 Steven Lambright and Eric Hyer - Now supports ViewportBuffer using threaded cube I/O
History:
2010-04-30 Steven Lambright - Bug fixes and better support for threaded cube I/O
History:
2010-05-20 Steven Lambright - Added memory of global stretches
History:
2010-05-24 Eric Hyer - Fixed bug where QPainter construction was being attempted with a potentially null pixmap
History:
2010-06-26 Eric Hyer - Moved MDI specific code to new child class called MdiCubeViewport. Fixed many include mistakes.
History:
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.
History:
2010-11-08 Eric Hyer - Added better mouseMove signal
History:
2010-12-01 Steven Lambright - The initial scale now uses fitScale so that it is consistent with the zoom tool.
History:
2011-03-30 Sharmila Prasad - Set the frame shadow and style to remove border around the image
History:
2011-03-31 Sharmila Prasad - Added band info to "whatsthis" API to store the whatsthis info in a PVL format
History:
2011-04-25 Steven Lambright - Fixed "center" and added more safety checks.
History:
2012-03-22 Steven Lambright and Jai Rideout - Fixed bug where screenPixelsChanged was not correctly emitted on resize.
History:
2012-05-29 Steven Lambright - Changed destructor to clean up the cube when necessary.
History:
2012-06-28 Steven Lambright - Stretching gray no longer removes stretch special pixel values from the RGB stretches. References #684.
History:
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.

Definition at line 116 of file CubeViewport.h.


Constructor & Destructor Documentation

Isis::CubeViewport::CubeViewport ( Cube cube,
CubeDataThread cubeData = 0,
QWidget parent = 0 
)
Isis::CubeViewport::~CubeViewport (  )  [virtual]

Member Function Documentation

int Isis::CubeViewport::blueBand (  )  const [inline]
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 1624 of file CubeViewport.cpp.

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

Stretch Isis::CubeViewport::blueStretch (  )  const
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:
rect Area to update screen

Definition at line 1099 of file CubeViewport.cpp.

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

Referenced by Isis::ViewportBuffer::doQueuedActions().

Camera* Isis::CubeViewport::camera (  )  const [inline]
void Isis::CubeViewport::center ( double  sample,
double  line 
) [slot]

Bring the cube sample/line the center.

Parameters:
sample 
line 

Definition at line 735 of file CubeViewport.cpp.

References cubeToContents(), p_blueBuffer, p_grayBuffer, p_greenBuffer, p_redBuffer, p_updatingBuffers, paintPixmapRects(), Isis::ViewportBuffer::pan(), screenPixelsChanged(), shiftPixmap(), updateScrollBars(), x, and y.

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 721 of file CubeViewport.cpp.

References line, sample, and viewportToCube().

Referenced by Isis::PanTool::mouseButtonRelease(), and setScale().

void Isis::CubeViewport::changeCursor ( QCursor  cursor  )  [slot]

Allows users to change the cursor type on the viewport.

Parameters:
cursor 

Definition at line 2347 of file CubeViewport.cpp.

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 515 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 793 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 213 of file CubeViewport.h.

References p_cube.

Referenced by confirmClose(), Isis::MatchTool::createPoint(), cubeContentsChanged(), cubeDataChanged(), 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::MatchTool::mouseButtonRelease(), Isis::EditTool::mouseButtonRelease(), 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(), Isis::StretchTool::stretchBand(), Isis::AdvancedTrackTool::TrackMosaicOrigin(), Isis::EditTool::undoAll(), Isis::EditTool::undoEdit(), Isis::MeasureTool::updateDist(), Isis::AdvancedTrackTool::updateRow(), Isis::SunShadowTool::updateTool(), Isis::SpectralPlotTool::updateTool(), Isis::BandTool::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 435 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 551 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 2283 of file CubeViewport.cpp.

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

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

void Isis::CubeViewport::cubeDataChanged ( int  cubeId,
const Isis::Brick data 
) [protected, virtual, slot]

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

Parameters:
cubeId Cube that the changed brick belongs to
data New data

Reimplemented in Isis::IndependentCubeViewport.

Definition at line 447 of file CubeViewport.cpp.

References cube(), cubeToViewport(), doneWithData(), ex, 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(), Isis::Buffer::SampleDimension(), sl, and ss.

Referenced by CubeViewport().

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

Definition at line 325 of file CubeViewport.h.

References p_cubeData.

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

Definition at line 332 of file CubeViewport.h.

References p_cubeId.

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

int Isis::CubeViewport::cubeLines (  )  const
int Isis::CubeViewport::cubeSamples (  )  const
bool Isis::CubeViewport::cubeShown (  )  const [inline]

Return if the cube is visible.

Definition at line 183 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 830 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 1780 of file CubeViewport.cpp.

References g.

QPoint Isis::CubeViewport::cursorPosition (  )  const

Return the cursor position in the viewport.

Returns:
QPoint

Definition at line 1805 of file CubeViewport.cpp.

References g.

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 967 of file CubeViewport.cpp.

References p_progressTimer, and progressChanged().

Referenced by Isis::ViewportBuffer::enqueueAction().

bool Isis::CubeViewport::eventFilter ( QObject o,
QEvent *  e 
) [protected, virtual]

Event filter to watch for mouse events on viewport.

Parameters:
o 
e 
Returns:
bool

Reimplemented in Isis::IndependentCubeViewport.

Definition at line 1680 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

For internal use only.

Definition at line 2241 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 2269 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 2256 of file CubeViewport.cpp.

References cubeSamples(), and scale().

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

void Isis::CubeViewport::forgetStretches (  ) 

Resets all remembered stretches.

Definition at line 1944 of file CubeViewport.cpp.

References p_knownStretches, and stretch.

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 1359 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(), sl, ss, 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 1461 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 1482 of file CubeViewport.cpp.

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

Referenced by getAllWhatsThisInfo(), Isis::FileTool::saveAs_FullResolution(), Isis::FileTool::saveAsCubeByOption(), Isis::FileTool::saveAsEnlargedCube(), Isis::FileTool::saveAsReducedCube(), and updateWhatsThis().

int Isis::CubeViewport::grayBand (  )  const [inline]
ViewportBuffer* Isis::CubeViewport::grayBuffer (  )  [inline]
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 1640 of file CubeViewport.cpp.

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

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

Stretch Isis::CubeViewport::grayStretch (  )  const
int Isis::CubeViewport::greenBand (  )  const [inline]
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 1608 of file CubeViewport.cpp.

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

Stretch Isis::CubeViewport::greenStretch (  )  const
bool Isis::CubeViewport::isColor (  )  const [inline]
bool Isis::CubeViewport::isGray (  )  const [inline]
void Isis::CubeViewport::keyPressEvent ( QKeyEvent *  e  )  [protected, virtual]

Process arrow keystrokes on cube.

Parameters:
e 

Definition at line 1741 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 Isis::IndependentCubeViewport::eventFilter(), and eventFilter().

void Isis::CubeViewport::mouseLeave (  )  [signal]

Emitted when the mouse leaves the viewport.

Referenced by Isis::IndependentCubeViewport::eventFilter(), and eventFilter().

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

Emitted when the mouse moves.

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

Emitted when the mouse moves.

Referenced by eventFilter().

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

Move the cursor by x,y if possible.

Parameters:
x 
y 

Definition at line 1818 of file CubeViewport.cpp.

References g.

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 257 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  )  [protected, virtual]

Repaint the viewport.

Parameters:
e [in] (QPaintEvent *) event

For internal use only.

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 1084 of file CubeViewport.cpp.

References p_cubeShown.

void Isis::CubeViewport::paintPixmap ( QRect  rect  )  [private]
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 774 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 253 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]
int Isis::CubeViewport::redBand (  )  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 1592 of file CubeViewport.cpp.

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

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

Stretch Isis::CubeViewport::redStretch (  )  const
void Isis::CubeViewport::resizeEvent ( QResizeEvent *  e  )  [protected, virtual]
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.

Referenced by Isis::ViewportBuffer::doStretchAction().

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

Emitted when changes should be saved.

Referenced by confirmClose().

double Isis::CubeViewport::scale (  )  const [inline]
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 864 of file CubeViewport.cpp.

References maximum, scrollContentsBy(), updateScrollBars(), x, and y.

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 1954 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 243 of file CubeViewport.h.

References p_bgColor.

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

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

This method sets the viewports cube.

Parameters:
cube 

Definition at line 416 of file CubeViewport.cpp.

References 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 1845 of file CubeViewport.cpp.

References g.

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 645 of file CubeViewport.cpp.

References line, setScale(), and viewportToCube().

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 661 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  )  [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:
scale Value by which to scale the image.

For internal use only.

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 578 of file CubeViewport.cpp.

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

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

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 1279 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.

Reimplemented in Isis::IndependentCubeViewport.

Definition at line 227 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 561 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 2221 of file CubeViewport.cpp.

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

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

Sets the stretch for gray mode.

Parameters:
stretch 

Definition at line 2155 of file CubeViewport.cpp.

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

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

Sets the stretch for green in rgb mode.

Parameters:
stretch 

Definition at line 2203 of file CubeViewport.cpp.

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

void Isis::CubeViewport::stretchGreen ( const QString &  string  )  [slot]
void Isis::CubeViewport::stretchKnownGlobal (  )  [slot]

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

Definition at line 2124 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 2185 of file CubeViewport.cpp.

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

void Isis::CubeViewport::stretchRed ( const QString &  string  )  [slot]
UniversalGroundMap* Isis::CubeViewport::universalGroundMap (  )  const [inline]
void Isis::CubeViewport::updateScrollBars ( int  x,
int  y 
) [private]

Update the scroll bar.

Parameters:
x 
y 

Definition at line 1859 of file CubeViewport.cpp.

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

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

void Isis::CubeViewport::updateWhatsThis (  )  [private]
void Isis::CubeViewport::viewGray ( int  band  )  [virtual, slot]
void Isis::CubeViewport::viewportClosed ( CubeViewport  )  [signal]

Emitted when viewport is closed.

void Isis::CubeViewport::viewportToCube ( int  x,
int  y,
double &  sample,
double &  line 
) const
void Isis::CubeViewport::viewportUpdated (  )  [signal]

Emitted when viewport updated.

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

void Isis::CubeViewport::viewRGB ( int  rband,
int  gband,
int  bband 
) [virtual, slot]
void Isis::CubeViewport::windowTitleChanged (  )  [signal]

Emitted when window title changes.

Referenced by setCaption().


Member Data Documentation

The color to paint the background of the viewport.

Definition at line 471 of file CubeViewport.h.

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

Bricks for every color.

Definition at line 491 of file CubeViewport.h.

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

Blue band info.

Definition at line 487 of file CubeViewport.h.

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

The camera from the cube.

Definition at line 474 of file CubeViewport.h.

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

Is the viewport in color?

Definition at line 483 of file CubeViewport.h.

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

Does all the cube I/O.

Definition at line 508 of file CubeViewport.h.

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

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

Definition at line 509 of file CubeViewport.h.

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

Is the cube visible?

Definition at line 495 of file CubeViewport.h.

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

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

Definition at line 501 of file CubeViewport.h.

Referenced by CubeViewport(), and updateWhatsThis().

Global stretches for each stretched band.

Definition at line 462 of file CubeViewport.h.

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

Gray band info.

Definition at line 484 of file CubeViewport.h.

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

Green band info.

Definition at line 486 of file CubeViewport.h.

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

Bricks for every color.

Definition at line 490 of file CubeViewport.h.

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

The universal ground map from the cube.

Definition at line 476 of file CubeViewport.h.

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

Bricks for every color.

Definition at line 492 of file CubeViewport.h.

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

QImage* Isis::CubeViewport::p_image [private]

The qimage.

Definition at line 496 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 459 of file CubeViewport.h.

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

Paint the pixmap?

Definition at line 497 of file CubeViewport.h.

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

QPixmap Isis::CubeViewport::p_pixmap [protected]

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

Definition at line 506 of file CubeViewport.h.

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

Bricks for every color.

Definition at line 493 of file CubeViewport.h.

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

Activated to update progress bar.

Definition at line 479 of file CubeViewport.h.

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

The projection from the cube.

Definition at line 475 of file CubeViewport.h.

Referenced by CubeViewport(), and projection().

Red band info.

Definition at line 485 of file CubeViewport.h.

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

Bricks for every color.

Definition at line 489 of file CubeViewport.h.

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

Has the cube changed?

Definition at line 494 of file CubeViewport.h.

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

double Isis::CubeViewport::p_scale [private]

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

Definition at line 515 of file CubeViewport.h.

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

Changing RGB and need to not repaint pixmap?

Definition at line 498 of file CubeViewport.h.

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

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

Definition at line 502 of file CubeViewport.h.

Referenced by resizeEvent(), and updateWhatsThis().

The text for What's this.

Definition at line 500 of file CubeViewport.h.

Referenced by CubeViewport(), and updateWhatsThis().


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