Separated FFDec core library and the rest (GUI).

FFDec Library is now LGPLv3, others stay GPLv3.
Version changed to 3.0.0 for FFDec, 1.0.0 for FFDec Library.
This commit is contained in:
Jindra Petřík
2014-08-24 17:55:42 +02:00
parent 2479c59b03
commit 04922aaf69
1323 changed files with 53605 additions and 52175 deletions

View File

@@ -0,0 +1,155 @@
/*
* Copyright (C) 2010-2014 JPEXS, All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library.
*/
package com.jpexs.helpers;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
import java.awt.image.WritableRaster;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Hashtable;
import javax.imageio.ImageIO;
/**
*
* @author JPEXS
*/
public class SerializableImage implements Serializable {
public static int TYPE_INT_ARGB = BufferedImage.TYPE_INT_ARGB;
public static int TYPE_INT_RGB = BufferedImage.TYPE_INT_RGB;
public static int TYPE_INT_ARGB_PRE = BufferedImage.TYPE_INT_ARGB_PRE;
public static int TYPE_4BYTE_ABGR = BufferedImage.TYPE_4BYTE_ABGR;
static int imageid = 0;
private BufferedImage image;
private transient Graphics graphics;
private SerializableImage() {
}
public SerializableImage(BufferedImage image) {
this.image = image;
}
public SerializableImage(int i, int i1, int i2) {
image = new BufferedImage(i, i1, i2);
}
public SerializableImage(ColorModel cm, WritableRaster wr, boolean bln, Hashtable<?, ?> hshtbl) {
image = new BufferedImage(cm, wr, bln, hshtbl);
}
public SerializableImage(int i, int i1, int i2, IndexColorModel icm) {
image = new BufferedImage(i, i1, i2, icm);
}
public BufferedImage getBufferedImage() {
/*try {
javax.imageio.ImageIO.write(image, "png", new File("c:\\10\\x\\imageid" + String.format("%03d", imageid++) + ".png"));
} catch (IOException ex) {
}*/
return image;
}
public void fillTransparent() {
// Make all pixels transparent
Graphics2D g = (Graphics2D) getGraphics();
g.setComposite(AlphaComposite.Src);
g.setColor(new Color(0, 0, 0, 0f));
g.fillRect(0, 0, getWidth(), getHeight());
}
@Override
protected Object clone() throws CloneNotSupportedException {
SerializableImage retImage = new SerializableImage();
retImage.image = image;
return retImage;
}
public Graphics getGraphics() {
//One graphics rule them all
if (graphics != null) {
return graphics;
}
Graphics2D g = (Graphics2D) image.getGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
return graphics = g;
}
public int getType() {
return image.getType();
}
public int getWidth() {
return image.getWidth();
}
public int getHeight() {
return image.getHeight();
}
public int getRGB(int i, int i1) {
return image.getRGB(i, i1);
}
public int[] getRGB(int i, int i1, int i2, int i3, int[] ints, int i4, int i5) {
return image.getRGB(i, i1, i2, i3, ints, i4, i5);
}
public synchronized void setRGB(int i, int i1, int i2) {
image.setRGB(i, i1, i2);
}
public void setRGB(int i, int i1, int i2, int i3, int[] ints, int i4, int i5) {
image.setRGB(i, i1, i2, i3, ints, i4, i5);
}
public ColorModel getColorModel() {
return image.getColorModel();
}
public WritableRaster getRaster() {
return image.getRaster();
}
@Override
public String toString() {
return image.toString();
}
private void writeObject(ObjectOutputStream out) throws IOException {
try {
ImageIO.write(image, "png", out);
} catch (Exception ex) {
//ignore
}
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
image = ImageIO.read(in);
}