From: JunsuChoi Date: Thu, 2 Sep 2021 06:22:54 +0000 (+0900) Subject: image-view: Add tvg image format X-Git-Tag: dali_2.0.46~5^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=8362296c1a4926b2a041b75537766977b064b62e image-view: Add tvg image format Change-Id: I17c2968badef555ffe9562cba928b379668e6894 --- diff --git a/automated-tests/resources/test.tvg b/automated-tests/resources/test.tvg new file mode 100644 index 0000000..78bb48f Binary files /dev/null and b/automated-tests/resources/test.tvg differ diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp index 0450040..46d77a4 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp @@ -2883,6 +2883,27 @@ int UtcDaliImageViewSvgRasterizationFailure(void) END_TEST; } +int UtcDaliImageViewTVGLoading(void) +{ + ToolkitTestApplication application; + + tet_infoline("ImageView Testing TVG image loading"); + + { + ImageView imageView = ImageView::New( ); + + imageView.SetImage( TEST_RESOURCE_DIR "/test.tvg" ); + + application.GetScene().Add( imageView ); + DALI_TEST_CHECK( imageView ); + Vector3 naturalSize = imageView.GetNaturalSize(); + + DALI_TEST_EQUALS( naturalSize.width, 100.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( naturalSize.height, 100.0f, TEST_LOCATION ); + } + END_TEST; +} + namespace { diff --git a/dali-toolkit/internal/visuals/visual-factory-impl.cpp b/dali-toolkit/internal/visuals/visual-factory-impl.cpp index 8c4b2f8..b86dcf0 100644 --- a/dali-toolkit/internal/visuals/visual-factory-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-impl.cpp @@ -154,6 +154,7 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyM visualPtr = NPatchVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl, propertyMap); break; } + case VisualUrl::TVG: case VisualUrl::SVG: { visualPtr = SvgVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl, propertyMap); @@ -318,6 +319,7 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const std::string& url, ImageD visualPtr = NPatchVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl); break; } + case VisualUrl::TVG: case VisualUrl::SVG: { visualPtr = SvgVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl); diff --git a/dali-toolkit/internal/visuals/visual-url.cpp b/dali-toolkit/internal/visuals/visual-url.cpp index 30d9c02..0ad5778 100644 --- a/dali-toolkit/internal/visuals/visual-url.cpp +++ b/dali-toolkit/internal/visuals/visual-url.cpp @@ -118,7 +118,9 @@ VisualUrl::Type ResolveType(const std::string& url) char GIF[4] = {'f', 'i', 'g', '.'}; char WEBP[5] = {'p', 'b', 'e', 'w', '.'}; char JSON[5] = {'n', 'o', 's', 'j', '.'}; + char TVG[4] = {'g', 'v', 't', '.'}; unsigned int svgScore = 0; + unsigned int tvgScore = 0; unsigned int gifScore = 0; unsigned int webpScore = 0; unsigned int jsonScore = 0; @@ -135,6 +137,14 @@ VisualUrl::Type ResolveType(const std::string& url) return VisualUrl::SVG; } } + if((offsetFromEnd < sizeof(TVG)) && (currentChar == TVG[offsetFromEnd])) + { + // early out if TVG as can't be used in N patch for now + if(++tvgScore == sizeof(TVG)) + { + return VisualUrl::TVG; + } + } if((offsetFromEnd < sizeof(GIF)) && (currentChar == GIF[offsetFromEnd])) { // early out if GIF as can't be used in N patch for now diff --git a/dali-toolkit/internal/visuals/visual-url.h b/dali-toolkit/internal/visuals/visual-url.h index 555e383..08a276a 100644 --- a/dali-toolkit/internal/visuals/visual-url.h +++ b/dali-toolkit/internal/visuals/visual-url.h @@ -38,7 +38,8 @@ public: SVG, GIF, WEBP, - JSON + JSON, + TVG }; enum ProtocolType