Merge "Fixed the ItemView already scrolled to end logic" into devel/master
[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 /**
36  * @brief MeshVisual is to render a mesh using a .obj file, optionally with textures provided by a mtl file.
37  * @SINCE_1_1.45
38  */
39 namespace MeshVisual
40 {
41
42 /**
43  * @brief MeshVisual Property
44  * @SINCE_1_1.45
45  */
46 namespace Property
47 {
48
49 /**
50  * @brief MeshVisual Property
51  * @SINCE_1_1.45
52  */
53 enum
54 {
55   /**
56    * @brief The location of the ".obj" file.
57    * @details Name "objectUrl", type Property::STRING.
58    * @SINCE_1_1.45
59    * @note Mandatory.
60    */
61   OBJECT_URL = VISUAL_PROPERTY_START_INDEX,
62
63   /**
64    * @brief The location of the ".mtl" file.
65    * @details Name "materialUrl", type Property::STRING.
66    * @SINCE_1_1.45
67    * @note Optional. If not specified, then a textureless object is assumed.
68    */
69   MATERIAL_URL,
70
71   /**
72    * @brief Path to the directory the textures (including gloss and normal) are stored in.
73    * @details Name "texturesPath", type Property::STRING.
74    * @SINCE_1_1.45
75    * @note Mandatory if using material.
76    */
77   TEXTURES_PATH,
78
79   /**
80    * @brief Sets the type of shading mode that the mesh will use.
81    * @details Name "shadingMode", type ShadingMode::Value (Property::INTEGER) or Property::STRING.
82    * 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.
83    * @SINCE_1_1.45
84    * @note Optional. If not specified, it will use the best it can support (will try ShadingMode::TEXTURED_WITH_DETAILED_SPECULAR_LIGHTING first).
85    * @see ShadingMode::Value
86    */
87   SHADING_MODE,
88
89   /**
90    * @brief Whether to use mipmaps for textures or not.
91    * @details Name "useMipmapping", type Property::BOOLEAN.
92    * @SINCE_1_1.45
93    * @note Optional. If not specified, the default is true.
94    */
95   USE_MIPMAPPING,
96
97   /**
98    * @brief Whether to average normals at each point to smooth textures or not.
99    * @details Name "useSoftNormals", type Property::BOOLEAN.
100    * @SINCE_1_1.45
101    * @note Optional. If not specified, the default is true.
102    */
103   USE_SOFT_NORMALS,
104
105   /**
106    * @brief The position, in stage space, of the point light that applies lighting to the model.
107    * @details Name "lightPosition", type Property::VECTOR3.
108    * This is based off the stage's dimensions, so using the width and height of the stage halved will correspond to the center,
109    * and using all zeroes will place the light at the top left corner.
110    * @SINCE_1_1.45
111    * @note Optional. If not specified, the default is an offset outwards from the center of the screen.
112    */
113   LIGHT_POSITION,
114 };
115
116 } // namespace Property
117
118 /**
119  * @brief The shading mode used by MeshVisual.
120  * @SINCE_1_1.45
121  */
122 namespace ShadingMode
123 {
124
125 /**
126  * @brief The shading mode used by MeshVisual.
127  * @SINCE_1_1.45
128  */
129 enum Value
130 {
131   TEXTURELESS_WITH_DIFFUSE_LIGHTING, ///< *Simplest*. One color that is lit by ambient and diffuse lighting. @SINCE_1_1.45
132   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
133   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
134 };
135
136 } // namespace ShadingMode
137
138 } // namespace MeshVisual
139
140 /**
141  * @}
142  */
143
144 } // namespace Toolkit
145
146 } // namespace Dali
147
148 #endif // DALI_TOOLKIT_MESH_VISUAL_PROPERTIES_H