remove NetProducerImage and replace it with ToolkitImage

This commit is contained in:
smallsql 2010-12-27 21:16:43 +00:00
Родитель ed4cc46c04
Коммит f11ad4940d
3 изменённых файлов: 6 добавлений и 161 удалений

Просмотреть файл

@ -55,7 +55,7 @@ namespace ikvm.awt
return color == null ? Color.Empty : Color.FromArgb(color.getRGB());
}
internal static Image ConvertImage(java.awt.Image img)
internal static Bitmap ConvertImage(java.awt.Image img)
{
if (img is BufferedImage)
{
@ -65,9 +65,9 @@ namespace ikvm.awt
{
return ((NetVolatileImage)img).bitmap;
}
if (img is NetProducerImage)
if (img is sun.awt.image.ToolkitImage)
{
return ((NetProducerImage)img).getBitmap();
return ((sun.awt.image.ToolkitImage)img).getImageRep().getBitmap();
}
if (img is NoImage)
{

Просмотреть файл

@ -1,7 +1,7 @@
/*
Copyright (C) 2002, 2004, 2005, 2006 Jeroen Frijters
Copyright (C) 2006 Active Endpoints, Inc.
Copyright (C) 2006, 2007, 2008 Volker Berlin (i-net software)
Copyright (C) 2006 - 2010 Volker Berlin (i-net software)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@ -33,157 +33,6 @@ using System.Drawing.Imaging;
namespace ikvm.awt
{
class NetProducerImage : java.awt.Image, java.awt.image.ImageConsumer
{
private java.awt.image.ImageProducer source;
private int mHeight = -1;
private int mWidth = -1;
private int mHintFlags;
private ColorModel mColorModel;
private Hashtable mProperties;
private Bitmap mBitmap;
private int availinfo;
internal NetProducerImage(java.awt.image.ImageProducer source)
{
this.source = source;
}
public override void flush()
{
}
public override java.awt.Graphics getGraphics()
{
return new BitmapGraphics(mBitmap);
}
public override int getHeight(ImageObserver param)
{
return mHeight;
}
public override int getWidth(ImageObserver param)
{
return mWidth;
}
public override object getProperty(string param, ImageObserver obs)
{
return null;
}
public override ImageProducer getSource()
{
return source;
}
public void setHints(int hintflags)
{
mHintFlags = hintflags;
}
public void setPixels(int x, int y, int w, int h, ColorModel model, byte[] pixels, int off, int scansize)
{
int[] pixeli = new int[pixels.Length];
for (int i = 0; i < pixels.Length; i++)
{
pixeli[i] = model.getRGB(pixels[i] & 0xff);
}
setPixels(x, y, w, h, model, pixeli, off, scansize);
}
/// <summary>
/// Create a bitmap from the pixel array. The bitmap will be used
/// by drawImage.
/// </summary>
[System.Security.SecuritySafeCritical]
public void setPixels(int x, int y, int w, int h, ColorModel model, int[] pixels, int off, int scansize)
{
if( x < 0) {
w -= x;
x = 0;
}
if (y < 0) {
h -= y;
y = 0;
}
if (w <= 0 || h <= 0) {
// nothing to set
return;
}
if ( off < 0 ) {
throw new java.lang.ArrayIndexOutOfBoundsException( "Data offset out of bounds." );
}
long length = w * h;
if (length > pixels.Length - off)
{
throw new java.lang.ArrayIndexOutOfBoundsException("Data offset out of bounds.");
}
lock (mBitmap)
{
BitmapData data = mBitmap.LockBits(new Rectangle(x, y, w, h), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
System.Runtime.InteropServices.Marshal.Copy(pixels, off, data.Scan0, data.Width * data.Height);
mBitmap.UnlockBits(data);
}
}
public Bitmap getBitmap()
{
return mBitmap;
}
public void setDimensions(int width, int height)
{
mWidth = width;
mHeight = height;
mBitmap = new Bitmap(mWidth, mHeight);
availinfo |= ImageObserver.__Fields.WIDTH | ImageObserver.__Fields.HEIGHT;
}
public void imageComplete(int status)
{
switch (status)
{
default:
case ImageConsumer.__Fields.IMAGEERROR:
availinfo |= ImageObserver.__Fields.ERROR | ImageObserver.__Fields.ABORT;
break;
case ImageConsumer.__Fields.IMAGEABORTED:
availinfo |= ImageObserver.__Fields.ABORT;
break;
case ImageConsumer.__Fields.STATICIMAGEDONE:
availinfo |= ImageObserver.__Fields.ALLBITS;
break;
case ImageConsumer.__Fields.SINGLEFRAMEDONE:
availinfo |= ImageObserver.__Fields.FRAMEBITS;
break;
}
}
public void setColorModel(ColorModel model)
{
mColorModel = model;
}
public void setProperties(Hashtable props)
{
mProperties = props;
}
internal int getStatus()
{
return availinfo;
}
}
class NetVolatileImage : java.awt.image.VolatileImage
{
internal readonly Bitmap bitmap;

Просмотреть файл

@ -1592,9 +1592,7 @@ namespace ikvm.awt
throw new ArgumentException("invalid hotSpot");
}
NetProducerImage npi = new NetProducerImage(cursorIm.getSource());
cursorIm.getSource().startProduction(npi);
Bitmap bitmap = npi.getBitmap();
Bitmap bitmap = J2C.ConvertImage(cursorIm);
IntPtr hIcon = bitmap.GetHicon();
cursor = new Cursor(hIcon);
}
@ -2498,9 +2496,7 @@ namespace ikvm.awt
public override java.awt.Image createImage(java.awt.image.ImageProducer prod)
{
NetProducerImage npi = new NetProducerImage(prod);
prod.startProduction(npi);
return new java.awt.image.BufferedImage(npi.getBitmap());
return new sun.awt.image.ToolkitImage(prod);
}
public override java.awt.Image createImage(int width, int height)