Mercurial > dwindows
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) |