summaryrefslogtreecommitdiffstats
path: root/src/xpm_w32.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 08:50:31 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 08:50:31 +0000
commitaed8ce9da277f5ecffe968b324f242c41c3b752a (patch)
treed2e538394cb7a8a7c42a4aac6ccf1a8e3256999b /src/xpm_w32.c
parentInitial commit. (diff)
downloadvim-aed8ce9da277f5ecffe968b324f242c41c3b752a.tar.xz
vim-aed8ce9da277f5ecffe968b324f242c41c3b752a.zip
Adding upstream version 2:9.0.1378.upstream/2%9.0.1378upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--src/xpm_w32.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/xpm_w32.c b/src/xpm_w32.c
new file mode 100644
index 0000000..111988a
--- /dev/null
+++ b/src/xpm_w32.c
@@ -0,0 +1,56 @@
+/* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * Load XPM image.
+ *
+ * This function is placed in separate file because Xpm headers conflict with
+ * Vim ones :(
+ *
+ * Written by Sergey Khorev.
+ * http://iamphet.nm.ru/vim/index.html
+ */
+
+#ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif
+#include <windows.h>
+
+#include "xpm_w32.h"
+
+// Engage Windows support in libXpm
+#define FOR_MSW
+
+#include "xpm.h"
+
+/*
+ * Tries to load an Xpm image from the file "filename".
+ * Returns -1 on failure.
+ * Returns 0 on success and stores image and mask BITMAPS in "hImage" and
+ * "hShape".
+ */
+ int
+LoadXpmImage(
+ char *filename,
+ HBITMAP *hImage,
+ HBITMAP *hShape)
+{
+ XImage *img; // loaded image
+ XImage *shp; // shapeimage
+ XpmAttributes attr;
+ int res;
+ HDC hdc = CreateCompatibleDC(NULL);
+
+ attr.valuemask = 0;
+ res = XpmReadFileToImage(&hdc, filename, &img, &shp, &attr);
+ DeleteDC(hdc);
+ if (res < 0)
+ return -1;
+ if (shp == NULL)
+ {
+ if (img)
+ XDestroyImage(img);
+ return -1;
+ }
+ *hImage = img->bitmap;
+ *hShape = shp->bitmap;
+ return 0;
+}