move explicit bezier to vg
[vg.git] / vg_imgui.h
diff --git a/vg_imgui.h b/vg_imgui.h
deleted file mode 100644 (file)
index f2d4f05..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-/* Copyright (C) 2021-2024 Harry Godden (hgn) - All Rights Reserved */
-
-/*
- *  Principles:
- *    
- *    1. layout is defined by subdividing
- *    2. a parent node should never be resized by the content after creation
- *    3. when the ui is in an interactive state, no controls should ever move
- *    4. controls directly reference a memory location and use that as their
- *       unique id
- *    5. a maximum of ONE control per memory location can be drawn at any given
- *       point.
- */
-
-#pragma once
-
-#include "vg_engine.h"
-#include "vg_tex.h"
-#include "vg_shader.h"
-
-typedef i16                            ui_px;
-typedef ui_px                          ui_rect[4];
-typedef ui_px           ui_point[2];
-typedef struct ui_vert  ui_vert;
-
-enum ui_axis {
-   k_ui_axis_h = 0x0u,
-   k_ui_axis_v = 0x1u,
-};
-
-/* Relative to cursor p0 */
-enum ui_align
-{  /*                         DC      BA */
-   k_ui_align_lwr           =         0xff,
-   k_ui_align_left          = 0x0000| 0x00,
-   k_ui_align_right         = 0x0000| 0x01,
-   k_ui_align_center        = 0x0000| 0x02,
-
-   k_ui_align_middle        = 0x0100,
-   k_ui_align_middle_left   = 0x0100| 0x00,
-   k_ui_align_middle_right  = 0x0100| 0x01,
-   k_ui_align_middle_center = 0x0100| 0x02,
-
-   k_ui_align_bottom        = 0x0200,
-   k_ui_align_bottom_left   = 0x0200| 0x00,
-   k_ui_align_bottom_right  = 0x0200| 0x01,
-   k_ui_align_bottom_center = 0x0200| 0x02,
-};
-
-#pragma pack(push,1)
-struct ui_vert
-{
-   ui_px co[2];
-   u16 uv[2];
-   u32 colour;
-};
-#pragma pack(pop)
-
-enum ui_scheme_colour{
-   k_ui_bg      = 0,
-   k_ui_fg      = 8,
-   k_ui_hue     = 16,
-   k_ui_red     = 16,
-   k_ui_orange,
-   k_ui_yellow,
-   k_ui_green,
-   k_ui_aqua,
-   k_ui_blue,
-   k_ui_purple,
-   k_ui_gray,
-   k_ui_brighter = 8
-};
-
-enum ui_shader {
-   k_ui_shader_colour,
-   k_ui_shader_image,
-   k_ui_shader_hsv,
-};
-
-extern ui_px k_ui_widget_height,
-             k_ui_scale,
-             k_ui_padding;
-
-typedef u32 ui_scheme[8*4];
-
-struct ui_font {
-   ui_px glyph_width,
-         glyph_height,
-         glyph_baseline,
-         line_height,
-         sheet_size,
-         spacing,
-         offset_y;
-
-   u8 ascii_start;
-};
-typedef struct ui_font ui_font;
-
-extern ui_font vg_ui_font_small, vg_ui_font_big;
-
-#define UI_RGB( STDHEX )          0xff000000       |\
-                         ((STDHEX&0x000000ff)<<16) |\
-                         ((STDHEX&0x0000ff00)    ) |\
-                         ((STDHEX&0x00ff0000)>>16) 
-
-#define UI_TEXTBOX_MULTILINE 0x1
-#define UI_TEXTBOX_WRAP      0x2
-#define UI_TEXTBOX_AUTOFOCUS 0x4
-
-#define UI_MODAL_OK        0x0
-#define UI_MODAL_GOOD      0x1
-#define UI_MODAL_BAD       0x2
-#define UI_MODAL_WARN      0x3
-#define UI_MODAL_TYPE_BITS 0x3
-
-#define UI_MOUSE_LEFT   (SDL_BUTTON(SDL_BUTTON_LEFT))
-#define UI_MOUSE_RIGHT  (SDL_BUTTON(SDL_BUTTON_RIGHT))
-#define UI_MOUSE_MIDDLE (SDL_BUTTON(SDL_BUTTON_MIDDLE))
-
-#define UI_TOP 0x1
-#define UI_LEFT 0x2
-#define UI_BOTTOM 0x4
-#define UI_RIGHT 0x8
-
-struct vg_imgui
-{
-   struct ui_vert *vertex_buffer;
-   u16            *indice_buffer;
-       u32 max_verts, max_indices, 
-       cur_vert,  cur_indice,
-       vert_start, indice_start;
-
-   union {
-   void *focused_control_id; /* uses the memory location of various locking
-                                controls as an id */
-   char *textbuf;
-   i32 *ptr_enum;
-   };
-
-   u32 focused_control_hit;
-   enum ui_control_type{
-      k_ui_control_none,
-      k_ui_control_textbox,
-      k_ui_control_enum,
-               k_ui_control_modal
-   }
-   focused_control_type;
-
-   union{ /* controls that can be focused */
-      struct ui_textbuf{
-         int cursor_user, cursor_pos;
-         u32 len;
-         u32 flags;
-
-         struct ui_textbox_callbacks{
-            void (*enter)( char *, u32 ),  
-                 (*up)( char *, u32 ), 
-                 (*down)( char *, u32 ),
-                 (*change)( char *, u32 ),
-                 (*escape)( void );
-         }
-         callbacks;
-      }
-      textbox;
-
-      struct ui_enum{
-         struct ui_enum_opt{
-            i32 value;
-            const char *alias;
-         }
-         *options;
-         u32 option_count;
-         ui_rect rect;
-      }
-      _enum;
-   };
-
-       struct ui_modal{
-               const char *message;
-               u32 options;
-               
-               struct ui_modal_callbacks{
-                       void (*close)(u32);
-               }
-               callbacks;
-       }
-   modal;
-       
-       GLuint tex_glyphs, vao, vbo, ebo, tex_bg;
-   v2f bg_inverse_ratio;
-
-       ui_px mouse[2], mouse_delta[2], mouse_click[2];
-   u32 mouse_state[2];
-   u32 ignore_input_frames;
-   bool mouse_pos_overriden;
-   int wants_mouse;
-
-   ui_rect click_fader, click_fader_end;
-   float click_fade_opacity;
-   f32 frosting;
-
-   ui_scheme scheme;
-   const ui_font *font;
-
-   enum ui_cursor{
-      k_ui_cursor_default,
-      k_ui_cursor_ibeam,
-      k_ui_cursor_hand,
-      k_ui_cursor_max
-   }
-   cursor;
-
-   SDL_Cursor *cursor_map[ k_ui_cursor_max ];
-   v4f colour;
-
-   f32 hue; /* lol this sucks */
-} 
-extern vg_ui;
-
-enum ui_button_state {
-   k_ui_button_none            = 0x0,
-   k_ui_button_click           = 0x1,
-   k_ui_button_holding_inside  = 0x2,
-   k_ui_button_holding_outside = 0x4,
-   k_ui_button_hover           = 0x8
-};
-
-/* TODO: docu.. */
-
-void vg_ui_init(void);
-void rect_copy( ui_rect a, ui_rect b );
-void ui_flush( enum ui_shader shader, f32 w, f32 h );
-void ui_fill_rect( ui_rect rect, u32 colour, ui_px uv[4] );
-void ui_fill( ui_rect rect, u32 colour );
-void ui_outline( ui_rect rect, ui_px thickness, u32 colour, u32 mask );
-void ui_split( ui_rect rect, enum ui_axis other, ui_px width, ui_px gap,
-               ui_rect l, ui_rect r );
-void ui_rect_center( ui_rect parent, ui_rect rect );
-void ui_fit_item( ui_rect rect, ui_px size[2], ui_rect d );
-void ui_split_ratio( ui_rect rect, enum ui_axis dir, float ratio, 
-                     ui_px gap, ui_rect l, ui_rect r );
-void ui_rect_pad( ui_rect rect, ui_px pad[2] );
-ui_px ui_text_line_width( const char *str );
-ui_px ui_text_string_height( const char *str );
-ui_px ui_text_aligned_x( const char *str, ui_rect rect, ui_px scale,
-                         enum ui_align align );
-int ui_clip( ui_rect parent, ui_rect child, ui_rect clipped );
-int ui_inside_rect( ui_rect rect, ui_px co[2] );
-int ui_click_down( u32 mask );
-int ui_clicking( u32 mask );
-int ui_click_up( u32 mask );
-void ui_set_mouse_pos( ui_px x, ui_px y );
-void ui_prerender(void);
-u32 ui_colour( enum ui_scheme_colour id );
-
-/* get an appropriately contrasting colour given the base */
-u32 ui_colourcont( enum ui_scheme_colour id );
-
-void ui_hex_to_norm( u32 hex, v4f norm );
-u32 v4f_u32_colour( v4f colour );
-
-u32 ui_opacity( u32 colour, f32 opacity );
-u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale, 
-              enum ui_align align, u32 colour );
-void ui_text( ui_rect rect, const char *str, ui_px scale, 
-              enum ui_align align, u32 colour );
-void ui_panel( ui_rect in_rect, ui_rect out_panel );
-void ui_label( ui_rect rect, const char *text, ui_px size,
-               ui_px gap, ui_rect r );
-void ui_standard_widget( ui_rect inout_panel, ui_rect out_rect, ui_px count );
-void ui_info( ui_rect inout_panel, const char *text );
-void ui_image( ui_rect rect, GLuint image );
-void ui_defocus_all(void);
-enum ui_button_state ui_colourbutton( ui_rect rect, 
-                                      enum ui_scheme_colour colour,
-                                      enum ui_scheme_colour hover_colour,
-                                      enum ui_scheme_colour hi_colour,
-                                      bool const fill );
-enum ui_button_state ui_colourbutton_text( 
-      ui_rect rect, const char *string, ui_px scale,
-      enum ui_scheme_colour colour );
-enum ui_button_state ui_button_text( ui_rect rect, 
-                                     const char *string, ui_px scale );
-enum ui_button_state ui_button( ui_rect inout_panel, const char *string );
-void ui_postrender(void);
-
-int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data );
-void ui_enum( ui_rect inout_panel, const char *str_label, 
-              struct ui_enum_opt *options, u32 len, i32 *value );
-bool ui_slider( ui_rect inout_panel, const char *str_label, 
-                f32 min, f32 max, f32 *value, const char *format );
-void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value );
-int ui_textbox( ui_rect inout_panel, const char *label,
-                char *buf, u32 len, u32 lines, u32 flags,
-                struct ui_textbox_callbacks *callbacks );
-void ui_tabs( ui_rect inout_panel, ui_rect out_content_panel,
-              const char **titles, u32 count, i32 *page );
-void ui_start_modal( const char *message, u32 options );
-void ui_proc_key( SDL_Keysym ev );
-void ui_proc_utf8( const char *text );
-void ui_dev_colourview(void);
-
-void _ui_textbox_move_cursor( int *cursor0, int *cursor1, 
-                              int dir, int snap_together );
-int _ui_textbox_delete_char( int direction );
-void _ui_textbox_put_char( char c );
-void _ui_textbox_up(void);
-void _ui_textbox_left(void);
-void _ui_textbox_left_select(void);
-void _ui_textbox_down(void);
-void _ui_textbox_right_select(void);
-void _ui_textbox_right(void);
-void _ui_textbox_backspace(void);
-void _ui_textbox_delete(void);
-void _ui_textbox_home_select(void);
-void _ui_textbox_home(void);
-void _ui_textbox_end_select(void);
-void _ui_textbox_end(void);
-void _ui_textbox_select_all(void);
-void _ui_textbox_cut(void);
-void _ui_textbox_enter(void);