Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenwrite.git

Merge pull request #157 from DaveJarvis/1_migrate_batik_to_echosvg Migrate Batik to EchoSVG

AuthorDave Jarvis <email>
Date2022-09-05 12:24:28 GMT-0700
Commit05568211d02a51d0f5b6c5bc534e37f8e74cccac
Parentb932316
Delta19 lines added, 37 lines removed, 18-line decrease
src/main/java/com/keenwrite/preview/SvgRasterizer.java
package com.keenwrite.preview;
-import org.apache.batik.anim.dom.SAXSVGDocumentFactory;
-import org.apache.batik.bridge.BridgeContext;
-import org.apache.batik.bridge.DocumentLoader;
-import org.apache.batik.bridge.UserAgent;
-import org.apache.batik.bridge.UserAgentAdapter;
-import org.apache.batik.css.parser.Parser;
-import org.apache.batik.gvt.renderer.ImageRenderer;
-import org.apache.batik.transcoder.*;
-import org.apache.batik.transcoder.image.ImageTranscoder;
-import org.apache.batik.util.XMLResourceDescriptor;
-import org.w3c.css.sac.CSSException;
+import io.sf.carte.echosvg.anim.dom.SAXSVGDocumentFactory;
+import io.sf.carte.echosvg.bridge.BridgeContext;
+import io.sf.carte.echosvg.bridge.DocumentLoader;
+import io.sf.carte.echosvg.bridge.UserAgent;
+import io.sf.carte.echosvg.bridge.UserAgentAdapter;
+import io.sf.carte.echosvg.gvt.renderer.ImageRenderer;
+import io.sf.carte.echosvg.transcoder.ErrorHandler;
+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 org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import static com.keenwrite.events.StatusEvent.clue;
import static com.keenwrite.preview.HighQualityRenderingHints.RENDERING_HINTS;
+import static io.sf.carte.echosvg.bridge.UnitProcessor.createContext;
+import static io.sf.carte.echosvg.bridge.UnitProcessor.svgHorizontalLengthToUserSpace;
+import static io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder.KEY_WIDTH;
+import static io.sf.carte.echosvg.transcoder.TranscodingHints.Key;
+import static io.sf.carte.echosvg.transcoder.image.ImageTranscoder.KEY_PIXEL_UNIT_TO_MILLIMETER;
+import static io.sf.carte.echosvg.util.SVGConstants.SVG_WIDTH_ATTRIBUTE;
import static java.awt.image.BufferedImage.TYPE_INT_RGB;
import static java.text.NumberFormat.getIntegerInstance;
-import static org.apache.batik.bridge.UnitProcessor.createContext;
-import static org.apache.batik.bridge.UnitProcessor.svgHorizontalLengthToUserSpace;
-import static org.apache.batik.transcoder.SVGAbstractTranscoder.KEY_WIDTH;
-import static org.apache.batik.transcoder.TranscodingHints.Key;
-import static org.apache.batik.transcoder.image.ImageTranscoder.KEY_PIXEL_UNIT_TO_MILLIMETER;
-import static org.apache.batik.util.SVGConstants.SVG_WIDTH_ATTRIBUTE;
-import static org.apache.batik.util.XMLResourceDescriptor.getXMLParserClassName;
/**
* Responsible for converting SVG images into rasterized PNG images.
*/
public final class SvgRasterizer {
- /**
- * <a href="https://issues.apache.org/jira/browse/BATIK-1112">Bug fix</a>
- */
- public static final class InkscapeCssParser extends Parser {
- public void parseStyleDeclaration( final String source )
- throws CSSException, IOException {
- super.parseStyleDeclaration(
- source.replaceAll( "-inkscape-font-specification:[^;\"]*;", "" )
- );
- }
- }
/**
clue( ex );
}
- }
-
- static {
- XMLResourceDescriptor.setCSSParserClassName(
- InkscapeCssParser.class.getName()
- );
}
private static final UserAgent USER_AGENT = new UserAgentAdapter();
private static final BridgeContext BRIDGE_CONTEXT = new BridgeContext(
USER_AGENT, new DocumentLoader( USER_AGENT )
);
private static final ErrorHandler sErrorHandler = new SvgErrorHandler();
private static final SAXSVGDocumentFactory FACTORY_DOM =
- new SAXSVGDocumentFactory( getXMLParserClassName() );
+ new SAXSVGDocumentFactory();
private static final NumberFormat INT_FORMAT = getIntegerInstance();
final var root = document.getDocumentElement();
final var width = root.getAttribute( SVG_WIDTH_ATTRIBUTE );
+
return rasterizeString( xml, INT_FORMAT.parse( width ).intValue() );
}