#define DALI_TOOLKIT_INTERNAL_VISUAL_URL_H
/*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
namespace Dali
{
-
namespace Toolkit
{
-
namespace Internal
{
-
class VisualUrl
{
public:
-
/**
* The type of the URL based on the string contents
*/
REGULAR_IMAGE,
N_PATCH,
SVG,
- GIF
+ GIF,
+ WEBP,
+ JSON,
+ TVG
};
- enum Location
+ enum ProtocolType
{
- LOCAL,
- REMOTE
+ LOCAL, ///< file in local file system
+ TEXTURE, ///< texture uploaded to texture manager
+ REMOTE, ///< remote image
+ BUFFER ///< encoded image buffer
};
/**
VisualUrl();
/**
+ * Default Destructor.
+ * Delete an external texture if if protocolType is TEXTURE.
+ */
+ ~VisualUrl();
+
+ /**
* Constructor.
* Determines type of visual and whether the url is local or remote
+ * Notify that it is using an external texture if if protocolType is TEXTURE.
+ *
* @param[in] url The URL to store and resolve
*/
- VisualUrl( const std::string& url );
+ VisualUrl(const std::string& url);
/**
* Copy constructor
* @param[in] url The VisualUrl to copy
*/
- VisualUrl( const VisualUrl& url );
+ VisualUrl(const VisualUrl& url);
/**
* Assignment operator
* @param[in] url The VisualUrl to copy
*/
- VisualUrl& operator=( const VisualUrl& url );
+ VisualUrl& operator=(const VisualUrl& url);
/**
* Get the full URL
* 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?
bool IsValid() const;
/**
- * @return true if the location is LOCAL
+ * @return true if the location is LOCAL, i.e. is loadable from local file system
+ */
+ bool IsLocalResource() const;
+
+ /**
+ * @return true if the location is BUFFER, i.e. may contain EncodedImageBuffer
+ */
+ bool IsBufferResource() const;
+
+ /**
+ * @return the location part of the url
*/
- bool IsLocal() const;
+ std::string GetLocation() const;
+
+ /**
+ * 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);
+
+ /**
+ * Helper to create a URL of type BUFFER
+ * @param location the location of the texture
+ * @return the Url
+ */
+ static std::string CreateBufferUrl(const std::string& location);
+
+ /**
+ * Helper to get a ProtocolType from url
+ * @param url the url of the texture
+ * @return the protocol type
+ */
+ static VisualUrl::ProtocolType GetProtocolType(const std::string& url);
+
+ /**
+ * Helper to get a location from url
+ * @param url the location of the texture
+ * @return the location
+ */
+ static std::string GetLocation(const std::string& url);
private:
- std::string mUrl;
- Type mType;
- Location mLocation;
+ std::string mUrl;
+ Type mType;
+ ProtocolType mLocation;
};
-
} // namespace Internal
} // namespace Toolkit