Author: vsiveton Date: Mon Jun 8 13:00:45 2009 New Revision: 782611 URL: http://svn.apache.org/viewvc?rev=782611&view=rev Log: o try to fix the cover logo to be sure that the width are not overload
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java?rev=782611&r1=782610&r2=782611&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java Mon Jun 8 13:00:45 2009 @@ -19,7 +19,10 @@ * under the License. */ +import java.awt.image.BufferedImage; +import java.io.File; import java.io.Writer; +import java.net.URL; import java.util.Calendar; import java.util.Date; @@ -29,6 +32,7 @@ import java.util.ResourceBundle; import java.util.Stack; +import javax.imageio.ImageIO; import javax.swing.text.MutableAttributeSet; import javax.swing.text.html.HTML.Tag; @@ -963,9 +967,7 @@ atts.addAttribute( "text-align", "left" ); atts.addAttribute( "vertical-align", "top" ); writeStartTag( BLOCK_TAG, atts ); - atts = new SinkEventAttributeSet(); - atts.addAttribute( SinkEventAttributes.HEIGHT, "1.5in" ); - figureGraphics( compLogo, atts ); + figureGraphics( compLogo, getGraphicsAttributes( compLogo ) ); writeEndTag( BLOCK_TAG ); } @@ -979,9 +981,7 @@ atts.addAttribute( "text-align", "right" ); atts.addAttribute( "vertical-align", "top" ); writeStartTag( BLOCK_TAG, atts ); - atts = new SinkEventAttributeSet(); - atts.addAttribute( SinkEventAttributes.HEIGHT, "1.5in" ); - figureGraphics( projLogo, atts ); + figureGraphics( projLogo, getGraphicsAttributes( projLogo ) ); writeEndTag( BLOCK_TAG ); } @@ -1148,4 +1148,50 @@ { return ResourceBundle.getBundle( "doxia-fo", locale, this.getClass().getClassLoader() ); } + + private SinkEventAttributeSet getGraphicsAttributes( String logo ) + { + SinkEventAttributeSet atts = new SinkEventAttributeSet(); + + BufferedImage img = null; + if ( ( logo.toLowerCase( Locale.ENGLISH ).startsWith( "http://" ) ) + || ( logo.toLowerCase( Locale.ENGLISH ).startsWith( "https://" ) ) ) + { + try + { + img = ImageIO.read( new URL( logo ) ); + } + catch ( Exception e ) + { + getLog().debug( e ); + } + } + else + { + try + { + img = ImageIO.read( new File( logo ) ); + } + catch ( Exception e ) + { + getLog().debug( e ); + } + } + + if ( img == null ) + { + atts.addAttribute( SinkEventAttributes.HEIGHT, "1.5in" ); + return atts; + } + + // FOP dpi: 72 + // Max width : 3.125 inch, table cell size, see #coverPage() + double maxWidth = 3.125 * 72; + if ( img.getWidth() > maxWidth ) + { + atts.addAttribute( "content-width", "3.125in" ); + } + + return atts; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java?rev=782611&r1=782610&r2=782611&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java Mon Jun 8 13:00:45 2009 @@ -770,18 +770,28 @@ MutableAttributeSet atts = config.getAttributeSet( "figure.graphics" ); atts.addAttribute( Attribute.SRC.toString(), src ); + // http://xmlgraphics.apache.org/fop/graphics.html#resolution if ( attributes != null && attributes.isDefined( SinkEventAttributes.WIDTH ) ) { atts.addAttribute( "width", attributes.getAttribute( SinkEventAttributes.WIDTH ) ); } + if ( attributes != null && attributes.isDefined( "content-width" ) ) + { + atts.removeAttribute( "content-width" ); + atts.addAttribute( "content-width", attributes.getAttribute( "content-width" ) ); + } if ( attributes != null && attributes.isDefined( SinkEventAttributes.HEIGHT ) ) { atts.addAttribute( "height", attributes.getAttribute( SinkEventAttributes.HEIGHT ) ); } + if ( attributes != null && attributes.isDefined( "content-height" ) ) + { + atts.removeAttribute( "content-height" ); + atts.addAttribute( "content-height", attributes.getAttribute( "content-height" ) ); + } writeln( "<fo:external-graphic" + SinkUtils.getAttributeString( atts ) + "/>" ); - } /**