code wiki / _hdl_build / nx_x11_font_test.nx
nx_x11_font_test.nx source
↩ module page · 42 lines · 1732 B
1// nx_x11_font_test.nx -- verify rendering text with a REAL X server font (anti-jank): OpenFont +
2// set-GC-font + ImageText8. If real (non-5x7) text appears in the window with no SIGPIPE, the path
3// works and the styled window can switch to real fonts. expect_exit: 0.
4import "nx_syscalls.nx"
5import "nx_x11_connect.nx"
6import "nx_x11_window.nx"
7import "nx_x11_paint.nx"
8
9func fslen(s: *u8) -> i64 { var k: i64=0; while s[k]!=(0 as u8){k=k+1} return k }
10
11func main() -> i64 {
12 let rc: i64 = nx_x11_connect_local(0)
13 if rc < 0 { sys_write(2, "no X\n" as *u8, 5); return 1 }
14 let c: *X11Conn = rc as *X11Conn
15 let wid: i64 = nx_x11_create_window(c, 100, 100, 640, 180, 0x00FFFFFF, NX_X11_EVENT_EXPOSURE)
16 if wid < 0 { return 2 }
17 let title: *u8 = "Nishi -- real X font test\x00"
18 nx_x11_set_wm_name(c, wid, title, fslen(title))
19 let gc: i64 = nx_x11_create_gc(c, wid, 0x00000000)
20
21 let fname: *u8 = "9x15\x00"
22 let fid: i64 = nx_x11_open_font(c, fname, fslen(fname))
23 if fid < 0 { sys_write(2, "open_font failed\n" as *u8, 16); return 3 }
24 nx_x11_set_gc_font(c, gc, fid)
25
26 if nx_x11_map_window(c, wid) < 0 { return 4 }
27 nx_x11_flush_via_get_input_focus(c)
28 sys_write(1, "real-font window open -- look for crisp text\n" as *u8, 45)
29
30 let l1: *u8 = "Real X server font (9x15): The quick brown fox jumps.\x00"
31 let l2: *u8 = "Nishi browser -- this is NOT the 5x7 bitmap. Much less janky.\x00"
32 var t: i64 = 0
33 while t < 8 {
34 nx_x11_image_text8(c, wid, gc, 16, 40, l1, fslen(l1))
35 nx_x11_image_text8(c, wid, gc, 16, 70, l2, fslen(l2))
36 nx_x11_flush_via_get_input_focus(c)
37 sys_sleep_ms(1000)
38 t = t + 1
39 }
40 sys_close(c.fd)
41 return 0
42}