зеркало из 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());
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
|
153
awt/images.cs
153
awt/images.cs
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче