summaryrefslogtreecommitdiff
path: root/src/lib/evas/Evas_Eo.h
blob: 9d873d565dfdeabfecb9ead51840f643e8c7515c (plain)
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
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
#ifndef _EVAS_H
# error You shall not include this header directly
#endif

#ifndef _EFL_CANVAS_VG_NODE_EO_CLASS_TYPE
#define _EFL_CANVAS_VG_NODE_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Vg_Node;

#endif


#ifndef _EFL_CANVAS_ANIMATION_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation;

#endif

#ifndef _EFL_CANVAS_ANIMATION_ALPHA_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_ALPHA_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Alpha;

#endif

#ifndef _EFL_CANVAS_ANIMATION_ROTATE_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_ROTATE_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Rotate;

#endif

#ifndef _EFL_CANVAS_ANIMATION_SCALE_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_SCALE_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Scale;

#endif

#ifndef _EFL_CANVAS_ANIMATION_TRANSLATE_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_TRANSLATE_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Translate;

#endif

#ifndef _EFL_CANVAS_ANIMATION_GROUP_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_GROUP_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Group;

#endif

#ifndef _EFL_CANVAS_ANIMATION_GROUP_PARALLEL_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_GROUP_PARALLEL_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Group_Parallel;

#endif

#ifndef _EFL_CANVAS_ANIMATION_GROUP_SEQUENTIAL_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_GROUP_SEQUENTIAL_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Group_Sequential;

#endif

#ifndef _EFL_CANVAS_ANIMATION_PLAYER_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_PLAYER_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Player;

#endif

#ifndef _EFL_CANVAS_ANIMATION_PLAYER_ALPHA_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_PLAYER_ALPHA_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Player_Alpha;

#endif

#ifndef _EFL_CANVAS_ANIMATION_PLAYER_ROTATE_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_PLAYER_ROTATE_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Player_Rotate;

#endif

#ifndef _EFL_CANVAS_ANIMATION_PLAYER_SCALE_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_PLAYER_SCALE_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Player_Scale;

#endif

#ifndef _EFL_CANVAS_ANIMATION_PLAYER_TRANSLATE_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_PLAYER_TRANSLATE_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Player_Translate;

#endif

#ifndef _EFL_CANVAS_ANIMATION_PLAYER_GROUP_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_PLAYER_GROUP_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Player_Group;

#endif

#ifndef _EFL_CANVAS_ANIMATION_GROUP_PARALLEL_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_GROUP_PARALLEL_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Group_Parallel;

#endif

#ifndef _EFL_CANVAS_ANIMATION_GROUP_SEQUENTIAL_EO_CLASS_TYPE
#define _EFL_CANVAS_ANIMATION_GROUP_SEQUENTIAL_EO_CLASS_TYPE

typedef Eo Efl_Canvas_Animation_Group_Sequential;

#endif

struct _Efl_Canvas_Animation_Player_Event_Running
{
   double progress;
};

struct _Efl_Canvas_Object_Animation_Event
{
   const Efl_Event_Description *event_desc;
};

/**
 * @ingroup Evas_Object_Rectangle
 *
 * @{
 */
#include "canvas/efl_canvas_rectangle.eo.h"
/**
 * @}
 */

/**
 * @ingroup Efl_Canvas_Text
 *
 * @{
 */
#include "canvas/efl_text_cursor.eo.h"
#include "canvas/efl_text_attribute_factory.eo.h"
#include "canvas/efl_canvas_text.eo.h"
#include "canvas/efl_canvas_text_factory.eo.h"
/**
 * @}
 */

/**
 * @ingroup Evas_Object_Polygon
 *
 * @{
 */
#include "canvas/efl_canvas_polygon.eo.h"
/**
 * @}
 */

/**
 * @ingroup Evas_Smart_Object_Group
 *
 * @{
 */
#include "canvas/efl_canvas_group.eo.h"
/**
 * @}
 */

/**
 * @}
 */

/* Input events */
#include "canvas/efl_input_types.eot.h"
#include "canvas/efl_input_device.eo.h"
#include "canvas/efl_canvas_pointer.eo.h"
#include "canvas/efl_canvas_scene.eo.h"
#include "canvas/efl_input_state.eo.h"
#include "canvas/efl_input_event.eo.h"
#include "canvas/efl_input_pointer.eo.h"
#include "canvas/efl_input_key.eo.h"
#include "canvas/efl_input_hold.eo.h"
#include "canvas/efl_input_interface.eo.h"
#include "canvas/efl_input_focus.eo.h"
#include "canvas/efl_input_clickable.eo.h"

#include "canvas/efl_canvas_animation_types.eot.h"

