From 071dd9bb7bbdb691d9d0459371860868b3cca22d Mon Sep 17 00:00:00 2001 From: benfry Date: Sun, 30 Jan 2005 03:41:54 +0000 Subject: [PATCH] some things that had been left out --- app/SwingWorker.java | 129 ++++++++++++++++++ .../Contents/Resources/pde.icns | Bin 0 -> 42258 bytes core/PGraphics.java | 36 +++++ 3 files changed, 165 insertions(+) create mode 100644 app/SwingWorker.java create mode 100644 build/macosx/dist/Processing.app/Contents/Resources/pde.icns diff --git a/app/SwingWorker.java b/app/SwingWorker.java new file mode 100644 index 000000000..1b2c46464 --- /dev/null +++ b/app/SwingWorker.java @@ -0,0 +1,129 @@ +import javax.swing.SwingUtilities; + +/** + * This is the 3rd version of SwingWorker (also known as + * SwingWorker 3), an abstract class that you subclass to + * perform GUI-related work in a dedicated thread. For + * instructions on and examples of using this class, see: + * + * http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html + * + * Note that the API changed slightly in the 3rd version: + * You must now invoke start() on the SwingWorker after + * creating it. + */ +public abstract class SwingWorker { + private Object value; // see getValue(), setValue() + + /** + * Class to maintain reference to current worker thread + * under separate synchronization control. + */ + private static class ThreadVar { + private Thread thread; + ThreadVar(Thread t) { thread = t; } + synchronized Thread get() { return thread; } + synchronized void clear() { thread = null; } + } + + private ThreadVar threadVar; + + /** + * Get the value produced by the worker thread, or null if it + * hasn't been constructed yet. + */ + protected synchronized Object getValue() { + return value; + } + + /** + * Set the value produced by worker thread + */ + private synchronized void setValue(Object x) { + value = x; + } + + /** + * Compute the value to be returned by the get method. + */ + public abstract Object construct(); + + /** + * Called on the event dispatching thread (not on the worker thread) + * after the construct method has returned. + */ + public void finished() { + } + + /** + * A new method that interrupts the worker thread. Call this method + * to force the worker to stop what it's doing. + */ + public void interrupt() { + Thread t = threadVar.get(); + if (t != null) { + t.interrupt(); + } + threadVar.clear(); + } + + /** + * Return the value created by the construct method. + * Returns null if either the constructing thread or the current + * thread was interrupted before a value was produced. + * + * @return the value created by the construct method + */ + public Object get() { + while (true) { + Thread t = threadVar.get(); + if (t == null) { + return getValue(); + } + try { + t.join(); + } + catch (InterruptedException e) { + Thread.currentThread().interrupt(); // propagate + return null; + } + } + } + + + /** + * Start a thread that will call the construct method + * and then exit. + */ + public SwingWorker() { + final Runnable doFinished = new Runnable() { + public void run() { finished(); } + }; + + Runnable doConstruct = new Runnable() { + public void run() { + try { + setValue(construct()); + } + finally { + threadVar.clear(); + } + + SwingUtilities.invokeLater(doFinished); + } + }; + + Thread t = new Thread(doConstruct); + threadVar = new ThreadVar(t); + } + + /** + * Start the worker thread. + */ + public void start() { + Thread t = threadVar.get(); + if (t != null) { + t.start(); + } + } +} diff --git a/build/macosx/dist/Processing.app/Contents/Resources/pde.icns b/build/macosx/dist/Processing.app/Contents/Resources/pde.icns new file mode 100644 index 0000000000000000000000000000000000000000..214b19877ae38e580adf5e2466aceaa6f6b798a6 GIT binary patch literal 42258 zcmeHwcXS)qnePCknk8AbWI1tc$ zaZy%sx1>P_NP-~126l=C?7fp933h@MdnZ`H27)9i(F=+9-2o{UiB+IwXF1>qxO2a9 z%XbUrH$Uj|8}D7ku%y$M-?;jB7>4~+^0efX;HARUXs70d&&Be zbF&xN`2mKJjxM>(mJ1e(kHvDq^?q(yy*gQ#bU7%X_Lvv$L!-{wVE$jk-o_U8gOE!3&9W`<+>lSw%f`Ej^n!Urqn25e!}Al^k3m3hY>5)k zBE_LJ?K~2&m{$zwwJ2@1XK_*q14cbc+nsI$v%?l6cIr6hq&SY*?KT^JQ%i3mWm*vo`ktSh9Yd7#jcQ&UmOjk1qVvowQ5x z^!l_b`>}QTF4wm=q+i^S{>l3E(!~wwUqBiL>7CGO;lc%2E36iad7~gK2tiXC|wXWu)6$veRAcbB?23l%0AF_}~ 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 Ze8jT{SUj{dc036kWX~Uj-MhYd{C^CIlIj2e literal 0 HcmV?d00001 diff --git a/core/PGraphics.java b/core/PGraphics.java index d960d2288..e909dc1ea 100644 --- a/core/PGraphics.java +++ b/core/PGraphics.java @@ -23,6 +23,42 @@ Boston, MA 02111-1307 USA */ +/* + +if depth buffer sorting turned on? + +with depth(), stroke() *or* fill() but not both + + +point + depth + strokeWeight < 2 + rough single pixel dot with a z value + rgb + rgba + strokeWeight >= 2 + round endcap + rough filled circle with a z value + rgb + rgba + square endcap + rough filled square with a z value + rgb + rgba + noDepth + strokeWeight < 2 + rough single pixel dot (no z value) + strokeWeight >= 2 + + +quad + depth + strokeWeight < 2 + series of single pixel lines that surround + strokeWeight >= 2 + +*/ + package processing.core; import java.applet.*;