From bc6caea1f95ca5ca161311cb24eba8dde6bfd34c Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Fri, 23 Nov 2007 16:43:03 +0000 Subject: [PATCH] Edje reference patch two (from dresb) SVN revision: 32849 --- legacy/edje/src/bin/edje_cc_handlers.c | 1297 +++++++++++++++++++++++- 1 file changed, 1294 insertions(+), 3 deletions(-) diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index 139a8748cd..545911f05c 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -2,6 +2,45 @@ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ +/* + Concerning the EDC reference: + + The formatting for blocks and properties has been implemented as a table + which is filled using ALIASES. + For maximum flexibility I implemented them in the \@code/\@encode style, + this means that missing one or changing the order most certainly cause + formatting errors. + + \@block + block name + \@context + code sample of the block + \@description + the block's description + \@endblock + + \@property + property name + \@parameters + property's parameter list + \@effect + the property description (lol) + \@endproperty +*/ + +/** + * @page edcref Edje Data Collection reference + * An Edje Data Collection, it's a plain text file (normally identified with the + * .edc extension),consisting of instructions for the Edje Compiler. + * + * The syntax for the edje data collection files follows a simple structure of + * "blocks { .. }" that can contain "properties: ..", more blocks, or both. + * + * @author Andres Blanc (dresb) andresblanc@gmail.com + * + * + */ + #include "edje_cc.h" static void st_images_image(void); @@ -462,6 +501,39 @@ statement_handler_num(void) /*****/ +/** + @page edcref + + @block + images + @context + images { + image: "filename1.ext" COMP; + image: "filename2.ext" LOSSY 99; + .. + } + @description + The "images" block is used to list each image file that will be used in + the theme along with its compression method (if any). + Besides the domcument's root, additional "images" blocks can be + included inside other blocks, normally "collections", "group" and + "part", easing mantienance of the file list when the theme is split + among multiple files. + @endblock + + @property + image + @parameters + [image file] [compression method] (compression level) + @effect + Used to include each image file. The full path to the directory holding + the images can be defined later with edje_cc's "-id" option. + Compression methods: + @li RAW: Uncompressed. + @li COMP: Lossless compression. + @li LOSSY [0-100]: Lossy comression with quality from 0 to 100. + @endproperty + */ static void st_images_image(void) { @@ -525,6 +597,32 @@ st_images_image(void) } } +/** + @page edcref + + @block + fonts + @context + fonts { + font: "filename1.ext" "fontname"; + font: "filename2.ext" "otherfontname"; + .. + } + @description + The "fonts" block is used to list each font file with an alias used later + in the theme. As with the "images" block, additional "fonts" blocks can + be included inside other blocks. + @endblock + + @property + font + @parameters + [font filename] [font alias] + @effect + Defines each font "file" and "alias", the full path to the directory + holding the font files can be defined with edje_cc's "-fd" option. + @endproperty + */ static void st_fonts_font(void) { @@ -566,6 +664,30 @@ st_fonts_font(void) } } +/** + @page edcref + @block + data + @context + data { + item: "arbitraryname" "arbitraryvalue"; + item: "othername" "othervalue"; + .. + } + @description + The "data" block is used to pass arbitrary parameters from the theme to + the application. Unlike the "images" and "fonts" blocks, additional + "data" blocks can only be included inside the "group" block. + @endblock + + @property + item + @parameters + [parameter name] [parameter value] + @effect + Defines each additional parameter. + @endproperty + */ static void st_data_item(void) { @@ -579,7 +701,27 @@ st_data_item(void) edje_file->data = evas_list_append(edje_file->data, di); } - +/** + @page edcref + @block + color_classes + @context + color_classes { + color_class { + name: "colorclassname"; + color: [0-255] [0-255] [0-255] [0-255]; + color2: [0-255] [0-255] [0-255] [0-255]; + color3: [0-255] [0-255] [0-255] [0-255] + } + .. + } + @description + The "color_classes" block contains a list of one or more "color_class" + blocks. Each "color_class" allows the designer to name an arbitrary + group of colors to be used in the theme, the application can use that + name to alter the color values at runtime. + @endblock +*/ static void ob_color_class(void) { @@ -602,6 +744,18 @@ ob_color_class(void) cc->a3 = 0; } +/** + @page edcref + + @property + name + @parameters + [color class name] + @effect + Sets the name for the color class, used as reference by both the theme + and the application. + @endproperty +*/ static void st_color_class_name(void) { @@ -622,6 +776,16 @@ st_color_class_name(void) } } +/** + @page edcref + @property + color + @parameters + [red] [green] [blue] [alpha] + @effect + The main color. + @endproperty +*/ static void st_color_class_color(void) { @@ -636,6 +800,16 @@ st_color_class_color(void) cc->a = parse_int_range(3, 0, 255); } +/** + @page edcref + @property + color2 + @parameters + [red] [green] [blue] [alpha] + @effect + Used as shadow in text and textblock parts. + @endproperty +*/ static void st_color_class_color2(void) { @@ -650,7 +824,16 @@ st_color_class_color2(void) cc->a2 = parse_int_range(3, 0, 255); } - +/** + @page edcref + @property + color3 + @parameters + [red] [green] [blue] [alpha] + @effect + Used as outline in text and textblock parts. + @endproperty +*/ static void st_color_class_color3(void) { @@ -665,6 +848,27 @@ st_color_class_color3(void) cc->a3 = parse_int_range(3, 0, 255); } +/** + @page edcref + @block + spectra + @context + spectra { + spectrum { + name: "colorspectrumname"; + color: [0-255] [0-255] [0-255] [0-255] [0-?] + color: [0-255] [0-255] [0-255] [0-255] [0-?] + .. + } + .. + } + @description + The "spectra" block contains a list of one or more "spectrum" blocks. + Each "spectrum" block defines a color range used to fill GRADIENT + parts. The colors are defined with the red, green, blue, alpha, delta + format. + @endblock +*/ static void ob_spectrum(void) { @@ -680,6 +884,16 @@ ob_spectrum(void) se->color_list = NULL; } +/** + @page edcref + @property + name + @parameters + [spectrum name] + @effect + The name of the spectrum used as reference later in the theme. + @endproperty +*/ static void st_spectrum_name(void) { @@ -689,6 +903,18 @@ st_spectrum_name(void) se->entry = parse_str(0); } +/** + @page edcref + @property + color + @parameters + [red] [green] [blue] [alpha] [delta] + @effect + Each color declaration represents a stop point in the color range. The + last parameter (delta) is used to set the proportion of a given stop + point higher or lower in contrast with the other color's delta value. + @endproperty +*/ static void st_spectrum_color(void) { @@ -706,6 +932,27 @@ st_spectrum_color(void) sc->d = parse_int(4); } +/** + @page edcref + @block + styles + @context + styles { + style { + name: "stylename"; + base: "..default style properties.."; + + tag: "tagname" "..style properties.."; + .. + } + .. + } + @description + The "styles" block contains a list of one or more "style" blocks. A + "style" block is used to create style \ for advanced TEXTBLOCK + formatting. + @endblock +*/ static void ob_styles_style(void) { @@ -715,6 +962,16 @@ ob_styles_style(void) edje_file->styles = evas_list_append(edje_file->styles, stl); } +/** + @page edcref + @property + name + @parameters + [style name] + @effect + The name of the style to be used as reference later in the theme. + @endproperty +*/ static void st_styles_style_name(void) { @@ -735,7 +992,17 @@ st_styles_style_name(void) } } - +/** + @page edcref + @property + base + @parameters + [style properties string] + @effect + The default style properties that will be applied to the complete + text. + @endproperty +*/ static void st_styles_style_base(void) { @@ -755,6 +1022,16 @@ st_styles_style_base(void) stl->tags = evas_list_append(stl->tags, tag); } +/** + @page edcref + @property + tag + @parameters + [tag name] [style properties string] + @effect + Style to be applied only to text between style \..\. + @endproperty +*/ static void st_styles_style_tag(void) { @@ -768,6 +1045,23 @@ st_styles_style_tag(void) stl->tags = evas_list_append(stl->tags, tag); } +/** + @page edcref + @block + collections + @context + collections { + .. + group { } + group { } + .. + } + @description + The "collections" block is used to list the groups that compose the + theme. Additional "collections" blocks do not prevent overriding group + names. + @endblock +*/ static void ob_collections(void) { @@ -775,6 +1069,31 @@ ob_collections(void) edje_file->collection_dir = mem_alloc(SZ(Edje_Part_Collection_Directory)); } +/** + @page edcref + @block + group + @context + collections { + .. + group { + name: "nameusedbytheapplication"; + alias: "anothername"; + min: width height; + max: width height; + + data { } + script { } + parts { } + programs { } + } + .. + } + @description + A "group" block contains the list of parts and programs that compose a + given Edje Object. + @endblock +*/ static void ob_collections_group(void) { @@ -794,6 +1113,17 @@ ob_collections_group(void) codes = evas_list_append(codes, cd); } +/** + @page edcref + @property + name + @parameters + [group name] + @effect + The name that will be used by the application to load the resulting + Edje object, must be unique within the theme. + @endproperty +*/ static void st_collections_group_name(void) { @@ -805,6 +1135,17 @@ st_collections_group_name(void) de->entry = parse_str(0); } +/** + @page edcref + @property + alias + @parameters + [aditional group name] + @effect + Additional name to serve as identifier. Defining multiple aliases is + supported. + @endproperty +*/ static void st_collections_group_alias(void) { @@ -820,6 +1161,17 @@ st_collections_group_alias(void) aliases = evas_list_append(aliases, alias); } +/** + @page edcref + @property + min + @parameters + [width] [height] + @effect + The minimum size for the container defined by the composition of the + parts. + @endproperty +*/ static void st_collections_group_min(void) { @@ -832,6 +1184,17 @@ st_collections_group_min(void) pc->prop.min.h = parse_int_range(1, 0, 0x7fffffff); } +/** + @page edcref + @property + max + @parameters + [width] [height] + @effect + The maximum size for the container defined by the totality of the + parts. + @endproperty +*/ static void st_collections_group_max(void) { @@ -844,6 +1207,34 @@ st_collections_group_max(void) pc->prop.max.h = parse_int_range(1, 0, 0x7fffffff); } +/** + @page edcref + @block + script + @context + .. + group { + script { + //embryo script + } + .. + program { + script { + //embryo script + } + } + .. + } + .. + @description + This block is used to "inject" embryo scripts to a given Edje theme and + it functions in two modalities. When it's included inside a "program" + block, the script will be executed every time the program is run, on + the other hand, when included directly into a "group", "part" or + "description" block, it will be executed once at load time, in the + load order. + @endblock +*/ static void ob_collections_group_script(void) { @@ -890,6 +1281,36 @@ st_collections_group_data_item(void) pc->data = evas_list_append(pc->data, di); } +/** + @page edcref + @block + part + @context + group { + parts { + .. + part { + name: "partname"; + type: IMAGE; + mouse_events: 1; + repeat_events: 0; + clip_to: "anotherpart"; + source: "groupname"; + pointer_mode: AUTOGRAB; + use_alternate_font_metrics: 0; + + description { } + dragable { } + } + .. + } + } + @description + Parts are used to represent the most basic design elements of the + theme, for example, a part can represent a line in a border or a label + on a button. + @endblock +*/ static void ob_collections_group_parts_part(void) { @@ -911,6 +1332,18 @@ ob_collections_group_parts_part(void) ep->dragable.events_id = -1; } +/** + @page edcref + @property + name + @parameters + [part name] + @effect + The part's name will be used as reference in the theme's relative + positioning system, by programs and in some cases by the application. + It must be unique within the group. + @endproperty +*/ static void st_collections_group_parts_part_name(void) { @@ -941,6 +1374,24 @@ st_collections_group_parts_part_name(void) } } +/** + @page edcref + @property + type + @parameters + [TYPE] + @effect + Set the type (all caps) from among the available types, it's set to + IMAGE by default. Valid types: + @li RECT + @li TEXT + @li IMAGE + @li SWALLOW + @li TEXTBLOCK + @li GRADIENT + @li GROUP + @endproperty +*/ static void st_collections_group_parts_part_type(void) { @@ -963,6 +1414,18 @@ st_collections_group_parts_part_type(void) NULL); } +/** + @page edcref + @property + mouse_events + @parameters + [1 or 0] + @effect + Specifies whether the part will emit signals, altought is named + "mouse_events", disabling it (0) will prevent the part from emitting + any type of signal at all. Its set to 1 by default. + @endproperty +*/ static void st_collections_group_parts_part_mouse_events(void) { @@ -976,6 +1439,17 @@ st_collections_group_parts_part_mouse_events(void) ep->mouse_events = parse_bool(0); } +/** + @page edcref + @property + repeat_events + @parameters + [1 or 0] + @effect + Specifies whether a part echoes a mouse event to other parts below the + pointer (1), or not (0). Its set to 0 by default. + @endproperty +*/ static void st_collections_group_parts_part_repeat_events(void) { @@ -989,6 +1463,23 @@ st_collections_group_parts_part_repeat_events(void) ep->repeat_events = parse_bool(0); } +/** + @page edcref + @property + pointer_mode + @parameters + [MODE] + @effect + Sets the mouse pointer behavior for a given part. The default value is + AUTOGRAB. Aviable modes: + @li AUTOGRAB, when the part is clicked and the button remains + pressed, the part will be the source of all future mouse + signals emitted, even outside the object, until the button is + released. + @li NOGRAB, the effect will be limited to the part's container. + container. + @endproperty +*/ static void st_collections_group_parts_part_pointer_mode(void) { @@ -1005,6 +1496,17 @@ st_collections_group_parts_part_pointer_mode(void) NULL); } +/** + @page edcref + @property + precise_is_inside + @parameters + [1 or 0] + @effect + Enables precise point collision detection for the part, which is more + resource intensive. Disabled by default. + @endproperty +*/ static void st_collections_group_parts_part_precise_is_inside(void) { @@ -1018,6 +1520,18 @@ st_collections_group_parts_part_precise_is_inside(void) ep->precise_is_inside = parse_bool(0); } +/** + @page edcref + @property + use_alternate_font_metrics + @parameters + [1 or 0] + @effect + Only affects text and textblock parts, when enabled Edje will use + different size measurement functions. Disabled by default. (note from + the author: I don't know what this is exactlu useful for?) + @endproperty +*/ static void st_collections_group_parts_part_use_alternate_font_metrics(void) { @@ -1031,6 +1545,17 @@ st_collections_group_parts_part_use_alternate_font_metrics(void) ep->use_alternate_font_metrics = parse_bool(0); } +/** + @page edcref + @property + clip_to + @parameters + [another part's name] + @effect + Only renders the area of part that coincides with another part's + container. Overflowing content will not be displayed. + @endproperty +*/ static void st_collections_group_parts_part_clip_to_id(void) { @@ -1050,6 +1575,17 @@ st_collections_group_parts_part_clip_to_id(void) } } +/** + @page edcref + @property + source + @parameters + [another group's name] + @effect + Only available to GROUP parts. Swallows the specified group into the + part's container. + @endproperty +*/ static void st_collections_group_parts_part_source(void) { @@ -1073,6 +1609,27 @@ st_collections_group_parts_part_source(void) ep->source = parse_str(0); } +/** + @page edcref + + @property + effect + @parameters + [EFFECT] + @effect + Causes Edje to draw the selected effect among: + @li PLAIN + @li OUTLINE + @li SOFT_OUTLINE + @li SHADOW + @li SOFT_SHADOW + @li OUTLINE_SHADOW + @li OUTLINE_SOFT_SHADOW + @li FAR_SHADOW + @li FAR_SOFT_SHADOW + @li GLOW + @endproperty +*/ static void st_collections_group_parts_part_effect(void) { @@ -1098,6 +1655,39 @@ st_collections_group_parts_part_effect(void) NULL); } +/** + @page edcref + @block + dragable + @context + part { + .. + dragable { + confine: "anotherpart"; + events: "anotherdragablepart"; + x: 0 0 0; + y: 0 0 0; + } + .. + } + @description + This block is used to set the properties for parts that will be dragged + around the interface (not external drag & drop). + @endblock + + @property + x + @parameters + [enable/disable] [step] [count] + @effect + Used to setup dragging events for the X axis. The first parameter is + used to enable (1 or -1) and disable (0) dragging along the axis, in + the first case, 1 sets the starting point at 0.0 and -1 at 1.0. The + second parameter takes any integer and will limit movement to values + divisibles by it, causing the part to jump from position to position. + The third parameter, (question from the author: What is count for?). + @endproperty +*/ static void st_collections_group_parts_part_dragable_x(void) { @@ -1113,6 +1703,21 @@ st_collections_group_parts_part_dragable_x(void) ep->dragable.count_x = parse_int_range(2, 0, 0x7fffffff); } +/** + @page edcref + @property + y + @parameters + [enable/disable] [step] [count] + @effect + Used to setup dragging events for the Y axis. The first parameter is + used to enable (1 or -1) and disable (0) dragging along the axis, in + the first case, 1 sets the starting point at 0.0 and -1 at 1.0. The + second parameter takes any integer and will limit movement to values + divisibles by it, causing the part to jump from position to position. + The third parame, (question from the author: What is count for?). + @endproperty +*/ static void st_collections_group_parts_part_dragable_y(void) { @@ -1128,6 +1733,19 @@ st_collections_group_parts_part_dragable_y(void) ep->dragable.count_y = parse_int_range(2, 0, 0x7fffffff); } +/** + @page edcref + @property + confine + @parameters + [another part's name] + @effect + When set, limits the movement of the dragged part to another part's + container. Since the size of dragable object will be setup by the + application, the "min" property of "description" should be an accesible + size. + @endproperty +*/ static void st_collections_group_parts_part_dragable_confine(void) { @@ -1147,6 +1765,17 @@ st_collections_group_parts_part_dragable_confine(void) } } +/** + @page edcref + @property + events + @parameters + [another dragable part's name] + @effect + It causes the part to forward the drag events to another part, thus + ignoring them for itself. + @endproperty +*/ static void st_collections_group_parts_part_dragable_events(void) { @@ -1166,6 +1795,36 @@ st_collections_group_parts_part_dragable_events(void) } } +/** + @page edcref + @block + description + @context + description { + inherit: "another_description" INDEX; + state: "description_name" INDEX; + visible: 1; + min: 0 0; + max: -1 -1; + align: 0.5 0.5; + fixed: 0 0; + step: 0 0; + aspect: 1 1; + + rel1 { + .. + } + + rel2 { + .. + } + } + @description + Every part can have one or more description blocks. Each description is + used to define style and layout properties of a part in a given + "state". + @endblock +*/ static void ob_collections_group_parts_part_description(void) { @@ -1241,6 +1900,19 @@ ob_collections_group_parts_part_description(void) ed->gradient.rel2.offset_y = -1; } +/** + @page edcref + @property + inherit + @parameters + [another description's name] [another description's index] + @effect + When set, the description will inherit all the properties from the + named description. The properties defined in this part will override + the inherited properties, reducing the amount of necessary code for + simple state changes. Note: inheritance in Edje is single level only. + @endproperty +*/ static void st_collections_group_parts_part_description_inherit(void) { @@ -1362,6 +2034,20 @@ st_collections_group_parts_part_description_inherit(void) data_queue_part_slave_lookup(&(parent->text.id_text_source), &(ed->text.id_text_source)); } +/** + @page edcref + @property + state + @parameters + [a name for the description] [an index] + @effect + Sets a name used to identify a description inside a given part. + Multiple descriptions are used to declare different states of the same + part, like "clicked" or "invisible". All states declarations are also + coupled with an index number between 0.0 and 1.0. All parts must have + at least one description named "default 0.0". + @endproperty +*/ static void st_collections_group_parts_part_description_state(void) { @@ -1390,6 +2076,17 @@ st_collections_group_parts_part_description_state(void) ed->state.value = parse_float_range(1, 0.0, 1.0); } +/** + @page edcref + @property + visible + @parameters + [0 or 1] + @effect + Takes a boolean value specifying whether part is visible (1) or not + (0). Non-visible parts do not emit signals. The default value is 1. + @endproperty +*/ static void st_collections_group_parts_part_description_visible(void) { @@ -1406,6 +2103,18 @@ st_collections_group_parts_part_description_visible(void) ed->visible = parse_bool(0); } +/** + @page edcref + @property + align + @parameters + [X axis] [Y axis] + @effect + When the displayed object's size is smaller than its container, this + property moves it relatively along both axis inside its container. The + default value is "0.5 0.5". + @endproperty +*/ static void st_collections_group_parts_part_description_align(void) { @@ -1423,6 +2132,17 @@ st_collections_group_parts_part_description_align(void) ed->align.y = parse_float_range(1, 0.0, 1.0); } +/** + @page edcref + @property + fixed + @parameters + [width, 0 or 1] [height, 0 or 1] + @effect + When the "min" or "max" properties are set, fixed enables or disables + resizing for each dimension. The default value is "0 0" + @endproperty +*/ static void st_collections_group_parts_part_description_fixed(void) { @@ -1440,6 +2160,16 @@ st_collections_group_parts_part_description_fixed(void) ed->fixed.h = parse_float_range(1, 0, 1); } +/** + @page edcref + @property + min + @parameters + [width] [height] + @effect + The minimum size of the state. + @endproperty +*/ static void st_collections_group_parts_part_description_min(void) { @@ -1457,6 +2187,16 @@ st_collections_group_parts_part_description_min(void) ed->min.h = parse_float_range(1, 0, 0x7fffffff); } +/** + @page edcref + @property + max + @parameters + [width] [height] + @effect + The maximum size of the state. + @endproperty +*/ static void st_collections_group_parts_part_description_max(void) { @@ -1474,6 +2214,18 @@ st_collections_group_parts_part_description_max(void) ed->max.h = parse_float_range(1, 0, 0x7fffffff); } +/** + @page edcref + @property + step + @parameters + [width] [height] + @effect + Restricts resizing of each dimension to values divisibles by its value. + This causes the part to jump from value to value while resizing. The + default value is "0 0" disabling stepping. + @endproperty +*/ static void st_collections_group_parts_part_description_step(void) { @@ -1491,6 +2243,20 @@ st_collections_group_parts_part_description_step(void) ed->step.y = parse_float_range(1, 0, 0x7fffffff); } +/** + @page edcref + @property + aspect + @parameters + [min] [max] + @effect + Normally width and height can be resized to any values independently. + The aspect property forces the width to height ratio to be kept between + the minimum and maximum set. For example, "1.0 1.0" will increase the + width a pixel for every pixel added to heigh. The default value is + "0.0 0.0" disabling aspect. + @endproperty +*/ static void st_collections_group_parts_part_description_aspect(void) { @@ -1508,6 +2274,17 @@ st_collections_group_parts_part_description_aspect(void) ed->aspect.max = parse_float_range(1, 0.0, 999999999.0); } +/** + @page edcref + @property + aspect_preference + @parameters + [DIMENSION] + @effect + Sets the scope of the "aspect" property to a given dimension. Available + options are BOTH, VERTICAL, HORIZONTAL and NONE + @endproperty +*/ static void st_collections_group_parts_part_description_aspect_preference(void) { @@ -1529,6 +2306,18 @@ st_collections_group_parts_part_description_aspect_preference(void) NULL); } +/** + @page edcref + @property + color_class + @parameters + [color class name] + @effect + The part will use the color values of the named color_class, these + values can be overrided by the "color", "color2" and "color3" + properties set below. + @endproperty +*/ static void st_collections_group_parts_part_description_color_class(void) { @@ -1545,6 +2334,16 @@ st_collections_group_parts_part_description_color_class(void) ed->color_class = parse_str(0); } +/** + @page edcref + @property + color + @parameters + [red] [green] [blue] [alpha] + @effect + Sets the main color to the specified values (between 0 and 255). + @endproperty +*/ static void st_collections_group_parts_part_description_color(void) { @@ -1564,6 +2363,16 @@ st_collections_group_parts_part_description_color(void) ed->color.a = parse_int_range(3, 0, 255); } +/** + @page edcref + @property + color2 + @parameters + [red] [green] [blue] [alpha] + @effect + Sets the text shadow color to the specified values (0 to 255). + @endproperty +*/ static void st_collections_group_parts_part_description_color2(void) { @@ -1583,6 +2392,16 @@ st_collections_group_parts_part_description_color2(void) ed->color2.a = parse_int_range(3, 0, 255); } +/** + @page edcref + @property + color3 + @parameters + [red] [green] [blue] [alpha] + @effect + Sets the text outline color to the specified values (0 to 255). + @endproperty +*/ static void st_collections_group_parts_part_description_color3(void) { @@ -1602,6 +2421,40 @@ st_collections_group_parts_part_description_color3(void) ed->color3.a = parse_int_range(3, 0, 255); } +/** + @page edcref + @block + rel1/rel2 + @context + description { + .. + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + .. + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + .. + } + @description + The rel1 and rel2 blocks are used to define the position of each corner + of the part's container. With rel1 being the left-up corner and rel2 + being the right-down corner. + @endblock + + @property + relative + @parameters + [X axis] [Y axis] + @effect + Moves a corner to a relative position inside the container of the + relative "to" part. Values from 0.0 (0%, begining) to 1.0 (100%, end) + of each axis. + @endproperty +*/ static void st_collections_group_parts_part_description_rel1_relative(void) { @@ -1619,6 +2472,16 @@ st_collections_group_parts_part_description_rel1_relative(void) ed->rel1.relative_y = parse_float(1); } +/** + @page edcref + @property + offset + @parameters + [X axis] [Y axis] + @effect + Affects the corner postion a fixed number of pixels along each axis. + @endproperty +*/ static void st_collections_group_parts_part_description_rel1_offset(void) { @@ -1636,6 +2499,17 @@ st_collections_group_parts_part_description_rel1_offset(void) ed->rel1.offset_y = parse_int(1); } +/** + @page edcref + @property + to + @parameters + [another part's name] + @effect + Causes a corner to be positioned relatively to another part's + container. + @endproperty +*/ static void st_collections_group_parts_part_description_rel1_to(void) { @@ -1659,6 +2533,17 @@ st_collections_group_parts_part_description_rel1_to(void) } } +/** + @page edcref + @property + to_x + @parameters + [another part's name] + @effect + Causes a corner to be positioned relatively to the X axis of another + part's container. Simply put affects the first parameter of "relative". + @endproperty +*/ static void st_collections_group_parts_part_description_rel1_to_x(void) { @@ -1681,6 +2566,18 @@ st_collections_group_parts_part_description_rel1_to_x(void) } } +/** + @page edcref + @property + to_y + @parameters + [another part's name] + @effect + Causes a corner to be positioned relatively to the Y axis of another + part's container. Simply put, affects the second parameter of + "relative". + @endproperty +*/ static void st_collections_group_parts_part_description_rel1_to_y(void) { @@ -1804,6 +2701,36 @@ st_collections_group_parts_part_description_rel2_to_y(void) } } +/** + @page edcref + @block + image + @context + description { + .. + image { + normal: "filename.ext"; + tween: "filename2.ext"; + .. + tween: "filenameN.ext"; + border: left right top bottom; + middle: 0-1; + } + .. + } + @description + @endblock + + @property + normal + @parameters + [image's filename] + @effect + Name of image to be used as previously declared in the images block. + In an animation, this is the first and last image displayed. It's + required in any image part + @endproperty +*/ static void st_collections_group_parts_part_description_image_normal(void) { @@ -1835,6 +2762,18 @@ st_collections_group_parts_part_description_image_normal(void) } } +/** + @page edcref + @property + tween + @parameters + [image's filename] + @effect + Name of an image to be used in an animation loop, an image block can + have none, one or multiple tween declarations. Images are displayed in + the order they are listed. + @endproperty +*/ static void st_collections_group_parts_part_description_image_tween(void) { @@ -1869,6 +2808,18 @@ st_collections_group_parts_part_description_image_tween(void) } } +/** + @page edcref + @property + border + @parameters + [left] [right] [top] [bottom] + @effect + If set, the area (in pixels) of each side of the image will be + displayed as a fixed size border, from the side -> inwards, preventing + the corners from being changed on a resize. + @endproperty +*/ static void st_collections_group_parts_part_description_image_border(void) { @@ -1897,6 +2848,18 @@ st_collections_group_parts_part_description_image_border(void) ed->border.b = parse_int_range(3, 0, 0x7fffffff); } +/** + @page edcref + @property + middle + @parameters + [0 or 1] + @effect + If border is set, this boolean value tells Edje if the rest of the + image (not covered by the defined border) will be displayed or not. + The default value is 1. + @endproperty +*/ static void st_collections_group_parts_part_description_image_middle(void) { @@ -1922,6 +2885,40 @@ st_collections_group_parts_part_description_image_middle(void) ed->border.no_fill = !parse_bool(0); } +/** + @page edcref + @block + fill + @context + description { + .. + fill { + smooth: 0-1; + origin { + relative: X-axis Y-axis; + offset: X-axis Y-axis; + } + size { + relative: width height; + offset: width height; + } + } + .. + } + @description + The fill method is an optional block that defines the way an IMAGE or + GRADIENT part is going to be displayed inside its container. + @endblock + + @property + smooth + @parameters + [0 or 1] + @effect + The smooth property takes a boolean value to decide if the image will + be smoothed on scaling (1) or not (0). The default value is 1. + @endproperty +*/ static void st_collections_group_parts_part_description_fill_smooth(void) { @@ -1947,6 +2944,17 @@ st_collections_group_parts_part_description_fill_smooth(void) ed->fill.smooth = parse_bool(0); } +/** + @page edcref + + @property + spread + @parameters + TODO + @effect + TODO + @endproperty +*/ static void st_collections_group_parts_part_description_fill_spread(void) { @@ -1973,6 +2981,17 @@ st_collections_group_parts_part_description_fill_spread(void) ed->fill.spread = parse_int_range(0, 0, 1); } +/** + @page edcref + + @property + angle + @parameters + TODO + @effect + TODO + @endproperty +*/ static void st_collections_group_parts_part_description_fill_angle(void) { @@ -1999,6 +3018,17 @@ st_collections_group_parts_part_description_fill_angle(void) ed->fill.angle = parse_int_range(0, 0, 360); } +/** + @page edcref + + @property + type + @parameters + TODO + @effect + TODO + @endproperty +*/ static void st_collections_group_parts_part_description_fill_type(void) { @@ -2027,6 +3057,37 @@ st_collections_group_parts_part_description_fill_type(void) NULL); } +/** + @page edcref + @block + origin + @context + description { + .. + fill { + .. + origin { + relative: 0.0 0.0; + offset: 0 0; + } + .. + } + .. + } + @description + The origin block is used to place the starting point, inside the + displayed element, that will be used to render the tile. By default, + the origin is set at the element's left-up corner. + @endblock + + @property + relative + @parameters + [X axis] [Y axis] + @effect + Sets the starting point relatively to displayed element's content. + @endproperty +*/ static void st_collections_group_parts_part_description_fill_origin_relative(void) { @@ -2053,6 +3114,16 @@ st_collections_group_parts_part_description_fill_origin_relative(void) ed->fill.pos_rel_y = parse_float_range(1, -999999999.0, 999999999.0); } +/** + @page edcref + @property + offset + @parameters + [X axis] [Y axis] + @effect + Affects the starting point a fixed number of pixels along each axis. + @endproperty +*/ static void st_collections_group_parts_part_description_fill_origin_offset(void) { @@ -2079,6 +3150,39 @@ st_collections_group_parts_part_description_fill_origin_offset(void) ed->fill.pos_abs_y = parse_int(1); } +/** + @page edcref + @block + size + @context + description { + .. + fill { + .. + size { + relative: 1.0 1.0; + offset: -1 -1; + } + .. + } + .. + } + @description + The size block defines the tile size of the content that will be + displayed. + @endblock + + @property + relative + @parameters + [width] [height] + @effect + Takes a pair of decimal values that represent the a percentual value + of the original size of the element. For example, "0.5 0.5" represents + half the size, while "2.0 2.0" represents the double. The default + value is "1.0 1.0". + @endproperty +*/ static void st_collections_group_parts_part_description_fill_size_relative(void) { @@ -2105,6 +3209,16 @@ st_collections_group_parts_part_description_fill_size_relative(void) ed->fill.rel_y = parse_float_range(1, 0.0, 999999999.0); } +/** + @page edcref + @property + offset + @parameters + [X axis] [Y axis] + @effect + Affects the size of the tile a fixed number of pixels along each axis. + @endproperty +*/ static void st_collections_group_parts_part_description_fill_size_offset(void) { @@ -2131,6 +3245,44 @@ st_collections_group_parts_part_description_fill_size_offset(void) ed->fill.abs_y = parse_int(1); } +/** + @page edcref + + @block + text + @context + part { + description { + .. + text { + text: "some string of text to display"; + font: "font_name"; + size: SIZE; + text_class: "class_name"; + fit: horizontal vertical; + min: horizontal vertical; + max: horizontal vertical; + align: X-axis Y-axis; + source: "part_name"; + text_source: "text_part_name"; + elipsis: 0.0-1.0; + style: "stylename"; + } + .. + } + } + @description + @endblock + + @property + text + @parameters + [a string of text, or nothing] + @effect + Sets the default content of a text part, normally the application is + the one changing its value. + @endproperty +*/ static void st_collections_group_parts_part_description_text_text(void) { @@ -2171,6 +3323,18 @@ st_collections_group_parts_part_description_text_text(void) ed->text.text = str; } +/** + @page edcref + + @property + text_class + @parameters + [text class name] + @effect + Similar to color_class, this is the name used by the application + to alter the font family and size at runtime. + @endproperty +*/ static void st_collections_group_parts_part_description_text_text_class(void) { @@ -2197,6 +3361,18 @@ st_collections_group_parts_part_description_text_text_class(void) ed->text.text_class = parse_str(0); } +/** + @page edcref + + @property + font + @parameters + [font alias] + @effect + This sets the font family to one of the aliases set up in the "fonts" + block. Can be overrided by the application. + @endproperty +*/ static void st_collections_group_parts_part_description_text_font(void) { @@ -2222,6 +3398,18 @@ st_collections_group_parts_part_description_text_font(void) ed->text.font = parse_str(0); } +/** + @page edcref + + @property + style + @parameters + [the style name] + @effect + Causes the part to use the default style and tags defined in the + "style" block with the specified name. + @endproperty +*/ static void st_collections_group_parts_part_description_text_style(void) { @@ -2247,6 +3435,18 @@ st_collections_group_parts_part_description_text_style(void) ed->text.style = parse_str(0); } +/** + @page edcref + + @property + size + @parameters + [font size in points (pt)] + @effect + Sets the default font size for the text part. Can be overrided by the + application. + @endproperty +*/ static void st_collections_group_parts_part_description_text_size(void) { @@ -2272,6 +3472,18 @@ st_collections_group_parts_part_description_text_size(void) ed->text.size = parse_int_range(0, 0, 255); } +/** + @page edcref + + @property + fit + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is set to 1 edje will resize the text for it + to fit in it's container. Both are disabled by default. + @endproperty +*/ static void st_collections_group_parts_part_description_text_fit(void) { @@ -2298,6 +3510,19 @@ st_collections_group_parts_part_description_text_fit(void) ed->text.fit_y = parse_bool(1); } +/** + @page edcref + + @property + min + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is enabled (1) it forces the minimum size of + the container to be equal to the minimum size of the text. The default + value is "0 0". + @endproperty +*/ static void st_collections_group_parts_part_description_text_min(void) { @@ -2325,6 +3550,19 @@ st_collections_group_parts_part_description_text_min(void) ed->text.min_y = parse_bool(1); } +/** + @page edcref + + @property + max + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is enabled (1) it forces the maximum size of + the container to be equal to the maximum size of the text. The default + value is "0 0". + @endproperty +*/ static void st_collections_group_parts_part_description_text_max(void) { @@ -2352,6 +3590,18 @@ st_collections_group_parts_part_description_text_max(void) ed->text.max_y = parse_bool(1); } +/** + @page edcref + + @property + align + @parameters + [horizontal] [vertical] + @effect + Change the position of the point of balance inside the container. The + default value is 0.5 0.5. + @endproperty +*/ static void st_collections_group_parts_part_description_text_align(void) { @@ -2378,6 +3628,18 @@ st_collections_group_parts_part_description_text_align(void) ed->text.align.y = parse_float_range(1, 0.0, 1.0); } +/** + @page edcref + + @property + source + @parameters + [another TEXT part's name] + @effect + Causes the part to use the text properties (like font and size) of + another part and update them as they change. + @endproperty +*/ static void st_collections_group_parts_part_description_text_source(void) { @@ -2410,6 +3672,18 @@ st_collections_group_parts_part_description_text_source(void) } } +/** + @page edcref + + @property + text_source + @parameters + [another TEXT part's name] + @effect + Causes the part to display the text content of another part and update + them as they change. + @endproperty +*/ static void st_collections_group_parts_part_description_text_text_source(void) { @@ -2442,6 +3716,19 @@ st_collections_group_parts_part_description_text_text_source(void) } } +/** + @page edcref + + @property + text_elipsis + @parameters + [point of balance] + @effect + Used to balance the text in a relative point from 0.0 to 1.0, this + point is the last section of the string to be cut out in case of a + resize that is smaller than the text itself. The default value is 0.0. + @endproperty +*/ static void st_collections_group_parts_part_description_text_elipsis(void) { @@ -2897,3 +4184,7 @@ ob_collections_group_programs_program_script(void) } } } +/** + @page edcref +
+*/