deweese 2003/10/12 09:55:50 Modified: samples mines.svg sources/org/apache/batik/bridge UpdateManager.java sources/org/apache/batik/svggen/font Font.java sources/org/apache/batik/svggen/font/table CmapFormat4.java sources/org/apache/batik/swing/svg JSVGComponent.java Log: 1) Fixed a bug in the handling of Cmap type 4 TrueType fonts in ttf2svg. 2) The UpdateManager now disposes the BridgeContext before calling UpdateManagerStopped event listeners. Revision Changes Path 1.6 +65 -60 xml-batik/samples/mines.svg Index: mines.svg =================================================================== RCS file: /home/cvs/xml-batik/samples/mines.svg,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- mines.svg 8 Aug 2003 11:39:29 -0000 1.5 +++ mines.svg 12 Oct 2003 16:55:49 -0000 1.6 @@ -351,70 +351,73 @@ ]]> </script> - <defs> - <radialGradient id="bombGrad" gradientUnits="userSpaceOnUse" - cx="5" cy="6.5" fx="4" fy="5" r="2.5"> - <stop offset="0%" stop-color="#FFF"/> - <stop offset="20%" stop-color="#888"/> - <stop offset="100%" stop-color="#000"/> - </radialGradient> - <path id="empty" style="fill:#AAA; stroke:#DDD; stroke-width:0.5;" - d="M0.25,0.25 h9.5 v9.5 h-9.5 v-9.5"/> - - <g id="blank" - ><rect style="fill:#AAA" width="10" height="10" + <defs> + <radialGradient id="bombGrad" gradientUnits="userSpaceOnUse" + cx="5" cy="6.5" fx="4" fy="5" r="2.5"> + <stop offset="0%" stop-color="#FFF"/> + <stop offset="20%" stop-color="#888"/> + <stop offset="100%" stop-color="#000"/> + </radialGradient> + <path id="empty" style="fill:#AAA; stroke:#DDD; stroke-width:0.5;" + d="M0.25,0.25 h9.5 v9.5 h-9.5 v-9.5"/> + + <g id="blank" + ><rect style="fill:#AAA" width="10" height="10" /><path style="fill:#DDD" - d="M0,0 h10 l-1,1 h-8 v8 l-1,1 v-10" + d="M0,0 h10 l-1,1 h-8 v8 l-1,1 v-10" /><path style="fill:#888" - d="M10,10 h-10 l1,-1 h8 v-8 l1,-1 v10" - /></g> - - <use id="square0" xlink:href="#empty"/> - <g id="square1" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#008">1</text></g> - <g id="square2" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#00C">2</text></g> - <g id="square3" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#40F">3</text></g> - <g id="square4" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#80C">4</text></g> - <g id="square5" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#C0C">5</text></g> - <g id="square6" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#F08">6</text></g> - <g id="square7" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#F04">7</text></g> - <g id="square8" style="text-anchor:middle; font-size:8;" - ><use xlink:href="#empty" - /><text x="5" y="8" fill="#F00">8</text></g> - - <g id="bomb" - ><use xlink:href="#empty" + d="M10,10 h-10 l1,-1 h8 v-8 l1,-1 v10" + /></g> + + <use id="square0" xlink:href="#empty"/> + <g id="square1" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#008" pointer-events="none">1</text></g> + <g id="square2" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#00C" pointer-events="none">2</text></g> + <g id="square3" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#40F" pointer-events="none">3</text></g> + <g id="square4" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#80C" pointer-events="none">4</text></g> + <g id="square5" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#C0C" pointer-events="none">5</text></g> + <g id="square6" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#F08" pointer-events="none">6</text></g> + <g id="square7" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#F04" pointer-events="none">7</text></g> + <g id="square8" style="text-anchor:middle; font-size:8;" + ><use xlink:href="#empty" + /><text x="5" y="8" fill="#F00" pointer-events="none">8</text></g> + + <g id="bomb" + ><use xlink:href="#empty" /><rect fill="#000" x="4" y="3" width="2" height="2" /><circle fill="url(#bombGrad)" cx="5" cy="6.5" r="2.5" /><path fill="none" stroke="#000" stroke-width="0.3" - d="M5,3 c0,-1.5 1.5,-1.5 1.5,0 c0,1.5 1.5,1.5 1.5,0" - /></g> - - <g id="flag" - ><use xlink:href="#blank" + d="M5,3 c0,-1.5 1.5,-1.5 1.5,0 c0,1.5 1.5,1.5 1.5,0" + /></g> + + <g id="flag" + ><use xlink:href="#blank" /><path d="M3.5,2 h.5 v6.5 h-1 l.5,-6.5" /><path fill="crimson" d="M4,2 l4,1.5 l-4,1.5 z" - /></g> - </defs> - - <g id="body"> - <text id="title" x="25" y="60" font-size="40">SVG Mines</text> - <text id="mines" x="250" y="30" font-size="20">Mines Left: </text> + /></g> + </defs> + + <g id="body"> + <text id="title" x="25" y="60" font-size="40" + pointer-events="none">SVG Mines</text> + <text id="mines" x="250" y="30" font-size="20" + pointer-events="none">Mines Left: </text> - <text id="boardsz" x="250" y="54" font-size="20">Board Size: </text> + <text id="boardsz" x="250" y="54" font-size="20" + pointer-events="none">Board Size: </text> <g transform="translate(242, 38)" fill="black"> <path onclick="largerBoard(evt)" d="M2.5,0 l-2.5,7 h5 z"/> @@ -430,14 +433,16 @@ Middle or Control: show surround</desc> <circle cx="430" cy="18" r="12" fill="grey" stroke="lightgrey" stroke-width="2" /> - <text font-size="15" fill="blue" x="430" y="25" >?</text> + <text font-size="15" fill="blue" x="430" y="25" + pointer-events="none">?</text> </g> <g onclick="newGame()"> <desc xml:space="preserve">Start new game</desc> <circle cx="430" cy="48" r="12" fill="grey" stroke="lightgrey" stroke-width="2" /> - <text font-size="10" fill="blue" x="430" y="53" >NG</text> + <text font-size="10" fill="blue" x="430" y="53" + pointer-events="none">NG</text> </g> </g> @@ -450,7 +455,7 @@ </g> </g> <text id="working" fill="green" x="25" y="60" font-size="40" - >Working</text> + pointer-events="none">Working</text> </g> <!-- ============================================================= --> 1.27 +8 -2 xml-batik/sources/org/apache/batik/bridge/UpdateManager.java Index: UpdateManager.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/UpdateManager.java,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- UpdateManager.java 25 Sep 2003 00:45:11 -0000 1.26 +++ UpdateManager.java 12 Oct 2003 16:55:49 -0000 1.27 @@ -350,9 +350,15 @@ ((EventTarget)(document.getDocumentElement())). dispatchEvent(evt); running = false; - + + // Now shut everything down and disconnect + // everything before we send the + // UpdateMangerStopped event. scriptingEnvironment.interrupt(); updateRunnableQueue.getThread().interrupt(); + bridgeContext.dispose(); + + // Send the UpdateManagerStopped event. fireEvent(stoppedDispatcher, new UpdateManagerEvent(this, null, null)); } 1.5 +4 -3 xml-batik/sources/org/apache/batik/svggen/font/Font.java Index: Font.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/font/Font.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Font.java 8 Aug 2003 11:39:22 -0000 1.4 +++ Font.java 12 Oct 2003 16:55:49 -0000 1.5 @@ -190,7 +190,8 @@ // Load each of the tables for (int i = 0; i < tableDirectory.getNumTables(); i++) { - tables[i] = TableFactory.create(tableDirectory.getEntry(i), raf); + tables[i] = TableFactory.create + (tableDirectory.getEntry(i), raf); } raf.close(); @@ -212,7 +213,7 @@ loca.init(maxp.getNumGlyphs(), head.getIndexToLocFormat() == 0); glyf.init(maxp.getNumGlyphs(), loca); } catch (IOException e) { - System.err.println(e.getMessage()); + e.printStackTrace(); } } 1.3 +3 -2 xml-batik/sources/org/apache/batik/svggen/font/table/CmapFormat4.java Index: CmapFormat4.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/font/table/CmapFormat4.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- CmapFormat4.java 8 Aug 2003 11:39:22 -0000 1.2 +++ CmapFormat4.java 12 Oct 2003 16:55:50 -0000 1.3 @@ -59,6 +59,7 @@ */ public class CmapFormat4 extends CmapFormat { + public int language; private int segCountX2; private int searchRange; private int entrySelector; @@ -97,7 +98,7 @@ } // Whatever remains of this header belongs in glyphIdArray - int count = (length - 24) / 2; + int count = (length - 16 - (segCount*8)) / 2; glyphIdArray = new int[count]; for (int i = 0; i < count; i++) { glyphIdArray[i] = raf.readUnsignedShort(); 1.85 +38 -7 xml-batik/sources/org/apache/batik/swing/svg/JSVGComponent.java Index: JSVGComponent.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/JSVGComponent.java,v retrieving revision 1.84 retrieving revision 1.85 diff -u -r1.84 -r1.85 --- JSVGComponent.java 7 Sep 2003 22:25:28 -0000 1.84 +++ JSVGComponent.java 12 Oct 2003 16:55:50 -0000 1.85 @@ -356,6 +356,8 @@ protected Dimension prevComponentSize; + protected Runnable afterStopRunnable = null; + /** * Creates a new JSVGComponent. */ @@ -589,6 +591,16 @@ * queue thread. It returns immediately. */ protected void stopThenRun(final Runnable r) { + synchronized (this) { + if (afterStopRunnable != null) { + // Have it run our new runnable, and not + // run the 'old' runnable. + afterStopRunnable = r; + return; + } + afterStopRunnable = r; + } + if (documentLoader != null) { documentLoader.addSVGDocumentLoaderListener (new SVGDocumentLoaderAdapter() { @@ -603,7 +615,10 @@ // Remove ourselves from the doc loader, // and install the new document. sdl.removeSVGDocumentLoaderListener(this); - EventQueue.invokeLater(r); + synchronized (JSVGComponent.this) { + EventQueue.invokeLater(afterStopRunnable); + afterStopRunnable = null; + } } }); stopProcessing(); @@ -621,7 +636,10 @@ // Remove ourselves from the old tree builder, // and install the new document. gtb.removeGVTTreeBuilderListener(this); - EventQueue.invokeLater(r); + synchronized (JSVGComponent.this) { + EventQueue.invokeLater(afterStopRunnable); + afterStopRunnable = null; + } } }); stopProcessing(); @@ -636,7 +654,10 @@ // Remove ourselves from the old update manger, // and install the new document. um.removeUpdateManagerListener(this); - EventQueue.invokeLater(r); + synchronized (JSVGComponent.this) { + EventQueue.invokeLater(afterStopRunnable); + afterStopRunnable = null; + } } // There really should be an updateManagerAdapter. public void managerStarted(UpdateManagerEvent e) { } @@ -664,7 +685,10 @@ // Remove ourselves from the old update manger, // and install the new document. gtr.removeGVTTreeRendererListener(this); - EventQueue.invokeLater(r); + synchronized (JSVGComponent.this) { + EventQueue.invokeLater(afterStopRunnable); + afterStopRunnable = null; + } } }); stopProcessing(); @@ -685,13 +709,20 @@ // Remove ourselves from the old onload dispacher // and install the new document. sled.removeSVGLoadEventDispatcherListener(this); - EventQueue.invokeLater(r); + synchronized (JSVGComponent.this) { + EventQueue.invokeLater(afterStopRunnable); + afterStopRunnable = null; + } } }); stopProcessing(); } else { stopProcessing(); - r.run(); + synchronized (this) { + Runnable asr = afterStopRunnable; + afterStopRunnable = null; + asr.run(); + } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]