OGRE  1.12.4
Object-Oriented Graphics Rendering Engine
Ogre::Bitwise Class Reference

Class for manipulating bit patterns. More...

#include <OgreBitwise.h>

Static Public Member Functions

static OGRE_FORCE_INLINE uint16 bswap16 (uint16 arg)
 Returns value with reversed bytes order. More...
 
static OGRE_FORCE_INLINE uint32 bswap32 (uint32 arg)
 Returns value with reversed bytes order. More...
 
static OGRE_FORCE_INLINE uint64 bswap64 (uint64 arg)
 Returns value with reversed bytes order. More...
 
static void bswapBuffer (void *pData, size_t size)
 Reverses byte order of buffer. More...
 
static void bswapChunks (void *pData, size_t size, size_t count)
 Reverses byte order of chunks in buffer, where 'size' is size of one chunk. More...
 
template<typename SrcT , typename DestT >
static DestT convertBitPattern (SrcT srcValue, SrcT srcBitMask, DestT destBitMask)
 Takes a value with a given src bit mask, and produces another value with a desired bit mask. More...
 
static OGRE_FORCE_INLINE uint32 firstPO2From (uint32 n)
 Returns the closest power-of-two number greater or equal to value. More...
 
static unsigned int fixedToFixed (uint32 value, unsigned int n, unsigned int p)
 Convert N bit colour channel value to P bits. More...
 
static float fixedToFloat (unsigned value, unsigned int bits)
 Fixed point to float. More...
 
static unsigned int floatToFixed (const float value, const unsigned int bits)
 Convert floating point colour channel value between 0.0 and 1.0 (otherwise clamped) to integer of a certain number of bits. More...
 
static uint16 floatToHalf (float i)
 Convert a float32 to a float16 (NV_half_float) Courtesy of OpenEXR. More...
 
static uint16 floatToHalfI (uint32 i)
 Converts float in uint32 format to a a half in uint16 format. More...
 
template<typename T >
static OGRE_FORCE_INLINE unsigned int getBitShift (T mask)
 Returns the number of bits a pattern must be shifted right by to remove right-hand zeros. More...
 
static float halfToFloat (uint16 y)
 Convert a float16 (NV_half_float) to a float32 Courtesy of OpenEXR. More...
 
static uint32 halfToFloatI (uint16 y)
 Converts a half in uint16 format to a float in uint32 format. More...
 
static unsigned int intRead (const void *src, int n)
 Read a n*8 bits integer value to memory in native endian. More...
 
static void intWrite (void *dest, const int n, const unsigned int value)
 Write a n*8 bits integer value to memory in native endian. More...
 
template<typename T >
static OGRE_FORCE_INLINE bool isPO2 (T n)
 Determines whether the number is power-of-two or not. More...
 
static OGRE_FORCE_INLINE unsigned int mostSignificantBitSet (unsigned int value)
 Returns the most significant bit set in a value. More...
 

Detailed Description

Class for manipulating bit patterns.

Member Function Documentation

◆ bswap16()

static OGRE_FORCE_INLINE uint16 Ogre::Bitwise::bswap16 ( uint16  arg)
inlinestatic

Returns value with reversed bytes order.

◆ bswap32()

static OGRE_FORCE_INLINE uint32 Ogre::Bitwise::bswap32 ( uint32  arg)
inlinestatic

Returns value with reversed bytes order.

Referenced by bswap64().

◆ bswap64()

static OGRE_FORCE_INLINE uint64 Ogre::Bitwise::bswap64 ( uint64  arg)
inlinestatic

Returns value with reversed bytes order.

References bswap32().

◆ bswapBuffer()

static void Ogre::Bitwise::bswapBuffer ( void *  pData,
size_t  size 
)
inlinestatic

Reverses byte order of buffer.

Use bswap16/32/64 instead if possible.

◆ bswapChunks()

static void Ogre::Bitwise::bswapChunks ( void *  pData,
size_t  size,
size_t  count 
)
inlinestatic

Reverses byte order of chunks in buffer, where 'size' is size of one chunk.

◆ mostSignificantBitSet()

static OGRE_FORCE_INLINE unsigned int Ogre::Bitwise::mostSignificantBitSet ( unsigned int  value)
inlinestatic

Returns the most significant bit set in a value.

◆ firstPO2From()

static OGRE_FORCE_INLINE uint32 Ogre::Bitwise::firstPO2From ( uint32  n)
inlinestatic

Returns the closest power-of-two number greater or equal to value.

Note
0 and 1 are powers of two, so firstPO2From(0)==0 and firstPO2From(1)==1.

◆ isPO2()

template<typename T >
static OGRE_FORCE_INLINE bool Ogre::Bitwise::isPO2 ( n)
inlinestatic

Determines whether the number is power-of-two or not.

Note
0 and 1 are tread as power of two.

◆ getBitShift()

template<typename T >
static OGRE_FORCE_INLINE unsigned int Ogre::Bitwise::getBitShift ( mask)
inlinestatic

Returns the number of bits a pattern must be shifted right by to remove right-hand zeros.

Referenced by convertBitPattern().

◆ convertBitPattern()

template<typename SrcT , typename DestT >
static DestT Ogre::Bitwise::convertBitPattern ( SrcT  srcValue,
SrcT  srcBitMask,
DestT  destBitMask 
)
inlinestatic

Takes a value with a given src bit mask, and produces another value with a desired bit mask.

Remarks
This routine is useful for colour conversion.

References getBitShift().

◆ fixedToFixed()

static unsigned int Ogre::Bitwise::fixedToFixed ( uint32  value,
unsigned int  n,
unsigned int  p 
)
inlinestatic

Convert N bit colour channel value to P bits.

It fills P bits with the bit pattern repeated. (this is /((1<<n)-1) in fixed point)

◆ floatToFixed()

static unsigned int Ogre::Bitwise::floatToFixed ( const float  value,
const unsigned int  bits 
)
inlinestatic

Convert floating point colour channel value between 0.0 and 1.0 (otherwise clamped) to integer of a certain number of bits.

Works for any value of bits between 0 and 31.

◆ fixedToFloat()

static float Ogre::Bitwise::fixedToFloat ( unsigned  value,
unsigned int  bits 
)
inlinestatic

Fixed point to float.

◆ intWrite()

static void Ogre::Bitwise::intWrite ( void *  dest,
const int  n,
const unsigned int  value 
)
inlinestatic

Write a n*8 bits integer value to memory in native endian.

◆ intRead()

static unsigned int Ogre::Bitwise::intRead ( const void *  src,
int  n 
)
inlinestatic

Read a n*8 bits integer value to memory in native endian.

◆ floatToHalf()

static uint16 Ogre::Bitwise::floatToHalf ( float  i)
inlinestatic

Convert a float32 to a float16 (NV_half_float) Courtesy of OpenEXR.

References floatToHalfI().

◆ floatToHalfI()

static uint16 Ogre::Bitwise::floatToHalfI ( uint32  i)
inlinestatic

Converts float in uint32 format to a a half in uint16 format.

Referenced by floatToHalf().

◆ halfToFloat()

static float Ogre::Bitwise::halfToFloat ( uint16  y)
inlinestatic

Convert a float16 (NV_half_float) to a float32 Courtesy of OpenEXR.

References halfToFloatI().

◆ halfToFloatI()

static uint32 Ogre::Bitwise::halfToFloatI ( uint16  y)
inlinestatic

Converts a half in uint16 format to a float in uint32 format.

Referenced by halfToFloat().


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