summaryrefslogtreecommitdiff
path: root/objc_darwin.m
diff options
context:
space:
mode:
Diffstat (limited to 'objc_darwin.m')
-rw-r--r--objc_darwin.m62
1 files changed, 62 insertions, 0 deletions
diff --git a/objc_darwin.m b/objc_darwin.m
new file mode 100644
index 0000000..08113b6
--- /dev/null
+++ b/objc_darwin.m
@@ -0,0 +1,62 @@
+// 15 may 2014
+
+#include "objc_darwin.h"
+#include <Foundation/NSString.h>
+#include <AppKit/NSView.h>
+#include <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))
+
+id toNSString(char *str)
+{
+ return [NSString stringWithUTF8String:str];
+}
+
+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:NSMakeRect(0, 0, 100, 100)];
+ [scrollview setHasHorizontalScroller:YES];
+ [scrollview setHasVerticalScroller:YES];
+ [scrollview setAutohidesScrollers:YES];
+ [scrollview setDocumentView:toNSView(content)];
+ return scrollview;
+}
+
+void giveScrollViewBezelBorder(id scrollview)
+{
+ [toNSScrollView(scrollview) setBorderType:NSBezelBorder];
+}
+
+id scrollViewContent(id scrollview)
+{
+ return [toNSScrollView(scrollview) documentView];
+}