- visualPtr = NPatchVisual::New( *( mFactoryCache.Get() ), url );
- }
- else if( UrlType::SVG == type )
- {
- visualPtr = SvgVisual::New( *( mFactoryCache.Get() ), url );
- }
- else if( UrlType::GIF == type )
- {
- visualPtr = AnimatedImageVisual::New( *( mFactoryCache.Get() ), url );
+ // first resolve url type to know which visual to create
+ VisualUrl visualUrl( url );
+ switch( visualUrl.GetType() )
+ {
+ case VisualUrl::N_PATCH:
+ {
+ visualPtr = NPatchVisual::New( *( mFactoryCache.Get() ), visualUrl );
+ break;
+ }
+ case VisualUrl::SVG:
+ {
+ visualPtr = SvgVisual::New( *( mFactoryCache.Get() ), visualUrl );
+ break;
+ }
+ case VisualUrl::GIF:
+ {
+ visualPtr = AnimatedImageVisual::New( *( mFactoryCache.Get() ), visualUrl );
+ break;
+ }
+ case VisualUrl::REGULAR_IMAGE:
+ {
+ visualPtr = ImageVisual::New( *( mFactoryCache.Get() ), visualUrl, size );
+ break;
+ }
+ }