Blame xsl/color.xsl

Packit Service 76cb02
Packit Service 76cb02
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
    XSLT Stylesheet DocBook -> LaTeX 
Packit Service 76cb02
    ############################################################################ -->
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
<xsl:template name="hex-to-int">
Packit Service 76cb02
  <xsl:param name="hex" select="'0'"/>
Packit Service 76cb02
Packit Service 76cb02
  <xsl:choose>
Packit Service 76cb02
  <xsl:when test="string-length($hex)=1">
Packit Service 76cb02
    <xsl:call-template name="char-to-int">
Packit Service 76cb02
      <xsl:with-param name="char" select="$hex"/>
Packit Service 76cb02
    </xsl:call-template>
Packit Service 76cb02
  </xsl:when>
Packit Service 76cb02
  <xsl:otherwise>
Packit Service 76cb02
    <xsl:variable name="low.int">
Packit Service 76cb02
      <xsl:call-template name="char-to-int">
Packit Service 76cb02
        
Packit Service 76cb02
                        select="substring($hex, string-length($hex))"/>
Packit Service 76cb02
      </xsl:call-template>
Packit Service 76cb02
    </xsl:variable>
Packit Service 76cb02
    <xsl:variable name="high.int">
Packit Service 76cb02
      <xsl:call-template name="hex-to-int">
Packit Service 76cb02
        
Packit Service 76cb02
                        select="substring($hex, 1, string-length($hex)-1)"/>
Packit Service 76cb02
      </xsl:call-template>
Packit Service 76cb02
    </xsl:variable>
Packit Service 76cb02
    <xsl:value-of select="$low.int + 16*$high.int"/>
Packit Service 76cb02
  </xsl:otherwise>
Packit Service 76cb02
  </xsl:choose>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
<xsl:template name="char-to-int">
Packit Service 76cb02
  <xsl:param name="char" select="'0'"/>
Packit Service 76cb02
  <xsl:variable name="c">
Packit Service 76cb02
    <xsl:value-of select="translate($char, 'abcdef', 'ABCDEF')"/>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
Packit Service 76cb02
  
Packit Service 76cb02
                                      $c))"/>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
<xsl:template name="hex-to-rgb">
Packit Service 76cb02
  <xsl:param name="hex" select="'0'"/>
Packit Service 76cb02
  <xsl:choose>
Packit Service 76cb02
  <xsl:when test="string-length($hex) <= 2">
Packit Service 76cb02
    <xsl:call-template name="hex-to-rate">
Packit Service 76cb02
      <xsl:with-param name="hex" select="$hex"/>
Packit Service 76cb02
    </xsl:call-template>
Packit Service 76cb02
  </xsl:when>
Packit Service 76cb02
  <xsl:otherwise>
Packit Service 76cb02
    <xsl:variable name="right">
Packit Service 76cb02
      <xsl:call-template name="hex-to-rate">
Packit Service 76cb02
        
Packit Service 76cb02
                        select="substring($hex, string-length($hex)-1)"/>
Packit Service 76cb02
      </xsl:call-template>
Packit Service 76cb02
    </xsl:variable>
Packit Service 76cb02
    <xsl:variable name="left">
Packit Service 76cb02
      <xsl:call-template name="hex-to-rgb">
Packit Service 76cb02
        
Packit Service 76cb02
                        select="substring($hex, 1, string-length($hex)-2)"/>
Packit Service 76cb02
      </xsl:call-template>
Packit Service 76cb02
    </xsl:variable>
Packit Service 76cb02
    <xsl:value-of select="$left"/>
Packit Service 76cb02
    <xsl:text>,</xsl:text>
Packit Service 76cb02
    <xsl:value-of select="$right"/>
Packit Service 76cb02
  </xsl:otherwise>
Packit Service 76cb02
  </xsl:choose>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
<xsl:template name="hex-to-rate">
Packit Service 76cb02
  <xsl:param name="hex" select="'0'"/>
Packit Service 76cb02
  <xsl:variable name="int">
Packit Service 76cb02
    <xsl:call-template name="hex-to-int">
Packit Service 76cb02
      <xsl:with-param name="hex" select="$hex"/>
Packit Service 76cb02
    </xsl:call-template>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <xsl:value-of select="round(($int * 100) div 255) div 100"/>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
     #xxyyzz   => [rgb]{u,v,w}
