package main import rl "vendor:raylib" Colour :: rl.Color // Font configuration FontConfig :: struct { font: rl.Font, size: f32, name: string, } // Text selection Selection :: struct { start: int, end: int, active: bool, } // Wrapped line information WrappedLine :: struct { text: string, original_line: int, character_offset: int, } // File buffer structure FileBuffer :: struct { filename: string, content: string, modified: bool, cursor_pos: int, scroll_y: f32, selection: Selection, } Colours :: struct { background: Colour, text: Colour, line_numbers_background: Colour, line_numbers: Colour, highlight: Colour, status_bar: Colour, status_bar_text: Colour, active_tab: Colour, inactive_tab: Colour, tab_border: Colour, cursor: Colour } Config :: struct { font: string, font_size: int, colours: Colours, } // Application state App :: struct { files: [dynamic]FileBuffer, active_tab: int, fonts: [dynamic]FontConfig, current_font_index: int, line_height: f32, tab_height: f32, window_width: i32, window_height: i32, text_area_y: f32, line_number_width: f32, mouse_drag_start: int, is_dragging: bool, copied_text: string, config: Config, }