X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-url.cpp;h=c43af6d7485ec4f7a29ed2b3759b9f63846fb62d;hb=a6e73b84ce0442ad28197c3ef2ed1b48fa682508;hp=0ad5778fb0b589ec03e2ecfb0cb213bab7cb07cf;hpb=8362296c1a4926b2a041b75537766977b064b62e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/visual-url.cpp b/dali-toolkit/internal/visuals/visual-url.cpp index 0ad5778..c43af6d 100644 --- a/dali-toolkit/internal/visuals/visual-url.cpp +++ b/dali-toolkit/internal/visuals/visual-url.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -18,6 +18,7 @@ #include // EXTERNAL HEADERS +#include #include // for toupper() namespace Dali @@ -104,7 +105,8 @@ VisualUrl::ProtocolType ResolveLocation(const std::string& url) VisualUrl::Type ResolveType(const std::string& url) { // if only one char in string, can only be regular image - const std::size_t count = url.size(); + const std::size_t count = url.size(); + VisualUrl::Type returnType = VisualUrl::REGULAR_IMAGE; if(count > 0) { // parsing from the end for better chance of early outs @@ -147,18 +149,18 @@ VisualUrl::Type ResolveType(const std::string& url) } if((offsetFromEnd < sizeof(GIF)) && (currentChar == GIF[offsetFromEnd])) { - // early out if GIF as can't be used in N patch for now + //find type, but need to be check used in N patch if(++gifScore == sizeof(GIF)) { - return VisualUrl::GIF; + returnType = VisualUrl::GIF; } } if((offsetFromEnd < sizeof(WEBP)) && (currentChar == WEBP[offsetFromEnd])) { - // early out if WEBP as can't be used in N patch for now if(++webpScore == sizeof(WEBP)) { - return VisualUrl::WEBP; + //find type, but need to be check used in N patch + returnType = VisualUrl::WEBP; } } if((offsetFromEnd < sizeof(JSON)) && (currentChar == JSON[offsetFromEnd])) @@ -188,7 +190,7 @@ VisualUrl::Type ResolveType(const std::string& url) else { // early out, not a valid N/9-patch URL - return VisualUrl::REGULAR_IMAGE; + return returnType; } break; } @@ -201,7 +203,7 @@ VisualUrl::Type ResolveType(const std::string& url) else { // early out, not a valid N/9-patch URL - return VisualUrl::REGULAR_IMAGE; + return returnType; } break; } @@ -209,7 +211,7 @@ VisualUrl::Type ResolveType(const std::string& url) } } // if we got here it is a regular image - return VisualUrl::REGULAR_IMAGE; + return returnType; } } // namespace @@ -217,14 +219,16 @@ VisualUrl::Type ResolveType(const std::string& url) VisualUrl::VisualUrl() : mUrl(), mType(VisualUrl::REGULAR_IMAGE), - mLocation(VisualUrl::LOCAL) + mLocation(VisualUrl::LOCAL), + mUrlHash(0ull) { } VisualUrl::VisualUrl(const std::string& url) : mUrl(url), mType(VisualUrl::REGULAR_IMAGE), - mLocation(VisualUrl::LOCAL) + mLocation(VisualUrl::LOCAL), + mUrlHash(0ull) { if(!url.empty()) { @@ -240,7 +244,8 @@ VisualUrl::VisualUrl(const std::string& url) VisualUrl::VisualUrl(const VisualUrl& url) : mUrl(url.mUrl), mType(url.mType), - mLocation(url.mLocation) + mLocation(url.mLocation), + mUrlHash(url.mUrlHash) { } @@ -255,6 +260,7 @@ VisualUrl& VisualUrl::operator=(const VisualUrl& url) mUrl = url.mUrl; mType = url.mType; mLocation = url.mLocation; + mUrlHash = url.mUrlHash; } return *this; } @@ -264,6 +270,11 @@ const std::string& VisualUrl::GetUrl() const return mUrl; } +const std::uint64_t& VisualUrl::GetUrlHash() const +{ + return DALI_UNLIKELY(mUrlHash == 0) ? (mUrlHash = Dali::CalculateHash(mUrl)) : mUrlHash; +} + VisualUrl::Type VisualUrl::GetType() const { return mType;