f8d4b7072a20261cc7fbce128e9c8485d1c20149
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / visuals / visual-properties.h
1 #ifndef DALI_TOOLKIT_VISUAL_PROPERTIES_H
2 #define DALI_TOOLKIT_VISUAL_PROPERTIES_H
3
4 /*
5  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
6  *
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
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <dali-toolkit/public-api/toolkit-property-index-ranges.h>
23
24 namespace Dali
25 {
26
27 namespace Toolkit
28 {
29
30 namespace Visual
31 {
32
33 /**
34  * @brief All the visual types.
35  * @SINCE_1_1.45
36  */
37 enum Type
38 {
39   BORDER, ///< Renders a solid color as an internal border to the control's quad. @SINCE_1_1.45
40   COLOR, ///< Renders a solid color to the control's quad. @SINCE_1_1.45
41   GRADIENT, ///< Renders a smooth transition of colors to the control's quad. @SINCE_1_1.45
42   IMAGE, ///< Renders an image into the control's quad. @SINCE_1_1.45
43   MESH, ///< Renders a mesh using an "obj" file, optionally with textures provided by an "mtl" file. @SINCE_1_1.45
44   PRIMITIVE, ///< Renders a simple 3D shape, such as a cube or sphere. @SINCE_1_1.45
45   DEBUG, ///< Renders a simple wire-frame outlining a quad. @SINCE_1_1.45
46   BATCH_IMAGE, ///< Renders an image in the geometry batching mode @SINCE_1_1.46
47 };
48
49 namespace Property
50 {
51
52 enum
53 {
54   /**
55    * @brief The index for the visual type.
56    * @details Name "visualType", type [Type](@ref Dali::Toolkit::Visual::Type) (Property::INTEGER) or Property::STRING.
57    * @SINCE_1_1.45
58    * @note Mandatory.
59    * @see Type
60    */
61   TYPE = VISUAL_PROPERTY_BASE_START_INDEX,
62
63   /**
64    * @brief The shader to use in the visual.
65    * @details Name "shader", type Property::Map.
66    * @SINCE_1_1.45
67    * @note Optional.
68    * @note Will override the existing shaders.
69    * @see Shader::Property
70    */
71   SHADER,
72
73   /**
74    * @brief This enables Image visuals to automatically be converted to Batch-Image visuals.
75    * @details Name "batchingEnabled", type Boolean.
76    * @SINCE_1_1.46
77    * @note Optional.
78    */
79   BATCHING_ENABLED,
80 };
81
82 } // namespace Property
83
84 namespace Shader
85 {
86
87 namespace Property
88 {
89
90 enum
91 {
92   /**
93    * @brief The vertex shader.
94    * @details Name "vertexShader", type Property::STRING.
95    * @SINCE_1_1.45
96    * @note Optional
97    * @note If not supplied, the visual's already set vertex shader is used.
98    */
99   VERTEX_SHADER,
100
101   /**
102    * @brief The fragment shader.
103    * @details Name "fragmentShader", type Property::STRING.
104    * @SINCE_1_1.45
105    * @note Optional
106    * @note If not supplied, the visual's already set fragment shader is used.
107    */
108   FRAGMENT_SHADER,
109
110   /**
111    * @brief How to subdivide the grid along the X-Axis.
112    * @details Name "subdivideGridX", type Property::INTEGER.
113    * @SINCE_1_1.45
114    * @note Optional
115    * @note If not supplied, the default is 1.
116    * @note Value should be greater than or equal to 1.
117    */
118   SUBDIVIDE_GRID_X,
119
120   /**
121    * @brief How to subdivide the grid along the Y-Axis.
122    * @details Name "subdivideGridY", type Property::INTEGER.
123    * @SINCE_1_1.45
124    * @note Optional
125    * @note If not supplied, the default is 1.
126    * @note Value should be greater than or equal to 1.
127    */
128   SUBDIVIDE_GRID_Y,
129
130   /**
131    * @brief Hints for rendering.
132    * @details Name "hints", type Dali::Shader::Hint (Property::INTEGER), Property::STRING or Property::ARRAY of Property::STRING.
133    * @SINCE_1_1.45
134    * @note Optional
135    * @note If not supplied, the default is Dali::Shader::Hint::NONE.
136    */
137   HINTS,
138 };
139
140 } // namespace Property
141
142 } // namespace Shader
143
144 } // namespace Visual
145
146 } // namespace Toolkit
147
148 } // namespace Dali
149
150 #endif // DALI_TOOLKIT_VISUAL_PROPERTIES_H