2 README.MSW      hedu@cul-ipn.uni-kiel.de        5/94
 
   4                 The XPM library for MS-Windows
 
   6 Motivated by the wxWindows library, which is a (freely available) toolkit
 
   7 for developing multi-platform, graphical applications from the same body 
 
   8 of C++ code, I wanted to have XPM pixmaps for MS-windows. Instead of rewriting 
 
   9 a XPM-parser I managed to port the XPM-library-code to MS-windows.
 
  10 Thanks to Anaud Le Hors this became a part of the official XPM-library.
 
  12 Until now it's only used together with wxWindows. And even there it's more 
 
  13 a kind of beta. But it should be possible to run it as a simple libxpm.a 
 
  16 The key is a transformation of some X types plus some basic X functions.
 
  17 There is not yet a special MSW-API, so you should know the X types used.
 
  19 The following is done in simx.h:
 
  22 typedef COLORREF Pixel;
 
  26     BYTE red, green, blue;
 
  36 With these defines and the according functions from simx.c you can call
 
  37 XPM-functions the way it's done under X windows. It can look like this:
 
  39         ErrorStatus=XpmCreateImageFromData(&dc, data, 
 
  40                                 &ximage,(XImage **)NULL, &xpmAttr);
 
  41         ms_bitmap = ximage->bitmap;
 
  42         // releases the malloc,but do not destroy the bitmap
 
  45 Supported functions are the Xpm*Image* but not the Xpm*Pixmap*.
 
  48 The main drawback is the missing support for Colormaps! There was nothing for
 
  49 it in wxWindows, so I did not know how to deal with Colormaps.
 
  51 The size of the pixmaps is bounded by malloc() (width*height*2 < 64K).
 
  53 Close colors do not look that close. But that seems to be the window system.
 
  55 Neither a special API for MSW nor a special MSW documentation other than this.
 
  56 (I can only point you to wxxpm as an example , see below.)
 
  59 There is not yet a makefile with it. Simply take all the *.c files
 
  60 into your project except the files related to Pixmap operations: *P*.c.
 
  61 !!!You MUST set FOR_MSW on the preprocessor options!!!
 
  62 (You might uncomment NEED_STRCASECMP in xpm.h if it's in your lib)
 
  63 This should compile into libxpm.a. Good luck...
 
  66 wxWindows is currently available from the Artificial Intelligence
 
  67 Applications Institute (University of Edinburgh) by anonymous FTP.
 
  68         skye.aiai.ed.ac.uk  pub/wxwin/
 
  69 or read http://burray.aiai.ed.ac.uk/aiai/aiai.html
 
  71 wxxpm, XPM support for wxWindows, the latest version is available at
 
  72         yoda.cul-ipn.uni-kiel.de pub/wxxpm/
 
  73         and maybe in the contrib or tools of wxWindows
 
  75 Please contact me if you have suggestions, comments or problems!
 
  77 ================================================================
 
  78 Some fixes and comments by Jan Wielemaker (jan@swi.psy.uva.nl),
 
  81         * Please try not to disturb me on this, XPM is not my
 
  84         * Hermann Dunkel has appearently moved in virtual space.
 
  88         * I've used the xpm package under NT 4.0 and MSVC++ 4.2.
 
  90         * I've made a big performance improvement in 
 
  91         ParseAndPutPixels(), fixed creation of the mask in
 
  92         SetColor() in create.c.  I looked into XCreateImage()
 
  93         in simx.c, but commented out my improvement for reasons
 
  94         you'll find there.  If you know what is going on, statement
 
  95         (1) does not apply to you.
 
  97 Comments on installation:
 
  99         * Donot include the to/from pixmap files into the project.
 
 100         These are the ones containing a capital P somewhere in their
 
 101         name.  You can also first include all, and then remove all
 
 102         the files you get errors on :-)
 
 104         * The DC that is requested should be a valid memory DC, thus
 
 105         CreateCompatibleDC(NULL) provides a good generic one, but
 
 106         GetDC(NULL) doesn't!  This costed me some time.
 
 108         * The real difficulty is using the mask, mostly due to the
 
 109         bad documentation.  If 95 or NT is your target, use:
 
 111         MaskBlt(context.hdc,    // Destination DC
 
 112                 x, y, w, h,     // Destination area
 
 113                 mhdc,           // Memory DC with the image selected
 
 114                 sx, sy,         // Source X,Y
 
 115                 msk,            // HBITMAP of the mask
 
 117                 MAKEROP4(SRCPAINT, SRCCOPY));   // The magic op code.
 
 118 ================================================================
 
 122    ////|\\\\   \\\\\\  Hermann Dunkel
 
 123      O   O     //////  IPN Uni Kiel, Germany
 
 124        |       \\\\\\  Tel: +49 431 / 880 3144
 
 125      \___/     //////  E-mail: hedu@cul-ipn.uni-kiel.de
 
 126       \_/      \\\\\\  X.400 : c=de;a=d400;p=uni-kiel;ou=nw-didaktik;s=dunkel