summaryrefslogtreecommitdiff
path: root/legacy/edje/doc/examples.dox
blob: 5a7b69702a3eeb512171dfa2fb242027c5a9723a (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
/**
 * @page Examples Examples
 *
 * Here is a page with examples.
 *
 * @ref Example_Edje_Basics
 * @ref tutorial_edje_swallow
 */

/**
 * @page Example_Edje_Basics Edje basics example
 *
 * In this example, we illustrate how to start using the Edje library,
 * with the very basic one needs to instantiate an Edje object.
 *
 * We place, in the canvas, an Edje object along with a @b red border
 * image to delimit its geometry. After we instantiate the Edje
 * object, we @b have to set a file and a group, within that file, to
 * bind to it. For this example, we're using an EDC file which
 * declares two parts (blue and green rectangles) and an item data:
 * @include basic.edc
 *
 * We start by trying to acces an @b unexistant group in the file, so
 * that you can see the usefulness of edje_object_load_error_get() and
 * edje_load_error_str(). Check that the error message will tell you
 * just that -- a group which didn't exist in the file was called for:
 * @dontinclude edje-basic.c
 * @skip file_path
 * @until file_path
 * @dontinclude edje-basic.c
 * @skip edje_object_add
 * @until }
 *
 * Than, we finally bind our Edje object to @c "example_group",
 * printing a message afterwards:
 * @dontinclude edje-basic.c
 * @skip file_path, "example_group"
 * @until object_show
 *
 * What follows is a series of Edje API calls which are of general
 * use. The first of them is edje_object_data_get(), which we use to
 * get the value we have put in the @c "example_data" data field, in
 * our EDC object declaration:
 * @dontinclude edje-basic.c
 * @skip data field in group
 * @until ;
 *
 * Than, we exemplify edje_object_part_exists():
 * @dontinclude edje-basic.c
 * @skip Testing if
 * @until ;
 *
 * The next call is to query @c "part_one"'s geometry, relative to the
 * whole Edje object's area. The part will be situated in the middle
 * of the Edje object's, because it has a restricted forced size (we
 * set its minimum size equal to its maximum, for that) and, by
 * default, parts are aligned to the center of their containers:
 * @dontinclude edje-basic.c
 * @skip part_geometry_get
 * @until x, y, w, h
 *
 * We can grab a direct pointer on the rectangle implementing @c
 * "part_one", by using edje_object_part_object_get(). Since we are
 * not allowed to set properties on it, we just check its color, to
 * assure its really blue, as declared in the EDC:
 * @dontinclude edje-basic.c
 * @skip color_get
 * @until x, y, w, h
 *
 * The @c "min" and @c "max" EDC properties can be queried with the
 * following calls:
 * @dontinclude edje-basic.c
 * @skip max_get
 * @until min. size is
 *
 * The next two calls are to make <b>size calculations</b> on our
 * object. Because of the minumim size declared for @c "part_one" part's
 * default state description, that will be our exact minimum
 * size calculated for the group (remember the @c "min" declaration at
 * group level is just a @b hint, not an enforcement). We then
 * exercise the edje_object_size_min_restricted_calc() function,
 * passing a minimum size of 500, in each axis. Since we have @b no
 * object bigger than that, it will be the minimum size calculated, in
 * the end:
 * @dontinclude edje-basic.c
 * @skip min_calc
 * @until size calculation is
 *
 * @c "part_two" part is there with a purpose: since it extrapolates
 * the Edje object's boundaries, the edje_object_parts_extends_calc()
 * function will report origin coordinates for the rectangle grouping
 * both parts with @b negative values, indicating it extrapolates to
 * the upper left of our group, just as we see it.
 *
 * To interact with the last features exemplified in the program,
 * there's a command line interface.  A help string can be asked for
 * with the 'h' key:
 * @dontinclude edje-basic.c
 * @skip commands
 * @until ;
 *
 * Those commands will change the scaling factors of our Edje objects.
 * The first of them, @c 's', will change Edje's @b global scaling
 * factor between @c 1.0 (no scaling) and @c 2.0 (double
 * scale). Scaling will be applied to @c "part_one", only, because
 * that's the part flagged to be scaled at EDC level:
 * @dontinclude edje-basic.c
 * @skip strcmp(ev->keyname, "s") == 0
 * @until }
 *
 * Note, finally, that the @c 's' command will depend on the 'r' one
 * to have its effects applied. The latter will change @c "part_one"'s
 * @b individual scaling factor, which @b overrides Edje's global
 * scaling factor. Only when the individual one is set to zero, will
 * the global one take effect:
 * @dontinclude edje-basic.c
 * @skip strcmp(ev->keyname, "r") == 0
 * @until }
 *
 * The example's window should look like this picture:
 *
 * @image html edje-basics-example.png
 * @image rtf edje-basics-example.png
 * @image latex edje-basics-example.eps
 *
 * The full example follows.
 *
 * @include edje-basic.c
 * @example edje-basic.c
 */

/**
 * @page tutorial_edje_swallow Swallow example
 * @dontinclude edje-swallow.c
 *
 * This is a simple example in which we create a rect and swallow it.
 *
 * Focusing on the relevant parts of the code we go right to the creation of our
 * rectangle. It should be noted that we don't resize or show our rect, that is
 * because when an object is swallowed it's geometry and visibility is
 * controlled by the theme:
 * @skip 20
 * @skipline evas_object_rectangle_add
 * @until swallow
 *
 * The other bit of code that is relevant to us now is our check that the
 * swallow worked:
 * @until printf
 *
 * The full source code follows:
 * @include edje-swallow.c
 * @example edje-swallow.c
 */