Skip to content

1.0

Compare
Choose a tag to compare
@carlosame carlosame released this 21 Sep 10:30
· 239 commits to master since this release
v1.0

This is the first major release since the fork from Batik, and a number of improvements have been introduced.

Here is the list of changes since the fork, starting with the improvements after the last milestone release (0.3.3). Several items that were just refinements over previous updates were removed from the list, or merged, in order to improve readability.

Detail of changes

since 0.3.3

  • transcoder: support the KEY_USER_STYLESHEET_URI hint in CSSTranscodingHelper.
  • transcoder: throw a TranscoderException in case of error in KEY_SVG_SELECTOR, instead of a DOM exception.
  • transcoder: fix KEY_ALTERNATE_STYLESHEET support in CSSTranscodingHelper.
  • transcoder: avoid useless null check.
  • util: remove useless null checks.
  • util: remove useless null checks.
  • bridge: remove useless null check.
  • bridge: fix NPE in DefaultXBLManager [BATIK-1313].
  • bridge,css,swing: avoid unnecessary conversions to and from float/double.
  • Improve code readability (code style).
  • Fix several CodeQL alerts.
  • Adjust the precision of operands in several floating-point operations.
  • Add a comment to io.sf.carte.echosvg.awt's module-info.
  • Upgrade to css4j 4.2 and xml-dtd 4.2.1.
  • Upgrade to xmlgraphics-commons 2.9.
  • Upgrade to extra-java-module-info 1.4.2.
  • Enable dependabot for Github actions.
  • Upgrade to actions/checkout@v4.

