diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2012-02-20 15:52:39 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-02-23 15:53:15 +1000 |
commit | 07a802df5f6cee7e045815db5faf4e2998fec8bd (patch) | |
tree | ad7c1de4bd2cc540bf6680492759908e07ab8979 | |
parent | 8b8f510923674ea9152f556640dc590a22aabb81 (diff) |
Includes rudimentary styling only.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | protocol/Makefile.am | 7 | ||||
-rw-r--r-- | protocol/protocol.xsl | 204 | ||||
-rw-r--r-- | protocol/wayland.css | 41 |
5 files changed, 258 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am index 4461e48..016bb76 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = src +SUBDIRS = src protocol ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} diff --git a/configure.ac b/configure.ac index a1c9d2a..fc623e8 100644 --- a/configure.ac +++ b/configure.ac @@ -48,9 +48,13 @@ if test "x$enable_scanner" = "xyes"; then AC_SUBST(EXPAT_LIBS) fi +AC_PATH_PROG(XSLTPROC, xsltproc) +AM_CONDITIONAL([HAVE_XSLTPROC], [test $XSLTPROC != ""]) + AC_CONFIG_FILES([Makefile wayland-scanner.m4 src/Makefile src/wayland-server.pc - src/wayland-client.pc]) + src/wayland-client.pc + protocol/Makefile]) AC_OUTPUT diff --git a/protocol/Makefile.am b/protocol/Makefile.am new file mode 100644 index 0000000..9b57441 --- /dev/null +++ b/protocol/Makefile.am @@ -0,0 +1,7 @@ +if HAVE_XSLTPROC +doc_DATA = wayland.html wayland.css + +wayland.html: wayland.xml protocol.xsl + $(AM_V_GEN)$(XSLTPROC) protocol.xsl wayland.xml > $@ + +endif diff --git a/protocol/protocol.xsl b/protocol/protocol.xsl new file mode 100644 index 0000000..b2867f0 --- /dev/null +++ b/protocol/protocol.xsl @@ -0,0 +1,204 @@ +<?xml version="1.0" ?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:output method="html" indent="yes" encoding="UTF-8"/> +<xsl:preserve-space elements="copyright"/> +<xsl:template match="/"> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> + <link href="wayland.css" rel="stylesheet" type="text/css" /> + <title>Wayland</title> + </head> + <body> + <h1><img src="wayland.png" alt="Wayland logo" /></h1> + <h1>Wayland Protocol Specification</h1> + + <!-- Copyright blurb --> + <xsl:apply-templates select="protocol/copyright"/> + + <!-- TOC --> + <xsl:apply-templates select="protocol" mode="toc" /> + + <!-- Interface descriptions --> + <xsl:apply-templates select="protocol/interface" mode="interface_description" /> + + </body> +</html> +</xsl:template> + +<!-- Copyright blurb --> +<xsl:template match="copyright"> + <div> + <pre class="copyright"> + <xsl:value-of select="." disable-output-escaping="yes"/> + </pre> + </div> +</xsl:template> + +<!-- TOC --> +<xsl:template match="protocol" mode="toc"> + <div class="toc"> + <h2>Table of Contents</h2> + <ul> + <xsl:apply-templates select="interface" mode="toc" /> + </ul> + </div> +</xsl:template> + +<!-- interface in TOC --> +<xsl:template match="interface" mode="toc"> + <li> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'href'" /> + </xsl:call-template> + + <!-- request list --> + <xsl:if test="request"> + <div> + Requests: + <ul> + <xsl:apply-templates select="request" mode="toc"/> + </ul> + </div> + </xsl:if> + + <!-- event list --> + <xsl:if test="event"> + <div> + Events: + <ul> + <xsl:apply-templates select="event" mode="toc"/> + </ul> + </div> + </xsl:if> + + <!-- enum list --> + <xsl:if test="enum"> + <div> + Enums: + <ul> + <xsl:apply-templates select="enum" mode="toc"/> + </ul> + </div> + </xsl:if> + </li> +</xsl:template> + +<!-- + Template to create a <a> tag in the form + #<interfacename>-<request|event>-<request/event name> + the '#' prefix is added if $which is 'href' + $which decides which attribute name (href or name) of <a> to set +--> +<xsl:template name="link" > + <xsl:param name="which" /> + <a> + <xsl:attribute name="{$which}"> + <xsl:if test="$which = 'href'">#</xsl:if> + <xsl:value-of select="../@name"/> + <xsl:text>-</xsl:text> <!-- xsl:text needed to avoid whitespace --> + <xsl:value-of select="name()"/> + <xsl:text>-</xsl:text> <!-- xsl:text needed to avoid whitespace --> + <xsl:value-of select="@name"/></xsl:attribute> + <!-- only display link text for href links --> + <xsl:if test="$which = 'href'"> + <span class="mono"><xsl:value-of select="@name"/></span> + <xsl:if test="description/@summary"> - <xsl:value-of select="description/@summary"/></xsl:if> + </xsl:if> + </a> +</xsl:template> + +<!-- requests and events in TOC --> +<xsl:template match="request|event|enum" mode="toc"> + <li> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'href'" /> + </xsl:call-template> + </li> +</xsl:template> + +<!-- Interface descriptions --> +<xsl:template match="protocol/interface" mode="interface_description"> + <div class="interface"> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'name'" /> + </xsl:call-template> + <h1> + <span class="mono"><xsl:value-of select="@name" /></span> + <!-- only show summary if it exists --> + <xsl:if test="description/@summary"> + - <xsl:value-of select="description/@summary" /> + </xsl:if> + </h1> + <p class="version">Version: <xsl:value-of select="@version" /></p> + <p><xsl:value-of select="description"/></p> + <xsl:if test="request"> + <div class="requests"> + <h2>Requests</h2> + <!-- Request list --> + <xsl:apply-templates select="request" mode="interface_description" /> + </div> + </xsl:if> + + <xsl:if test="event"> + <div class="events"> + <h2>Events</h2> + <!-- Event list --> + <xsl:apply-templates select="event" mode="interface_description" /> + </div> + </xsl:if> + + <xsl:if test="enum"> + <div class="enums"> + <h2>Enums</h2> + <!-- enum list --> + <xsl:apply-templates select="enum" mode="interface_description"/> + </div> + </xsl:if> + </div> +</xsl:template> + +<!-- table contents for request/event arguments or enum values --> +<xsl:template match="arg|entry"> + <tr> + <td class="arg_name"><xsl:value-of select="@name"/></td> + <xsl:if test="name() = 'arg'" > + <td class="arg_type"><xsl:value-of select="@type"/></td> + </xsl:if> + <xsl:if test="name() = 'entry'" > + <td class="arg_value"><xsl:value-of select="@value"/></td> + </xsl:if> + <td class="arg_desc"><xsl:value-of select="@summary"/></td> + </tr> +</xsl:template> + +<!-- Request/event list --> +<xsl:template match="request|event|enum" mode="interface_description"> + <div> + <xsl:call-template name="link"> + <xsl:with-param name="which" select="'name'" /> + </xsl:call-template> + <h3> + <span class="mono"><xsl:value-of select="../@name"/>::<xsl:value-of select="@name" /></span> + <xsl:if test="description/@summary"> + - <xsl:value-of select="description/@summary" /> + </xsl:if> + </h3> + <p><xsl:value-of select="description"/></p> + <xsl:if test="arg"> + Arguments: + <table> + <xsl:apply-templates select="arg"/> + </table> + </xsl:if> + <xsl:if test="entry"> + Values: + <table> + <xsl:apply-templates select="entry"/> + </table> + </xsl:if> + </div> +</xsl:template> +</xsl:stylesheet> + +<!-- vim: set expandtab shiftwidth=2: --> diff --git a/protocol/wayland.css b/protocol/wayland.css new file mode 100644 index 0000000..91f458a --- /dev/null +++ b/protocol/wayland.css @@ -0,0 +1,41 @@ +body { padding: 0px 150px; } +h1 { margin: 40px 0px; color: #aaa; } +p { margin: 20px 0px; } +h1 img { vertical-align: middle; border-width: 0px; } +h2 { font-family: sans; color: #888; } +h3 { font-family: sans; color: #888; font-style: italic; } +a { color: #444; } +a:hover { color: #888; } +a:visited { color: #666; } +li { margin: 10px 0px }; +table { border: 1px solid gray;} + +.version { font-size: small } +div.interface { padding: 2% } + +div.requests div:nth-child(even) { background-color: #eeeeee; } +div.requests div { margin-left: 2%; padding-left: 2%; } +div.requests table { border: 0px; margin: 10px; } +div.requests table th { padding: 5px } +div.requests table td { padding: 5px } + +div.events div:nth-child(even) { background-color: #eeeeee; } +div.events div { margin-left: 2%; padding-left: 2%; } +div.events table { border: 0px; margin: 10px; } +div.events table th { padding: 5px } +div.events table td { padding: 5px } + +div.enums div:nth-child(even) { background-color: #eeeeee; } +div.enums div { margin-left: 2%; padding-left: 2%; } +div.enums table { border: 0px; margin: 10px; } +div.enums table th { padding: 5px } +div.enums table td { padding: 5px } + +.arg_name { font-family: monospace; padding:5px} +.arg_type { font-family: monospace; color: #338833; padding:5px } +.arg_value { font-family: monospace; color: #338833; padding:5px } +.arg_desc { font-style: italic;padding:5px; } +.mono { font-family: monospace; font-weight: bold; } + +div.toc span { font-size: 11pt; line-height: 150%; } +div.toc li li { line-height: 100%; margin: 0%; } |