Author: ltheussl Date: Thu Apr 2 12:17:15 2009 New Revision: 761262 URL: http://svn.apache.org/viewvc?rev=761262&view=rev Log: [DOXIA-304] FO Sink does not recognize attributes of img tags
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 maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.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=761262&r1=761261&r2=761262&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 Thu Apr 2 12:17:15 2009 @@ -30,6 +30,7 @@ import org.apache.maven.doxia.document.DocumentModel; import org.apache.maven.doxia.document.DocumentTOC; import org.apache.maven.doxia.document.DocumentTOCItem; +import org.apache.maven.doxia.sink.SinkEventAttributes; import org.apache.maven.doxia.util.DoxiaUtils; import org.apache.maven.doxia.util.HtmlTools; @@ -226,22 +227,24 @@ /** {...@inheritdoc} */ public void figureGraphics( String name ) { - if ( !isFigure() ) - { - write( "<fo:external-graphic" + getFoConfiguration().getAttributeString( "figure.graphics" ) ); - } + figureGraphics( name, null ); + } - String anchor = name; + /** {...@inheritdoc} */ + public void figureGraphics( String src, SinkEventAttributes attributes ) + { + String anchor = src; - if ( name.startsWith( "../" ) && docName != null ) + if ( src.startsWith( "../" ) && docName != null ) { - anchor = resolveLinkRelativeToBase( name ); + anchor = resolveLinkRelativeToBase( src ); } - writeln( " src=\"" + anchor + "\"/>" ); + super.figureGraphics( anchor, attributes ); } + /** {...@inheritdoc} */ public void anchor( String name ) { 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=761262&r1=761261&r2=761262&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 Thu Apr 2 12:17:15 2009 @@ -26,12 +26,14 @@ import javax.swing.text.MutableAttributeSet; import javax.swing.text.SimpleAttributeSet; +import javax.swing.text.html.HTML.Attribute; import javax.swing.text.html.HTML.Tag; import org.apache.maven.doxia.sink.AbstractXmlSink; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkEventAttributeSet; import org.apache.maven.doxia.sink.SinkEventAttributes; +import org.apache.maven.doxia.sink.SinkUtils; import org.apache.maven.doxia.util.DoxiaUtils; import org.apache.maven.doxia.util.HtmlTools; import org.codehaus.plexus.util.StringUtils; @@ -85,7 +87,7 @@ private boolean verbatim; /** figure flag. */ - private boolean figure; + private boolean inFigure; private String encoding; @@ -574,17 +576,15 @@ /** {...@inheritdoc} */ public void figure() { - this.figure = true; + this.inFigure = true; writeEOL(); writeStartTag( BLOCK_TAG, "figure.display" ); - write( "<fo:external-graphic" - + config.getAttributeString( "figure.graphics" ) ); } /** {...@inheritdoc} */ public void figure_() { - this.figure = false; + this.inFigure = false; writeEndTag( BLOCK_TAG ); writeEOL(); } @@ -592,12 +592,27 @@ /** {...@inheritdoc} */ public void figureGraphics( String name ) { - if ( !isFigure() ) + figureGraphics( name, null ); + } + + /** {...@inheritdoc} */ + public void figureGraphics( String src, SinkEventAttributes attributes ) + { + MutableAttributeSet atts = config.getAttributeSet( "figure.graphics" ); + atts.addAttribute( Attribute.SRC.toString(), src ); + + if ( attributes != null && attributes.isDefined( SinkEventAttributes.WIDTH ) ) { - write( "<fo:external-graphic" + config.getAttributeString( "figure.graphics" ) ); + atts.addAttribute( "content-width", attributes.getAttribute( SinkEventAttributes.WIDTH ) ); } - writeln( " src=\"" + name + "\"/>" ); + if ( attributes != null && attributes.isDefined( SinkEventAttributes.HEIGHT ) ) + { + atts.addAttribute( "content-height", attributes.getAttribute( SinkEventAttributes.HEIGHT ) ); + } + + writeln( "<fo:external-graphic" + SinkUtils.getAttributeString( atts ) + "/>" ); + } /** @@ -607,7 +622,7 @@ */ protected boolean isFigure() { - return this.figure; + return this.inFigure; } /** {...@inheritdoc} */ @@ -626,7 +641,21 @@ /** {...@inheritdoc} */ public void paragraph() { - writeStartTag( BLOCK_TAG, "normal.paragraph" ); + paragraph( null ); + } + + /** {...@inheritdoc} */ + public void paragraph( SinkEventAttributes attributes ) + { + MutableAttributeSet atts = config.getAttributeSet( "normal.paragraph" ); + + if ( attributes != null && attributes.isDefined( SinkEventAttributes.ALIGN ) ) + { + atts.addAttribute( "text-align", attributes.getAttribute( SinkEventAttributes.ALIGN ) ); + } + + writeEOL(); + writeStartTag( BLOCK_TAG, atts ); } /** {...@inheritdoc} */ Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java?rev=761262&r1=761261&r2=761262&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java Thu Apr 2 12:17:15 2009 @@ -276,8 +276,8 @@ String dlAtts = getConfig().getAttributeString( "figure.display" ); String dtAtts = getConfig().getAttributeString( "figure.graphics" ); String ddAtts = getConfig().getAttributeString( "figure.caption" ); - return EOL + EOL + "<fo:block" + dlAtts + "><fo:external-graphic" + dtAtts - + " src=\"" + source + "\"/>" + EOL + EOL + "<fo:block" + ddAtts + return EOL + EOL + "<fo:block" + dlAtts + "><fo:external-graphic" + + " src=\"" + source + "\"" + dtAtts + "/>" + EOL + EOL + "<fo:block" + ddAtts + ">" + caption + "</fo:block>" + EOL + "</fo:block>" + EOL; }