Mercurial > games > semicongine
comparison src/xlib_helpers.nim @ 2:213fdf8d31dd
did: hello world triangle, a bit of code organization
author | Sam <sam@basx.dev> |
---|---|
date | Mon, 19 Dec 2022 10:41:20 +0700 |
parents | 5daf3f236d87 |
children |
comparison
equal
deleted
inserted
replaced
1:bb2a7d3a7003 | 2:213fdf8d31dd |
---|---|
1 import | 1 import |
2 x11/xlib, | 2 x11/xlib, |
3 x11/xutil, | 3 x11/xutil, |
4 x11/x | 4 x11/x, |
5 x11/keysym | |
6 | |
7 export keysym | |
5 | 8 |
6 var deleteMessage*: Atom | 9 var deleteMessage*: Atom |
7 | 10 |
8 template checkXlibResult*(call: untyped) = | 11 template checkXlibResult*(call: untyped) = |
9 let value = call | 12 let value = call |
10 if value == 0: | 13 if value == 0: |
11 raise newException(Exception, "Xlib error: " & astToStr(call) & " returned " & $value) | 14 raise newException(Exception, "Xlib error: " & astToStr(call) & " returned " & $value) |
12 | 15 |
13 proc xlibInit*(): (PDisplay, Window) = | 16 proc xlibInit*(): (PDisplay, Window) = |
17 checkXlibResult XInitThreads() | |
14 let display = XOpenDisplay(nil) | 18 let display = XOpenDisplay(nil) |
15 if display == nil: | 19 if display == nil: |
16 quit "Failed to open display" | 20 quit "Failed to open display" |
17 | 21 |
18 let | 22 let |
24 let window = XCreateSimpleWindow(display, rootWindow, -1, -1, 800, 600, 0, foregroundColor, backgroundColor) | 28 let window = XCreateSimpleWindow(display, rootWindow, -1, -1, 800, 600, 0, foregroundColor, backgroundColor) |
25 checkXlibResult XSetStandardProperties(display, window, "Nim X11", "window", 0, nil, 0, nil) | 29 checkXlibResult XSetStandardProperties(display, window, "Nim X11", "window", 0, nil, 0, nil) |
26 checkXlibResult XSelectInput(display, window, ButtonPressMask or KeyPressMask or ExposureMask) | 30 checkXlibResult XSelectInput(display, window, ButtonPressMask or KeyPressMask or ExposureMask) |
27 checkXlibResult XMapWindow(display, window) | 31 checkXlibResult XMapWindow(display, window) |
28 | 32 |
29 deleteMessage = XInternAtom(display, "WM_DELETE_WINDOW", false.XBool) | 33 deleteMessage = XInternAtom(display, "WM_DELETE_WINDOW", XBool(false)) |
30 checkXlibResult XSetWMProtocols(display, window, addr(deleteMessage), 1) | 34 checkXlibResult XSetWMProtocols(display, window, addr(deleteMessage), 1) |
31 | 35 |
32 return (display, window) | 36 return (display, window) |
33 | 37 |
34 proc xlibFramebufferSize*(display: PDisplay, window: Window): (int, int) = | 38 proc xlibFramebufferSize*(display: PDisplay, window: Window): (int, int) = |