Isis Developer Reference
Isis::StreamExporter Class Referenceabstract

Exports cubes into a standard format in incremental pieces. More...

#include <StreamExporter.h>

Inheritance diagram for Isis::StreamExporter:
Inheritance graph
Collaboration diagram for Isis::StreamExporter:
Collaboration graph

Public Member Functions

 StreamExporter ()
 Construct the stream exporter.
 
virtual ~StreamExporter ()
 Destruct the exporter.
 
virtual void setGrayscale (ExportDescription &desc)
 Generic initialization with the export description.
 
virtual void setRgb (ExportDescription &desc)
 Generic initialization with the export description.
 
virtual void setRgba (ExportDescription &desc)
 Generic initialization with the export description.
 
void operator() (vector< Buffer * > &in) const
 The method for writing a line of input image data (with potentially several bands representing color channels) to the output image.
 
virtual void write (FileName outputName, int quality=100, QString compression="none", UserInterface *ui=nullptr)
 Export the Isis cube channels to the given standard image.
 
int samples () const
 Number of samples (columns) in the output image.
 
int lines () const
 Number of lines (rows) in the output image.
 
int bands () const
 Number of bands (channels) in the output image.
 
double inputMinimum (int channel) const
 Returns the input minimum for the given channel.
 
double inputMaximum (int channel) const
 Returns the input maximum for the given channel.
 
void setOutputPixelRange (double outputPixelMinimum, double outputPixelMaximum)
 Set the DN floor and ceiling for the exported image.
 

Static Public Member Functions

static ImageExporterfromFormat (QString format)
 A static (factory) method for constructing an ImageExporter instance from an output format.
 

Protected Types

typedef void(ImageExporter::* WriteChannels) (vector< Buffer * > &in) const
 Friendly alias for a method used to write a particular color channel.
 

Protected Member Functions

virtual void initialize (ExportDescription &desc)
 Generic initialization with the export description.
 
virtual void writeGrayscale (vector< Buffer * > &in) const
 Write a line of grayscale data to the output image.
 
virtual void writeRgb (vector< Buffer * > &in) const
 Write a line of RGB data to the output image.
 
virtual void writeRgba (vector< Buffer * > &in) const
 Write a line of RGBA data to the output image.
 
virtual void createBuffer ()=0
 Pure virtual method for creating the buffer to store a chunk of streamed line data with one or more bands.
 
virtual void setBuffer (int s, int b, int dn) const =0
 Pure virtual method for setting a particular index of the line buffer to the given DN.
 
virtual void writeLine (int l) const =0
 Pure virtual method for writing a line of buffered data to the output image on disk.
 
void setExtension (QString extension)
 Sets the extension for the output image and generates the extension for the world file from it.
 
void setExportDescription (ExportDescription &desc)
 Sets the description for the output image.
 
CubeinitializeProcess ()
 Sets up the export process with the parameters described within the given description.
 
QString extension () const
 Gets the extension for the output image.
 
ExportDescriptionexportDescription () const
 Gets the description for the output image.
 
ProcessExportprocess () const
 Get a reference to the process object, useful for subclasses to access and manipulate the process.
 
PixelType pixelType () const
 Returns the pixel type.
 
virtual int outputPixelValue (double dn) const
 Return the output clamped integer pixel value from the input double-precision DN.
 

Detailed Description

Exports cubes into a standard format in incremental pieces.

Abstract base class for a series of stream image exporters. Stream exporters are specialized in that they write out data as a stream of lines as opposed to keeping the export data all in memory. In this way, they can be run on arbitrarily large images.

Author
2012-04-03 Travis Addair

Member Typedef Documentation

◆ WriteChannels

typedef void(ImageExporter::* Isis::ImageExporter::WriteChannels) (vector< Buffer * > &in) const
protectedinherited

Friendly alias for a method used to write a particular color channel.

Constructor & Destructor Documentation

◆ StreamExporter()

Isis::StreamExporter::StreamExporter ( )

Construct the stream exporter.

◆ ~StreamExporter()

Isis::StreamExporter::~StreamExporter ( )
virtual

Destruct the exporter.

Member Function Documentation

◆ bands()

int Isis::ImageExporter::bands ( ) const
inherited

◆ createBuffer()

virtual void Isis::StreamExporter::createBuffer ( )
protectedpure virtual

Pure virtual method for creating the buffer to store a chunk of streamed line data with one or more bands.

Implemented in Isis::JP2Exporter, and Isis::TiffExporter.

Referenced by initialize().

◆ exportDescription()

ExportDescription & Isis::ImageExporter::exportDescription ( ) const
protectedinherited

Gets the description for the output image.

Returns
The export description

Referenced by Isis::ImageExporter::initializeProcess().

◆ extension()

QString Isis::ImageExporter::extension ( ) const
protectedinherited

Gets the extension for the output image.

Returns
The extension for the output image

Referenced by Isis::ImageExporter::setExtension(), Isis::JP2Exporter::write(), Isis::QtExporter::write(), and Isis::TiffExporter::write().

◆ fromFormat()