#include "gesture/efl_canvas_gesture_types.eot.h"
#include "gesture/efl_canvas_gesture_touch.eo.h"
#include "gesture/efl_canvas_gesture.eo.h"
#include "gesture/efl_canvas_gesture_tap.eo.h"
#include "gesture/efl_canvas_gesture_long_tap.eo.h"
#include "gesture/efl_canvas_gesture_double_tap.eo.h"
#include "gesture/efl_canvas_gesture_triple_tap.eo.h"
#include "gesture/efl_canvas_gesture_momentum.eo.h"
#include "gesture/efl_canvas_gesture_flick.eo.h"
#include "gesture/efl_canvas_gesture_zoom.eo.h"
#include "gesture/efl_canvas_gesture_recognizer.eo.h"
#include "gesture/efl_canvas_gesture_recognizer_tap.eo.h"
#include "gesture/efl_canvas_gesture_recognizer_long_tap.eo.h"
#include "gesture/efl_canvas_gesture_recognizer_double_tap.eo.h"
#include "gesture/efl_canvas_gesture_recognizer_triple_tap.eo.h"
#include "gesture/efl_canvas_gesture_recognizer_momentum.eo.h"
#include "gesture/efl_canvas_gesture_recognizer_flick.eo.h"
#include "gesture/efl_canvas_gesture_recognizer_zoom.eo.h"
#include "gesture/efl_canvas_gesture_manager.eo.h"
#include "gesture/efl_gesture_events.eo.h"

#include "canvas/efl_canvas_object.eo.h"
#include "canvas/efl_canvas_object_animation.eo.h"
#include "canvas/efl_canvas_animation.eo.h"
#include "canvas/efl_canvas_animation_alpha.eo.h"
#include "canvas/efl_canvas_animation_rotate.eo.h"
#include "canvas/efl_canvas_animation_scale.eo.h"
#include "canvas/efl_canvas_animation_translate.eo.h"
#include "canvas/efl_canvas_animation_group.eo.h"
#include "canvas/efl_canvas_animation_group_parallel.eo.h"
#include "canvas/efl_canvas_animation_group_sequential.eo.h"
#include "canvas/efl_canvas_event_grabber.eo.h"

 /**
 * @defgroup Evas_3D Evas 3D Extensions
 *
 * Evas extension to support 3D rendering.
 *
 * @ingroup Evas
 */

#include "canvas/evas_canvas3d_types.eot.h"

/**
 * @page evas_canvas3d_main Evas 3D
 *
 * @since 1.10
 *
 * @section toc Table of Contents
 *
 * @li @ref evas_canvas3d_intro
 * @li @ref evas_canvas3d_example
 *
 * @section evas_canvas3d_intro Introduction
 *
 * Evas 3D is an extension to support 3D scene graph rendering into 2D Evas
 * canvases, with tree-based scene graph manipulation and other typical 3D
 * rendering techniques.
 *
 * 3D objects are used to describe three dimensional scenes and to provide
 * interfaces to connect the scene to an Evas image object for rendering.
 *
 * Scenes are constructed by locating cameras and lights and selecting desired
 * meshes, and organizing Node objects into hierarchical n-ary tree data structures.
 * The scene is stacked on the canvas with existing Evas objects, which permits
 * intermingling 3D rendered content in existing 2D application layouts.
 *
 * Rendering techniques supported by Evas 3D include flat and phong
 * shading, normal and texture mapping, and triangle meshes.  Existing
 * Evas objects may also be used as textures inside the 3D scene,
 * including EFL widgets and even application windows.  This latter
 * capability makes it possible to create a 3D version of an arbitrary
 * EFL application with minimal code changes.
 *
 * @section evas_canvas3d_example Introductory Example
 *
 * @include evas-3d-cube.c
 */

/**
 * @defgroup Evas_Canvas3D_Types Types & Enums
 * @ingroup Evas_3D
 *
 * Primitive type definitions and enumerations.
 */

/**
 * @defgroup Evas_Canvas3D_Object Generic 3D Object Descriptions
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Object structure is an abstract base for other Evas
 * 3D objects (scenes, nodes, lights, meshes, textures, and materials)
 * with reference counting and propagation of modifications via
 * reference tracking.  This permits, for example, when a scene object
 * is modified (marked dirty), a number of image objects rendering that
 * object to be notified to update themselves, without needing to call
 * update functions manually.
 */

/**
 * @defgroup Evas_Canvas3D_Scene Scene Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Scene structure represents a captured image of a
 * scene graph through its viewing camera. A scene can be associated
 * with an image object for canvas display via the
 * evas_object_image_scene_set() function.
 */

/**
 * @defgroup Evas_Canvas3D_Node Node Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Node structure defines the position, orientation,
 * and scale of canvas objects (cameras, lights, meshes, etc.) in a 3D
 * space.  These nodes can be organized into a hierarchical n-ary tree
 * structure to construct a scene graph.
 */

