- 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;
+
+#ifdef NO_THORVG
+ RasterizingTaskPtr newTask = new RasterizingTask( this, mParsedImage, mImageUrl, meanDpi, width, height );
+#else /* NO_THORVG */
+ RasterizingTaskPtr newTask = new RasterizingTask( this, mVectorRenderer, mImageUrl, meanDpi, width, height, mLoaded );
+#endif /* NO_THORVG */
+ if ( IsSynchronousLoadingRequired() )
+ {
+#ifdef NO_THORVG
+ newTask->Rasterize();
+ ApplyRasterizedImage( newTask->GetParsedImage(), newTask->GetPixelData() );
+#else /* NO_THORVG */
+ newTask->Load();
+ newTask->Rasterize();
+ ApplyRasterizedImage( newTask->GetVectorRenderer(), newTask->GetPixelData(), newTask->IsLoaded() );
+#endif /* NO_THORVG */
+ }
+ else
+ {
+ mFactoryCache.GetSVGRasterizationThread()->AddTask( newTask );
+ }