More AWT/Swing merge from GNU Classpath.

From-SVN: r56148
This commit is contained in:
Bryce McKinlay 2002-08-09 04:29:59 +00:00 committed by Bryce McKinlay
parent 7bde45b2eb
commit 8f5c92a0a3
11 changed files with 1332 additions and 0 deletions

View file

@ -0,0 +1,56 @@
/* ContextualRenderedImageFactory.java --
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.image.renderable;
import java.awt.geom.Rectangle2D;
import java.awt.image.RenderedImage;
/**
* STUBBED
*/
public interface ContextualRenderedImageFactory extends RenderedImageFactory
{
RenderContext mapRenderContext(int i, RenderContext context,
ParameterBlock block, RenderableImage image);
RenderedImage create(RenderContext context, ParameterBlock block);
Rectangle2D getBounds2D(ParameterBlock block);
Object getProperty(ParameterBlock block, String name);
String[] getPropertyNames();
boolean isDynamic();
} // interface ContextualRenderedImageFactory

View file

@ -0,0 +1,308 @@
/* ParameterBlock.java --
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.image.renderable;
import java.awt.image.RenderedImage;
import java.io.Serializable;
import java.util.Vector;
public class ParameterBlock implements Cloneable, Serializable
{
private static final long serialVersionUID = -7577115551785240750L;
protected Vector sources;
protected Vector parameters;
public ParameterBlock()
{
this(new Vector(), new Vector());
}
public ParameterBlock(Vector sources)
{
this(sources, new Vector());
}
public ParameterBlock(Vector sources, Vector parameters)
{
this.sources = sources;
this.parameters = parameters;
}
public Object shallowClone()
{
try
{
return super.clone();
}
catch (CloneNotSupportedException e)
{
throw (Error) new InternalError().initCause(e); // impossible
}
}
public Object clone()
{
ParameterBlock pb = (ParameterBlock) shallowClone();
if (sources != null)
pb.sources = (Vector) sources.clone();
if (parameters != null)
pb.parameters = (Vector) parameters.clone();
return pb;
}
public ParameterBlock addSource(Object source)
{
sources.add(source);
return this;
}
public Object getSource(int index)
{
return sources.get(index);
}
public ParameterBlock setSource(Object source, int index)
{
sources.ensureCapacity(index);
sources.set(index, source);
return this;
}
public RenderedImage getRenderedSource(int index)
{
return (RenderedImage) sources.get(index);
}
public RenderableImage getRenderableSource(int index)
{
return (RenderableImage) sources.get(index);
}
public int getNumSources()
{
return sources.size();
}
public Vector getSources()
{
return sources;
}
public void setSources(Vector sources)
{
this.sources = sources;
}
public void removeSources()
{
if (sources != null)
sources.clear();
}
public int getNumParameters()
{
return parameters.size();
}
public Vector getParameters()
{
return parameters;
}
public void setParameters(Vector parameters)
{
this.parameters = parameters;
}
public void removeParameters()
{
if (parameters != null)
parameters.clear();
}
public ParameterBlock add(Object o)
{
parameters.add(o);
return this;
}
public ParameterBlock add(byte b)
{
return add(new Byte(b));
}
public ParameterBlock add(char c)
{
return add(new Character(c));
}
public ParameterBlock add(short s)
{
return add(new Short(s));
}
public ParameterBlock add(int i)
{
return add(new Integer(i));
}
public ParameterBlock add(long l)
{
return add(new Long(l));
}
public ParameterBlock add(float f)
{
return add(new Float(f));
}
public ParameterBlock add(double d)
{
return add(new Double(d));
}
public ParameterBlock set(Object o, int index)
{
parameters.ensureCapacity(index);
parameters.set(index, o);
return this;
}
public ParameterBlock set(byte b, int index)
{
return set(new Byte(b), index);
}
public ParameterBlock set(char c, int index)
{
return set(new Character(c), index);
}
public ParameterBlock set(short s, int index)
{
return set(new Short(s), index);
}
public ParameterBlock set(int i, int index)
{
return set(new Integer(i), index);
}
public ParameterBlock set(long l, int index)
{
return set(new Long(l), index);
}
public ParameterBlock set(float f, int index)
{
return set(new Float(f), index);
}
public ParameterBlock set(double d, int index)
{
return set(new Double(d), index);
}
public Object getObjectParameter(int index)
{
return parameters.get(index);
}
public byte getByteParameter(int index)
{
return ((Byte) parameters.get(index)).byteValue();
}
public char getCharParameter(int index)
{
return ((Character) parameters.get(index)).charValue();
}
public short getShortParameter(int index)
{
return ((Short) parameters.get(index)).shortValue();
}
public int getIntParameter(int index)
{
return ((Integer) parameters.get(index)).intValue();
}
public long getLongParameter(int index)
{
return ((Long) parameters.get(index)).longValue();
}
public float getFloatParameter(int index)
{
return ((Float) parameters.get(index)).floatValue();
}
public double getDoubleParameter(int index)
{
return ((Double) parameters.get(index)).doubleValue();
}
public Class[] getParamClasses()
{
int i = parameters.size();
Class[] result = new Class[i];
while (--i >= 0)
{
Class c = parameters.get(i).getClass();
if (c == Byte.class)
result[i] = byte.class;
else if (c == Character.class)
result[i] = char.class;
else if (c == Short.class)
result[i] = short.class;
else if (c == Integer.class)
result[i] = int.class;
else if (c == Long.class)
result[i] = long.class;
else if (c == Float.class)
result[i] = float.class;
else if (c == Double.class)
result[i] = double.class;
else
result[i] = c;
}
return result;
}
} // class ParameterBlock

View file

@ -0,0 +1,141 @@
/* RenderContext.java --
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.image.renderable;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
public class RenderContext implements Cloneable
{
private AffineTransform xform;
private Shape aoi;
private RenderingHints hints;
public RenderContext(AffineTransform xform, Shape aoi, RenderingHints hints)
{
this.xform = xform;
this.aoi = aoi;
this.hints = hints;
}
public RenderContext(AffineTransform xform)
{
this(xform, null, null);
}
public RenderContext(AffineTransform xform, RenderingHints hints)
{
this(xform, null, hints);
}
public RenderContext(AffineTransform xform, Shape aoi)
{
this(xform, aoi, null);
}
public RenderingHints getRenderingHints()
{
return hints;
}
public void setRenderingHints(RenderingHints hints)
{
this.hints = hints;
}
public void setTransform(AffineTransform xform)
{
this.xform = xform;
}
public void preConcatenateTransform(AffineTransform pre)
{
xform.preConcatenate(pre);
}
/** @deprecated Sun can't spell concatenate */
public void preConcetenateTransform(AffineTransform pre)
{
preConcetenateTransform(pre);
}
public void concatenateTransform(AffineTransform post)
{
xform.concatenate(post);
}
/** @deprecated Sun can't spell concatenate */
public void concetenateTransform(AffineTransform post)
{
concatenateTransform(post);
}
public AffineTransform getTransform()
{
return xform;
}
public void setAreaOfInterest(Shape aoi)
{
this.aoi = aoi;
}
public Shape getAreaOfInterest()
{
return aoi;
}
public Object clone()
{
try
{
RenderContext copy = (RenderContext) super.clone();
if (xform != null)
copy.xform = (AffineTransform) xform.clone();
if (hints != null)
copy.hints = (RenderingHints) hints.clone();
return copy;
}
catch (CloneNotSupportedException e)
{
throw (Error) new InternalError().initCause(e); // impossible
}
}
} // class RenderContext