/**
 * @defgroup Evas_Canvas3D_Camera Camera Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Camera structure defines properties used to
 * generate 2D pictures of a given scene graph, similar in concept to
 * focus length and film size for a real world camera.
 *
 * A given camera definition can be used to take multiple pictures of
 * the scene by establishing multiple nodes for the
 * Evas_Canvas3D_Camera, each of which are located at different
 * positions and with different orientations.  Convenience routines
 * evas_canvas3d_node_position_set() and
 * evas_canvas3d_node_look_at_set() are provided to adjust the position
 * and viewing direction for these nodes.
 */

/**
 * @defgroup Evas_Canvas3D_Light Light Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Light structure defines various light source
 * properties.  Reflection models include: Ambient, diffuse, and
 * specular.  Light models include directional, point, and spot.  The
 * position and direction for the light is tracked by the node that
 * contains the light.
 */

/**
 * @defgroup Evas_Canvas3D_Mesh Mesh Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Mesh structure manages key-frame based mesh
 * animations for geometrical objects like character models, terrain,
 * buildings, and other such visible objects.  Each mesh frame can have
 * its own material and geometric data.  Blending functions, fog
 * effects, level of detail boundaries, and shadow properties are also
 * supported.
 *
 * Like other data objects, a mesh definition is located and oriented in
 * the canvas with one or more nodes, with the mesh transformed from its
 * modeling coordinate space to the node's coordinate space.  The frame
 * number is also tracked by the node, permitting creation of multiple
 * nodes in the canvas each set to a different animation frame, for
 * example.
 *
 * Unlike camera and light objects, multiple meshes can be contained in
 * a single node.
 */

/**
 * @defgroup Evas_Canvas3D_Primitive Primitive Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Primitive structure defines the data for
 * generating meshes for various types of primitive shapes such as
 * cubes, cylinders, spheres, surfaces, terrain, etc.  Use the
 * evas_canvas3d_mesh_from_primitive_set() function to generate a
 * mesh's frame of this primitive.
 */

/**
 * @defgroup Evas_Canvas3D_Texture Texture Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Texture structure associates a 2D bitmap image to a
 * material for a surface.  Image data for the texture can be loaded
 * from memory, a file, or an Evas_Object.  Use the
 * evas_canvas3d_material_texture_set() function to add the texture to
 * an Evas_Canvas3DMaterial's slot.
 */

/**
 * @defgroup Evas_Canvas3D_Material Material Object
 * @ingroup Evas_3D
 *
 * The Evas_Canvas3D_Material structure defines a set of material
 * attributes used for determining the color of mesh surfaces.  Each
 * attribute is defined by a color value and texture map.  The five
 * attributes are: ambient, diffuse, specular, emission, and normal.
 */

/**
 * @typedef Evas_Canvas3D_Surface_Func
 *
 * The Evas_Canvas3D_Surface_Func type of functions are used to
 * create parametric surfaces as primitives.  These compute the
 * vertex x,y,z values for given v,u values.
 *
 * @param out_x The x component of the calculated value.
 * @param out_y The y component of the calculated value.
 * @param out_z The z component of the calculated value.
 * @param a is the v value.
 * @param b is the u value.

 * @see Evas_Canvas3D_Primitive
 *
 * @since 1.15
 * @ingroup Evas_Canvas3D_Primitive
 */
typedef void (Evas_Canvas3D_Surface_Func)(Evas_Real *out_x,
                                    Evas_Real *out_y,
                                    Evas_Real *out_z,
                                    Evas_Real a,
                                    Evas_Real b);

#include "canvas/evas_canvas3d_object.eo.h"

#include "canvas/evas_canvas3d_texture.eo.h"

#include "canvas/evas_canvas3d_material.eo.h"

#include "canvas/evas_canvas3d_light.eo.h"

#include "canvas/evas_canvas3d_primitive.eo.h"

#include "canvas/evas_canvas3d_mesh.eo.h"

#include "canvas/evas_canvas3d_node.eo.h"

#include "canvas/evas_canvas3d_camera.eo.h"

#include "canvas/evas_canvas3d_scene.eo.h"

#include "canvas/efl_canvas_scene3d.eo.h"

#include "canvas/efl_canvas_image_internal.eo.h"
#include "canvas/efl_canvas_image.eo.h"
#include "canvas/efl_canvas_snapshot.eo.h"
#include "canvas/efl_canvas_proxy.eo.h"
#include "canvas/efl_gfx_mapping.eo.h"

#include "canvas/efl_gfx_vg_value_provider.eo.h"
/**
 * @ingroup Evas_Object_VG
 *
 * @{
 */
#include "canvas/efl_canvas_vg_object.eo.h"
/**
 * @}
 */

#include "canvas/efl_canvas_vg_node.eo.h"
#include "canvas/efl_canvas_vg_container.eo.h"
#include "canvas/efl_canvas_vg_shape.eo.h"
#include "canvas/efl_canvas_vg_image.eo.h"
#include "canvas/efl_canvas_vg_gradient.eo.h"
#include "canvas/efl_canvas_vg_gradient_linear.eo.h"
#include "canvas/efl_canvas_vg_gradient_radial.eo.h"