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)

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:
viewport viewport that will use the buffer
cubeData cube to read from
cubeId The identifier for the cube in the data thread

References DataReady(), DoneWithData(), and ReadCube().

Isis::ViewportBuffer::~ViewportBuffer (  )  [virtual]

Updates total buffer size on destruction.

References DataReady(), DoneWithData(), emptyBuffer(), and ReadCube().


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.

References Isis::ViewportBufferAction::stretch.

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 fillBuffer(), 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%

References totalUnfilledArea(), and working().

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

void Isis::ViewportBuffer::DataReady ( void *  requester,
int  cubeId,
const Isis::Brick *  brick 
) [slot]

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

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

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

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

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:
force If true, memory will be freed regardless of current total buffer size (b/w -> rgb for example).

Referenced by ~ViewportBuffer().

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,
const Brick *  data 
)
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_, bufferXYRect(), Isis::iException::Message(), and Isis::iException::Programmer.

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

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_, Isis::iException::Message(), and Isis::iException::Programmer.

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

References Isis::CubeViewport::cubeLines(), Isis::CubeViewport::cubeSamples(), and working().

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::CubeViewport::scale(), 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 

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

void Isis::ViewportBuffer::resizedViewport (  ) 
void Isis::ViewportBuffer::scaleChanged (  ) 

Call this when zoomed, re-reads visible area.

Exceptions:
iException - "Unable to change scale"

References _FILEINFO_, Isis::iException::Message(), and Isis::iException::Programmer.

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::fill, Isis::ViewportBufferAction::getActionType(), Isis::ViewportBufferFill::getReadPosition(), and Isis::ViewportBufferFill::getRect().

Referenced by currentProgress().

bool Isis::ViewportBuffer::working (  ) 

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