OpenWalnut  1.3.1
Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Private Member Functions | Private Attributes | List of all members
WGETexture< TextureType > Class Template Reference

This calls serves a simple purpose: have a texture and its scaling information together which allows very easy binding of textures to nodes with associated shaders. More...

#include <WGETexture.h>

+ Inheritance diagram for WGETexture< TextureType >:

Public Member Functions

 WGETexture (double scale=1.0, double min=0.0)
 Default constructor. More...
 
 WGETexture (osg::Image *image, double scale=1.0, double min=0.0)
 Creates texture from given image. More...
 
 WGETexture (const WGETexture< TextureType > &texture, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 Copy the texture. More...
 
virtual ~WGETexture ()
 Destructor. More...
 
WPropString name () const
 Returns the name property of the texture. More...
 
WPropDouble minimum () const
 Get the minimum in the de-scaled value space. More...
 
WPropDouble scale () const
 Get the scaling factor for de-scaling the texture. More...
 
WPropDouble alpha () const
 Returns the alpha property. More...
 
WPropDouble threshold () const
 Returns the threshold property. More...
 
WPropBool thresholdEnabled () const
 Returns the property responsible for enabling threshold based clipping. More...
 
WPropBool interpolation () const
 Returns the interpolation property. More...
 
WPropSelection colormap () const
 Returns the colormap property. More...
 
WPropBool active () const
 Returns the active property. More...
 
WPropMatrix4X4 transformation () const
 Returns the texture transformation matrix. More...
 
void bind (osg::ref_ptr< osg::Node > node, size_t unit=0)
 Binds the texture to the specified node and texture unit. More...
 
boost::shared_ptr< WPropertiesgetProperties () const
 Return a pointer to the properties object of the dataset. More...
 
boost::shared_ptr< WPropertiesgetInformationProperties () const
 Return a pointer to the information properties object of the dataset. More...
 
virtual void applyUniforms (std::string prefix, osg::StateSet *states) const
 Applies some custom uniforms to the specified state-set which directly relate to this texture. More...
 
void setFilterMinMag (osg::Texture::FilterMode mode)
 For all the lazy guys to set the filter MIN and MAG at once. More...
 
void setWrapSTR (osg::Texture::WrapMode mode)
 For all the lazy guys to set the wrapping for s,t and r directions at once. More...
 
virtual WBoundingBox getBoundingBox () const
 Returns the texture's bounding box. More...
 

Static Public Attributes

static std::size_t const MAX_NUMBER_OF_TEXTURES = 8
 We support only 8 textures because some known hardware does not support more texture coordinates. More...
 
static std::size_t const MAX_TEXTURE_DIMENSION = 2048
 The maximum texture dimension. More...
 

Protected Member Functions

virtual void handleUpdate ()
 Handles all property updates. More...
 
virtual void create ()
 Creates the texture data. More...
 
virtual void updateCallback (osg::StateAttribute *state)
 This method implements an update callback which updates the texture image if needed and several other properties like texture matrix. More...
 

Static Protected Member Functions

static void initTextureSize (osg::Texture1D *texture, int width, int height, int depth)
 Initialize the size of the texture properly according to real texture type (1D,2D,3D). More...
 
static void initTextureSize (osg::Texture2D *texture, int width, int height, int depth)
 Initialize the size of the texture properly according to real texture type (1D,2D,3D). More...
 
static void initTextureSize (osg::Texture3D *texture, int width, int height, int depth)
 Initialize the size of the texture properly according to real texture type (1D,2D,3D). More...
 

Private Member Functions

void setupProperties (double scale, double min)
 Creates and assigns all properties. More...
 

Private Attributes

boost::shared_ptr< WConditionm_propCondition
 A condition used to notify about changes in several properties. More...
 
boost::shared_ptr< WPropertiesm_properties
 The property object for the dataset. More...
 
boost::shared_ptr< WPropertiesm_infoProperties
 The property object for the dataset containing only props whose purpose is "PV_PURPOSE_INFORMNATION". More...
 
bool m_needCreate
 If true, the texture gets created. More...
 
WPropString m_name
 The texture name. More...
 
WPropDouble m_min
 The minimum of each value in the texture in unscaled space. More...
 
WPropDouble m_scale
 The scaling factor to de-scale a [0-1] texture to original space. More...
 
boost::shared_ptr< WItemSelectionm_colorMapSelectionsList
 A list of color map selection types. More...
 
WPropSelection m_colorMap
 Selection property for color map. More...
 
WPropDouble m_alpha
 Alpha blending value. More...
 
WPropDouble m_threshold
 Threshold for clipping areas. More...
 
WPropBool m_thresholdEnabled
 Threshold-enable flag. More...
 
WPropBool m_interpolation
 True if interpolation should be used. More...
 
WPropBool m_active
 True if the texture is active. More...
 
WPropMatrix4X4 m_texMatrix
 The texture transformation matrix. More...
 

Detailed Description

template<typename TextureType = osg::Texture>
class WGETexture< TextureType >

This calls serves a simple purpose: have a texture and its scaling information together which allows very easy binding of textures to nodes with associated shaders.

When this texture gets bind using the bindTo methods, uniforms get added containing needed scaling information.

Definition at line 52 of file WGETexture.h.

Constructor & Destructor Documentation

template<typename TextureType >
WGETexture< TextureType >::WGETexture ( double  scale = 1.0,
double  min = 0.0 
)

Default constructor.

Creates an empty instance of the texture.

Parameters
scalethe scaling factor needed for de-scaling the texture values
minthe minimum value allowing negative values too.

Definition at line 375 of file WGETexture.h.

References WGETexture< TextureType >::setupProperties().

template<typename TextureType >
WGETexture< TextureType >::WGETexture ( osg::Image *  image,
double  scale = 1.0,
double  min = 0.0 
)

Creates texture from given image.

Scaling is set to identity.

Parameters
imagethe image to use as texture
scalethe scaling factor needed for de-scaling the texture values
minthe minimum value allowing negative values too.

Definition at line 386 of file WGETexture.h.

References WGETexture< TextureType >::initTextureSize(), and WGETexture< TextureType >::setupProperties().

template<typename TextureType >
WGETexture< TextureType >::WGETexture ( const WGETexture< TextureType > &  texture,
const osg::CopyOp &  copyop = osg::CopyOp::SHALLOW_COPY 
)

Copy the texture.

Parameters
texturethe texture to copy
copyop

Definition at line 398 of file WGETexture.h.

template<typename TextureType >
WGETexture< TextureType >::~WGETexture ( )
virtual

Destructor.

Definition at line 464 of file WGETexture.h.

Member Function Documentation

template<typename TextureType >
WPropBool WGETexture< TextureType >::active ( ) const
inline

Returns the active property.

The property can be changed. A change affects all colormaps using this texture.

Returns
active property

Definition at line 530 of file WGETexture.h.

template<typename TextureType >
WPropDouble WGETexture< TextureType >::alpha ( ) const
inline

Returns the alpha property.

The property can be changed. A change affects all colormaps using this texture.

Returns
alpha property

Definition at line 500 of file WGETexture.h.

template<typename TextureType >
void WGETexture< TextureType >::applyUniforms ( std::string  prefix,
osg::StateSet *  states 
) const
virtual

Applies some custom uniforms to the specified state-set which directly relate to this texture.

Parameters
prefixthe prefix used for the uniforms
statesthe state where to add the uniforms

Definition at line 552 of file WGETexture.h.

template<typename TextureType >
void WGETexture< TextureType >::bind ( osg::ref_ptr< osg::Node >  node,
size_t  unit = 0 
)

Binds the texture to the specified node and texture unit.

It also adds two uniforms: u_textureXMin and u_textureXScale, where X is the unit number. This can be used in shaders to unscale it.

Parameters
nodethe node where to bind the texture to
unitthe unit, by default 0

Definition at line 564 of file WGETexture.h.

References wge::bindTexture().

template<typename TextureType >
WPropSelection WGETexture< TextureType >::colormap ( ) const
inline

Returns the colormap property.

The property can be changed. A change affects all colormaps using this texture.

Returns
colormap property

Definition at line 524 of file WGETexture.h.

template<typename TextureType >
void WGETexture< TextureType >::create ( )
protectedvirtual

Creates the texture data.

Overwrite this method if you want to provide a custom texture creation procedure.

Reimplemented in WDataTexture3D.

Definition at line 571 of file WGETexture.h.

template<typename TextureType >
WBoundingBox WGETexture< TextureType >::getBoundingBox ( ) const
virtual

Returns the texture's bounding box.

This is const. Although there exists the transformation() property, it is an information property and can't be changed.

Returns
the bounding box.

Reimplemented in WDataTexture3D.

Definition at line 622 of file WGETexture.h.

template<typename TextureType >
boost::shared_ptr< WProperties > WGETexture< TextureType >::getInformationProperties ( ) const

Return a pointer to the information properties object of the dataset.

The dataset intends these properties to not be modified.

Returns
the properties.

Definition at line 476 of file WGETexture.h.

template<typename TextureType >
boost::shared_ptr< WProperties > WGETexture< TextureType >::getProperties ( ) const

Return a pointer to the properties object of the dataset.

Add all the modifiable settings here. This allows the user to modify several properties of a dataset.

Returns
the properties.

Definition at line 470 of file WGETexture.h.

template<typename TextureType >
void WGETexture< TextureType >::handleUpdate ( )
protectedvirtual

Handles all property updates.

Called by m_propCondition.

Definition at line 542 of file WGETexture.h.

template<typename TextureType >
void WGETexture< TextureType >::initTextureSize ( osg::Texture1D *  texture,
int  width,
int  height,
int  depth 
)
staticprotected

Initialize the size of the texture properly according to real texture type (1D,2D,3D).

Notes:
This is needed because osg::Texture::setImage is not virtual and does not set the size from the image.
Parameters
texturethe texture where to set the size
widththe new width
heightthe new height
depththe new depth

Definition at line 604 of file WGETexture.h.

Referenced by WDataTexture3D::WDataTexture3D(), and WGETexture< TextureType >::WGETexture().

template<typename TextureType >
void WGETexture< TextureType >::initTextureSize ( osg::Texture2D *  texture,
int  width,
int  height,
int  depth 
)
staticprotected

Initialize the size of the texture properly according to real texture type (1D,2D,3D).

Notes:
This is needed because osg::Texture::setImage is not virtual and does not set the size from the image.
Parameters
texturethe texture where to set the size
widththe new width
heightthe new height
depththe new depth

Definition at line 610 of file WGETexture.h.

template<typename TextureType >
void WGETexture< TextureType >::initTextureSize ( osg::Texture3D *  texture,
int  width,
int  height,
int  depth 
)
staticprotected

Initialize the size of the texture properly according to real texture type (1D,2D,3D).

Notes:
This is needed because osg::Texture::setImage is not virtual and does not set the size from the image.
Parameters
texturethe texture where to set the size
widththe new width
heightthe new height
depththe new depth

Definition at line 616 of file WGETexture.h.

template<typename TextureType >
WPropBool WGETexture< TextureType >::interpolation ( ) const
inline

Returns the interpolation property.

The property can be changed. A change affects all colormaps using this texture.

Returns
interpolation property

Definition at line 518 of file WGETexture.h.

template<typename TextureType >
WPropDouble WGETexture< TextureType >::minimum ( ) const
inline

Get the minimum in the de-scaled value space.

The property can be changed. A change affects all colormaps using this texture. But be careful as the texture creating depends on these values.

Returns
the minimum

Definition at line 488 of file WGETexture.h.

Referenced by WDataTexture3D::createTexture().

template<typename TextureType >
WPropString WGETexture< TextureType >::name ( ) const
inline

Returns the name property of the texture.

You should set it if you create a texture.

Returns
texture name property

Definition at line 482 of file WGETexture.h.

template<typename TextureType >
WPropDouble WGETexture< TextureType >::scale ( ) const
inline

Get the scaling factor for de-scaling the texture.

The property can be changed. A change affects all colormaps using this texture. But be careful as the texture creating depends on these values.

Returns
the scale

Definition at line 494 of file WGETexture.h.

Referenced by WDataTexture3D::createTexture(), and WDataTexture3D::WDataTexture3D().

template<typename TextureType >
void WGETexture< TextureType >::setFilterMinMag ( osg::Texture::FilterMode  mode)

For all the lazy guys to set the filter MIN and MAG at once.

Parameters
modethe new mode for MIN_FILTER and MAG_FILTER.

Definition at line 589 of file WGETexture.h.

template<typename TextureType >
void WGETexture< TextureType >::setupProperties ( double  scale,
double  min 
)
private

Creates and assigns all properties.

Parameters
minthe min value of the texture
scalethe scale value of the texture

Definition at line 407 of file WGETexture.h.

References WPropertyHelper::PC_SELECTONLYONE::addTo(), and WMatrixFixed< double, 4, 4 >::identity().

Referenced by WGETexture< TextureType >::WGETexture().

template<typename TextureType >
void WGETexture< TextureType >::setWrapSTR ( osg::Texture::WrapMode  mode)

For all the lazy guys to set the wrapping for s,t and r directions at once.

Parameters
modethe new mode for WRAP_S, WRAP_T and WRAP_R.

Definition at line 596 of file WGETexture.h.

template<typename TextureType >
WPropDouble WGETexture< TextureType >::threshold ( ) const
inline

Returns the threshold property.

The property can be changed. A change affects all colormaps using this texture.

Returns
threshold property

Definition at line 506 of file WGETexture.h.

Referenced by WDataTexture3D::WDataTexture3D().

template<typename TextureType >
WPropBool WGETexture< TextureType >::thresholdEnabled ( ) const
inline

Returns the property responsible for enabling threshold based clipping.

If this is false, the threshold is ignored.

Returns
threshold-enable property.

Definition at line 512 of file WGETexture.h.

template<typename TextureType >
WPropMatrix4X4 WGETexture< TextureType >::transformation ( ) const
inline

Returns the texture transformation matrix.

The property can be changed. A change affects all colormaps using this texture. This matrix converts an world-space coordinate to an texture coordinate! This can be seen as a scaled inverse matrix of the grid's transformation.

Returns
the matrix

Definition at line 536 of file WGETexture.h.

Referenced by WDataTexture3D::WDataTexture3D().

template<typename TextureType >
void WGETexture< TextureType >::updateCallback ( osg::StateAttribute *  state)
protectedvirtual

This method implements an update callback which updates the texture image if needed and several other properties like texture matrix.

Parameters
statethe state to update

Definition at line 577 of file WGETexture.h.

Member Data Documentation

template<typename TextureType = osg::Texture>
WPropBool WGETexture< TextureType >::m_active
private

True if the texture is active.

Definition at line 348 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropDouble WGETexture< TextureType >::m_alpha
private

Alpha blending value.

Definition at line 328 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropSelection WGETexture< TextureType >::m_colorMap
private

Selection property for color map.

Definition at line 323 of file WGETexture.h.

template<typename TextureType = osg::Texture>
boost::shared_ptr< WItemSelection > WGETexture< TextureType >::m_colorMapSelectionsList
private

A list of color map selection types.

Definition at line 318 of file WGETexture.h.

template<typename TextureType = osg::Texture>
boost::shared_ptr< WProperties > WGETexture< TextureType >::m_infoProperties
private

The property object for the dataset containing only props whose purpose is "PV_PURPOSE_INFORMNATION".

It is useful to define some property to only be of informational nature. The GUI does not modify them. As it is a WProperties instance, you can use it the same way as m_properties.

Definition at line 293 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropBool WGETexture< TextureType >::m_interpolation
private

True if interpolation should be used.

Definition at line 343 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropDouble WGETexture< TextureType >::m_min
private

The minimum of each value in the texture in unscaled space.

Definition at line 308 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropString WGETexture< TextureType >::m_name
private

The texture name.

This might be useful to identify textures.

Definition at line 303 of file WGETexture.h.

template<typename TextureType = osg::Texture>
bool WGETexture< TextureType >::m_needCreate
private

If true, the texture gets created.

This is used to create texture on demand.

Definition at line 298 of file WGETexture.h.

template<typename TextureType = osg::Texture>
boost::shared_ptr< WCondition > WGETexture< TextureType >::m_propCondition
private

A condition used to notify about changes in several properties.

Definition at line 281 of file WGETexture.h.

template<typename TextureType = osg::Texture>
boost::shared_ptr< WProperties > WGETexture< TextureType >::m_properties
private

The property object for the dataset.

Definition at line 286 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropDouble WGETexture< TextureType >::m_scale
private

The scaling factor to de-scale a [0-1] texture to original space.

Definition at line 313 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropMatrix4X4 WGETexture< TextureType >::m_texMatrix
private

The texture transformation matrix.

Definition at line 353 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropDouble WGETexture< TextureType >::m_threshold
private

Threshold for clipping areas.

Definition at line 333 of file WGETexture.h.

template<typename TextureType = osg::Texture>
WPropBool WGETexture< TextureType >::m_thresholdEnabled
private

Threshold-enable flag.

Definition at line 338 of file WGETexture.h.

template<typename TextureType = osg::Texture>
std::size_t const WGETexture< TextureType >::MAX_NUMBER_OF_TEXTURES = 8
static

We support only 8 textures because some known hardware does not support more texture coordinates.

Definition at line 56 of file WGETexture.h.

template<typename TextureType = osg::Texture>
std::size_t const WGETexture< TextureType >::MAX_TEXTURE_DIMENSION = 2048
static

The maximum texture dimension.

Definition at line 59 of file WGETexture.h.


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