X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-factory-cache.cpp;h=2db3a5775da08867a2c4bd244d1cc68ba46b0942;hb=e25442b0c940c46d7ae4ae2e7fb48688665d69e8;hp=dd8d306ce9375f43a0c672cea1a425f223d2b287;hpb=190a30974e11c5792335e3b0493bf1c212beec6a;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/visual-factory-cache.cpp b/dali-toolkit/internal/visuals/visual-factory-cache.cpp index dd8d306..2db3a57 100644 --- a/dali-toolkit/internal/visuals/visual-factory-cache.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-cache.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,18 +19,13 @@ // EXTERNAL INCLUDES #include -#include +#include // INTERNAL INCLUDES #include #include #include -namespace -{ -const char * const BROKEN_VISUAL_IMAGE_URL( DALI_IMAGE_DIR "broken.png"); -} - namespace Dali { @@ -40,8 +35,11 @@ namespace Toolkit namespace Internal { -VisualFactoryCache::VisualFactoryCache() -: mSvgRasterizeThread( NULL ) +VisualFactoryCache::VisualFactoryCache( bool preMultiplyOnLoad ) +: mSvgRasterizeThread( NULL ), + mVectorAnimationThread(), + mBrokenImageUrl(""), + mPreMultiplyOnLoad( preMultiplyOnLoad ) { } @@ -106,12 +104,17 @@ ImageAtlasManagerPtr VisualFactoryCache::GetAtlasManager() if( !mAtlasManager ) { mAtlasManager = new ImageAtlasManager(); - mAtlasManager->SetBrokenImage( BROKEN_VISUAL_IMAGE_URL ); + mAtlasManager->SetBrokenImage( mBrokenImageUrl ); } return mAtlasManager; } +TextureManager& VisualFactoryCache::GetTextureManager() +{ + return mTextureManager; +} + NPatchLoader& VisualFactoryCache::GetNPatchLoader() { return mNPatchLoader; @@ -127,11 +130,21 @@ SvgRasterizeThread* VisualFactoryCache::GetSVGRasterizationThread() return mSvgRasterizeThread; } +VectorAnimationThread& VisualFactoryCache::GetVectorAnimationThread() +{ + if( !mVectorAnimationThread ) + { + mVectorAnimationThread = std::unique_ptr< VectorAnimationThread >( new VectorAnimationThread() ); + mVectorAnimationThread->Start(); + } + return *mVectorAnimationThread; +} + void VisualFactoryCache::ApplyRasterizedSVGToSampler() { while( RasterizingTaskPtr task = mSvgRasterizeThread->NextCompletedTask() ) { - task->GetSvgVisual()->ApplyRasterizedImage( task->GetPixelData() ); + task->GetSvgVisual()->ApplyRasterizedImage( task->GetParsedImage(), task->GetPixelData() ); } } @@ -204,9 +217,44 @@ Geometry VisualFactoryCache::CreateGridGeometry( Uint16Pair gridSize ) return geometry; } -Image VisualFactoryCache::GetBrokenVisualImage() +Texture VisualFactoryCache::GetBrokenVisualImage() +{ + if(!mBrokenImageTexture && mBrokenImageUrl.size()) + { + PixelData data; + Devel::PixelBuffer pixelBuffer = LoadImageFromFile( mBrokenImageUrl ); + if( pixelBuffer ) + { + data = Devel::PixelBuffer::Convert(pixelBuffer); // takes ownership of buffer + mBrokenImageTexture = Texture::New( Dali::TextureType::TEXTURE_2D, data.GetPixelFormat(), + data.GetWidth(), data.GetHeight() ); + mBrokenImageTexture.Upload( data ); + } + } + return mBrokenImageTexture; +} + +void VisualFactoryCache::SetPreMultiplyOnLoad( bool preMultiply ) +{ + mPreMultiplyOnLoad = preMultiply; +} + +bool VisualFactoryCache::GetPreMultiplyOnLoad() { - return ResourceImage::New( BROKEN_VISUAL_IMAGE_URL ); + return mPreMultiplyOnLoad; +} + +void VisualFactoryCache::SetBrokenImageUrl(const std::string& brokenImageUrl) +{ + mBrokenImageUrl = brokenImageUrl; + + if( !mAtlasManager ) + { + mAtlasManager = new ImageAtlasManager(); + } + + mAtlasManager->SetBrokenImage( mBrokenImageUrl ); + mTextureManager.SetBrokenImageUrl( mBrokenImageUrl ); } } // namespace Internal