New winetricks 20080226: adds dotnet11 verb

bill lam cbill.lam at
Wed Feb 27 10:48:32 CST 2008

Dan Kegel wrote:
> What app is this, and what is it about Wine's gdiplus that
> makes you need to override it?  Does the app crash,
> or does it just look bad?  If it crashes, what's the crash log?

The app is a package called 'platimg' of J language.

I had reported this and I believed that it is the negative stride that caused 
the problem.

NB. load and decode a jpeg file into 2D integer matrix with each integer
NB. for one pixel element.
readimg1 'picture.jpg'

where definition of readimg1 is as follows

readimg1=: 3 : 0
   GdiplusStartup (TOK=.,_1);GdiplusStartupInput;0
   GdipCreateBitmapFromFile y;BMP=.,_1
   z=. bmpARGB {.BMP
   GdiplusShutdown {.TOK

bmpARGB=: 3 : 0
   DATA=. i.4%~#BitmapData
   GdipBitmapLockBits y;0;ImageLockModeRead;PixelFormat32bppARGB;DATA
   'w h s f p r'=. DATA
   z=. (h,w)$memr p,0,(w*h),JINT
   GdipBitmapUnLockBits y;DATA
   GdipDisposeImage y

Here GdipBitmapLockBits has 2 issues,

1. GdipBitmapLockBits accept a null for rect (the second argument) to stands for 
the entire region. I can workaround this by calling GdipGetImageWidth and 
GdipGetImageHeight to construct the rect. However

2. the data returned GdipBitmapLockBits does not point a valid bitmap data, so 
the when trying memory read in the following
z=. (h,w)$memr p,0,(w*h),JINT
J gives raise a domain error. (but no crash, so that no crash log)

Scripts of J can be difficult to understand, but since this example calls 
gdiplus api so that you can follow it without much difficulty and write an 
equivalent c program to test it.

current version of J can be downloaded here.
after installation, run package manager that comes with J to install the platimg 


More information about the wine-devel mailing list