-/* Definitions and headers for communication with Win32 GUI.
+/* Definitions and headers for communication on the Microsoft W32 API.
Copyright (C) 1995 Free Software Foundation, Inc.
This file is part of GNU Emacs.
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifndef __WIN32_H__
-#define __WIN32_H__
-
+#ifndef EMACS_W32GUI_H
+#define EMACS_W32GUI_H
#include <windows.h>
+#include "w32bdf.h"
+
+/* Emulate XCharStruct. */
+typedef struct _XCharStruct
+{
+ short rbearing;
+ short lbearing;
+ short width;
+ short ascent;
+ short descent;
+} XCharStruct;
+
+enum w32_char_font_type
+{
+ UNKNOWN_FONT = 0 /* FONT_TYPE_UNKNOWN */,
+ ANSI_FONT,
+ UNICODE_FONT,
+ BDF_1D_FONT,
+ BDF_2D_FONT
+};
+
typedef struct W32FontStruct {
+ enum w32_char_font_type font_type;
TEXTMETRIC tm;
HFONT hfont;
+ bdffont *bdf;
+ int double_byte_p;
+ XCharStruct max_bounds;
+ XCharStruct scratch;
+ /* Only store info for ascii chars, if not fixed pitch. */
+ XCharStruct * per_char;
} W32FontStruct;
+typedef struct W32FontStruct XFontStruct;
+
+/* Emulate X GC's by keeping color and font info in a structure. */
+typedef struct _XGCValues
+{
+ COLORREF foreground;
+ COLORREF background;
+ XFontStruct * font;
+} XGCValues;
+
+#define GCForeground 0x01
+#define GCBackground 0x02
+#define GCFont 0x03
+
typedef HBITMAP Pixmap;
typedef HBITMAP Bitmap;
-typedef struct W32FontStruct XFontStruct;
-typedef HDC GC;
+
+typedef char * XrmDatabase;
+
+typedef XGCValues * GC;
typedef COLORREF Color;
typedef DWORD Time;
typedef HWND Window;
+typedef HDC Display; /* HDC so it doesn't conflict with xpm lib. */
typedef HCURSOR Cursor;
+#define No_Cursor (0)
+
+#define XChar2b wchar_t
+
+/* Dealing with bits of wchar_t as if they were an XChar2b. */
+#define STORE_XCHAR2B(chp, byte1, byte2) \
+ ((*chp) = ((XChar2b)((((byte1) & 0x00ff) << 8) | ((byte2) & 0x00ff))))
+
+#define XCHAR2B_BYTE1(chp) \
+ (((*chp) & 0xff00) >> 8)
+
+#define XCHAR2B_BYTE2(chp) \
+ ((*chp) & 0x00ff)
+
+
+/* Windows equivalent of XImage. */
+typedef struct _XImage
+{
+ unsigned char * data;
+ BITMAPINFO info;
+ /* Optional RGBQUAD array for palette follows (see BITMAPINFO docs). */
+} XImage;
+
#define FACE_DEFAULT (~0)
extern HINSTANCE hinst;
extern int XParseGeometry ();
-#endif
+
+typedef struct {
+ int x, y;
+ unsigned width, height;
+} XRectangle;
+
+#define NativeRectangle RECT
+
+#define CONVERT_TO_XRECT(xr,nr) \
+ ((xr).x = (nr).left, \
+ (xr).y = (nr).top, \
+ (xr).width = ((nr).right - (nr).left), \
+ (xr).height = ((nr).bottom - (nr).top))
+
+#define CONVERT_FROM_XRECT(xr,nr) \
+ ((nr).left = (xr).x, \
+ (nr).top = (xr).y, \
+ (nr).right = ((xr).x + (xr).width), \
+ (nr).bottom = ((xr).y + (xr).height))
+
+#define STORE_NATIVE_RECT(nr,x,y,width,height) \
+ ((nr).left = (x), \
+ (nr).top = (y), \
+ (nr).right = ((nr).left + (width)), \
+ (nr).bottom = ((nr).top + (height)))
+
+
+#endif /* EMACS_W32GUI_H */
+
+/* arch-tag: 9172e5fb-45a5-4684-afd9-ca0e81324604
+ (do not change this comment) */