• R/O
  • SSH
  • HTTPS

copper: Commit


Commit MetaInfo

Revision1569 (tree)
Time2018-07-09 14:10:42
Authormiyabe

Log Message

(empty log message)

Change Summary

Incremental Difference

--- copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/Dimension2DImpl.java (revision 1568)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/Dimension2DImpl.java (nonexistent)
@@ -1,28 +0,0 @@
1-package jp.cssj.homare.impl.ua.svg;
2-
3-import java.awt.geom.Dimension2D;
4-
5-public class Dimension2DImpl extends Dimension2D {
6- protected double width, height;
7-
8- public Dimension2DImpl(double width, double height) {
9- this.setSize(width, height);
10- }
11-
12- public double getHeight() {
13- return this.height;
14- }
15-
16- public double getWidth() {
17- return this.width;
18- }
19-
20- public void setSize(double width, double height) {
21- this.width = width;
22- this.height = height;
23- }
24-
25- public String toString() {
26- return super.toString() + "[" + this.width + "," + this.height + "]";
27- }
28-}
Deleted: svn:keywords
## -1 +0,0 ##
-Id
\ No newline at end of property
--- copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/MyUserAgent.java (revision 1568)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/MyUserAgent.java (revision 1569)
@@ -4,21 +4,20 @@
44
55 import org.apache.batik.bridge.NoLoadScriptSecurity;
66 import org.apache.batik.bridge.ScriptSecurity;
7-import org.apache.batik.bridge.UserAgentAdapter;
87 import org.apache.batik.util.ParsedURL;
98
109 import jp.cssj.homare.message.MessageCodes;
1110 import jp.cssj.homare.ua.UserAgent;
11+import jp.cssj.sakae.svg.UserAgentImpl;
1212
13-class MyUserAgent extends UserAgentAdapter {
13+class MyUserAgent extends UserAgentImpl {
1414 protected final String docURI;
1515 protected final UserAgent ua;
16- protected final Dimension2D viewport;
1716
1817 public MyUserAgent(String docURI, UserAgent ua, Dimension2D viewport) {
18+ super(viewport);
1919 this.docURI = docURI;
2020 this.ua = ua;
21- this.viewport = viewport;
2221 this.addStdFeatures();
2322 }
2423
--- copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/SVGImageLoader.java (revision 1568)
+++ copper/trunk/homare/src/main/java/jp/cssj/homare/impl/ua/svg/SVGImageLoader.java (revision 1569)
@@ -17,6 +17,7 @@
1717 import org.apache.batik.anim.dom.SVGOMSVGElement;
1818 import org.apache.batik.bridge.BridgeContext;
1919 import org.apache.batik.bridge.BridgeException;
20+import org.apache.batik.bridge.DocumentLoader;
2021 import org.apache.batik.bridge.GVTBuilder;
2122 import org.apache.batik.gvt.GraphicsNode;
2223 import org.apache.batik.util.ParsedURL;
@@ -29,8 +30,10 @@
2930 import jp.cssj.homare.ua.UserAgent;
3031 import jp.cssj.resolver.Source;
3132 import jp.cssj.sakae.gc.image.Image;
33+import jp.cssj.sakae.svg.Dimension2DImpl;
3234 import jp.cssj.sakae.svg.GVTBuilderImpl;
3335 import jp.cssj.sakae.svg.SVGImage;
36+import jp.cssj.sakae.svg.UserAgentImpl;
3437
3538 public class SVGImageLoader implements ImageLoader {
3639 private static final Logger LOG = Logger.getLogger(SVGImageLoader.class.getName());
@@ -121,12 +124,11 @@
121124 return doc;
122125 }
123126
124- public static final Dimension2D VIEWPORT = new Dimension2DImpl(400, 400);
127+ private static final Dimension2D VIEWPORT = new Dimension2DImpl(400, 400);
125128
126129 public Image getImage(String docURI, final Document doc, final UserAgent ua) throws IOException {
127130 try {
128131 SVGOMSVGElement root = (SVGOMSVGElement) doc.getDocumentElement();
129-
130132 Dimension2D viewport = VIEWPORT;
131133 try {
132134 SVGRect r = root.getViewBox().getBaseVal();
@@ -134,7 +136,9 @@
134136 } catch (Exception e) {
135137 // ignore
136138 }
137- BridgeContext ctx = new BridgeContextImpl(docURI, ua, viewport, this);
139+ UserAgentImpl uax = new UserAgentImpl(viewport);
140+ DocumentLoader loader = new DocumentLoader(uax);
141+ BridgeContext ctx = new BridgeContext(uax, loader);
138142 GVTBuilder gvt = new GVTBuilderImpl();
139143 GraphicsNode gvtRoot = gvt.build(ctx, doc);
140144
--- copper/trunk/sakae/sakae-core/src/main/java/jp/cssj/sakae/gc/font/util/FontUtils.java (revision 1568)
+++ copper/trunk/sakae/sakae-core/src/main/java/jp/cssj/sakae/gc/font/util/FontUtils.java (revision 1569)
@@ -69,6 +69,7 @@
6969 * @param text
7070 */
7171 public static void drawText(GC gc, DrawableFont font, Text text) throws GraphicsException {
72+ gc.begin();
7273 FontStyle fontStyle = text.getFontStyle();
7374 byte direction = fontStyle.getDirection();
7475 double fontSize = fontStyle.getSize();
@@ -219,6 +220,7 @@
219220 gc.setLineWidth(xlineWidth);
220221 gc.setStrokePaint(xstrokePaint);
221222 }
223+ gc.end();
222224 }
223225
224226 private static void drawPath(GC gc, GeneralPath path, short textMode) {
--- copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/font/emoji/EmojiFont.java (revision 1568)
+++ copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/font/emoji/EmojiFont.java (revision 1569)
@@ -2,6 +2,7 @@
22
33 import java.awt.Graphics2D;
44 import java.awt.geom.AffineTransform;
5+import java.awt.geom.Dimension2D;
56 import java.io.IOException;
67 import java.io.InputStream;
78 import java.util.HashMap;
@@ -13,7 +14,6 @@
1314 import org.apache.batik.bridge.DocumentLoader;
1415 import org.apache.batik.bridge.GVTBuilder;
1516 import org.apache.batik.bridge.UserAgent;
16-import org.apache.batik.bridge.UserAgentAdapter;
1717 import org.apache.batik.gvt.GraphicsNode;
1818 import org.apache.batik.util.XMLResourceDescriptor;
1919
@@ -24,8 +24,10 @@
2424 import jp.cssj.sakae.gc.GraphicsException;
2525 import jp.cssj.sakae.gc.font.util.FontUtils;
2626 import jp.cssj.sakae.gc.text.Text;
27+import jp.cssj.sakae.svg.Dimension2DImpl;
2728 import jp.cssj.sakae.svg.GVTBuilderImpl;
2829 import jp.cssj.sakae.svg.SVGBridgeGraphics2D;
30+import jp.cssj.sakae.svg.UserAgentImpl;
2931
3032 class EmojiFont implements ImageFont {
3133 private static final long serialVersionUID = 2L;
@@ -69,20 +71,22 @@
6971 FontUtils.drawText(gc, this, text);
7072 }
7173
72- private final SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(
73- XMLResourceDescriptor.getXMLParserClassName());
74- private final GVTBuilder builder = new GVTBuilderImpl(true);
75- private final UserAgent ua = new UserAgentAdapter();
76- private final DocumentLoader loader = new DocumentLoader(ua);
7774 private final Map<Integer, GraphicsNode> gidToEmoji = new HashMap<Integer, GraphicsNode>();
78-
75+ private static final Dimension2D VIEWPORT = new Dimension2DImpl(128, 128);
76+
7977 public void drawGlyphForGid(GC gc, int gid, AffineTransform at) {
8078 GraphicsNode gvtRoot = this.gidToEmoji.get(gid);
8179 if (gvtRoot == null) {
82- try (InputStream in = EmojiFont.class
80+ try (InputStream in = EmojiFontSource.class
8381 .getResourceAsStream("emoji_u" + Integer.toHexString(gid).toLowerCase() + ".svg")) {
84- SVGOMDocument doc = (SVGOMDocument) this.factory.createDocument(null, in);
85- gvtRoot = this.builder.build(new BridgeContext(this.ua, this.loader), doc);
82+ SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(XMLResourceDescriptor.getXMLParserClassName());
83+ SVGOMDocument doc = (SVGOMDocument) factory.createDocument(null, in);
84+ UserAgent ua = new UserAgentImpl(VIEWPORT);
85+ DocumentLoader loader = new DocumentLoader(ua);
86+ BridgeContext ctx = new BridgeContext(ua, loader);
87+ ctx.setDynamic(false);
88+ GVTBuilder gvt = new GVTBuilderImpl();
89+ gvtRoot = gvt.build(ctx, doc);
8690 this.gidToEmoji.put(gid, gvtRoot);
8791 } catch (Exception e) {
8892 e.printStackTrace();
@@ -91,18 +95,18 @@
9195 if (gvtRoot == null) {
9296 return;
9397 }
94-
9598
9699 gc.begin();
97- Graphics2D g2d = new SVGBridgeGraphics2D(gc);
98100 if (at != null) {
99- g2d.transform(at);
101+ gc.transform(at);
100102 }
101- AffineTransform t = AffineTransform.getTranslateInstance(0, -this.source.getAscent());
102- t.scale(1000, 1000);
103- g2d.transform(t);
103+ gc.transform(AffineTransform.getTranslateInstance(0, -this.source.getAscent()));
104+ gc.transform(AffineTransform.getScaleInstance(1000.0/VIEWPORT.getWidth(), 1000.0/VIEWPORT.getHeight()));
105+ gc.begin();
106+ Graphics2D g2d = new SVGBridgeGraphics2D(gc);
104107 gvtRoot.paint(g2d);
105108 g2d.dispose();
106109 gc.end();
110+ gc.end();
107111 }
108112 }
--- copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/font/emoji/EmojiFontSource.java (revision 1568)
+++ copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/font/emoji/EmojiFontSource.java (revision 1569)
@@ -66,7 +66,7 @@
6666 }
6767
6868 public boolean canDisplay(int c) {
69- return EmojiFont.class.getResource("emoji_u"+Integer.toHexString(c).toLowerCase()+".svg") != null;
69+ return EmojiFontSource.class.getResource("emoji_u"+Integer.toHexString(c).toLowerCase()+".svg") != null;
7070 }
7171
7272 public Panose getPanose() {
--- copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/svg/Dimension2DImpl.java (nonexistent)
+++ copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/svg/Dimension2DImpl.java (revision 1569)
@@ -0,0 +1,28 @@
1+package jp.cssj.sakae.svg;
2+
3+import java.awt.geom.Dimension2D;
4+
5+public class Dimension2DImpl extends Dimension2D {
6+ protected double width, height;
7+
8+ public Dimension2DImpl(double width, double height) {
9+ this.setSize(width, height);
10+ }
11+
12+ public double getHeight() {
13+ return this.height;
14+ }
15+
16+ public double getWidth() {
17+ return this.width;
18+ }
19+
20+ public void setSize(double width, double height) {
21+ this.width = width;
22+ this.height = height;
23+ }
24+
25+ public String toString() {
26+ return super.toString() + "[" + this.width + "," + this.height + "]";
27+ }
28+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/svg/SVGImage.java (revision 1568)
+++ copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/svg/SVGImage.java (revision 1569)
@@ -38,11 +38,11 @@
3838 }
3939
4040 public void drawTo(GC gc) throws GraphicsException {
41- gc.begin();
42- Graphics2D g2d = new SVGBridgeGraphics2D(gc);
43- this.gvtRoot.paint(g2d);
44- g2d.dispose();
45- gc.end();
41+ gc.begin();
42+ Graphics2D g2d = new SVGBridgeGraphics2D(gc);
43+ this.gvtRoot.paint(g2d);
44+ g2d.dispose();
45+ gc.end();
4646 }
4747
4848 public String getAltString() {
--- copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/svg/UserAgentImpl.java (nonexistent)
+++ copper/trunk/sakae/sakae-pdf/src/main/java/jp/cssj/sakae/svg/UserAgentImpl.java (revision 1569)
@@ -0,0 +1,18 @@
1+package jp.cssj.sakae.svg;
2+
3+import java.awt.geom.Dimension2D;
4+
5+import org.apache.batik.bridge.UserAgentAdapter;
6+
7+public class UserAgentImpl extends UserAgentAdapter {
8+ protected final Dimension2D viewport;
9+
10+ public UserAgentImpl(Dimension2D viewport) {
11+ this.viewport = viewport;
12+ this.addStdFeatures();
13+ }
14+
15+ public Dimension2D getViewportSize() {
16+ return this.viewport;
17+ }
18+}
\ No newline at end of file
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Show on old repository browser