Equalizer  1.6.1
Public Member Functions | List of all members
eq::Image Class Reference

A holder for pixel data. More...

#include <image.h>

+ Collaboration diagram for eq::Image:

Public Member Functions

 Image ()
 Construct a new Image. More...
 
virtual ~Image ()
 Destruct the Image. More...
 
Image parameters
void setInternalFormat (const Frame::Buffer buffer, const uint32_t internalFormat)
 Set the internal format for the given buffer. More...
 
uint32_t getInternalFormat (const Frame::Buffer buffer) const
 
uint32_t getExternalFormat (const Frame::Buffer buffer) const
 Get the external format of the given buffer. More...
 
uint32_t getPixelSize (const Frame::Buffer buffer) const
 Get the size, in bytes, of one pixel in the external pixel data. More...
 
bool hasAlpha () const
 
void setStorageType (const Frame::Type type)
 Set the frame pixel storage type. More...
 
Frame::Type getStorageType () const
 
void setPixelViewport (const PixelViewport &pvp)
 Set the internal pixel viewport of the image. More...
 
const PixelViewport & getPixelViewport () const
 
void setZoom (const Zoom &zoom)
 Sets the zoom factor to be used for compositing. More...
 
const Zoom & getZoom () const
 
void useCompressor (const Frame::Buffer buffer, const uint32_t name)
 Set a compressor to be used during transmission of the image. More...
 
void reset ()
 Reset the image to its default state. More...
 
void flush ()
 Free all cached data of this image. More...
 
void deleteGLObjects (ObjectManager *om)
 Delete all OpenGL objects allocated from the given object manager. More...
 
void resetPlugins ()
 Deallocate all transfer and compression plugins. More...
 
Pixel Data Access
const uint8_t * getPixelPointer (const Frame::Buffer buffer) const
 
uint8_t * getPixelPointer (const Frame::Buffer buffer)
 
uint32_t getPixelDataSize (const Frame::Buffer buffer) const
 
const PixelDatagetPixelData (const Frame::Buffer) const
 
const PixelDatacompressPixelData (const Frame::Buffer)
 
bool hasPixelData (const Frame::Buffer buffer) const
 
bool hasAsyncReadback (const Frame::Buffer buffer) const
 
bool hasAsyncReadback () const
 
void clearPixelData (const Frame::Buffer buffer)
 Clear and validate an image buffer. More...
 
void validatePixelData (const Frame::Buffer buffer)
 Allocate an image buffer without initialization. More...
 
void setPixelData (const Frame::Buffer buffer, const PixelData &data)
 Set the pixel data of the given image buffer. More...
 
void setAlphaUsage (const bool enabled)
 Set alpha data preservation during download and compression. More...
 
bool getAlphaUsage () const
 
void setQuality (const Frame::Buffer buffer, const float quality)
 Set the minimum quality after a full download-compression path. More...
 
float getQuality (const Frame::Buffer buffer) const
 
Texture Data Access
const util::TexturegetTexture (const Frame::Buffer buffer) const
 Get the texture of this image. More...
 
bool hasTextureData (const Frame::Buffer buffer) const
 
Operations
bool readback (const uint32_t buffers, const PixelViewport &pvp, const Zoom &zoom, ObjectManager *glObjects)
 Read back an image from the frame buffer. More...
 
bool startReadback (const uint32_t buffers, const PixelViewport &pvp, const Zoom &zoom, ObjectManager *glObjects)
 Start reading back an image from the frame buffer. More...
 
bool startReadback (const Frame::Buffer buffer, const util::Texture *texture, const GLEWContext *glewContext)
 
void finishReadback (const Zoom &zoom, const GLEWContext *glewContext)
 Finish an asynchronous readback. More...
 
bool upload (const Frame::Buffer buffer, util::Texture *texture, const Vector2i &position, ObjectManager *glObjects) const
 Upload this image to the frame buffer or a texture. More...
 
bool writeImage (const std::string &filename, const Frame::Buffer buffer) const
 Write the pixel data as rgb image file. More...
 
bool writeImages (const std::string &filenameTemplate) const
 Write all valid pixel data as separate images. More...
 
bool readImage (const std::string &filename, const Frame::Buffer buffer)
 Read pixel data from an uncompressed rgb image file. More...
 
void setOffset (int32_t x, int32_t y)
 

Internal

std::vector< uint32_t > const
 
std::vector< uint32_t > findCompressors (const Frame::Buffer buffer) const
 
bool allocCompressor (const Frame::Buffer buffer, const uint32_t name)
 
bool allocDownloader (const Frame::Buffer buffer, const uint32_t name, const GLEWContext *glewContext)
 
