Mercurial > hg > xemacs-beta
annotate src/console-msw-impl.h @ 5363:311f6817efc2
Remove various redundant wrapper lambdas, core lisp.
2011-03-08 Aidan Kehoe <kehoea@parhasard.net>
* package-ui.el (pui-add-required-packages):
* packages.el (packages-handle-package-dumped-lisps):
* bytecomp-runtime.el (byte-compile-with-fboundp):
* bytecomp-runtime.el (globally-declare-fboundp):
* bytecomp-runtime.el
(byte-compile-with-byte-compiler-warnings-suppressed):
* mule/devan-util.el (devanagari-reorder-glyphs-for-composition):
* mule/devan-util.el (devanagari-compose-to-one-glyph):
* mule/japanese.el:
* mule/japanese.el ("Japanese"):
* mule/make-coding-system.el (fixed-width-generate-helper):
* mule/mule-category.el (defined-category-list):
* mule/mule-category.el (undefined-category-designator):
Style change: remove redundant lambdas, things like (mapcar
#'(lambda (pkg) (symbol-name pkg)) ...) => (mapcar #'symbol-name ...).
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Tue, 08 Mar 2011 18:12:48 +0000 |
parents | a9c41067dd88 |
children | 308d34e9f07d |
rev | line source |
---|---|
872 | 1 /* Define mswindows-specific console, device, and frame object for XEmacs. |
2 Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. | |
3 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. | |
5043 | 4 Copyright (C) 2001, 2002, 2010 Ben Wing. |
872 | 5 |
6 This file is part of XEmacs. | |
7 | |
8 XEmacs is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
10 Free Software Foundation; either version 2, or (at your option) any | |
11 later version. | |
12 | |
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with XEmacs; see the file COPYING. If not, write to | |
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
21 Boston, MA 02111-1307, USA. */ | |
22 | |
23 /* Synched up with: Not in FSF. */ | |
24 | |
25 /* This file essentially Mule-ized (except perhaps some Unicode splitting). | |
26 5-2000. */ | |
27 | |
28 /* Authorship: | |
29 | |
30 Ultimately based on FSF, then later on JWZ work for Lemacs. | |
31 Rewritten over time by Ben Wing and Chuck Thompson. | |
32 Rewritten for mswindows by Jonathan Harris, November 1997 for 21.0. | |
33 */ | |
34 | |
35 #ifndef INCLUDED_console_msw_impl_h_ | |
36 #define INCLUDED_console_msw_impl_h_ | |
37 | |
38 #include "console-impl.h" | |
39 #include "console-msw.h" | |
40 | |
41 /* | |
42 * Consoles | |
43 */ | |
44 | |
45 DECLARE_CONSOLE_TYPE (mswindows); | |
46 | |
47 struct mswindows_console | |
48 { | |
49 int infd, outfd; | |
50 }; | |
51 | |
52 DECLARE_CONSOLE_TYPE (msprinter); | |
53 | |
54 /* | |
55 * Printer settings, aka devmode | |
56 */ | |
57 | |
903 | 58 struct Lisp_Devmode |
872 | 59 { |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5126
diff
changeset
|
60 NORMAL_LISP_OBJECT_HEADER header; |
872 | 61 |
62 /* Pointer to the DEVMODE structure */ | |
63 DEVMODEW *devmode; | |
64 | |
65 /* Full printer name. It can be longer than devmode->dmDeviceName | |
66 can accommodate, so need to keep it separately */ | |
67 Lisp_Object printer_name; | |
68 | |
69 /* Printer device this object is currently selected in, or Qnil | |
70 if not selected */ | |
71 Lisp_Object device; | |
72 | |
903 | 73 }; |
872 | 74 |
75 #define DEVMODE_SIZE(dm) ((dm)->dmSize + (dm)->dmDriverExtra) | |
76 #define XDEVMODE_SIZE(x) ((x)->devmode ? DEVMODE_SIZE((x)->devmode) : 0) | |
77 | |
78 /* | |
79 * Devices | |
80 */ | |
81 | |
82 struct mswindows_device | |
83 { | |
3092 | 84 #ifdef NEW_GC |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5126
diff
changeset
|
85 NORMAL_LISP_OBJECT_HEADER header; |
3092 | 86 #endif /* NEW_GC */ |
872 | 87 Lisp_Object fontlist; /* List of (STRING . FIXED-P), device fonts */ |
88 HDC hcdc; /* Compatible DC */ | |
89 DWORD update_tick; /* Used when device is modified through | |
90 Windows messages, see WM_DISPLAYCHANGE | |
91 in event-msw.c */ | |
92 }; | |
93 | |
3092 | 94 #ifdef NEW_GC |
95 typedef struct mswindows_device Lisp_Mswindows_Device; | |
96 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
3092
diff
changeset
|
97 DECLARE_LISP_OBJECT (mswindows_device, Lisp_Mswindows_Device); |
3092 | 98 |
99 #define XMSWINDOWS_DEVICE(x) \ | |
100 XRECORD (x, mswindows_device, Lisp_Mswindows_Device) | |
101 #define wrap_mswindows_device(p) wrap_record (p, mswindows_device) | |
102 #define MSWINDOWS_DEVICE_P(x) RECORDP (x, mswindows_device) | |
103 #endif /* NEW_GC */ | |
104 | |
872 | 105 #define DEVICE_MSWINDOWS_DATA(d) DEVICE_TYPE_DATA (d, mswindows) |
106 #define DEVICE_MSWINDOWS_FONTLIST(d) (DEVICE_MSWINDOWS_DATA (d)->fontlist) | |
107 #define DEVICE_MSWINDOWS_HCDC(d) (DEVICE_MSWINDOWS_DATA (d)->hcdc) | |
108 #define DEVICE_MSWINDOWS_UPDATE_TICK(d) (DEVICE_MSWINDOWS_DATA (d)->update_tick) | |
109 | |
110 struct msprinter_device | |
111 { | |
3092 | 112 #ifdef NEW_GC |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5126
diff
changeset
|
113 NORMAL_LISP_OBJECT_HEADER header; |
3092 | 114 #endif /* NEW_GC */ |
872 | 115 HDC hdc, hcdc; /* Printer and the comp. DCs */ |
116 HANDLE hprinter; | |
117 Lisp_Object name; | |
118 Lisp_Object devmode; | |
119 Lisp_Object fontlist; | |
120 }; | |
121 | |
3092 | 122 #ifdef NEW_GC |
123 typedef struct msprinter_device Lisp_Msprinter_Device; | |
124 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
3092
diff
changeset
|
125 DECLARE_LISP_OBJECT (msprinter_device, Lisp_Msprinter_Device); |
3092 | 126 |
127 #define XMSPRINTER_DEVICE(x) \ | |
128 XRECORD (x, msprinter_device, Lisp_Msprinter_Device) | |
129 #define wrap_msprinter_device(p) wrap_record (p, msprinter_device) | |
130 #define MSPRINTER_DEVICE_P(x) RECORDP (x, msprinter_device) | |
131 #endif /* NEW_GC */ | |
132 | |
872 | 133 #define DEVICE_MSPRINTER_DATA(d) DEVICE_TYPE_DATA (d, msprinter) |
134 #define DEVICE_MSPRINTER_HDC(d) (DEVICE_MSPRINTER_DATA (d)->hdc) | |
135 #define DEVICE_MSPRINTER_HCDC(d) (DEVICE_MSPRINTER_DATA (d)->hcdc) | |
136 #define DEVICE_MSPRINTER_HPRINTER(d) (DEVICE_MSPRINTER_DATA (d)->hprinter) | |
137 #define DEVICE_MSPRINTER_FONTLIST(d) (DEVICE_MSPRINTER_DATA (d)->fontlist) | |
138 #define DEVICE_MSPRINTER_NAME(d) (DEVICE_MSPRINTER_DATA (d)->name) | |
139 #define DEVICE_MSPRINTER_DEVMODE(d) (DEVICE_MSPRINTER_DATA (d)->devmode) | |
140 | |
141 #define CONSOLE_TYPESYM_MSPRINTER_P(typesym) EQ (typesym, Qmsprinter) | |
142 #define DEVICE_MSPRINTER_P(dev) CONSOLE_TYPESYM_MSPRINTER_P (DEVICE_TYPE (dev)) | |
143 #define CHECK_MSPRINTER_DEVICE(z) CHECK_DEVICE_TYPE (z, msprinter) | |
144 #define CONCHECK_MSPRINTER_DEVICE(z) CONCHECK_DEVICE_TYPE (z, msprinter) | |
145 | |
146 /* Common checks */ | |
147 | |
148 #define DEVICE_MSGDI_P(dev) (DEVICE_MSWINDOWS_P(dev) || DEVICE_MSPRINTER_P(dev)) | |
149 #define CHECK_MSGDI_DEVICE(d) \ | |
150 do { \ | |
151 CHECK_DEVICE (d); \ | |
152 if (!(DEVICEP (d) && DEVICE_MSGDI_P(XDEVICE(d)))) \ | |
153 dead_wrong_type_argument \ | |
154 (list3 (Qor, Qmswindows, Qmsprinter), d); \ | |
155 } while (0) | |
156 #define CONCHECK_MSGDI_DEVICE(d) \ | |
157 do { \ | |
158 CHECK_DEVICE (d); \ | |
159 if (!(DEVICEP (d) && DEVICE_MSGDI_P(XDEVICE(d)))) \ | |
160 wrong_type_argument \ | |
161 (list3 (Qor, Qmswindows, Qmsprinter), d); \ | |
162 } while (0) | |
163 | |
164 /* | |
165 * Frames | |
166 */ | |
167 | |
168 struct mswindows_frame | |
169 { | |
3092 | 170 #ifdef NEW_GC |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5126
diff
changeset
|
171 NORMAL_LISP_OBJECT_HEADER header; |
3092 | 172 #endif /* NEW_GC */ |
173 | |
872 | 174 /* win32 window handle */ |
175 HWND hwnd; | |
176 | |
177 /* DC for this win32 window */ | |
178 HDC hdc; | |
179 | |
180 /* Used with DeferWindowPos */ | |
181 HDWP hdwp; | |
182 | |
183 /* Time of last click event, for button 2 emul */ | |
184 DWORD last_click_time; | |
185 | |
186 /* Mods of last click event */ | |
187 DWORD last_click_mods; | |
188 | |
189 /* Coordinates of last click event, screen-relative */ | |
190 POINTS last_click_point; | |
191 #ifdef HAVE_TOOLBARS | |
192 /* Toolbar hash table. See toolbar-msw.c */ | |
193 Lisp_Object toolbar_hash_table; | |
194 unsigned int toolbar_checksum[4]; | |
195 #endif | |
196 | |
197 /* Menu hash table. See menubar-msw.c */ | |
198 Lisp_Object menu_hash_table; | |
199 | |
200 /* Menu checksum. See menubar-msw.c */ | |
201 unsigned int menu_checksum; | |
202 | |
203 /* Widget glyphs attached to this frame. See glyphs-msw.c */ | |
204 Lisp_Object widget_hash_table1, widget_hash_table2, widget_hash_table3; | |
205 | |
206 /* Frame title hash value. See frame-msw.c */ | |
207 unsigned int title_checksum; | |
208 | |
209 #ifdef MULE | |
210 int cursor_x; | |
211 int cursor_y; | |
212 face_index cursor_findex; | |
213 #endif | |
214 | |
215 /* Misc flags */ | |
216 int button2_need_lbutton : 1; | |
217 int button2_need_rbutton : 1; | |
218 int button2_is_down : 1; | |
219 int ignore_next_lbutton_up : 1; | |
220 int ignore_next_rbutton_up : 1; | |
221 int sizing : 1; | |
222 int paint_pending : 1; /* Whether a WM_PAINT magic event has been queued */ | |
223 int popup : 1; /* frame is a popup frame */ | |
224 | |
225 /* Geometry, in characters, as specified by proplist during frame | |
226 creation. Members are set to -1 for unspecified */ | |
227 XEMACS_RECT_WH *target_rect; | |
228 }; | |
229 | |
3092 | 230 #ifdef NEW_GC |
231 typedef struct mswindows_frame Lisp_Mswindows_Frame; | |
232 | |
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
3092
diff
changeset
|
233 DECLARE_LISP_OBJECT (mswindows_frame, Lisp_Mswindows_Frame); |
3092 | 234 |
235 #define XMSWINDOWS_FRAME(x) \ | |
236 XRECORD (x, mswindows_frame, Lisp_Mswindows_Frame) | |
237 #define wrap_mswindows_frame(p) wrap_record (p, mswindows_frame) | |
238 #define MSWINDOWS_FRAME_P(x) RECORDP (x, mswindows_frame) | |
239 #endif /* NEW_GC */ | |
240 | |
872 | 241 #define FRAME_MSWINDOWS_DATA(f) FRAME_TYPE_DATA (f, mswindows) |
242 | |
243 #define FRAME_MSWINDOWS_HANDLE(f) (FRAME_MSWINDOWS_DATA (f)->hwnd) | |
244 #define FRAME_MSWINDOWS_DC(f) (FRAME_MSWINDOWS_DATA (f)->hdc) | |
245 #define FRAME_MSWINDOWS_MENU_HASH_TABLE(f) (FRAME_MSWINDOWS_DATA (f)->menu_hash_table) | |
246 #define FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f) \ | |
247 (FRAME_MSWINDOWS_DATA (f)->toolbar_hash_table) | |
248 #define FRAME_MSWINDOWS_WIDGET_HASH_TABLE1(f) \ | |
249 (FRAME_MSWINDOWS_DATA (f)->widget_hash_table1) | |
250 #define FRAME_MSWINDOWS_WIDGET_HASH_TABLE2(f) \ | |
251 (FRAME_MSWINDOWS_DATA (f)->widget_hash_table2) | |
252 #define FRAME_MSWINDOWS_WIDGET_HASH_TABLE3(f) \ | |
253 (FRAME_MSWINDOWS_DATA (f)->widget_hash_table3) | |
254 #define FRAME_MSWINDOWS_TOOLBAR_CHECKSUM(f,pos) \ | |
255 (FRAME_MSWINDOWS_DATA (f)->toolbar_checksum[pos]) | |
256 #define FRAME_MSWINDOWS_MENU_CHECKSUM(f) (FRAME_MSWINDOWS_DATA (f)->menu_checksum) | |
257 #define FRAME_MSWINDOWS_TITLE_CHECKSUM(f) (FRAME_MSWINDOWS_DATA (f)->title_checksum) | |
258 #define FRAME_MSWINDOWS_TARGET_RECT(f) (FRAME_MSWINDOWS_DATA (f)->target_rect) | |
259 | |
260 #define FRAME_MSWINDOWS_POPUP(f) (FRAME_MSWINDOWS_DATA (f)->popup) | |
261 | |
262 #ifdef MULE | |
263 # define FRAME_MSWINDOWS_CURSOR_X(f) (FRAME_MSWINDOWS_DATA (f)->cursor_x) | |
264 # define FRAME_MSWINDOWS_CURSOR_Y(f) (FRAME_MSWINDOWS_DATA (f)->cursor_y) | |
265 # define FRAME_MSWINDOWS_CURSOR_FINDEX(f) (FRAME_MSWINDOWS_DATA (f)->cursor_findex) | |
266 #endif | |
267 | |
268 /* Frame check and validation macros */ | |
269 #define FRAME_MSWINDOWS_P(frm) CONSOLE_TYPESYM_MSWINDOWS_P (FRAME_TYPE (frm)) | |
270 #define CHECK_MSWINDOWS_FRAME(z) CHECK_FRAME_TYPE (z, mswindows) | |
271 #define CONCHECK_MSWINDOWS_FRAME(z) CONCHECK_FRAME_TYPE (z, mswindows) | |
272 | |
273 /* win32 window LONG indices */ | |
274 #define XWL_FRAMEOBJ 0 | |
275 #define XWL_COUNT 1 /* Number of LONGs that we use */ | |
276 #define MSWINDOWS_WINDOW_EXTRA_BYTES (XWL_COUNT * 4) | |
277 | |
278 /* | |
279 * Printer frame, aka printer job | |
280 */ | |
281 | |
282 struct msprinter_frame | |
283 { | |
284 int left_margin, top_margin, /* All in twips */ | |
285 right_margin, bottom_margin; | |
286 int charheight, charwidth; /* As per proplist or -1 if not given */ | |
287 int pix_left, pix_top; /* Calculated in init_frame_*, VP offset */ | |
288 int job_started : 1; | |
289 int page_started : 1; | |
290 }; | |
291 | |
292 #define FRAME_MSPRINTER_DATA(f) FRAME_TYPE_DATA (f, msprinter) | |
293 #define FRAME_MSPRINTER_LEFT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->left_margin) | |
294 #define FRAME_MSPRINTER_RIGHT_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->top_margin) | |
295 #define FRAME_MSPRINTER_TOP_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->right_margin) | |
296 #define FRAME_MSPRINTER_BOTTOM_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->bottom_margin) | |
297 #define FRAME_MSPRINTER_JOB_STARTED(f) (FRAME_MSPRINTER_DATA (f)->job_started) | |
298 #define FRAME_MSPRINTER_PAGE_STARTED(f) (FRAME_MSPRINTER_DATA (f)->page_started) | |
299 #define FRAME_MSPRINTER_CHARWIDTH(f) (FRAME_MSPRINTER_DATA (f)->charwidth) | |
300 #define FRAME_MSPRINTER_CHARHEIGHT(f) (FRAME_MSPRINTER_DATA (f)->charheight) | |
301 #define FRAME_MSPRINTER_PIXLEFT(f) (FRAME_MSPRINTER_DATA (f)->pix_left) | |
302 #define FRAME_MSPRINTER_PIXTOP(f) (FRAME_MSPRINTER_DATA (f)->pix_top) | |
303 | |
304 /* | |
305 * Events | |
306 */ | |
307 | |
308 /* win32 messages / magic event types */ | |
309 #define XM_BUMPQUEUE (WM_USER + 101) | |
310 #define XM_MAPFRAME (WM_USER + 102) | |
311 #define XM_UNMAPFRAME (WM_USER + 103) | |
312 | |
313 struct mswindows_dialog_id | |
314 { | |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5126
diff
changeset
|
315 NORMAL_LISP_OBJECT_HEADER header; |
872 | 316 |
317 Lisp_Object frame; | |
318 Lisp_Object callbacks; | |
319 HWND hwnd; | |
320 }; | |
321 | |
322 #endif /* INCLUDED_console_msw_impl_h_ */ |