[Polycasso-commit] SF.net SVN: polycasso:[95] trunk/polycasso/src/com/mebigfatguy/polycasso
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2009-11-28 23:37:24
|
Revision: 95
http://polycasso.svn.sourceforge.net/polycasso/?rev=95&view=rev
Author: dbrosius
Date: 2009-11-28 23:37:18 +0000 (Sat, 28 Nov 2009)
Log Message:
-----------
limit image size to the settings limit
Modified Paths:
--------------
trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java
trunk/polycasso/src/com/mebigfatguy/polycasso/PainterFrame.java
Modified: trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java
===================================================================
--- trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java 2009-11-28 23:32:38 UTC (rev 94)
+++ trunk/polycasso/src/com/mebigfatguy/polycasso/ImageGenerator.java 2009-11-28 23:37:18 UTC (rev 95)
@@ -38,6 +38,7 @@
public class ImageGenerator implements Runnable {
private static int attempt = 0;
private Set<ImageGeneratedListener> listeners = new HashSet<ImageGeneratedListener>();
+ private Settings settings;
private BufferedImage targetImage;
private PolygonData[] bestData;
private double bestScore = Double.MAX_VALUE;
@@ -49,20 +50,31 @@
/**
* creates an ImageGenerator for the given target image, and size
+ * @param settings the configuration settings
* @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);
+ public ImageGenerator(Settings confSettings, Image image, Dimension size) {
+ settings = confSettings;
+ imageSize = trimSize(size, settings.getMaxImageSize());
+ targetImage = new BufferedImage(imageSize.width, imageSize.height, BufferedImage.TYPE_4BYTE_ABGR);
Graphics g = targetImage.getGraphics();
- g.drawImage(image, 0, 0, size.width, size.height, Color.WHITE, null);
+ g.drawImage(image, 0, 0, imageSize.width, imageSize.height, Color.WHITE, null);
feedback = new Feedback(targetImage);
- imageSize = size;
bestData = new PolygonData[0];
}
/**
+ * returns the image size that is being generated. This size might be different the original image
+ * if the size is bigger then the max setting.
+ *
+ * @return the image size
+ */
+ public Dimension getImageSize() {
+ return imageSize;
+ }
+
+ /**
* allows interested parties to register to receive events when a new best image has been
* found.
*
@@ -204,4 +216,16 @@
e.printStackTrace();
}
}
+
+ private Dimension trimSize(Dimension origSize, Dimension maxSize) {
+ if ((origSize.width < maxSize.width) && (origSize.height < maxSize.height))
+ return origSize;
+
+ double hFrac = (double)maxSize.width / (double)origSize.width;
+ double vFrac = (double)maxSize.height/ (double)origSize.height;
+
+ double frac = (hFrac < vFrac) ? hFrac : vFrac;
+
+ return new Dimension((int)(frac * origSize.width), (int)(frac * origSize.height));
+ }
}
Modified: trunk/polycasso/src/com/mebigfatguy/polycasso/PainterFrame.java
===================================================================
--- trunk/polycasso/src/com/mebigfatguy/polycasso/PainterFrame.java 2009-11-28 23:32:38 UTC (rev 94)
+++ trunk/polycasso/src/com/mebigfatguy/polycasso/PainterFrame.java 2009-11-28 23:37:18 UTC (rev 95)
@@ -132,7 +132,7 @@
wSize.height *= 2;
}
setSize(wSize);
- generator = new ImageGenerator(targetImage, size);
+ generator = new ImageGenerator(settings, targetImage, size);
generator.addImageGeneratedListener(PainterFrame.this);
generator.startGenerating();
completeImage.setEnabled(true);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|