forrest-svn mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jerem...@apache.org
Subject svn commit: r652463 - /forrest/trunk/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/helper-commonElements.xsl
Date Thu, 01 May 2008 09:47:35 GMT
Author: jeremias
Date: Thu May  1 02:47:35 2008
New Revision: 652463

URL: http://svn.apache.org/viewvc?rev=652463&view=rev
Log:
Further image handling fixes for PDF output:
- Added support for "icon" element (implemented as an inline image, defaulting to the image's
intrinsic size)
- Normalized relative URIs as "cocoon://something/../images/myimage.png" didn't work but ""cocoon://images/myimage.png"
does. Happened on FOP's website on the per-release changes page which is in a subdirectory.

Modified:
    forrest/trunk/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/helper-commonElements.xsl

Modified: forrest/trunk/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/helper-commonElements.xsl
URL: http://svn.apache.org/viewvc/forrest/trunk/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/helper-commonElements.xsl?rev=652463&r1=652462&r2=652463&view=diff
==============================================================================
--- forrest/trunk/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/helper-commonElements.xsl
(original)
+++ forrest/trunk/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets/helper-commonElements.xsl
Thu May  1 02:47:35 2008
@@ -17,6 +17,9 @@
 -->
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
+
+  <xsl:include href="lm://transform.xml.pathutils"/>
+
   <xsl:template match="anchor">
     <fo:block>
       <xsl:copy-of select="@id"/>
@@ -347,45 +350,74 @@
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>
+  
+  <xsl:template name="imgpath">
+    <xsl:choose>
+      <!-- already absolute -->
+      <xsl:when
+        test="contains(string(@src),':')">
+        <xsl:value-of select="@src"/>
+      </xsl:when>
+      <!-- absolute to servlet context -->
+      <xsl:when test="starts-with(string(@src),'/')">
+        <xsl:value-of
+          select="concat('cocoon:/',@src)"/>
+      </xsl:when>
+      <!-- relative to document -->
+      <xsl:otherwise>
+        <xsl:call-template name="normalize">
+          <xsl:with-param name="path">
+            <xsl:value-of select="concat('cocoon://',$path,@src)"/>
+          </xsl:with-param>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  <xsl:template name="img-explicit-size">
+    <xsl:if test="@height">
+      <xsl:attribute name="height">
+        <xsl:value-of select="@height"/>
+      </xsl:attribute>
+      <xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
+    </xsl:if>
+    <xsl:if test="@width">
+      <xsl:attribute name="width">
+        <xsl:value-of select="@width"/>
+      </xsl:attribute>
+      <xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
+    </xsl:if>
+  </xsl:template>
+  <xsl:template match="icon">
+    <!-- Make relative paths absolute -->
+    <xsl:variable name="imgpath">
+      <xsl:call-template name="imgpath"/>
+    </xsl:variable>
+    <fo:external-graphic src="{$imgpath}">
+      <xsl:call-template name="img-explicit-size"/>
+    </fo:external-graphic>
+    <!-- alt text -->
+    <xsl:if test="$config/pdf/show-image-alt-text='true'">
+      <xsl:if test="normalize-space(@alt)!=''">
+        <xsl:text> (</xsl:text>
+        <xsl:value-of select="@alt"/>
+        <xsl:text>)</xsl:text>
+      </xsl:if>
+    </xsl:if>
+  </xsl:template>
   <xsl:template match="figure|img">
     <fo:block text-align="center">
       <xsl:call-template name="insertPageBreaks"/>
       <xsl:copy-of select="@id"/>
       <!-- Make relative paths absolute -->
       <xsl:variable name="imgpath">
-        <xsl:choose>
-          <!-- already absolute -->
-          <xsl:when
-            test="contains(string(@src),':')">
-            <xsl:value-of select="@src"/>
-          </xsl:when>
-          <!-- absolute to servlet context -->
-          <xsl:when test="starts-with(string(@src),'/')">
-            <xsl:value-of
-              select="concat('cocoon:/',@src)"/>
-          </xsl:when>
-          <!-- relative to document -->
-          <xsl:otherwise> 
-            <xsl:value-of select="concat('cocoon://',$path,@src)"/> </xsl:otherwise>
-        </xsl:choose>
+        <xsl:call-template name="imgpath"/>
       </xsl:variable>
       <fo:external-graphic src="{$imgpath}">
-        <xsl:if test="@height">
-          <xsl:attribute name="height">
-            <xsl:value-of select="@height"/>
-          </xsl:attribute>
-          <xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
-        </xsl:if>
-        <xsl:if test="@width">
-          <xsl:attribute name="width">
-            <xsl:value-of select="@width"/>
-          </xsl:attribute>
-          <xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
-        </xsl:if>
+        <xsl:call-template name="img-explicit-size"/>
         <!-- Work around for fop094 not supporting 
-        scale-down-to-fit, to be replaces as soon as fop095 is released
+          scale-down-to-fit, to be replaced as soon as fop095 is released
         -->
-        <xsl:if test=" not((@width|@height))">
+        <xsl:if test="not((@width|@height))">
           <xsl:attribute name="width">100%</xsl:attribute>
           <xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
           <xsl:attribute name="content-height">100%</xsl:attribute>
@@ -401,6 +433,7 @@
       </xsl:if>
     </fo:block>
   </xsl:template>
+  
   <xsl:template match="table">
     <!-- FIXME: Apache FOP must have column widths specified at present,
     this section can be removed when this limitation is removed from Fop.



Mime
View raw message