Jeremias Maerki [Sat, 26 Aug 2006 18:59:42 +0000 (18:59 +0000)]
My last attempt at fixing SVG gradients in PDF wasn't successful. This one is:
Improved resolution of transformation matrices in PDF patterns.
Renamed PDFState.setTransform() to PDFState.concatenate() because setTransform() does a concationation and is therefore misleading. The old method is still there (just in case) but it is deprecated.
Simplified the whole transformation tracking by including the basic page transformation in the stack.
Verified the changes with basic-links in FO, fixed block-containers, a-links in SVG and SVG gradients.
1) Bugzilla #40308
Added relaxed validation for non-unique ids
as suggested by Hussein Shafi (hussein.at.xmlmind.com)
2) Checkstyle cleanup in FObj
3) Changed propertyMakerTable to a static final, and
altered FOPropertyMapping, to be 100% certain that
the static arrays are only structurally modified
once
Rework of the marker/retrieve-marker implementation to cater for correct evaluation of percentages and relative font-sizes, as well as more correct white-space handling.
Jeremias Maerki [Fri, 4 Aug 2006 15:13:53 +0000 (15:13 +0000)]
Bugzilla #39840:
Changed the way overflowing pages are handled. The overflow property on region-body is now used to define the behaviour. It removes the "Some content could not fit..." exception that bugged so many. However, the change does not yet change any keep behaviour.
Jeremias Maerki [Thu, 3 Aug 2006 16:53:41 +0000 (16:53 +0000)]
Fixed a memory-leak: The FO tree part of a page-sequence was not released when a page-sequence was finished.
Added a "MemoryEater" debug helper which can replicate page-sequences of a regular FO file using the fo-replicator.xsl. Without the fix a JVM set to the normal 64MB heap size throws an OutOfMemoryError when replicating readme.fo 150 times. With the fix the memory consumption doesn't go above 10MB for the 1350 pages. Note that about one third of the time goes into garbage collection.
Jeremias Maerki [Wed, 2 Aug 2006 15:50:20 +0000 (15:50 +0000)]
By using the getRGB() method we convert all PNG images to sRGB regardless of their original color spaces. So we should also always return the sRGB color space. Otherwise, grayscale PNGs, for example, will not be displayed correctly.
Added support for a 8x8 bayer dither matrix if anyone wants to try that. Currently, 4x4 is hard-coded. The 8x8 might only be an option for larger areas (i.e. not text) but the results didn't look any better when printed.
Attempt to make grayscale patterns look nicer when using PCL commands. The standard PCL shades are very coarse and I replaced them with a simple 4x4 bayer dither pattern defined as a user-defined pattern in PCL.
Current side-effect: Darker gray values will result in almost black output on some printers (at least on mine).
Activating ImageIOImage for reading PNG images in the ImageFactory made some test cases fail. The reason is that the PNGReader cannot extract the image resolution and leaves the default of 72dpi.
Added code to inspect the image metadata for resolution info.
I added the same hack as is already used in PNGImage to force loading the whole image when the image dimensions are requested, i.e. getting the right image size is more important than efficient memory use for now.
The image package needs that redesign sooner or later....
Command-line integration of PDF/X support. Generalized the specifying of PDF profiles (-pdfprofile parameter).
Documentation update for PDF/A.
Documentation for PDF/X.
Fixed two memory-leaks in image handling (ImageFactory and ExternalGraphic). The image cache is finally working properly. Currently implemented without the cleanup thread as done by Batik.
Added ImageIO provider for handling PNG in addition to the internal codec. ImageIO proved to be faster and less memory-intensive for PNGs. ImageIO takes precedence of the internal codec.
Bugzilla #39608:
Let numeric property values without a unit be treated as pixels like in HTML. This fixes certain NullPointerExceptions when no units are specified.
Made FOUserAgent.configure() protected again (not to tempt any users to play with it). Instead improved CommandLineOptions to properly build and adjust the FOUserAgent. Manuel's fix was ok, but I wasn't too comfortable with the public configure() method.
Showing a problem with SVG used inside a basic-link. The size of the link rect is wrong and only spans the area of the nominal line rect. (As reported on fop-users)
Bugzilla #39983:
Moved the setting of the system look&feel to CommandLineOptions. Shouldn't really be in PreviewDialog.java.
Added a parameter to createPreviewDialog() so embedders don't get a System.exit() when the user closes the preview dialog. System.exit() may only be called if the preview dialog is the main window.
Jeremias Maerki [Thu, 29 Jun 2006 10:13:08 +0000 (10:13 +0000)]
Re-routing SVG painting to the Graphics2DAdapter and teach the latter to respect the renderer's colorImages setting.
Removed obsolete SVGConverter.
This fixes painting SVG at a hard-coded resolution. Now uses the target resolution from the user agent.
Jeremias Maerki [Tue, 20 Jun 2006 14:57:44 +0000 (14:57 +0000)]
XML Graphics Commons 1.0 replaced with a SVN snapshot (containing the XMP framework).
Reworked the XMP support for PDF to use the XMP framework from XML Graphics Commons.
XMP metadata embedded in fo:declarations is now properly handled. Its values are copied to the Info object according to the rules from PDF/A-1.
Metadata values from the user agent (title, author etc.) are properly merged with metadata from the XSL-FO document. UserAgent metadata overrides FO metadata.
Note: This is useful and active even if you don't activate PDF/A support.
Jeremias Maerki [Wed, 14 Jun 2006 14:34:29 +0000 (14:34 +0000)]
Added initial support for PDF/X-3:2003 (ISO 15930-6:2003(E)).
Fixed bugs in PDF/A support: Transparency is now switched off and the CIDSet object is generated for CID fonts.
PDF/A and PDF/X are now "profiles" (see PDFProfile) which are used to control the allowed, required and forbidden features in PDF. PDF/A-1b and PDF/X-3:2003 can both be activated simultaneously as they are compatible.
For PDF/X, color handling has been improved a little (PDFColorSpace is now an interface, the old PDFColorSpace is now PDFDeviceColorSpace) and most importantly, the "DefaultRGB" color space is now mapped to the sRGB color space (for all colors in DeviceRGB) which ensures that all sRGB colors from XSL-FO are also sRGB colors in PDF which wasn't necessarily the case before.
For PDF/X, added support for a custom, non-sRGB output profile because PDF/X requires a "Output Device Profile" (which sRGB is not).
ICC profiles are now shared/cached among images.
Added support for fox:conversion-mode="bitmap" in the PDFRenderer to handle SVGs with transparency when transparency is forbidden (PDF/X and PDF/A). Only drawback: the image is not combined with the background. An opaque bitmap with a white background is generated.
Jeremias Maerki [Thu, 8 Jun 2006 12:46:50 +0000 (12:46 +0000)]
Added region-body_display-align to demonstrate the default behaviour for adjustable spaces when display-align is set to "auto".
Reactivated proprietary display-align="distribute" so a block-container can cause its content to be "justified" in the reference area if it's large enough and the adjustable elements (min/opt/max) allow for it. I may be misusing the original intended behaviour of "distribute" but for block-container this seemed suitable since it's destined to produce only one viewport/reference pair if possible. Test added that demonstrates the proprietary value on block-container. Note: on normal region-body elements, display-align="distribute" has currently no effect since the code did not evolve with the changes in the layout engine.
Jeremias Maerki [Thu, 8 Jun 2006 12:36:23 +0000 (12:36 +0000)]
Set a PrefixResolver for the "true" check, too, not only for "eval".
Added optional "tolerance" value for number comparisons using the "eval" check. Simplifies certain checks.
Jeremias Maerki [Fri, 2 Jun 2006 07:34:25 +0000 (07:34 +0000)]
Bugzilla #39701:
Fix potential NullPointerException when buggy JAXP implementations return null instead of an empty String as namespace URI.
Submitted by: Stefan Ziel <stefan.ziel.at.claninfo.ch>