diff options
| author | Pietro Gagliardi <[email protected]> | 2014-07-02 17:13:40 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-07-02 17:13:40 -0400 |
| commit | 5d339e656b66d00356960ae057969532d34245b4 (patch) | |
| tree | 01f00932aba2a4b996603beeda788995e0f0a382 /prevlib/objc_darwin.m | |
| parent | 2d7e168e6a350a0cfb52970fbf74c9e37834eaec (diff) | |
Moved everything out of the way pending rewrite.
Diffstat (limited to 'prevlib/objc_darwin.m')
| -rw-r--r-- | prevlib/objc_darwin.m | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/prevlib/objc_darwin.m b/prevlib/objc_darwin.m new file mode 100644 index 0000000..c2d3d6f --- /dev/null +++ b/prevlib/objc_darwin.m @@ -0,0 +1,75 @@ +// 15 may 2014 + +#include "objc_darwin.h" +#import <Foundation/NSString.h> +#import <AppKit/NSView.h> +#import <AppKit/NSScrollView.h> + +#define to(T, x) ((T *) (x)) +#define _toNSString(x) to(NSString, (x)) +#define toNSView(x) to(NSView, (x)) +#define toNSScrollView(x) to(NSScrollView, (x)) + +// because the only way to make a new NSControl/NSView is with a frame (it gets overridden later) +NSRect dummyRect; + +// this can be called before our NSApp is created, so keep a pool to keep 10.6 happy +id toNSString(char *str) +{ + NSAutoreleasePool *pool; + NSString *s; + + pool = [NSAutoreleasePool new]; + s = [NSString stringWithUTF8String:str]; + [s retain]; // keep alive after releasing the pool + [pool release]; + return s; +} + +char *fromNSString(id str) +{ + return [_toNSString(str) UTF8String]; +} + +void display(id view) +{ + [toNSView(view) display]; +} + +struct xrect frame(id view) +{ + NSRect r; + struct xrect s; + + r = [toNSView(view) frame]; + s.x = (intptr_t) r.origin.x; + s.y = (intptr_t) r.origin.y; + s.width = (intptr_t) r.size.width; + s.height = (intptr_t) r.size.height; + return s; +} + +id makeScrollView(id content) +{ + NSScrollView *scrollview; + + scrollview = [[NSScrollView alloc] + initWithFrame:dummyRect]; + [scrollview setHasHorizontalScroller:YES]; + [scrollview setHasVerticalScroller:YES]; + [scrollview setAutohidesScrollers:YES]; + // Interface Builder sets this for NSTableViews; we also want this on Areas + [scrollview setDrawsBackground:YES]; + [scrollview setDocumentView:toNSView(content)]; + return scrollview; +} + +void giveScrollViewBezelBorder(id scrollview) +{ + [toNSScrollView(scrollview) setBorderType:NSBezelBorder]; +} + +id scrollViewContent(id scrollview) +{ + return [toNSScrollView(scrollview) documentView]; +} |
