comparison dw.h @ 650:55b677d460e9

Added initial support for a MacOS Cocoa port.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 22 Feb 2011 17:15:15 +0000
parents 9ab89d89e6b4
children c60a4f6cfae8
comparison
equal deleted inserted replaced
649:3e2ada9ee0ac 650:55b677d460e9
243 extern HMQ dwhmq; 243 extern HMQ dwhmq;
244 #endif 244 #endif
245 245
246 #if defined(__MAC__) 246 #if defined(__MAC__)
247 /* MacOS specific section */ 247 /* MacOS specific section */
248 #include <Carbon/Carbon.h> 248 #include <pthread.h>
249 249 #include <dlfcn.h>
250 typedef ControlRef HWND; 250
251 typedef ThreadID DWTID; 251 /* Unfortunately using Cocoa we can't include
252 * Cocoa.h from C code, so we have to instead
253 * use opaque types and use the values from
254 * Cocoa.h in the header here directly without
255 * using the symbolic names.
256 */
257
258 #define TRUE 1
259 #define FALSE 0
260
261 typedef void *HWND;
262 typedef void *HSHM;
252 typedef unsigned long ULONG; 263 typedef unsigned long ULONG;
253 typedef long LONG; 264 typedef long LONG;
254 typedef unsigned short USHORT; 265 typedef unsigned short USHORT;
255 typedef short SHORT; 266 typedef short SHORT;
256 typedef unsigned short UWORD; 267 typedef unsigned short UWORD;
257 typedef short WORD ; 268 typedef short WORD ;
258 typedef unsigned char UCHAR; 269 typedef unsigned char UCHAR;
259 typedef char CHAR; 270 typedef char CHAR;
260 typedef unsigned UINT; 271 typedef unsigned UINT;
261 typedef int INT; 272 typedef int INT;
262 typedef void *HMTX; 273 typedef pthread_mutex_t *HMTX;
263 typedef void *HEV; 274 typedef struct _dw_unix_event {
264 typedef void *HSHM; 275 pthread_mutex_t mutex;
265 typedef void *HMOD; 276 pthread_cond_t event;
277 pthread_t thread;
278 int alive;
279 int posted;
280 } *HEV;
281 typedef pthread_t DWTID;
282 typedef void * HMOD;
283 struct _dw_unix_shm {
284 int fd;
285 char *path;
286 int sid;
287 int size;
288 };
266 typedef void *HTREEITEM; 289 typedef void *HTREEITEM;
267 typedef MenuRef HMENUI; 290 typedef void *HMENUI;
268 291
269 typedef struct _window_data { 292 typedef struct _window_data {
270 UserData *root; 293 UserData *root;
271 HWND clickdefault; 294 HWND clickdefault;
272 ULONG flags; 295 ULONG flags;
293 #define DW_DT_HALFTONE 0 316 #define DW_DT_HALFTONE 0
294 #define DW_DT_MNEMONIC 0 317 #define DW_DT_MNEMONIC 0
295 #define DW_DT_WORDBREAK 0 318 #define DW_DT_WORDBREAK 0
296 #define DW_DT_ERASERECT 0 319 #define DW_DT_ERASERECT 0
297 320
298 #define DW_FCF_TITLEBAR 0 321 #define DW_FCF_TITLEBAR (1 << 0) /* NSTitledWindowMask */
299 #define DW_FCF_SYSMENU kWindowCloseBoxAttribute 322 #define DW_FCF_SYSMENU (1 << 1) /* NSClosableWindowMask */
300 #define DW_FCF_MENU 0 323 #define DW_FCF_MENU 0
301 #define DW_FCF_SIZEBORDER (kWindowResizableAttribute|kWindowLiveResizeAttribute) 324 #define DW_FCF_SIZEBORDER (1 << 3) /* NSResizableWindowMask */
302 #define DW_FCF_MINBUTTON kWindowCollapseBoxAttribute 325 #define DW_FCF_MINBUTTON (1 << 2) /* NSMiniaturizableWindowMask */
303 #define DW_FCF_MAXBUTTON kWindowFullZoomAttribute 326 #define DW_FCF_MAXBUTTON 0
304 #define DW_FCF_MINMAX (kWindowCollapseBoxAttribute|kWindowFullZoomAttribute) 327 #define DW_FCF_MINMAX (1 << 2) /* NSMiniaturizableWindowMask */
305 #define DW_FCF_VERTSCROLL 0 328 #define DW_FCF_VERTSCROLL 0
306 #define DW_FCF_HORZSCROLL 0 329 #define DW_FCF_HORZSCROLL 0
307 #define DW_FCF_DLGBORDER 0 330 #define DW_FCF_DLGBORDER 0
308 #define DW_FCF_BORDER 0 331 #define DW_FCF_BORDER 0
309 #define DW_FCF_SHELLPOSITION 0 332 #define DW_FCF_SHELLPOSITION 0
310 #define DW_FCF_TASKLIST 0 333 #define DW_FCF_TASKLIST 0
311 #define DW_FCF_NOBYTEALIGN 0 334 #define DW_FCF_NOBYTEALIGN 0
312 #define DW_FCF_NOMOVEWITHOWNER 0 335 #define DW_FCF_NOMOVEWITHOWNER 0
313 #define DW_FCF_SYSMODAL 0 336 #define DW_FCF_SYSMODAL 0
314 #define DW_FCF_HIDEBUTTON kWindowCollapseBoxAttribute 337 #define DW_FCF_HIDEBUTTON 0
315 #define DW_FCF_HIDEMAX 0 338 #define DW_FCF_HIDEMAX 0
316 #define DW_FCF_AUTOICON 0 339 #define DW_FCF_AUTOICON 0
317 #define DW_FCF_MAXIMIZE 0 340 #define DW_FCF_MAXIMIZE 0
318 #define DW_FCF_MINIMIZE 0 341 #define DW_FCF_MINIMIZE 0
319 342
342 # define DW_MLE_CASESENSITIVE 0 365 # define DW_MLE_CASESENSITIVE 0
343 #endif 366 #endif
344 367
345 #define DW_POINTER_DEFAULT 0 368 #define DW_POINTER_DEFAULT 0
346 #define DW_POINTER_ARROW 0 369 #define DW_POINTER_ARROW 0
347 #define DW_POINTER_CLOCK watchCursor 370 #define DW_POINTER_CLOCK 0
348 371
349 #define HWND_DESKTOP ((HWND)0) 372 #define HWND_DESKTOP ((HWND)0)
350 373
351 /* flag values for dw_messagebox() */ 374 /* flag values for dw_messagebox() */
352 #define DW_MB_OK (1 << 1) 375 #define DW_MB_OK (1 << 1)
359 #define DW_MB_INFORMATION (1 << 12) 382 #define DW_MB_INFORMATION (1 << 12)
360 #define DW_MB_QUESTION (1 << 13) 383 #define DW_MB_QUESTION (1 << 13)
361 384
362 /* Virtual Key Codes */ 385 /* Virtual Key Codes */
363 #define VK_LBUTTON 0 386 #define VK_LBUTTON 0
364 #define VK_RBUTTON 0 387 #define VK_RBUTTON 1
365 #define VK_CANCEL 0 388 #define VK_CANCEL 2
366 #define VK_MBUTTON 0 389 #define VK_MBUTTON 3
367 #define VK_BACK 0 390 #define VK_BACK 4
368 #define VK_TAB 0 391 #define VK_TAB 5
369 #define VK_CLEAR 0 392 #define VK_CLEAR 6
370 #define VK_RETURN 0 393 #define VK_RETURN 7
371 #define VK_MENU 0 394 #define VK_MENU 8
372 #define VK_PAUSE 0 395 #define VK_PAUSE 9
373 #define VK_CAPITAL 0 396 #define VK_CAPITAL 10
374 #define VK_ESCAPE 0 397 #define VK_ESCAPE 11
375 #define VK_SPACE 0 398 #define VK_SPACE 12
376 #define VK_PRIOR 0 399 #define VK_PRIOR 13
377 #define VK_NEXT 0 400 #define VK_NEXT 14
378 #define VK_END 0 401 #define VK_END 15
379 #define VK_HOME 0 402 #define VK_HOME 16
380 #define VK_LEFT 0 403 #define VK_LEFT 17
381 #define VK_UP 0 404 #define VK_UP 18
382 #define VK_RIGHT 0 405 #define VK_RIGHT 19
383 #define VK_DOWN 0 406 #define VK_DOWN 20
384 #define VK_SELECT 0 407 #define VK_SELECT 21
385 #define VK_PRINT 0 408 #define VK_PRINT 22
386 #define VK_EXECUTE 0 409 #define VK_EXECUTE 23
387 #define VK_SNAPSHOT 0 410 #define VK_SNAPSHOT 24
388 #define VK_INSERT 0 411 #define VK_INSERT 25
389 #define VK_DELETE 0 412 #define VK_DELETE 26
390 #define VK_HELP 0 413 #define VK_HELP 27
391 #define VK_LWIN 0 414 #define VK_LWIN 28
392 #define VK_RWIN 0 415 #define VK_RWIN 29
393 #define VK_NUMPAD0 0 416 #define VK_NUMPAD0 30
394 #define VK_NUMPAD1 0 417 #define VK_NUMPAD1 31
395 #define VK_NUMPAD2 0 418 #define VK_NUMPAD2 32
396 #define VK_NUMPAD3 0 419 #define VK_NUMPAD3 33
397 #define VK_NUMPAD4 0 420 #define VK_NUMPAD4 34
398 #define VK_NUMPAD5 0 421 #define VK_NUMPAD5 35
399 #define VK_NUMPAD6 0 422 #define VK_NUMPAD6 36
400 #define VK_NUMPAD7 0 423 #define VK_NUMPAD7 37
401 #define VK_NUMPAD8 0 424 #define VK_NUMPAD8 38
402 #define VK_NUMPAD9 0 425 #define VK_NUMPAD9 39
403 #define VK_MULTIPLY 0 426 #define VK_MULTIPLY 40
404 #define VK_ADD 0 427 #define VK_ADD 41
405 #define VK_SEPARATOR 0 428 #define VK_SEPARATOR 42
406 #define VK_SUBTRACT 0 429 #define VK_SUBTRACT 43
407 #define VK_DECIMAL 0 430 #define VK_DECIMAL 44
408 #define VK_DIVIDE 0 431 #define VK_DIVIDE 45
409 #define VK_F1 0 432 #define VK_F1 46
410 #define VK_F2 0 433 #define VK_F2 47
411 #define VK_F3 0 434 #define VK_F3 48
412 #define VK_F4 0 435 #define VK_F4 49
413 #define VK_F5 0 436 #define VK_F5 50
414 #define VK_F6 0 437 #define VK_F6 51
415 #define VK_F7 0 438 #define VK_F7 52
416 #define VK_F8 0 439 #define VK_F8 53
417 #define VK_F9 0 440 #define VK_F9 54
418 #define VK_F10 0 441 #define VK_F10 55
419 #define VK_F11 0 442 #define VK_F11 56
420 #define VK_F12 0 443 #define VK_F12 57
421 #define VK_F13 0 444 #define VK_F13 58
422 #define VK_F14 0 445 #define VK_F14 59
423 #define VK_F15 0 446 #define VK_F15 60
424 #define VK_F16 0 447 #define VK_F16 61
425 #define VK_F17 0 448 #define VK_F17 62
426 #define VK_F18 0 449 #define VK_F18 63
427 #define VK_F19 0 450 #define VK_F19 64
428 #define VK_F20 0 451 #define VK_F20 65
429 #define VK_F21 0 452 #define VK_F21 66
430 #define VK_F22 0 453 #define VK_F22 67
431 #define VK_F23 0 454 #define VK_F23 68
432 #define VK_F24 0 455 #define VK_F24 69
433 #define VK_NUMLOCK 0 456 #define VK_NUMLOCK 70
434 #define VK_SCROLL 0 457 #define VK_SCROLL 71
435 #define VK_LSHIFT 0 458 #define VK_LSHIFT 72
436 #define VK_RSHIFT 0 459 #define VK_RSHIFT 73
437 #define VK_LCONTROL 0 460 #define VK_LCONTROL 74
438 #define VK_RCONTROL 0 461 #define VK_RCONTROL 75
439 #define VK_LMENU 0 462 #define VK_LMENU 76
440 #define VK_RMENU 0 463 #define VK_RMENU 77
441 464
442 /* Key Modifiers */ 465 /* Key Modifiers */
443 #define KC_CTRL (1) 466 #define KC_CTRL (1)
444 #define KC_SHIFT (1 << 1) 467 #define KC_SHIFT (1 << 1)
445 #define KC_ALT (1 << 2) 468 #define KC_ALT (1 << 2)