#define DALI_TOOLKIT_IMAGE_VISUAL_PROPERTIES_H
/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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
{
-
/**
* @addtogroup dali_toolkit_visuals
* @{
*/
namespace ImageVisual
{
-
/**
- * @brief ImageVisual Property
+ * @brief ImageVisual Property.
* @SINCE_1_1.45
*/
namespace Property
{
-
/**
- * @brief ImageVisual Property
+ * @brief Enumeration for the instance of properties belonging to the ImageVisual.
* @SINCE_1_1.45
*/
enum
{
/**
* @brief The URL of the image.
- * @details Name "url", type Property::STRING.
+ * @details Name "url", type Property::STRING or Property::ARRAY of Property::STRING.
+ * @note The array form is used for generating animated image visuals.
+ * @note The number of threads used for local and remote image loading can be controlled by the
+ * environment variables DALI_TEXTURE_LOCAL_THREADS and DALI_TEXTURE_REMOTE_THREADS respectively.
+ * The default values are 4 threads for local image loading and 8 threads for remote image loading.
* @SINCE_1_1.45
* @note Mandatory.
*/
/**
* @brief The wrap mode for u coordinate.
- * @details Name "wrapModeU", type Dali::WrapMode::Type (Property::INTEGER) or Property::STRING
+ * @details Name "wrapModeU", type Dali::WrapMode::Type (Property::INTEGER) or Property::STRING.
* It decides how the texture should be sampled when the u coordinate exceeds the range of 0.0 to 1.0.
* @SINCE_1_2.1
* @note Optional. If not specified, the default is CLAMP.
/**
* @brief The wrap mode for v coordinate.
- * @details Name "wrapModeV", type Dali::WrapMode::Type (Property::INTEGER) or Property::STRING
+ * @details Name "wrapModeV", type Dali::WrapMode::Type (Property::INTEGER) or Property::STRING.
* it decides how the texture should be sampled when the v coordinate exceeds the range of 0.0 to 1.0.
* @SINCE_1_2.1
* @note Optional. If not specified, the default is CLAMP.
* @note For Normal QUAD image only.
*/
WRAP_MODE_V,
+
+ /**
+ * @brief The border of the image.
+ * @details Name "border", type Property::RECTANGLE or Property::VECTOR4.
+ * The border of the image in the order: left, right, bottom, top.
+ * @SINCE_1_2.60
+ * @note Optional.
+ * @note For N-Patch images only.
+ */
+ BORDER,
+
+ /**
+ * @brief Whether to use the texture atlas
+ * @details Name "atlasing", type Property::BOOLEAN.
+ * @SINCE_1_2.60
+ * @note Optional. By default atlasing is off.
+ */
+ ATLASING,
+
+ /**
+ * @brief URL of a masking image
+ * @details Name "alphaMaskUrl", type Property::STRING, URL of image to apply as
+ * a mask after image loading. If set after the main URL has finished loading, this
+ * may necessitate a re-load of the main image. The alpha mask image will be scaled
+ * on load to match the size of the main image, then applied to the pixel data
+ * before uploading to GL.
+ * @SINCE_1_2.60
+ * @note Optional.
+ */
+ ALPHA_MASK_URL,
+
+ /**
+ * @brief Defines the batch size for pre-loading images in the AnimatedImageVisual
+ * @details Name "batchSize", type Property::INTEGER, number of images to pre-load
+ * before starting to play. Default value: 2
+ * @SINCE_1_2.60
+ * @note Optional.
+ * @note Minimum supported value is 2.
+ */
+ BATCH_SIZE,
+
+ /**
+ * @brief Defines the cache size for loading images in the AnimatedImageVisual
+ * @details Name "cacheSize", type Property::INTEGER, number of images to keep
+ * cached ahead during playback. Default value: 2
+ *
+ * @SINCE_1_2.60
+ * @note Optional.
+ * @note Minimum supported value is 2.
+ * @note, cacheSize should be >= batchSize.
+ * If it isn't, then the cache will automatically be changed to batchSize.
+ * @note, because of the defaults, it is expected that the application developer
+ * tune the batch and cache sizes to their particular use case.
+ */
+ CACHE_SIZE,
+
+ /**
+ * @brief The number of milliseconds between each frame in the AnimatedImageVisual
+ * @details Name "frameDelay", type Property::INTEGER, The number of milliseconds between each frame.
+ * @SINCE_1_2.60
+ * @note Optional.
+ * @note This is only used when multiple URLs are provided.
+ */
+ FRAME_DELAY,
+
+ /**
+ * @brief The scale factor to apply to the content image before masking
+ * @details Name "maskContentScale", type Property::FLOAT, The scale factor
+ * to apply to the content before masking. Note, scaled images are cropped to
+ * the same size as the alpha mask.
+ * @SINCE_1_2.60
+ * @note Optional.
+ */
+ MASK_CONTENT_SCALE,
+
+ /**
+ * @brief Whether to crop image to mask or scale mask to fit image
+ * @details Name "cropToMask", type Property::BOOLEAN, True if the image should
+ * be cropped to match the mask size, or false if the image should remain the same size.
+ * @SINCE_1_2.60
+ * @note Optional.
+ * @note If this is false, then the mask is scaled to fit the image before being applied.
+ */
+ CROP_TO_MASK,
+
+ /**
+ * @brief The policy to determine when an image should be loaded.
+ * @details Name "loadPolicy", Type LoadPolicy::Type (Property::INTEGER)or Property::STRING.
+ * @SINCE_1_3_5
+ * @note Default LoadPolicy::ATTACHED
+ * @see LoadPolicy::Type
+ */
+
+ LOAD_POLICY,
+
+ /**
+ * @brief The policy to determine when an image should no longer be cached.
+ * @details Name "releasePolicy", Type ReleasePolicy::Type (Property::INTEGER) or Property::STRING
+ * @SINCE_1_3_5
+ * @note Default ReleasePolicy::DESTROYED
+ * @see ReleasePolicy::Type
+ */
+ RELEASE_POLICY,
+
+ /**
+ * @brief Determines if image orientation should be corrected so the image displays as it was intended.
+ * @details Name "orientationCorrection", Type Property::BOOLEAN, if true the image's orientation will be corrected.
+ * @SINCE_1_3_5
+ * @note Default true
+ */
+ ORIENTATION_CORRECTION,
+
};
} // namespace Property
+/**
+ * @brief The policy determining if the image is loaded when the visual is staged or created.
+ * @SINCE_1_3_5
+ */
+namespace LoadPolicy
+{
+/**
+ * @brief The available named elements that define the LoadPolicy.
+ * @SINCE_1_3_5
+ */
+enum Type
+{
+ IMMEDIATE = 0, ///< The image is loaded when the ImageVisual is created.
+ ATTACHED ///< The image is loaded when the ImageVisual is attached to the stage.
+};
+
+} // namespace LoadPolicy
+
+/**
+ * @brief The policy determining when a image is deleted from the cache in relation to the ImageVisual lifetime.
+ * @SINCE_1_3_5
+ * @note If the texture is being shared by another visual it persist if still required.
+ */
+namespace ReleasePolicy
+{
+/**
+ * @brief The available named elements that define the ReleasePolicy.
+ * @SINCE_1_3_5
+ */
+enum Type
+{
+ DETACHED = 0, ///< Image deleted from cache when ImageVisual detached from stage.
+ DESTROYED, ///< Image deleted from cache when ImageVisual destroyed.
+ NEVER ///< Image is never deleted, will survive the lifetime of the application.
+};
+
+} // namespace ReleasePolicy
+
} // namespace ImageVisual
/**