ImageExporter * Isis::ImageExporter::fromFormat ( QString format)
staticinherited

A static (factory) method for constructing an ImageExporter instance from an output format.

The specific subclass of the returned instance is determined from the desired output image format provided. Each subclass has knowledge of whether or not it can write a particular format. Because the ability to export an image format is not mutually exclusive amongst exporters, the order of condieration here matters. For example, using a TIFF exporter takes precedence over a Qt exporter for TIFF images, because the former can process cubes greater than 2GB while the latter cannot. It is the caller's responsibility to delete the exporter instance when they are finished with it.

Parameters
formatThe format for the output image to be created
Returns
A pointer to the instantiated exporter owned by the caller

References _FILEINFO_, Isis::JP2Exporter::canWriteFormat(), Isis::QtExporter::canWriteFormat(), Isis::TiffExporter::canWriteFormat(), and Isis::IException::Programmer.

◆ initialize()

void Isis::StreamExporter::initialize ( ExportDescription & desc)
protectedvirtual

Generic initialization with the export description.

Set the input, set the pixel type, and create the buffer.

Parameters
descExport description containing necessary channel information

Implements Isis::ImageExporter.

References createBuffer(), and Isis::ImageExporter::initialize().

Referenced by setGrayscale(), setRgb(), and setRgba().

◆ initializeProcess()

Cube * Isis::ImageExporter::initializeProcess ( )
protectedinherited

Sets up the export process with the parameters described within the given description.

This method determines determines whether to write the data as grayscale, RGB, or RGBA. It then opens a cube for retrieving the input data and establishing the dimensions of the output image. Next, the ProcessExport format is set to BIL and the ProcessExport output pixel type, output valid data range, and output null are set based on the given export description. Last, the absolute output pixel range is set based on the given description (this is the smallest and largest allowed pixel values in the output, including "special" pixel values).

Returns
A cube pointer to the first channel created, owned by the process

References _FILEINFO_, Isis::ProcessExport::BIL, Isis::ExportDescription::channelCount(), Isis::ImageExporter::exportDescription(), Isis::Cube::lineCount(), Isis::ExportDescription::outputPixelAbsoluteMax(), Isis::ExportDescription::outputPixelAbsoluteMin(), Isis::ExportDescription::outputPixelNull(), Isis::ExportDescription::outputPixelValidMax(), Isis::ExportDescription::outputPixelValidMin(), Isis::ImageExporter::pixelType(), Isis::ImageExporter::process(), Isis::IException::Programmer, Isis::Cube::sampleCount(), Isis::Cube::setFormat(), Isis::ImageExporter::setOutputPixelRange(), Isis::ImageExporter::writeGrayscale(), Isis::ImageExporter::writeRgb(), and Isis::ImageExporter::writeRgba().

Referenced by Isis::ImageExporter::initialize().

◆ inputMaximum()

double Isis::ImageExporter::inputMaximum ( int channel) const
inherited

Returns the input maximum for the given channel.

Any value of max in the input cube will be mapped to the output max of the output channel.

Parameters
channelIndex of the channel within the process
Returns
The maximum DN in the input mapped to the maximum of the output

References Isis::ProcessExport::GetInputMaximum().

◆ inputMinimum()

double Isis::ImageExporter::inputMinimum ( int channel) const
inherited

Returns the input minimum for the given channel.

Any value of min in the input cube will be mapped to the output min of the output channel.

Parameters
channelIndex of the channel within the process
Returns
The minimum DN in the input mapped to the minimum of the output

References Isis::ProcessExport::GetInputMinimum().

◆ lines()

int Isis::ImageExporter::lines ( ) const
inherited

◆ operator()()

void Isis::ImageExporter::operator() ( vector< Buffer * > & in) const
inherited

The method for writing a line of input image data (with potentially several bands representing color channels) to the output image.

It is called for each line of data in the input images (provides a vector containing the same line from each single-band input image). Enables the exporter to be used as a functor in a custom ProcessExport routine, bypassing the black-box write() method entirely.

Parameters
inVector containing a line of input data from each input channel

◆ outputPixelValue()

int Isis::ImageExporter::outputPixelValue ( double dn) const
protectedvirtualinherited

Return the output clamped integer pixel value from the input double-precision DN.

Parameters
dnThe input DN
Returns
The pixel value for the output

Referenced by Isis::QtExporter::writeGrayscale(), writeGrayscale(), Isis::QtExporter::writeRgb(), writeRgb(), Isis::QtExporter::writeRgba(), and writeRgba().

◆ pixelType()

PixelType Isis::ImageExporter::pixelType ( ) const
protectedinherited

◆ process()

ProcessExport & Isis::ImageExporter::process ( ) const
protectedinherited

Get a reference to the process object, useful for subclasses to access and manipulate the process.

Returns
A reference to the process object

Referenced by Isis::ImageExporter::initializeProcess(), and Isis::ImageExporter::write().

◆ samples()

int Isis::ImageExporter::samples ( ) const
inherited

◆ setBuffer()

