opentui-sys 0.1.0

Bindings to the sst/opentui core zig library C ABI
use opentui_sys::*;
use std::ptr;

fn main() {
    println!("Creating OpenTUI renderer...");
    
    unsafe {
        // Create a 80x24 renderer
        let renderer = createRenderer(80, 24);
        if renderer.is_null() {
            println!("Failed to create renderer");
            return;
        }
        println!("Renderer created successfully!");

        // Create a buffer
        let buffer = createOptimizedBuffer(80, 24, false);
        if buffer.is_null() {
            println!("Failed to create buffer");
            destroyRenderer(renderer, false, 0);
            return;
        }
        println!("Buffer created successfully!");

        // Get buffer dimensions
        let width = getBufferWidth(buffer);
        let height = getBufferHeight(buffer);
        println!("Buffer dimensions: {}x{}", width, height);

        // Clear the buffer with a background color (dark blue)
        let bg_color = [0.0f32, 0.0f32, 0.5f32, 1.0f32];
        bufferClear(buffer, bg_color.as_ptr());
        println!("Buffer cleared");

        // Draw some text
        let text = b"Hello from OpenTUI!";
        let fg_color = [1.0f32, 1.0f32, 1.0f32, 1.0f32]; // white
        let bg_color = [0.0f32, 0.0f32, 0.0f32, 0.0f32]; // transparent
        
        bufferDrawText(
            buffer,
            text.as_ptr(),
            text.len(),
            10, // x position
            5,  // y position
            fg_color.as_ptr(),
            bg_color.as_ptr(),
            0, // no special attributes
        );
        println!("Text drawn to buffer");

        // Clean up
        destroyOptimizedBuffer(buffer);
        destroyRenderer(renderer, false, 0);
        println!("Resources cleaned up successfully!");
    }
}