147 lines
4.7 KiB
Java
147 lines
4.7 KiB
Java
|
|
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
|
|
// \\
|
|
// Centre for Speech Technology Research \\
|
|
// University of Edinburgh, UK \\
|
|
// Copyright (c) 1996,1997 \\
|
|
// All Rights Reserved. \\
|
|
// Permission is hereby granted, free of charge, to use and distribute \\
|
|
// this software and its documentation without restriction, including \\
|
|
// without limitation the rights to use, copy, modify, merge, publish, \\
|
|
// distribute, sublicense, and/or sell copies of this work, and to \\
|
|
// permit persons to whom this work is furnished to do so, subject to \\
|
|
// the following conditions: \\
|
|
// 1. The code must retain the above copyright notice, this list of \\
|
|
// conditions and the following disclaimer. \\
|
|
// 2. Any modifications must be clearly marked as such. \\
|
|
// 3. Original authors' names are not deleted. \\
|
|
// 4. The authors' names are not used to endorse or promote products \\
|
|
// derived from this software without specific prior written \\
|
|
// permission. \\
|
|
// THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK \\
|
|
// DISCLAIM ALL WARRANTIES With REGARD TO THIS SOFTWARE, INCLUDING \\
|
|
// ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT \\
|
|
// SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE \\
|
|
// FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES \\
|
|
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN \\
|
|
// AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, \\
|
|
// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF \\
|
|
// THIS SOFTWARE. \\
|
|
// \\
|
|
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
|
|
// \\
|
|
// Author: Richard Caley (rjc@cstr.ed.ac.uk) \\
|
|
// Date: Thu Apr 9 1998 \\
|
|
// -------------------------------------------------------------------- \\
|
|
package cstr.awt;
|
|
|
|
import java.util.*;
|
|
import java.lang.*;
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
import java.awt.image.*;
|
|
|
|
public class ImageCanvas extends Canvas
|
|
{
|
|
Image image;
|
|
int pwidth, pheight;
|
|
|
|
private void init(Image im, double xscale, double yscale)
|
|
{
|
|
pwidth = (int)(im.getWidth(this)*xscale);
|
|
pheight = (int)(im.getHeight(this)*yscale);
|
|
|
|
if (xscale != 1.0 || yscale != 1.0)
|
|
{
|
|
ImageFilter filter = new ReplicateScaleFilter(pwidth, pheight);
|
|
|
|
image = createImage(new FilteredImageSource(im.getSource(), filter));
|
|
}
|
|
else
|
|
image = im;
|
|
}
|
|
|
|
public ImageCanvas(Image touse, double xscale, double yscale)
|
|
{
|
|
super();
|
|
|
|
init(touse, xscale, yscale);
|
|
}
|
|
|
|
public ImageCanvas(ImageProducer prod, double xscale, double yscale)
|
|
{
|
|
super();
|
|
|
|
init(createImage(prod), xscale, yscale);
|
|
}
|
|
|
|
public ImageCanvas(Image touse, double scale)
|
|
{
|
|
super();
|
|
|
|
init(touse, scale, scale);
|
|
}
|
|
|
|
public ImageCanvas(ImageProducer prod, double scale)
|
|
{
|
|
super();
|
|
|
|
init(createImage(prod), scale, scale);
|
|
}
|
|
|
|
public ImageCanvas(Image touse)
|
|
{
|
|
super();
|
|
|
|
init(touse, 1.0, 1.0);
|
|
}
|
|
|
|
public ImageCanvas(ImageProducer prod)
|
|
{
|
|
super();
|
|
|
|
init(createImage(prod), 1.0, 1.0);
|
|
}
|
|
|
|
public boolean imageUpdate(Image img,
|
|
int flags,
|
|
int x,
|
|
int y,
|
|
int w,
|
|
int h)
|
|
{
|
|
int oh =pheight;
|
|
int ow = pwidth;
|
|
|
|
if ((flags & ImageObserver.WIDTH) != 0)
|
|
pwidth = w;
|
|
if ((flags & ImageObserver.HEIGHT) != 0 )
|
|
pheight = h;
|
|
|
|
if (pwidth!= ow || pheight != oh)
|
|
setSize(pwidth, pheight);
|
|
|
|
repaint();
|
|
return !((flags & ImageObserver.ALLBITS) != 0);
|
|
}
|
|
|
|
public Dimension getPreferredSize()
|
|
{
|
|
return new Dimension(pwidth, pheight);
|
|
}
|
|
|
|
public Dimension getMinimumSize()
|
|
{
|
|
return new Dimension(pwidth, pheight);
|
|
}
|
|
|
|
public void update(Graphics g)
|
|
{
|
|
paint(g);
|
|
}
|
|
public void paint(Graphics g)
|
|
{
|
|
g.drawImage(image, 0, 0, pwidth, pheight, this);
|
|
}
|
|
}
|