d9b73484a1ba83b19a2b24b4b863d9806f7b9248
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / visuals / mesh-visual-properties.h
1 #ifndef DALI_TOOLKIT_MESH_VISUAL_PROPERTIES_H
2 #define DALI_TOOLKIT_MESH_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 /**
31  * @addtogroup dali_toolkit_visuals
32  * @{
33  */
34
35 namespace MeshVisual
36 {
37
38 namespace Property
39 {
40
41 enum
42 {
43   /**
44    * @brief The location of the ".obj" file.
45    * @details Name "objectUrl", type Property::STRING.
46    * @SINCE_1_1.45
47    * @note Mandatory.
48    */
49   OBJECT_URL = VISUAL_PROPERTY_START_INDEX,
50
51   /**
52    * @brief The location of the ".mtl" file.
53    * @details Name "materialUrl", type Property::STRING.
54    * @SINCE_1_1.45
55    * @note Optional. If not specified, then a textureless object is assumed.
56    */
57   MATERIAL_URL,
58
59   /**
60    * @brief Path to the directory the textures (including gloss and normal) are stored in.
61    * @details Name "texturesPath", type Property::STRING.
62    * @SINCE_1_1.45
63    * @note Mandatory if using material.
64    */
65   TEXTURES_PATH,
66
67   /**
68    * @brief Sets the type of shading mode that the mesh will use.
69    * @details Name "shadingMode", type ShadingMode::Value (Property::INTEGER) or Property::STRING.
70    * If anything the specified shading mode requires is missing, a simpler mode that can be handled with what has been supplied will be used instead.
71    * @SINCE_1_1.45
72    * @note Optional. If not specified, it will use the best it can support (will try ShadingMode::TEXTURED_WITH_DETAILED_SPECULAR_LIGHTING first).
73    * @see ShadingMode::Value
74    */
75   SHADING_MODE,
76
77   /**
78    * @brief Whether to use mipmaps for textures or not.
79    * @details Name "useMipmapping", type Property::BOOLEAN.
80    * @SINCE_1_1.45
81    * @note Optional. If not specified, the default is true.
82    */
83   USE_MIPMAPPING,
84
85   /**
86    * @brief Whether to average normals at each point to smooth textures or not.
87    * @details Name "useSoftNormals", type Property::BOOLEAN.
88    * @SINCE_1_1.45
89    * @note Optional. If not specified, the default is true.
90    */
91   USE_SOFT_NORMALS,
92
93   /**
94    * @brief The position, in stage space, of the point light that applies lighting to the model.
95    * @details Name "lightPosition", type Property::VECTOR3.
96    * This is based off the stage's dimensions, so using the width and height of the stage halved will correspond to the center,
97    * and using all zeroes will place the light at the top left corner.
98    * @SINCE_1_1.45
99    * @note Optional. If not specified, the default is an offset outwards from the center of the screen.
100    */
101   LIGHT_POSITION,
102 };
103
104 } // namespace Property
105
106 namespace ShadingMode
107 {
108
109 enum Value
110 {
111   TEXTURELESS_WITH_DIFFUSE_LIGHTING, ///< *Simplest*. One color that is lit by ambient and diffuse lighting. @SINCE_1_1.45
112   TEXTURED_WITH_SPECULAR_LIGHTING, ///< Uses only the visual image textures provided with specular lighting in addition to ambient and diffuse lighting. @SINCE_1_1.45
113   TEXTURED_WITH_DETAILED_SPECULAR_LIGHTING ///< Uses all textures provided including a gloss, normal and texture map along with specular, ambient and diffuse lighting. @SINCE_1_1.45
114 };
115
116 } // namespace ShadingMode
117
118 } // namespace MeshVisual
119
120 /**
121  * @}
122  */
123
124 } // namespace Toolkit
125
126 } // namespace Dali
127
128 #endif // DALI_TOOLKIT_MESH_VISUAL_PROPERTIES_H