[Polycasso-commit] SF.net SVN: polycasso:[31] trunk/polycasso/src/com/mebigfatguy/polycasso/ ImageG
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2009-11-24 05:24:45
|
Revision: 31
http://polycasso.svn.sourceforge.net/polycasso/?rev=31&view=rev
Author: dbrosius
Date: 2009-11-24 05:24:31 +0000 (Tue, 24 Nov 2009)
Log Message:
-----------
javadoc
Modified Paths:
--------------
trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java
Modified: trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java
===================================================================
--- trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java 2009-11-24 05:18:38 UTC (rev 30)
+++ trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java 2009-11-24 05:24:31 UTC (rev 31)
@@ -28,6 +28,11 @@
import java.util.HashSet;
import java.util.Set;
+/**
+ * class that generates test images iteratively looking for the best image that matches a target.
+ * The images are generated from semi-transparent polygons that are improved upon over time.
+ * This class generates multiple images in parallel to keep multicore processors busy.
+ */
public class ImageGenerator implements Runnable {
private static final int NUM_THREADS = 10;
@@ -42,6 +47,12 @@
private Thread[] t = null;
private Object lock = new Object();
+ /**
+ * creates an ImageGenerator for the given target image, and size
+ * @param image the target image
+ *
+ * @param size the dimension of the image
+ */
public ImageGenerator(Image image, Dimension size) {
targetImage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_4BYTE_ABGR);
Graphics g = targetImage.getGraphics();
@@ -51,22 +62,41 @@
bestData = PolygonData.randomPolys(size);
}
+ /**
+ * allows interested parties to register to receive events when a new best image has been
+ * found.
+ *
+ * @param listener the listener that is interested in events
+ */
public void addImageGeneratedListener(ImageGeneratedListener listener) {
listeners.add(listener);
}
+ /**
+ * allows uninterested parties to unregister to receive events when a new best image is
+ * found
+ *
+ * @param listener the listener that is no longer needed
+ */
public void removeImageGeneratedListener(ImageGeneratedListener listener) {
listeners.remove(listener);
}
+ /**
+ * informs all listeners that a new best image has been found
+ *
+ * @param image the new best image
+ */
public void fireImageGenerated(Image image) {
ImageGeneratedEvent event = new ImageGeneratedEvent(this, image);
for (ImageGeneratedListener listener : listeners) {
listener.imageGenerated(event);
}
-
}
+ /**
+ * starts up threads to start looking for images that are closest to the target
+ */
public void startGenerating() {
synchronized(lock) {
if (t == null) {
@@ -79,6 +109,9 @@
}
}
+ /**
+ * shuts down threads that were looking for images
+ */
public void stopGenerating() {
synchronized(lock) {
if (t != null) {
@@ -97,6 +130,10 @@
}
}
+ /**
+ * the runnable interface implementation to repeatedly improve upon the image and check to
+ * see if it is closer to the target image.
+ */
public void run() {
try {
while (!Thread.interrupted()) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|