зеркало из https://github.com/mono/ikvm-fork.git
remove NetProducerImage and replace it with ToolkitImage
This commit is contained in:
Родитель
ed4cc46c04
Коммит
f11ad4940d
|
@ -55,7 +55,7 @@ namespace ikvm.awt
|
||||||
return color == null ? Color.Empty : Color.FromArgb(color.getRGB());
|
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)
|
if (img is BufferedImage)
|
||||||
{
|
{
|
||||||
|
@ -65,9 +65,9 @@ namespace ikvm.awt
|
||||||
{
|
{
|
||||||
return ((NetVolatileImage)img).bitmap;
|
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)
|
if (img is NoImage)
|
||||||
{
|
{
|
||||||
|
|
153
awt/images.cs
153
awt/images.cs
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2002, 2004, 2005, 2006 Jeroen Frijters
|
Copyright (C) 2002, 2004, 2005, 2006 Jeroen Frijters
|
||||||
Copyright (C) 2006 Active Endpoints, Inc.
|
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
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
@ -33,157 +33,6 @@ using System.Drawing.Imaging;
|
||||||
namespace ikvm.awt
|
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
|
class NetVolatileImage : java.awt.image.VolatileImage
|
||||||
{
|
{
|
||||||
internal readonly Bitmap bitmap;
|
internal readonly Bitmap bitmap;
|
||||||
|
|
|
@ -1592,9 +1592,7 @@ namespace ikvm.awt
|
||||||
throw new ArgumentException("invalid hotSpot");
|
throw new ArgumentException("invalid hotSpot");
|
||||||
}
|
}
|
||||||
|
|
||||||
NetProducerImage npi = new NetProducerImage(cursorIm.getSource());
|
Bitmap bitmap = J2C.ConvertImage(cursorIm);
|
||||||
cursorIm.getSource().startProduction(npi);
|
|
||||||
Bitmap bitmap = npi.getBitmap();
|
|
||||||
IntPtr hIcon = bitmap.GetHicon();
|
IntPtr hIcon = bitmap.GetHicon();
|
||||||
cursor = new Cursor(hIcon);
|
cursor = new Cursor(hIcon);
|
||||||
}
|
}
|
||||||
|
@ -2498,9 +2496,7 @@ namespace ikvm.awt
|
||||||
|
|
||||||
public override java.awt.Image createImage(java.awt.image.ImageProducer prod)
|
public override java.awt.Image createImage(java.awt.image.ImageProducer prod)
|
||||||
{
|
{
|
||||||
NetProducerImage npi = new NetProducerImage(prod);
|
return new sun.awt.image.ToolkitImage(prod);
|
||||||
prod.startProduction(npi);
|
|
||||||
return new java.awt.image.BufferedImage(npi.getBitmap());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override java.awt.Image createImage(int width, int height)
|
public override java.awt.Image createImage(int width, int height)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче