code wiki / (root) / nx_paint_solid_rect.nx

nx_paint_solid_rect.nx

buildroot/runtime/nx_paint_solid_rect.nx

4700 B141 linesdepth 3pulls 3 transitivereach 182 importersview sourcekind librarytopic paint
docsdependenciesstructsconstsfunctions

about

nx_paint_solid_rect.nx -- fill a rectangle of pixels in a caller-supplied framebuffer with a solid RGBA color. Phase 4 first primitive of NISHI_BROWSER_ROADMAP -- bridges Phase 3 layout (assigns x/y/w/h per box) to actual pixel output. Framebuffer layout: row-major RGBA u8 quads. pixels[(y * width + x) * 4 + 0] = R pixels[(y * width + x) * 4 + 1] = G pixels[(y * width + x) * 4 + 2] = B pixels[(y * width + x) * 4 + 3] = A Caller-owns-memory contract: the Framebuffer struct points at a pre-allocated pixel array of width * height * 4 bytes. Clipping: rectangles outside the framebuffer bounds are clipped to the visible region; out-of-bounds writes never happen. Zero-area rectangles are silently skipped. What it does NOT handle yet (Phase 4b queued): - alpha blending (currently overwrites destination -- assumes opaque foreground; transparent fills via this primitive will paint solid black behind transparent areas, wrong for layered elements). Composes with future nx_paint_blend. - sub-pixel positioning (integer-pixel only) - anti-aliased edges (Phase 4b after sub-pixel) - clip-rect stacking for overflow:hidden - SIMD acceleration (Phase 4c when nx_simd lands) Per cardinal feedback-honest-perf-verdict-no-aspirational-claims: gap list is EXACT. genealogy_id: substrate_browser_phase_4_paint_seed + classical_2d_rect_fill lineage_id: nishi_browser_paint_solid_rect_v1 nx_safety_envelope: intended_use: "Solid rect fill -- browser paint substrate" sil_target: SIL1 evidence: [bounded_pixel_loop, explicit_clipping,

dependencies 2 imports · 37 importers

nx_syscalls.nx nx_css_color_decode.nx nx_paint_solid_rect.nx nx_browser.nx nx_browser_demo_42.nx nx_browser_demo_hello.nx nx_browser_demo_html.nx nx_browser_demo_html_nishi.nx nx_browser_demo_lowercase.nx nx_browser_demo_multiline.nx nx_browser_demo_pangram.nx nx_browser_demo_styled.nx nx_browser_forms_paint.nx

diagram shows first 10 each side; +0 more imports, +27 more importers in the complete lists below.

imports: nx_syscalls.nxnx_css_color_decode.nx

imported by: nx_browser.nxnx_browser_demo_42.nxnx_browser_demo_hello.nxnx_browser_demo_html.nxnx_browser_demo_html_nishi.nxnx_browser_demo_lowercase.nxnx_browser_demo_multiline.nxnx_browser_demo_pangram.nxnx_browser_demo_styled.nxnx_browser_forms_paint.nxnx_browser_render.nxnx_browser_render_own_test.nxnx_caption_burn.nxnx_caption_burn_gate.nxnx_caption_render_uni.nxnx_cyrillic_render_gate.nxnx_jpeg_ascii.nxnx_jpeg_ascii_test.nxnx_live_xlate_call_gate.nxnx_multilang_call_gate.nxnx_multilang_render_gate.nxnx_paint_blend.nxnx_paint_blend_test.nxnx_paint_box_borders.nxnx_paint_box_borders_test.nxnx_paint_fb_ascii_dump.nxnx_paint_fb_ascii_dump_test.nxnx_paint_solid_rect_test.nxnx_paint_text.nxnx_paint_text_test.nxnx_paint_walk_layout.nxnx_paint_walk_layout_test.nxnx_paint_walk_layout_text_test.nxnx_render_ascii.nxnx_render_html.nxnx_render_wiki_bmp.nxnx_ttf_fontlib.nx

structs

50struct Framebuffer

consts

56const NX_FRAMEBUFFER_BYTES: i64 = 24

functions

62func nx_framebuffer_init(fb: *Framebuffer, pixels: *u8,
71func nx_framebuffer_clear(fb: *Framebuffer) -> i64
83func nx_framebuffer_get_pixel(fb: *Framebuffer, x: i64, y: i64,
102func nx_paint_solid_rect(fb: *Framebuffer,