X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Frenderers%2Frenderer-factory-cache.cpp;h=ecfc6b5ca0b099956697d18b645562cbdd94274a;hb=bfdf7a73a4d50dfb60d0f7fa5b214f61c920bf9c;hp=c7b53b62fa3a7a581f41ac876e7f26443c723872;hpb=66a022c46f8e2adfac4586b8d9bc1ec9a9743803;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp index c7b53b6..ecfc6b5 100644 --- a/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp +++ b/dali-toolkit/internal/controls/renderers/renderer-factory-cache.cpp @@ -22,6 +22,7 @@ // INTERNAL HEADER #include +#include namespace Dali { @@ -33,11 +34,13 @@ namespace Internal { RendererFactoryCache::RendererFactoryCache() +: mSvgRasterizeThread( NULL ) { } RendererFactoryCache::~RendererFactoryCache() { + SvgRasterizeThread::TerminateThread( mSvgRasterizeThread ); } Geometry RendererFactoryCache::GetGeometry( GeometryType type ) @@ -122,7 +125,7 @@ void RendererFactoryCache::SaveRenderer( const std::string& key, Renderer& rende } } -void RendererFactoryCache::CleanRendererCache( const std::string& key ) +bool RendererFactoryCache::CleanRendererCache( const std::string& key ) { int index = FindRenderer( key ); if( index != -1 ) @@ -134,8 +137,20 @@ void RendererFactoryCache::CleanRendererCache( const std::string& key ) delete cachedRenderer; cachedRenderer = NULL; + return true; } } + return false; +} + +void RendererFactoryCache::CacheDebugRenderer( Renderer& renderer ) +{ + mDebugRenderer = renderer; +} + +Renderer RendererFactoryCache::GetDebugRenderer() +{ + return mDebugRenderer; } Geometry RendererFactoryCache::CreateQuadGeometry() @@ -153,8 +168,8 @@ Geometry RendererFactoryCache::CreateQuadGeometry() Property::Map quadVertexFormat; quadVertexFormat["aPosition"] = Property::VECTOR2; - PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat, 4 ); - quadVertices.SetData(quadVertexData); + PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat ); + quadVertices.SetData( quadVertexData, 4 ); // Create the geometry object Geometry geometry = Geometry::New(); @@ -164,6 +179,24 @@ Geometry RendererFactoryCache::CreateQuadGeometry() return geometry; } +SvgRasterizeThread* RendererFactoryCache::GetSVGRasterizationThread() +{ + if( !mSvgRasterizeThread ) + { + mSvgRasterizeThread = new SvgRasterizeThread( new EventThreadCallback( MakeCallback( this, &RendererFactoryCache::ApplyRasterizedSVGToSampler ) ) ); + mSvgRasterizeThread->Start(); + } + return mSvgRasterizeThread; +} + +void RendererFactoryCache::ApplyRasterizedSVGToSampler() +{ + while( RasterizingTaskPtr task = mSvgRasterizeThread->NextCompletedTask() ) + { + task->GetSvgRenderer()->ApplyRasterizedImage( task->GetPixelData() ); + } +} + } // namespace Internal } // namespace Toolkit