summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_3d_scene.eo
blob: f7816fe939753332f1722e2a1e4f0c56dd203ef2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
class Evas_3D_Scene (Evas_3D_Object, Evas.Common_Interface)
{
   legacy_prefix: null;
   data: Evas_3D_Scene_Data;
   methods {
      size_set {
         /*
           Set the resolution of a scene.

           A scene should be rendered to be displayed through an image objects. The
           resolution defines size of the internal surface holding the rendered result.

           @ingroup Evas_3D_Scene
          */
         params {
            @in int w;  /*@ Width of the resolution. */
            @in int h; /*@ Height of the resolution. */
         }
      }

      size_get @const {
         /*
           Get the internal resolution of a scene.

           @ingroup Evas_3D_Scene
          */
         params {
            @out int w;  /*@ Pointer to receive width of the resolution. */
            @out int h; /*@ Pointer to receive height of the resolution. */
         }
      }

      background_color_set {
         /*
           Set the background color of a scene.

           Background color defines initial color of pixels before a scene is rendered.
           If you want to display a scene with background evas objects are still
           remaining as if it was the background, set the alpha term to 0.0.

           Default background color is (0.0, 0.0, 0.0, 0.0).

           @ingroup Evas_3D_Scene
          */
         params {
            @in Evas_Real r; /*@ Red component of the background color. */
            @in Evas_Real g; /*@ Green component of the background color. */
            @in Evas_Real b; /*@ Blue component of the background color. */
            @in Evas_Real a; /*@ Alpha component of the background color. */
         }
      }

      background_color_get @const {
         /*
           Get the background color of a scene.

           @ingroup Evas_3D_Scene
          */
         params {
            @out Evas_Real r; /*@ Pointer to receive red component of the background color.*/
            @out Evas_Real g; /*@ Pointer to receive green component of the background color. */
            @out Evas_Real b; /*@ Pointer to receive blue component of the background color. */
            @out Evas_Real a; /*@ Pointer to receive alpha component of the background color. */
         }
      }

      pick @const {
         /*
           Get information on the most front visible mesh for the given position.

           (x, y) is the screen coordinate of the given scene. That is, left-top is
           (0, 0) and right-bottom is (w, h) where (w, h) is the size of the scene.
           The texture coordinate is useful when using proxy texture source.

           @ingroup Evas_3D_Scene
          */
         return: bool;
         params {
            @in Evas_Real x;         /*@ X coordinate of the picking position. */
            @in Evas_Real y;         /*@ Y coordinate of the picking position. */
            @out Evas_3D_Node *node; /*@ Pointer to receive the node contains the picked mesh. */
            @out Evas_3D_Mesh *mesh; /*@ Pointer to receive the picked mesh. */
            @out Evas_Real s;        /*@ Pointer to receive the texture "s" coordinate. */
            @out Evas_Real t;        /*@ Pointer to receive the texture "t" coordinate. */
         }
      }

      exist @const {
         /*
           Search given node in the given position.

           @ingroup Evas_3D_Scene
         */
         return: Evas_3D_Node *;
         params {
            @in Evas_Real x;         /*@ X coordinate of the picking position. */
            @in Evas_Real y;         /*@ Y coordinate of the picking position. */
            @in Evas_3D_Node *node;  /*@ Node for search. */
         }
      }

      pick_member_list_get @const {
         /*
           Get list of the all root members from scene in the given position.

           @ingroup Evas_3D_Scene
         */
         return: list<Evas_3D_Node *> *;
         params {
            @in Evas_Real x;         /*@ X coordinate of the picking position. */
            @in Evas_Real y;         /*@ Y coordinate of the picking position. */
         }
      }
      shadows_enable_set {
         /*
           Enable or disable shadows on given scene

           If shadows_enabled @c EINA_TRUE, the objects in the scene can throw shadow to another objects located behind them.
           The depth map used for shading. Directed and projective light sources are supported.

           @ingroup Evas_3D_Scene
          */
         params {
            @in bool shadows_enabled;  /*@ shadows enabled status. */
         }
      }

      shadows_enable_get @const {
         /*
           Get shadows enabled status for given scene.
           @return The shadows enabled status.

           @ingroup Evas_3D_Scene
         */
         return: bool;
         params {
         }
      }
      color_pick_enable_get @const {
         /*
           Get status of color picking of the scene.

           @ingroup Evas_3D_Scene
          */
         return: bool;
         params {
         }
      }
      color_pick_enable_set {
         /*
           Set posibility color picking.

           @ingroup Evas_3D_Scene
          */
         return: bool;
         params {
            @in bool color_pick;  /*@ Posibility flag */
         }
      }

      @property root_node {
         set {
            /*
              Set the root node of a scene.

              @ingroup Evas_3D_Scene
             */
         }
         get {
            /*
              Get the root node of a scene.

              @return        The root node of the given scene.

              @ingroup Evas_3D_Scene
             */
         }
         values {
            Evas_3D_Node *node; /*@ A node which will be used as a root node for the scene. */
         }
      }

      @property camera_node {
         set {
            /*
              Set the camera node of a scene.

              @ingroup Evas_3D_Scene
             */
         }
         get {
            /*
              Get the camera node of a scene.

              @return        The camera node of the given scene.

              @ingroup Evas_3D_Scene
             */
         }
         values {
            Evas_3D_Node *node; /*@ A node which will be used as a camera node for the scene. */
         }
      }
   }
   implements {
      Eo.Base.constructor;
      Evas_3D_Object.update_notify;
      Evas_3D_Object.change_notify;
   }

}