0.3.3

  • dom: implement matches(), querySelector() and querySelectorAll().
  • transcoder: add the KEY_SVG_SELECTOR transcoding hint.
  • transcoder: use SVGConstants.SVG_SVG_TAG in CSSTranscodingHelper.
  • transcoder: support namespaceless svg elements inside plain HTML (#83).

0.3.2

  • awt: synchronize update of static field with class instead of instance.
  • awt: use Boolean.parseBoolean instead of valueOf in GraphicsUtil.
  • bridge: add null checks in DefaultScriptSecurity and SVGFontFamily.
  • dom: do not call getNodeName() from AbstractElementNS constructor, as it uses a field not yet initialised by subclasses.
  • dom: use a lock instead of synchronized blocks in AbstractDocument and DocumentDescriptor.
  • dom: move a null check to the right place in AbstractDocument.
  • extension: remove protected field from PrefixableStylableExtensionElement that was shadowing a superclass protected field.
  • gwt: make sure that counter increments and decrements are atomic in AWTGlyphGeometryCache.
  • script: remove useless null check from InterpreterPool.
  • swing: remove useless null check from JSVGComponent.
  • transcoder: avoid NPE when transcoding non-SVG documents.
  • Replace StringBuffer with StringBuilder.
  • Tests: use a different interned string than Batik, to synchronize.
  • Tests: safer lazy static initialisation in AbstractRenderingAccuracyTest.
  • Javadoc improvement.

0.3.1

  • awt: statically evaluate isColorConvertOpAplhaSupported. [BATIK-1354]
  • bridge: be tolerant to missing references. #80
  • css: do not stop CSS processing when an unknown or wrong value is found. #78
  • css: support Level 4 CSS Color (and Level 5 color-mix()) values in sRGB gamut. #77
  • css: fix NPE in CSSEngine when the document has no documentURI.
  • dom: support the namespaceless href attribute of SVG2.
  • dom: support surrogate characters.
  • gvt: fix race conditions in AWTGlyphGeometryCache (includes BATIK-1271).
  • gvt: fix SVG to PNG Rendering due to missing Arabic characters from the map. Based on patch by Paritosh Chauhan [BATIK-1355]
  • transcoder: add methods to transcode from a TranscoderInput and a Document instance using the Helper.
  • transcoder: do not overwrite the error handler in the CSSTranscodingHelper.
  • Tests: make less verbose the rendering tests that expect errors.

0.3

  • Improve the security model
  • dom,anim: add InputStream+encoding method variant to DocumentFactory.
  • transcoder,anim,dom: add encoding support to TranscoderInput.
  • anim: throw an IllegalArgumentException on root mismatch in SAXSVGDocumentFactory.
  • bridge: avoid NPE when using non-PX units in an element.
  • Use default implementations for the deprecated getPixelToMM() method (#59)
  • Use JDK's XPath support #76 (ported from: BATIK-1329: Remove xalan, Copyright of that change is ASF)
  • Tests: fix a few null-empty string inconsistencies in OnLoad tests.

0.2.2

  • bridge: default to antialiasing in SVGClipPathElementBridge. May fix #53
  • transcoder: allow SVG embedded into XHTML in XMLAbstractTranscoder. #69
  • transcoder: check for the correct SVGDOM implementation version in XML transcoding. #68
  • transcoder: accurate computation of stringWidth in CSSTranscodingHelper.
  • transcoder: adjust visibility of non-public types that were being referenced by SVGTranscoder public fields.
  • dom: deprecate XMLReader variant of DocumentFactory.createDocument, add setXMLReader. #71
  • Small javadoc fixes.

0.2.1

  • Deprecate getPixelToMM() and getPixelToMillimeter() for removal (#59).
  • Support the transparent color identifier.
  • awt: remove commented code from ImageTagRegistry.
  • bridge: initial fix to SVGBrokenLinkProvider. (#52)
  • css: accept display: inline-block as valid CSS.
  • css: do not stop processing when finding a custom property.
  • css: ignore rules that are not supported instead of stopping processing.
  • css: add a constructor with initial capacity in StringMap.
  • gvt: remove unreachable conditional blocks.
  • svg-dom: fix relative move after path closure in getNormalizedPathSegList (#50)
  • transcoder: add a CSS rendering helper utility.
  • transcoder: provide the old PNGRegistryEntry in module-info.
  • transcoder: correctly parse the KEY_ALLOWED_SCRIPT_TYPES hint (#56)
  • transcoder: reorder the module-info exports and requires.
  • util: add method Platform.isOSX(), deprecate public field isOSX (#51)
  • Use try-with-resources in several places.
  • Tests: explicitly set SVG version in samples that are not compatible with 1.2.
  • Tests: use SVG 1.1 DTD instead of 1.0 in some 1.2 sample files.
  • Tests: new normalizedPathSegList test.
  • Tests: anim: add a test for getNormalizedPathSegList(), see #50
  • Tests: fix non-conformant font-size style declarations in test files.
  • Tests: split the ECMAScript tests for easier debugging.
  • Add RELEASE_HOWTO.md with release steps.

0.2

  • Migrate from Apache Xalan to EchoXSL. See #46
  • bridge: rename finalize() to close(), implement Closeable in BridgeContext. See #38
  • transcoder: remove finalize() method from SeekableStream. See #38
  • bridge,script: remove public methods returning an AccessControlContext (final part of #36).
  • script: simplify the SecurityManager implementation of EchoSVGSecurityController.getDynamicSecurityDomain() (related to #36).
  • anim: round values to nearest integer during the interpolation.
  • Tests: improve the rendering tests documentation.

0.1.2

  • Refactor classes that use deprecated Security APIs, deprecate as needed. #36
  • svg1.2: support attribute text-align="center" in SVG 1.2 flow elements. #33
  • anim: avoid potential NPE.
  • anim: remove protected fields that were shadowing superclass fields.
  • awt: avoid an undesirable cast in AbstractRable.
  • awt: implement SVGComposite.hashCode().
  • awt: fix rounding in a mathematical expression.
  • awt: prevent three NPEs.
  • awt: change class DisplacementMapRed.TileOffsets visibility to public.
  • awt: remove commented code.
  • bridge: implement DefaultXBLManager.DefinitionRecord.hashCode().
  • bridge: fix conditional in GlyphLayout.
  • gvt: fix implementation of GVTAttributedCharacterIterator.getRunLimit(Set).
  • gvt: avoid potential NPE in DynamicRenderer.
  • svgrasterizer: prevent NPE.
  • transcoder: return null on null input in WMFTranscoder.getCompatibleInput().
  • util: use a volatile field in HaltingThread.
  • util: add a method to shut down CleanerThread, use a timeout when retrieving the queue.
  • util: prevent two NPEs in ClassFileUtilities.
  • Tests: deploy a new image comparison infrastructure.
  • Tests: update test references with more accurate images.
  • Tests: replace resources for scripting jar files.
  • Tests: use free font in flowTextAlign test, accept Xfce variation on systemColors.
  • Tests: fix scripting/domSVGColor test.
  • Tests: fix samples/tests/spec12/text/flowText4.svg
  • Tests: improved error message in MemoryLeakTest.
  • Tests: throw error that was being ignored in JPainterCompare.
  • Javadoc fixes.

0.1.1

  • Generator: support decoration attributes in text elements #16
  • Generator: conversions to SVG fonts now support strikethrough-* and underline-* attributes #17
  • Script service provider metadata is at wrong module #20
  • DOM: Node.isEqualNode() gives incorrect results #18
  • Tests: the old Batik tests were overhauled and converted to JUnit (version 4 first, later version 5).

0.1

  • New CSS engine supporting level 4 selectors and RGBA colors (with alpha channel).
  • codec and transcoder packages were merged, runtime circular dependency removed. See #11.
  • Pyhton and Tcl scripting removed (they were already commented out in Batik), see #12 and #13.
  • Removed support for PDF vector image format (which introduced a hidden FOP-Batik circular dependency, see #10).
  • Remove the useless shared-resources package, those resources are now inserted into the META-INF directory of the jar files.
  • Build system switched to Gradle (#8).
  • BATIK-1296: AbstractDocument.importNode(Node, boolean) does not set the attributes of elements.
  • BATIK-1227: Image filters encoded with Base64 in the SVG throw "Content not allowed in prolog" exception. Fix by Dan Caprioara.
  • BATIK-1285: Batik fails to parse an svg with missing 'offset' attribute. Based on fix by Konstantin Bulenkov.
  • BATIK-1290: AbstractGraphicsNode.paint() sometimes does not dispose a Graphics2D child context. Fix by Emmeran Seehuber.
  • Transcoder: in PNGTranscoder, PNGTranscoderImageIOWriteAdapter was being looked for in the wrong package.
  • Bridge: handle SVG 1.2 text elements inside 1.1 documents. (#3)
  • Util: honor the 'http.agent' system property in ParsedURL. Fixes #2.
  • Add @Override annotations.
  • Use Java Generics all over the codebase. A few additional bugs were fixed during the generification, including an impossible equality in GVTACIImpl.getRunStart(Set) that affected text rendering.