package monitors_example import "core:fmt" import win "../window" main :: proc() { fmt.println("Monitor Information Demo") fmt.println("========================") loop, err := win.create_event_loop() if err != .None { fmt.eprintln("Failed to create event loop:", err) return } defer win.destroy_event_loop(loop) // Get all monitors monitors := win.get_monitors(loop) fmt.printfln("\nFound %d monitor(s):\n", len(monitors)) for monitor, i in monitors { info := win.get_monitor_info(loop, monitor) primary_str := info.is_primary ? " (Primary)" : "" fmt.printfln("Monitor %d: %s%s", i + 1, info.name, primary_str) fmt.printfln(" Position: (%d, %d)", info.position.x, info.position.y) fmt.printfln(" Physical size: %d x %d mm", info.size_mm.width, info.size_mm.height) fmt.printfln(" Scale factor: %.2f", info.scale_factor) fmt.printfln(" Current mode: %dx%d @ %dHz (%d-bit)", info.current_mode.size.width, info.current_mode.size.height, info.current_mode.refresh_rate, info.current_mode.bit_depth) // Get workarea workarea := win.get_monitor_workarea(loop, monitor) fmt.printfln(" Workarea: (%d, %d) %dx%d", workarea.position.x, workarea.position.y, workarea.size.width, workarea.size.height) // Get all video modes modes := win.get_video_modes(loop, monitor) defer delete(modes) fmt.printfln(" Supported modes: %d", len(modes)) // Print first few modes for mode, j in modes { if j >= 5 { fmt.printfln(" ... and %d more", len(modes) - 5) break } fmt.printfln(" %dx%d @ %dHz", mode.size.width, mode.size.height, mode.refresh_rate) } fmt.println() } // Get primary monitor specifically primary := win.get_primary_monitor(loop) if primary != nil { name := win.get_monitor_name(primary) fmt.printfln("Primary monitor: %s", name) scale_x, scale_y := win.get_monitor_content_scale(loop, primary) fmt.printfln("Content scale: %.2f x %.2f", scale_x, scale_y) } }