diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2013-11-23 01:05:33 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2013-11-23 01:05:33 +0100 |
commit | 2f9ae0f8ac8610e13ced184847b57b87fe5db580 (patch) | |
tree | f9ad2223d518585a2cfe9ea1c73e1e37d07bf637 /sys/src/cmd/unix/drawterm/gui-osx | |
parent | ea5797c0731203c09ec5fb7172e77eab2750f1a9 (diff) |
removing (outdated) drawterm
drawterm is much better maintained by russ cox,
so removing this outdated copy.
for a more recent version, go to:
http://swtch.com/drawterm/
Diffstat (limited to 'sys/src/cmd/unix/drawterm/gui-osx')
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/Makefile | 19 | ||||
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/alloc.c | 23 | ||||
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/cload.c | 10 | ||||
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/draw.c | 22 | ||||
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/keycodes.h | 189 | ||||
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/load.c | 10 | ||||
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/screen.c | 765 | ||||
-rw-r--r-- | sys/src/cmd/unix/drawterm/gui-osx/wstrtoutf.c | 35 |
8 files changed, 0 insertions, 1073 deletions
diff --git a/sys/src/cmd/unix/drawterm/gui-osx/Makefile b/sys/src/cmd/unix/drawterm/gui-osx/Makefile deleted file mode 100644 index 10547601f..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -ROOT=.. -include ../Make.config -LIB=libgui.a - -OFILES=\ - alloc.$O\ - cload.$O\ - draw.$O\ - load.$O\ - screen.$O - -default: $(LIB) -$(LIB): $(OFILES) - $(AR) r $(LIB) $(OFILES) - $(RANLIB) $(LIB) - -%.$O: %.c - $(CC) $(CFLAGS) $*.c - diff --git a/sys/src/cmd/unix/drawterm/gui-osx/alloc.c b/sys/src/cmd/unix/drawterm/gui-osx/alloc.c deleted file mode 100644 index cc7e97741..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/alloc.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <u.h> -#include <libc.h> -#include <draw.h> -#include <memdraw.h> - -Memimage* -allocmemimage(Rectangle r, ulong chan) -{ - return _allocmemimage(r, chan); -} - -void -freememimage(Memimage *i) -{ - _freememimage(i); -} - -void -memfillcolor(Memimage *i, ulong val) -{ - _memfillcolor(i, val); -} - diff --git a/sys/src/cmd/unix/drawterm/gui-osx/cload.c b/sys/src/cmd/unix/drawterm/gui-osx/cload.c deleted file mode 100644 index 9d658ef85..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/cload.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <u.h> -#include <libc.h> -#include <draw.h> -#include <memdraw.h> - -int -cloadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata) -{ - return _cloadmemimage(i, r, data, ndata); -} diff --git a/sys/src/cmd/unix/drawterm/gui-osx/draw.c b/sys/src/cmd/unix/drawterm/gui-osx/draw.c deleted file mode 100644 index eaac6d58a..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/draw.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <u.h> -#include <libc.h> -#include <draw.h> -#include <memdraw.h> - -void -memimagedraw(Memimage *dst, Rectangle r, Memimage *src, Point sp, Memimage *mask, Point mp, int op) -{ - _memimagedraw(_memimagedrawsetup(dst, r, src, sp, mask, mp, op)); -} - -ulong -pixelbits(Memimage *m, Point p) -{ - return _pixelbits(m, p); -} - -void -memimageinit(void) -{ - _memimageinit(); -} diff --git a/sys/src/cmd/unix/drawterm/gui-osx/keycodes.h b/sys/src/cmd/unix/drawterm/gui-osx/keycodes.h deleted file mode 100644 index 52328ace0..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/keycodes.h +++ /dev/null @@ -1,189 +0,0 @@ -/* These are the Macintosh key scancode constants -- from Inside Macintosh */ -#define QZ_ESCAPE 0x35 -#define QZ_F1 0x7A -#define QZ_F2 0x78 -#define QZ_F3 0x63 -#define QZ_F4 0x76 -#define QZ_F5 0x60 -#define QZ_F6 0x61 -#define QZ_F7 0x62 -#define QZ_F8 0x64 -#define QZ_F9 0x65 -#define QZ_F10 0x6D -#define QZ_F11 0x67 -#define QZ_F12 0x6F -#define QZ_PRINT 0x69 -#define QZ_SCROLLOCK 0x6B -#define QZ_PAUSE 0x71 -#define QZ_POWER 0x7F -#define QZ_BACKQUOTE 0x32 -#define QZ_1 0x12 -#define QZ_2 0x13 -#define QZ_3 0x14 -#define QZ_4 0x15 -#define QZ_5 0x17 -#define QZ_6 0x16 -#define QZ_7 0x1A -#define QZ_8 0x1C -#define QZ_9 0x19 -#define QZ_0 0x1D -#define QZ_MINUS 0x1B -#define QZ_EQUALS 0x18 -#define QZ_BACKSPACE 0x33 -#define QZ_INSERT 0x72 -#define QZ_HOME 0x73 -#define QZ_PAGEUP 0x74 -#define QZ_NUMLOCK 0x47 -#define QZ_KP_EQUALS 0x51 -#define QZ_KP_DIVIDE 0x4B -#define QZ_KP_MULTIPLY 0x43 -#define QZ_TAB 0x30 -#define QZ_q 0x0C -#define QZ_w 0x0D -#define QZ_e 0x0E -#define QZ_r 0x0F -#define QZ_t 0x11 -#define QZ_y 0x10 -#define QZ_u 0x20 -#define QZ_i 0x22 -#define QZ_o 0x1F -#define QZ_p 0x23 -#define QZ_LEFTBRACKET 0x21 -#define QZ_RIGHTBRACKET 0x1E -#define QZ_BACKSLASH 0x2A -#define QZ_DELETE 0x75 -#define QZ_END 0x77 -#define QZ_PAGEDOWN 0x79 -#define QZ_KP7 0x59 -#define QZ_KP8 0x5B -#define QZ_KP9 0x5C -#define QZ_KP_MINUS 0x4E -#define QZ_CAPSLOCK 0x39 -#define QZ_a 0x00 -#define QZ_s 0x01 -#define QZ_d 0x02 -#define QZ_f 0x03 -#define QZ_g 0x05 -#define QZ_h 0x04 -#define QZ_j 0x26 -#define QZ_k 0x28 -#define QZ_l 0x25 -#define QZ_SEMICOLON 0x29 -#define QZ_QUOTE 0x27 -#define QZ_RETURN 0x24 -#define QZ_KP4 0x56 -#define QZ_KP5 0x57 -#define QZ_KP6 0x58 -#define QZ_KP_PLUS 0x45 -#define QZ_LSHIFT 0x38 -#define QZ_z 0x06 -#define QZ_x 0x07 -#define QZ_c 0x08 -#define QZ_v 0x09 -#define QZ_b 0x0B -#define QZ_n 0x2D -#define QZ_m 0x2E -#define QZ_COMMA 0x2B -#define QZ_PERIOD 0x2F -#define QZ_SLASH 0x2C -/* These are the same as the left versions - use left by default */ -#if 0 -#define QZ_RSHIFT 0x38 -#endif -#define QZ_UP 0x7E -#define QZ_KP1 0x53 -#define QZ_KP2 0x54 -#define QZ_KP3 0x55 -#define QZ_KP_ENTER 0x4C -#define QZ_LCTRL 0x3B -#define QZ_LALT 0x3A -#define QZ_LMETA 0x37 -#define QZ_SPACE 0x31 -/* These are the same as the left versions - use left by default */ -#if 0 -#define QZ_RMETA 0x37 -#define QZ_RALT 0x3A -#define QZ_RCTRL 0x3B -#endif -#define QZ_LEFT 0x7B -#define QZ_DOWN 0x7D -#define QZ_RIGHT 0x7C -#define QZ_KP0 0x52 -#define QZ_KP_PERIOD 0x41 - -/* Wierd, these keys are on my iBook under MacOS X */ -#define QZ_IBOOK_ENTER 0x34 -#define QZ_IBOOK_LEFT 0x3B -#define QZ_IBOOK_RIGHT 0x3C -#define QZ_IBOOK_DOWN 0x3D -#define QZ_IBOOK_UP 0x3E -#define KEY_ENTER 13 -#define KEY_TAB 9 - -#define KEY_BASE 0x100 - -/* Function keys */ -#define KEY_F (KEY_BASE+64) - -/* Control keys */ -#define KEY_CTRL (KEY_BASE) -#define KEY_BACKSPACE (KEY_CTRL+0) -#define KEY_DELETE (KEY_CTRL+1) -#define KEY_INSERT (KEY_CTRL+2) -#define KEY_HOME (KEY_CTRL+3) -#define KEY_END (KEY_CTRL+4) -#define KEY_PAGE_UP (KEY_CTRL+5) -#define KEY_PAGE_DOWN (KEY_CTRL+6) -#define KEY_ESC (KEY_CTRL+7) - -/* Control keys short name */ -#define KEY_BS KEY_BACKSPACE -#define KEY_DEL KEY_DELETE -#define KEY_INS KEY_INSERT -#define KEY_PGUP KEY_PAGE_UP -#define KEY_PGDOWN KEY_PAGE_DOWN -#define KEY_PGDWN KEY_PAGE_DOWN - -/* Cursor movement */ -#define KEY_CRSR (KEY_BASE+16) -#define KEY_RIGHT (KEY_CRSR+0) -#define KEY_LEFT (KEY_CRSR+1) -#define KEY_DOWN (KEY_CRSR+2) -#define KEY_UP (KEY_CRSR+3) - -/* Multimedia keyboard/remote keys */ -#define KEY_MM_BASE (0x100+384) -#define KEY_POWER (KEY_MM_BASE+0) -#define KEY_MENU (KEY_MM_BASE+1) -#define KEY_PLAY (KEY_MM_BASE+2) -#define KEY_PAUSE (KEY_MM_BASE+3) -#define KEY_PLAYPAUSE (KEY_MM_BASE+4) -#define KEY_STOP (KEY_MM_BASE+5) -#define KEY_FORWARD (KEY_MM_BASE+6) -#define KEY_REWIND (KEY_MM_BASE+7) -#define KEY_NEXT (KEY_MM_BASE+8) -#define KEY_PREV (KEY_MM_BASE+9) -#define KEY_VOLUME_UP (KEY_MM_BASE+10) -#define KEY_VOLUME_DOWN (KEY_MM_BASE+11) -#define KEY_MUTE (KEY_MM_BASE+12) - -/* Keypad keys */ -#define KEY_KEYPAD (KEY_BASE+32) -#define KEY_KP0 (KEY_KEYPAD+0) -#define KEY_KP1 (KEY_KEYPAD+1) -#define KEY_KP2 (KEY_KEYPAD+2) -#define KEY_KP3 (KEY_KEYPAD+3) -#define KEY_KP4 (KEY_KEYPAD+4) -#define KEY_KP5 (KEY_KEYPAD+5) -#define KEY_KP6 (KEY_KEYPAD+6) -#define KEY_KP7 (KEY_KEYPAD+7) -#define KEY_KP8 (KEY_KEYPAD+8) -#define KEY_KP9 (KEY_KEYPAD+9) -#define KEY_KPDEC (KEY_KEYPAD+10) -#define KEY_KPINS (KEY_KEYPAD+11) -#define KEY_KPDEL (KEY_KEYPAD+12) -#define KEY_KPENTER (KEY_KEYPAD+13) - -/* Special keys */ -#define KEY_INTERN (0x1000) -#define KEY_CLOSE_WIN (KEY_INTERN+0) diff --git a/sys/src/cmd/unix/drawterm/gui-osx/load.c b/sys/src/cmd/unix/drawterm/gui-osx/load.c deleted file mode 100644 index 7cca3a6fd..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/load.c +++ /dev/null @@ -1,10 +0,0 @@ -#include <u.h> -#include <libc.h> -#include <draw.h> -#include <memdraw.h> - -int -loadmemimage(Memimage *i, Rectangle r, uchar *data, int ndata) -{ - return _loadmemimage(i, r, data, ndata); -} diff --git a/sys/src/cmd/unix/drawterm/gui-osx/screen.c b/sys/src/cmd/unix/drawterm/gui-osx/screen.c deleted file mode 100644 index 487c9c179..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/screen.c +++ /dev/null @@ -1,765 +0,0 @@ -// in this file, _Rect is os x Rect, -// _Point is os x Point -#undef Point -#define Point _Point -#undef Rect -#define Rect _Rect - -#include <Carbon/Carbon.h> -#include <QuickTime/QuickTime.h> // for full screen - -#undef Rect -#undef Point - -#undef nil - - -#include "u.h" -#include "lib.h" -#include "kern/dat.h" -#include "kern/fns.h" -#include "error.h" -#include "user.h" -#include <draw.h> -#include <memdraw.h> -#include "screen.h" -#include "keyboard.h" -#include "keycodes.h" - -#define rWindowResource 128 - -#define topLeft(r) (((Point *) &(r))[0]) -#define botRight(r) (((Point *) &(r))[1]) - -extern int mousequeue; -static int depth; -Boolean gDone; -RgnHandle gCursorRegionHdl; - -Memimage *gscreen; -Screeninfo screen; - -static int readybit; -static Rendez rend; - -/// -// menu -// -static MenuRef windMenu; -static MenuRef viewMenu; - -enum { - kQuitCmd = 1, - kFullScreenCmd = 2, -}; - -static WindowGroupRef winGroup = NULL; -static WindowRef theWindow = NULL; -static CGContextRef context; -static CGDataProviderRef dataProviderRef; -static CGImageRef fullScreenImage; -static CGRect devRect; -static CGRect bounds; -static PasteboardRef appleclip; -static _Rect winRect; - -Boolean altPressed = false; -Boolean button2 = false; -Boolean button3 = false; - - -static int -isready(void*a) -{ - return readybit; -} - -CGContextRef QuartzContext; - -void winproc(void *a); - -void screeninit(void) -{ - int fmt; - int dx, dy; - ProcessSerialNumber psn = { 0, kCurrentProcess }; - TransformProcessType(&psn, kProcessTransformToForegroundApplication); - SetFrontProcess(&psn); - - memimageinit(); - depth = 32; // That's all this code deals with for now - screen.depth = 32; - fmt = XBGR32; //XRGB32; - - devRect = CGDisplayBounds(CGMainDisplayID()); -// devRect.origin.x = 0; -// devRect.origin.y = 0; -// devRect.size.width = 1024; -// devRect.size.height = 768; - dx = devRect.size.width; - dy = devRect.size.height; - - gscreen = allocmemimage(Rect(0,0,dx,dy), fmt); - dataProviderRef = CGDataProviderCreateWithData(0, gscreen->data->bdata, - dx * dy * 4, 0); - fullScreenImage = CGImageCreate(dx, dy, 8, 32, dx * 4, - CGColorSpaceCreateDeviceRGB(), - kCGImageAlphaNoneSkipLast, - dataProviderRef, 0, 0, kCGRenderingIntentDefault); - - kproc("osxscreen", winproc, 0); - ksleep(&rend, isready, 0); -} - -// No wonder Apple sells so many wide displays! -static OSStatus ApplicationQuitEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); -static OSStatus MainWindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); -static OSStatus MainWindowCommandHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData); - -void -window_resized() -{ - GetWindowBounds(theWindow, kWindowContentRgn, &winRect ); - - bounds = CGRectMake(0, 0, winRect.right-winRect.left, winRect.bottom - winRect.top); -} - - -void winproc(void *a) -{ - winRect.left = 30; - winRect.top = 60; - winRect.bottom = (devRect.size.height * 0.75) + winRect.top; - winRect.right = (devRect.size.width * 0.75) + winRect.left; - - ClearMenuBar(); - InitCursor(); - - CreateStandardWindowMenu(0, &windMenu); - InsertMenu(windMenu, 0); - - MenuItemIndex index; - CreateNewMenu(1004, 0, &viewMenu); - SetMenuTitleWithCFString(viewMenu, CFSTR("View")); - AppendMenuItemTextWithCFString(viewMenu, CFSTR("Full Screen"), 0, - kFullScreenCmd, &index); - SetMenuItemCommandKey(viewMenu, index, 0, 'F'); - InsertMenu(viewMenu, GetMenuID(windMenu)); - - DrawMenuBar(); - uint32_t windowAttrs = 0 - | kWindowCloseBoxAttribute - | kWindowCollapseBoxAttribute - | kWindowResizableAttribute - | kWindowStandardHandlerAttribute - | kWindowFullZoomAttribute - ; - - CreateNewWindow(kDocumentWindowClass, windowAttrs, &winRect, &theWindow); - CreateWindowGroup(0, &winGroup); - SetWindowGroup(theWindow, winGroup); - - SetWindowTitleWithCFString(theWindow, CFSTR("Drawterm")); - - if(PasteboardCreate(kPasteboardClipboard, &appleclip) != noErr) - sysfatal("pasteboard create failed"); - - const EventTypeSpec quit_events[] = { - { kEventClassApplication, kEventAppQuit } - }; - const EventTypeSpec commands[] = { - { kEventClassWindow, kEventWindowClosed }, - { kEventClassWindow, kEventWindowBoundsChanged }, - { kEventClassCommand, kEventCommandProcess } - }; - const EventTypeSpec events[] = { - { kEventClassKeyboard, kEventRawKeyDown }, - { kEventClassKeyboard, kEventRawKeyModifiersChanged }, - { kEventClassKeyboard, kEventRawKeyRepeat }, - { kEventClassMouse, kEventMouseDown }, - { kEventClassMouse, kEventMouseUp }, - { kEventClassMouse, kEventMouseMoved }, - { kEventClassMouse, kEventMouseDragged }, - { kEventClassMouse, kEventMouseWheelMoved }, - }; - - InstallApplicationEventHandler ( - NewEventHandlerUPP (ApplicationQuitEventHandler), - GetEventTypeCount(quit_events), - quit_events, - NULL, - NULL); - - InstallApplicationEventHandler ( - NewEventHandlerUPP (MainWindowEventHandler), - GetEventTypeCount(events), - events, - NULL, - NULL); - InstallWindowEventHandler ( - theWindow, - NewEventHandlerUPP (MainWindowCommandHandler), - GetEventTypeCount(commands), - commands, - theWindow, - NULL); - - ShowWindow(theWindow); - ShowMenuBar(); - window_resized(); - SelectWindow(theWindow); - terminit(); - // Run the event loop - readybit = 1; - wakeup(&rend); - RunApplicationEventLoop(); - -} - -static inline int convert_key(UInt32 key, UInt32 charcode) -{ - switch(key) { - case QZ_IBOOK_ENTER: - case QZ_RETURN: return '\n'; - case QZ_ESCAPE: return 27; - case QZ_BACKSPACE: return '\b'; - case QZ_LALT: return Kalt; - case QZ_LCTRL: return Kctl; - case QZ_LSHIFT: return Kshift; - case QZ_F1: return KF+1; - case QZ_F2: return KF+2; - case QZ_F3: return KF+3; - case QZ_F4: return KF+4; - case QZ_F5: return KF+5; - case QZ_F6: return KF+6; - case QZ_F7: return KF+7; - case QZ_F8: return KF+8; - case QZ_F9: return KF+9; - case QZ_F10: return KF+10; - case QZ_F11: return KF+11; - case QZ_F12: return KF+12; - case QZ_INSERT: return Kins; - case QZ_DELETE: return 0x7F; - case QZ_HOME: return Khome; - case QZ_END: return Kend; - case QZ_KP_PLUS: return '+'; - case QZ_KP_MINUS: return '-'; - case QZ_TAB: return '\t'; - case QZ_PAGEUP: return Kpgup; - case QZ_PAGEDOWN: return Kpgdown; - case QZ_UP: return Kup; - case QZ_DOWN: return Kdown; - case QZ_LEFT: return Kleft; - case QZ_RIGHT: return Kright; - case QZ_KP_MULTIPLY: return '*'; - case QZ_KP_DIVIDE: return '/'; - case QZ_KP_ENTER: return '\n'; - case QZ_KP_PERIOD: return '.'; - case QZ_KP0: return '0'; - case QZ_KP1: return '1'; - case QZ_KP2: return '2'; - case QZ_KP3: return '3'; - case QZ_KP4: return '4'; - case QZ_KP5: return '5'; - case QZ_KP6: return '6'; - case QZ_KP7: return '7'; - case QZ_KP8: return '8'; - case QZ_KP9: return '9'; - default: return charcode; - } -} - -void -sendbuttons(int b, int x, int y) -{ - int i; - lock(&mouse.lk); - i = mouse.wi; - if(mousequeue) { - if(i == mouse.ri || mouse.lastb != b || mouse.trans) { - mouse.wi = (i+1)%Mousequeue; - if(mouse.wi == mouse.ri) - mouse.ri = (mouse.ri+1)%Mousequeue; - mouse.trans = mouse.lastb != b; - } else { - i = (i-1+Mousequeue)%Mousequeue; - } - } else { - mouse.wi = (i+1)%Mousequeue; - mouse.ri = i; - } - mouse.queue[i].xy.x = x; - mouse.queue[i].xy.y = y; - mouse.queue[i].buttons = b; - mouse.queue[i].msec = ticks(); - mouse.lastb = b; - unlock(&mouse.lk); - wakeup(&mouse.r); -} - -static Ptr fullScreenRestore; -static int amFullScreen = 0; -static WindowRef oldWindow = NULL; - -static void -leave_full_screen() -{ - if (amFullScreen) { - EndFullScreen(fullScreenRestore, 0); - theWindow = oldWindow; - ShowWindow(theWindow); - amFullScreen = 0; - window_resized(); - Rectangle rect = { { 0, 0 }, - { bounds.size.width, - bounds.size.height} }; - drawqlock(); - flushmemscreen(rect); - drawqunlock(); - } -} - -static void -full_screen() -{ - if (!amFullScreen) { - oldWindow = theWindow; - HideWindow(theWindow); - BeginFullScreen(&fullScreenRestore, 0, 0, 0, &theWindow, 0, 0); - amFullScreen = 1; - window_resized(); - Rectangle rect = { { 0, 0 }, - { bounds.size.width, - bounds.size.height} }; - drawqlock(); - flushmemscreen(rect); - drawqunlock(); - } -} - -// catch quit events to handle quits from menu, Cmd+Q, applescript, and task switcher -static OSStatus ApplicationQuitEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData) -{ - exit(0); -// QuitApplicationEventLoop(); - return noErr; -} - -static OSStatus MainWindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData) -{ - OSStatus result = noErr; - result = CallNextEventHandler(nextHandler, event); - UInt32 class = GetEventClass (event); - UInt32 kind = GetEventKind (event); - static uint32_t mousebuttons = 0; // bitmask of buttons currently down - static uint32_t mouseX = 0; - static uint32_t mouseY = 0; - - if(class == kEventClassKeyboard) { - char macCharCodes; - UInt32 macKeyCode; - UInt32 macKeyModifiers; - - GetEventParameter(event, kEventParamKeyMacCharCodes, typeChar, - NULL, sizeof(macCharCodes), NULL, &macCharCodes); - GetEventParameter(event, kEventParamKeyCode, typeUInt32, NULL, - sizeof(macKeyCode), NULL, &macKeyCode); - GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, - sizeof(macKeyModifiers), NULL, &macKeyModifiers); - switch(kind) { - case kEventRawKeyModifiersChanged: - if (macKeyModifiers == (controlKey | optionKey)) leave_full_screen(); - - switch(macKeyModifiers & (optionKey | cmdKey)) { - case (optionKey | cmdKey): - /* due to chording we need to handle the case when both - * modifier keys are pressed at the same time. - * currently it's only 2-3 snarf and the 3-2 noop - */ - altPressed = true; - if(mousebuttons & 1 || mousebuttons & 2 || mousebuttons & 4) { - mousebuttons |= 2; /* set button 2 */ - mousebuttons |= 4; /* set button 3 */ - button2 = true; - button3 = true; - sendbuttons(mousebuttons, mouseX, mouseY); - } - break; - case optionKey: - altPressed = true; - if(mousebuttons & 1 || mousebuttons & 4) { - mousebuttons |= 2; /* set button 2 */ - button2 = true; - sendbuttons(mousebuttons, mouseX, mouseY); - } - break; - case cmdKey: - if(mousebuttons & 1 || mousebuttons & 2) { - mousebuttons |= 4; /* set button 3 */ - button3 = true; - sendbuttons(mousebuttons, mouseX, mouseY); - } - break; - case 0: - default: - if(button2 || button3) { - if(button2) { - mousebuttons &= ~2; /* clear button 2 */ - button2 = false; - altPressed = false; - } - if(button3) { - mousebuttons &= ~4; /* clear button 3 */ - button3 = false; - } - sendbuttons(mousebuttons, mouseX, mouseY); - } - if(altPressed) { - kbdputc(kbdq, Kalt); - altPressed = false; - } - break; - } - break; - case kEventRawKeyDown: - case kEventRawKeyRepeat: - if(macKeyModifiers != cmdKey) { - int key = convert_key(macKeyCode, macCharCodes); - if (key != -1) kbdputc(kbdq, key); - } else - result = eventNotHandledErr; - break; - default: - break; - } - } - else if(class == kEventClassMouse) { - _Point mousePos; - - GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, - 0, sizeof mousePos, 0, &mousePos); - - switch (kind) { - case kEventMouseWheelMoved: - { - int32_t wheeldelta; - GetEventParameter(event,kEventParamMouseWheelDelta,typeSInt32, - 0,sizeof(wheeldelta), 0, &wheeldelta); - mouseX = mousePos.h - winRect.left; - mouseY = mousePos.v - winRect.top; - sendbuttons(wheeldelta>0 ? 8 : 16, mouseX, mouseY); - break; - } - case kEventMouseUp: - case kEventMouseDown: - { - uint32_t buttons; - uint32_t modifiers; - GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, - 0, sizeof(modifiers), 0, &modifiers); - GetEventParameter(event, kEventParamMouseChord, typeUInt32, - 0, sizeof buttons, 0, &buttons); - /* simulate other buttons via alt/apple key. like x11 */ - if(modifiers & optionKey) { - mousebuttons = ((buttons & 1) ? 2 : 0); - altPressed = false; - } else if(modifiers & cmdKey) - mousebuttons = ((buttons & 1) ? 4 : 0); - else - mousebuttons = (buttons & 1); - - mousebuttons |= ((buttons & 2)<<1); - mousebuttons |= ((buttons & 4)>>1); - - } /* Fallthrough */ - case kEventMouseMoved: - case kEventMouseDragged: - mouseX = mousePos.h - winRect.left; - mouseY = mousePos.v - winRect.top; - sendbuttons(mousebuttons, mouseX, mouseY); - break; - default: - result = eventNotHandledErr; - break; - } - } - return result; -} - - -//default window command handler (from menus) -static OSStatus MainWindowCommandHandler(EventHandlerCallRef nextHandler, - EventRef event, void *userData) -{ - OSStatus result = noErr; - UInt32 class = GetEventClass (event); - UInt32 kind = GetEventKind (event); - - result = CallNextEventHandler(nextHandler, event); - - if(class == kEventClassCommand) - { - HICommand theHICommand; - GetEventParameter( event, kEventParamDirectObject, typeHICommand, - NULL, sizeof( HICommand ), NULL, &theHICommand ); - - switch ( theHICommand.commandID ) - { - case kHICommandQuit: - exit(0); - break; - - case kFullScreenCmd: - full_screen(); - break; - - default: - result = eventNotHandledErr; - break; - } - } - else if(class == kEventClassWindow) - { - WindowRef window; - _Rect rectPort = {0,0,0,0}; - - GetEventParameter(event, kEventParamDirectObject, typeWindowRef, - NULL, sizeof(WindowRef), NULL, &window); - - if(window) - { - GetPortBounds(GetWindowPort(window), &rectPort); - } - - switch (kind) - { - case kEventWindowClosed: - // send a quit carbon event instead of directly calling cleanexit - // so that all quits are done in ApplicationQuitEventHandler - { - EventRef quitEvent; - CreateEvent(NULL, - kEventClassApplication, - kEventAppQuit, - 0, - kEventAttributeNone, - &quitEvent); - EventTargetRef target; - target = GetApplicationEventTarget(); - SendEventToEventTarget(quitEvent, target); - } - break; - - //resize window - case kEventWindowBoundsChanged: - window_resized(); - Rectangle rect = { { 0, 0 }, - { bounds.size.width, - bounds.size.height} }; - drawqlock(); - flushmemscreen(rect); - drawqunlock(); - break; - - default: - result = eventNotHandledErr; - break; - } - } - - return result; -} - -void -flushmemscreen(Rectangle r) -{ - // sanity check. Trips from the initial "terminal" - if (r.max.x < r.min.x || r.max.y < r.min.y) return; - - screenload(r, gscreen->depth, byteaddr(gscreen, ZP), ZP, - gscreen->width*sizeof(ulong)); -} - -uchar* -attachscreen(Rectangle *r, ulong *chan, int *depth, int *width, int *softscreen, void **X) -{ - *r = gscreen->r; - *chan = gscreen->chan; - *depth = gscreen->depth; - *width = gscreen->width; - *softscreen = 1; - - return gscreen->data->bdata; -} - -// PAL - no palette handling. Don't intend to either. -void -getcolor(ulong i, ulong *r, ulong *g, ulong *b) -{ - -// PAL: Certainly wrong to return a grayscale. - *r = i; - *g = i; - *b = i; -} - -void -setcolor(ulong index, ulong red, ulong green, ulong blue) -{ - assert(0); -} - - -static char snarf[3*SnarfSize+1]; -static Rune rsnarf[SnarfSize+1]; - -char* -clipread(void) -{ - CFDataRef cfdata; - OSStatus err = noErr; - ItemCount nItems; - - // Wow. This is ridiculously complicated. - PasteboardSynchronize(appleclip); - if((err = PasteboardGetItemCount(appleclip, &nItems)) != noErr) { - fprint(2, "apple pasteboard GetItemCount failed - Error %d\n", err); - return 0; - } - - uint32_t i; - // Yes, based at 1. Silly API. - for(i = 1; i <= nItems; ++i) { - PasteboardItemID itemID; - CFArrayRef flavorTypeArray; - CFIndex flavorCount; - - if((err = PasteboardGetItemIdentifier(appleclip, i, &itemID)) != noErr){ - fprint(2, "Can't get pasteboard item identifier: %d\n", err); - return 0; - } - - if((err = PasteboardCopyItemFlavors(appleclip, itemID, &flavorTypeArray))!=noErr){ - fprint(2, "Can't copy pasteboard item flavors: %d\n", err); - return 0; - } - - flavorCount = CFArrayGetCount(flavorTypeArray); - CFIndex flavorIndex; - for(flavorIndex = 0; flavorIndex < flavorCount; ++flavorIndex){ - CFStringRef flavorType; - flavorType = (CFStringRef)CFArrayGetValueAtIndex(flavorTypeArray, flavorIndex); - if (UTTypeConformsTo(flavorType, CFSTR("public.utf16-plain-text"))){ - if((err = PasteboardCopyItemFlavorData(appleclip, itemID, - CFSTR("public.utf16-plain-text"), &cfdata)) != noErr){ - fprint(2, "apple pasteboard CopyItem failed - Error %d\n", err); - return 0; - } - CFIndex length = CFDataGetLength(cfdata); - if (length > sizeof rsnarf) length = sizeof rsnarf; - CFDataGetBytes(cfdata, CFRangeMake(0, length), (uint8_t *)rsnarf); - snprint(snarf, sizeof snarf, "%.*S", length/sizeof(Rune), rsnarf); - char *s = snarf; - while (*s) { - if (*s == '\r') *s = '\n'; - s++; - } - CFRelease(cfdata); - return strdup(snarf); - } - } - } - return 0; -} - -int -clipwrite(char *snarf) -{ - CFDataRef cfdata; - PasteboardSyncFlags flags; - - runesnprint(rsnarf, nelem(rsnarf), "%s", snarf); - if(PasteboardClear(appleclip) != noErr){ - fprint(2, "apple pasteboard clear failed\n"); - return 0; - } - flags = PasteboardSynchronize(appleclip); - if((flags&kPasteboardModified) || !(flags&kPasteboardClientIsOwner)){ - fprint(2, "apple pasteboard cannot assert ownership\n"); - return 0; - } - cfdata = CFDataCreate(kCFAllocatorDefault, - (uchar*)rsnarf, runestrlen(rsnarf)*2); - if(cfdata == nil){ - fprint(2, "apple pasteboard cfdatacreate failed\n"); - return 0; - } - if(PasteboardPutItemFlavor(appleclip, (PasteboardItemID)1, - CFSTR("public.utf16-plain-text"), cfdata, 0) != noErr){ - fprint(2, "apple pasteboard putitem failed\n"); - CFRelease(cfdata); - return 0; - } - CFRelease(cfdata); - return 1; -} - - -void -mouseset(Point xy) -{ - CGPoint pnt; - pnt.x = xy.x + winRect.left; - pnt.y = xy.y + winRect.top; - CGWarpMouseCursorPosition(pnt); -} - -void -screenload(Rectangle r, int depth, uchar *p, Point pt, int step) -{ - CGRect rbounds; - rbounds.size.width = r.max.x - r.min.x; - rbounds.size.height = r.max.y - r.min.y; - rbounds.origin.x = r.min.x; - rbounds.origin.y = r.min.y; - - if(depth != gscreen->depth) - panic("screenload: bad ldepth"); - - QDBeginCGContext( GetWindowPort(theWindow), &context); - - // The sub-image is relative to our whole screen image. - CGImageRef subimg = CGImageCreateWithImageInRect(fullScreenImage, rbounds); - - // Drawing the sub-image is relative to the window. - rbounds.origin.y = winRect.bottom - winRect.top - r.min.y - rbounds.size.height; - CGContextDrawImage(context, rbounds, subimg); - CGContextFlush(context); - CGImageRelease(subimg); - QDEndCGContext( GetWindowPort(theWindow), &context); - -} - -// PAL: these don't work. -// SetCursor and InitCursor are marked as deprecated in 10.4, and I can't for the -// life of me find out what has replaced them. -void -setcursor(void) -{ - Cursor crsr; - int i; - - for(i=0; i<16; i++){ - crsr.data[i] = ((ushort*)cursor.set)[i]; - crsr.mask[i] = crsr.data[i] | ((ushort*)cursor.clr)[i]; - } - crsr.hotSpot.h = -cursor.offset.x; - crsr.hotSpot.v = -cursor.offset.y; - SetCursor(&crsr); -} - -void -cursorarrow(void) -{ - InitCursor(); -} diff --git a/sys/src/cmd/unix/drawterm/gui-osx/wstrtoutf.c b/sys/src/cmd/unix/drawterm/gui-osx/wstrtoutf.c deleted file mode 100644 index 2cdc7fd8b..000000000 --- a/sys/src/cmd/unix/drawterm/gui-osx/wstrtoutf.c +++ /dev/null @@ -1,35 +0,0 @@ -#include <u.h> -#include <libc.h> - -int -wstrutflen(Rune *s) -{ - int n; - - for(n=0; *s; n+=runelen(*s),s++) - ; - return n; -} - -int -wstrtoutf(char *s, Rune *t, int n) -{ - int i; - char *s0; - - s0 = s; - if(n <= 0) - return wstrutflen(t)+1; - while(*t) { - if(n < UTFmax+1 && n < runelen(*t)+1) { - *s = 0; - return i+wstrutflen(t)+1; - } - i = runetochar(s, t); - s += i; - n -= i; - t++; - } - *s = 0; - return s-s0; -} |