From e1eea7447300243edd2f7b3c085b556c49aaafcb Mon Sep 17 00:00:00 2001 From: Carlos Amengual Date: Thu, 19 Dec 2024 17:57:58 +0100 Subject: [PATCH] Split the transcoder module in 4 modules: api, svg, svg2svg and tosvg Sometimes an SVG library is embedded into an executable, and a common concern for both EchoSVG and Batik users in those cases is to make the size of the embedded modules as small as possible. Notably, in the case of the Transcoder a number of unneeded classes may be included. For an example of such concern see https://github.com/eclipse-platform/eclipse.platform.swt/issues/1438#issuecomment-2454551940 The current `transcoder` module was designed as a monolithic do-it-all package, with users always carrying code that they do not intend to run. But it can be split in several submodules, in a way that backwards compatibility is kept (the old `transcoder` module still exists and provides all the classes), so users willing to minimize their dependencies can choose a smaller specific sub-module. This commit splits the transcoder in 4 modules: - `transcoder-api` (API) - `transcoder-svg` (SVG to image) - `transcoder-svg2svg` (SVG to SVG) - `transcoder-tosvg` (conversions to SVG, currently only WMF to SVG) In the typical case of rendering SVG as a PNG, the current 2.0 transcoder with dependencies fills a jar of 6.26 MB, while the specific SVG-to-image transcoder becomes a bit smaller (5.98 MB). The gains are higher for the WMF to SVG case (3.94 MB) or the SVG-to-SVG (3.60 MB). Note that there is plenty of room for improvement in conversions to SVG, because the current code uses the SVG DOM implementation provided by the `anim` module (with all its dependencies) but the JDK DOM implementation could be used instead (like in the EchoSVG Wiki example for `SVGGraphics2D`). --- echosvg-all/build.gradle | 29 ++++++++++++++++ echosvg-all/src/main/java/module-info.java | 4 +++ echosvg-svgpp/build.gradle | 3 +- echosvg-svgpp/src/main/java/module-info.java | 3 +- echosvg-svgrasterizer/build.gradle | 2 +- .../echosvg/apps/rasterizer/SVGConverter.java | 2 +- .../src/main/java/module-info.java | 2 +- .../apps/rasterizer/SVGConverterTest.java | 2 +- .../svg/AbstractBypassRenderingCheck.java | 2 +- .../test/svg/AltUserSheetRenderingTest.java | 2 +- .../test/svg/ResolutionPxMmRenderingTest.java | 2 +- ...ernateStyleSheetRenderingAccuracyTest.java | 2 +- .../SVGAnimationRenderingAccuracyTest.java | 2 +- .../svg/SVGMediaRenderingAccuracyTest.java | 2 +- .../test/svg/SVGRenderingAccuracyTest.java | 2 +- .../test/svg/TranscoderSecurityCheck.java | 2 +- .../test/svg/XHTMLRenderingAccuracyTest.java | 2 +- .../transcoder/image/test/AOITest.java | 2 +- .../image/test/AlternateStylesheetTest.java | 2 +- .../image/test/DefaultFontFamilyTest.java | 2 +- .../transcoder/image/test/DimensionTest.java | 2 +- .../transcoder/image/test/LanguageTest.java | 2 +- .../image/test/MaxDimensionTest.java | 2 +- .../transcoder/image/test/MediaTest.java | 2 +- .../transcoder/image/test/ResolutionTest.java | 2 +- echosvg-transcoder-api/build.gradle | 13 +++++++ .../transcoder/AbstractTranscoder.java | 1 + .../transcoder/DefaultErrorHandler.java | 0 .../echosvg/transcoder/ErrorHandler.java | 0 .../carte/echosvg/transcoder/Transcoder.java | 0 .../transcoder/TranscoderException.java | 0 .../echosvg/transcoder/TranscoderInput.java | 0 .../echosvg/transcoder/TranscoderOutput.java | 0 .../echosvg/transcoder/TranscoderSupport.java | 0 .../echosvg/transcoder/TranscodingHints.java | 0 .../transcoder/XMLAbstractTranscoder.java | 0 .../echosvg/transcoder/keys/BooleanKey.java | 0 .../transcoder/keys/DOMImplementationKey.java | 0 .../echosvg/transcoder/keys/FloatKey.java | 0 .../echosvg/transcoder/keys/IntegerKey.java | 0 .../echosvg/transcoder/keys/LengthKey.java | 0 .../echosvg/transcoder/keys/PaintKey.java | 0 .../transcoder/keys/Rectangle2DKey.java | 0 .../transcoder/keys/StringArrayKey.java | 0 .../echosvg/transcoder/keys/StringKey.java | 0 .../sf/carte/echosvg/transcoder/package.html | 0 .../src/main/java/module-info.java | 29 ++++++++++++++++ echosvg-transcoder-svg/build.gradle | 17 ++++++++++ .../transcoder/image/ImageTranscoder.java | 2 +- .../transcoder/image/JPEGTranscoder.java | 0 .../transcoder/image/PNGTranscoder.java | 0 .../PNGTranscoderImageIOWriteAdapter.java | 0 ...NGTranscoderInternalCodecWriteAdapter.java | 0 .../transcoder/image/TIFFTranscoder.java | 0 .../TIFFTranscoderImageIOWriteAdapter.java | 0 .../echosvg/transcoder/image/package.html | 0 .../transcoder/image/resources/Messages.java | 0 .../echosvg/transcoder/impl/SizingHelper.java | 0 .../echosvg/transcoder/impl/package-info.java | 0 .../transcoder/print/PrintTranscoder.java | 2 +- .../svg}/SVGAbstractTranscoder.java | 7 +++- .../echosvg/transcoder/svg/package-info.java | 23 +++++++++++++ .../transcoder/util/CSSTranscodingHelper.java | 2 +- .../echosvg/transcoder/util/package-info.java | 0 .../src/main/java/module-info.java | 34 +++++++++++++++++++ .../image/resources/Messages.properties | 0 echosvg-transcoder-svg2svg/build.gradle | 15 ++++++++ .../transcoder/svg2svg/OutputManager.java | 0 .../transcoder/svg2svg/PrettyPrinter.java | 0 .../transcoder/svg2svg/SVGTranscoder.java | 0 .../src/main/java/module-info.java | 29 ++++++++++++++++ echosvg-transcoder-tosvg/build.gradle | 15 ++++++++ .../svggen}/ToSVGAbstractTranscoder.java | 6 +++- .../transcoder/svggen/package-info.java | 23 +++++++++++++ .../echosvg/transcoder/wmf/WMFConstants.java | 0 .../wmf/tosvg/AbstractWMFPainter.java | 0 .../wmf/tosvg/AbstractWMFReader.java | 0 .../transcoder/wmf/tosvg/GdiObject.java | 0 .../transcoder/wmf/tosvg/MetaRecord.java | 0 .../transcoder/wmf/tosvg/TextureFactory.java | 0 .../echosvg/transcoder/wmf/tosvg/WMFFont.java | 0 .../wmf/tosvg/WMFHeaderProperties.java | 0 .../transcoder/wmf/tosvg/WMFPainter.java | 0 .../transcoder/wmf/tosvg/WMFRecordStore.java | 0 .../transcoder/wmf/tosvg/WMFTranscoder.java | 4 +-- .../transcoder/wmf/tosvg/WMFUtilities.java | 0 .../echosvg/transcoder/wmf/tosvg/package.html | 0 .../src/main/java/module-info.java | 28 +++++++++++++++ echosvg-transcoder/build.gradle | 11 +++--- .../src/main/java/module-info.java | 24 ++++--------- echosvg-xml/build.gradle | 2 +- settings.gradle | 4 +++ 92 files changed, 317 insertions(+), 55 deletions(-) create mode 100644 echosvg-transcoder-api/build.gradle rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/AbstractTranscoder.java (99%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/DefaultErrorHandler.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/ErrorHandler.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/Transcoder.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderException.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderInput.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderOutput.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderSupport.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/TranscodingHints.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/XMLAbstractTranscoder.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/BooleanKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/DOMImplementationKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/FloatKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/IntegerKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/LengthKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/PaintKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/Rectangle2DKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringArrayKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringKey.java (100%) rename {echosvg-transcoder => echosvg-transcoder-api}/src/main/java/io/sf/carte/echosvg/transcoder/package.html (100%) create mode 100644 echosvg-transcoder-api/src/main/java/module-info.java create mode 100644 echosvg-transcoder-svg/build.gradle rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/ImageTranscoder.java (99%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/JPEGTranscoder.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoder.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderImageIOWriteAdapter.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderInternalCodecWriteAdapter.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoder.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoderImageIOWriteAdapter.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/package.html (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/image/resources/Messages.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/impl/SizingHelper.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/impl/package-info.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/print/PrintTranscoder.java (99%) rename {echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder => echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg}/SVGAbstractTranscoder.java (99%) create mode 100644 echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg/package-info.java rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/util/CSSTranscodingHelper.java (99%) rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/java/io/sf/carte/echosvg/transcoder/util/package-info.java (100%) create mode 100644 echosvg-transcoder-svg/src/main/java/module-info.java rename {echosvg-transcoder => echosvg-transcoder-svg}/src/main/resources/io/sf/carte/echosvg/transcoder/image/resources/Messages.properties (100%) create mode 100644 echosvg-transcoder-svg2svg/build.gradle rename {echosvg-transcoder => echosvg-transcoder-svg2svg}/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/OutputManager.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg2svg}/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/PrettyPrinter.java (100%) rename {echosvg-transcoder => echosvg-transcoder-svg2svg}/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/SVGTranscoder.java (100%) create mode 100644 echosvg-transcoder-svg2svg/src/main/java/module-info.java create mode 100644 echosvg-transcoder-tosvg/build.gradle rename {echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder => echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen}/ToSVGAbstractTranscoder.java (96%) create mode 100644 echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen/package-info.java rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/WMFConstants.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFPainter.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFReader.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/GdiObject.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/MetaRecord.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/TextureFactory.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFFont.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFHeaderProperties.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFPainter.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFRecordStore.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFTranscoder.java (98%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFUtilities.java (100%) rename {echosvg-transcoder => echosvg-transcoder-tosvg}/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/package.html (100%) create mode 100644 echosvg-transcoder-tosvg/src/main/java/module-info.java diff --git a/echosvg-all/build.gradle b/echosvg-all/build.gradle index 92f458fc9..82c24da07 100644 --- a/echosvg-all/build.gradle +++ b/echosvg-all/build.gradle @@ -14,6 +14,11 @@ dependencies { api project(':echosvg-swing') api project(':echosvg-slideshow') api project(':echosvg-svgpp') + api project(':echosvg-transcoder') + api project(':echosvg-transcoder-api') + api project(':echosvg-transcoder-svg') + api project(':echosvg-transcoder-svg2svg') + api project(':echosvg-transcoder-tosvg') api project(':echosvg-ttf2svg') api project(':echosvg-svgrasterizer') @@ -40,6 +45,10 @@ dependencies { jacocoAggregation project(':echosvg-swing') jacocoAggregation project(':echosvg-test') jacocoAggregation project(':echosvg-transcoder') + jacocoAggregation project(':echosvg-transcoder-api') + jacocoAggregation project(':echosvg-transcoder-svg') + jacocoAggregation project(':echosvg-transcoder-svg2svg') + jacocoAggregation project(':echosvg-transcoder-tosvg') jacocoAggregation project(':echosvg-ttf2svg') jacocoAggregation project(':echosvg-util') jacocoAggregation project(':echosvg-xml') @@ -207,6 +216,26 @@ tasks.register('prepareModularSources') { include(name: '**/*') } } + ant.copy(todir: "$buildDir/src/io.sf.carte.echosvg.transcoder.api") { + fileset(dir: "$rootDir/echosvg-transcoder-api/src/main/java") { + include(name: '**/*') + } + } + ant.copy(todir: "$buildDir/src/io.sf.carte.echosvg.transcoder.svg") { + fileset(dir: "$rootDir/echosvg-transcoder-svg/src/main/java") { + include(name: '**/*') + } + } + ant.copy(todir: "$buildDir/src/io.sf.carte.echosvg.transcoder.svg2svg") { + fileset(dir: "$rootDir/echosvg-transcoder-svg2svg/src/main/java") { + include(name: '**/*') + } + } + ant.copy(todir: "$buildDir/src/io.sf.carte.echosvg.transcoder.tosvg") { + fileset(dir: "$rootDir/echosvg-transcoder-tosvg/src/main/java") { + include(name: '**/*') + } + } ant.copy(todir: "$buildDir/src/io.sf.carte.echosvg.ttf2svg") { fileset(dir: "$rootDir/echosvg-ttf2svg/src/main/java") { include(name: '**/*') diff --git a/echosvg-all/src/main/java/module-info.java b/echosvg-all/src/main/java/module-info.java index 312e76399..a9c28c968 100644 --- a/echosvg-all/src/main/java/module-info.java +++ b/echosvg-all/src/main/java/module-info.java @@ -38,6 +38,10 @@ requires transitive io.sf.carte.echosvg.svgpp; requires transitive io.sf.carte.echosvg.swing; requires transitive io.sf.carte.echosvg.transcoder; + requires transitive io.sf.carte.echosvg.transcoder.api; + requires transitive io.sf.carte.echosvg.transcoder.svg; + requires transitive io.sf.carte.echosvg.transcoder.svg2svg; + requires transitive io.sf.carte.echosvg.transcoder.tosvg; requires transitive io.sf.carte.echosvg.ttf2svg; requires transitive io.sf.carte.echosvg.util; requires transitive io.sf.carte.echosvg.util.gui; diff --git a/echosvg-svgpp/build.gradle b/echosvg-svgpp/build.gradle index 0bf2b1803..be1a4bdda 100644 --- a/echosvg-svgpp/build.gradle +++ b/echosvg-svgpp/build.gradle @@ -3,7 +3,8 @@ plugins { } dependencies { - implementation project(':echosvg-transcoder') + implementation project(':echosvg-transcoder-svg2svg') + implementation project(':echosvg-i18n') } description = 'io.sf.carte:echosvg-svgpp' diff --git a/echosvg-svgpp/src/main/java/module-info.java b/echosvg-svgpp/src/main/java/module-info.java index ad4b674d7..346489ba4 100644 --- a/echosvg-svgpp/src/main/java/module-info.java +++ b/echosvg-svgpp/src/main/java/module-info.java @@ -16,6 +16,7 @@ * limitations under the License. * */ + /** * SVG Pretty Printer Application. */ @@ -24,7 +25,7 @@ exports io.sf.carte.echosvg.apps.svgpp; requires io.sf.carte.echosvg.i18n; - requires io.sf.carte.echosvg.transcoder; + requires io.sf.carte.echosvg.transcoder.svg2svg; requires java.xml; diff --git a/echosvg-svgrasterizer/build.gradle b/echosvg-svgrasterizer/build.gradle index 10253503b..b4064435c 100644 --- a/echosvg-svgrasterizer/build.gradle +++ b/echosvg-svgrasterizer/build.gradle @@ -10,7 +10,7 @@ sourceSets { } dependencies { - api project(':echosvg-transcoder') + api project(':echosvg-transcoder-svg') testImplementation project(':echosvg-test') testImplementation "org.junit.jupiter:junit-jupiter:${junitVersion}" testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/echosvg-svgrasterizer/src/main/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverter.java b/echosvg-svgrasterizer/src/main/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverter.java index e7128d4e0..a962074f8 100644 --- a/echosvg-svgrasterizer/src/main/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverter.java +++ b/echosvg-svgrasterizer/src/main/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverter.java @@ -33,7 +33,6 @@ import java.util.List; import java.util.Map; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.Transcoder; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscoderOutput; @@ -42,6 +41,7 @@ import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; import io.sf.carte.echosvg.transcoder.image.JPEGTranscoder; import io.sf.carte.echosvg.transcoder.image.PNGTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; import io.sf.carte.echosvg.util.ParsedURL; /** diff --git a/echosvg-svgrasterizer/src/main/java/module-info.java b/echosvg-svgrasterizer/src/main/java/module-info.java index 8bf52ad93..6f364dd9e 100644 --- a/echosvg-svgrasterizer/src/main/java/module-info.java +++ b/echosvg-svgrasterizer/src/main/java/module-info.java @@ -22,7 +22,7 @@ module io.sf.carte.echosvg.svgrasterizer { exports io.sf.carte.echosvg.apps.rasterizer; - requires transitive io.sf.carte.echosvg.transcoder; + requires transitive io.sf.carte.echosvg.transcoder.svg; requires io.sf.carte.echosvg.i18n; requires transitive java.desktop; diff --git a/echosvg-svgrasterizer/src/test/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverterTest.java b/echosvg-svgrasterizer/src/test/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverterTest.java index 1b70a9ecf..6fb57ddee 100644 --- a/echosvg-svgrasterizer/src/test/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverterTest.java +++ b/echosvg-svgrasterizer/src/test/java/io/sf/carte/echosvg/apps/rasterizer/SVGConverterTest.java @@ -40,7 +40,6 @@ import io.sf.carte.echosvg.test.TestUtil; import io.sf.carte.echosvg.test.image.ImageCompareUtil; import io.sf.carte.echosvg.test.image.TempImageFiles; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.Transcoder; import io.sf.carte.echosvg.transcoder.TranscodingHints; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; @@ -48,6 +47,7 @@ import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; import io.sf.carte.echosvg.transcoder.image.JPEGTranscoder; import io.sf.carte.echosvg.transcoder.image.PNGTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Validates the operation of the SVGRasterizer. It validates the diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractBypassRenderingCheck.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractBypassRenderingCheck.java index 6f17afcd5..6249a73be 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractBypassRenderingCheck.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractBypassRenderingCheck.java @@ -30,11 +30,11 @@ import org.w3c.dom.Document; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscoderOutput; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.test.DummyErrorHandler; import io.sf.carte.echosvg.transcoder.util.CSSTranscodingHelper; diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AltUserSheetRenderingTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AltUserSheetRenderingTest.java index 5ba6b5210..2a893c1a9 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AltUserSheetRenderingTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AltUserSheetRenderingTest.java @@ -20,8 +20,8 @@ import java.net.URL; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Checks for regressions in rendering of SVG with alternate style sheets and/or diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ResolutionPxMmRenderingTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ResolutionPxMmRenderingTest.java index ba7673a5d..daf549f5a 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ResolutionPxMmRenderingTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ResolutionPxMmRenderingTest.java @@ -18,8 +18,8 @@ */ package io.sf.carte.echosvg.test.svg; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Checks for regressions in rendering of SVG with varying resolution. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAlternateStyleSheetRenderingAccuracyTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAlternateStyleSheetRenderingAccuracyTest.java index ef0e3cd91..0cc14e3de 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAlternateStyleSheetRenderingAccuracyTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAlternateStyleSheetRenderingAccuracyTest.java @@ -22,8 +22,8 @@ import org.junit.jupiter.api.Test; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Checks for regressions in rendering of a document with a given alternate diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAnimationRenderingAccuracyTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAnimationRenderingAccuracyTest.java index f9c080e93..f2123d4ee 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAnimationRenderingAccuracyTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGAnimationRenderingAccuracyTest.java @@ -19,8 +19,8 @@ package io.sf.carte.echosvg.test.svg; import io.sf.carte.echosvg.transcoder.ErrorHandler; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.test.DummyErrorHandler; /** diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGMediaRenderingAccuracyTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGMediaRenderingAccuracyTest.java index 87db5add8..532bb925f 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGMediaRenderingAccuracyTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGMediaRenderingAccuracyTest.java @@ -22,8 +22,8 @@ import org.junit.jupiter.api.Test; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Checks for regressions in rendering of a document with a given media. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java index c6eb6e6a4..df4428d88 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java @@ -32,13 +32,13 @@ import io.sf.carte.echosvg.test.TestLocations; import io.sf.carte.echosvg.test.image.ImageComparator; import io.sf.carte.echosvg.transcoder.ErrorHandler; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscoderOutput; import io.sf.carte.echosvg.transcoder.XMLAbstractTranscoder; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; import io.sf.carte.echosvg.transcoder.image.PNGTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; import io.sf.carte.echosvg.util.SVGConstants; /** diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/TranscoderSecurityCheck.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/TranscoderSecurityCheck.java index 96133e827..e2ab55cfe 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/TranscoderSecurityCheck.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/TranscoderSecurityCheck.java @@ -23,12 +23,12 @@ import java.io.InputStream; import io.sf.carte.echosvg.transcoder.ErrorHandler; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscoderOutput; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; import io.sf.carte.echosvg.transcoder.image.PNGTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.test.DummyErrorHandler; /** diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/XHTMLRenderingAccuracyTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/XHTMLRenderingAccuracyTest.java index 810908d14..a2e9c7904 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/XHTMLRenderingAccuracyTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/XHTMLRenderingAccuracyTest.java @@ -18,9 +18,9 @@ */ package io.sf.carte.echosvg.test.svg; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.XMLAbstractTranscoder; import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Checks for regressions in rendering of SVG inside an XHTML document. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AOITest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AOITest.java index 4f3bbc3d8..e6388fff4 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AOITest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AOITest.java @@ -24,10 +24,10 @@ import org.junit.jupiter.api.Test; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_AOI transcoding hint. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AlternateStylesheetTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AlternateStylesheetTest.java index 68dc8919e..2c4fbfb33 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AlternateStylesheetTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/AlternateStylesheetTest.java @@ -27,10 +27,10 @@ import org.junit.jupiter.api.Test; import io.sf.carte.echosvg.test.TestFonts; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_ALTERNATE_STYLESHEET transcoding hint. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DefaultFontFamilyTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DefaultFontFamilyTest.java index a0261b169..30cd7c80d 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DefaultFontFamilyTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DefaultFontFamilyTest.java @@ -27,10 +27,10 @@ import org.junit.jupiter.api.Test; import io.sf.carte.echosvg.test.TestFonts; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_DEFAULT_FONT_FAMILY transcoding hint. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DimensionTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DimensionTest.java index d4937a950..bd87eb6e0 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DimensionTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/DimensionTest.java @@ -23,10 +23,10 @@ import org.junit.jupiter.api.Test; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_WIDTH and/or the KEY_HEIGHT transcoding diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/LanguageTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/LanguageTest.java index 7bae19020..d683a943b 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/LanguageTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/LanguageTest.java @@ -23,10 +23,10 @@ import org.junit.jupiter.api.Test; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_LANGUAGE transcoding hint. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MaxDimensionTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MaxDimensionTest.java index 7f8603c52..c9d0ab4dd 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MaxDimensionTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MaxDimensionTest.java @@ -23,10 +23,10 @@ import org.junit.jupiter.api.Test; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_MAX_WIDTH and/or the KEY_MAX_HEIGHT diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MediaTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MediaTest.java index b1602394c..5e562f04d 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MediaTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/MediaTest.java @@ -27,10 +27,10 @@ import org.junit.jupiter.api.Test; import io.sf.carte.echosvg.test.TestFonts; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_MEDIA transcoding hint. diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/ResolutionTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/ResolutionTest.java index a3107543d..281de45d9 100644 --- a/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/ResolutionTest.java +++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/transcoder/image/test/ResolutionTest.java @@ -23,10 +23,10 @@ import org.junit.jupiter.api.Test; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscodingHints.Key; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * Test the ImageTranscoder with the KEY_RESOLUTION_DPI transcoding hint. diff --git a/echosvg-transcoder-api/build.gradle b/echosvg-transcoder-api/build.gradle new file mode 100644 index 000000000..4f8425d41 --- /dev/null +++ b/echosvg-transcoder-api/build.gradle @@ -0,0 +1,13 @@ +plugins { + id 'echosvg.java-conventions' +} + +dependencies { + implementation project(':echosvg-anim') +} + +description = 'io.sf.carte:echosvg-transcoder-api' + +publishing.publications.maven(MavenPublication).pom { + description = "EchoSVG SVG transcoder API" +} diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/AbstractTranscoder.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/AbstractTranscoder.java similarity index 99% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/AbstractTranscoder.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/AbstractTranscoder.java index 7df55643b..74114ccea 100644 --- a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/AbstractTranscoder.java +++ b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/AbstractTranscoder.java @@ -33,4 +33,5 @@ public abstract class AbstractTranscoder extends TranscoderSupport implements Tr */ protected AbstractTranscoder() { } + } diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/DefaultErrorHandler.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/DefaultErrorHandler.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/DefaultErrorHandler.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/DefaultErrorHandler.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/ErrorHandler.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/ErrorHandler.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/ErrorHandler.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/ErrorHandler.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/Transcoder.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/Transcoder.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/Transcoder.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/Transcoder.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderException.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderException.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderException.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderException.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderInput.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderInput.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderInput.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderInput.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderOutput.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderOutput.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderOutput.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderOutput.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderSupport.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderSupport.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderSupport.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscoderSupport.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscodingHints.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscodingHints.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/TranscodingHints.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/TranscodingHints.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/XMLAbstractTranscoder.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/XMLAbstractTranscoder.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/XMLAbstractTranscoder.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/XMLAbstractTranscoder.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/BooleanKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/BooleanKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/BooleanKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/BooleanKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/DOMImplementationKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/DOMImplementationKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/DOMImplementationKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/DOMImplementationKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/FloatKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/FloatKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/FloatKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/FloatKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/IntegerKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/IntegerKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/IntegerKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/IntegerKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/LengthKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/LengthKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/LengthKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/LengthKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/PaintKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/PaintKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/PaintKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/PaintKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/Rectangle2DKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/Rectangle2DKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/Rectangle2DKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/Rectangle2DKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringArrayKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringArrayKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringArrayKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringArrayKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringKey.java b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringKey.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringKey.java rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/keys/StringKey.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/package.html b/echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/package.html similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/package.html rename to echosvg-transcoder-api/src/main/java/io/sf/carte/echosvg/transcoder/package.html diff --git a/echosvg-transcoder-api/src/main/java/module-info.java b/echosvg-transcoder-api/src/main/java/module-info.java new file mode 100644 index 000000000..577c02df4 --- /dev/null +++ b/echosvg-transcoder-api/src/main/java/module-info.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2020-2024 Carlos Amengual + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Transcoder API. + */ +module io.sf.carte.echosvg.transcoder.api { + + exports io.sf.carte.echosvg.transcoder; + exports io.sf.carte.echosvg.transcoder.keys; + + requires io.sf.carte.echosvg.anim; + + requires transitive java.desktop; + +} diff --git a/echosvg-transcoder-svg/build.gradle b/echosvg-transcoder-svg/build.gradle new file mode 100644 index 000000000..8709599e3 --- /dev/null +++ b/echosvg-transcoder-svg/build.gradle @@ -0,0 +1,17 @@ +plugins { + id 'echosvg.java-conventions' +} + +dependencies { + api project(':echosvg-transcoder-api') + api project(':echosvg-bridge') + implementation project(':echosvg-codec') + implementation "io.sf.carte:css4j-awt:$css4jAwtVersion" + compileOnly "xml-apis:xml-apis:$xmlApisVersion" // Required by Java 8 compat +} + +description = 'io.sf.carte:echosvg-transcoder-svg' + +publishing.publications.maven(MavenPublication).pom { + description = "EchoSVG SVG image transcoders" +} diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/ImageTranscoder.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/ImageTranscoder.java similarity index 99% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/ImageTranscoder.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/ImageTranscoder.java index c4a4d34a9..1eda4fc46 100644 --- a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/ImageTranscoder.java +++ b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/ImageTranscoder.java @@ -34,12 +34,12 @@ import io.sf.carte.echosvg.gvt.renderer.ConcreteImageRendererFactory; import io.sf.carte.echosvg.gvt.renderer.ImageRenderer; import io.sf.carte.echosvg.gvt.renderer.ImageRendererFactory; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderOutput; import io.sf.carte.echosvg.transcoder.TranscodingHints; import io.sf.carte.echosvg.transcoder.keys.BooleanKey; import io.sf.carte.echosvg.transcoder.keys.PaintKey; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * This class enables to transcode an input to an image of any format. diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/JPEGTranscoder.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/JPEGTranscoder.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/JPEGTranscoder.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/JPEGTranscoder.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoder.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoder.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoder.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoder.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderImageIOWriteAdapter.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderImageIOWriteAdapter.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderImageIOWriteAdapter.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderImageIOWriteAdapter.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderInternalCodecWriteAdapter.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderInternalCodecWriteAdapter.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderInternalCodecWriteAdapter.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/PNGTranscoderInternalCodecWriteAdapter.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoder.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoder.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoder.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoder.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoderImageIOWriteAdapter.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoderImageIOWriteAdapter.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoderImageIOWriteAdapter.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/TIFFTranscoderImageIOWriteAdapter.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/package.html b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/package.html similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/package.html rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/package.html diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/resources/Messages.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/resources/Messages.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/image/resources/Messages.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/image/resources/Messages.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/impl/SizingHelper.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/impl/SizingHelper.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/impl/SizingHelper.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/impl/SizingHelper.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/impl/package-info.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/impl/package-info.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/impl/package-info.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/impl/package-info.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/print/PrintTranscoder.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/print/PrintTranscoder.java similarity index 99% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/print/PrintTranscoder.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/print/PrintTranscoder.java index ed5604b01..984719802 100644 --- a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/print/PrintTranscoder.java +++ b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/print/PrintTranscoder.java @@ -38,7 +38,6 @@ import io.sf.carte.echosvg.bridge.BridgeContext; import io.sf.carte.echosvg.ext.awt.RenderingHintsKeyExt; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.Transcoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; @@ -47,6 +46,7 @@ import io.sf.carte.echosvg.transcoder.keys.BooleanKey; import io.sf.carte.echosvg.transcoder.keys.LengthKey; import io.sf.carte.echosvg.transcoder.keys.StringKey; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; /** * This class is a Transcoder that prints SVG images. This class diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/SVGAbstractTranscoder.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg/SVGAbstractTranscoder.java similarity index 99% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/SVGAbstractTranscoder.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg/SVGAbstractTranscoder.java index b899d564b..d5c5ae155 100644 --- a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/SVGAbstractTranscoder.java +++ b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg/SVGAbstractTranscoder.java @@ -16,7 +16,7 @@ limitations under the License. */ -package io.sf.carte.echosvg.transcoder; +package io.sf.carte.echosvg.transcoder.svg; import java.awt.Dimension; import java.awt.geom.AffineTransform; @@ -63,6 +63,11 @@ import io.sf.carte.echosvg.gvt.CanvasGraphicsNode; import io.sf.carte.echosvg.gvt.CompositeGraphicsNode; import io.sf.carte.echosvg.gvt.GraphicsNode; +import io.sf.carte.echosvg.transcoder.TranscoderException; +import io.sf.carte.echosvg.transcoder.TranscoderInput; +import io.sf.carte.echosvg.transcoder.TranscoderOutput; +import io.sf.carte.echosvg.transcoder.TranscodingHints; +import io.sf.carte.echosvg.transcoder.XMLAbstractTranscoder; import io.sf.carte.echosvg.transcoder.impl.SizingHelper; import io.sf.carte.echosvg.transcoder.keys.BooleanKey; import io.sf.carte.echosvg.transcoder.keys.FloatKey; diff --git a/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg/package-info.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg/package-info.java new file mode 100644 index 000000000..af2988e19 --- /dev/null +++ b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/svg/package-info.java @@ -0,0 +1,23 @@ +/* + + See the NOTICE file distributed with this work for additional + information regarding copyright ownership. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + */ + +/** + * Base classes for transcoding from SVG to other formats. + */ +package io.sf.carte.echosvg.transcoder.svg; diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/util/CSSTranscodingHelper.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/util/CSSTranscodingHelper.java similarity index 99% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/util/CSSTranscodingHelper.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/util/CSSTranscodingHelper.java index ad7c75645..ff2bdd979 100644 --- a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/util/CSSTranscodingHelper.java +++ b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/util/CSSTranscodingHelper.java @@ -83,7 +83,6 @@ import io.sf.carte.echosvg.anim.dom.SVGDOMImplementation; import io.sf.carte.echosvg.transcoder.DefaultErrorHandler; import io.sf.carte.echosvg.transcoder.ErrorHandler; -import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.Transcoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; @@ -92,6 +91,7 @@ import io.sf.carte.echosvg.transcoder.image.ImageTranscoder; import io.sf.carte.echosvg.transcoder.image.PNGTranscoder; import io.sf.carte.echosvg.transcoder.impl.SizingHelper; +import io.sf.carte.echosvg.transcoder.svg.SVGAbstractTranscoder; import io.sf.carte.echosvg.util.ParsedURL; import io.sf.carte.echosvg.util.SVGConstants; import io.sf.carte.util.agent.AgentUtil; diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/util/package-info.java b/echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/util/package-info.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/util/package-info.java rename to echosvg-transcoder-svg/src/main/java/io/sf/carte/echosvg/transcoder/util/package-info.java diff --git a/echosvg-transcoder-svg/src/main/java/module-info.java b/echosvg-transcoder-svg/src/main/java/module-info.java new file mode 100644 index 000000000..1c61bc5d7 --- /dev/null +++ b/echosvg-transcoder-svg/src/main/java/module-info.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020-2024 Carlos Amengual + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * SVG to image transcoder. + */ +module io.sf.carte.echosvg.transcoder.svg { + exports io.sf.carte.echosvg.transcoder.image; + exports io.sf.carte.echosvg.transcoder.image.resources; + exports io.sf.carte.echosvg.transcoder.print; + exports io.sf.carte.echosvg.transcoder.svg; + exports io.sf.carte.echosvg.transcoder.util; + + requires transitive io.sf.carte.echosvg.transcoder.api; + requires transitive io.sf.carte.echosvg.bridge; + requires io.sf.carte.echosvg.codec; + requires io.sf.carte.echosvg.i18n; + + requires io.sf.carte.xml.dtd; + requires io.sf.carte.css4j.awt; +} diff --git a/echosvg-transcoder/src/main/resources/io/sf/carte/echosvg/transcoder/image/resources/Messages.properties b/echosvg-transcoder-svg/src/main/resources/io/sf/carte/echosvg/transcoder/image/resources/Messages.properties similarity index 100% rename from echosvg-transcoder/src/main/resources/io/sf/carte/echosvg/transcoder/image/resources/Messages.properties rename to echosvg-transcoder-svg/src/main/resources/io/sf/carte/echosvg/transcoder/image/resources/Messages.properties diff --git a/echosvg-transcoder-svg2svg/build.gradle b/echosvg-transcoder-svg2svg/build.gradle new file mode 100644 index 000000000..decca32e0 --- /dev/null +++ b/echosvg-transcoder-svg2svg/build.gradle @@ -0,0 +1,15 @@ +plugins { + id 'echosvg.java-conventions' +} + +dependencies { + api project(':echosvg-transcoder-api') + implementation project(':echosvg-dom') + implementation project(':echosvg-util') +} + +description = 'io.sf.carte:echosvg-transcoder-svg2svg' + +publishing.publications.maven(MavenPublication).pom { + description = "EchoSVG SVG to SVG transcoder" +} diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/OutputManager.java b/echosvg-transcoder-svg2svg/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/OutputManager.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/OutputManager.java rename to echosvg-transcoder-svg2svg/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/OutputManager.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/PrettyPrinter.java b/echosvg-transcoder-svg2svg/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/PrettyPrinter.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/PrettyPrinter.java rename to echosvg-transcoder-svg2svg/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/PrettyPrinter.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/SVGTranscoder.java b/echosvg-transcoder-svg2svg/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/SVGTranscoder.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/SVGTranscoder.java rename to echosvg-transcoder-svg2svg/src/main/java/io/sf/carte/echosvg/transcoder/svg2svg/SVGTranscoder.java diff --git a/echosvg-transcoder-svg2svg/src/main/java/module-info.java b/echosvg-transcoder-svg2svg/src/main/java/module-info.java new file mode 100644 index 000000000..0c1d95256 --- /dev/null +++ b/echosvg-transcoder-svg2svg/src/main/java/module-info.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2020-2024 Carlos Amengual + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * SVG to SVG transcoder. + */ +module io.sf.carte.echosvg.transcoder.svg2svg { + + exports io.sf.carte.echosvg.transcoder.svg2svg; + + requires transitive io.sf.carte.echosvg.transcoder.api; + requires io.sf.carte.echosvg.dom; + requires io.sf.carte.echosvg.util; + requires io.sf.carte.echosvg.xml; + +} diff --git a/echosvg-transcoder-tosvg/build.gradle b/echosvg-transcoder-tosvg/build.gradle new file mode 100644 index 000000000..65d0ebe1c --- /dev/null +++ b/echosvg-transcoder-tosvg/build.gradle @@ -0,0 +1,15 @@ +plugins { + id 'echosvg.java-conventions' +} + +dependencies { + api project(':echosvg-transcoder-api') + api project(':echosvg-svggen') + implementation project(':echosvg-anim') +} + +description = 'io.sf.carte:echosvg-transcoder-tosvg' + +publishing.publications.maven(MavenPublication).pom { + description = "EchoSVG WMF to SVG transcoder" +} diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/ToSVGAbstractTranscoder.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen/ToSVGAbstractTranscoder.java similarity index 96% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/ToSVGAbstractTranscoder.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen/ToSVGAbstractTranscoder.java index d6e154910..a692e4212 100644 --- a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/ToSVGAbstractTranscoder.java +++ b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen/ToSVGAbstractTranscoder.java @@ -16,7 +16,7 @@ limitations under the License. */ -package io.sf.carte.echosvg.transcoder; +package io.sf.carte.echosvg.transcoder.svggen; import java.io.IOException; import java.io.OutputStream; @@ -33,6 +33,10 @@ import io.sf.carte.echosvg.anim.dom.SVGDOMImplementation; import io.sf.carte.echosvg.svggen.SVGGraphics2D; +import io.sf.carte.echosvg.transcoder.AbstractTranscoder; +import io.sf.carte.echosvg.transcoder.TranscoderException; +import io.sf.carte.echosvg.transcoder.TranscoderOutput; +import io.sf.carte.echosvg.transcoder.TranscodingHints; import io.sf.carte.echosvg.transcoder.keys.BooleanKey; import io.sf.carte.echosvg.transcoder.keys.FloatKey; import io.sf.carte.echosvg.transcoder.keys.IntegerKey; diff --git a/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen/package-info.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen/package-info.java new file mode 100644 index 000000000..f24e36fea --- /dev/null +++ b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/svggen/package-info.java @@ -0,0 +1,23 @@ +/* + + See the NOTICE file distributed with this work for additional + information regarding copyright ownership. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + */ + +/** + * Transcoders that transcode to SVG using {@code SVGGraphics2D}. + */ +package io.sf.carte.echosvg.transcoder.svggen; diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/WMFConstants.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/WMFConstants.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/WMFConstants.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/WMFConstants.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFPainter.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFPainter.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFPainter.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFPainter.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFReader.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFReader.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFReader.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/AbstractWMFReader.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/GdiObject.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/GdiObject.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/GdiObject.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/GdiObject.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/MetaRecord.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/MetaRecord.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/MetaRecord.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/MetaRecord.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/TextureFactory.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/TextureFactory.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/TextureFactory.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/TextureFactory.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFFont.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFFont.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFFont.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFFont.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFHeaderProperties.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFHeaderProperties.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFHeaderProperties.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFHeaderProperties.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFPainter.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFPainter.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFPainter.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFPainter.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFRecordStore.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFRecordStore.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFRecordStore.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFRecordStore.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFTranscoder.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFTranscoder.java similarity index 98% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFTranscoder.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFTranscoder.java index 19f214a7d..59cd90d2b 100644 --- a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFTranscoder.java +++ b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFTranscoder.java @@ -33,10 +33,10 @@ import org.w3c.dom.Element; import io.sf.carte.echosvg.svggen.SVGGraphics2D; -import io.sf.carte.echosvg.transcoder.ToSVGAbstractTranscoder; import io.sf.carte.echosvg.transcoder.TranscoderException; import io.sf.carte.echosvg.transcoder.TranscoderInput; import io.sf.carte.echosvg.transcoder.TranscoderOutput; +import io.sf.carte.echosvg.transcoder.svggen.ToSVGAbstractTranscoder; /** * This class implements the Transcoder interface and can convert a @@ -193,7 +193,7 @@ public void transcode(TranscoderInput input, TranscoderOutput output) throws Tra /** * set precision otherwise Ellipses aren't working (for example) (because of - * Decimal format modifications ins SVGGenerator Context + * Decimal format modifications in SVGGenerator Context) */ svgGenerator.getGeneratorContext().setPrecision(4); diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFUtilities.java b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFUtilities.java similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFUtilities.java rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/WMFUtilities.java diff --git a/echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/package.html b/echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/package.html similarity index 100% rename from echosvg-transcoder/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/package.html rename to echosvg-transcoder-tosvg/src/main/java/io/sf/carte/echosvg/transcoder/wmf/tosvg/package.html diff --git a/echosvg-transcoder-tosvg/src/main/java/module-info.java b/echosvg-transcoder-tosvg/src/main/java/module-info.java new file mode 100644 index 000000000..24d17e12c --- /dev/null +++ b/echosvg-transcoder-tosvg/src/main/java/module-info.java @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2020-2024 Carlos Amengual + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * WMF to SVG transcoder. + */ +module io.sf.carte.echosvg.transcoder.tosvg { + exports io.sf.carte.echosvg.transcoder.svggen; + exports io.sf.carte.echosvg.transcoder.wmf; + exports io.sf.carte.echosvg.transcoder.wmf.tosvg; + + requires transitive io.sf.carte.echosvg.transcoder.api; + requires transitive io.sf.carte.echosvg.svggen; + requires io.sf.carte.echosvg.anim; +} diff --git a/echosvg-transcoder/build.gradle b/echosvg-transcoder/build.gradle index 0dc2eeb66..29cc49a1b 100644 --- a/echosvg-transcoder/build.gradle +++ b/echosvg-transcoder/build.gradle @@ -3,15 +3,14 @@ plugins { } dependencies { - api project(':echosvg-bridge') - api project(':echosvg-svggen') - implementation project(':echosvg-codec') - implementation "io.sf.carte:css4j-awt:$css4jAwtVersion" - compileOnly "xml-apis:xml-apis:$xmlApisVersion" // Required by Java 8 compat + api project(':echosvg-transcoder-api') + api project(':echosvg-transcoder-svg') + api project(':echosvg-transcoder-svg2svg') + api project(':echosvg-transcoder-tosvg') } description = 'io.sf.carte:echosvg-transcoder' publishing.publications.maven(MavenPublication).pom { - description = "EchoSVG SVG transcoder" + description = "EchoSVG SVG transcoder aggregate module" } diff --git a/echosvg-transcoder/src/main/java/module-info.java b/echosvg-transcoder/src/main/java/module-info.java index b84e7f8aa..d5dd29249 100644 --- a/echosvg-transcoder/src/main/java/module-info.java +++ b/echosvg-transcoder/src/main/java/module-info.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2022 Carlos Amengual + * Copyright (c) 2020-2024 Carlos Amengual * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,25 +15,13 @@ */ /** - * SVG transcoder. + * SVG transcoder meta-module. */ module io.sf.carte.echosvg.transcoder { - exports io.sf.carte.echosvg.transcoder; - exports io.sf.carte.echosvg.transcoder.image; - exports io.sf.carte.echosvg.transcoder.image.resources; - exports io.sf.carte.echosvg.transcoder.keys; - exports io.sf.carte.echosvg.transcoder.print; - exports io.sf.carte.echosvg.transcoder.svg2svg; - exports io.sf.carte.echosvg.transcoder.util; - exports io.sf.carte.echosvg.transcoder.wmf; - exports io.sf.carte.echosvg.transcoder.wmf.tosvg; - requires transitive io.sf.carte.echosvg.bridge; - requires transitive io.sf.carte.echosvg.svggen; - requires io.sf.carte.echosvg.codec; - requires io.sf.carte.echosvg.i18n; - requires io.sf.carte.echosvg.xml; + requires transitive io.sf.carte.echosvg.transcoder.api; + requires transitive io.sf.carte.echosvg.transcoder.svg; + requires transitive io.sf.carte.echosvg.transcoder.svg2svg; + requires transitive io.sf.carte.echosvg.transcoder.tosvg; - requires io.sf.carte.xml.dtd; - requires io.sf.carte.css4j.awt; } diff --git a/echosvg-xml/build.gradle b/echosvg-xml/build.gradle index ade5c07b1..13f4ae7ca 100644 --- a/echosvg-xml/build.gradle +++ b/echosvg-xml/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { api project(':echosvg-util') - implementation project(':echosvg-i18n') + api project(':echosvg-i18n') } description = 'io.sf.carte:echosvg-xml' diff --git a/settings.gradle b/settings.gradle index 9e9f09a59..3d32c28ef 100644 --- a/settings.gradle +++ b/settings.gradle @@ -28,6 +28,10 @@ include(':echosvg-script') include(':echosvg-swing') include(':echosvg-codec') include(':echosvg-transcoder') +include(':echosvg-transcoder-api') +include(':echosvg-transcoder-svg') +include(':echosvg-transcoder-svg2svg') +include(':echosvg-transcoder-tosvg') include(':echosvg-extension') include(':echosvg-svgpp') include(':echosvg-ttf2svg')