1 #ifndef DALI_TOOLKIT_IMAGE_VISUAL_PROPERTIES_H
2 #define DALI_TOOLKIT_IMAGE_VISUAL_PROPERTIES_H
5 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali-toolkit/public-api/toolkit-property-index-ranges.h>
31 * @addtogroup dali_toolkit_visuals
36 * @brief ImageVisual is to render an image into the control's quad.
43 * @brief ImageVisual Property.
50 * @brief Enumeration for the instance of properties belonging to the ImageVisual.
56 * @brief The URL of the image.
57 * @details Name "url", type Property::STRING or Property::ARRAY of Property::STRING.
58 * @note The array form is used for generating animated image visuals.
59 * @note The number of threads used for local and remote image loading can be controlled by the
60 * environment variables DALI_TEXTURE_LOCAL_THREADS and DALI_TEXTURE_REMOTE_THREADS respectively.
61 * The default values are 4 threads for local image loading and 8 threads for remote image loading.
65 URL = VISUAL_PROPERTY_START_INDEX,
68 * @brief Fitting options, used when resizing images to fit desired dimensions.
69 * @details Name "fittingMode", type Dali::FittingMode (Property::INTEGER) or Property::STRING.
71 * @note Optional. If not supplied, default is FittingMode::SHRINK_TO_FIT.
72 * @note For Normal Quad images only.
73 * @see Dali::FittingMode
78 * @brief Filtering options, used when resizing images to sample original pixels.
79 * @details Name "samplingMode", type Dali::SamplingMode (Property::INTEGER) or Property::STRING.
81 * @note Optional. If not supplied, default is SamplingMode::BOX.
82 * @note For Normal Quad images only.
83 * @see Dali::SamplingMode
88 * @brief The desired image width.
89 * @details Name "desiredWidth", type Property::INTEGER.
91 * @note Optional. If not specified, the actual image width is used.
92 * @note For Normal Quad images only.
97 * @brief The desired image height.
98 * @details Name "desiredHeight", type Property::INTEGER.
100 * @note Optional. If not specified, the actual image height is used.
101 * @note For Normal Quad images only.
106 * @brief Whether to load the image synchronously.
107 * @details Name "synchronousLoading", type Property::BOOLEAN.
109 * @note Optional. If not specified, the default is false, i.e. the image is loaded asynchronously.
110 * @note For Normal Quad images only.
115 * @brief If true, only draws the borders.
116 * @details Name "borderOnly", type Property::BOOLEAN.
118 * @note Optional. If not specified, the default is false.
119 * @note For N-Patch images only.
124 * @brief The image area to be displayed.
125 * @details Name "pixelArea", type Property::VECTOR4.
126 * It is a rectangular area.
127 * The first two elements indicate the top-left position of the area, and the last two elements are the area width and height respectively.
129 * @note Optional. If not specified, the default value is [0.0, 0.0, 1.0, 1.0], i.e. the entire area of the image.
130 * @note For Normal Quad images only.
135 * @brief The wrap mode for u coordinate.
136 * @details Name "wrapModeU", type Dali::WrapMode::Type (Property::INTEGER) or Property::STRING.
137 * It decides how the texture should be sampled when the u coordinate exceeds the range of 0.0 to 1.0.
139 * @note Optional. If not specified, the default is CLAMP.
140 * @note For Normal QUAD image only.
145 * @brief The wrap mode for v coordinate.
146 * @details Name "wrapModeV", type Dali::WrapMode::Type (Property::INTEGER) or Property::STRING.
147 * it decides how the texture should be sampled when the v coordinate exceeds the range of 0.0 to 1.0.
149 * @note Optional. If not specified, the default is CLAMP.
150 * @note For Normal QUAD image only.
155 * @brief The border of the image.
156 * @details Name "border", type Property::RECTANGLE or Property::VECTOR4.
157 * The border of the image in the order: left, right, bottom, top.
160 * @note For N-Patch images only.
165 * @brief Whether to use the texture atlas
166 * @details Name "atlasing", type Property::BOOLEAN.
168 * @note Optional. By default atlasing is off.
173 * @brief URL of a masking image
174 * @details Name "alphaMaskUrl", type Property::STRING, URL of image to apply as
175 * a mask after image loading. If set after the main URL has finished loading, this
176 * may necessitate a re-load of the main image. The alpha mask image will be scaled
177 * on load to match the size of the main image, then applied to the pixel data
178 * before uploading to GL.
185 * @brief Defines the batch size for pre-loading images in the AnimatedImageVisual
186 * @details Name "batchSize", type Property::INTEGER, number of images to pre-load
187 * before starting to play. Default value: 1
194 * @brief Defines the cache size for loading images in the AnimatedImageVisual
195 * @details Name "cacheSize", type Property::INTEGER, number of images to keep
196 * cached ahead during playback. Default value: 1
200 * @note, cacheSize should be >= batchSize.
201 * If it isn't, then the cache will automatically be changed to batchSize.
202 * @note, because of the defaults, it is expected that the application developer
203 * tune the batch and cache sizes to their particular use case.
208 * @brief The number of milliseconds between each frame in the AnimatedImageVisual
209 * @details Name "frameDelay", type Property::INTEGER, The number of milliseconds between each frame.
212 * @note This is only used when multiple URLs are provided.
217 * @brief The scale factor to apply to the content image before masking
218 * @details Name "maskContentScale", type Property::FLOAT, The scale factor
219 * to apply to the content before masking. Note, scaled images are cropped to
220 * the same size as the alpha mask.
227 * @brief Whether to crop image to mask or scale mask to fit image
228 * @details Name "cropToMask", type Property::BOOLEAN, True if the image should
229 * be cropped to match the mask size, or false if the image should remain the same size.
232 * @note If this is false, then the mask is scaled to fit the image before being applied.
237 * @brief The policy to determine when an image should be loaded.
238 * @details Name "loadPolicy", Type LoadPolicy::Type (Property::INTEGER)or Property::STRING.
240 * @note Default LoadPolicy::ATTACHED
241 * @see LoadPolicy::Type
247 * @brief The policy to determine when an image should no longer be cached.
248 * @details Name "releasePolicy", Type ReleasePolicy::Type (Property::INTEGER) or Property::STRING
250 * @note Default ReleasePolicy::DESTROYED
251 * @see ReleasePolicy::Type
256 * @brief Determines if image orientation should be corrected so the image displays as it was intended.
257 * @details Name "orientationCorrection", Type Property::BOOLEAN, if true the image's orientation will be corrected.
261 ORIENTATION_CORRECTION,
265 } // namespace Property
268 * @brief The policy determining if the image is loaded when the visual is staged or created.
275 * @brief The available named elements that define the LoadPolicy.
280 IMMEDIATE = 0, ///< The image is loaded when the ImageVisual is created.
281 ATTACHED ///< The image is loaded when the ImageVisual is attached to the stage.
284 } // namespace LoadPolicy
287 * @brief The policy determining when a image is deleted from the cache in relation to the ImageVisual lifetime.
289 * @note If the texture is being shared by another visual it persist if still required.
291 namespace ReleasePolicy
295 * @brief The available named elements that define the ReleasePolicy.
300 DETACHED = 0, ///< Image deleted from cache when ImageVisual detached from stage.
301 DESTROYED, ///< Image deleted from cache when ImageVisual destroyed.
302 NEVER ///< Image is never deleted, will survive the lifetime of the application.
305 } // namespace ReleasePolicy;
307 } // namespace ImageVisual
313 } // namespace Toolkit
317 #endif // DALI_TOOLKIT_IMAGE_VISUAL_PROPERTIES_H