You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@forrest.apache.org by ni...@apache.org on 2004/01/08 17:16:58 UTC
cvs commit: xml-forrest/src/core/context resources.xmap
nicolaken 2004/01/08 08:16:58
Modified: src/core/context resources.xmap
Added: src/core/context/skins/common/images corner-imports.svg.xslt
dc.svg.xslt rc.svg.xslt
Log:
Automatic generation of borders from skin colors and naming convention.
Rounded and straight 45 degrees corners supplied.
For example, to generate a 'r'ounded corner for 't'op 'l'eft the size
of '5' pixels of background 'header', foreground 'tab-selected' and
border of 'tab-unselected' I can just ask for:
/skin/images/rc-t-l-5-1header-2tab-selected-3-tab-unselected.png
Revision Changes Path
1.1 xml-forrest/src/core/context/skins/common/images/corner-imports.svg.xslt
Index: corner-imports.svg.xslt
===================================================================
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="orientation-tb"/>
<xsl:param name="orientation-lr"/>
<xsl:param name="size"/>
<xsl:param name="bg-color-name"/>
<xsl:param name="stroke-color-name"/>
<xsl:param name="fg-color-name"/>
<!-- if not all colors are present, don't even try to render the corners -->
<xsl:variable name="size"><xsl:choose>
<xsl:when test="$bg-color-name and $stroke-color-name and $fg-color-name"><xsl:value-of select="$size"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose></xsl:variable>
<xsl:variable name="smallersize" select="number($size)-1"/>
<xsl:variable name="biggersize" select="number($size)+1"/>
<xsl:variable name="bg"><xsl:if test="skinconfig/colors/color[@name=$bg-color-name]">fill:<xsl:value-of select="skinconfig/colors/color[@name=$bg-color-name]/@value"/>;</xsl:if></xsl:variable>
<xsl:variable name="fill"><xsl:if test="skinconfig/colors/color[@name=$stroke-color-name]">fill:<xsl:value-of select="skinconfig/colors/color[@name=$stroke-color-name]/@value"/>;</xsl:if></xsl:variable>
<xsl:variable name="stroke"><xsl:if test="skinconfig/colors/color[@name=$fg-color-name]">stroke:<xsl:value-of select="skinconfig/colors/color[@name=$fg-color-name]/@value"/>;</xsl:if></xsl:variable>
<xsl:template match="skinconfig">
<svg width="{$size}" height="{$size}">
<!-- background-->
<rect x="-1" y="-1" width="{$biggersize}" height="{$biggersize}" style="{$bg}stroke-width:0"/>
<!-- 0,0 0,-4 4,0 4,-4-->
<xsl:variable name="flip-tb-scale">
<xsl:choose>
<xsl:when test="$orientation-tb='t'">1</xsl:when>
<xsl:otherwise>-1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="flip-lr-scale">
<xsl:choose>
<xsl:when test="$orientation-lr='l'">1</xsl:when>
<xsl:otherwise>-1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="flip-tb-translate">
<xsl:choose>
<xsl:when test="$orientation-tb='t'">0</xsl:when>
<xsl:otherwise>-<xsl:value-of select="$size" /></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="flip-lr-translate">
<xsl:choose>
<xsl:when test="$orientation-lr='l'">0</xsl:when>
<xsl:otherwise>-<xsl:value-of select="$size" /></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- flip transform -->
<g transform="scale({$flip-lr-scale},{$flip-tb-scale}) translate({$flip-lr-translate}, {$flip-tb-translate})">
<xsl:call-template name = "figure" >
<xsl:with-param name="size"><xsl:value-of select="$size" /></xsl:with-param>
<xsl:with-param name="smallersize"><xsl:value-of select="$smallersize" /></xsl:with-param>
<xsl:with-param name="biggersize"><xsl:value-of select="$biggersize" /></xsl:with-param>
<xsl:with-param name="bg"><xsl:value-of select="$bg" /></xsl:with-param>
<xsl:with-param name="fill"><xsl:value-of select="$fill" /></xsl:with-param>
<xsl:with-param name="stroke"><xsl:value-of select="$stroke" /></xsl:with-param>
</xsl:call-template>
</g>
</svg>
</xsl:template>
<xsl:template name="figure">
<!-- Just change shape here -->
<g transform="translate(0.5 0.5)">
<ellipse cx="{$smallersize}" cy="{$smallersize}" rx="{$smallersize}" ry="{$smallersize}"
style="{$fill}{$stroke}stroke-width:1"/>
</g>
<!-- end -->
</xsl:template>
<xsl:template match="*"></xsl:template>
<xsl:template match="text()"></xsl:template>
</xsl:stylesheet>
1.1 xml-forrest/src/core/context/skins/common/images/dc.svg.xslt
Index: dc.svg.xslt
===================================================================
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href = "corner-imports.svg.xslt" />
<!-- Diagonal 45 degrees corner -->
<xsl:template name="figure">
<xsl:variable name="biggersize" select="number($size)+number($size)"/>
<g transform="translate(0 0.5)">
<polygon points="0,{$size} {$size},0 {$biggersize},0 {$biggersize},{$biggersize} 0,{$biggersize}"
style="{$fill}{$stroke}stroke-width:1"/>
</g>
</xsl:template>
</xsl:stylesheet>
1.1 xml-forrest/src/core/context/skins/common/images/rc.svg.xslt
Index: rc.svg.xslt
===================================================================
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href = "corner-imports.svg.xslt" />
<!-- Rounded corner -->
<xsl:template name="figure">
<g transform="translate(0.5 0.5)">
<ellipse cx="{$smallersize}" cy="{$smallersize}" rx="{$smallersize}" ry="{$smallersize}"
style="{$fill}{$stroke}stroke-width:1"/>
</g>
</xsl:template>
</xsl:stylesheet>
1.6 +136 -37 xml-forrest/src/core/context/resources.xmap
Index: resources.xmap
===================================================================
RCS file: /home/cvs/xml-forrest/src/core/context/resources.xmap,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- resources.xmap 30 Dec 2003 00:01:55 -0000 1.5
+++ resources.xmap 8 Jan 2004 16:16:58 -0000 1.6
@@ -32,74 +32,149 @@
<map:resources>
<map:resource name="skin-read">
<map:select type="exists">
- <map:when test="{project:skins-dir}{forrest:skin}/{path}">
- <map:read src="{project:skins-dir}{forrest:skin}/{path}" mime-type="{mime-type}" />
+ <!-- First location: project skin dir -->
+ <map:when test="{project:skins-dir}{forrest:skin}/{path}/{name}.{ext}">
+ <map:read src="{project:skins-dir}{forrest:skin}/{path}/{name}.{ext}" mime-type="{mime-type}" />
</map:when>
- <map:when test="{project:skins-dir}{forrest:skin}/{path}.xslt">
+ <map:when test="{project:skins-dir}{forrest:skin}/{path}/{name}.css.xslt">
<map:call resource="pipe-text-resource">
- <map:parameter name="path" value="{project:skins-dir}{forrest:skin}/{path}.xslt" />
+ <map:parameter name="path" value="{project:skins-dir}{forrest:skin}/{path}/{name}.css.xslt" />
<map:parameter name="mime-type" value="text/css" />
</map:call>
</map:when>
- <map:when test="{forrest:home}context/skins/{forrest:skin}/{path}">
- <map:read src="{forrest:home}context/skins/{forrest:skin}/{path}" mime-type="{mime-type}" />
+ <map:when test="{project:skins-dir}{forrest:skin}/{path}/{name}.svg.xslt">
+ <map:call resource="pipe-svg2png-resource">
+ <map:parameter name="path" value="{project:skins-dir}{forrest:skin}/{path}/{name}.svg.xslt" />
+ </map:call>
+ </map:when>
+
+ <!-- Second location: forrest skin dir -->
+ <map:when test="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.{ext}">
+ <map:read src="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.{ext}" mime-type="{mime-type}" />
</map:when>
- <map:when test="{forrest:home}context/skins/{forrest:skin}/{path}.xslt">
+ <map:when test="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.css.xslt">
<map:call resource="pipe-text-resource">
- <map:parameter name="path" value="{forrest:home}context/skins/{forrest:skin}/{path}.xslt" />
+ <map:parameter name="path" value="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.css.xslt" />
<map:parameter name="mime-type" value="text/css" />
</map:call>
</map:when>
- <map:when test="{forrest:home}context/skins/common/{path}">
- <map:read src="{forrest:home}context/skins/common/{path}" mime-type="{mime-type}" />
+ <map:when test="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.svg.xslt">
+ <map:call resource="pipe-svg2png-resource">
+ <map:parameter name="path" value="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.svg.xslt" />
+ </map:call>
</map:when>
- <map:otherwise>
+
+ <!-- Third location: forrest common skin dir -->
+ <map:when test="{forrest:home}context/skins/common/{path}/{name}.{ext}">
+ <map:read src="{forrest:home}context/skins/common/{path}/{name}.{ext}" mime-type="{mime-type}" />
+ </map:when>
+ <map:when test="{forrest:home}context/skins/common/{path}/{name}.css.xslt">
<map:call resource="pipe-text-resource">
- <map:parameter name="path" value="{forrest:home}context/skins/common/{path}.xslt" />
+ <map:parameter name="path" value="{forrest:home}context/skins/common/{path}/{name}.css.xslt" />
<map:parameter name="mime-type" value="text/css" />
</map:call>
+ </map:when>
+ <map:otherwise>
+ <map:call resource="pipe-svg2png-resource">
+ <map:parameter name="path" value="{forrest:home}context/skins/common/{path}/{name}.svg.xslt" />
+ </map:call>
+ </map:otherwise>
+ </map:select>
+ </map:resource>
+
+ <map:resource name="read-svg2png-corner-resource">
+ <map:select type="exists">
+ <map:when test="{project:skins-dir}{forrest:skin}/{path}/{name}.svg.xslt">
+ <map:call resource="pipe-svg2png-corner-resource">
+ <map:parameter name="path" value="{project:skins-dir}{forrest:skin}/{path}/{name}.svg.xslt" />
+ <map:parameter name="orientation-tb" value="{orientation-tb}"/>
+ <map:parameter name="orientation-lr" value="{orientation-lr}"/>
+ <map:parameter name="size" value="{size}"/>
+ <map:parameter name="bg-color-name" value="{bg-color-name}"/>
+ <map:parameter name="stroke-color-name" value="{stroke-color-name}"/>
+ <map:parameter name="fg-color-name" value="{fg-color-name}"/>
+ </map:call>
+ </map:when>
+ <map:when test="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.svg.xslt">
+ <map:call resource="pipe-svg2png-corner-resource">
+ <map:parameter name="path" value="{forrest:home}context/skins/{forrest:skin}/{path}/{name}.svg.xslt" />
+ <map:parameter name="orientation-tb" value="{orientation-tb}"/>
+ <map:parameter name="orientation-lr" value="{orientation-lr}"/>
+ <map:parameter name="size" value="{size}"/>
+ <map:parameter name="bg-color-name" value="{bg-color-name}"/>
+ <map:parameter name="stroke-color-name" value="{stroke-color-name}"/>
+ <map:parameter name="fg-color-name" value="{fg-color-name}"/>
+ </map:call>
+ </map:when>
+ <map:otherwise>
+ <map:call resource="pipe-svg2png-corner-resource">
+ <map:parameter name="path" value="{forrest:home}context/skins/common/{path}/{name}.svg.xslt" />
+ <map:parameter name="orientation-tb" value="{orientation-tb}"/>
+ <map:parameter name="orientation-lr" value="{orientation-lr}"/>
+ <map:parameter name="size" value="{size}"/>
+ <map:parameter name="bg-color-name" value="{bg-color-name}"/>
+ <map:parameter name="stroke-color-name" value="{stroke-color-name}"/>
+ <map:parameter name="fg-color-name" value="{fg-color-name}"/>
+ </map:call>
</map:otherwise>
</map:select>
</map:resource>
<map:resource name="pipe-text-resource">
- <map:call resource="generate-xslt-resource">
+ <map:call resource="generate-resource">
<map:parameter name="path" value="{path}" />
</map:call>
<map:serialize type="text" mime-type="{mime-type}"/>
</map:resource>
-
- <map:resource name="generate-xslt-resource">
+
+ <map:resource name="pipe-svg2png-resource">
+ <map:call resource="generate-resource">
+ <map:parameter name="path" value="{path}" />
+ </map:call>
+ <map:call resource="transform-project2text"/>
+ <map:serialize type="svg2png" />
+ </map:resource>
+
+ <map:resource name="pipe-svg2png-corner-resource">
<map:generate src="{project:skinconf}" />
- <map:transform src="{path}"/>
+ <map:transform src="{path}">
+ <map:parameter name="orientation-tb"
+ value="{orientation-tb}"/>
+ <map:parameter name="orientation-lr"
+ value="{orientation-lr}"/>
+ <map:parameter name="size"
+ value="{size}"/>
+ <map:parameter name="bg-color-name"
+ value="{bg-color-name}"/>
+ <map:parameter name="stroke-color-name"
+ value="{stroke-color-name}"/>
+ <map:parameter name="fg-color-name"
+ value="{fg-color-name}"/>
+ </map:transform>
+ <map:call resource="transform-project2text"/>
+ <map:serialize type="svg2png" />
</map:resource>
- <map:resource name="generate-xml-resource">
+ <map:resource name="generate-resource">
<map:generate src="{project:skinconf}" />
<map:transform src="{path}"/>
</map:resource>
-
+
<map:resource name="transform-project2text">
<map:transform src="{forrest:stylesheets}/project2text.xsl">
<map:parameter name="config-file" value="{project:skinconf}"/>
</map:transform>
</map:resource>
-
- <map:resource name="pipe-svg2png-resource">
- <map:call resource="generate-xml-resource">
- <map:parameter name="path" value="{path}" />
- </map:call>
- <map:call resource="transform-project2text"/>
- <map:serialize type="svg2png" />
- </map:resource>
-
+
</map:resources>
<map:pipelines>
<map:pipeline>
<map:match pattern="**skin/**.js">
<map:call resource="skin-read">
- <map:parameter name="path" value="scripts/{2}.js" />
+ <map:parameter name="path" value="scripts" />
+ <map:parameter name="name" value="{2}" />
+ <map:parameter name="ext" value="js" />
<map:parameter name="mime-type" value="application/x-javascript" />
</map:call>
</map:match>
@@ -111,7 +186,9 @@
<map:match pattern="**skin/**.css">
<map:call resource="skin-read">
- <map:parameter name="path" value="css/{2}.css" />
+ <map:parameter name="path" value="css" />
+ <map:parameter name="name" value="{2}" />
+ <map:parameter name="ext" value="css" />
<map:parameter name="mime-type" value="text/css" />
</map:call>
</map:match>
@@ -121,10 +198,26 @@
<map:read src="resources/css/{1}.css" mime-type="text/css" />
</map:match>
- <map:match pattern="skin/images/**.*">
+ <!-- special case cormer generator pipeline -->
+ <map:match pattern="skin/images**/*c-*-*-*-1*-2*-3*.png">
+ <map:call resource="read-svg2png-corner-resource">
+ <map:parameter name="path" value="images/{1}" />
+ <map:parameter name="name" value="{2}c" />
+ <map:parameter name="orientation-tb" value="{3}"/>
+ <map:parameter name="orientation-lr" value="{4}"/>
+ <map:parameter name="size" value="{5}"/>
+ <map:parameter name="bg-color-name" value="{6}"/>
+ <map:parameter name="stroke-color-name" value="{7}"/>
+ <map:parameter name="fg-color-name" value="{8}"/>
+ </map:call>
+ </map:match>
+
+ <map:match pattern="skin/images**/*.*">
<map:call resource="skin-read">
- <map:parameter name="path" value="images/{1}.{2}" />
- <map:parameter name="mime-type" value="image/{2}" />
+ <map:parameter name="path" value="images/{1}" />
+ <map:parameter name="name" value="{2}" />
+ <map:parameter name="ext" value="{3}" />
+ <map:parameter name="mime-type" value="image/{3}" />
</map:call>
</map:match>
@@ -163,7 +256,9 @@
<!-- needed for compatibility for the standard resources/images that are now
in the common skin -->
<map:call resource="skin-read">
- <map:parameter name="path" value="images/{1}.png" />
+ <map:parameter name="path" value="images" />
+ <map:parameter name="name" value="{1}" />
+ <map:parameter name="ext" value="png" />
<map:parameter name="mime-type" value="image/png" />
</map:call>
</map:otherwise>
@@ -185,7 +280,9 @@
<!-- needed for compatibility for the standard resources/images that are now
in the common skin -->
<map:call resource="skin-read">
- <map:parameter name="path" value="images/{1}.{2}" />
+ <map:parameter name="path" value="images" />
+ <map:parameter name="name" value="{1}" />
+ <map:parameter name="ext" value="{2}" />
<map:parameter name="mime-type" value="image/{2}" />
</map:call>
</map:otherwise>
@@ -224,9 +321,11 @@
</map:select>
</map:match>
- <map:match pattern="**favicon.ico">
+ <map:match pattern="**/*.ico">
<map:call resource="skin-read">
- <map:parameter name="path" value="images/favicon.ico" />
+ <map:parameter name="path" value="images/{1}" />
+ <map:parameter name="name" value="{2}" />
+ <map:parameter name="ext" value="ico" />
<map:parameter name="mime-type" value="image/x-icon" />
</map:call>
</map:match>