X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fimage-atlas%2Fimage-atlas-impl.cpp;h=ab70af43e915396b5a969d8042f03c1e51abc330;hb=b7aba8fca323d1ac64e7d2bda01a302e38114517;hp=a46c6f2792db72f62a6fcc303187ef380c1c7bba;hpb=f3c7e52f300fc2f6d07bcbd75ad3b992e19083f5;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/image-atlas/image-atlas-impl.cpp b/dali-toolkit/internal/image-atlas/image-atlas-impl.cpp index a46c6f2..ab70af4 100644 --- a/dali-toolkit/internal/image-atlas/image-atlas-impl.cpp +++ b/dali-toolkit/internal/image-atlas/image-atlas-impl.cpp @@ -138,6 +138,26 @@ bool ImageAtlas::Upload( Vector4& textureRect, return false; } +bool ImageAtlas::Upload( Vector4& textureRect, PixelDataPtr pixelData ) +{ + unsigned int packPositionX = 0; + unsigned int packPositionY = 0; + if( mPacker.Pack( pixelData->GetWidth(), pixelData->GetHeight(), packPositionX, packPositionY ) ) + { + mAtlas.Upload( pixelData, packPositionX, packPositionY ); + + // apply the half pixel correction + textureRect.x = ( static_cast( packPositionX ) +0.5f ) / mWidth; // left + textureRect.y = ( static_cast( packPositionY ) +0.5f ) / mHeight; // right + textureRect.z = ( static_cast( packPositionX + pixelData->GetWidth() )-0.5f ) / mWidth; // right + textureRect.w = ( static_cast( packPositionY + pixelData->GetHeight() )-0.5f ) / mHeight;// bottom + + return true; + } + + return false; +} + void ImageAtlas::Remove( const Vector4& textureRect ) { mPacker.DeleteBlock( static_cast(textureRect.x*mWidth),