uint32_t getDownloaderName (const Frame::Buffer buffer) const
 

Detailed Description

A holder for pixel data.

An image holds color and depth information for one rectangular region.

Definition at line 35 of file image.h.

Constructor & Destructor Documentation

eq::Image::Image ( )

Construct a new Image.

Version
1.0
virtual eq::Image::~Image ( )
virtual

Destruct the Image.

Version
1.0

Member Function Documentation

void eq::Image::clearPixelData ( const Frame::Buffer  buffer)

Clear and validate an image buffer.

RGBA and BGRA buffers are initialized with (0,0,0,255). DEPTH_UNSIGNED_INT buffers are initialized with 255. All other buffers are zero-initialized. Validates the buffer.

Parameters
bufferthe image buffer to clear.
Version
1.0
const PixelData& eq::Image::compressPixelData ( const Frame::Buffer  )
Returns
the pixel data, compressing it if needed.
Version
1.0
void eq::Image::deleteGLObjects ( ObjectManager om)

Delete all OpenGL objects allocated from the given object manager.

Requires the appropriate OpenGL context to be current.

Version
1.3.2
void eq::Image::finishReadback ( const Zoom &  zoom,
const GLEWContext *  glewContext 
)

Finish an asynchronous readback.

Parameters
zoomthe scale factor to apply during readback.
glewContextthe OpenGL function table.
Version
1.3.2
void eq::Image::flush ( )

Free all cached data of this image.

Version
1.0
bool eq::Image::getAlphaUsage ( ) const
Returns
true if alpha data can not be ignored.
Version
1.0
uint32_t eq::Image::getExternalFormat ( const Frame::Buffer  buffer) const

Get the external format of the given buffer.

The external format describes the layout of the pixel data in main memory. It is determined by the plugin used during download. The external format also determines the pixel size and alpha availability.

Parameters
bufferthe frame buffer attachment.
Returns
the external format of the pixel data.
Version
1.0
uint32_t eq::Image::getInternalFormat ( const Frame::Buffer  buffer) const
Returns
the internal format of the pixel data.
Version
1.0
const PixelData& eq::Image::getPixelData ( const Frame::Buffer  ) const
Returns
the pixel data.
Version
1.0
uint32_t eq::Image::getPixelDataSize ( const Frame::Buffer  buffer) const
Returns
the total size of the pixel data in bytes.
Version
1.0
const uint8_t* eq::Image::getPixelPointer ( const Frame::Buffer  buffer) const
Returns
a pointer to the raw pixel data.
Version
1.0
uint8_t* eq::Image::getPixelPointer ( const Frame::Buffer  buffer)
Returns
a pointer to the raw pixel data.
Version
1.0
uint32_t eq::Image::getPixelSize ( const Frame::Buffer  buffer) const

Get the size, in bytes, of one pixel in the external pixel data.

Parameters
bufferthe frame buffer attachment.
See Also
getExternalFormat()
Version
1.0
const PixelViewport& eq::Image::getPixelViewport ( ) const
Returns
the internal pixel viewport.
Version
1.0
float eq::Image::getQuality ( const Frame::Buffer  buffer) const
Returns
the minimum quality.
Version
1.0
Frame::Type eq::Image::getStorageType ( ) const
Returns
the pixel data storage type.
Version
1.0
const util::Texture& eq::Image::getTexture ( const Frame::Buffer  buffer) const

Get the texture of this image.

Version
1.0
const Zoom& eq::Image::getZoom ( ) const
Returns
zoom factor to be used for compositing.
bool eq::Image::hasAlpha ( ) const
Returns
true if the image has a color buffer with alpha values.
See Also
getExternalFormat()
Version
1.0
bool eq::Image::hasAsyncReadback ( const Frame::Buffer  buffer) const
Returns
true if an async readback for a buffer is in progress.
Version
1.3.2
bool eq::Image::hasAsyncReadback ( ) const
Returns
true if an async readback for any buffer is in progress.
Version
1.3.2
bool eq::Image::hasPixelData ( const Frame::Buffer  buffer) const
Returns
true if the image has valid pixel data for the buffer.
Version
1.0
bool eq::Image::hasTextureData ( const Frame::Buffer  buffer) const
Returns
true if the image has texture data for the buffer.
Version
1.0
bool eq::Image::readback ( const uint32_t  buffers,
const PixelViewport &  pvp,
const Zoom &  zoom,
ObjectManager glObjects 
)

Read back an image from the frame buffer.

