- RasterizingTaskPtr newTask = new RasterizingTask( this, mParsedImage, width, height );
- mFactoryCache.GetSVGRasterizationThread()->AddTask( newTask );
+ Vector2 dpi = Stage::GetCurrent().GetDpi();
+ float meanDpi = (dpi.height + dpi.width) * 0.5f;
+ if(!mVectorRenderer.Load(buffer, meanDpi))
+ {
+ mLoadFailed = true;
+ DALI_LOG_ERROR("SvgVisual::Load: Failed to load file! [%s]\n", mImageUrl.GetUrl().c_str());
+ return;
+ }
+ mVectorRenderer.GetDefaultSize(mDefaultWidth, mDefaultHeight);
+ }
+ else
+ {
+ mLoadFailed = true;
+ DALI_LOG_ERROR("SvgVisual::Load: Failed to read file! [%s]\n", mImageUrl.GetUrl().c_str());
+ }
+ }
+}
+
+void SvgVisual::AddRasterizationTask(const Vector2& size)
+{
+ if(mImpl->mRenderer)
+ {
+ unsigned int width = static_cast<unsigned int>(size.width);
+ unsigned int height = static_cast<unsigned int>(size.height);
+
+ Vector2 dpi = Stage::GetCurrent().GetDpi();
+ float meanDpi = (dpi.height + dpi.width) * 0.5f;
+
+ RasterizingTaskPtr newTask = new RasterizingTask(this, mVectorRenderer, mImageUrl, meanDpi, width, height);
+ if(IsSynchronousLoadingRequired() && mImageUrl.IsLocalResource())
+ {
+ newTask->Load();
+ newTask->Rasterize();
+ ApplyRasterizedImage(newTask->GetVectorRenderer(), newTask->GetPixelData(), newTask->IsLoaded());
+ }
+ else
+ {
+ mFactoryCache.GetSVGRasterizationThread()->AddTask(newTask);
+ }