projects
/
vg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various things but also major error
[vg.git]
/
vg_imgui.h
diff --git
a/vg_imgui.h
b/vg_imgui.h
index bb98812f3d90a76148ea0bcedac79f1e6b91188b..75f441e8ffb3929a0fd384cda23567166a718bef 100644
(file)
--- a/
vg_imgui.h
+++ b/
vg_imgui.h
@@
-6,6
+6,10
@@
* 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
* 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.
*/
#ifndef VG_IMGUI_H
*/
#ifndef VG_IMGUI_H
@@
-105,13
+109,16
@@
struct{
int cursor_user, cursor_pos;
u32 len;
u32 flags;
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 );
+ }
+ callbacks;
}
textbox;
}
textbox;
-
- void (*textbuf_on_enter) ( char *buf, u32 len );
- void (*textbuf_on_up) ( char *buf, u32 len );
- void (*textbuf_on_down) ( char *buf, u32 len );
- void (*textbuf_on_change)( char *buf, u32 len );
GLuint tex_glyphs, vao, vbo, ebo;
GLuint tex_glyphs, vao, vbo, ebo;
@@
-1265,8
+1272,8
@@
static void _ui_textbox_up(void)
}
}
else{
}
}
else{
- if( vg_ui.textb
uf_on_
up ){
- vg_ui.textb
uf_on_
up( vg_ui.textbuf, vg_ui.textbox.len );
+ if( vg_ui.textb
ox.callbacks.
up ){
+ vg_ui.textb
ox.callbacks.
up( vg_ui.textbuf, vg_ui.textbox.len );
}
}
}
}
}
}
@@
-1320,8
+1327,8
@@
static void _ui_textbox_down(void)
vg_ui.textbox.cursor_pos = line_below_begin+offset;
}
else{
vg_ui.textbox.cursor_pos = line_below_begin+offset;
}
else{
- if( vg_ui.textb
uf_on_
down ){
- vg_ui.textb
uf_on_
down( vg_ui.textbuf, vg_ui.textbox.len );
+ if( vg_ui.textb
ox.callbacks.
down ){
+ vg_ui.textb
ox.callbacks.
down( vg_ui.textbuf, vg_ui.textbox.len );
}
}
}
}
}
}
@@
-1345,8
+1352,9
@@
static void _ui_textbox_backspace(void)
vg_ui.textbox.cursor_user = _ui_textbox_delete_char( -1 );
vg_ui.textbox.cursor_pos = vg_ui.textbox.cursor_user;
vg_ui.textbox.cursor_user = _ui_textbox_delete_char( -1 );
vg_ui.textbox.cursor_pos = vg_ui.textbox.cursor_user;
- if( vg_ui.textbuf_on_change )
- vg_ui.textbuf_on_change( vg_ui.textbuf, vg_ui.textbox.len );
+ if( vg_ui.textbox.callbacks.change ){
+ vg_ui.textbox.callbacks.change( vg_ui.textbuf, vg_ui.textbox.len );
+ }
}
}
}
}
@@
-1356,8
+1364,9
@@
static void _ui_textbox_delete(void)
vg_ui.textbox.cursor_user = _ui_textbox_delete_char( 1 );
vg_ui.textbox.cursor_pos = vg_ui.textbox.cursor_user;
vg_ui.textbox.cursor_user = _ui_textbox_delete_char( 1 );
vg_ui.textbox.cursor_pos = vg_ui.textbox.cursor_user;
- if( vg_ui.textbuf_on_change )
- vg_ui.textbuf_on_change( vg_ui.textbuf, vg_ui.textbox.len );
+ if( vg_ui.textbox.callbacks.change ){
+ vg_ui.textbox.callbacks.change( vg_ui.textbuf, vg_ui.textbox.len );
+ }
}
}
}
}
@@
-1408,8
+1417,8
@@
static void _ui_textbox_enter(void)
ui_defocus_all();
}
ui_defocus_all();
}
- if( vg_ui.textb
uf_on_
enter ){
- vg_ui.textb
uf_on_
enter( vg_ui.textbuf, vg_ui.textbox.len );
+ if( vg_ui.textb
ox.callbacks.
enter ){
+ vg_ui.textb
ox.callbacks.
enter( vg_ui.textbuf, vg_ui.textbox.len );
}
}
}
}
}
}
@@
-1499,7
+1508,8
@@
static int _ui_textbox_run_remaining( int index[3], int wrap_length )
return printed_chars+1;
}
return printed_chars+1;
}
-static int ui_textbox( ui_rect rect, char *buf, u32 len, u32 flags )
+static int ui_textbox( ui_rect rect, char *buf, u32 len, u32 flags,
+ struct ui_textbox_callbacks *callbacks )
{
int clickup= ui_click_up(UI_MOUSE_LEFT),
click = ui_clicking(UI_MOUSE_LEFT) | clickup,
{
int clickup= ui_click_up(UI_MOUSE_LEFT),
click = ui_clicking(UI_MOUSE_LEFT) | clickup,
@@
-1656,6
+1666,16
@@
static int ui_textbox( ui_rect rect, char *buf, u32 len, u32 flags )
vg_ui.textbox.cursor_pos = 0;
vg_ui.textbox.cursor_user = 0;
vg_ui.textbox.cursor_pos = 0;
vg_ui.textbox.cursor_user = 0;
+ if( callbacks ){
+ vg_ui.textbox.callbacks = *callbacks;
+ }
+ else{
+ vg_ui.textbox.callbacks.change = NULL;
+ vg_ui.textbox.callbacks.down = NULL;
+ vg_ui.textbox.callbacks.up = NULL;
+ vg_ui.textbox.callbacks.enter = NULL;
+ }
+
SDL_StartTextInput();
}
}
SDL_StartTextInput();
}
}
@@
-1757,8
+1777,8
@@
VG_STATIC void ui_proc_utf8( const char *text )
ptr ++;
}
ptr ++;
}
- if( vg_ui.textb
uf_on_
change ){
- vg_ui.textb
uf_on_
change( vg_ui.textbuf, vg_ui.textbox.len );
+ if( vg_ui.textb
ox.callbacks.
change ){
+ vg_ui.textb
ox.callbacks.
change( vg_ui.textbuf, vg_ui.textbox.len );
}
}
}
}
}
}