Jeremias Maerki [Sun, 11 Jan 2009 11:31:24 +0000 (11:31 +0000)]
Started new IF implementation for AFP (incomplete, supporting filled rects, text and images). Work in progress!
Moved PTOCA (presentation text) command sequence production into the new "ptoca" package.
The PtocaBuilder class allows more flexible command sequence production than if you have to pass in an "info object".
Jeremias Maerki [Sun, 11 Jan 2009 11:27:03 +0000 (11:27 +0000)]
Added general support for the fox:conversion-mode inside the new IF.
Cleaned up usage of fox:conversion-mode foreign attribute.
Plus additional cleanup.
Jeremias Maerki [Sun, 11 Jan 2009 11:22:41 +0000 (11:22 +0000)]
Added shortcut that avoids painting text using the native text handler if the Graphics2D passed in is not compatible (as with SVG filter operations).
Avoid NPE when font size returns null.
Do anchor evaluation before the getText() method as it returns null afterwards when the ACI's state has changed.
Jeremias Maerki [Sun, 11 Jan 2009 11:15:34 +0000 (11:15 +0000)]
GOCA improvements:
Improved font size and line width calculation.
Removed superfluous AFPGraphics2D.setFontInfo() method.
Avoid ClassCastException inside SVG filter operations when not an AFPGraphics2D is passed in.
Fixed line width state handling (it appears as if after a new segment the line width is reset. Found that out empirically. Didn't find the corresponding reference in the spec).
Jeremias Maerki [Mon, 5 Jan 2009 07:47:02 +0000 (07:47 +0000)]
FOP now creates ToUnicode CMaps for single-byte fonts that don't use built-in encodings to help PDF text extractors interpreting characters.
PDF CMaps now support single-byte characters.
Jeremias Maerki [Sun, 4 Jan 2009 12:59:29 +0000 (12:59 +0000)]
Added support for forcing single-byte encodings for TrueType fonts without creating an XML font metric file (see "encoding-mode" attribute on "font" element in updated documentation).
See also Acrobat PDF merge performance problem on fop-users: http://markmail.org/message/dbbaaht4qshhqs3v
Jeremias Maerki [Fri, 2 Jan 2009 14:29:30 +0000 (14:29 +0000)]
Introduced IFContext to provide access to foreign attributes (as discussed on fop-dev).
Removed the foreign attributes map from the drawImage methods as a consequence.
Added support for foreign attributes on the page (PCL's paper-source and duplex-mode extensions).
Fixed a couple of bugs parsing the document navigation elements.
Build-time test suite now runs through.
Jeremias Maerki [Mon, 22 Dec 2008 18:23:03 +0000 (18:23 +0000)]
Most of the PostScript extensions are implemented in PSPainter now (and tested).
Bugfix: IFSerializer wrote out the page name instead of the page-master-name for the page-master-name attribute.
Jeremias Maerki [Mon, 22 Dec 2008 14:11:52 +0000 (14:11 +0000)]
Need to use xml:space="preserve" on text elements in IF and SVG output to avoid problems with editing those files in XML editors and rendering SVG text starting or ending with whitespace.
Jeremias Maerki [Wed, 17 Dec 2008 15:01:21 +0000 (15:01 +0000)]
Added getUserAgent() to IFDocumentHandler (implemented by all implementations already).
Full image support for PSPainter.
PostScript output now uses the ImageHandler facility (IF and renderer) for both inline (ImageHandler interface) and form image production (PSImageHandler interface). No more hard-coded image flavor list.
Resource optimization extended so images that are only used once are inlined to lower memory requirements in the PostScript VM.
Added test cases using Commons' DSC parser to verify the new functionality.
Added IFDocumentHandler override possibility in FOUserAgent (just like for FOEventHandler and Renderer).
Subject support for PDF output.
Jeremias Maerki [Thu, 11 Dec 2008 14:15:32 +0000 (14:15 +0000)]
My first attempt at implementing links was messed up. This second attempt actually works.
Optimized IF serialization a bit: only real changes in the IF state are serialized to the IF (makes smaller files and results in higher performance).
Jeremias Maerki [Tue, 9 Dec 2008 23:50:41 +0000 (23:50 +0000)]
Forgot to add link support. First version added now. Generalizing this for the IF is not so easy it seems.
Moved document navigation features (bookmarks, links, named destinations) into a separate handler interface that can be optionally implemented by document handler implementations.
This will need a bit more work to be complete (parsing for document navigation from IF, cleanup in PDF library etc.).
Jeremias Maerki [Tue, 9 Dec 2008 15:00:35 +0000 (15:00 +0000)]
Merge from Trunk revisions 719662 - 724689.
Conflict for ImageHandler interface resolved by renaming Trunk's ImageHandler to ImageHandlerBase and extending the other ImageHandler from that.
Bugzilla 46319:
Fixed a memory-leak in Marker.MarkerAttribute, where an instance was used as both key and value
in a WeakHashMap, effectively neutralizing the benefit of using WeakReferences.
Solved by extending PropertyCache to work for MarkerAttributes as well.
Jeremias Maerki [Sun, 7 Dec 2008 12:28:27 +0000 (12:28 +0000)]
FopCharacterSet doesn't follow the same contract as its superclass. The metrics must not be multiplied by the font size in the FopCharacterSet class. Only RasterFont or OutlineFont should do that.
Minor changes; mostly code- and javadoc-aesthetics...
Most notable:
- made most member variables private (apart from objectCount, which is used by PDFFactory)
- the number of fully qualified collection names warranted separate import statements
- replaced a String concat with StringBuffer.append()
- some javadoc nits, reduce space in single-line, add space in multi-line, added some @links ...
Adrian Cumiskey [Thu, 27 Nov 2008 10:37:43 +0000 (10:37 +0000)]
* Text encoding is now handled by PresentationTextData and character set encoding errors are now handled by AFPEventProducer.
* Moved AFPEventProducer from org.apache.fop.render.afp package to org.apache.fop.afp package.
Adrian Cumiskey [Wed, 26 Nov 2008 13:45:04 +0000 (13:45 +0000)]
Merged revisions 719616,719629,719646,719654 via svnmerge from
https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk
........
r719616 | jeremias | 2008-11-21 16:07:58 +0000 (Fri, 21 Nov 2008) | 1 line
Added support for SVG 1.2 inside fo:instream-foreign-object. The code just used the basic SVGDOMImplementation for SVG 1.1. Now it delegates the DOM building to Batik code instead of to a normal DOM builder.
........
r719629 | jeremias | 2008-11-21 16:33:33 +0000 (Fri, 21 Nov 2008) | 2 lines
Fix for unit test failure in transcoder tests (NullPointerException):
Have to pass the root PSGraphics2D to NativeTextHandler instead of the PSGenerator as this one hasn't been initialized in PSGraphics2D when the NativeTextHandler is built in AbstractPSTranscoder.
........
r719646 | jeremias | 2008-11-21 17:24:32 +0000 (Fri, 21 Nov 2008) | 1 line
Fixed possible ClassCastException that was caused by my earlier attempt to support SVG 1.2. Batik's SAXSVGDocumentFactory doesn't currently deal well with the case when namespaces are declared outside of its scope. Worked around that by doing the SVG version detection in FOP code. SVG12DOMImplementation is obtained by reflection in order to keep backwards compatilibility with earlier Batik versions that don't support SVG 1.2.
........
r719654 | jeremias | 2008-11-21 17:44:08 +0000 (Fri, 21 Nov 2008) | 1 line
Adrian Cumiskey [Tue, 25 Nov 2008 18:34:05 +0000 (18:34 +0000)]
* Reverted back the interface changes I made to ImageHandler.
* Created AbstractAFPImageHandlerRawStream base class to handle raw image streams for AFP.
* Fixed a bug in handling native embedded TIFF images.
I think its finally ready to roll now guys, sorry for the last minute glitches.
My apologies for not finding time to respond to the fop-dev mailing list this afternoon but have been trying to put my efforts into applying the final touches to the branch. If my good lady allows I'll respond to your comments later this evening :).
Jeremias Maerki [Fri, 21 Nov 2008 17:24:32 +0000 (17:24 +0000)]
Fixed possible ClassCastException that was caused by my earlier attempt to support SVG 1.2. Batik's SAXSVGDocumentFactory doesn't currently deal well with the case when namespaces are declared outside of its scope. Worked around that by doing the SVG version detection in FOP code. SVG12DOMImplementation is obtained by reflection in order to keep backwards compatilibility with earlier Batik versions that don't support SVG 1.2.
Jeremias Maerki [Fri, 21 Nov 2008 16:33:33 +0000 (16:33 +0000)]
Fix for unit test failure in transcoder tests (NullPointerException):
Have to pass the root PSGraphics2D to NativeTextHandler instead of the PSGenerator as this one hasn't been initialized in PSGraphics2D when the NativeTextHandler is built in AbstractPSTranscoder.
Jeremias Maerki [Fri, 21 Nov 2008 16:07:58 +0000 (16:07 +0000)]
Added support for SVG 1.2 inside fo:instream-foreign-object. The code just used the basic SVGDOMImplementation for SVG 1.1. Now it delegates the DOM building to Batik code instead of to a normal DOM builder.
Adrian Cumiskey [Fri, 21 Nov 2008 14:29:17 +0000 (14:29 +0000)]
<svg:image/> y-axis positioning fix in AFPGraphics2D.
GraphicsState inner class created in GraphicsObject.
Unused methods setFill() and incrementPageFontCount() removed.
Adrian Cumiskey [Thu, 20 Nov 2008 16:44:30 +0000 (16:44 +0000)]
Merged revisions 718666,718705,719038,719110 via svnmerge from
https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk
........
r718666 | adelmelle | 2008-11-18 17:58:54 +0000 (Tue, 18 Nov 2008) | 1 line
Bugfix: do not reset TextLM.hasChanged, but combine (||) with previous value.
........
r718705 | adelmelle | 2008-11-18 20:14:22 +0000 (Tue, 18 Nov 2008) | 1 line
Change FontCache.changeLock to a boolean[1], so it can be serialized...
........
r719038 | jeremias | 2008-11-19 19:46:45 +0000 (Wed, 19 Nov 2008) | 1 line
Reduced warning on ascender+descender > EM box to DEBUG level, as this case is compensated for by additional code in guessVerticalMetricsFromGlyphBBox() and is therefore only confusing. I tested problematic fonts and they show an acceptable line layout. No semantics changed.
........
r719110 | adelmelle | 2008-11-19 22:45:06 +0000 (Wed, 19 Nov 2008) | 3 lines
Bugzilla 46240:
Fixed a bug in combining break-before with a span change.
........
Adrian Cumiskey [Thu, 20 Nov 2008 16:38:44 +0000 (16:38 +0000)]
SetCurrentPosition fix for line drawing.
AbstractPaintingState push(), pushAll(), pop(), popAll() renamed to save(), saveAll() and restore(), restoreAll().
Some Javadoc improvements/updates.
Added Completable, Startable object writing interfaces.
StructuredDataObject interface renamed to StructuredData.
High level DataStream class moved from afp.modca to afp package.
Graphics*Relative objects removed and feature provided by absolute implementation.
GraphicsArea broken into GraphicsAreaBegin and GraphicsAreaEnd since areas are able to span more than one segment.
Improvement in SetLineWidth thickness precision.
Jeremias Maerki [Wed, 19 Nov 2008 20:13:48 +0000 (20:13 +0000)]
Added page master name to IFDocumentHandler.startPage() method.
Wired together the support for out-of-order rendering (only applicable to PDF) when the intermediate format is not used (in-memory rendering).
Fixed a logical bug in IFRenderer that caused some unneeded code. Glyph adjustments (kerning, letter/word space...) were not done right. All painters fixed/adjusted accordingly.
Started implementation of the PostScript painter: Supports only text and filled rectangles so far. Work in progress...
Jeremias Maerki [Wed, 19 Nov 2008 19:46:45 +0000 (19:46 +0000)]
Reduced warning on ascender+descender > EM box to DEBUG level, as this case is compensated for by additional code in guessVerticalMetricsFromGlyphBBox() and is therefore only confusing. I tested problematic fonts and they show an acceptable line layout. No semantics changed.
Adrian Cumiskey [Tue, 18 Nov 2008 14:13:51 +0000 (14:13 +0000)]
Removed AbstractGraphics2DImagePainter and Graphics2DImagePainterGOCA (painting preparator mechanism).
Adjusted AFPGraphics2D to TextHandler changes in XG commons.
Factored an AbstractFOPTextPainter which is extended by AFPTextPainter.
Improved the FAQ by creating a separate entry for the problem about keep-together on table-cell, and the added support for inline keeps in 0.95
........
r718570 | jeremias | 2008-11-18 13:16:32 +0000 (Tue, 18 Nov 2008) | 1 line
Bugzilla 46211:
Fixed some multi-threading issues in FontCache.java (+ some minor cleanup: simplification of conditionals)
Thanks to rogov.AT.devexperts.com for tracing and reporting the problem.
........
r718502 | adelmelle | 2008-11-18 06:43:08 +0000 (Tue, 18 Nov 2008) | 1 line
Bugzilla 46211:
Fixed some multi-threading issues in FontCache.java (+ some minor cleanup: simplification of conditionals)
Thanks to rogov.AT.devexperts.com for tracing and reporting the problem.
Adrian Cumiskey [Thu, 13 Nov 2008 16:11:58 +0000 (16:11 +0000)]
* PDFImageHandler interface split into ImageHandler and PDFImageHandler.
* Deleted AFPDataObjectInfoProvider and AFPImage*Factory implementations, and abstracted AbstractImageHandlerRegistry from PDFImageHandlerRegistry, creating AFPImageHandlerRegistry and AFPImageHandler so there is a common reuse of image handling implementation between AFP and PDF now.
* RendererContext instantiation is now overridable in PrintRenderer.
* Created AFPRendererContext that is able to provide AFPInfo.
* toString() added to RendererContext for ease of use.
* Removed GraphicsObjectPainterAFP.
* Added package.html for AFP (sub)packages.
* Abstracted AbstractFOPBridgeContext from PDFBridgeContext and provided AFPBridgeContext implementation.
* Abstracted AbstractFOPTextElementBridge from PDFTextElementBridge and provided AFPTextElementBridge implementation.
* Abstracted AbstractFOPImageElementBridge from PDFImageElementBridge and provided AFPImageElementBridge implementation.
* Provided inline image support/handling in AFPGraphics2D for SVG.
* Created NativeImageHandler interface.
* Fix for path iterator filled line drawing in AFPGraphics2D adding coordinate drawing implementations GraphicsLineRelative and GraphicsFilletRelative (Thanks for the patch Jeremias).
* Improved configuration.xml documentation for images mode/native setting in AFP renderer configuration.
Adrian Cumiskey [Tue, 4 Nov 2008 15:30:38 +0000 (15:30 +0000)]
"fixed" block container handling fixed (see block-container_absolute-position_fixed.xml).
Barcode4J generating barcodes correctly for both GOCA and conversion-mode="bitmap".
AbstractGenericSVGHandler now declares use of static final String BITMAP which is used by concrete subclasses and provides overridable methods. for buildGraphicsNode() and createPainter().
*State classes are now renamed *PaintingState.
AFPImageGraphics2DFactory - painter is not overriden but is now instead prepared for y-axis inversion.
AFPGraphics2DAdapter - commented lines removed.
Inlining now only done when the graphic is a non conversion-mode="bitmap".
Jeremias Maerki [Tue, 4 Nov 2008 15:10:31 +0000 (15:10 +0000)]
Making conversion hints available to ImageHandler implementations, too.
(Re-)implemented Graphics2D support for PCL. It can be disabled by fox:conversion-mode="bitmap" if necessary.
Fixed a bug with non-uniform image scaling when encoding bitmap images.
Commented some code that did not reliably convert color images to grayscale. The (probably slower) fallback code is used instead.
Some performance improvements for text painting using bitmaps when <rendering>speed<rendering> is selected.
Removed the RenderingContext interface from RendererContext since it's not used.
Jeremias Maerki [Thu, 30 Oct 2008 08:49:44 +0000 (08:49 +0000)]
Re-Implemented "quality" rendering mode (painting borders and rules using bitmaps).
Added a new rendering mode "bitmap" (in addition to "speed" and "bitmap") that uses Java2DPainter for the whole page and paints a single bitmap (much like most PCL drivers operate). Quality: "speed" < "quality" < "bitmap", Performance: "speed" > "quality" > "bitmap" (at high page complexity "bitmap" might actually be better), File Size: "speed" < "quality" < "bitmap"
Increased bitmap encoding performance by up to 100% (by optimizing the Java code and by supporting the "zeroed row" PCL command)