From: Kimmo Hoikka Date: Fri, 15 Sep 2017 11:27:03 +0000 (+0100) Subject: Added devel APIs to add and remove external Texture and TextureSet to texture manager X-Git-Tag: dali_1.2.58~4^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=64d0a7e7289061aca3d578e91c4df288b73ae86f Added devel APIs to add and remove external Texture and TextureSet to texture manager Change-Id: Ieb6009e26303510172e1562ad62645c1e037679a --- diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-TextureManager.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-TextureManager.cpp index 2d06a44..24c5c5d 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-TextureManager.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-TextureManager.cpp @@ -20,7 +20,7 @@ #include #include -#include +#include #include using namespace Dali::Toolkit::Internal; diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp index 78da63a..962ad8e 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-VisualUrl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,18 +30,18 @@ int UtcDaliVisualUrlConstructor(void) VisualUrl visualUrl(url); DALI_TEST_EQUALS( true, visualUrl.IsValid(), TEST_LOCATION ); DALI_TEST_EQUALS( visualUrl.GetType(), VisualUrl::GIF, TEST_LOCATION ); - DALI_TEST_EQUALS( visualUrl.GetLocation(), VisualUrl::LOCAL, TEST_LOCATION ); + DALI_TEST_EQUALS( visualUrl.GetProtocolType(), VisualUrl::LOCAL, TEST_LOCATION ); VisualUrl visualUrl2("foobar.jpeg"); visualUrl2 = visualUrl; DALI_TEST_EQUALS( true, visualUrl2.IsValid(), TEST_LOCATION ); DALI_TEST_EQUALS( visualUrl2.GetType(), VisualUrl::GIF, TEST_LOCATION ); - DALI_TEST_EQUALS( visualUrl2.GetLocation(), VisualUrl::LOCAL, TEST_LOCATION ); + DALI_TEST_EQUALS( visualUrl2.GetProtocolType(), VisualUrl::LOCAL, TEST_LOCATION ); VisualUrl visualUrl3( visualUrl ); DALI_TEST_EQUALS( true, visualUrl3.IsValid(), TEST_LOCATION ); DALI_TEST_EQUALS( visualUrl3.GetType(), VisualUrl::GIF, TEST_LOCATION ); - DALI_TEST_EQUALS( visualUrl3.GetLocation(), VisualUrl::LOCAL, TEST_LOCATION ); + DALI_TEST_EQUALS( visualUrl3.GetProtocolType(), VisualUrl::LOCAL, TEST_LOCATION ); END_TEST; } @@ -144,82 +144,82 @@ int UtcDaliVisualUrlLocationP(void) { tet_infoline( "UtcDaliVisualUrl Location" ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.jpeg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://BAR.ORG/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://BAR.ORG/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.GIF").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://1234").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("DALI://1234").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.jpeg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ftp://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("ssh://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("http://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("https://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("FTP://BAR.ORG/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("SSH://BAR.ORG/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTP://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.GIF").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::REMOTE, VisualUrl("HTTPS://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://1234").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("DALI://1234").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::TEXTURE, VisualUrl("dali://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); END_TEST; } @@ -229,44 +229,44 @@ int UtcDaliVisualUrlLocationN(void) { tet_infoline( "UtcDaliVisualUrl Location negative tests" ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("h://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ht://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("htp://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("htpp://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("httt://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http;//bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:x/bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:/xbar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("sshttp://bar.org/foobar.svg").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:https://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https:http://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("HPPT://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ftp:/bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ftp:a/bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("fpp://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ftt://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ssh;//bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ssh:/bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ssh:a/bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("shh://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("sss://bar.org/foobar.9.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:/bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("h1tps://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ht2ps://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("htt3s://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http4://bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https5/bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https:6/bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https:/7bar.org/foobar.gif").GetLocation(), TEST_LOCATION ); - - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.png").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dal://1").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("d1li://1").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("da2i://1").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dal3://1").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dali4//1").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dali:5/1").GetLocation(), TEST_LOCATION ); - DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dali:/61").GetLocation(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("h://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ht://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("htp://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("htpp://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("httt://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http;//bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:x/bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:/xbar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("sshttp://bar.org/foobar.svg").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:https://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https:http://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("HPPT://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ftp:/bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ftp:a/bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("fpp://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ftt://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ssh;//bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ssh:/bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ssh:a/bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("shh://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("sss://bar.org/foobar.9.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http:/bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("h1tps://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("ht2ps://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("htt3s://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("http4://bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https5/bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https:6/bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("https:/7bar.org/foobar.gif").GetProtocolType(), TEST_LOCATION ); + + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("file://bar.org/foobar.png").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dal://1").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("d1li://1").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("da2i://1").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dal3://1").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dali4//1").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dali:5/1").GetProtocolType(), TEST_LOCATION ); + DALI_TEST_EQUALS( VisualUrl::LOCAL, VisualUrl("dali:/61").GetProtocolType(), TEST_LOCATION ); END_TEST; } @@ -348,3 +348,39 @@ int UtcDaliVisualUrlIsLocalResource(void) END_TEST; } + +int UtcDaliVisualUrlGetLocationP(void) +{ + tet_infoline( "UtcDaliVisualUrl GetLocation Positive" ); + + DALI_TEST_EQUAL( "a", VisualUrl("http://a").GetLocation() ); + DALI_TEST_EQUAL( "1", VisualUrl("dali://1").GetLocation() ); + DALI_TEST_EQUAL( "", VisualUrl("ftp://").GetLocation() ); + DALI_TEST_EQUAL( "http://", VisualUrl("http://http://").GetLocation() ); + + END_TEST; +} + +int UtcDaliVisualUrlGetLocationN(void) +{ + tet_infoline( "UtcDaliVisualUrl GetLocation Negative" ); + + DALI_TEST_EQUAL( "", VisualUrl("").GetLocation() ); + DALI_TEST_EQUAL( "a", VisualUrl("a").GetLocation() ); + DALI_TEST_EQUAL( "dali:/1", VisualUrl("dali:/1").GetLocation() ); + DALI_TEST_EQUAL( "dali//1", VisualUrl("dali//1").GetLocation() ); + DALI_TEST_EQUAL( "", VisualUrl("http:/http://").GetLocation() ); + + END_TEST; +} + +int UtcDaliVisualUrlCreateTextureUrl(void) +{ + tet_infoline( "UtcDaliVisualUrl CreateTextureUrl" ); + + DALI_TEST_EQUAL( "dali://a", VisualUrl::CreateTextureUrl( "a" ) ); + DALI_TEST_EQUAL( "dali://1234", VisualUrl::CreateTextureUrl( "1234" ) ); + DALI_TEST_EQUAL( "dali://", VisualUrl::CreateTextureUrl( "" ) ); + + END_TEST; +} diff --git a/automated-tests/src/dali-toolkit/CMakeLists.txt b/automated-tests/src/dali-toolkit/CMakeLists.txt index d3b5bba..4def66d 100755 --- a/automated-tests/src/dali-toolkit/CMakeLists.txt +++ b/automated-tests/src/dali-toolkit/CMakeLists.txt @@ -36,6 +36,7 @@ SET(TC_SOURCES utc-Dali-TextSelectionPopup.cpp utc-Dali-TextSelectionPopupMirroringLTR.cpp utc-Dali-TextSelectionPopupMirroringRTL.cpp + utc-Dali-TextureManager.cpp utc-Dali-ToolBar.cpp utc-Dali-Tooltip.cpp utc-Dali-TransitionData.cpp diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextureManager.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextureManager.cpp new file mode 100644 index 0000000..89a95ba --- /dev/null +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextureManager.cpp @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include + +using namespace Dali; +using namespace Dali::Toolkit; + +namespace +{ + +} // namespace + + +void dali_texture_manager_startup(void) +{ + test_return_value = TET_UNDEF; +} + +void dali_texture_manager_cleanup(void) +{ + test_return_value = TET_PASS; +} + +int UtcDaliTextureManagerAddRemoveP(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliTextureManager" ); + + std::string url; + std::string url2; + std::string url3; + std::string url4; + // scope to ensure texturesets are kept alive by texture manager + { + auto texture = Texture::New( Dali::TextureType::TEXTURE_2D, Pixel::RGBA8888, 88, 99 ); + url = TextureManager::AddTexture( texture ); + DALI_TEST_CHECK( url.size() > 0u ); + + auto textureSet = TextureSet::New(); + textureSet.SetTexture( 0u, texture ); + url2 = TextureManager::AddTexture( textureSet ); + DALI_TEST_CHECK( url2.size() > 0u ); + DALI_TEST_CHECK( url2 != url ); + + // add same texture again, should give new Url + url3 = TextureManager::AddTexture( texture ); + DALI_TEST_CHECK( url3.size() > 0u ); + DALI_TEST_CHECK( url3 != url ); + DALI_TEST_CHECK( url3 != url2 ); + + textureSet = TextureSet::New(); + url4 = TextureManager::AddTexture( textureSet ); + DALI_TEST_CHECK( url4.size() > 0u ); + DALI_TEST_CHECK( url4 != url ); + DALI_TEST_CHECK( url4 != url2 ); + DALI_TEST_CHECK( url4 != url3 ); + } + + auto textureSet = TextureManager::RemoveTexture( url ); + DALI_TEST_CHECK( textureSet && "Texture needs to be non empty handle" ); + auto texture = textureSet.GetTexture( 0u ); + DALI_TEST_EQUAL( texture.GetWidth(), 88u ); + DALI_TEST_EQUAL( texture.GetHeight(), 99u ); + textureSet = TextureManager::RemoveTexture( url ); + DALI_TEST_CHECK( !textureSet && "Texture needs to be removed from texture manager" ); + + textureSet = TextureManager::RemoveTexture( url2 ); + DALI_TEST_CHECK( textureSet && "Texture needs to be non empty handle" ); + texture = textureSet.GetTexture( 0u ); + DALI_TEST_EQUAL( texture.GetWidth(), 88u ); + DALI_TEST_EQUAL( texture.GetHeight(), 99u ); + textureSet = TextureManager::RemoveTexture( url2 ); + DALI_TEST_CHECK( !textureSet && "Texture needs to be removed from texture manager" ); + + textureSet = TextureManager::RemoveTexture( url3 ); + DALI_TEST_CHECK( textureSet && "Texture needs to be non empty handle" ); + texture = textureSet.GetTexture( 0u ); + DALI_TEST_EQUAL( texture.GetWidth(), 88u ); + DALI_TEST_EQUAL( texture.GetHeight(), 99u ); + textureSet = TextureManager::RemoveTexture( url3 ); + DALI_TEST_CHECK( !textureSet && "Texture needs to be removed from texture manager" ); + + textureSet = TextureManager::RemoveTexture( url4 ); + DALI_TEST_CHECK( textureSet && "Texture needs to be non empty handle" ); + textureSet = TextureManager::RemoveTexture( url4 ); + DALI_TEST_CHECK( !textureSet && "Texture needs to be removed from texture manager" ); + + END_TEST; +} + +int UtcDaliTextureManagerAddN(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliTextureManager" ); + + // empty texture is ok, though pointless from app point of view + TextureSet empty; + std::string url = TextureManager::AddTexture( empty ); + DALI_TEST_CHECK( url.size() > 0u ); + + END_TEST; +} + +int UtcDaliTextureManagerRemoveN(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliTextureManager" ); + + // removing empty texture returns empty handle + auto texture = TextureManager::RemoveTexture( "" ); + DALI_TEST_CHECK( !texture && "Texture should not be found" ); + + // removing empty texture returns empty handle + texture = TextureManager::RemoveTexture( "dali://" ); + DALI_TEST_CHECK( !texture && "Texture should not be found" ); + + // empty texture is ok, though pointless from app point of view + TextureSet empty; + std::string url = TextureManager::AddTexture( empty ); + DALI_TEST_CHECK( url.size() > 0u ); + // removing texture with wrong URL returns empty handle + texture = TextureManager::RemoveTexture( "dali://" ); + DALI_TEST_CHECK( !texture && "Texture should not be found" ); + + // removing ftp texture returns empty handle + texture = TextureManager::RemoveTexture( "ftp://foobar" ); + DALI_TEST_CHECK( !texture && "Texture should not be found" ); + + // add a texture + url = TextureManager::AddTexture( texture ); + texture = TextureManager::RemoveTexture( url + "foo" ); + DALI_TEST_CHECK( !texture && "Texture should not be found" ); + + END_TEST; +} + + + diff --git a/dali-toolkit/devel-api/file.list b/dali-toolkit/devel-api/file.list index 7f4308b..5cf6797 100644 --- a/dali-toolkit/devel-api/file.list +++ b/dali-toolkit/devel-api/file.list @@ -30,6 +30,7 @@ devel_api_src_files = \ $(devel_api_src_dir)/image-loader/async-image-loader-devel.cpp \ $(devel_api_src_dir)/image-loader/atlas-upload-observer.cpp \ $(devel_api_src_dir)/image-loader/image-atlas.cpp \ + $(devel_api_src_dir)/image-loader/texture-manager.cpp \ $(devel_api_src_dir)/scripting/script.cpp \ $(devel_api_src_dir)/styling/style-manager-devel.cpp \ $(devel_api_src_dir)/transition-effects/cube-transition-cross-effect.cpp \ diff --git a/dali-toolkit/devel-api/image-loader/texture-manager.cpp b/dali-toolkit/devel-api/image-loader/texture-manager.cpp new file mode 100644 index 0000000..d46d2b4 --- /dev/null +++ b/dali-toolkit/devel-api/image-loader/texture-manager.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// CLASS HEADER +#include + +// INTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace Toolkit +{ + +namespace TextureManager +{ + +std::string AddTexture( Texture& texture ) +{ + TextureSet set = TextureSet::New(); + set.SetTexture( 0u, texture ); + return AddTexture( set ); +} + +std::string AddTexture( TextureSet& textureSet ) +{ + auto visualFactory = Toolkit::VisualFactory::Get(); + auto& textureMgr = GetImplementation( visualFactory ).GetTextureManager(); + return textureMgr.AddExternalTexture( textureSet ); +} + +TextureSet RemoveTexture( const std::string& textureUrl ) +{ + auto visualFactory = Toolkit::VisualFactory::Get(); + auto& textureMgr = GetImplementation( visualFactory ).GetTextureManager(); + return textureMgr.RemoveExternalTexture( textureUrl ); +} + +} // TextureManager + +} // Toolkit + +} // Dali diff --git a/dali-toolkit/devel-api/image-loader/texture-manager.h b/dali-toolkit/devel-api/image-loader/texture-manager.h new file mode 100644 index 0000000..b88eab9 --- /dev/null +++ b/dali-toolkit/devel-api/image-loader/texture-manager.h @@ -0,0 +1,70 @@ +#ifndef DALI_TOOLKIT_DEVEL_API_TEXTURE_MANAGER_H +#define DALI_TOOLKIT_DEVEL_API_TEXTURE_MANAGER_H + +/* + * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// EXTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace Toolkit +{ + +/** + * API to interface with the toolkit texture manager + * Allows developers to add Textures through TextureSets to toolkit so that visuals can use them to render + */ +namespace TextureManager +{ + +/** + * @brief Add a Texture to texture manager + * Toolkit keeps the Texture handle until RemoveTexture is called. + * @note this method does not check for duplicates, + * if same Texture is added multiple times, a different URL is returned each time + * @param[in] texture the Texture to add + * @return the Url string representing this texture + */ +DALI_IMPORT_API std::string AddTexture( Texture& texture ); + +/** + * @brief Add a TextureSet to texture manager + * Toolkit keeps the TextureSet handle until RemoveTexture is called. + * @note this method does not check for duplicates, + * if same TextureSet is added multiple times, a different URL is returned each time + * @param[in] textureSet the TextureSet to add + * @return the Url string representing this texture + */ +DALI_IMPORT_API std::string AddTexture( TextureSet& textureSet ); + +/** + * @brief Removes a TextureSet from toolkit + * @note TextureSet may still be used by visuals and kept alive by them + * @param[in] textureUrl to remove + * @return the handle to the TextureSet or empty handle in case TextureSet is not found + */ +DALI_IMPORT_API TextureSet RemoveTexture( const std::string& textureUrl ); + +} + +} // Toolkit + +} // Dali + +#endif // DALI_TOOLKIT_DEVEL_API_TEXTURE_MANAGER_H diff --git a/dali-toolkit/internal/file.list b/dali-toolkit/internal/file.list index 9b6809f..77df72f 100644 --- a/dali-toolkit/internal/file.list +++ b/dali-toolkit/internal/file.list @@ -31,7 +31,7 @@ toolkit_src_files = \ $(toolkit_src_dir)/visuals/svg/svg-visual.cpp \ $(toolkit_src_dir)/visuals/text/text-visual.cpp \ $(toolkit_src_dir)/visuals/transition-data-impl.cpp \ - $(toolkit_src_dir)/visuals/texture-manager.cpp \ + $(toolkit_src_dir)/visuals/texture-manager-impl.cpp \ $(toolkit_src_dir)/visuals/texture-upload-observer.cpp \ $(toolkit_src_dir)/visuals/visual-base-data-impl.cpp \ $(toolkit_src_dir)/visuals/visual-base-impl.cpp \ diff --git a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h index b30a11a..4c59447 100644 --- a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h @@ -19,7 +19,7 @@ // EXTERNAL INCLUDES #include -#include +#include namespace Dali { diff --git a/dali-toolkit/internal/visuals/animated-image/image-cache.h b/dali-toolkit/internal/visuals/animated-image/image-cache.h index 5061d76..12e89e9 100644 --- a/dali-toolkit/internal/visuals/animated-image/image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/image-cache.h @@ -19,7 +19,7 @@ // EXTERNAL INCLUDES #include -#include +#include namespace Dali { diff --git a/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h b/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h index 6f5607c..1aed961 100644 --- a/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h @@ -21,7 +21,7 @@ #include #include -#include +#include namespace Dali { diff --git a/dali-toolkit/internal/visuals/image/image-visual.cpp b/dali-toolkit/internal/visuals/image/image-visual.cpp index dcb222d..ee0042a 100644 --- a/dali-toolkit/internal/visuals/image/image-visual.cpp +++ b/dali-toolkit/internal/visuals/image/image-visual.cpp @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include #include #include @@ -554,7 +554,7 @@ void ImageVisual::GetNaturalSize( Vector2& naturalSize ) } else if( mImageUrl.IsValid() ) { - if( mImageUrl.GetLocation() == VisualUrl::LOCAL ) + if( mImageUrl.GetProtocolType() == VisualUrl::LOCAL ) { ImageDimensions dimensions = Dali::GetClosestImageSize( mImageUrl.GetUrl() ); @@ -787,7 +787,7 @@ void ImageVisual::InitializeRenderer() { mImpl->mFlags &= ~Impl::IS_ATLASING_APPLIED; - if( ! mImpl->mCustomShader && mImageUrl.GetLocation() == VisualUrl::LOCAL ) + if( ! mImpl->mCustomShader && mImageUrl.GetProtocolType() == VisualUrl::LOCAL ) { bool defaultWrapMode = mWrapModeU <= WrapMode::CLAMP_TO_EDGE && mWrapModeV <= WrapMode::CLAMP_TO_EDGE; diff --git a/dali-toolkit/internal/visuals/texture-manager.cpp b/dali-toolkit/internal/visuals/texture-manager-impl.cpp similarity index 95% rename from dali-toolkit/internal/visuals/texture-manager.cpp rename to dali-toolkit/internal/visuals/texture-manager-impl.cpp index e93d18f..f074087 100644 --- a/dali-toolkit/internal/visuals/texture-manager.cpp +++ b/dali-toolkit/internal/visuals/texture-manager-impl.cpp @@ -16,10 +16,11 @@ */ // CLASS HEADER -#include "texture-manager.h" +#include // EXTERNAL HEADERS #include +#include #include #include #include @@ -85,9 +86,9 @@ const int INVALID_CACHE_INDEX( -1 ); ///< Invalid Cache index TextureManager::TextureManager() -: mCurrentTextureId( 0 ), - mAsyncLocalLoaders( GetNumberOfLocalLoaderThreads(), [&]() { return AsyncLoadingHelper(*this); } ), - mAsyncRemoteLoaders( GetNumberOfRemoteLoaderThreads(), [&]() { return AsyncLoadingHelper(*this); } ) +: mAsyncLocalLoaders( GetNumberOfLocalLoaderThreads(), [&]() { return AsyncLoadingHelper(*this); } ), + mAsyncRemoteLoaders( GetNumberOfRemoteLoaderThreads(), [&]() { return AsyncLoadingHelper(*this); } ), + mCurrentTextureId( 0 ) { } @@ -309,6 +310,43 @@ TextureSet TextureManager::GetTextureSet( TextureId textureId ) return textureSet; } +std::string TextureManager::AddExternalTexture( TextureSet& textureSet ) +{ + TextureManager::ExternalTextureInfo info; + info.textureId = GenerateUniqueTextureId(); + info.textureSet = textureSet; + mExternalTextures.emplace_back( info ); + return VisualUrl::CreateTextureUrl( std::to_string( info.textureId ) ); +} + +TextureSet TextureManager::RemoveExternalTexture( const std::string& url ) +{ + if( url.size() > 0u ) + { + // get the location from the Url + VisualUrl parseUrl( url ); + if( VisualUrl::TEXTURE == parseUrl.GetProtocolType() ) + { + std::string location = parseUrl.GetLocation(); + if( location.size() > 0u ) + { + TextureId id = std::stoi( location ); + const auto end = mExternalTextures.end(); + for( auto iter = mExternalTextures.begin(); iter != end; ++iter ) + { + if( iter->textureId == id ) + { + auto textureSet = iter->textureSet; + mExternalTextures.erase( iter ); + return textureSet; + } + } + } + } + } + return TextureSet(); +} + bool TextureManager::LoadTexture( TextureInfo& textureInfo ) { bool success = true; diff --git a/dali-toolkit/internal/visuals/texture-manager.h b/dali-toolkit/internal/visuals/texture-manager-impl.h similarity index 94% rename from dali-toolkit/internal/visuals/texture-manager.h rename to dali-toolkit/internal/visuals/texture-manager-impl.h index b41270f..117bd1f 100644 --- a/dali-toolkit/internal/visuals/texture-manager.h +++ b/dali-toolkit/internal/visuals/texture-manager-impl.h @@ -1,5 +1,5 @@ -#ifndef DALI_TOOLKIT_TEXTURE_MANAGER_H -#define DALI_TOOLKIT_TEXTURE_MANAGER_H +#ifndef DALI_TOOLKIT_TEXTURE_MANAGER_IMPL_H +#define DALI_TOOLKIT_TEXTURE_MANAGER_IMPL_H /* * Copyright (c) 2017 Samsung Electronics Co., Ltd. @@ -210,6 +210,20 @@ public: */ TextureSet GetTextureSet( TextureId textureId ); + /** + * Adds an external texture to the texture manager + * @param[in] texture The texture to add + * @return string containing the URL for the texture + */ + std::string AddExternalTexture( TextureSet& texture ); + + /** + * Removes an external texture from texture manager + * @param[in] url The string containing the texture to remove + * @return handle to the texture + */ + TextureSet RemoveExternalTexture( const std::string& url ); + private: /** @@ -545,6 +559,12 @@ private: AsyncLoadingInfoContainerType mLoadingInfoContainer; }; + struct ExternalTextureInfo + { + TextureId textureId; + TextureSet textureSet; + }; + private: /** @@ -566,12 +586,13 @@ private: private: // Member Variables: - AtlasInfoContainerType mAtlasContainer; ///< Used to manage Atlas creation and destruction - TextureInfoContainerType mTextureInfoContainer; ///< Used to manage the life-cycle and caching of Textures - TextureId mCurrentTextureId; ///< The current value used for the unique Texture Id generation + AtlasInfoContainerType mAtlasContainer; ///< Used to manage Atlas creation and destruction + TextureInfoContainerType mTextureInfoContainer; ///< Used to manage the life-cycle and caching of Textures + RoundRobinContainerView< AsyncLoadingHelper > mAsyncLocalLoaders; ///< The Asynchronous image loaders used to provide all local async loads + RoundRobinContainerView< AsyncLoadingHelper > mAsyncRemoteLoaders; ///< The Asynchronous image loaders used to provide all remote async loads + std::vector< ExternalTextureInfo > mExternalTextures; ///< Externally provided textures + TextureId mCurrentTextureId; ///< The current value used for the unique Texture Id generation - RoundRobinContainerView mAsyncLocalLoaders; ///< The Asynchronous image loaders used to provide all local async loads - RoundRobinContainerView mAsyncRemoteLoaders; ///< The Asynchronous image loaders used to provide all remote async loads }; @@ -581,4 +602,4 @@ private: // Member Variables: } // namespace Dali -#endif // DALI_TOOLKIT_TEXTURE_MANAGER_H +#endif // DALI_TOOLKIT_TEXTURE_MANAGER_IMPL_H diff --git a/dali-toolkit/internal/visuals/visual-factory-cache.h b/dali-toolkit/internal/visuals/visual-factory-cache.h index cc68e0f..b4d270e 100644 --- a/dali-toolkit/internal/visuals/visual-factory-cache.h +++ b/dali-toolkit/internal/visuals/visual-factory-cache.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_VISUAL_FACTORY_CACHE_H /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,7 +28,7 @@ // INTERNAL INCLUDES #include #include -#include +#include namespace Dali { diff --git a/dali-toolkit/internal/visuals/visual-factory-impl.cpp b/dali-toolkit/internal/visuals/visual-factory-impl.cpp index 469ead5..3aef5bc 100644 --- a/dali-toolkit/internal/visuals/visual-factory-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -316,6 +316,15 @@ Toolkit::Visual::Base VisualFactory::CreateVisual( const std::string& url, Image return Toolkit::Visual::Base( visualPtr.Get() ); } +Internal::TextureManager& VisualFactory::GetTextureManager() +{ + if( !mFactoryCache ) + { + mFactoryCache = new VisualFactoryCache(); + } + return mFactoryCache->GetTextureManager(); +} + } // namespace Internal } // namespace Toolkit diff --git a/dali-toolkit/internal/visuals/visual-factory-impl.h b/dali-toolkit/internal/visuals/visual-factory-impl.h index 030512e..257b03c 100644 --- a/dali-toolkit/internal/visuals/visual-factory-impl.h +++ b/dali-toolkit/internal/visuals/visual-factory-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_VISUAL_FACTORY_IMPL_H /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,6 +66,11 @@ public: */ Toolkit::Visual::Base CreateVisual( const std::string& image, ImageDimensions size ); + /** + * @return the reference to texture manager + */ + Internal::TextureManager& GetTextureManager(); + protected: /** diff --git a/dali-toolkit/internal/visuals/visual-url.cpp b/dali-toolkit/internal/visuals/visual-url.cpp index 1878e31..907b428 100644 --- a/dali-toolkit/internal/visuals/visual-url.cpp +++ b/dali-toolkit/internal/visuals/visual-url.cpp @@ -30,7 +30,7 @@ namespace Internal namespace { -VisualUrl::Location ResolveLocation( const std::string& url ) +VisualUrl::ProtocolType ResolveLocation( const std::string& url ) { const char* urlCStr = url.c_str(); const uint32_t length = url.size(); @@ -219,7 +219,7 @@ VisualUrl::Type VisualUrl::GetType() const return mType; } -VisualUrl::Location VisualUrl::GetLocation() const +VisualUrl::ProtocolType VisualUrl::GetProtocolType() const { return mLocation; } @@ -234,6 +234,21 @@ bool VisualUrl::IsLocalResource() const return mLocation == VisualUrl::LOCAL; } +std::string VisualUrl::GetLocation() +{ + const auto location = mUrl.find( "://" ); + if( std::string::npos != location ) + { + return mUrl.substr( location + 3u ); // 3 characters forwards from the start of :// + } + return mUrl; +} + +std::string VisualUrl::CreateTextureUrl( const std::string& location ) +{ + return "dali://" + location; +} + } // Internal } // Toolkit diff --git a/dali-toolkit/internal/visuals/visual-url.h b/dali-toolkit/internal/visuals/visual-url.h index 96bd635..b261813 100644 --- a/dali-toolkit/internal/visuals/visual-url.h +++ b/dali-toolkit/internal/visuals/visual-url.h @@ -43,7 +43,7 @@ public: GIF }; - enum Location + enum ProtocolType { LOCAL, ///< file in local file system TEXTURE, ///< texture uploaded to texture manager @@ -91,7 +91,7 @@ public: * Is the URL is local to the device, or remote? * @return the location of the resource */ - Location GetLocation() const; + ProtocolType GetProtocolType() const; /** * Is the URL valid? @@ -104,10 +104,22 @@ public: */ bool IsLocalResource() const; + /** + * @return the location part of the url + */ + std::string GetLocation(); + + /** + * Helper to create a URL of type TEXTURE + * @param location the location of the texture + * @return the Url + */ + static std::string CreateTextureUrl( const std::string& location ); + private: std::string mUrl; Type mType; - Location mLocation; + ProtocolType mLocation; }; diff --git a/packaging/dali-toolkit.spec b/packaging/dali-toolkit.spec index e63ac50..b46e4ff 100644 --- a/packaging/dali-toolkit.spec +++ b/packaging/dali-toolkit.spec @@ -1,6 +1,6 @@ Name: dali-toolkit Summary: Dali 3D engine Toolkit -Version: 1.2.57 +Version: 1.2.56 Release: 1 Group: System/Libraries License: Apache-2.0 and BSD-3-Clause and MIT