Image fixes

This commit is contained in:
bancika
2012-08-22 13:19:44 +00:00
parent cd3b03433f
commit 2001015f9e
2 changed files with 23 additions and 24 deletions
@@ -2,15 +2,11 @@ package org.diylc.components.misc;
import java.awt.Image; import java.awt.Image;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel; import java.awt.image.ColorModel;
import java.awt.image.ImageObserver; import java.awt.image.ImageObserver;
import java.awt.image.MemoryImageSource; import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber; import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@@ -83,15 +79,15 @@ public class IconImageConverter implements Converter {
Image image = toolkit.createImage(new MemoryImageSource(width, height, colorModel, pixels, Image image = toolkit.createImage(new MemoryImageSource(width, height, colorModel, pixels,
0, width)); 0, width));
BufferedImage bimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // BufferedImage bimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bimg.setRGB(0, 0, width, height, pixels, 0, width); // bimg.setRGB(0, 0, width, height, pixels, 0, width);
File outputfile = new File("c:\\saved.png"); // File outputfile = new File("c:\\saved.png");
try { // try {
ImageIO.write(bimg, "png", outputfile); // ImageIO.write(bimg, "png", outputfile);
} catch (IOException e) { // } catch (IOException e) {
// TODO Auto-generated catch block // // TODO Auto-generated catch block
e.printStackTrace(); // e.printStackTrace();
} // }
return new ImageIcon(image); return new ImageIcon(image);
} }
@@ -5,6 +5,7 @@ import java.awt.Composite;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Point; import java.awt.Point;
import java.awt.Shape; import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
@@ -42,29 +43,31 @@ public class Image extends AbstractTransparentComponent<Void> {
private byte scale = 50; private byte scale = 50;
@Override @Override
public void draw(Graphics2D g2d, ComponentState componentState, boolean outlineMode, public void draw(Graphics2D g2d, ComponentState componentState,
Project project, IDrawingObserver drawingObserver) { boolean outlineMode, Project project,
IDrawingObserver drawingObserver) {
double s = 1d * scale / DEFAULT_SCALE; double s = 1d * scale / DEFAULT_SCALE;
Point endPoint = new Point((int) (image.getIconWidth() * s), Shape clip = g2d.getClip().getBounds();
(int) (image.getIconHeight() * s)); if (!clip.intersects(new Rectangle2D.Double(point.getX(), point.getY(),
Shape clip = g2d.getClip(); image.getIconWidth() * s, image.getIconHeight() * s))) {
if (!clip.contains(point) && !clip.contains(endPoint) System.console().writer().print("escape");
&& !clip.contains(point.x, endPoint.y) && !clip.contains(endPoint.x, point.y)) {
return; return;
} }
Composite oldComposite = g2d.getComposite(); Composite oldComposite = g2d.getComposite();
if (alpha < MAX_ALPHA) { if (alpha < MAX_ALPHA) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f * alpha g2d.setComposite(AlphaComposite.getInstance(
/ MAX_ALPHA)); AlphaComposite.SRC_OVER, 1f * alpha / MAX_ALPHA));
} }
g2d.scale(s, s); g2d.scale(s, s);
g2d.drawImage(image.getImage(), (int) (point.x / s), (int) (point.y / s), null); g2d.drawImage(image.getImage(), (int) (point.x / s),
(int) (point.y / s), null);
if (componentState == ComponentState.SELECTED) { if (componentState == ComponentState.SELECTED) {
g2d.setComposite(oldComposite); g2d.setComposite(oldComposite);
g2d.scale(1 / s, 1 / s); g2d.scale(1 / s, 1 / s);
g2d.setColor(SELECTION_COLOR); g2d.setColor(SELECTION_COLOR);
g2d.drawRect(point.x, point.y, endPoint.x, endPoint.y); g2d.drawRect(point.x, point.y, (int) (image.getIconWidth() * s),
(int) (image.getIconHeight() * s));
} }
} }