<!--
 DTD for Metacity themes, as of Metacity 2.4.1
 Author: Ross Burton <ross@burtonini.com>
 Copyright (C) 2002 Ross Burton
 Licensed under the GPL, version 2
-->

<!-- Top-level element -->
<!ELEMENT metacity_theme (info,(window|frame_style_set|frame_style|frame_geometry|constant|draw_ops|menu_icon)+)>

<!-- Theme metadata -->
<!ELEMENT info (name?|author?|copyright?|date?|description?)*>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT description (#PCDATA)>

<!ENTITY % xyrequired "
	x			CDATA #REQUIRED
	y			CDATA #REQUIRED
">

<!ENTITY % xyimplied "
	x			CDATA #IMPLIED
	y			CDATA #IMPLIED
">

<!ENTITY % widthheightrequired "
	width		CDATA #REQUIRED
	height		CDATA #REQUIRED
">

<!ENTITY % widthheightimplied "
	width		CDATA #IMPLIED
	height		CDATA #IMPLIED
">

<!ENTITY % boolean "(true|false)">

<!ENTITY % piece_positions "
(entire_background|titlebar|titlebar_middle|left_titlebar_edge|right_titlebar_edge|top_titlebar_edge|bottom_titlebar_edge|title|left_edge|right_edge|bottom_edge|overlay)
">

<!ENTITY % gtk-state "
	state (normal|prelight|active|selected|insensitive) #REQUIRED
">

<!ENTITY % gtk-shadow "
	shadow (none|in|out|etched_in|etched_out) #REQUIRED
">


<!-- The actual theme -->

<!ELEMENT window EMPTY>
<!ATTLIST window
	type		(normal|dialog|modal_dialog|menu|utility|border) #REQUIRED
	style_set		CDATA #REQUIRED
>


<!ELEMENT frame_style_set (frame+)>
<!ATTLIST frame_style_set
	name		CDATA #REQUIRED
	parent		CDATA #IMPLIED
>

<!ELEMENT frame EMPTY>
<!ATTLIST frame
	focus		(yes|no) #REQUIRED
	state		(normal|maximized|shaded|maximized_and_shaded) #REQUIRED
	resize		(both|horizontal|vertical|none) #IMPLIED
	style		CDATA #REQUIRED
>

<!ELEMENT frame_style (piece|button)*>
<!ATTLIST frame_style
	name		CDATA #REQUIRED
	geometry		CDATA #REQUIRED
	parent		CDATA #IMPLIED
>

<!ELEMENT piece (draw_ops?)>
<!ATTLIST piece
	position		%piece_positions; #REQUIRED
	draw_ops		CDATA #IMPLIED
>

<!ELEMENT button (draw_ops?)>
<!ATTLIST button
	function		(menu|minimize|maximize|close|left_left_background|left_middle_background|left_right_background|right_left_background|right_middle_background|right_right_background) #REQUIRED
	state		(normal|prelight|pressed) #REQUIRED
	draw_ops		CDATA #IMPLIED
>

<!ELEMENT frame_geometry (border|(aspect_ratio|distance))+>
<!ATTLIST frame_geometry
	name		CDATA #REQUIRED
	parent		CDATA #IMPLIED
	title_scale		(xx-small|x-small|small|medium|large|x-large|xx-large) #IMPLIED
	has_title		(true|false) 'true'
	rounded_top_left		%boolean; #IMPLIED
	rounded_top_right		%boolean; #IMPLIED
	rounded_bottom_left	%boolean; #IMPLIED
	rounded_bottom_right	%boolean; #IMPLIED
>

<!ELEMENT distance EMPTY>
<!ATTLIST distance
	name		(left_width|right_width|bottom_height|title_vertical_pad|right_titlebar_edge|left_titlebar_edge|button_width|button_height) #REQUIRED
	value		CDATA #REQUIRED
>

<!ELEMENT border EMPTY>
<!ATTLIST border
	name		CDATA #REQUIRED
	top		CDATA #REQUIRED
	bottom		CDATA #REQUIRED
	left		CDATA #REQUIRED
	right		CDATA #REQUIRED
>

<!ELEMENT aspect_ratio EMPTY>
<!ATTLIST aspect_ratio
	name		CDATA #REQUIRED
	value		CDATA #REQUIRED
>

<!ELEMENT draw_ops (line|rectangle|arc|tint|gradient|image|gtk_arrow|gtk_box|gtk_vline|icon|title|clip|include|tile)*>
<!-- not sure about this.. maybe it should be removed. see #3478 in theme-parser.c -->
<!ATTLIST draw_ops
	name		CDATA #IMPLIED
>

<!ELEMENT line EMPTY>
<!ATTLIST line
	color			CDATA #REQUIRED
	x1			CDATA #REQUIRED
	y1			CDATA #REQUIRED
	x2			CDATA #REQUIRED
	y2			CDATA #REQUIRED
	width		CDATA #IMPLIED
	dash_on_length CDATA #IMPLIED
	dash_off_length CDATA #IMPLIED
>

<!ELEMENT rectangle EMPTY>
<!ATTLIST rectangle
	color			CDATA #REQUIRED
	%xyrequired;
	%widthheightrequired;
	filled			%boolean; 'false'
>

<!ELEMENT arc EMPTY>
<!ATTLIST arc
	color			CDATA #REQUIRED
	%xyrequired;
	%widthheightrequired;
	start_angle	CDATA	#REQUIRED
	extent_angle	CDATA	#REQUIRED
	filled			%boolean; 'false'
>

<!ELEMENT icon EMPTY>
<!ATTLIST icon
	%xyrequired;
	width		CDATA #REQUIRED
	height		CDATA #REQUIRED
	alpha		CDATA #IMPLIED
	fill_type		(tile|scale) 'scale'
>

<!ELEMENT image EMPTY>
<!ATTLIST image
	filename		CDATA #REQUIRED
	colorize		CDATA #IMPLIED
	%xyrequired;
	%widthheightrequired;
	alpha		CDATA #IMPLIED
	fill_type		(tile|scale) 'scale'
>

<!ELEMENT tile EMPTY>
<!ATTLIST tile
	name		CDATA #REQUIRED
	%xyrequired;
	%widthheightrequired;
	tile_xoffset	CDATA #IMPLIED
	tile_yoffset	CDATA #IMPLIED
	tile_width		CDATA #REQUIRED
	tile_height	CDATA #REQUIRED
>

<!ELEMENT clip EMPTY>
<!ATTLIST clip
	%xyrequired;
	%widthheightrequired;
>

<!ELEMENT title EMPTY>
<!ATTLIST title
	color			CDATA #REQUIRED
	%xyrequired;
>

<!ELEMENT tint EMPTY>
<!ATTLIST tint
	color			CDATA #REQUIRED
	%xyrequired;
	%widthheightrequired;
	alpha		CDATA #REQUIRED
>

<!ELEMENT gtk_box EMPTY>
<!ATTLIST gtk_box
	%gtk-state;
	%gtk-shadow;
	%xyrequired;
	%widthheightrequired;
>

<!ELEMENT gtk_arrow EMPTY>
<!ATTLIST gtk_arrow
	%gtk-state;
	%gtk-shadow;
	arrow		(up|down|left|right) #REQUIRED
	%xyrequired;
	%widthheightrequired;
	filed			CDATA #IMPLIED
>

<!ELEMENT gtk_vline EMPTY>
<!ATTLIST gtk_vline
	%gtk-state;
	x			CDATA #REQUIRED
	y1			CDATA #REQUIRED
	y2			CDATA #REQUIRED
>

<!ELEMENT gradient (color)+>
<!ATTLIST gradient
	type		(vertical|horizontal|diagonal) #REQUIRED
	%xyrequired;
	%widthheightrequired;
	alpha		CDATA #IMPLIED
>

<!ELEMENT color EMPTY>
<!ATTLIST color
	value		CDATA #REQUIRED
>

<!ELEMENT include EMPTY>
<!ATTLIST include
	name		CDATA #REQUIRED
	%xyimplied;
	%widthheightimplied;
>

<!ELEMENT constant EMPTY>
<!ATTLIST constant
	name		CDATA #REQUIRED
	value		CDATA #REQUIRED
>

<!ELEMENT menu_icon (draw_ops?)>
<!ATTLIST menu_icon
	function		(close|maximize|minimize|unmaximize) #REQUIRED
	%gtk-state;
	draw_ops		CDATA #IMPLIED
>
