OpenSceneGraph  3.0.1
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
osg::Image Class Reference

Image class for encapsulating the storage texture image data. More...

Inheritance diagram for osg::Image:
Inheritance graph
[legend]

List of all members.

Classes

struct  UpdateCallback
 convience update callback class that can be attached to StateAttribute (such as Textures) to ensure that the Image::update(NodeVisitor*) method is called during the update traversal. More...

Public Types

enum  WriteHint { NO_PREFERENCE, STORE_INLINE, EXTERNAL_FILE }
enum  AllocationMode { NO_DELETE, USE_NEW_DELETE, USE_MALLOC_FREE }
enum  Origin { BOTTOM_LEFT, TOP_LEFT }
typedef std::vector< unsigned int > MipmapDataType
 Precomputed mipmaps stuff.

Public Member Functions

 Image ()
 Image (const Image &image, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
 Copy constructor using CopyOp to manage deep vs shallow copy.
virtual ObjectcloneType () const
 Clone the type of an object, with Object* return type.
virtual Objectclone (const CopyOp &copyop) const
 Clone an object, with Object* return type.
virtual bool isSameKindAs (const Object *obj) const
virtual const char * libraryName () const
 return the name of the object's library.
virtual const char * className () const
 return the name of the object's class type.
virtual const GLvoid * getDataPointer () const
virtual unsigned int getTotalDataSize () const
virtual int compare (const Image &rhs) const
 Return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.
void setFileName (const std::string &fileName)
const std::string & getFileName () const
void setWriteHint (WriteHint writeHint)
WriteHint getWriteHint () const
void setAllocationMode (AllocationMode mode)
 Set the method used for deleting data once it goes out of scope.
AllocationMode getAllocationMode () const
 Get the method used for deleting data once it goes out of scope.
virtual void allocateImage (int s, int t, int r, GLenum pixelFormat, GLenum type, int packing=1)
 Allocate a pixel block of specified size and type.
virtual void setImage (int s, int t, int r, GLint internalTextureformat, GLenum pixelFormat, GLenum type, unsigned char *data, AllocationMode mode, int packing=1)
 Set the image dimensions, format and data.
virtual void readPixels (int x, int y, int width, int height, GLenum pixelFormat, GLenum type)
 Read pixels from current frame buffer at specified position and size, using glReadPixels.
virtual void readImageFromCurrentTexture (unsigned int contextID, bool copyMipMapsIfAvailable, GLenum type=GL_UNSIGNED_BYTE)
 Read the contents of the current bound texture, handling compressed pixelFormats if present.
void scaleImage (int s, int t, int r)
 Scale image to specified size.
virtual void scaleImage (int s, int t, int r, GLenum newDataType)
 Scale image to specified size and with specified data type.
virtual void copySubImage (int s_offset, int t_offset, int r_offset, const osg::Image *source)
 Copy a source Image into a subpart of this Image at specified position.
void setOrigin (Origin origin)
 Set the origin of the image.
Origin getOrigin () const
 Get the origin of the image.
int s () const
 Width of image.
int t () const
 Height of image.
int r () const
 Depth of image.
void setInternalTextureFormat (GLint internalFormat)
GLint getInternalTextureFormat () const
void setPixelFormat (GLenum pixelFormat)
GLenum getPixelFormat () const
void setDataType (GLenum dataType)
GLenum getDataType () const
void setPacking (unsigned int packing)
unsigned int getPacking () const
bool isCompressed () const
 return true of the pixel format is an OpenGL compressed pixel format.
void setPixelAspectRatio (float pixelAspectRatio)
 Set the pixel aspect ratio, defined as the pixel width divided by the pixel height.
float getPixelAspectRatio () const
 Get the pixel aspect ratio.
unsigned int getPixelSizeInBits () const
 Return the number of bits required for each pixel.
unsigned int getRowSizeInBytes () const
 Return the number of bytes each row of pixels occupies once it has been packed.
unsigned int getImageSizeInBytes () const
 Return the number of bytes each image (_s*_t) of pixels occupies.
unsigned int getTotalSizeInBytes () const
 Return the number of bytes the whole row/image/volume of pixels occupies.
unsigned int getTotalSizeInBytesIncludingMipmaps () const
 Return the number of bytes the whole row/image/volume of pixels occupies, including all mip maps if included.
bool valid () const
 Return true if the Image represent a valid and usable imagery.
unsigned char * data ()
 Raw image data.
const unsigned char * data () const
 Raw const image data.
unsigned char * data (int column, int row=0, int image=0)
const unsigned char * data (int column, int row=0, int image=0) const
Vec4 getColor (unsigned int s, unsigned t=0, unsigned r=0) const
 Get the color value for specified texcoord.
Vec4 getColor (const Vec2 &texcoord) const
 Get the color value for specified texcoord.
Vec4 getColor (const Vec3 &texcoord) const
 Get the color value for specified texcoord.
void flipHorizontal ()
 Flip the image horizontally.
void flipVertical ()
 Flip the image vertically.
void ensureValidSizeForTexturing (GLint maxTextureSize)
 Ensure image dimensions are a power of two.
bool isMipmap () const
unsigned int getNumMipmapLevels () const
void setMipmapLevels (const MipmapDataType &mipmapDataVector)
 Send offsets into data.
const MipmapDataTypegetMipmapLevels () const
unsigned int getMipmapOffset (unsigned int mipmapLevel) const
unsigned char * getMipmapData (unsigned int mipmapLevel)
const unsigned char * getMipmapData (unsigned int mipmapLevel) const
virtual bool isImageTranslucent () const
 Return true if this image is translucent - i.e.
void setPixelBufferObject (PixelBufferObject *buffer)
 Set the optional PixelBufferObject used to map the image memory efficiently to graphics memory.
PixelBufferObjectgetPixelBufferObject ()
 Get the PixelBufferObject.
const PixelBufferObjectgetPixelBufferObject () const
 Get the const PixelBufferObject.
virtual bool requiresUpdateCall () const
 return whether the update(NodeVisitor* nv) should be required on each frame to enable proper working of osg::Image.
virtual void update (NodeVisitor *)
 update method for osg::Image subclasses that update themselves during the update traversal.
virtual bool sendFocusHint (bool)
 method for hinting whether to enable or disable focus to images acting as front ends to interactive surfaces such as a vnc or browser window.
virtual bool sendPointerEvent (int, int, int)
 method for sending pointer events to images that are acting as front ends to interactive surfaces such as a vnc or browser window.
virtual bool sendKeyEvent (int, bool)
 method for sending key events to images that are acting as front ends to interactive surfaces such as a vnc or browser window.
virtual void setFrameLastRendered (const osg::FrameStamp *)
 method for passing frame information to the custom Image classes, to be called only when objects associated with imagery are not culled.

Static Public Member Functions

static bool isPackedType (GLenum type)
static GLenum computePixelFormat (GLenum pixelFormat)
static GLenum computeFormatDataType (GLenum pixelFormat)
static unsigned int computeNumComponents (GLenum pixelFormat)
static unsigned int computePixelSizeInBits (GLenum pixelFormat, GLenum type)
static unsigned int computeRowWidthInBytes (int width, GLenum pixelFormat, GLenum type, int packing)
static int computeNearestPowerOfTwo (int s, float bias=0.5f)
static int computeNumberOfMipmapLevels (int s, int t=1, int r=1)

Protected Member Functions

virtual ~Image ()
Imageoperator= (const Image &)
void deallocateData ()
void setData (unsigned char *data, AllocationMode allocationMode)

Protected Attributes

std::string _fileName
WriteHint _writeHint
Origin _origin
int _s
int _t
int _r
GLint _internalTextureFormat
GLenum _pixelFormat
GLenum _dataType
unsigned int _packing
float _pixelAspectRatio
AllocationMode _allocationMode
unsigned char * _data
MipmapDataType _mipmapData
ref_ptr< PixelBufferObject_bufferObject

Detailed Description

Image class for encapsulating the storage texture image data.


Member Typedef Documentation

typedef std::vector< unsigned int > osg::Image::MipmapDataType

Precomputed mipmaps stuff.


Member Enumeration Documentation

Enumerator:
NO_DELETE 
USE_NEW_DELETE 
USE_MALLOC_FREE 
Enumerator:
BOTTOM_LEFT 
TOP_LEFT 
Enumerator:
NO_PREFERENCE 
STORE_INLINE 
EXTERNAL_FILE 

Constructor & Destructor Documentation

osg::Image::Image ( )
osg::Image::Image ( const Image image,
const CopyOp copyop = CopyOp::SHALLOW_COPY 
)

Copy constructor using CopyOp to manage deep vs shallow copy.

virtual osg::Image::~Image ( ) [protected, virtual]

Member Function Documentation

virtual void osg::Image::allocateImage ( int  s,
int  t,
int  r,
GLenum  pixelFormat,
GLenum  type,
int  packing = 1 
) [virtual]

Allocate a pixel block of specified size and type.

virtual const char* osg::Image::className ( ) const [inline, virtual]

return the name of the object's class type.

Must be defined by derived classes.

Reimplemented from osg::BufferData.

Reimplemented in osg::ImageSequence, and osg::ImageStream.

virtual Object* osg::Image::clone ( const CopyOp ) const [inline, virtual]

Clone an object, with Object* return type.

Must be defined by derived classes.

Implements osg::Object.

Reimplemented in osg::ImageSequence, and osg::ImageStream.

virtual Object* osg::Image::cloneType ( ) const [inline, virtual]

Clone the type of an object, with Object* return type.

Must be defined by derived classes.

Implements osg::Object.

Reimplemented in osg::ImageSequence, and osg::ImageStream.

virtual int osg::Image::compare ( const Image rhs) const [virtual]

Return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.

Reimplemented in osg::ImageSequence, and osg::ImageStream.

static GLenum osg::Image::computeFormatDataType ( GLenum  pixelFormat) [static]
static int osg::Image::computeNearestPowerOfTwo ( int  s,
float  bias = 0.5f 
) [static]
static int osg::Image::computeNumberOfMipmapLevels ( int  s,
int  t = 1,
int  r = 1 
) [static]
static unsigned int osg::Image::computeNumComponents ( GLenum  pixelFormat) [static]
static GLenum osg::Image::computePixelFormat ( GLenum  pixelFormat) [static]
static unsigned int osg::Image::computePixelSizeInBits ( GLenum  pixelFormat,
GLenum  type 
) [static]
static unsigned int osg::Image::computeRowWidthInBytes ( int  width,
GLenum  pixelFormat,
GLenum  type,
int  packing 
) [static]
virtual void osg::Image::copySubImage ( int  s_offset,
int  t_offset,
int  r_offset,
const osg::Image source 
) [virtual]

Copy a source Image into a subpart of this Image at specified position.

Typically used to copy to an already allocated image, such as creating a 3D image from a stack 2D images. If this Image is empty then image data is created to accomodate the source image in its offset position. If source is NULL then no operation happens, this Image is left unchanged.

unsigned char* osg::Image::data ( ) [inline]
const unsigned char* osg::Image::data ( ) const [inline]

Raw const image data.

unsigned char* osg::Image::data ( int  column,
int  row = 0,
int  image = 0 
) [inline]

References NULL.

const unsigned char* osg::Image::data ( int  column,
int  row = 0,
int  image = 0 
) const [inline]

References NULL.

void osg::Image::deallocateData ( ) [protected]
void osg::Image::ensureValidSizeForTexturing ( GLint  maxTextureSize)

Ensure image dimensions are a power of two.

Mipmapped textures require the image dimensions to be power of two and are within the maxiumum texture size for the host machine.

void osg::Image::flipHorizontal ( )

Flip the image horizontally.

void osg::Image::flipVertical ( )

Flip the image vertically.

AllocationMode osg::Image::getAllocationMode ( ) const [inline]

Get the method used for deleting data once it goes out of scope.

Vec4 osg::Image::getColor ( unsigned int  s,
unsigned  t = 0,
unsigned  r = 0 
) const

Get the color value for specified texcoord.

Vec4 osg::Image::getColor ( const Vec2 texcoord) const [inline]

Get the color value for specified texcoord.

References getColor(), osg::Vec2f::x(), and osg::Vec2f::y().

Referenced by getColor().

Vec4 osg::Image::getColor ( const Vec3 texcoord) const

Get the color value for specified texcoord.

virtual const GLvoid* osg::Image::getDataPointer ( ) const [inline, virtual]

Implements osg::BufferData.

GLenum osg::Image::getDataType ( ) const [inline]

Referenced by osg::readImage(), and osg::modifyImage().

const std::string& osg::Image::getFileName ( ) const [inline]
unsigned int osg::Image::getImageSizeInBytes ( ) const [inline]

Return the number of bytes each image (_s*_t) of pixels occupies.

GLint osg::Image::getInternalTextureFormat ( ) const [inline]
unsigned char* osg::Image::getMipmapData ( unsigned int  mipmapLevel) [inline]
const unsigned char* osg::Image::getMipmapData ( unsigned int  mipmapLevel) const [inline]
const MipmapDataType& osg::Image::getMipmapLevels ( ) const [inline]
unsigned int osg::Image::getMipmapOffset ( unsigned int  mipmapLevel) const [inline]
unsigned int osg::Image::getNumMipmapLevels ( ) const [inline]
Origin osg::Image::getOrigin ( ) const [inline]

Get the origin of the image.

unsigned int osg::Image::getPacking ( ) const [inline]
float osg::Image::getPixelAspectRatio ( ) const [inline]

Get the pixel aspect ratio.

PixelBufferObject* osg::Image::getPixelBufferObject ( ) [inline]
const PixelBufferObject* osg::Image::getPixelBufferObject ( ) const [inline]

Get the const PixelBufferObject.

GLenum osg::Image::getPixelFormat ( ) const [inline]

Referenced by osg::readImage(), and osg::modifyImage().

unsigned int osg::Image::getPixelSizeInBits ( ) const [inline]

Return the number of bits required for each pixel.

unsigned int osg::Image::getRowSizeInBytes ( ) const [inline]

Return the number of bytes each row of pixels occupies once it has been packed.

virtual unsigned int osg::Image::getTotalDataSize ( ) const [inline, virtual]

Implements osg::BufferData.

unsigned int osg::Image::getTotalSizeInBytes ( ) const [inline]

Return the number of bytes the whole row/image/volume of pixels occupies.

unsigned int osg::Image::getTotalSizeInBytesIncludingMipmaps ( ) const

Return the number of bytes the whole row/image/volume of pixels occupies, including all mip maps if included.

WriteHint osg::Image::getWriteHint ( ) const [inline]
bool osg::Image::isCompressed ( ) const

return true of the pixel format is an OpenGL compressed pixel format.

virtual bool osg::Image::isImageTranslucent ( ) const [virtual]

Return true if this image is translucent - i.e.

it has alpha values that are less 1.0 (when normalized).

bool osg::Image::isMipmap ( ) const [inline]
static bool osg::Image::isPackedType ( GLenum  type) [static]
virtual bool osg::Image::isSameKindAs ( const Object obj) const [inline, virtual]

Reimplemented from osg::BufferData.

Reimplemented in osg::ImageSequence, and osg::ImageStream.

virtual const char* osg::Image::libraryName ( ) const [inline, virtual]

return the name of the object's library.

Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name.

Reimplemented from osg::BufferData.

Reimplemented in osg::ImageSequence, and osg::ImageStream.

Image& osg::Image::operator= ( const Image ) [inline, protected]
int osg::Image::r ( ) const [inline]

Depth of image.

Referenced by osg::readImage(), and osg::modifyImage().

virtual void osg::Image::readImageFromCurrentTexture ( unsigned int  contextID,
bool  copyMipMapsIfAvailable,
GLenum  type = GL_UNSIGNED_BYTE 
) [virtual]

Read the contents of the current bound texture, handling compressed pixelFormats if present.

Create memory for storage if required, reuse existing pixel coords if possible.

virtual void osg::Image::readPixels ( int  x,
int  y,
int  width,
int  height,
GLenum  pixelFormat,
GLenum  type 
) [virtual]

Read pixels from current frame buffer at specified position and size, using glReadPixels.

Create memory for storage if required, reuse existing pixel coords if possible.

virtual bool osg::Image::requiresUpdateCall ( ) const [inline, virtual]

return whether the update(NodeVisitor* nv) should be required on each frame to enable proper working of osg::Image.

Reimplemented in osg::ImageSequence.

int osg::Image::s ( ) const [inline]

Width of image.

Referenced by osg::readImage(), and osg::modifyImage().

void osg::Image::scaleImage ( int  s,
int  t,
int  r 
) [inline]

Scale image to specified size.

References scaleImage().

Referenced by scaleImage().

virtual void osg::Image::scaleImage ( int  s,
int  t,
int  r,
GLenum  newDataType 
) [virtual]

Scale image to specified size and with specified data type.

Reimplemented in osgQt::QWidgetImage.

virtual bool osg::Image::sendFocusHint ( bool  ) [inline, virtual]

method for hinting whether to enable or disable focus to images acting as front ends to interactive surfaces such as a vnc or browser window.

Return true if handled.

Reimplemented in osgQt::QWebViewImage, and osgQt::QWidgetImage.

virtual bool osg::Image::sendKeyEvent ( int  ,
bool   
) [inline, virtual]

method for sending key events to images that are acting as front ends to interactive surfaces such as a vnc or browser window.

Return true if handled.

Reimplemented in osgQt::QWebViewImage, and osgQt::QWidgetImage.

virtual bool osg::Image::sendPointerEvent ( int  ,
int  ,
int   
) [inline, virtual]

method for sending pointer events to images that are acting as front ends to interactive surfaces such as a vnc or browser window.

Return true if handled.

Reimplemented in osgQt::QWebViewImage, and osgQt::QWidgetImage.

void osg::Image::setAllocationMode ( AllocationMode  mode) [inline]

Set the method used for deleting data once it goes out of scope.

void osg::Image::setData ( unsigned char *  data,
AllocationMode  allocationMode 
) [protected]
void osg::Image::setDataType ( GLenum  dataType)
void osg::Image::setFileName ( const std::string &  fileName)
virtual void osg::Image::setFrameLastRendered ( const osg::FrameStamp ) [inline, virtual]

method for passing frame information to the custom Image classes, to be called only when objects associated with imagery are not culled.

Reimplemented in osgQt::QWebViewImage, and osgQt::QWidgetImage.

virtual void osg::Image::setImage ( int  s,
int  t,
int  r,
GLint  internalTextureformat,
GLenum  pixelFormat,
GLenum  type,
unsigned char *  data,
AllocationMode  mode,
int  packing = 1 
) [virtual]

Set the image dimensions, format and data.

Reimplemented in osg::ImageSequence.

Referenced by osg::ImageSequence::setImage().

void osg::Image::setInternalTextureFormat ( GLint  internalFormat)
void osg::Image::setMipmapLevels ( const MipmapDataType mipmapDataVector) [inline]

Send offsets into data.

It is assumed that first mipmap offset (index 0) is 0.

void osg::Image::setOrigin ( Origin  origin) [inline]

Set the origin of the image.

The default value is BOTTOM_LEFT and is consistent with OpenGL. TOP_LEFT is used for imagery that follows standard Imagery convention, such as movies, and hasn't been flipped yet. For such images one much flip the t axis of the tex coords. to handle this origin position.

void osg::Image::setPacking ( unsigned int  packing) [inline]
void osg::Image::setPixelAspectRatio ( float  pixelAspectRatio) [inline]

Set the pixel aspect ratio, defined as the pixel width divided by the pixel height.

void osg::Image::setPixelBufferObject ( PixelBufferObject buffer) [inline]

Set the optional PixelBufferObject used to map the image memory efficiently to graphics memory.

void osg::Image::setPixelFormat ( GLenum  pixelFormat)
void osg::Image::setWriteHint ( WriteHint  writeHint) [inline]
int osg::Image::t ( ) const [inline]

Height of image.

Referenced by osg::readImage(), and osg::modifyImage().

virtual void osg::Image::update ( NodeVisitor ) [inline, virtual]

update method for osg::Image subclasses that update themselves during the update traversal.

Reimplemented in osg::ImageSequence.

bool osg::Image::valid ( ) const [inline]

Return true if the Image represent a valid and usable imagery.

Referenced by osgTerrain::ContourLayer::getImage().


Member Data Documentation

Reimplemented from osg::BufferData.

unsigned char* osg::Image::_data [protected]
GLenum osg::Image::_dataType [protected]
std::string osg::Image::_fileName [protected]
unsigned int osg::Image::_packing [protected]
float osg::Image::_pixelAspectRatio [protected]
GLenum osg::Image::_pixelFormat [protected]
int osg::Image::_r [protected]
int osg::Image::_s [protected]
int osg::Image::_t [protected]

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

osg logo
Generated at Mon Oct 3 2011 12:39:42 for the OpenSceneGraph by doxygen 1.7.5.