X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fatlas-manager%2Fatlas-manager-impl.cpp;h=868c5895ca4c2ca502e1fc2808cc8adc7d424111;hb=2a90cc1250ee0a605436d4a6cf9f4fafab110e06;hp=56c3269bf6989acc324f2951777563323f82dc99;hpb=68398f4bf6958cd60f12b930e240d0d75e9e7d29;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp b/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp index 56c3269..868c589 100644 --- a/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp +++ b/dali-toolkit/internal/atlas-manager/atlas-manager-impl.cpp @@ -50,13 +50,11 @@ namespace attribute mediump vec2 aPosition; attribute mediump vec2 aTexCoord; uniform mediump mat4 uMvpMatrix; - uniform mediump vec3 uSize; varying mediump vec2 vTexCoord; void main() { mediump vec4 position = vec4( aPosition, 0.0, 1.0 ); - position.xyz *= uSize; gl_Position = uMvpMatrix * position; vTexCoord = aTexCoord; } @@ -87,8 +85,7 @@ namespace } AtlasManager::AtlasManager() -: mAddFailPolicy( Toolkit::AtlasManager::FAIL_ON_ADD_CREATES ), - mFilledPixel( FILLED_PIXEL ) +: mAddFailPolicy( Toolkit::AtlasManager::FAIL_ON_ADD_CREATES ) { mNewAtlasSize.mWidth = DEFAULT_ATLAS_WIDTH; mNewAtlasSize.mHeight = DEFAULT_ATLAS_HEIGHT; @@ -106,30 +103,6 @@ AtlasManagerPtr AtlasManager::New() AtlasManager::~AtlasManager() { - for ( SizeType i = 0; i < mAtlasList.size(); ++i ) - { - mAtlasList[ i ].mAtlas.UploadedSignal().Disconnect( this, &AtlasManager::OnUpload ); - delete[] mAtlasList[ i ].mStripBuffer; - } - - // Are there any upload signals pending? Free up those buffer images now. - for ( SizeType i = 0; i < mUploadedImages.Size(); ++i ) - { - delete[] mUploadedImages[ i ]; - } -} - -void AtlasManager::OnUpload( Image image ) -{ - if ( mUploadedImages.Size() ) - { - delete[] mUploadedImages[ 0 ]; - mUploadedImages.Erase( mUploadedImages.Begin() ); - } - else - { - DALI_LOG_ERROR("Atlas Image Upload List should not be empty\n"); - } } Toolkit::AtlasManager::AtlasId AtlasManager::CreateAtlas( const Toolkit::AtlasManager::AtlasSize& size, Pixel::Format pixelformat ) @@ -149,32 +122,22 @@ Toolkit::AtlasManager::AtlasId AtlasManager::CreateAtlas( const Toolkit::AtlasMa Dali::Atlas atlas = Dali::Atlas::New( width, height, pixelformat ); atlas.Clear( Vector4::ZERO ); - mUploadedImages.PushBack( NULL ); AtlasDescriptor atlasDescriptor; atlasDescriptor.mAtlas = atlas; atlasDescriptor.mSize = size; atlasDescriptor.mPixelFormat = pixelformat; atlasDescriptor.mTotalBlocks = ( width / blockWidth ) * ( height / blockHeight ); atlasDescriptor.mAvailableBlocks = atlasDescriptor.mTotalBlocks - 1u; - atlas.UploadedSignal().Connect( this, &AtlasManager::OnUpload ); - - // What size do we need for this atlas' strip buffer ( assume 32bit pixel format )? - SizeType neededStripSize =( blockWidth > blockHeight - DOUBLE_PIXEL_PADDING ? blockWidth : blockHeight - DOUBLE_PIXEL_PADDING ) << 2; - atlasDescriptor.mStripBuffer = new PixelBuffer[ neededStripSize ]; - memset( atlasDescriptor.mStripBuffer, 0, neededStripSize ); - - atlasDescriptor.mHorizontalStrip = BufferImage::New( atlasDescriptor.mStripBuffer, - blockWidth, - SINGLE_PIXEL_PADDING, - pixelformat ); - - atlasDescriptor.mVerticalStrip = BufferImage::New( atlasDescriptor.mStripBuffer, - SINGLE_PIXEL_PADDING, - blockHeight - DOUBLE_PIXEL_PADDING, - pixelformat ); - mUploadedImages.PushBack( NULL ); - atlasDescriptor.mFilledPixelImage = BufferImage::New( reinterpret_cast< PixelBuffer* >( &mFilledPixel ), 1, 1, pixelformat ); - atlas.Upload( atlasDescriptor.mFilledPixelImage, 0, 0 ); + + atlasDescriptor.mHorizontalStrip = BufferImage::New( blockWidth, SINGLE_PIXEL_PADDING, pixelformat ); + atlasDescriptor.mVerticalStrip = BufferImage::New( SINGLE_PIXEL_PADDING, blockHeight - DOUBLE_PIXEL_PADDING, pixelformat ); + + memset( atlasDescriptor.mHorizontalStrip.GetBuffer(), 0, atlasDescriptor.mHorizontalStrip.GetBufferSize() ); + memset( atlasDescriptor.mVerticalStrip.GetBuffer(), 0, atlasDescriptor.mHorizontalStrip.GetBufferSize() ); + + BufferImage filledPixelImage = BufferImage::New( 1u, 1u, pixelformat ); + memset( filledPixelImage.GetBuffer(), 0xFF, filledPixelImage.GetBufferSize() ); + atlas.Upload( filledPixelImage, 0, 0 ); Sampler sampler = Sampler::New( atlas, "sTexture" ); sampler.SetProperty( Sampler::Property::AFFECTS_TRANSPARENCY, true ); @@ -500,8 +463,10 @@ void AtlasManager::OptimizeMesh( const Toolkit::AtlasManager::Mesh2D& in, Toolkit::AtlasManager::Vertex2D v = in.mVertices[ in.mIndices[ i ] ]; for ( SizeType j = 0; j < out.mVertices.Size(); ++j ) { - if ( v.mPosition.x == out.mVertices[ j ].mPosition.x && v.mPosition.y == out.mVertices[ j ].mPosition.y && - v.mTexCoords.x == out.mVertices[ j ].mTexCoords.x && v.mTexCoords.y == out.mVertices[ j ].mTexCoords.y ) + if ( ( fabsf( v.mPosition.x - out.mVertices[ j ].mPosition.x ) < Math::MACHINE_EPSILON_1000 ) && + ( fabsf( v.mPosition.y - out.mVertices[ j ].mPosition.y ) < Math::MACHINE_EPSILON_1000 ) && + ( fabsf( v.mTexCoords.x - out.mVertices[ j ].mTexCoords.x ) < Math::MACHINE_EPSILON_1000 ) && + ( fabsf( v.mTexCoords.y - out.mVertices[ j ].mTexCoords.y ) < Math::MACHINE_EPSILON_1000 ) ) { // Yes, so store this down as the vertex to use out.mIndices.PushBack( j ); @@ -612,10 +577,6 @@ void AtlasManager::UploadImage( const BufferImage& image, { DALI_LOG_ERROR("Uploading image to Atlas Failed!.\n"); } - else - { - mUploadedImages.PushBack( const_cast< BufferImage& >( image ).GetBuffer() ); - } // Blit top strip if ( !mAtlasList[ atlas ].mAtlas.Upload( mAtlasList[ atlas ].mHorizontalStrip, @@ -624,10 +585,6 @@ void AtlasManager::UploadImage( const BufferImage& image, { DALI_LOG_ERROR("Uploading top strip to Atlas Failed!\n"); } - else - { - mUploadedImages.PushBack( NULL ); - } // Blit left strip if ( !mAtlasList[ atlas ].mAtlas.Upload( mAtlasList[ atlas ].mVerticalStrip, @@ -636,10 +593,6 @@ void AtlasManager::UploadImage( const BufferImage& image, { DALI_LOG_ERROR("Uploading left strip to Atlas Failed!\n"); } - else - { - mUploadedImages.PushBack( NULL ); - } // Blit bottom strip if ( blockOffsetY + height + DOUBLE_PIXEL_PADDING <= mAtlasList[ atlas ].mSize.mHeight ) @@ -650,10 +603,6 @@ void AtlasManager::UploadImage( const BufferImage& image, { DALI_LOG_ERROR("Uploading bottom strip to Atlas Failed!.\n"); } - else - { - mUploadedImages.PushBack( NULL ); - } } // Blit right strip @@ -665,10 +614,6 @@ void AtlasManager::UploadImage( const BufferImage& image, { DALI_LOG_ERROR("Uploading right strip to Atlas Failed!.\n"); } - else - { - mUploadedImages.PushBack( NULL ); - } } }