Parameters
buffersbit-wise combination of the Frame::Buffer components.
pvpthe area of the frame buffer wrt the drawable.
zoomthe scale factor to apply during readback.
glObjectsthe GL object manager for the current GL context.
Returns
true when data was read back, false on error.
Version
1.0
Deprecated:
See Also
startReadback(), finishReadback()
bool eq::Image::readImage ( const std::string &  filename,
const Frame::Buffer  buffer 
)

Read pixel data from an uncompressed rgb image file.

Version
1.0
void eq::Image::reset ( )

Reset the image to its default state.

This method does not free allocated memory or plugins. Invalidates all pixel data.

See Also
flush()
Version
1.0
void eq::Image::resetPlugins ( )

Deallocate all transfer and compression plugins.

Requires the OpenGL context used during readback to be current.

Version
1.3.2
void eq::Image::setAlphaUsage ( const bool  enabled)

Set alpha data preservation during download and compression.

Version
1.0
void eq::Image::setInternalFormat ( const Frame::Buffer  buffer,
const uint32_t  internalFormat 
)

Set the internal format for the given buffer.

The internal format descibes the format of the pixel data source, typically an OpenGL frame buffer or texture. The internal formats used by Equalizer use the same numerical value as their OpenGL counterpart.

Parameters
bufferthe frame buffer attachment.
internalFormatthe internal format.
Version
1.0
void eq::Image::setPixelData ( const Frame::Buffer  buffer,
const PixelData data 
)

Set the pixel data of the given image buffer.

Previous data for the buffer is overwritten. Validates the buffer. Depending on the given PixelData parameters, the pixel data is copied, decompressed or cleared.

Parameters
bufferthe image buffer to set.
datathe pixel data.
Version
1.0
void eq::Image::setPixelViewport ( const PixelViewport &  pvp)

Set the internal pixel viewport of the image.

The image pixel data and textures will be invalidated. The pixel data describes the size of the image on the destination (GPU). Each downloaded buffer has its own size, which is potentially different from the image PVP.

Parameters
pvpthe pixel viewport.
Version
1.0
void eq::Image::setQuality ( const Frame::Buffer  buffer,
const float  quality 
)

Set the minimum quality after a full download-compression path.

The automatic selection of a download and compression plugin will never always choose plugins which maintain at least the given quality. A quality of 1.0 enables a lossless transmission path, and a quality of 0.0 disables all quality quarantees.

Parameters
bufferthe frame buffer attachment.
qualitythe minimum quality to maintain.
Version
1.0
void eq::Image::setStorageType ( const Frame::Type  type)

Set the frame pixel storage type.

Images of storage type TYPE_MEMORY are read back from the frame buffer into main memory using a transfer plugin. The data can be accessed through the PixelData.

Image of storage type TYPE_TEXTURE read frame buffer data into a texture, which can be accessed using getTexture().

Version
1.0
void eq::Image::setZoom ( const Zoom &  zoom)

Sets the zoom factor to be used for compositing.

bool eq::Image::startReadback ( const uint32_t  buffers,
const PixelViewport &  pvp,
const Zoom &  zoom,
ObjectManager glObjects 
)

Start reading back an image from the frame buffer.

Parameters
buffersbit-wise combination of the Frame::Buffer components.
pvpthe area of the frame buffer wrt the drawable.
zoomthe scale factor to apply during readback.
glObjectsthe GL object manager for the current GL context.
Returns
true when the operation requires a finishReadback().
Version
1.3.2
bool eq::Image::upload ( const Frame::Buffer  buffer,
util::Texture texture,
const Vector2i &  position,
ObjectManager glObjects 
) const

Upload this image to the frame buffer or a texture.

If a texture is given, the upload is performed to it. Otherwise the pixel data is uploaded to the frame buffer. The texture will be initialized using the parameters corresponding to the requested buffer.

Parameters
bufferthe buffer type.
texturethe target texture, or 0 for frame buffer upload.
positionthe destination offset wrt current GL viewport.
glObjectsthe OpenGL object manager for the current context.
Returns
true on success, false on error.
Version
1.0
void eq::Image::useCompressor ( const Frame::Buffer  buffer,
const uint32_t  name 
)

Set a compressor to be used during transmission of the image.

The default compressor is EQ_COMPRESSOR_AUTO which selects the most suitable compressor based on the current image and buffer parameters.

Parameters
bufferthe frame buffer attachment.
namethe compressor name
void eq::Image::validatePixelData ( const Frame::Buffer  buffer)

Allocate an image buffer without initialization.

Version
1.0
bool eq::Image::writeImage ( const std::string &  filename,
const Frame::Buffer  buffer 
) const

Write the pixel data as rgb image file.

Version
1.0
bool eq::Image::writeImages ( const std::string &  filenameTemplate) const

Write all valid pixel data as separate images.

Version
1.0

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