+ // first resolve url type to know which visual to create
+ VisualUrl visualUrl(url);
+ switch(visualUrl.GetType())
+ {
+ case VisualUrl::N_PATCH:
+ {
+ visualPtr = NPatchVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl);
+ break;
+ }
+ case VisualUrl::SVG:
+ {
+ visualPtr = SvgVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl);
+ break;
+ }
+ case VisualUrl::GIF:
+ case VisualUrl::WEBP:
+ {
+ visualPtr = AnimatedImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl);
+ break;
+ }
+ case VisualUrl::JSON:
+ {
+ visualPtr = AnimatedVectorImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl);
+ break;
+ }
+ case VisualUrl::REGULAR_IMAGE:
+ {
+ visualPtr = ImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl, size);
+ break;
+ }
+ }