Mercurial > dwindows
diff 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 |
line wrap: on
line diff
--- a/dw.h Sat Feb 19 09:37:39 2011 +0000 +++ b/dw.h Tue Feb 22 17:15:15 2011 +0000 @@ -245,10 +245,21 @@ #if defined(__MAC__) /* MacOS specific section */ -#include <Carbon/Carbon.h> +#include <pthread.h> +#include <dlfcn.h> -typedef ControlRef HWND; -typedef ThreadID DWTID; +/* Unfortunately using Cocoa we can't include + * Cocoa.h from C code, so we have to instead + * use opaque types and use the values from + * Cocoa.h in the header here directly without + * using the symbolic names. + */ + +#define TRUE 1 +#define FALSE 0 + +typedef void *HWND; +typedef void *HSHM; typedef unsigned long ULONG; typedef long LONG; typedef unsigned short USHORT; @@ -259,12 +270,24 @@ typedef char CHAR; typedef unsigned UINT; typedef int INT; -typedef void *HMTX; -typedef void *HEV; -typedef void *HSHM; -typedef void *HMOD; +typedef pthread_mutex_t *HMTX; +typedef struct _dw_unix_event { + pthread_mutex_t mutex; + pthread_cond_t event; + pthread_t thread; + int alive; + int posted; +} *HEV; +typedef pthread_t DWTID; +typedef void * HMOD; +struct _dw_unix_shm { + int fd; + char *path; + int sid; + int size; +}; typedef void *HTREEITEM; -typedef MenuRef HMENUI; +typedef void *HMENUI; typedef struct _window_data { UserData *root; @@ -295,13 +318,13 @@ #define DW_DT_WORDBREAK 0 #define DW_DT_ERASERECT 0 -#define DW_FCF_TITLEBAR 0 -#define DW_FCF_SYSMENU kWindowCloseBoxAttribute +#define DW_FCF_TITLEBAR (1 << 0) /* NSTitledWindowMask */ +#define DW_FCF_SYSMENU (1 << 1) /* NSClosableWindowMask */ #define DW_FCF_MENU 0 -#define DW_FCF_SIZEBORDER (kWindowResizableAttribute|kWindowLiveResizeAttribute) -#define DW_FCF_MINBUTTON kWindowCollapseBoxAttribute -#define DW_FCF_MAXBUTTON kWindowFullZoomAttribute -#define DW_FCF_MINMAX (kWindowCollapseBoxAttribute|kWindowFullZoomAttribute) +#define DW_FCF_SIZEBORDER (1 << 3) /* NSResizableWindowMask */ +#define DW_FCF_MINBUTTON (1 << 2) /* NSMiniaturizableWindowMask */ +#define DW_FCF_MAXBUTTON 0 +#define DW_FCF_MINMAX (1 << 2) /* NSMiniaturizableWindowMask */ #define DW_FCF_VERTSCROLL 0 #define DW_FCF_HORZSCROLL 0 #define DW_FCF_DLGBORDER 0 @@ -311,7 +334,7 @@ #define DW_FCF_NOBYTEALIGN 0 #define DW_FCF_NOMOVEWITHOWNER 0 #define DW_FCF_SYSMODAL 0 -#define DW_FCF_HIDEBUTTON kWindowCollapseBoxAttribute +#define DW_FCF_HIDEBUTTON 0 #define DW_FCF_HIDEMAX 0 #define DW_FCF_AUTOICON 0 #define DW_FCF_MAXIMIZE 0 @@ -344,7 +367,7 @@ #define DW_POINTER_DEFAULT 0 #define DW_POINTER_ARROW 0 -#define DW_POINTER_CLOCK watchCursor +#define DW_POINTER_CLOCK 0 #define HWND_DESKTOP ((HWND)0) @@ -361,83 +384,83 @@ /* Virtual Key Codes */ #define VK_LBUTTON 0 -#define VK_RBUTTON 0 -#define VK_CANCEL 0 -#define VK_MBUTTON 0 -#define VK_BACK 0 -#define VK_TAB 0 -#define VK_CLEAR 0 -#define VK_RETURN 0 -#define VK_MENU 0 -#define VK_PAUSE 0 -#define VK_CAPITAL 0 -#define VK_ESCAPE 0 -#define VK_SPACE 0 -#define VK_PRIOR 0 -#define VK_NEXT 0 -#define VK_END 0 -#define VK_HOME 0 -#define VK_LEFT 0 -#define VK_UP 0 -#define VK_RIGHT 0 -#define VK_DOWN 0 -#define VK_SELECT 0 -#define VK_PRINT 0 -#define VK_EXECUTE 0 -#define VK_SNAPSHOT 0 -#define VK_INSERT 0 -#define VK_DELETE 0 -#define VK_HELP 0 -#define VK_LWIN 0 -#define VK_RWIN 0 -#define VK_NUMPAD0 0 -#define VK_NUMPAD1 0 -#define VK_NUMPAD2 0 -#define VK_NUMPAD3 0 -#define VK_NUMPAD4 0 -#define VK_NUMPAD5 0 -#define VK_NUMPAD6 0 -#define VK_NUMPAD7 0 -#define VK_NUMPAD8 0 -#define VK_NUMPAD9 0 -#define VK_MULTIPLY 0 -#define VK_ADD 0 -#define VK_SEPARATOR 0 -#define VK_SUBTRACT 0 -#define VK_DECIMAL 0 -#define VK_DIVIDE 0 -#define VK_F1 0 -#define VK_F2 0 -#define VK_F3 0 -#define VK_F4 0 -#define VK_F5 0 -#define VK_F6 0 -#define VK_F7 0 -#define VK_F8 0 -#define VK_F9 0 -#define VK_F10 0 -#define VK_F11 0 -#define VK_F12 0 -#define VK_F13 0 -#define VK_F14 0 -#define VK_F15 0 -#define VK_F16 0 -#define VK_F17 0 -#define VK_F18 0 -#define VK_F19 0 -#define VK_F20 0 -#define VK_F21 0 -#define VK_F22 0 -#define VK_F23 0 -#define VK_F24 0 -#define VK_NUMLOCK 0 -#define VK_SCROLL 0 -#define VK_LSHIFT 0 -#define VK_RSHIFT 0 -#define VK_LCONTROL 0 -#define VK_RCONTROL 0 -#define VK_LMENU 0 -#define VK_RMENU 0 +#define VK_RBUTTON 1 +#define VK_CANCEL 2 +#define VK_MBUTTON 3 +#define VK_BACK 4 +#define VK_TAB 5 +#define VK_CLEAR 6 +#define VK_RETURN 7 +#define VK_MENU 8 +#define VK_PAUSE 9 +#define VK_CAPITAL 10 +#define VK_ESCAPE 11 +#define VK_SPACE 12 +#define VK_PRIOR 13 +#define VK_NEXT 14 +#define VK_END 15 +#define VK_HOME 16 +#define VK_LEFT 17 +#define VK_UP 18 +#define VK_RIGHT 19 +#define VK_DOWN 20 +#define VK_SELECT 21 +#define VK_PRINT 22 +#define VK_EXECUTE 23 +#define VK_SNAPSHOT 24 +#define VK_INSERT 25 +#define VK_DELETE 26 +#define VK_HELP 27 +#define VK_LWIN 28 +#define VK_RWIN 29 +#define VK_NUMPAD0 30 +#define VK_NUMPAD1 31 +#define VK_NUMPAD2 32 +#define VK_NUMPAD3 33 +#define VK_NUMPAD4 34 +#define VK_NUMPAD5 35 +#define VK_NUMPAD6 36 +#define VK_NUMPAD7 37 +#define VK_NUMPAD8 38 +#define VK_NUMPAD9 39 +#define VK_MULTIPLY 40 +#define VK_ADD 41 +#define VK_SEPARATOR 42 +#define VK_SUBTRACT 43 +#define VK_DECIMAL 44 +#define VK_DIVIDE 45 +#define VK_F1 46 +#define VK_F2 47 +#define VK_F3 48 +#define VK_F4 49 +#define VK_F5 50 +#define VK_F6 51 +#define VK_F7 52 +#define VK_F8 53 +#define VK_F9 54 +#define VK_F10 55 +#define VK_F11 56 +#define VK_F12 57 +#define VK_F13 58 +#define VK_F14 59 +#define VK_F15 60 +#define VK_F16 61 +#define VK_F17 62 +#define VK_F18 63 +#define VK_F19 64 +#define VK_F20 65 +#define VK_F21 66 +#define VK_F22 67 +#define VK_F23 68 +#define VK_F24 69 +#define VK_NUMLOCK 70 +#define VK_SCROLL 71 +#define VK_LSHIFT 72 +#define VK_RSHIFT 73 +#define VK_LCONTROL 74 +#define VK_RCONTROL 75 +#define VK_LMENU 76 +#define VK_RMENU 77 /* Key Modifiers */ #define KC_CTRL (1)