diff options
author | Vicent Marti | 2008-08-13 10:42:01 +0000 |
---|---|---|
committer | Vicent Marti | 2008-08-13 10:42:01 +0000 |
commit | 0bf21870392dfb15ed11613409445c8ec64f3ffa (patch) | |
tree | bbdd80bbbecb75dfaebc0eb99eec62be7ce13fa8 /gui/ThemeParser.h | |
parent | a4b3434af91bcb7ea272c7e214e249c0f6823126 (diff) | |
download | scummvm-rg350-0bf21870392dfb15ed11613409445c8ec64f3ffa.tar.gz scummvm-rg350-0bf21870392dfb15ed11613409445c8ec64f3ffa.tar.bz2 scummvm-rg350-0bf21870392dfb15ed11613409445c8ec64f3ffa.zip |
Finished GUI layout in g1x.
svn-id: r33818
Diffstat (limited to 'gui/ThemeParser.h')
-rw-r--r-- | gui/ThemeParser.h | 276 |
1 files changed, 3 insertions, 273 deletions
diff --git a/gui/ThemeParser.h b/gui/ThemeParser.h index 782ab9a44f..e4821ef00f 100644 --- a/gui/ThemeParser.h +++ b/gui/ThemeParser.h @@ -38,272 +38,6 @@ #include "graphics/VectorRenderer.h" #include "gui/ThemeRenderer.h" -/** - ********************************************* - ** Theme Description File format overview. ** - ********************************************* - This document is a work in progress. - A more complete version will be posted on the wiki soon. - -In the new version of the Graphical User Interface for ScummVM, almost -all properties regarding looks, design and positioning of the UI -elements are defined in a set of external files. - -The chosen syntax for theme description is a basic subset of XML. -The process of theme description is divided in two main parts: Drawing -specifications for the vector renderer and theme design/layout -information for the actual theme engine. - -These two core sections of a theme's description may be placed in a -single file or split for convenience across several files. - -_DRAWING SPECIFICATIONS_ - -The process of rendering a widget on the screen is discretized into -several phases called "drawing steps". A set of such steps, which -generate a basic widget shape on screen is called a Draw Data set. The -GUI Engine loads all the different data sets for a given -widget and takes care of rendering it into the screen based on its -current state. - -For example, the basic Button widget may be composed of several sets -of data: Drawing data for the button's idle state, drawing data for -when the button is hovered and drawing data for when the button is -pressed. - -The functionality of each set of Drawing Data is hard-coded into the -Graphical User Interface; the most up to date version of all the -drawing sets may be found extensively commented in the -"gui/InterfaceManager.h" file, in the DrawData enumeration inside the -InterfaceManager class. - -In order to successfully parse and load a custom theme definition, the -whole list of Draw Data sets must be specified. - -_THEME LAYOUT SPECIFICATIONS_ - -####### - -_SYNTAX OVERVIEW AND PARAMETERS_ - -As stated before, all the theme description is done through a XML-like -syntax. The files are parsed left-to-right, ignoring extra whitespaces -and newlines. Parser data is interpreted during the parsing. As a -general guideline, theme files are composed of keys which may or not -contain specific values for the key and which may parent several -subkeys; independently of this, all keys must be properly closed with -the '/' operator. - - <parent_key value1 = "sample"> - - <child_key1> - <self_closed_child value2 = 124 /> - - <external_closed_child value3 = 245> - - </external_closed_child> - </child_key1> - - <child_key2 with_value = "sample"> - <subchild/> - </child_key2> - - </parent_key> - -Note how keys which contain no children may be closed by themselves -or with an external closure. - -- Comments -The parser supports the same comment syntax as the C++ programming -language. Comment blocks may be specified by surrounding them with the -'/ *' and '* /' operators, while whole lines may be commented out by -preceding them with the // operator. - -Block comments are parsed in a non-hungry manner, i.e. the first -comment closure is understood to close the whole commenting block, so -syntax like - - / * hey look this comment finishes here * / or maybe here?? * / - -is invalid. - -- Section keys. -The section key is the root level of a theme description file. Each -file may contain one or more of these keys, which specifies the nature -of all their children, namely if the children keys specify drawing or -layout information. Its syntax is as follows: - - <layout_info platform = "NDS" resolution = "320x240"> - // ... - </layout_info> - - <render_info platform = "NDS" resolution = "320x240"> - // ... - </render_info> - -The "layout_info" key specifies that all children keys contain -information regarding the layout of the theme, while the "render_info" -key specifies that all children keys contain information regarding the -looks of the theme. - -Both keys support the two optional parameters "platform" and -"resolution", in order to make a certain layout apply to a single -resolution or to a single platform. To make a key apply for more than -one specific platform or resolution at the same time, you may separate -their names with commas. - - <render_info platform = "nds, palmos, pocketpc"> - - -- Render Info keys: -The children of a "render_info" key are expected to be one of these -kind: - - -- DrawData key: - DrawData keys are the core of the rendering engine. They specifiy - via their own children the looks of all the UI elements. Here's - their syntax: - - <drawdata id = "button_idle" cache = true platform = "NDS" - resolution = "320x240"> - - </drawdata> - - All drawdata keys must contain an "id" value, specifying which set - of drawing data they implement. Here's a list of all possible ids. - - ######### - - Remember that all these ids must me implemented in order for the - parsing to be considered succesful. - - DrawData keys may also contain an optional boolean value "cache", - which states if the set of DrawingSteps may be cached into the - memory so it can be blit into the Overlay each frame or if the set - of Drawing Steps should be performed individually each frame. If - omitted, the "cache" value defaults to false. - - Also, just like the <render_info> key, DrawData keys may also - contain optional "platform" and "resolution" values, making such - draw steps specific for a single or several platforms or - resolutions. In order to specify several platforms or resolutions, - they must be separated by commas inside the key's value. - - <drawdata id = "background_default" cache = true platform = "nds, palmos"> - </drawdata> - - When making a set of Drawing Data for a widget specific to a - single platform or resolution, remember that the set must be also - implemented later generically for other platforms, or the - rendering of the theme will fail in such platforms. - - Lastly, each DrawData key must contain at least a children - "drawstep" subkey, with the necessary info for the - VectorRenderer. - - - The DrawStep key - The DrawStep key is probably the most complex definition of - a ThemeDescription file. It contains enough information to - allow the Vector Renderer to draw a basic or complex shape - into the screen. - - DrawStep keys are supposed to have no children, so they must - be either self-closed or closed externally. - - Their basic syntax is as follows: - - <drawstep func = "roundedsq"> - </drawstep> - - The only required value is the function "func" which states - the drawing function that will be used, and it must be - accompanied by a set of parameters specific to each drawing - step. Here's a list of such parameters: - -Common parameters for all functions: - -fill = "none|foreground|background|gradient" - Specifies the fill mode for the drawn shape. - Possible values: - - "none": Disables filling so only the stroke is shown. - "foreground" (default): Fills the whole shape with the active foreground - color. - "background": Fills the whole shape with the active background - color. - "gradient": Fills the whole shape with the active gradient. - -gradient_start = "R, G, B" | "color name" -gradient_end = "R, G, B" | "color name" -fg_color = "R, G, B" | "color name" -bg_color = "R, G, B" | "color name" - Sets the active gradient, foreground or backgroud colors. Colors - may be specified with their three components (red, green, blue) - ranging each from 0 to 255, or via a color name which has - previously been defined in the palette section. - - These colours have no default values. - -stroke = width (integer) - Sets the active stroke width; strokes may be disabled by setting - this value to 0. All shapes are automatically stroked with the - given width and the active foreground color. Defaults to 1. - -shadow = offset (integer) - Sets the shadow offset. In the rendering engines that support it, - drawn shapes will have a soft shadow offseted the given amount on - their bottom-right corner. Defaults to 0 (disabled). - -factor = amount (integer) - The factor value specifies the displacement of the active - gradient, i.e. its zoom level. It is only taken into account if - the active fill mode is set to gradient. Defaults to 1. - -Standard primitive drawing functions: - -func = "circle" - Draws a primitive circle. Requires the additional parameter - "radius", with an integer defining the radius of the circle or - the "auto" value. - -func = "square" - Draws a primitive square/rectangle. Requires no additional parameters. - -func = "roundedsq" - Draws a square/rectangle with rounded corners. Requires the - additional parameter "radius" defining the radius of the rounded - corners. - -func = "bevelsq" - Draws a square/rectangle with beveled borders. This square - ignores the active fill mode, as it is never filled. Requires the - additional parameter "bevel" with the amount of bevel. - -func = "line" - Draws a line. If the "size" parameter is specified, the line will - be drawn ranging from the bottom-left corner to the top-right - corner of the defined box. Optionally, you may define the ending - point of the line with the "end" parameter. - -func = "triangle" - Draws a triangle. Triangles are always isosceles, meaning they - are drawn inside the square defined by the position and size - values, with the given width as the base of the triangle and the - given height as the height of the triangle. - - The optional parameter - - orientation = "top|left|right|bottom" - - may be specified to define the way in which the triangle is - pointing. Defaults to top. - -func = "fill" - This call ignores position and size parameters, as it completely - fills the active drawing surface taken into account the active - fill mode and colors. -*/ - namespace GUI { using namespace Graphics; @@ -339,6 +73,7 @@ protected: CUSTOM_XML_PARSER(ThemeParser) { XML_KEY(render_info) + XML_PROP(resolution, false) XML_KEY(palette) XML_KEY(color) XML_PROP(name, true) @@ -435,6 +170,7 @@ protected: KEY_END() // render_info end XML_KEY(layout_info) + XML_PROP(resolution, false) XML_KEY(globals) XML_PROP(resolution, false) XML_KEY(def) @@ -449,12 +185,6 @@ protected: XML_PROP(pos, false) XML_PROP(padding, false) XML_PROP(resolution, false) - - XML_KEY(child) - XML_PROP(name, true) - XML_PROP(size, false) - XML_PROP(padding, false) - KEY_END() KEY_END() KEY_END() @@ -464,6 +194,7 @@ protected: XML_PROP(shading, false) XML_PROP(enabled, false) XML_PROP(resolution, false) + XML_PROP(inset, false) XML_KEY(layout) XML_PROP(type, true) XML_PROP(center, false) @@ -515,7 +246,6 @@ protected: bool parserCallback_def(ParserNode *node); bool parserCallback_widget(ParserNode *node); bool parserCallback_dialog(ParserNode *node); - bool parserCallback_child(ParserNode *node); bool parserCallback_layout(ParserNode *node); bool parserCallback_space(ParserNode *node); bool parserCallback_import(ParserNode *node); |