Isis Developer Reference
|
Buffer for containing a two dimensional section of an image. More...
#include <Portal.h>
Public Member Functions | |
Portal (const int bufSamps, const int bufLines, const Isis::PixelType type, const double hotSamp=-0.5, const double hotLine=-0.5) | |
Constructs a Portal object. | |
~Portal () | |
Destroys the Portal object. | |
void | SetPosition (const double sample, const double line, const int band) |
Sets the line and sample position of the buffer. | |
void | SetHotSpot (const double sample=-0.5, const double line=-0.5) |
Sets the line and sample offsets for the buffer. | |
int | SampleDimension () const |
Returns the number of samples in the shape buffer. | |
int | LineDimension () const |
Returns the number of lines in the shape buffer. | |
int | BandDimension () const |
Returns the number of bands in the shape buffer. | |
int | size () const |
Returns the total number of pixels in the shape buffer. | |
int | Sample (const int index=0) const |
Returns the sample position associated with a shape buffer index. | |
int | Line (const int index=0) const |
Returns the line position associated with a shape buffer index. | |
int | Band (const int index=0) const |
Returns the band position associated with a shape buffer index. | |
void | Position (const int index, int &i_samp, int &i_line, int &i_band) const |
Returns the sample, line, and band position associated with a shape buffer index. | |
int | Index (const int i_samp, const int i_line, const int i_band) const |
Given a sample, line, and band position, this returns the appropriate index in the shape buffer. | |
double | at (const int index) const |
Returns the value in the shape buffer at the given index. | |
double & | operator[] (const int index) |
Returns the value in the shape buffer at given index. | |
const double & | operator[] (const int index) const |
Returns the value in the shape buffer at given index. | |
double * | DoubleBuffer () const |
Returns the value of the shape buffer. | |
void | Copy (const Buffer &in, bool includeRawBuf=true) |
Allows copying of the buffer contents to another Buffer. | |
bool | CopyOverlapFrom (const Buffer &in) |
Allows copying of the buffer contents of a larger buffer to another same size or smaller Buffer, using their base positions to relate data. | |
void * | RawBuffer () const |
Returns a void pointer to the raw buffer. | |
Isis::PixelType | PixelType () const |
Returns the raw buffer pixel type. | |
Protected Member Functions | |
void | SetBasePosition (const int start_sample, const int start_line, const int start_band) |
This method is used to set the base position of the shape buffer. | |
void | SetBaseSample (const int start_samp) |
This method is used to set the base sample position of the shape buffer. | |
void | SetBaseLine (const int start_line) |
This method is used to set the base line position of the shape buffer. | |
void | SetBaseBand (const int start_band) |
This method is used to set the base band position of the shape buffer. | |
void | Allocate () |
Size or resize the memory buffer. | |
Protected Attributes | |
int | p_sample |
Starting sample to read/write. | |
int | p_nsamps |
Number of samples to read/write. | |
int | p_line |
Starting line to read/write. | |
int | p_nlines |
Number of lines to read/write. | |
int | p_band |
Starting band to read/write. | |
int | p_nbands |
Number of bands to read/write. | |
int | p_npixels |
Number of pixels (nsamps * nlines * nbands) | |
double * | p_buf |
Shape buffer allocated to the size of npixels for handling reads/writes. | |
const Isis::PixelType | p_pixelType |
The pixel type of the raw buffer. | |
void * | p_rawbuf |
The raw dm read from the disk. | |
Buffer for containing a two dimensional section of an image.
This class is a Buffer. The shape of the buffer is two dimensional in the line and sample directions only. The band dimension is always one. This class provides a random access window into a cube. The position can be set to any line, sample and band, including outside the image.
If you would like to see Portal being used in implementation, see the ProcessRubberSheet class
|
inline |
Constructs a Portal object.
The hotspot defaults of (-0.5,-0.5) cause the nearest neighbor to the requested pixel to be returned in the top left corner of the portal buffer
bufSamps | The number of samples in the portal. |
bufLines | The number of lines in the portal. |
type | Type of pixel in raw buffer |
hotSamp | The point of interest within the buffer in the sample direction. When a buffer is being setup, the hotSamp will be subtracted from the point of interest to give a buffer of the requested size around the hot spot. This number is zero based. Defaults to 0.5 |
hotLine | The point of interest within the buffer in the line direction. When a buffer is being setup, the hotLine will be subtracted from the point of interest to give a buffer of the requested size around the hot spot. This number is zero based. Defaults to 0.5 |
|
inline |
Destroys the Portal object.
|
protectedinherited |
Size or resize the memory buffer.
Isis::iException::System | - Memory allocation failed |
References _FILEINFO_, Isis::Message::MemoryAllocationFailed(), Isis::Buffer::p_buf, Isis::Buffer::p_npixels, Isis::Buffer::p_pixelType, Isis::Buffer::p_rawbuf, Isis::SizeOf(), and Isis::IException::Unknown.
Referenced by Isis::Buffer::Buffer(), Isis::Buffer::Buffer(), and Isis::Brick::Resize().
|
inherited |
Returns the value in the shape buffer at the given index.
index | Index position in buffer. Out of bounds index is trapped. |
Isis::iException::Programmer | - Array Subscript not in range |
References _FILEINFO_, Isis::Message::ArraySubscriptNotInRange(), Isis::Buffer::p_buf, Isis::Buffer::p_npixels, and Isis::IException::Programmer.
Referenced by Isis::CubeDataThreadTester::BrickChanged(), Isis::ViewportBuffer::fillBuffer(), Isis::CubeDataThreadTester::ReadBrick(), and Isis::CubeDataThreadTester::ReadWriteBrick().
|
inherited |
Returns the band position associated with a shape buffer index.
The shape buffer is one dimensional. Let us assume a nsamps=2, nlines=3, and nbands=2. Therefore the total size of the shape buffer is 12 and valid index values are 0-11. Indexes 0-5 will return band 1 and 6-11 will return band 2.
index | Shape buffer index to map to a band position. Defaults to 0. |
References Isis::Buffer::p_band, Isis::Buffer::p_nlines, and Isis::Buffer::p_nsamps.
Referenced by Isis::Buffer::CopyOverlapFrom(), Isis::IndependentCubeViewport::cubeDataChanged(), and Isis::Buffer::Position().
|
inlineinherited |
Returns the number of bands in the shape buffer.
References Isis::Buffer::p_nbands.
Referenced by Isis::IndependentCubeViewport::cubeDataChanged().
|
inherited |
Allows copying of the buffer contents to another Buffer.
in | The Buffer to be copied. |
includeRawBuf | Whether to include raw dm read from disk |
Isis::iException::Programmer | - Input and Output buffers are not the same size |
Isis::iException::Programmer | - Input and Output buffers do not use the same pixel type |
References _FILEINFO_, Isis::Buffer::p_buf, Isis::Buffer::p_npixels, Isis::Buffer::p_pixelType, Isis::Buffer::p_rawbuf, Isis::IException::Programmer, and Isis::SizeOf().
Referenced by Isis::Buffer::Buffer().
|
inherited |
Allows copying of the buffer contents of a larger buffer to another same size or smaller Buffer, using their base positions to relate data.
This does not copy the raw buffer.
in | The Buffer to be copied. |
References Isis::Buffer::Band(), Isis::Buffer::Line(), Isis::Buffer::p_band, Isis::Buffer::p_line, Isis::Buffer::p_nbands, Isis::Buffer::p_nlines, Isis::Buffer::p_npixels, Isis::Buffer::p_nsamps, Isis::Buffer::p_sample, Isis::Buffer::Sample(), and Isis::Buffer::size().
|
inlineinherited |
Returns the value of the shape buffer.
References Isis::Buffer::p_buf.
Referenced by Isis::Process::CalculateStatistics(), Isis::IndependentCubeViewport::cubeDataChanged(), Isis::Cube::histogram(), Isis::DemShape::localRadius(), and Isis::Cube::statistics().
|
inherited |
Given a sample, line, and band position, this returns the appropriate index in the shape buffer.
i_samp | Sample position. |
i_line | Line position. |
i_band | Band position. |
Isis::iException::Programmer | - Array Subscript not in range |
References _FILEINFO_, Isis::Message::ArraySubscriptNotInRange(), Isis::Buffer::p_band, Isis::Buffer::p_line, Isis::Buffer::p_nbands, Isis::Buffer::p_nlines, Isis::Buffer::p_nsamps, Isis::Buffer::p_sample, and Isis::IException::Programmer.
Referenced by Isis::ViewportBuffer::fillBuffer().
|
inherited |
Returns the line position associated with a shape buffer index.
The shape buffer is one dimensional. Let us assume a nsamps=2, nlines=3, and nbands=2. Therefore the total size of the shape buffer is 12 and valid index values are 0-11. Line(0), Line(1), Line(6) and Line(7), will return a 1, Line(2), Line(3), Line(8) and Line(9) will return a 2, and Line(4), Line(5), Line(10), and Line(11) will return a 3.
index | Shape buffer index to map to a line position. Defaults to 0 |
References Isis::Buffer::p_line, Isis::Buffer::p_nlines, and Isis::Buffer::p_nsamps.
Referenced by Isis::Buffer::CopyOverlapFrom(), Isis::IndependentCubeViewport::cubeDataChanged(), Isis::CubeViewport::cubeDataChanged(), Isis::ViewportBuffer::fillBuffer(), Isis::Buffer::Position(), Isis::QtExporter::writeGrayscale(), and Isis::StreamExporter::writeGrayscale().
|
inlineinherited |
Returns the number of lines in the shape buffer.
References Isis::Buffer::p_nlines.
Referenced by Isis::IndependentCubeViewport::cubeDataChanged(), Isis::CubeViewport::cubeDataChanged(), and Isis::ViewportBuffer::fillBuffer().
|
inlineinherited |
Returns the value in the shape buffer at given index.
index | Index position in buffer. No out of bounds index is checked |
References Isis::Buffer::p_buf.
|
inlineinherited |
Returns the value in the shape buffer at given index.
index | Index position in buffer. No out of bounds index is checked |
References Isis::Buffer::p_buf.
|
inlineinherited |
|
inherited |
Returns the sample, line, and band position associated with a shape buffer index.
Performs the same function as the Sample, Line, and Band methods.
index | Shape buffer index to map to a band position. |
i_samp | Sample position in shape buffer at index. |
i_line | Line position in shape buffer at index |
i_band | Band position in shape buffer at index. |
References Isis::Buffer::Band(), Isis::Buffer::Line(), and Isis::Buffer::Sample().
|
inlineinherited |
Returns a void pointer to the raw buffer.
Cast this void pointer using information from the PixelType() method
References Isis::Buffer::p_rawbuf.
|
inherited |
Returns the sample position associated with a shape buffer index.
The shape buffer is one dimensional. Let us assume a nsamps=2, nlines=3, and nbands=2. Therefore the total size of the shape buffer is 12 and valid index values are 0-11. Sample(0), Sample(2), Sample(4), etc will return a 1 while Sample(1), Sample(3), Sample(5), etc will return a 2.
index | Shape buffer index to map to a sample position. Defaults to 0. |
References Isis::Buffer::p_nsamps, and Isis::Buffer::p_sample.
Referenced by Isis::Buffer::CopyOverlapFrom(), Isis::IndependentCubeViewport::cubeDataChanged(), Isis::CubeViewport::cubeDataChanged(), Isis::ViewportBuffer::fillBuffer(), and Isis::Buffer::Position().
|
inlineinherited |
Returns the number of samples in the shape buffer.
References Isis::Buffer::p_nsamps.
Referenced by Isis::IndependentCubeViewport::cubeDataChanged(), Isis::CubeViewport::cubeDataChanged(), and Isis::ViewportBuffer::fillBuffer().
|
inlineprotectedinherited |
This method is used to set the base band position of the shape buffer.
start_band | Starting band to set |
References Isis::Buffer::p_band.
Referenced by Isis::Brick::SetBaseBand(), and Isis::Buffer::SetBasePosition().
|
inlineprotectedinherited |
This method is used to set the base line position of the shape buffer.
start_line | Starting line to set |
References Isis::Buffer::p_line.
Referenced by Isis::Brick::SetBaseLine(), and Isis::Buffer::SetBasePosition().
|
protectedinherited |
This method is used to set the base position of the shape buffer.
In general it is used by BufferManager objects to progress sequentially through a cube by line, tile, boxcar, etc.
start_sample | Starting sample to set. |
start_line | Starting line to set. |
start_band | Starting band to set. |
References Isis::Buffer::SetBaseBand(), Isis::Buffer::SetBaseLine(), and Isis::Buffer::SetBaseSample().
Referenced by Isis::Brick::SetBasePosition(), Isis::BufferManager::setpos(), and SetPosition().
|
inlineprotectedinherited |
This method is used to set the base sample position of the shape buffer.
start_samp | Starting sample to set |
References Isis::Buffer::p_sample.
Referenced by Isis::Buffer::SetBasePosition(), and Isis::Brick::SetBaseSample().
|
inline |
Sets the line and sample offsets for the buffer.
The defaults of (-0.5,-0.5) cause the nearest neighbor to the requested pixel to be returned in the top left corner of the portal buffer
sample | The sample offset for the buffer. A zero for this parameter will cause the buffer to be alligned with the hot spot at the left edge of the buffer. Defaults to 0.5 |
line | The line offset for the buffer. A zero for this parameter will cause the buffer to be alligned with the hot spot at the top edge of the buffer. Defaults to 0.5 |
|
inline |
Sets the line and sample position of the buffer.
The hotspot location is subtracted from this position to set the upper left corner of the buffer.
sample | The sample position of the buffer. |
line | The line position of the buffer. |
band | The band position of the buffer. |
References Isis::Buffer::SetBasePosition().
Referenced by Isis::DemShape::localRadius(), Isis::Nearest::operator()(), and Isis::Average::operator()().
|
inlineinherited |
Returns the total number of pixels in the shape buffer.
References Isis::Buffer::p_npixels.
Referenced by Isis::CubeDataThreadTester::BrickChanged(), Isis::Process::CalculateStatistics(), Isis::Buffer::CopyOverlapFrom(), Isis::IndependentCubeViewport::cubeDataChanged(), Isis::ViewportBuffer::fillBuffer(), Isis::Cube::histogram(), Isis::CubeDataThreadTester::ReadBrick(), Isis::CubeDataThreadTester::ReadWriteBrick(), Isis::ProcessByBoxcar::StartProcess(), and Isis::Cube::statistics().
|
protectedinherited |
Starting band to read/write.
Referenced by Isis::Buffer::Band(), Isis::Buffer::Buffer(), Isis::Buffer::Buffer(), Isis::Buffer::CopyOverlapFrom(), Isis::Buffer::Index(), and Isis::Buffer::SetBaseBand().
|
protectedinherited |
Shape buffer allocated to the size of npixels for handling reads/writes.
Referenced by Isis::Buffer::Allocate(), Isis::Buffer::at(), Isis::Buffer::Copy(), Isis::Buffer::DoubleBuffer(), Isis::Buffer::operator=(), Isis::Buffer::operator[](), Isis::Buffer::operator[](), Isis::Brick::Resize(), and Isis::Buffer::~Buffer().
|
protectedinherited |
Starting line to read/write.
Referenced by Isis::Buffer::Buffer(), Isis::Buffer::Buffer(), Isis::Buffer::CopyOverlapFrom(), Isis::Buffer::Index(), Isis::Buffer::Line(), and Isis::Buffer::SetBaseLine().
|
protectedinherited |
Number of bands to read/write.
Referenced by Isis::Buffer::BandDimension(), Isis::Buffer::Buffer(), Isis::Buffer::CopyOverlapFrom(), Isis::Buffer::Index(), and Isis::Brick::Resize().
|
protectedinherited |
Number of lines to read/write.
Referenced by Isis::Buffer::Band(), Isis::Buffer::Buffer(), Isis::Buffer::CopyOverlapFrom(), Isis::Buffer::Index(), Isis::Buffer::Line(), Isis::Buffer::LineDimension(), and Isis::Brick::Resize().
|
protectedinherited |
Number of pixels (nsamps * nlines * nbands)
Referenced by Isis::Buffer::Allocate(), Isis::Buffer::at(), Isis::Buffer::Buffer(), Isis::Buffer::Buffer(), Isis::Buffer::Copy(), Isis::Buffer::CopyOverlapFrom(), Isis::Buffer::operator=(), Isis::Brick::Resize(), and Isis::Buffer::size().
|
protectedinherited |
Number of samples to read/write.
Referenced by Isis::Buffer::Band(), Isis::Buffer::Buffer(), Isis::Buffer::CopyOverlapFrom(), Isis::Buffer::Index(), Isis::Buffer::Line(), Isis::Brick::Resize(), Isis::Buffer::Sample(), and Isis::Buffer::SampleDimension().
|
protectedinherited |
The pixel type of the raw buffer.
Referenced by Isis::Buffer::Allocate(), Isis::Buffer::Copy(), and Isis::Buffer::PixelType().
|
protectedinherited |
The raw dm read from the disk.
Referenced by Isis::Buffer::Allocate(), Isis::Buffer::Copy(), Isis::Buffer::RawBuffer(), Isis::Brick::Resize(), and Isis::Buffer::~Buffer().
|
protectedinherited |
Starting sample to read/write.
Referenced by Isis::Buffer::Buffer(), Isis::Buffer::Buffer(), Isis::Buffer::CopyOverlapFrom(), Isis::Buffer::Index(), Isis::Buffer::Sample(), and Isis::Buffer::SetBaseSample().