Merge "Size negotiation patch 3: Scope size negotiation enums" into tizen
[platform/core/uifw/dali-toolkit.git] / docs / content / main-page.h
1 /*! \mainpage
2  *
3  * \section mainintro_sec Introduction
4  *
5  * It is a quick and easy way of allowing developers to create Rich UI Applications like Home
6  * screen, Gallery, Music player, Games, Maps...
7  *
8  * DALI is based on OpenGL ES 2.0, however it hides the complexity of
9  * the OpenGL API from developers and provides a clean cross-platform C++ framework.
10  *
11  * \section Introduction Introduction
12  * - \link fundamentals Dali Fundamentals \endlink
13  * - \link dali-application Dali Application and Adaptor \endlink
14  * - \link hello-world Hello World - explained \endlink
15  *
16  * \section Actors Actors
17  * - \link image-mesh-actor Image and Mesh actors \endlink
18  * - \link event-system Event Handling \endlink
19  * - \link custom-actor Custom Actor \endlink
20  *
21  * \section ShaderEffects Shader Effects
22  * - \link shader-intro Shader Effects\endlink
23  *
24  * \section Animation Animation
25  * - \link animation-example Example and Usage\endlink
26  * - \link animation-rotation Rotation with quaternions \endlink
27  * - \link animation-shader Shader Animation \endlink
28  * - \link animation-multi-threading-notes Multi-threading Notes \endlink
29  *
30  * \section Constraints
31  * - \link constraints-intro Introduction to Constraints \endlink
32  *
33  * \section SizeNegotiation Size Negotiation
34  * - \link size-negotiation Size Negotiation \endlink
35  *
36  * \section UIControls UI Controls
37  * - \link text-label Text Label \endlink
38  * - \link item-view Item View \endlink
39  * - \link scroll-view Scroll View \endlink
40  * - \link size-negotiation-controls Size Negotiation for Controls \endlink
41  * - \link type-registration Type Registration \endlink
42  * - \link properties Properties \endlink
43  * - \link background Background \endlink
44  *
45  * \section Dynamics Dynamics
46  * - \link dynamics-intro Introduction to Dynamics\endlink
47  * - \link dynamics-initialization Initializing the Simulation\endlink
48  * - \link dynamics-bodies Bodies - adding and controlling dynamic objects \endlink
49  * - \link dynamics-joints Joints - linking objects\endlink
50  * - \link dynamics-collisions Collision Detection and Filtering\endlink
51  *
52  * \section Scripting
53  * - \link script-overview Overview \endlink
54  * - \link script-howto How to Add a Custom Control \endlink
55  * - \link script-hello Hello World in script \endlink
56  *
57  * - \link handle-body-idiom Handle – body idiom \endlink
58  *
59  * \section Rendering
60  * - \link viewing-modes Viewing modes \endlink
61  *
62  * \section Profiling
63  * - \link resource-tracking Resource Tracking \endlink
64  * - \link performance-profiling Performance Profiling \endlink
65  *
66  * \section Performance
67  * - \link performance-tips Performance Tips \endlink
68  * - \link texture-atlases Texture Atlases  \endlink
69  * - \link Texture_Compression Compressing Textures \endlink
70  *
71  * \section Testing
72  * See [Automated Tests](@ref auto_testing) for instructions.
73  */
74
75 /*! \page scene-graph
76  *
77  * \section scene_intro What is a scene graph?
78  * From wikipedia...
79  * A scene graph is a collection of nodes in a graph or tree structure.
80  * A node may have many children but often only a single parent,
81  * with the effect of a parent applied to all its child nodes;
82  * an operation performed on a group automatically propagates
83  * its effect to all of its members. In many programs, associating
84  * a geometrical transformation matrix (see also transformation and matrix)
85  * at each group level and concatenating such matrices together is an
86  * efficient and natural way to process such operations. A common feature,
87  * for instance, is the ability to group related shapes/objects into a
88  * compound object that can then be moved, transformed, selected,
89  * etc. as easily as a single object.
90  *
91  * \section scene_dali How does this relate to the Dali public API?
92  *
93  * Actors are effectively nodes that receive input (touch events) and act as a
94  * container for draw-able elements (which are also nodes) and other actors.
95  *
96  * For example a Button actor will be an actor with several elements such as button background,
97  * text label and button face. When the actor is moved around, it's child elements will move with it.
98  * When the button is pressed, the actor will receive an event and adjust the color of its button face
99  * element.
100  *
101  * \section scene_internal Why does Dali internally have a second scene graph?
102  * Actors and elements are contained in a scene graph which deals with input, layout and some animation
103  * it doesn't perform any drawing.
104  *
105  * All the drawing is done via the Render Manager which has it's own render scene graph, where it's nodes
106  * are just for drawing things like image/text and moving them around. So when you create an Image element
107  * it will ask the RenderManager to create an Image node. The separation allows the RenderManager to
108  * run in a separate thread to maintain a high frame rate, without being slowed down by any logic
109  * performed on the actor/element side.
110  *
111  */