3322
|
1 /* vi:set ts=8 sts=4 sw=4:
|
|
2 *
|
7
|
3 * Load XPM image.
|
|
4 *
|
|
5 * This function is placed in separate file because Xpm headers conflict with
|
|
6 * Vim ones :(
|
|
7 *
|
|
8 * Written by Sergey Khorev.
|
|
9 * http://iamphet.nm.ru/vim/index.html
|
|
10 */
|
|
11
|
|
12 #ifndef WIN32_LEAN_AND_MEAN
|
|
13 # define WIN32_LEAN_AND_MEAN
|
|
14 #endif
|
|
15 #include <windows.h>
|
|
16
|
|
17 #include "xpm_w32.h"
|
|
18
|
|
19 /* Engage Windows support in libXpm */
|
|
20 #define FOR_MSW
|
|
21
|
|
22 #include "xpm.h"
|
|
23
|
|
24 /*
|
3322
|
25 * Tries to load an Xpm image from the file "filename".
|
|
26 * Returns -1 on failure.
|
|
27 * Returns 0 on success and stores image and mask BITMAPS in "hImage" and
|
|
28 * "hShape".
|
7
|
29 */
|
|
30 int
|
|
31 LoadXpmImage(filename, hImage, hShape)
|
|
32 char *filename;
|
|
33 HBITMAP *hImage;
|
|
34 HBITMAP *hShape;
|
|
35 {
|
3322
|
36 XImage *img; /* loaded image */
|
7
|
37 XImage *shp; /* shapeimage */
|
|
38 XpmAttributes attr;
|
|
39 int res;
|
|
40 HDC hdc = CreateCompatibleDC(NULL);
|
|
41
|
|
42 attr.valuemask = 0;
|
|
43 res = XpmReadFileToImage(&hdc, filename, &img, &shp, &attr);
|
|
44 DeleteDC(hdc);
|
|
45 if (res < 0)
|
|
46 return -1;
|
3322
|
47 if (shp == NULL)
|
7
|
48 {
|
3935
|
49 if (img)
|
3322
|
50 XDestroyImage(img);
|
|
51 return -1;
|
7
|
52 }
|
3322
|
53 *hImage = img->bitmap;
|
|
54 *hShape = shp->bitmap;
|
|
55 return 0;
|
7
|
56 }
|