Packit Service 76cb02
     #xaxaxa   => [gray]{u}
Packit Service 76cb02
     xxx       => {xxx}
Packit Service 76cb02
     {xxx}     => {xxx}
Packit Service 76cb02
     [aa]{xxx} => [aa]{xxx}
Packit Service 76cb02
-->
Packit Service 76cb02
<xsl:template name="get-color">
Packit Service 76cb02
  <xsl:param name="color"/>
Packit Service 76cb02
  <xsl:choose>
Packit Service 76cb02
  <xsl:when test="starts-with($color, '#')">
Packit Service 76cb02
    
Packit Service 76cb02
                  select="concat('000000', substring-after($color, '#'))"/>
Packit Service 76cb02
    
Packit Service 76cb02
                  select="substring($fullcolor, string-length($fullcolor)-5)"/>
Packit Service 76cb02
    <xsl:variable name="r" select="substring($rcolor,1,2)"/>
Packit Service 76cb02
    <xsl:variable name="g" select="substring($rcolor,3,2)"/>
Packit Service 76cb02
    <xsl:variable name="b" select="substring($rcolor,5,2)"/>
Packit Service 76cb02
    <xsl:choose>
Packit Service 76cb02
    <xsl:when test="$r=$g and $g=$b">
Packit Service 76cb02
      <xsl:text>[gray]{</xsl:text>
Packit Service 76cb02
      <xsl:call-template name="hex-to-rate">
Packit Service 76cb02
        <xsl:with-param name="hex" select="$r"/>
Packit Service 76cb02
      </xsl:call-template>
Packit Service 76cb02
      <xsl:text>}</xsl:text>
Packit Service 76cb02
    </xsl:when>
Packit Service 76cb02
    <xsl:otherwise>
Packit Service 76cb02
      <xsl:text>[rgb]{</xsl:text>
Packit Service 76cb02
      <xsl:call-template name="hex-to-rgb">
Packit Service 76cb02
        <xsl:with-param name="hex" select="$rcolor"/>
Packit Service 76cb02
      </xsl:call-template>
Packit Service 76cb02
      <xsl:text>}</xsl:text>
Packit Service 76cb02
    </xsl:otherwise>
Packit Service 76cb02
    </xsl:choose>
Packit Service 76cb02
  </xsl:when>
Packit Service 76cb02
  <xsl:when test="starts-with($color, '[') or starts-with($color, '{')">
Packit Service 76cb02
    <xsl:value-of select="$color"/>
Packit Service 76cb02
  </xsl:when>
Packit Service 76cb02
  <xsl:otherwise>
Packit Service 76cb02
    <xsl:text>{</xsl:text>
Packit Service 76cb02
    <xsl:value-of select="$color"/>
Packit Service 76cb02
    <xsl:text>}</xsl:text>
Packit Service 76cb02
  </xsl:otherwise>
Packit Service 76cb02
  </xsl:choose>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
     <u>
Packit Service 76cb02
       <rgb>CCFFEE</rgb>
Packit Service 76cb02
       <rgb>DD7E67</rgb>
Packit Service 76cb02
       <rgb>7A33</rgb>
Packit Service 76cb02
       <color>#d5</color>
Packit Service 76cb02
       <color>#7A33</color>
Packit Service 76cb02
       <color>#3a7a33</color>
Packit Service 76cb02
       <color>#3a3a3a</color>
Packit Service 76cb02
       <color>#cccccc</color>
Packit Service 76cb02
       <color>red</color>
Packit Service 76cb02
       <color>{blue}</color>
Packit Service 76cb02
       <color>[gray]{0.8}</color>
Packit Service 76cb02
     </u>
Packit Service 76cb02
-->
Packit Service 76cb02
<xsl:template match="rgb">
Packit Service 76cb02
  <xsl:call-template name="hex-to-rgb">
Packit Service 76cb02
    <xsl:with-param name="hex" select="."/>
Packit Service 76cb02
  </xsl:call-template>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
<xsl:template match="color">
Packit Service 76cb02
  <xsl:call-template name="get-color">
Packit Service 76cb02
    <xsl:with-param name="color" select="."/>
Packit Service 76cb02
  </xsl:call-template>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
</xsl:stylesheet>