1 /* vi:set ts=8 sts=4 sw=4 noet: 2 * 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 /* 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". 29 */ 30 int LoadXpmImage(char * filename,HBITMAP * hImage,HBITMAP * hShape)31LoadXpmImage( 32 char *filename, 33 HBITMAP *hImage, 34 HBITMAP *hShape) 35 { 36 XImage *img; // loaded image 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; 47 if (shp == NULL) 48 { 49 if (img) 50 XDestroyImage(img); 51 return -1; 52 } 53 *hImage = img->bitmap; 54 *hShape = shp->bitmap; 55 return 0; 56 } 57