//------------------------------------------------------------------ bool ofUTF8::startsWithBOM(ofUTF8String txt) { return startsWithBOM(beginPtr(txt),endPtr(txt)); }
void CRosRttTexture::update() { // Copy texture data to the image Ogre::Image ogre_image; texture_->convertToImage( ogre_image ); sensor_msgs::Image::_data_type::iterator outputPtr(current_image_.data.begin()); if( m_bIsDepth ) { long size = width_ * height_; Ogre::Real * dataPtr( reinterpret_cast< Ogre::Real * >( ogre_image.getData() ) ); Ogre::Real * beginPtr( dataPtr ); Ogre::Real min( 1000000.0f ), max( -1000000.0f ); // Compute depth limits for( long i = 0; i < size; ++i ) { if( *dataPtr > max ) max = *outputPtr; if( *dataPtr < min ) min = *outputPtr; ++dataPtr; } float scale( 1.0 ); if( max > min ) { scale = 1.0f/ ( max - min ); } dataPtr = beginPtr; Ogre::uchar a(255), v; // Copy pixels, set alpha to max... for( long i = 0; i < size; ++i ) { v = Ogre::uchar( (*dataPtr - min) * scale ); ++dataPtr; *outputPtr = v; ++outputPtr; *outputPtr = v; ++outputPtr; *outputPtr = v; ++outputPtr; *outputPtr = a; ++outputPtr; } } else { // Image size in bytes long size = width_ * height_ * BPP; Ogre::uchar * dataPtr( ogre_image.getData() ); // Copy data (Can be optimized, of course, but I am too lazy :P ) for( long i = 0; i < size; ++i ) { *outputPtr = *dataPtr; ++outputPtr; ++dataPtr; } } }
//------------------------------------------------------------------ ofUTF8Iterator ofUTF8::end(const ofUTF8String& input) { return ofUTF8Iterator(endPtr(input),beginPtr(input),endPtr(input)); }