X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-url.cpp;h=1979f780dceb119b31226e5e2f90d341fdf88e77;hp=e49831302a10ffad508b0ae27ebc59ed2f78886b;hb=c147cd0260f364a34d0a0220dedc2add5ed0648a;hpb=787268448801d95e2bccb7488059371b65912d8d diff --git a/dali-toolkit/internal/visuals/visual-url.cpp b/dali-toolkit/internal/visuals/visual-url.cpp index e498313..1979f78 100644 --- a/dali-toolkit/internal/visuals/visual-url.cpp +++ b/dali-toolkit/internal/visuals/visual-url.cpp @@ -20,6 +20,10 @@ // EXTERNAL HEADERS #include // for toupper() +// INTERNAL HEADERS +#include +#include + namespace Dali { namespace Toolkit @@ -209,6 +213,14 @@ VisualUrl::VisualUrl(const std::string& url) // TEXTURE location url doesn't need type resolving, REGULAR_IMAGE is fine mType = ResolveType(url); } + else + { + Toolkit::VisualFactory factory = Toolkit::VisualFactory::Get(); + if(factory) + { + GetImplementation(factory).GetTextureManager().UseExternalTexture(*this); + } + } } } @@ -217,15 +229,53 @@ VisualUrl::VisualUrl(const VisualUrl& url) mType(url.mType), mLocation(url.mLocation) { + if(VisualUrl::TEXTURE == mLocation) + { + Toolkit::VisualFactory factory = Toolkit::VisualFactory::Get(); + if(factory) + { + GetImplementation(factory).GetTextureManager().UseExternalTexture(*this); + } + } +} + +VisualUrl::~VisualUrl() +{ + if(VisualUrl::TEXTURE == mLocation) + { + Toolkit::VisualFactory factory = Toolkit::VisualFactory::Get(); + if(factory) + { + GetImplementation(factory).GetTextureManager().RemoveExternalTexture(mUrl); + } + } } VisualUrl& VisualUrl::operator=(const VisualUrl& url) { if(&url != this) { + if(VisualUrl::TEXTURE == mLocation) + { + Toolkit::VisualFactory factory = Toolkit::VisualFactory::Get(); + if(factory) + { + GetImplementation(factory).GetTextureManager().RemoveExternalTexture(mUrl); + } + } + mUrl = url.mUrl; mType = url.mType; mLocation = url.mLocation; + + if(VisualUrl::TEXTURE == mLocation) + { + Toolkit::VisualFactory factory = Toolkit::VisualFactory::Get(); + if(factory) + { + GetImplementation(factory).GetTextureManager().UseExternalTexture(*this); + } + } } return *this; } @@ -257,12 +307,7 @@ bool VisualUrl::IsLocalResource() const std::string VisualUrl::GetLocation() const { - const auto location = mUrl.find("://"); - if(std::string::npos != location) - { - return mUrl.substr(location + 3u); // 3 characters forwards from the start of :// - } - return mUrl; + return GetLocation(mUrl); } std::string VisualUrl::CreateTextureUrl(const std::string& location) @@ -270,6 +315,22 @@ std::string VisualUrl::CreateTextureUrl(const std::string& location) return "dali://" + location; } +VisualUrl::ProtocolType VisualUrl::GetProtocolType(const std::string& url) +{ + return ResolveLocation(url); +} + +std::string VisualUrl::GetLocation(const std::string& url) +{ + const auto location = url.find("://"); + if(std::string::npos != location) + { + return url.substr(location + 3u); // 3 characters forwards from the start of :// + } + return url; +} + + } // namespace Internal } // namespace Toolkit