Cleaner fix for issue 1075

git-svn-id: https://tesseract-ocr.googlecode.com/svn/trunk@1033 d0cd1f9f-072b-0410-8dd7-cf729c803f20
This commit is contained in:
theraysmith@gmail.com 2014-01-30 02:20:06 +00:00
parent 4585a4c9df
commit d1e4f27acb
3 changed files with 25 additions and 24 deletions

View File

@ -11,9 +11,15 @@
package com.google.scrollview.events; package com.google.scrollview.events;
import com.google.scrollview.ScrollView; import com.google.scrollview.ScrollView;
import com.google.scrollview.ui.SVWindow;
import com.google.scrollview.events.SVEvent; import com.google.scrollview.events.SVEvent;
import com.google.scrollview.events.SVEventType; import com.google.scrollview.events.SVEventType;
import com.google.scrollview.ui.SVWindow;
import org.piccolo2d.PCamera;
import org.piccolo2d.PNode;
import org.piccolo2d.event.PBasicInputEventHandler;
import org.piccolo2d.event.PInputEvent;
import org.piccolo2d.nodes.PPath;
import java.awt.Color; import java.awt.Color;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@ -25,12 +31,6 @@ import java.awt.event.WindowListener;
import javax.swing.Timer; import javax.swing.Timer;
import org.piccolo2d.PCamera;
import org.piccolo2d.PNode;
import org.piccolo2d.event.PBasicInputEventHandler;
import org.piccolo2d.event.PInputEvent;
import org.piccolo2d.nodes.PPath;
/** /**
* The ScrollViewEventHandler takes care of any events which might happen on the * The ScrollViewEventHandler takes care of any events which might happen on the
* canvas and converts them to an according SVEvent, which is (using the * canvas and converts them to an according SVEvent, which is (using the

View File

@ -47,13 +47,18 @@ public class SVImageHandler {
try { try {
newRead = in.read(charbuffer, numRead, size - numRead); newRead = in.read(charbuffer, numRead, size - numRead);
} catch (IOException e) { } catch (IOException e) {
System.out.println("Failed to read image data from socket" + e.getMessage()); System.out.println("Failed to read image data from socket:" + e.getMessage());
return null;
} }
if (newRead < 0) { if (newRead < 0) {
return null; return null;
} }
numRead += newRead; numRead += newRead;
} }
if (numRead != size) {
System.out.println("Failed to read image data from socket");
return null;
}
// Convert the character data to binary. // Convert the character data to binary.
byte[] binarydata = DatatypeConverter.parseBase64Binary(new String(charbuffer)); byte[] binarydata = DatatypeConverter.parseBase64Binary(new String(charbuffer));
// Convert the binary data to a byte stream and parse to image. // Convert the binary data to a byte stream and parse to image.

View File

@ -20,22 +20,20 @@ import com.google.scrollview.ui.SVPopupMenu;
import org.piccolo2d.PCamera; import org.piccolo2d.PCamera;
import org.piccolo2d.PCanvas; import org.piccolo2d.PCanvas;
import org.piccolo2d.PLayer; import org.piccolo2d.PLayer;
import org.piccolo2d.extras.swing.PScrollPane;
import org.piccolo2d.nodes.PImage; import org.piccolo2d.nodes.PImage;
import org.piccolo2d.nodes.PPath; import org.piccolo2d.nodes.PPath;
import org.piccolo2d.nodes.PText; import org.piccolo2d.nodes.PText;
import org.piccolo2d.util.PPaintContext; import org.piccolo2d.util.PPaintContext;
import org.piccolo2d.extras.swing.PScrollPane;
import java.awt.BasicStroke; import java.awt.BasicStroke;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Font; import java.awt.Font;
import java.awt.GraphicsEnvironment; import java.awt.GraphicsEnvironment;
import java.awt.geom.IllegalPathStateException;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.TextArea; import java.awt.TextArea;
import java.util.concurrent.Semaphore; import java.awt.geom.IllegalPathStateException;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -67,9 +65,6 @@ public class SVWindow extends JFrame {
/** The top level layer we add our PNodes to (root node). */ /** The top level layer we add our PNodes to (root node). */
PLayer layer; PLayer layer;
/** Semaphore that controls access to clearing the layer. */
Semaphore layerSemaphore = new Semaphore(1);
/** The current color of the pen. It is used to draw edges, text, etc. */ /** The current color of the pen. It is used to draw edges, text, etc. */
Color currentPenColor; Color currentPenColor;
@ -136,20 +131,21 @@ public class SVWindow extends JFrame {
/** Erase all content from the window, but do not destroy it. */ /** Erase all content from the window, but do not destroy it. */
public void clear() { public void clear() {
layerSemaphore.acquireUninterruptibly();
// Manipulation of Piccolo's scene graph should be done from Swings // Manipulation of Piccolo's scene graph should be done from Swings
// event dispatch thread since Piccolo is not thread safe. This code calls // event dispatch thread since Piccolo is not thread safe. This code calls
// removeAllChildren() from that thread and releases the semaphore. // removeAllChildren() from that thread and releases the latch.
final java.util.concurrent.CountDownLatch latch = new java.util.concurrent.CountDownLatch(1);
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
public void run() { public void run() {
layer.removeAllChildren(); layer.removeAllChildren();
repaint(); repaint();
layerSemaphore.release(); latch.countDown();
} }
}); });
// Wait for the clear to complete before continuing. try {
layerSemaphore.acquireUninterruptibly(); latch.await();
layerSemaphore.release(); } catch (InterruptedException e) {
}
} }
/** /**
@ -336,9 +332,9 @@ public class SVWindow extends JFrame {
* memory, so if you intend to redraw an image, you do not have to use * memory, so if you intend to redraw an image, you do not have to use
* createImage again. * createImage again.
*/ */
public void drawImage(PImage img, int x_pos, int y_pos) { public void drawImage(PImage img, int xPos, int yPos) {
img.setX(x_pos); img.setX(xPos);
img.setY(y_pos); img.setY(yPos);
layer.addChild(img); layer.addChild(img);
} }