2014-06-17 20:45:40 +02:00
|
|
|
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
|
|
|
|
##
|
|
|
|
# NOTE: To modify this Relax NG grammar, edit the Relax NG Compact (.rnc) file
|
|
|
|
# and use a converter tool like trang to generate the Relax NG XML (.rng) file
|
|
|
|
##
|
|
|
|
|
|
|
|
start = object | objects | setup | sprites | styles
|
|
|
|
|
|
|
|
##
|
|
|
|
# Types #
|
|
|
|
##
|
|
|
|
# xsd:boolean could be used instead of this definition,
|
|
|
|
# though it considers "1" & "0" as valid values.
|
|
|
|
bool = "true" | "false"
|
|
|
|
align = "left" | "center" | "right"
|
|
|
|
valign = "top" | "center" | "bottom"
|
|
|
|
wrapmode = "repeat" | "mirrored_repeat" | "clamp_to_edge"
|
|
|
|
coord = xsd:string { pattern = "-?\d*\.?\d+(%([\+\-]\d*\.?\d+)?)?" }
|
|
|
|
clientarea = list { coord, coord, coord, coord }
|
|
|
|
# color can be a name or "R G B A" format string
|
|
|
|
rgba = list { xsd:integer { minInclusive = "0" maxInclusive = "255" },
|
|
|
|
xsd:integer { minInclusive = "0" maxInclusive = "255" },
|
|
|
|
xsd:integer { minInclusive = "0" maxInclusive = "255" },
|
|
|
|
xsd:integer { minInclusive = "0" maxInclusive = "255" }?}
|
|
|
|
ccolor = rgba | xsd:string { pattern = "[A-Za-z]+" }
|
|
|
|
size = list { xsd:decimal, xsd:decimal }
|
|
|
|
pos = list { xsd:decimal, xsd:decimal }
|
|
|
|
rect = list { xsd:decimal, xsd:decimal, xsd:decimal, xsd:decimal }
|
|
|
|
|
|
|
|
##
|
|
|
|
# Defines #
|
|
|
|
##
|
|
|
|
unique_settings =
|
|
|
|
attribute name { text }?,
|
|
|
|
[ a:defaultValue = "empty" ] attribute type { text }?,
|
|
|
|
attribute style { text }?
|
|
|
|
# This could probably be made more specific/strict
|
|
|
|
# with more information regarding the use/meaning
|
|
|
|
# of these attributes.
|
|
|
|
base_settings =
|
|
|
|
attribute absolute { bool }?&
|
|
|
|
attribute enable { bool }?&
|
|
|
|
attribute ghost { bool }?&
|
|
|
|
attribute hidden { bool }?&
|
|
|
|
attribute size { clientarea }?&
|
|
|
|
attribute z { xsd:decimal }?
|
|
|
|
# Defaults are not put in here, because it ruins the concept of styles.
|
|
|
|
ex_settings =
|
|
|
|
attribute anchor { valign }?&
|
|
|
|
attribute buffer_zone { xsd:decimal }?&
|
|
|
|
attribute buffer_width { xsd:decimal }?&
|
|
|
|
attribute button_width { xsd:decimal }?&
|
|
|
|
attribute checked { bool }?&
|
|
|
|
attribute clip { bool }?&
|
|
|
|
attribute dropdown_size { xsd:decimal }?&
|
|
|
|
attribute dropdown_buffer { xsd:decimal }?&
|
|
|
|
attribute enabled { bool }?&
|
|
|
|
attribute font { text }?&
|
|
|
|
attribute fov_wedge_color { ccolor }?&
|
|
|
|
attribute hotkey { text }?&
|
|
|
|
attribute cell_id { xsd:integer }?&
|
|
|
|
attribute independent { bool }?&
|
|
|
|
attribute input_initvalue_destroyed_at_focus { bool }?&
|
|
|
|
attribute mask { bool }?&
|
|
|
|
attribute mask_char { xsd:string { minLength = "1" maxLength = "1" } }?&
|
|
|
|
attribute max_length { xsd:nonNegativeInteger }?&
|
|
|
|
attribute maxwidth { xsd:decimal }? &
|
|
|
|
attribute multiline { bool }?&
|
|
|
|
attribute offset { pos }?&
|
|
|
|
attribute scrollbar { bool }?&
|
|
|
|
attribute scrollbar_style { text }?&
|
|
|
|
attribute scroll_bottom { bool }?&
|
|
|
|
attribute sound_closed { text }?&
|
|
|
|
attribute sound_disabled { text }?&
|
|
|
|
attribute sound_enter { text }?&
|
|
|
|
attribute sound_leave { text }?&
|
|
|
|
attribute sound_opened { text }?&
|
|
|
|
attribute sound_pressed { text }?&
|
|
|
|
attribute sound_selected { text }?&
|
|
|
|
attribute sprite { text }?&
|
|
|
|
attribute sprite2 { text }?&
|
|
|
|
attribute sprite_heading { text }?&
|
|
|
|
attribute sprite_bar { text }?&
|
|
|
|
attribute sprite_background { text }?&
|
|
|
|
attribute sprite_disabled { text }?&
|
|
|
|
attribute sprite_list { text }?&
|
|
|
|
attribute sprite2_disabled { text }?&
|
|
|
|
attribute sprite_over { text }?&
|
|
|
|
attribute sprite2_over { text }?&
|
|
|
|
attribute sprite_pressed { text }?&
|
|
|
|
attribute sprite2_pressed { text }?&
|
|
|
|
attribute sprite_selectarea { text }?&
|
|
|
|
attribute square_side { xsd:decimal }?&
|
|
|
|
attribute textcolor { ccolor }?&
|
|
|
|
attribute textcolor_disabled { ccolor }?&
|
|
|
|
attribute textcolor_over { ccolor }?&
|
|
|
|
attribute textcolor_pressed { ccolor }?&
|
|
|
|
attribute textcolor_selected { ccolor }?&
|
|
|
|
attribute text_align { align }?&
|
|
|
|
attribute text_valign { valign }?&
|
|
|
|
attribute tooltip { text }?&
|
|
|
|
attribute tooltip_style { text }?
|
|
|
|
|
|
|
|
##
|
|
|
|
# Objects #
|
|
|
|
##
|
|
|
|
objects = element objects { (script | object)* }
|
|
|
|
script =
|
|
|
|
element script {
|
|
|
|
text &
|
|
|
|
attribute file { text }? &
|
|
|
|
attribute directory { text }?
|
|
|
|
}
|
|
|
|
object =
|
|
|
|
element object {
|
|
|
|
((object
|
|
|
|
| action
|
|
|
|
| \attribute
|
|
|
|
| def
|
|
|
|
| \include
|
|
|
|
| item
|
|
|
|
| repeat
|
|
|
|
| translatableAttribute)*
|
|
|
|
| text),
|
|
|
|
unique_settings,
|
|
|
|
base_settings,
|
|
|
|
ex_settings
|
|
|
|
}
|
|
|
|
action =
|
|
|
|
element action {
|
|
|
|
text,
|
|
|
|
attribute on { text },
|
|
|
|
attribute file { text }?
|
|
|
|
}
|
|
|
|
\attribute =
|
|
|
|
element attribute {
|
|
|
|
(keep | translate)*,
|
|
|
|
attribute id { text }
|
|
|
|
}
|
|
|
|
def =
|
|
|
|
element def {
|
|
|
|
translatableAttribute?,
|
|
|
|
(
|
|
|
|
attribute id { text }&
|
|
|
|
attribute color { ccolor }?&
|
|
|
|
attribute heading { text }?&
|
|
|
|
attribute width { text }?
|
|
|
|
)
|
|
|
|
}
|
|
|
|
\include =
|
|
|
|
element include {
|
|
|
|
attribute file { text }|
|
|
|
|
attribute directory { text }
|
|
|
|
}
|
|
|
|
item =
|
|
|
|
element item {
|
|
|
|
text,
|
|
|
|
attribute enabled { bool }?
|
|
|
|
}
|
|
|
|
keep = element keep { text }
|
|
|
|
repeat =
|
|
|
|
element repeat {
|
|
|
|
object+,
|
|
|
|
attribute count { text }
|
|
|
|
}
|
|
|
|
translate = element translate { text }
|
|
|
|
translatableAttribute =
|
|
|
|
element translatableAttribute {
|
|
|
|
text,
|
|
|
|
(
|
|
|
|
attribute id { text }&
|
|
|
|
attribute comment { text }?&
|
|
|
|
attribute context { text }?
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
##
|
|
|
|
# Styles #
|
|
|
|
##
|
|
|
|
styles = element styles { style* }
|
|
|
|
style =
|
|
|
|
element style {
|
|
|
|
attribute name { text },
|
|
|
|
base_settings,
|
|
|
|
ex_settings
|
|
|
|
}
|
|
|
|
|
|
|
|
##
|
|
|
|
# Setup #
|
|
|
|
##
|
|
|
|
setup = element setup { (icon | scrollbar | tooltip | color)* }
|
|
|
|
scrollbar =
|
|
|
|
element scrollbar {
|
|
|
|
attribute name { text }&
|
|
|
|
attribute width { xsd:decimal }&
|
|
|
|
attribute alwaysshown { bool }?&
|
|
|
|
attribute maximum_bar_size { xsd:decimal }?&
|
|
|
|
attribute minimum_bar_size { xsd:decimal }?&
|
|
|
|
attribute scroll_wheel { bool }?&
|
|
|
|
attribute show_edge_buttons { bool }?&
|
|
|
|
attribute sprite_button_top { text }?&
|
|
|
|
attribute sprite_button_top_pressed { text }?&
|
|
|
|
attribute sprite_button_top_disabled { text }?&
|
|
|
|
attribute sprite_button_top_over { text }?&
|
|
|
|
attribute sprite_button_bottom { text }?&
|
|
|
|
attribute sprite_button_bottom_pressed { text }?&
|
|
|
|
attribute sprite_button_bottom_disabled { text }?&
|
|
|
|
attribute sprite_button_bottom_over { text }?&
|
|
|
|
attribute sprite_bar_vertical { text }?&
|
|
|
|
attribute sprite_bar_vertical_over { text }?&
|
|
|
|
attribute sprite_bar_vertical_pressed { text }?&
|
|
|
|
attribute sprite_back_vertical { text }?
|
|
|
|
}
|
|
|
|
icon =
|
|
|
|
element icon {
|
|
|
|
attribute name { text }&
|
|
|
|
attribute size { size }&
|
|
|
|
attribute sprite { text }&
|
|
|
|
attribute cell_id { text }?
|
|
|
|
}
|
|
|
|
tooltip =
|
|
|
|
element tooltip {
|
|
|
|
attribute name { text }&
|
|
|
|
attribute sprite { text }?&
|
|
|
|
attribute anchor { valign }?&
|
|
|
|
attribute buffer_zone { xsd:decimal }?&
|
|
|
|
attribute font { text }?&
|
|
|
|
attribute maxwidth { xsd:decimal }?&
|
|
|
|
attribute offset { pos }?&
|
|
|
|
attribute textcolor { ccolor }?&
|
|
|
|
attribute delay { xsd:integer }?&
|
|
|
|
attribute use_object { text }?&
|
|
|
|
attribute hide_object { bool }?
|
|
|
|
}
|
|
|
|
color =
|
|
|
|
element color {
|
|
|
|
rgba,
|
|
|
|
attribute name { text }
|
|
|
|
}
|
|
|
|
|
|
|
|
##
|
|
|
|
# Sprites #
|
|
|
|
##
|
|
|
|
sprites = element sprites { sprite* }
|
|
|
|
sprite =
|
|
|
|
element sprite {
|
|
|
|
(effect?, image+),
|
|
|
|
attribute name { text }
|
|
|
|
}
|
|
|
|
image =
|
|
|
|
element image {
|
|
|
|
effect?,
|
|
|
|
(
|
|
|
|
attribute texture { text }?&
|
|
|
|
attribute size { clientarea }?&
|
|
|
|
attribute texture_size { clientarea }?&
|
|
|
|
attribute real_texture_placement { rect }?&
|
|
|
|
attribute cell_size { size }?&
|
|
|
|
attribute backcolor { ccolor }?&
|
|
|
|
attribute bordercolor { ccolor }?&
|
|
|
|
attribute border { bool }?&
|
|
|
|
attribute z_level { xsd:float }?&
|
|
|
|
attribute fixed_h_aspect_ratio { xsd:decimal }?&
|
|
|
|
attribute round_coordinates { bool }?&
|
|
|
|
attribute wrap_mode { wrapmode }?
|
|
|
|
)
|
|
|
|
}
|
|
|
|
effect =
|
|
|
|
element effect {
|
|
|
|
attribute add_color { ccolor }?,
|
|
|
|
attribute multiply_color { ccolor }?,
|
|
|
|
attribute grayscale { empty }?
|
|
|
|
}
|