/*
- * 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.
// EXTERNAL INCLUDES
#include <dali/devel-api/common/hash.h>
-#include <dali/public-api/images/resource-image.h>
+#include <dali/devel-api/adaptor-framework/image-loading.h>
// INTERNAL INCLUDES
#include <dali-toolkit/internal/visuals/color/color-visual.h>
#include <dali-toolkit/internal/visuals/svg/svg-visual.h>
#include <dali-toolkit/internal/visuals/image-atlas-manager.h>
-
-
-namespace
-{
-const char * const BROKEN_VISUAL_IMAGE_URL( DALI_IMAGE_DIR "broken.png");
-}
+#include <dali-toolkit/internal/visuals/animated-vector-image/vector-animation-manager.h>
namespace Dali
{
VisualFactoryCache::VisualFactoryCache( bool preMultiplyOnLoad )
: mSvgRasterizeThread( NULL ),
- mVectorAnimationThread(),
+ mVectorAnimationManager(),
mBrokenImageUrl(""),
mPreMultiplyOnLoad( preMultiplyOnLoad )
{
Property::Map quadVertexFormat;
quadVertexFormat["aPosition"] = Property::VECTOR2;
- PropertyBuffer quadVertices = PropertyBuffer::New( quadVertexFormat );
+ VertexBuffer quadVertices = VertexBuffer::New( quadVertexFormat );
quadVertices.SetData( quadVertexData, 4 );
// Create the geometry object
{
if( !mSvgRasterizeThread )
{
- mSvgRasterizeThread = new SvgRasterizeThread( new EventThreadCallback( MakeCallback( this, &VisualFactoryCache::ApplyRasterizedSVGToSampler ) ) );
+ mSvgRasterizeThread = new SvgRasterizeThread();
mSvgRasterizeThread->Start();
}
return mSvgRasterizeThread;
}
-VectorAnimationThread& VisualFactoryCache::GetVectorAnimationThread()
+VectorAnimationManager& VisualFactoryCache::GetVectorAnimationManager()
{
- if( !mVectorAnimationThread )
+ if( !mVectorAnimationManager )
{
- mVectorAnimationThread = std::unique_ptr< VectorAnimationThread >( new VectorAnimationThread() );
- mVectorAnimationThread->Start();
- }
- return *mVectorAnimationThread;
-}
-
-void VisualFactoryCache::ApplyRasterizedSVGToSampler()
-{
- while( RasterizingTaskPtr task = mSvgRasterizeThread->NextCompletedTask() )
- {
- task->GetSvgVisual()->ApplyRasterizedImage( task->GetPixelData() );
+ mVectorAnimationManager = std::unique_ptr< VectorAnimationManager >( new VectorAnimationManager() );
}
+ return *mVectorAnimationManager;
}
Geometry VisualFactoryCache::CreateGridGeometry( Uint16Pair gridSize )
Property::Map vertexFormat;
vertexFormat[ "aPosition" ] = Property::VECTOR2;
- PropertyBuffer vertexPropertyBuffer = PropertyBuffer::New( vertexFormat );
+ VertexBuffer vertexBuffer = VertexBuffer::New( vertexFormat );
if( vertices.Size() > 0 )
{
- vertexPropertyBuffer.SetData( &vertices[ 0 ], vertices.Size() );
+ vertexBuffer.SetData( &vertices[ 0 ], vertices.Size() );
}
Property::Map indexFormat;
indexFormat[ "indices" ] = Property::INTEGER;
- PropertyBuffer indexPropertyBuffer = PropertyBuffer::New( indexFormat );
+ VertexBuffer indexVertexBuffer = VertexBuffer::New( indexFormat );
// Create the geometry object
Geometry geometry = Geometry::New();
- geometry.AddVertexBuffer( vertexPropertyBuffer );
+ geometry.AddVertexBuffer( vertexBuffer );
if( indices.Size() > 0 )
{
geometry.SetIndexBuffer( &indices[ 0 ], indices.Size() );
return geometry;
}
-Image VisualFactoryCache::GetBrokenVisualImage()
+Texture VisualFactoryCache::GetBrokenVisualImage()
{
- return ResourceImage::New( mBrokenImageUrl );
+ 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 )