1.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 inCSSTranscodingHelper
. - transcoder: throw a
TranscoderException
in case of error inKEY_SVG_SELECTOR
, instead of a DOM exception. - transcoder: fix
KEY_ALTERNATE_STYLESHEET
support inCSSTranscodingHelper
. - 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()
andquerySelectorAll()
. - transcoder: add the
KEY_SVG_SELECTOR
transcoding hint. - transcoder: use
SVGConstants.SVG_SVG_TAG
inCSSTranscodingHelper
. - transcoder: support namespaceless svg elements inside plain HTML (#83).
0.3.2
awt
: synchronize update of static field with class instead of instance.awt
: useBoolean.parseBoolean
instead ofvalueOf
inGraphicsUtil
.bridge
: add null checks inDefaultScriptSecurity
andSVGFontFamily
.dom
: do not callgetNodeName()
fromAbstractElementNS
constructor, as it uses a field not yet initialised by subclasses.dom
: use a lock instead of synchronized blocks inAbstractDocument
andDocumentDescriptor
.dom
: move a null check to the right place inAbstractDocument
.extension
: remove protected field fromPrefixableStylableExtensionElement
that was shadowing a superclass protected field.gwt
: make sure that counter increments and decrements are atomic inAWTGlyphGeometryCache
.script
: remove useless null check fromInterpreterPool
.swing
: remove useless null check fromJSVGComponent
.transcoder
: avoid NPE when transcoding non-SVG documents.- Replace
StringBuffer
withStringBuilder
. - 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 nodocumentURI
. - 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 aDocument
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 toDocumentFactory
. - transcoder,anim,dom: add encoding support to
TranscoderInput
. - anim: throw an
IllegalArgumentException
on root mismatch inSAXSVGDocumentFactory
. - 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
inCSSTranscodingHelper
. - transcoder: adjust visibility of non-public types that were being referenced by
SVGTranscoder
public fields. - dom: deprecate
XMLReader
variant ofDocumentFactory.createDocument
, addsetXMLReader
. #71 - Small javadoc fixes.
0.2.1
- Deprecate
getPixelToMM()
andgetPixelToMillimeter()
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 fieldisOSX
(#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()
toclose()
, implementCloseable
inBridgeContext
. See #38 - transcoder: remove
finalize()
method fromSeekableStream
. 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-*
andunderline-*
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
andtranscoder
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 theMETA-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 aGraphics2D
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.