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}