virtual void Isis::StreamExporter::setBuffer ( int s,
int b,
int dn ) const
protectedpure virtual

Pure virtual method for setting a particular index of the line buffer to the given DN.

Parameters
sThe sample index into the buffer
bThe band index into the buffer
dnThe value to set at the given index

Implemented in Isis::JP2Exporter, and Isis::TiffExporter.

Referenced by writeGrayscale(), writeRgb(), and writeRgba().

◆ setExportDescription()

void Isis::ImageExporter::setExportDescription ( ExportDescription & desc)
protectedinherited

Sets the description for the output image.

Parameters
descThe export description

Referenced by Isis::ImageExporter::initialize().

◆ setExtension()

void Isis::ImageExporter::setExtension ( QString extension)
protectedinherited

Sets the extension for the output image and generates the extension for the world file from it.

Parameters
extensionThe extension for the output image

References Isis::ImageExporter::extension().

Referenced by Isis::JP2Exporter::JP2Exporter(), Isis::QtExporter::QtExporter(), and Isis::TiffExporter::TiffExporter().

◆ setGrayscale()

void Isis::StreamExporter::setGrayscale ( ExportDescription & desc)
virtual

Generic initialization with the export description.

Stream exporters do not do anything special to export a grayscale image beyond setting up the appropriate number of color channels.

Parameters
descExport description containing necessary channel information

Implements Isis::ImageExporter.

References initialize().

◆ setOutputPixelRange()

void Isis::ImageExporter::setOutputPixelRange ( double outputPixelMinimum,
double outputPixelMaximum )
inherited

Set the DN floor and ceiling for the exported image.

All DNs less than the min will be set to the min in the exported image. Similarly, all DNs greater than the max will be set to the max in the exported image.

Note: These values may be "special". For example, if Null pixels are exported to 0.0 and the minimum valid pixels are exported to 2.0, then 0.0 should be passed in for the value of the min parameter.

Parameters
minThe absolute minimum output DN value.
maxThe absolute maximum output DN value.

Referenced by Isis::ImageExporter::initializeProcess().

◆ setRgb()

void Isis::StreamExporter::setRgb ( ExportDescription & desc)
virtual

Generic initialization with the export description.

Stream exporters do not do anything special to export an RGB image beyond setting up the appropriate number of color channels.

Parameters
descExport description containing necessary channel information

Implements Isis::ImageExporter.

References initialize().

◆ setRgba()

void Isis::StreamExporter::setRgba ( ExportDescription & desc)
virtual

Generic initialization with the export description.

Stream exporters do not do anything special to export an RGBA image beyond setting up the appropriate number of color channels.

Parameters
descExport description containing necessary channel information

Implements Isis::ImageExporter.

References initialize().

◆ write()

void Isis::ImageExporter::write ( FileName outputName,
int quality = 100,
QString compression = "none",
UserInterface * ui = nullptr )
virtualinherited

Export the Isis cube channels to the given standard image.

If supported by the specific exporter child, will also produce an image with the given scaled quality. Will also use the selected compression algorithm if supported by the image format. This will do a black-box export using a ProcessExport routine. After the export is completed, a world file will also be created if a map projection exists.

Parameters
outputNameThe filename of the output cube
qualityThe quality of the output from 0 to 100, defaults to 100
compressionThe compression algorithm used. Image format specific.
uiThe optional user interface to set the input image pixel range.

Reimplemented in Isis::JP2Exporter, Isis::QtExporter, and Isis::TiffExporter.

References Isis::ImageExporter::process().

Referenced by Isis::JP2Exporter::write(), Isis::QtExporter::write(), and Isis::TiffExporter::write().

◆ writeGrayscale()

void Isis::StreamExporter::writeGrayscale ( vector< Buffer * > & in) const
protectedvirtual

Write a line of grayscale data to the output image.

Parameters
inVector containing a single grayscale input line

Implements Isis::ImageExporter.

References Isis::Buffer::Line(), Isis::ImageExporter::outputPixelValue(), setBuffer(), and writeLine().

◆ writeLine()

virtual void Isis::StreamExporter::writeLine ( int l) const
protectedpure virtual

Pure virtual method for writing a line of buffered data to the output image on disk.

Parameters
lThe line of the output image to write to

Implemented in Isis::JP2Exporter, and Isis::TiffExporter.

Referenced by writeGrayscale(), writeRgb(), and writeRgba().

◆ writeRgb()

void Isis::StreamExporter::writeRgb ( vector< Buffer * > & in) const
protectedvirtual

Write a line of RGB data to the output image.

Parameters
inVector containing three input lines (red, green, blue)

Implements Isis::ImageExporter.

References Isis::ImageExporter::outputPixelValue(), setBuffer(), and writeLine().

◆ writeRgba()

void Isis::StreamExporter::writeRgba ( vector< Buffer * > & in) const
protectedvirtual

Write a line of RGBA data to the output image.

Parameters
inVector containing four input lines (red, green, blue, alpha)

Implements Isis::ImageExporter.

References Isis::ImageExporter::outputPixelValue(), setBuffer(), and writeLine().


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