USGS

Isis 3.0 Developer's Reference (API)

Home

Isis::ViewportBuffer Class Reference

Reads and stores visible DN values. More...

#include <ViewportBuffer.h>

Inherits QObject.

List of all members.

Public Slots

void DataReady (void *requester, int cubeId, const Isis::Brick *brick)
 This method is called when requested bricks become available.

Signals

void ReadCube (int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
 Ask the cube data thread for data.
void DoneWithData (int, const Isis::Brick *)
 Tell cube data thread we're done with a brick.

Public Member Functions

 ViewportBuffer (CubeViewport *viewport, CubeDataThread *cubeData, int cubeId)
 ViewportBuffer constructor.
virtual ~ViewportBuffer ()
 Updates total buffer size on destruction.
const std::vector< double > & getLine (int line)
 Retrieves a line from the buffer.
void resizedViewport ()
 Call this when the viewport is resized (not zoomed).
void pan (int deltaX, int deltaY)
 Call this when the viewport is panned.
void scaleChanged ()
 Call this when zoomed, re-reads visible area.
void fillBuffer (QRect rect)
 This method will convert the rect to sample/line positions and read from the cube into the buffer.
void fillBuffer (QRect rect, const Brick *data)
 This method will convert the rect to sample/line positions and read from the cube into the buffer.
void emptyBuffer (bool force=false)
 This is meant to clear up ram on non-active viewports.
QRect bufferXYRect ()
 Returns a rect, in screen pixels, of the area this buffer covers.
void setBand (int band)
 Sets the band to read from, the buffer will be re-read if the band changes.
int getBand ()
 Return the band associated with this viewport buffer.
void enable (bool enabled)
 This turns on or off reading from the cube.
void addStretchAction ()
 When all current operations finish the cube viewport will be asked to do a stretch if you call this.
double currentProgress ()
 Returns the viewport buffer's loading progress.
double totalUnfilledArea ()
 This returns the amount of area in the queue that needs new cube data/will be filled by fill actions.
bool enabled ()
 Returns whether the buffer is enabled (reading data) or not.
bool working ()
 This tests if queued actions exist in the viewport buffer.
bool hasEntireCube ()
 Method to see if the entire cube is in the buffer.

Detailed Description

Reads and stores visible DN values.

This class manages visible pixels in a CubeViewport. This class is responsible for reading from the Cube only what is necessary and gives fast access to visible DNs.

Author:
2009-03-26 Steven Lambright and Noah Hilt

Constructor & Destructor Documentation

Isis::ViewportBuffer::ViewportBuffer ( CubeViewport viewport,
CubeDataThread cubeData,
int  cubeId 
)

ViewportBuffer constructor.

Viewport and Cube can not be null. Band is not initialized

Parameters:
viewportviewport that will use the buffer
cubeDatacube to read from
cubeIdThe identifier for the cube in the data thread
Isis::ViewportBuffer::~ViewportBuffer ( ) [virtual]

Updates total buffer size on destruction.


Member Function Documentation

void Isis::ViewportBuffer::addStretchAction ( )

When all current operations finish the cube viewport will be asked to do a stretch if you call this.

Existing requests will be removed.

Referenced by Isis::IndependentCubeViewport::resetKnownGlobal(), Isis::CubeViewport::showEvent(), Isis::CubeViewport::viewGray(), and Isis::CubeViewport::viewRGB().

QRect Isis::ViewportBuffer::bufferXYRect ( )

Returns a rect, in screen pixels, of the area this buffer covers.

Author:
slambright (4/30/2010)
Returns:
QRect

References size.

Referenced by Isis::StretchTool::histFromBuffer(), Isis::ScatterPlotWindow::paint(), Isis::CubeViewport::scrollContentsBy(), and Isis::StretchTool::statsFromBuffer().

double Isis::ViewportBuffer::currentProgress ( )

Returns the viewport buffer's loading progress.

Returns:
0 to 1 where 1 is 100%

Referenced by Isis::CubeViewport::onProgressTimer().

void Isis::ViewportBuffer::DoneWithData ( int  ,
const Isis::Brick  
) [signal]

Tell cube data thread we're done with a brick.

void Isis::ViewportBuffer::emptyBuffer ( bool  force = false)

This is meant to clear up ram on non-active viewports.

cubeViewport is supposed to call this method on viewports buffers that are not related to the active viewport.

Parameters:
forceIf true, memory will be freed regardless of current total buffer size (b/w -> rgb for example).
void Isis::ViewportBuffer::enable ( bool  enabled)

This turns on or off reading from the cube.

If enabled is true the buffer will be re-read.

Parameters:
enabled

Referenced by Isis::CubeViewport::setScale(), and Isis::CubeViewport::showEvent().

bool Isis::ViewportBuffer::enabled ( ) [inline]

Returns whether the buffer is enabled (reading data) or not.

Returns:
bool

Referenced by Isis::CubeViewport::setScale(), and Isis::CubeViewport::showEvent().

void Isis::ViewportBuffer::fillBuffer ( QRect  rect)

This method will convert the rect to sample/line positions and read from the cube into the buffer.

The rect is in viewport pixels.

Parameters:
rect

References _FILEINFO_.

Referenced by Isis::CubeViewport::cubeContentsChanged(), and Isis::CubeViewport::cubeDataChanged().

int Isis::ViewportBuffer::getBand ( ) [inline]

Return the band associated with this viewport buffer.

Referenced by Isis::CubeViewport::getAllWhatsThisInfo(), Isis::CubeViewport::viewGray(), and Isis::CubeViewport::viewRGB().

const vector< double > & Isis::ViewportBuffer::getLine ( int  line)

Retrieves a line from the buffer.

Line is relative to the top of the visible area of the cube in the viewport.

Parameters:
line
Returns:
const vector<double> &

References _FILEINFO_.

Referenced by Isis::StretchTool::histFromBuffer(), Isis::ScatterPlotWindow::paint(), and Isis::StretchTool::statsFromBuffer().

bool Isis::ViewportBuffer::hasEntireCube ( )

Method to see if the entire cube is in the buffer.

Returns:
bool

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

void Isis::ViewportBuffer::pan ( int  deltaX,
int  deltaY 
)

Call this when the viewport is panned.

DeltaX and deltaY are relative to the direction the buffer needs to shift.

Parameters:
deltaX
deltaY

References Isis::ViewportBufferTransform::resizeFirst(), round, Isis::ViewportBufferTransform::setResize(), and Isis::ViewportBufferTransform::setTranslation().

Referenced by Isis::CubeViewport::center(), and Isis::CubeViewport::scrollContentsBy().

void Isis::ViewportBuffer::ReadCube ( int  cubeId,
int  startSample,
int  startLine,
int  endSample,
int  endLine,
int  band,
void *  caller 
) [signal]

Ask the cube data thread for data.

Parameters:
cubeId
startSample
startLine
endSample
endLine
band
caller
void Isis::ViewportBuffer::resizedViewport ( )
void Isis::ViewportBuffer::scaleChanged ( )

Call this when zoomed, re-reads visible area.

Exceptions:
iException- "Unable to change scale"

References _FILEINFO_.

Referenced by Isis::CubeViewport::setScale().

void Isis::ViewportBuffer::setBand ( int  band)

Sets the band to read from, the buffer will be re-read if the band changes.

Parameters:
band

Referenced by Isis::CubeViewport::viewGray(), and Isis::CubeViewport::viewRGB().

double Isis::ViewportBuffer::totalUnfilledArea ( )

This returns the amount of area in the queue that needs new cube data/will be filled by fill actions.

Returns:
double

References Isis::ViewportBufferAction::getActionType(), Isis::ViewportBufferFill::getReadPosition(), and Isis::ViewportBufferFill::getRect().


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