Mercurial > emacs
annotate src/w32gui.h @ 111979:b8b55da43e95
Handle invisible cursor (bg same as cursor color) for Nextstep.
* nsterm.m (ns_draw_window_cursor): If the cursor color is the
same as the background, use the face forground as cursor.
author | Jan D. <jan.h.d@swipnet.se> |
---|---|
date | Thu, 16 Dec 2010 20:37:13 +0100 |
parents | b8c31a27c558 |
children | 417b1e4d63cd |
rev | line source |
---|---|
16886
c686d4f3728a
Change all uses of win95, winnt, and win32 into Windows 95, Windows
Geoff Voelker <voelker@cs.washington.edu>
parents:
14186
diff
changeset
|
1 /* Definitions and headers for communication on the Microsoft W32 API. |
75227
e90d04cd455a
Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents:
68651
diff
changeset
|
2 Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005, |
106815 | 3 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
13434 | 4 |
5 This file is part of GNU Emacs. | |
6 | |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94915
diff
changeset
|
7 GNU Emacs is free software: you can redistribute it and/or modify |
13434 | 8 it under the terms of the GNU General Public License as published by |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94915
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94915
diff
changeset
|
10 (at your option) any later version. |
13434 | 11 |
12 GNU Emacs is distributed in the hope that it will be useful, | |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94915
diff
changeset
|
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
13434 | 19 |
29605
beb7f126f175
(EMACS_W32GUI_H): Renamed from __W32GUI_H__
Jason Rumney <jasonr@gnu.org>
parents:
29318
diff
changeset
|
20 #ifndef EMACS_W32GUI_H |
beb7f126f175
(EMACS_W32GUI_H): Renamed from __W32GUI_H__
Jason Rumney <jasonr@gnu.org>
parents:
29318
diff
changeset
|
21 #define EMACS_W32GUI_H |
13434 | 22 #include <windows.h> |
31112 | 23 |
95713
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
24 /* Local memory management for menus. */ |
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
25 #define local_heap (GetProcessHeap ()) |
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
26 #define local_alloc(n) (HeapAlloc (local_heap, HEAP_ZERO_MEMORY, (n))) |
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
27 #define local_free(p) (HeapFree (local_heap, 0, ((LPVOID) (p)))) |
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
28 |
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
29 #define malloc_widget_value() ((widget_value *) local_alloc (sizeof (widget_value))) |
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
30 #define free_widget_value(wv) (local_free ((wv))) |
37802c533470
* w32gui.h (widget_value, XtPointer, Boolean, enum button_type):
Jason Rumney <jasonr@gnu.org>
parents:
95710
diff
changeset
|
31 |
27398
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
32 /* Emulate X GC's by keeping color and font info in a structure. */ |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
33 typedef struct _XGCValues |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
34 { |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
35 COLORREF foreground; |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
36 COLORREF background; |
94915
39c862063355
(XGCValues): Surround `XFontStruct *font' by "if
Kenichi Handa <handa@m17n.org>
parents:
79759
diff
changeset
|
37 struct font *font; |
27398
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
38 } XGCValues; |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
39 |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
40 #define GCForeground 0x01 |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
41 #define GCBackground 0x02 |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
42 #define GCFont 0x03 |
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
43 |
13434 | 44 typedef HBITMAP Pixmap; |
45 typedef HBITMAP Bitmap; | |
27398
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
46 |
50363
6bc35dcf692b
(XrmDatabase): New (dummy) typedef.
Kim F. Storm <storm@cua.dk>
parents:
50230
diff
changeset
|
47 typedef char * XrmDatabase; |
6bc35dcf692b
(XrmDatabase): New (dummy) typedef.
Kim F. Storm <storm@cua.dk>
parents:
50230
diff
changeset
|
48 |
27398
d6331257c601
(XGCValue): New struct for emulating X GCs.
Jason Rumney <jasonr@gnu.org>
parents:
24144
diff
changeset
|
49 typedef XGCValues * GC; |
13434 | 50 typedef COLORREF Color; |
51 typedef DWORD Time; | |
52 typedef HWND Window; | |
50162 | 53 typedef HDC Display; /* HDC so it doesn't conflict with xpm lib. */ |
13434 | 54 typedef HCURSOR Cursor; |
55 | |
50230
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
56 #define No_Cursor (0) |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
57 |
50153
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
58 #define XChar2b wchar_t |
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
59 |
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
60 /* Dealing with bits of wchar_t as if they were an XChar2b. */ |
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
61 #define STORE_XCHAR2B(chp, byte1, byte2) \ |
111236
b8c31a27c558
w32gui.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): Surround chp by parentheses.
Kenichi Handa <handa@m17n.org>
parents:
109516
diff
changeset
|
62 ((*(chp)) = ((XChar2b)((((byte1) & 0x00ff) << 8) | ((byte2) & 0x00ff)))) |
50153
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
63 |
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
64 #define XCHAR2B_BYTE1(chp) \ |
111236
b8c31a27c558
w32gui.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): Surround chp by parentheses.
Kenichi Handa <handa@m17n.org>
parents:
109516
diff
changeset
|
65 (((*(chp)) & 0xff00) >> 8) |
50153
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
66 |
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
67 #define XCHAR2B_BYTE2(chp) \ |
111236
b8c31a27c558
w32gui.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): Surround chp by parentheses.
Kenichi Handa <handa@m17n.org>
parents:
109516
diff
changeset
|
68 ((*(chp)) & 0x00ff) |
50153
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
69 |
04ca11636b72
(Display): Add dummy typedef for consolidation.
Kim F. Storm <storm@cua.dk>
parents:
47997
diff
changeset
|
70 |
44046 | 71 /* Windows equivalent of XImage. */ |
72 typedef struct _XImage | |
73 { | |
74 unsigned char * data; | |
75 BITMAPINFO info; | |
76 /* Optional RGBQUAD array for palette follows (see BITMAPINFO docs). */ | |
77 } XImage; | |
40327
57a44aac3228
Add a dummy typedef for XImage. From Juanma Barranquero <lektu@terra.es>.
Eli Zaretskii <eliz@gnu.org>
parents:
39711
diff
changeset
|
78 |
13434 | 79 #define FACE_DEFAULT (~0) |
80 | |
81 extern HINSTANCE hinst; | |
82 extern HINSTANCE hprevinst; | |
83 extern LPSTR lpCmdLine; | |
84 extern int nCmdShow; | |
85 | |
86 /* Bit Gravity */ | |
87 | |
88 #define ForgetGravity 0 | |
89 #define NorthWestGravity 1 | |
90 #define NorthGravity 2 | |
91 #define NorthEastGravity 3 | |
92 #define WestGravity 4 | |
93 #define CenterGravity 5 | |
94 #define EastGravity 6 | |
95 #define SouthWestGravity 7 | |
96 #define SouthGravity 8 | |
97 #define SouthEastGravity 9 | |
98 #define StaticGravity 10 | |
99 | |
100 #define NoValue 0x0000 | |
101 #define XValue 0x0001 | |
102 #define YValue 0x0002 | |
103 #define WidthValue 0x0004 | |
104 #define HeightValue 0x0008 | |
105 #define AllValues 0x000F | |
106 #define XNegative 0x0010 | |
107 #define YNegative 0x0020 | |
108 | |
109 #define USPosition (1L << 0) /* user specified x, y */ | |
110 #define USSize (1L << 1) /* user specified width, height */ | |
111 | |
112 #define PPosition (1L << 2) /* program specified position */ | |
113 #define PSize (1L << 3) /* program specified size */ | |
114 #define PMinSize (1L << 4) /* program specified minimum size */ | |
115 #define PMaxSize (1L << 5) /* program specified maximum size */ | |
116 #define PResizeInc (1L << 6) /* program specified resize increments */ | |
117 #define PAspect (1L << 7) /* program specified min and max aspect ratios */ | |
118 #define PBaseSize (1L << 8) /* program specified base for incrementing */ | |
119 #define PWinGravity (1L << 9) /* program specified window gravity */ | |
120 | |
109516
68ca98ae70fb
Make building under stricter warning flags somewhat cleaner.
Juanma Barranquero <lekktu@gmail.com>
parents:
106815
diff
changeset
|
121 extern int XParseGeometry (char *, int *, int *, unsigned *, unsigned *); |
13434 | 122 |
50230
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
123 |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
124 typedef struct { |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
125 int x, y; |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
126 unsigned width, height; |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
127 } XRectangle; |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
128 |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
129 #define NativeRectangle RECT |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
130 |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
131 #define CONVERT_TO_XRECT(xr,nr) \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
132 ((xr).x = (nr).left, \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
133 (xr).y = (nr).top, \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
134 (xr).width = ((nr).right - (nr).left), \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
135 (xr).height = ((nr).bottom - (nr).top)) |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
136 |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
137 #define CONVERT_FROM_XRECT(xr,nr) \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
138 ((nr).left = (xr).x, \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
139 (nr).top = (xr).y, \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
140 (nr).right = ((xr).x + (xr).width), \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
141 (nr).bottom = ((xr).y + (xr).height)) |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
142 |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
143 #define STORE_NATIVE_RECT(nr,x,y,width,height) \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
144 ((nr).left = (x), \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
145 (nr).top = (y), \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
146 (nr).right = ((nr).left + (width)), \ |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
147 (nr).bottom = ((nr).top + (height))) |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
148 |
c2c4c37724f1
(No_Cursor): Define as 0 for W32.
Kim F. Storm <storm@cua.dk>
parents:
50162
diff
changeset
|
149 |
29605
beb7f126f175
(EMACS_W32GUI_H): Renamed from __W32GUI_H__
Jason Rumney <jasonr@gnu.org>
parents:
29318
diff
changeset
|
150 #endif /* EMACS_W32GUI_H */ |
52401 | 151 |
152 /* arch-tag: 9172e5fb-45a5-4684-afd9-ca0e81324604 | |
153 (do not change this comment) */ |