View file

@ -0,0 +1,59 @@
/* RenderableImage.java --
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.image.renderable;
import java.awt.RenderingHints;
import java.awt.image.RenderedImage;
import java.util.Vector;
public interface RenderableImage
{
String HINTS_OBSERVED = "HINTS_OBSERVED";
Vector getSources();
Object getProperty(String name);
String[] getPropertyNames();
boolean isDynamic();
float getWidth();
float getHeight();
float getMinX();
float getMinY();
RenderedImage createScaledRendering(int w, int h, RenderingHints hints);
RenderedImage createDefaultRendering();
RenderedImage createRendering(RenderContext context);
} // interface RenderableImage

View file

@ -0,0 +1,157 @@
/* RenderableImageOp.java --
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.image.renderable;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.RenderedImage;
import java.util.Vector;
public class RenderableImageOp implements RenderableImage
{
private final ContextualRenderedImageFactory crif;
private ParameterBlock block;
public RenderableImageOp(ContextualRenderedImageFactory crif,
ParameterBlock block)
{
this.crif = crif;
this.block = (ParameterBlock) block.clone();
}
public Vector getSources()
{
if (block.sources == null)
return null;
int size = block.sources.size();
Vector v = new Vector();
for (int i = 0; i < size; i++)
{
Object o = block.sources.get(i);
if (o instanceof RenderableImage)
v.add(o);
}
return v;
}
public Object getProperty(String name)
{
return crif.getProperty(block, name);
}
public String[] getPropertyNames()
{
return crif.getPropertyNames();
}
public boolean isDynamic()
{
return crif.isDynamic();
}
public float getWidth()
{
return (float) crif.getBounds2D(block).getWidth();
}
public float getHeight()
{
return (float) crif.getBounds2D(block).getHeight();
}
public float getMinX()
{
return (float) crif.getBounds2D(block).getX();
}
public float getMinY()
{
return (float) crif.getBounds2D(block).getY();
}
public ParameterBlock setParameterBlock(ParameterBlock block)
{
ParameterBlock result = this.block;
this.block = (ParameterBlock) block.clone();
return result;
}
public ParameterBlock getParameterBlock()
{
return block;
}
public RenderedImage createScaledRendering(int w, int h,
RenderingHints hints)
{
if (w == 0)
if (h == 0)
throw new IllegalArgumentException();
else
w = Math.round(h * getWidth() / getHeight());
if (h == 0)
h = Math.round(w * getHeight() / getWidth());
AffineTransform xform = AffineTransform.getScaleInstance(w * getWidth(),
h * getHeight());
return createRendering(new RenderContext(xform, hints));
}
public RenderedImage createDefaultRendering()
{
return createRendering(new RenderContext(new AffineTransform()));
}
public RenderedImage createRendering(RenderContext context)
{
ParameterBlock copy = (ParameterBlock) block.clone();
int i = block.sources.size();
while (--i >= 0)
{
Object o = block.sources.get(i);
if (o instanceof RenderableImage)
{
RenderableImage ri = (RenderableImage) o;
RenderContext rc = crif.mapRenderContext(i, context, block, ri);
copy.sources.set(i, ri.createRendering(rc));
}
}
// Now copy.sources should be only RenderedImages.
return crif.create(context, copy);
}
} // class RenderableImageOp

View file

@ -0,0 +1,79 @@
/* RenderableImageProducer.java --
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.image.renderable;
import java.awt.image.ImageConsumer;
import java.awt.image.ImageProducer;
public class RenderableImageProducer implements ImageProducer, Runnable
{
public RenderableImageProducer(RenderableImage image, RenderContext context)
{
throw new Error("not implemented");
}
public void setRenderContext(RenderContext context)
{
}
public void addConsumer(ImageConsumer consumer)
{
}
public boolean isConsumer(ImageConsumer consumer)
{
return false;
}
public void removeConsumer(ImageConsumer consumer)
{
}
public void startProduction(ImageConsumer consumer)
{
}
public void requestTopDownLeftRightResend(ImageConsumer consumer)
{
}
public void run()
{
}
} // class RenderableImageProducer

View file

@ -0,0 +1,47 @@
/* RenderedImageFactory.java --
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.image.renderable;
import java.awt.RenderingHints;
import java.awt.image.RenderedImage;
public interface RenderedImageFactory
{
RenderedImage create(ParameterBlock block, RenderingHints hints);
} // interface RenderedImageFactory