New fancy color cleanup; fancy string cleanup; api colors now use fancy colors; fancy colors are FColors
parent
9f986493a1
commit
21d482e05f
|
@ -1542,16 +1542,19 @@ view_set_buffer(Application_Links *app, View_ID view_id, Buffer_ID buffer_id, Se
|
|||
return(result);
|
||||
}
|
||||
|
||||
// TODO(allen): remove this!
|
||||
api(custom) function b32
|
||||
view_post_fade(Application_Links *app, View_ID view_id, f32 seconds, Range_i64 range, int_color color)
|
||||
{
|
||||
view_post_fade(Application_Links *app, View_ID view_id, f32 seconds, Range_i64 range,
|
||||
FColor color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
b32 result = false;
|
||||
if (api_check_view(view)){
|
||||
i64 size = range_size(range);
|
||||
if (size > 0){
|
||||
view_post_paste_effect(view, seconds, (i32)range.start, (i32)size, color|0xFF000000);
|
||||
Color_Table color_table = models->color_table;
|
||||
view_post_paste_effect(view, seconds, (i32)range.start, (i32)size,
|
||||
finalize_color(color_table, color));
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
@ -2582,15 +2585,11 @@ get_theme_colors(Application_Links *app, Theme_Color *colors, i32 count)
|
|||
}
|
||||
}
|
||||
|
||||
api(custom) function argb_color
|
||||
finalize_color(Application_Links *app, int_color color){
|
||||
api(custom) function ARGB_Color
|
||||
finalize_color(Application_Links *app, ID_Color color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Color_Table color_table = models->color_table;
|
||||
u32 color_rgb = color;
|
||||
if ((color & 0xFF000000) == 0){
|
||||
color_rgb = color_table.vals[color % color_table.count];
|
||||
}
|
||||
return(color_rgb);
|
||||
return(finalize_color(color_table, color));
|
||||
}
|
||||
|
||||
api(custom) function String_Const_u8
|
||||
|
@ -2630,10 +2629,11 @@ set_window_title(Application_Links *app, String_Const_u8 title)
|
|||
return(true);
|
||||
}
|
||||
|
||||
api(custom) function Vec2
|
||||
draw_string_oriented(Application_Links *app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta)
|
||||
api(custom) function Vec2_f32
|
||||
draw_string_oriented(Application_Links *app, Face_ID font_id, FColor color,
|
||||
String_Const_u8 str, Vec2_f32 point, u32 flags, Vec2_f32 delta)
|
||||
{
|
||||
Vec2 result = point;
|
||||
Vec2_f32 result = point;
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Face *face = font_set_face_from_id(&models->font_set, font_id);
|
||||
if (models->target == 0){
|
||||
|
@ -2658,7 +2658,7 @@ get_string_advance(Application_Links *app, Face_ID font_id, String_Const_u8 str)
|
|||
}
|
||||
|
||||
api(custom) function void
|
||||
draw_rectangle(Application_Links *app, Rect_f32 rect, f32 roundness, int_color color){
|
||||
draw_rectangle(Application_Links *app, Rect_f32 rect, f32 roundness, FColor color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
if (models->in_render_mode){
|
||||
Color_Table color_table = models->color_table;
|
||||
|
@ -2670,8 +2670,8 @@ draw_rectangle(Application_Links *app, Rect_f32 rect, f32 roundness, int_color c
|
|||
}
|
||||
|
||||
api(custom) function void
|
||||
draw_rectangle_outline(Application_Links *app, Rect_f32 rect, f32 roundness, f32 thickness, int_color color)
|
||||
{
|
||||
draw_rectangle_outline(Application_Links *app, Rect_f32 rect,
|
||||
f32 roundness, f32 thickness, FColor color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
if (models->in_render_mode){
|
||||
Color_Table color_table = models->color_table;
|
||||
|
@ -2722,9 +2722,10 @@ text_layout_create(Application_Links *app, Buffer_ID buffer_id, Rect_f32 rect, B
|
|||
buffer_get_last_pos_from_line_number(buffer, visible_line_number_range.max));
|
||||
|
||||
i64 item_count = range_size_inclusive(visible_range);
|
||||
int_color *colors_array = push_array(arena, int_color, item_count);
|
||||
FColor *colors_array = push_array(arena, FColor, item_count);
|
||||
for (i64 i = 0; i < item_count; i += 1){
|
||||
colors_array[i] = Stag_Default;
|
||||
colors_array[i].a_byte = 0;
|
||||
colors_array[i].id = Stag_Default;
|
||||
}
|
||||
result = text_layout_new(&models->text_layouts, arena, buffer_id, buffer_point,
|
||||
visible_range, visible_line_number_range, rect, colors_array);
|
||||
|
@ -2862,7 +2863,8 @@ text_layout_character_on_screen(Application_Links *app, Text_Layout_ID layout_id
|
|||
}
|
||||
|
||||
api(custom) function void
|
||||
paint_text_color(Application_Links *app, Text_Layout_ID layout_id, Interval_i64 range, int_color color){
|
||||
paint_text_color(Application_Links *app, Text_Layout_ID layout_id, Interval_i64 range,
|
||||
FColor color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Rect_f32 result = {};
|
||||
Text_Layout *layout = text_layout_get(&models->text_layouts, layout_id);
|
||||
|
@ -2871,7 +2873,7 @@ paint_text_color(Application_Links *app, Text_Layout_ID layout_id, Interval_i64
|
|||
range.max = clamp_top(range.max, layout->visible_range.max);
|
||||
range.min -= layout->visible_range.min;
|
||||
range.max -= layout->visible_range.min;
|
||||
int_color *color_ptr = layout->item_colors + range.min;
|
||||
FColor *color_ptr = layout->item_colors + range.min;
|
||||
for (i64 i = range.min; i < range.max; i += 1, color_ptr += 1){
|
||||
*color_ptr = color;
|
||||
}
|
||||
|
|
|
@ -162,11 +162,13 @@ draw_rectangle(Render_Target *target, Rect_f32 rect, f32 roundness, u32 color){
|
|||
}
|
||||
|
||||
internal void
|
||||
draw_font_glyph(Render_Target *target, Face *face, u32 codepoint, f32 x, f32 y, u32 color, u32 flags){
|
||||
draw_font_glyph(Render_Target *target, Face *face, u32 codepoint, Vec2_f32 p,
|
||||
ARGB_Color color, u32 flags){
|
||||
draw__set_face_id(target, face->id);
|
||||
|
||||
u16 glyph_index = 0;
|
||||
if (!codepoint_index_map_read(&face->codepoint_to_index_map, codepoint, &glyph_index)){
|
||||
if (!codepoint_index_map_read(&face->codepoint_to_index_map, codepoint,
|
||||
&glyph_index)){
|
||||
glyph_index = 0;
|
||||
}
|
||||
Glyph_Bounds bounds = face->bounds[glyph_index];
|
||||
|
@ -176,22 +178,29 @@ draw_font_glyph(Render_Target *target, Face *face, u32 codepoint, f32 x, f32 y,
|
|||
|
||||
Render_Vertex vertices[6] = {};
|
||||
if (!HasFlag(flags, GlyphFlag_Rotate90)){
|
||||
Rect_f32 xy = Rf32(x + bounds.xy_off.x0, y + bounds.xy_off.y0,
|
||||
x + bounds.xy_off.x1, y + bounds.xy_off.y1);
|
||||
Rect_f32 xy = Rf32(p + bounds.xy_off.p0, p + bounds.xy_off.p1);
|
||||
|
||||
vertices[0].xy = V2(xy.x0, xy.y1); vertices[0].uvw = V3(uv.x0, uv.y1, bounds.w);
|
||||
vertices[1].xy = V2(xy.x1, xy.y1); vertices[1].uvw = V3(uv.x1, uv.y1, bounds.w);
|
||||
vertices[2].xy = V2(xy.x0, xy.y0); vertices[2].uvw = V3(uv.x0, uv.y0, bounds.w);
|
||||
vertices[5].xy = V2(xy.x1, xy.y0); vertices[5].uvw = V3(uv.x1, uv.y0, bounds.w);
|
||||
vertices[0].xy = V2f32(xy.x0, xy.y1);
|
||||
vertices[0].uvw = V3f32(uv.x0, uv.y1, bounds.w);
|
||||
vertices[1].xy = V2f32(xy.x1, xy.y1);
|
||||
vertices[1].uvw = V3f32(uv.x1, uv.y1, bounds.w);
|
||||
vertices[2].xy = V2f32(xy.x0, xy.y0);
|
||||
vertices[2].uvw = V3f32(uv.x0, uv.y0, bounds.w);
|
||||
vertices[5].xy = V2f32(xy.x1, xy.y0);
|
||||
vertices[5].uvw = V3f32(uv.x1, uv.y0, bounds.w);
|
||||
}
|
||||
else{
|
||||
Rect_f32 xy = Rf32(x - bounds.xy_off.y1, y + bounds.xy_off.x0,
|
||||
x - bounds.xy_off.y0, y + bounds.xy_off.x1);
|
||||
Rect_f32 xy = Rf32(p.x - bounds.xy_off.y1, p.y + bounds.xy_off.x0,
|
||||
p.x - bounds.xy_off.y0, p.y + bounds.xy_off.x1);
|
||||
|
||||
vertices[0].xy = V2(xy.x0, xy.y1); vertices[0].uvw = V3(uv.x1, uv.y1, bounds.w);
|
||||
vertices[1].xy = V2(xy.x1, xy.y1); vertices[1].uvw = V3(uv.x1, uv.y0, bounds.w);
|
||||
vertices[2].xy = V2(xy.x0, xy.y0); vertices[2].uvw = V3(uv.x0, uv.y1, bounds.w);
|
||||
vertices[5].xy = V2(xy.x1, xy.y0); vertices[5].uvw = V3(uv.x0, uv.y0, bounds.w);
|
||||
vertices[0].xy = V2f32(xy.x0, xy.y1);
|
||||
vertices[0].uvw = V3f32(uv.x1, uv.y1, bounds.w);
|
||||
vertices[1].xy = V2f32(xy.x1, xy.y1);
|
||||
vertices[1].uvw = V3f32(uv.x1, uv.y0, bounds.w);
|
||||
vertices[2].xy = V2f32(xy.x0, xy.y0);
|
||||
vertices[2].uvw = V3f32(uv.x0, uv.y1, bounds.w);
|
||||
vertices[5].xy = V2f32(xy.x1, xy.y0);
|
||||
vertices[5].uvw = V3f32(uv.x0, uv.y0, bounds.w);
|
||||
}
|
||||
|
||||
vertices[3] = vertices[1];
|
||||
|
@ -215,7 +224,8 @@ floor32(Vec2 point){
|
|||
}
|
||||
|
||||
internal f32
|
||||
draw_string(Render_Target *target, Face *face, String_Const_u8 string, Vec2 point, u32 color, u32 flags, Vec2 delta){
|
||||
draw_string(Render_Target *target, Face *face, String_Const_u8 string, Vec2_f32 point,
|
||||
ARGB_Color color, u32 flags, Vec2_f32 delta){
|
||||
f32 total_delta = 0.f;
|
||||
if (face != 0){
|
||||
point = floor32(point);
|
||||
|
@ -238,7 +248,7 @@ draw_string(Render_Target *target, Face *face, String_Const_u8 string, Vec2 poin
|
|||
if (behavior.do_codepoint_advance){
|
||||
u32 codepoint = step.value;
|
||||
if (color != 0){
|
||||
draw_font_glyph(target, face, codepoint, point.x, point.y, color, flags);
|
||||
draw_font_glyph(target, face, codepoint, point, color, flags);
|
||||
}
|
||||
f32 d = font_get_glyph_advance(face, codepoint);
|
||||
point += d*delta;
|
||||
|
@ -264,7 +274,7 @@ draw_string(Render_Target *target, Face *face, String_Const_u8 string, Vec2 poin
|
|||
|
||||
Vec2 pp = point;
|
||||
for (u32 j = 0; j < 3; ++j){
|
||||
draw_font_glyph(target, face, cs[j], pp.x, pp.y, color, flags);
|
||||
draw_font_glyph(target, face, cs[j], pp, color, flags);
|
||||
pp += delta*byte_sub_advances[j];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ internal Text_Layout_ID
|
|||
text_layout_new(Text_Layout_Container *container, Arena *arena,
|
||||
Buffer_ID buffer_id, Buffer_Point point,
|
||||
Interval_i64 visible_range, Interval_i64 visible_line_number_range,
|
||||
Rect_f32 rect, int_color *item_colors){
|
||||
Rect_f32 rect, FColor *item_colors){
|
||||
Text_Layout *new_layout_data = text_layout_new__alloc_layout(container);
|
||||
new_layout_data->arena = arena;
|
||||
new_layout_data->buffer_id = buffer_id;
|
||||
|
@ -90,8 +90,8 @@ text_layout_render(Thread_Context *tctx, Models *models, Text_Layout *layout){
|
|||
Face *face = file_get_face(models, file);
|
||||
f32 width = rect_width(layout->rect);
|
||||
|
||||
u32 special_color = color_table.vals[Stag_Special_Character];
|
||||
u32 ghost_color = color_table.vals[Stag_Ghost_Character];
|
||||
ARGB_Color special_color = color_table.vals[Stag_Special_Character];
|
||||
ARGB_Color ghost_color = color_table.vals[Stag_Ghost_Character];
|
||||
|
||||
Vec2_f32 shift_p = layout->rect.p0 - layout->point.pixel_shift;
|
||||
i64 first_index = layout->visible_range.first;
|
||||
|
@ -104,28 +104,23 @@ text_layout_render(Thread_Context *tctx, Models *models, Text_Layout *layout){
|
|||
block = block->next){
|
||||
Buffer_Layout_Item *item = block->items;
|
||||
i64 count = block->count;
|
||||
int_color *item_colors = layout->item_colors;
|
||||
FColor *item_colors = layout->item_colors;
|
||||
for (i32 i = 0; i < count; i += 1, item += 1){
|
||||
if (item->codepoint != 0){
|
||||
int_color symbol_color = item_colors[item->index - first_index];
|
||||
u32 color = 0;
|
||||
if (symbol_color == Stag_Default){
|
||||
if (HasFlag(item->flags, BRFlag_Special_Character)){
|
||||
color = special_color;
|
||||
}
|
||||
else if (HasFlag(item->flags, BRFlag_Ghost_Character)){
|
||||
color = ghost_color;
|
||||
}
|
||||
else{
|
||||
color = finalize_color(color_table, symbol_color);
|
||||
}
|
||||
ARGB_Color color = 0;
|
||||
if (HasFlag(item->flags, BRFlag_Special_Character)){
|
||||
color = special_color;
|
||||
}
|
||||
else if (HasFlag(item->flags, BRFlag_Ghost_Character)){
|
||||
color = ghost_color;
|
||||
}
|
||||
else{
|
||||
color = finalize_color(color_table, symbol_color);
|
||||
FColor fcolor = item_colors[item->index - first_index];
|
||||
color = finalize_color(color_table, fcolor);
|
||||
}
|
||||
|
||||
Vec2_f32 p = item->rect.p0 + shift_p;
|
||||
draw_font_glyph(target, face, item->codepoint, p.x, p.y, color, GlyphFlag_None);
|
||||
draw_font_glyph(target, face, item->codepoint,
|
||||
p, color, GlyphFlag_None);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ union Text_Layout{
|
|||
Interval_i64 visible_range;
|
||||
Interval_i64 visible_line_number_range;
|
||||
Rect_f32 rect;
|
||||
int_color *item_colors;
|
||||
FColor *item_colors;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
19
4ed_view.cpp
19
4ed_view.cpp
|
@ -388,7 +388,7 @@ view_set_cursor_and_scroll(Thread_Context *tctx, Models *models, View *view, i64
|
|||
}
|
||||
|
||||
internal void
|
||||
view_post_paste_effect(View *view, f32 seconds, i64 start, i64 size, u32 color){
|
||||
view_post_paste_effect(View *view, f32 seconds, i64 start, i64 size, ARGB_Color color){
|
||||
Editing_File *file = view->file;
|
||||
file->state.paste_effect.start = start;
|
||||
file->state.paste_effect.end = start + size;
|
||||
|
@ -727,13 +727,18 @@ release_font_and_update(Models *models, Face *face, Face *replacement_face){
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
internal argb_color
|
||||
finalize_color(Color_Table color_table, int_color color){
|
||||
argb_color color_argb = color;
|
||||
if ((color & 0xFF000000) == 0){
|
||||
color_argb = color_table.vals[color % color_table.count];
|
||||
function ARGB_Color
|
||||
finalize_color(Color_Table color_table, ID_Color id){
|
||||
return(color_table.vals[id % color_table.count]);
|
||||
}
|
||||
|
||||
function ARGB_Color
|
||||
finalize_color(Color_Table color_table, FColor fcolor){
|
||||
ARGB_Color result = fcolor.argb;
|
||||
if (fcolor.a_byte == 0){
|
||||
result = finalize_color(color_table, fcolor.id);
|
||||
}
|
||||
return(color_argb);
|
||||
return(result);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
|
|
@ -1630,10 +1630,9 @@ CUSTOM_COMMAND_SIG(multi_paste){
|
|||
view_set_mark(app, view, seek_pos(range.max + 1));
|
||||
view_set_cursor_and_preferred_x(app, view, seek_pos(range.max + insert_string.size));
|
||||
|
||||
Theme_Color paste = {};
|
||||
paste.tag = Stag_Paste;
|
||||
get_theme_colors(app, &paste, 1);
|
||||
view_post_fade(app, view, 0.667f, Ii64(range.max + 1, range.max + insert_string.size), paste.color);
|
||||
view_post_fade(app, view, 0.667f,
|
||||
Ii64(range.max + 1, range.max + insert_string.size),
|
||||
fcolor_id(Stag_Paste));
|
||||
}
|
||||
else{
|
||||
paste(app);
|
||||
|
@ -1689,10 +1688,7 @@ multi_paste_range(Application_Links *app, View_ID view, Range_i64 range, i32 pas
|
|||
view_set_cursor_and_preferred_x(app, view, seek_pos(finish_range.max));
|
||||
|
||||
// TODO(allen): Send this to all views.
|
||||
Theme_Color paste;
|
||||
paste.tag = Stag_Paste;
|
||||
get_theme_colors(app, &paste, 1);
|
||||
view_post_fade(app, view, 0.667f, finish_range, paste.color);
|
||||
view_post_fade(app, view, 0.667f, finish_range, fcolor_id(Stag_Paste));
|
||||
}
|
||||
}
|
||||
return(finish_range);
|
||||
|
|
|
@ -1520,18 +1520,18 @@ lerp(i32 a, f32 t, i32 b){
|
|||
return((i32)(lerp((f32)a, t, (f32)b)));
|
||||
}
|
||||
|
||||
internal Vec2
|
||||
lerp(Vec2 a, f32 t, Vec2 b){
|
||||
internal Vec2_f32
|
||||
lerp(Vec2_f32 a, f32 t, Vec2_f32 b){
|
||||
return(a + (b-a)*t);
|
||||
}
|
||||
|
||||
internal Vec3
|
||||
lerp(Vec3 a, f32 t, Vec3 b){
|
||||
internal Vec3_f32
|
||||
lerp(Vec3_f32 a, f32 t, Vec3_f32 b){
|
||||
return(a + (b-a)*t);
|
||||
}
|
||||
|
||||
internal Vec4
|
||||
lerp(Vec4 a, f32 t, Vec4 b){
|
||||
internal Vec4_f32
|
||||
lerp(Vec4_f32 a, f32 t, Vec4_f32 b){
|
||||
return(a + (b-a)*t);
|
||||
}
|
||||
|
||||
|
@ -1590,34 +1590,9 @@ operator!=(Rect_f32 a, Rect_f32 b){
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
// TODO(allen): Convert colors to Vec4
|
||||
internal u32
|
||||
color_blend(u32 a, f32 t, u32 b){
|
||||
union{
|
||||
u8 byte[4];
|
||||
u32 comp;
|
||||
} A, B, R;
|
||||
A.comp = a;
|
||||
B.comp = b;
|
||||
R.byte[0] = (u8)lerp(A.byte[0], t, B.byte[0]);
|
||||
R.byte[1] = (u8)lerp(A.byte[1], t, B.byte[1]);
|
||||
R.byte[2] = (u8)lerp(A.byte[2], t, B.byte[2]);
|
||||
R.byte[3] = (u8)lerp(A.byte[3], t, B.byte[3]);
|
||||
return(R.comp);
|
||||
}
|
||||
|
||||
internal Vec3
|
||||
unpack_color3(u32 color){
|
||||
Vec3 result;
|
||||
result.r = ((color >> 16) & 0xFF)/255.f;
|
||||
result.g = ((color >> 8) & 0xFF)/255.f;
|
||||
result.b = ((color >> 0) & 0xFF)/255.f;
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal Vec4
|
||||
unpack_color4(u32 color){
|
||||
Vec4 result;
|
||||
internal Vec4_f32
|
||||
unpack_color(ARGB_Color color){
|
||||
Vec4_f32 result;
|
||||
result.a = ((color >> 24) & 0xFF)/255.f;
|
||||
result.r = ((color >> 16) & 0xFF)/255.f;
|
||||
result.g = ((color >> 8) & 0xFF)/255.f;
|
||||
|
@ -1625,9 +1600,9 @@ unpack_color4(u32 color){
|
|||
return(result);
|
||||
}
|
||||
|
||||
internal u32
|
||||
pack_color4(Vec4 color){
|
||||
u32 result =
|
||||
internal ARGB_Color
|
||||
pack_color(Vec4_f32 color){
|
||||
ARGB_Color result =
|
||||
((u8)(color.a*255) << 24) |
|
||||
((u8)(color.r*255) << 16) |
|
||||
((u8)(color.g*255) << 8) |
|
||||
|
@ -1635,6 +1610,14 @@ pack_color4(Vec4 color){
|
|||
return(result);
|
||||
}
|
||||
|
||||
internal ARGB_Color
|
||||
color_blend(ARGB_Color a, f32 t, ARGB_Color b){
|
||||
Vec4_f32 av = unpack_color(a);
|
||||
Vec4_f32 bv = unpack_color(b);
|
||||
Vec4_f32 v = lerp(av, t, bv);
|
||||
return(pack_color(v));
|
||||
}
|
||||
|
||||
internal Vec4
|
||||
rgba_to_hsla(Vec4 rgba){
|
||||
Vec4 hsla = {};
|
||||
|
|
|
@ -774,6 +774,8 @@ union Rect_f32_Pair{
|
|||
};
|
||||
};
|
||||
|
||||
typedef u32 ARGB_Color;
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
struct i8_Array{
|
||||
|
|
|
@ -62,10 +62,8 @@ CUSTOM_DOC("At the cursor, insert the text at the top of the clipboard.")
|
|||
view_set_cursor_and_preferred_x(app, view, seek_pos(pos + (i32)string.size));
|
||||
|
||||
// TODO(allen): Send this to all views.
|
||||
Theme_Color paste = {};
|
||||
paste.tag = Stag_Paste;
|
||||
get_theme_colors(app, &paste, 1);
|
||||
view_post_fade(app, view, 0.667f, Ii64(pos, pos + string.size), paste.color);
|
||||
view_post_fade(app, view, 0.667f, Ii64_size(pos, string.size),
|
||||
fcolor_id(Stag_Paste));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -101,10 +99,8 @@ CUSTOM_DOC("If the previous command was paste or paste_next, replaces the paste
|
|||
view_set_cursor_and_preferred_x(app, view, seek_pos(pos + string.size));
|
||||
|
||||
// TODO(allen): Send this to all views.
|
||||
Theme_Color paste = {};
|
||||
paste.tag = Stag_Paste;
|
||||
get_theme_colors(app, &paste, 1);
|
||||
view_post_fade(app, view, 0.667f, Ii64(pos, pos + string.size), paste.color);
|
||||
view_post_fade(app, view, 0.667f, Ii64_size(pos, string.size),
|
||||
fcolor_id(Stag_Paste));
|
||||
}
|
||||
else{
|
||||
paste(app);
|
||||
|
|
|
@ -289,7 +289,10 @@ default_render_buffer(Application_Links *app, View_ID view_id, b32 is_active_vie
|
|||
|
||||
// NOTE(allen): Scope highlight
|
||||
if (global_config.use_scope_highlight){
|
||||
int_color colors[] = { Stag_Back_Cycle_1, Stag_Back_Cycle_2, Stag_Back_Cycle_3, Stag_Back_Cycle_4, };
|
||||
FColor colors[] = {
|
||||
fcolor_id(Stag_Back_Cycle_1), fcolor_id(Stag_Back_Cycle_2),
|
||||
fcolor_id(Stag_Back_Cycle_3), fcolor_id(Stag_Back_Cycle_4),
|
||||
};
|
||||
draw_scope_highlight(app, buffer, text_layout_id, cursor_pos, colors, ArrayCount(colors));
|
||||
}
|
||||
|
||||
|
@ -298,28 +301,35 @@ default_render_buffer(Application_Links *app, View_ID view_id, b32 is_active_vie
|
|||
String_Const_u8 name = string_u8_litexpr("*compilation*");
|
||||
Buffer_ID compilation_buffer = get_buffer_by_name(app, name, Access_Always);
|
||||
if (global_config.use_error_highlight){
|
||||
draw_jump_highlights(app, buffer, text_layout_id, compilation_buffer, Stag_Highlight_Junk);
|
||||
draw_jump_highlights(app, buffer, text_layout_id, compilation_buffer,
|
||||
fcolor_id(Stag_Highlight_Junk));
|
||||
}
|
||||
|
||||
// NOTE(allen): Search highlight
|
||||
if (global_config.use_jump_highlight){
|
||||
Buffer_ID jump_buffer = get_locked_jump_buffer(app);
|
||||
if (jump_buffer != compilation_buffer){
|
||||
draw_jump_highlights(app, buffer, text_layout_id, jump_buffer, Stag_Highlight_White);
|
||||
draw_jump_highlights(app, buffer, text_layout_id, jump_buffer,
|
||||
fcolor_id(Stag_Highlight_White));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE(allen): Color parens
|
||||
if (global_config.use_paren_helper){
|
||||
int_color colors[] = { Stag_Text_Cycle_1, Stag_Text_Cycle_2, Stag_Text_Cycle_3, Stag_Text_Cycle_4, };
|
||||
draw_paren_highlight(app, buffer, text_layout_id, cursor_pos, colors, ArrayCount(colors));
|
||||
FColor colors[] = {
|
||||
fcolor_id(Stag_Text_Cycle_1), fcolor_id(Stag_Text_Cycle_2),
|
||||
fcolor_id(Stag_Text_Cycle_3), fcolor_id(Stag_Text_Cycle_4),
|
||||
};
|
||||
draw_paren_highlight(app, buffer, text_layout_id, cursor_pos,
|
||||
colors, ArrayCount(colors));
|
||||
}
|
||||
|
||||
// NOTE(allen): Line highlight
|
||||
if (global_config.highlight_line_at_cursor && is_active_view){
|
||||
i64 line_number = get_line_number_from_pos(app, buffer, cursor_pos);
|
||||
draw_line_highlight(app, text_layout_id, line_number, Stag_Highlight_Cursor_Line);
|
||||
draw_line_highlight(app, text_layout_id, line_number,
|
||||
fcolor_id(Stag_Highlight_Cursor_Line));
|
||||
}
|
||||
|
||||
// NOTE(allen): Cursor shape
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
#include "4coder_string_match.h"
|
||||
#include "4coder_helper.h"
|
||||
#include "4coder_delta_rule.h"
|
||||
#include "4coder_fancy.h"
|
||||
#include "4coder_draw.h"
|
||||
#include "4coder_insertion.h"
|
||||
#include "4coder_lister_base.h"
|
||||
|
|
|
@ -4,34 +4,35 @@
|
|||
|
||||
// TOP
|
||||
|
||||
function int_color
|
||||
function FColor
|
||||
get_margin_color(i32 level){
|
||||
int_color margin = 0;
|
||||
FColor margin = fcolor_zero();
|
||||
switch (level){
|
||||
default:
|
||||
case UIHighlight_None:
|
||||
{
|
||||
margin = Stag_List_Item;
|
||||
margin = fcolor_id(Stag_List_Item);
|
||||
}break;
|
||||
case UIHighlight_Hover:
|
||||
{
|
||||
margin = Stag_List_Item_Hover;
|
||||
margin = fcolor_id(Stag_List_Item_Hover);
|
||||
}break;
|
||||
case UIHighlight_Active:
|
||||
{
|
||||
margin = Stag_List_Item_Active;
|
||||
margin = fcolor_id(Stag_List_Item_Active);
|
||||
}break;
|
||||
}
|
||||
return(margin);
|
||||
}
|
||||
|
||||
internal Vec2
|
||||
draw_string(Application_Links *app, Face_ID font_id, String_Const_u8 string, Vec2 p, int_color color){
|
||||
return(draw_string_oriented(app, font_id, string, p, color, 0, V2(1.f, 0.f)));
|
||||
internal Vec2_f32
|
||||
draw_string(Application_Links *app, Face_ID font_id, String_Const_u8 string,
|
||||
Vec2_f32 p, FColor color){
|
||||
return(draw_string_oriented(app, font_id, color, string, p, 0, V2(1.f, 0.f)));
|
||||
}
|
||||
|
||||
internal void
|
||||
draw_margin(Application_Links *app, Rect_f32 outer, Rect_f32 inner, int_color color){
|
||||
draw_margin(Application_Links *app, Rect_f32 outer, Rect_f32 inner, FColor color){
|
||||
draw_rectangle(app, Rf32(outer.x0, outer.y0, outer.x1, inner.y0), 0.f, color);
|
||||
draw_rectangle(app, Rf32(outer.x0, inner.y1, outer.x1, outer.y1), 0.f, color);
|
||||
draw_rectangle(app, Rf32(outer.x0, inner.y0, inner.x0, inner.y1), 0.f, color);
|
||||
|
@ -39,13 +40,15 @@ draw_margin(Application_Links *app, Rect_f32 outer, Rect_f32 inner, int_color co
|
|||
}
|
||||
|
||||
internal void
|
||||
draw_character_block(Application_Links *app, Text_Layout_ID layout, i64 pos, f32 roundness, int_color color){
|
||||
draw_character_block(Application_Links *app, Text_Layout_ID layout, i64 pos,
|
||||
f32 roundness, FColor color){
|
||||
Rect_f32 rect = text_layout_character_on_screen(app, layout, pos);
|
||||
draw_rectangle(app, rect, roundness, color);
|
||||
}
|
||||
|
||||
internal void
|
||||
draw_character_block(Application_Links *app, Text_Layout_ID layout, Range_i64 range, f32 roundness, int_color color){
|
||||
draw_character_block(Application_Links *app, Text_Layout_ID layout, Range_i64 range,
|
||||
f32 roundness, FColor color){
|
||||
if (range.first < range.one_past_last){
|
||||
i64 i = range.first;
|
||||
Rect_f32 first_rect = text_layout_character_on_screen(app, layout, i);
|
||||
|
@ -80,27 +83,32 @@ draw_character_block(Application_Links *app, Text_Layout_ID layout, Range_i64 ra
|
|||
}
|
||||
|
||||
internal void
|
||||
draw_character_wire_frame(Application_Links *app, Text_Layout_ID layout, i64 pos, f32 roundness, f32 thickness, int_color color){
|
||||
draw_character_wire_frame(Application_Links *app, Text_Layout_ID layout, i64 pos,
|
||||
f32 roundness, f32 thickness, FColor color){
|
||||
Rect_f32 rect = text_layout_character_on_screen(app, layout, pos);
|
||||
draw_rectangle_outline(app, rect, roundness, thickness, color);
|
||||
}
|
||||
|
||||
internal void
|
||||
draw_character_wire_frame(Application_Links *app, Text_Layout_ID layout, Range_i64 range, f32 roundness, f32 thickness, int_color color){
|
||||
draw_character_wire_frame(Application_Links *app, Text_Layout_ID layout,
|
||||
Range_i64 range, f32 roundness, f32 thickness,
|
||||
FColor color){
|
||||
for (i64 i = range.first; i < range.one_past_last; i += 1){
|
||||
draw_character_wire_frame(app, layout, i, roundness, thickness, color);
|
||||
}
|
||||
}
|
||||
|
||||
internal void
|
||||
draw_character_i_bar(Application_Links *app, Text_Layout_ID layout, i64 pos, int_color color){
|
||||
draw_character_i_bar(Application_Links *app, Text_Layout_ID layout, i64 pos,
|
||||
FColor color){
|
||||
Rect_f32 rect = text_layout_character_on_screen(app, layout, pos);
|
||||
rect.x1 = rect.x0 + 1.f;
|
||||
draw_rectangle(app, rect, 0.f, color);
|
||||
}
|
||||
|
||||
internal void
|
||||
draw_line_highlight(Application_Links *app, Text_Layout_ID layout, Range_i64 line_range, int_color color){
|
||||
draw_line_highlight(Application_Links *app, Text_Layout_ID layout,
|
||||
Range_i64 line_range, FColor color){
|
||||
Range_f32 y1 = text_layout_line_on_screen(app, layout, line_range.min);
|
||||
Range_f32 y2 = text_layout_line_on_screen(app, layout, line_range.max);
|
||||
Range_f32 y = range_union(y1, y2);
|
||||
|
@ -111,12 +119,14 @@ draw_line_highlight(Application_Links *app, Text_Layout_ID layout, Range_i64 lin
|
|||
}
|
||||
|
||||
internal void
|
||||
draw_line_highlight(Application_Links *app, Text_Layout_ID layout, i64 line, int_color color){
|
||||
draw_line_highlight(Application_Links *app, Text_Layout_ID layout, i64 line,
|
||||
FColor color){
|
||||
draw_line_highlight(app, layout, Ii64(line), color);
|
||||
}
|
||||
|
||||
internal void
|
||||
paint_text_color_pos(Application_Links *app, Text_Layout_ID layout, i64 pos, int_color color){
|
||||
paint_text_color_pos(Application_Links *app, Text_Layout_ID layout, i64 pos,
|
||||
FColor color){
|
||||
paint_text_color(app, layout, Ii64(pos, pos + 1), color);
|
||||
}
|
||||
|
||||
|
@ -165,8 +175,9 @@ function Rect_f32
|
|||
draw_background_and_margin(Application_Links *app, View_ID view, b32 is_active_view){
|
||||
Rect_f32 view_rect = view_get_screen_rect(app, view);
|
||||
Rect_f32 inner = rect_inner(view_rect, 3.f);
|
||||
int_color margin_color = get_margin_color(is_active_view?UIHighlight_Active:UIHighlight_None);
|
||||
draw_rectangle(app, inner, 0.f, Stag_Back);
|
||||
FColor margin_color = get_margin_color(is_active_view?
|
||||
UIHighlight_Active:UIHighlight_None);
|
||||
draw_rectangle(app, inner, 0.f, fcolor_id(Stag_Back));
|
||||
draw_margin(app, view_rect, inner, margin_color);
|
||||
return(inner);
|
||||
}
|
||||
|
@ -182,15 +193,15 @@ function void
|
|||
draw_file_bar(Application_Links *app, View_ID view_id, Buffer_ID buffer, Face_ID face_id, Rect_f32 bar){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
draw_rectangle(app, bar, 0.f, Stag_Bar);
|
||||
draw_rectangle(app, bar, 0.f, fcolor_id(Stag_Bar));
|
||||
|
||||
Fancy_Color base_color = fancy_id(Stag_Base);
|
||||
Fancy_Color pop2_color = fancy_id(Stag_Pop2);
|
||||
FColor base_color = fcolor_id(Stag_Base);
|
||||
FColor pop2_color = fcolor_id(Stag_Pop2);
|
||||
|
||||
i64 cursor_position = view_get_cursor_pos(app, view_id);
|
||||
Buffer_Cursor cursor = view_compute_cursor(app, view_id, seek_pos(cursor_position));
|
||||
|
||||
Fancy_String_List list = {};
|
||||
Fancy_Line list = {};
|
||||
String_Const_u8 unique_name = push_buffer_unique_name(app, scratch, buffer);
|
||||
push_fancy_string(scratch, &list, base_color, unique_name);
|
||||
push_fancy_stringf(scratch, &list, base_color, " - Row: %3.lld Col: %3.lld -", cursor.line, cursor.col);
|
||||
|
@ -232,28 +243,28 @@ draw_file_bar(Application_Links *app, View_ID view_id, Buffer_ID buffer, Face_ID
|
|||
}
|
||||
|
||||
Vec2 p = bar.p0 + V2(2.f, 2.f);
|
||||
draw_fancy_string(app, face_id, list.first, p, Stag_Default, 0);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &list, p);
|
||||
}
|
||||
|
||||
function void
|
||||
draw_query_bar(Application_Links *app, Query_Bar *query_bar, Face_ID face_id, Rect_f32 bar){
|
||||
Scratch_Block scratch(app);
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_string(scratch, &list, fancy_id(Stag_Pop1) , query_bar->prompt);
|
||||
push_fancy_string(scratch, &list, fancy_id(Stag_Default), query_bar->string);
|
||||
Fancy_Line list = {};
|
||||
push_fancy_string(scratch, &list, fcolor_id(Stag_Pop1) , query_bar->prompt);
|
||||
push_fancy_string(scratch, &list, fcolor_id(Stag_Default), query_bar->string);
|
||||
Vec2_f32 p = bar.p0 + V2(2.f, 2.f);
|
||||
draw_fancy_string(app, face_id, list.first, p, Stag_Default, 0);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &list, p);
|
||||
}
|
||||
|
||||
function void
|
||||
draw_line_number_margin(Application_Links *app, View_ID view_id, Buffer_ID buffer, Face_ID face_id,
|
||||
Text_Layout_ID text_layout_id, Rect_f32 margin){
|
||||
Rect_f32 prev_clip = draw_set_clip(app, margin);
|
||||
draw_rectangle(app, margin, 0.f, Stag_Line_Numbers_Back);
|
||||
draw_rectangle(app, margin, 0.f, fcolor_id(Stag_Line_Numbers_Back));
|
||||
|
||||
Interval_i64 visible_range = text_layout_get_visible_range(app, text_layout_id);
|
||||
|
||||
Fancy_Color line_color = fancy_id(Stag_Line_Numbers_Text);
|
||||
FColor line_color = fcolor_id(Stag_Line_Numbers_Text);
|
||||
|
||||
i64 line_count = buffer_get_line_count(app, buffer);
|
||||
i64 line_count_digit_count = digit_count_from_integer(line_count, 10);
|
||||
|
@ -269,8 +280,11 @@ draw_line_number_margin(Application_Links *app, View_ID view_id, Buffer_ID buffe
|
|||
Range_f32 line_y = text_layout_line_on_screen(app, text_layout_id, line_number);
|
||||
Vec2_f32 p = V2f32(margin.x0, line_y.min);
|
||||
Temp_Memory_Block temp(scratch);
|
||||
Fancy_String *line_string = push_fancy_stringf(scratch, line_color, "%*lld", line_count_digit_count, line_number);
|
||||
draw_fancy_string(app, face_id, line_string, p, Stag_Margin_Active, 0);
|
||||
Fancy_String *string = push_fancy_stringf(scratch, 0, line_color,
|
||||
"%*lld",
|
||||
line_count_digit_count,
|
||||
line_number);
|
||||
draw_fancy_string(app, face_id, fcolor_zero(), string, p);
|
||||
line_number += 1;
|
||||
}
|
||||
|
||||
|
@ -292,8 +306,8 @@ draw_fps_hud(Application_Links *app, Frame_Info frame_info,
|
|||
history_animation_dt[wrapped_index] = frame_info.animation_dt;
|
||||
history_frame_index[wrapped_index] = frame_info.index;
|
||||
|
||||
draw_rectangle(app, rect, 0.f, 0xFF000000);
|
||||
draw_rectangle_outline(app, rect, 0.f, 1.f, 0xFFFFFFFF);
|
||||
draw_rectangle(app, rect, 0.f, f_black);
|
||||
draw_rectangle_outline(app, rect, 0.f, 1.f, f_white);
|
||||
|
||||
Vec2_f32 p = rect.p0;
|
||||
|
||||
|
@ -312,55 +326,55 @@ draw_fps_hud(Application_Links *app, Frame_Info frame_info,
|
|||
dts[1] = history_animation_dt[j];
|
||||
i32 frame_index = history_frame_index[j];
|
||||
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_stringf(scratch, &list, pink , "FPS: ");
|
||||
push_fancy_stringf(scratch, &list, green, "[");
|
||||
push_fancy_stringf(scratch, &list, white, "%5d", frame_index);
|
||||
push_fancy_stringf(scratch, &list, green, "]: ");
|
||||
Fancy_Line list = {};
|
||||
push_fancy_stringf(scratch, &list, f_pink , "FPS: ");
|
||||
push_fancy_stringf(scratch, &list, f_green, "[");
|
||||
push_fancy_stringf(scratch, &list, f_white, "%5d", frame_index);
|
||||
push_fancy_stringf(scratch, &list, f_green, "]: ");
|
||||
|
||||
for (i32 k = 0; k < 2; k += 1){
|
||||
f32 dt = dts[k];
|
||||
if (dt == 0.f){
|
||||
push_fancy_stringf(scratch, &list, white, "----------");
|
||||
push_fancy_stringf(scratch, &list, f_white, "----------");
|
||||
}
|
||||
else{
|
||||
push_fancy_stringf(scratch, &list, white, "%10.6f", dt);
|
||||
push_fancy_stringf(scratch, &list, f_white, "%10.6f", dt);
|
||||
}
|
||||
push_fancy_stringf(scratch, &list, green, " | ");
|
||||
push_fancy_stringf(scratch, &list, f_green, " | ");
|
||||
}
|
||||
|
||||
draw_fancy_string(app, face_id, list.first, p, Stag_Default, 0, 0, V2(1.f, 0.f));
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &list, p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function int_color
|
||||
function FColor
|
||||
get_token_color_cpp(Token token){
|
||||
int_color result = Stag_Default;
|
||||
ID_Color color = Stag_Default;
|
||||
switch (token.kind){
|
||||
case TokenBaseKind_Preprocessor:
|
||||
{
|
||||
result = Stag_Preproc;
|
||||
color = Stag_Preproc;
|
||||
}break;
|
||||
case TokenBaseKind_Keyword:
|
||||
{
|
||||
result = Stag_Keyword;
|
||||
color = Stag_Keyword;
|
||||
}break;
|
||||
case TokenBaseKind_Comment:
|
||||
{
|
||||
result = Stag_Comment;
|
||||
color = Stag_Comment;
|
||||
}break;
|
||||
case TokenBaseKind_LiteralString:
|
||||
{
|
||||
result = Stag_Str_Constant;
|
||||
color = Stag_Str_Constant;
|
||||
}break;
|
||||
case TokenBaseKind_LiteralInteger:
|
||||
{
|
||||
result = Stag_Int_Constant;
|
||||
color = Stag_Int_Constant;
|
||||
}break;
|
||||
case TokenBaseKind_LiteralFloat:
|
||||
{
|
||||
result = Stag_Float_Constant;
|
||||
color = Stag_Float_Constant;
|
||||
}break;
|
||||
default:
|
||||
{
|
||||
|
@ -368,7 +382,7 @@ get_token_color_cpp(Token token){
|
|||
case TokenCppKind_LiteralTrue:
|
||||
case TokenCppKind_LiteralFalse:
|
||||
{
|
||||
result = Stag_Bool_Constant;
|
||||
color = Stag_Bool_Constant;
|
||||
}break;
|
||||
case TokenCppKind_LiteralCharacter:
|
||||
case TokenCppKind_LiteralCharacterWide:
|
||||
|
@ -376,16 +390,16 @@ get_token_color_cpp(Token token){
|
|||
case TokenCppKind_LiteralCharacterUTF16:
|
||||
case TokenCppKind_LiteralCharacterUTF32:
|
||||
{
|
||||
result = Stag_Char_Constant;
|
||||
color = Stag_Char_Constant;
|
||||
}break;
|
||||
case TokenCppKind_PPIncludeFile:
|
||||
{
|
||||
result = Stag_Include;
|
||||
color = Stag_Include;
|
||||
}break;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
return(result);
|
||||
return(fcolor_id(color));
|
||||
}
|
||||
|
||||
function void
|
||||
|
@ -398,8 +412,9 @@ draw_buffer_add_cpp_token_colors(Application_Links *app, Text_Layout_ID text_lay
|
|||
if (token->pos >= visible_range.one_past_last){
|
||||
break;
|
||||
}
|
||||
int_color color = get_token_color_cpp(*token);
|
||||
paint_text_color(app, text_layout_id, Ii64_size(token->pos, token->size), color);
|
||||
FColor color = get_token_color_cpp(*token);
|
||||
paint_text_color(app, text_layout_id, Ii64_size(token->pos, token->size),
|
||||
color);
|
||||
if (!token_it_inc_non_whitespace(&it)){
|
||||
break;
|
||||
}
|
||||
|
@ -472,7 +487,7 @@ get_enclosure_ranges(Application_Links *app, Arena *arena, Buffer_ID buffer, i64
|
|||
function void
|
||||
draw_enclosures(Application_Links *app, Text_Layout_ID text_layout_id, Buffer_ID buffer,
|
||||
i64 pos, u32 flags, Range_Highlight_Kind kind,
|
||||
int_color *back_colors, int_color *fore_colors, i32 color_count){
|
||||
FColor *back_colors, FColor *fore_colors, i32 color_count){
|
||||
Scratch_Block scratch(app);
|
||||
Range_i64_Array ranges = get_enclosure_ranges(app, scratch, buffer, pos, flags);
|
||||
|
||||
|
@ -530,7 +545,7 @@ draw_enclosures(Application_Links *app, Text_Layout_ID text_layout_id, Buffer_ID
|
|||
|
||||
function void
|
||||
draw_scope_highlight(Application_Links *app, Buffer_ID buffer, Text_Layout_ID text_layout_id,
|
||||
i64 pos, int_color *colors, i32 color_count){
|
||||
i64 pos, FColor *colors, i32 color_count){
|
||||
draw_enclosures(app, text_layout_id, buffer,
|
||||
pos, FindNest_Scope, RangeHighlightKind_LineHighlight,
|
||||
colors, 0, color_count);
|
||||
|
@ -538,7 +553,7 @@ draw_scope_highlight(Application_Links *app, Buffer_ID buffer, Text_Layout_ID te
|
|||
|
||||
function void
|
||||
draw_paren_highlight(Application_Links *app, Buffer_ID buffer, Text_Layout_ID text_layout_id,
|
||||
i64 pos, int_color *colors, i32 color_count){
|
||||
i64 pos, FColor *colors, i32 color_count){
|
||||
Token_Array token_array = get_token_array_from_buffer(app, buffer);
|
||||
if (token_array.tokens != 0){
|
||||
Token_Iterator_Array it = token_iterator_pos(0, &token_array, pos);
|
||||
|
@ -563,7 +578,7 @@ draw_paren_highlight(Application_Links *app, Buffer_ID buffer, Text_Layout_ID te
|
|||
|
||||
function void
|
||||
draw_jump_highlights(Application_Links *app, Buffer_ID buffer, Text_Layout_ID text_layout_id,
|
||||
Buffer_ID jump_buffer, int_color line_color){
|
||||
Buffer_ID jump_buffer, FColor line_color){
|
||||
Scratch_Block scratch(app);
|
||||
if (jump_buffer != 0){
|
||||
Managed_Scope scopes[2];
|
||||
|
@ -599,8 +614,10 @@ draw_highlight_range(Application_Links *app, View_ID view_id,
|
|||
Marker marker_range[2];
|
||||
if (managed_object_load_data(app, *highlight, 0, 2, marker_range)){
|
||||
Range_i64 range = Ii64(marker_range[0].pos, marker_range[1].pos);
|
||||
draw_character_block(app, text_layout_id, range, roundness, Stag_Highlight);
|
||||
paint_text_color(app, text_layout_id, range, Stag_At_Highlight);
|
||||
draw_character_block(app, text_layout_id, range, roundness,
|
||||
fcolor_id(Stag_Highlight));
|
||||
paint_text_color(app, text_layout_id, range,
|
||||
fcolor_id(Stag_At_Highlight));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -616,13 +633,21 @@ draw_original_4coder_style_cursor_mark_highlight(Application_Links *app, View_ID
|
|||
i64 cursor_pos = view_get_cursor_pos(app, view_id);
|
||||
i64 mark_pos = view_get_mark_pos(app, view_id);
|
||||
if (is_active_view){
|
||||
draw_character_block(app, text_layout_id, cursor_pos, roundness, Stag_Cursor);
|
||||
paint_text_color_pos(app, text_layout_id, cursor_pos, Stag_At_Cursor);
|
||||
draw_character_wire_frame(app, text_layout_id, mark_pos, roundness, outline_thickness, Stag_Mark);
|
||||
draw_character_block(app, text_layout_id, cursor_pos, roundness,
|
||||
fcolor_id(Stag_Cursor));
|
||||
paint_text_color_pos(app, text_layout_id, cursor_pos,
|
||||
fcolor_id(Stag_At_Cursor));
|
||||
draw_character_wire_frame(app, text_layout_id, mark_pos,
|
||||
roundness, outline_thickness,
|
||||
fcolor_id(Stag_Mark));
|
||||
}
|
||||
else{
|
||||
draw_character_wire_frame(app, text_layout_id, mark_pos, roundness, outline_thickness, Stag_Mark);
|
||||
draw_character_wire_frame(app, text_layout_id, cursor_pos, roundness, outline_thickness, Stag_Cursor);
|
||||
draw_character_wire_frame(app, text_layout_id, mark_pos,
|
||||
roundness, outline_thickness,
|
||||
fcolor_id(Stag_Mark));
|
||||
draw_character_wire_frame(app, text_layout_id, cursor_pos,
|
||||
roundness, outline_thickness,
|
||||
fcolor_id(Stag_Cursor));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -637,10 +662,12 @@ draw_notepad_style_cursor_highlight(Application_Links *app, View_ID view_id,
|
|||
i64 mark_pos = view_get_mark_pos(app, view_id);
|
||||
if (cursor_pos != mark_pos){
|
||||
Range_i64 range = Ii64(cursor_pos, mark_pos);
|
||||
draw_character_block(app, text_layout_id, range, roundness, Stag_Highlight);
|
||||
paint_text_color(app, text_layout_id, range, Stag_At_Highlight);
|
||||
draw_character_block(app, text_layout_id, range, roundness,
|
||||
fcolor_id(Stag_Highlight));
|
||||
paint_text_color(app, text_layout_id, range,
|
||||
fcolor_id(Stag_At_Highlight));
|
||||
}
|
||||
draw_character_i_bar(app, text_layout_id, cursor_pos, Stag_Cursor);
|
||||
draw_character_i_bar(app, text_layout_id, cursor_pos, fcolor_id(Stag_Cursor));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
struct Comment_Highlight_Pair{
|
||||
String_Const_u8 needle;
|
||||
int_color color;
|
||||
FColor color;
|
||||
};
|
||||
|
||||
typedef i32 Range_Highlight_Kind;
|
||||
|
|
|
@ -4,258 +4,520 @@
|
|||
|
||||
// TOP
|
||||
|
||||
static Fancy_Color
|
||||
fancy_blend(id_color a, f32 t, id_color b){
|
||||
Fancy_Color result = {};
|
||||
result.index_a = (u16)a;
|
||||
result.index_b = (u16)b;
|
||||
result.table_a = 1;
|
||||
result.table_b = 1;
|
||||
result.c_b = (u8)(clamp(0, 255.0f*t, 255.0f));
|
||||
result.c_a = 255 - result.c_b;
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_Color
|
||||
fancy_id(id_color a){
|
||||
Fancy_Color result = {};
|
||||
result.index_a = (u16)a;
|
||||
result.index_b = 0;
|
||||
result.table_a = 1;
|
||||
result.table_b = 0;
|
||||
result.c_a = 255;
|
||||
result.c_b = 0;
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_Color
|
||||
fancy_rgba(argb_color color){
|
||||
Fancy_Color result = {};
|
||||
result.rgba = color;
|
||||
result.code = 0;
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_Color
|
||||
fancy_rgba(f32 r, f32 g, f32 b, f32 a){
|
||||
Fancy_Color result = fancy_rgba(pack_color4(V4(r, g, b, a)));
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_Color
|
||||
fancy_resolve_to_rgba(Application_Links *app, Fancy_Color source){
|
||||
if (source.code != 0){
|
||||
Vec4 a = unpack_color4(finalize_color(app, source.index_a));
|
||||
Vec4 b = unpack_color4(finalize_color(app, source.index_b));
|
||||
|
||||
f32 ca = (f32)source.c_a/255.0f;
|
||||
f32 cb = (f32)source.c_b/255.0f;
|
||||
|
||||
Vec4 value = ca*a + cb*b;
|
||||
|
||||
source.rgba = pack_color4(value);
|
||||
source.code = 0;
|
||||
function FColor
|
||||
fcolor_argb(ARGB_Color color){
|
||||
FColor result = {};
|
||||
result.argb = color;
|
||||
if (result.a_byte == 0){
|
||||
result.argb = 0;
|
||||
}
|
||||
return(source);
|
||||
return(result);
|
||||
}
|
||||
function FColor
|
||||
fcolor_argb(Vec4_f32 color){
|
||||
return(fcolor_argb(pack_color(color)));
|
||||
}
|
||||
function FColor
|
||||
fcolor_argb(f32 r, f32 g, f32 b, f32 a){
|
||||
return(fcolor_argb(pack_color(V4f32(r, g, b, a))));
|
||||
}
|
||||
|
||||
static Fancy_Color
|
||||
fancy_pass_through(void){
|
||||
Fancy_Color result = {};
|
||||
function FColor
|
||||
fcolor_id(ID_Color id){
|
||||
FColor result = {};
|
||||
result.id = id;
|
||||
return(result);
|
||||
}
|
||||
|
||||
static int_color
|
||||
int_color_from(Application_Links *app, Fancy_Color source){
|
||||
int_color result = {};
|
||||
if ((source.c_a == 255) && (source.c_b == 0)){
|
||||
result = source.index_a;
|
||||
function ARGB_Color
|
||||
argb_color_blend(ARGB_Color a, f32 at, ARGB_Color b, f32 bt){
|
||||
Vec4_f32 av = unpack_color(a);
|
||||
Vec4_f32 bv = unpack_color(b);
|
||||
Vec4_f32 value = at*av + bt*bv;
|
||||
return(pack_color(value));
|
||||
}
|
||||
function ARGB_Color
|
||||
argb_color_blend(ARGB_Color a, f32 t, ARGB_Color b){
|
||||
return(argb_color_blend(a, 1.f - t, b, t));
|
||||
}
|
||||
|
||||
function ARGB_Color
|
||||
fcolor_resolve_to_argb(Application_Links *app, FColor color){
|
||||
ARGB_Color result = 0;
|
||||
if (color.a_byte == 0){
|
||||
if (color.id != 0){
|
||||
result = finalize_color(app, color.id);
|
||||
}
|
||||
}
|
||||
else{
|
||||
source = fancy_resolve_to_rgba(app, source);
|
||||
result = source.rgba;
|
||||
result = color.argb;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
static b32
|
||||
is_valid(Fancy_Color source){
|
||||
b32 result = !((source.code == 0) && (source.rgba == 0));
|
||||
function FColor
|
||||
fcolor_change_alpha(Application_Links *app, FColor color, f32 alpha){
|
||||
Vec4_f32 v = unpack_color(fcolor_resolve_to_argb(app, color));
|
||||
v.a = alpha;
|
||||
return(fcolor_argb(pack_color(v)));
|
||||
}
|
||||
function FColor
|
||||
fcolor_blend(Application_Links *app, FColor a, f32 at, FColor b, f32 bt){
|
||||
ARGB_Color a_argb = fcolor_resolve_to_argb(app, a);
|
||||
ARGB_Color b_argb = fcolor_resolve_to_argb(app, b);
|
||||
return(fcolor_argb(argb_color_blend(a_argb, at, b_argb, bt)));
|
||||
}
|
||||
function FColor
|
||||
fcolor_blend(Application_Links *app, FColor a, f32 t, FColor b){
|
||||
return(fcolor_blend(app, a, 1.f - t, b, t));
|
||||
}
|
||||
|
||||
function FColor
|
||||
fcolor_zero(void){
|
||||
FColor result = {};
|
||||
return(result);
|
||||
}
|
||||
|
||||
static void
|
||||
fancy_string_list_push(Fancy_String_List *list, Fancy_String *string){
|
||||
list->last = (list->last ? list->last->next : list->first) = string;
|
||||
function b32
|
||||
fcolor_is_valid(FColor color){
|
||||
return(color.argb != 0);
|
||||
}
|
||||
|
||||
static Fancy_String *
|
||||
push_fancy_string(Arena *arena, Fancy_String_List *list, Fancy_Color fore, Fancy_Color back, String_Const_u8 value){
|
||||
////////////////////////////////
|
||||
|
||||
function void
|
||||
push_fancy_string(Fancy_Line *line, Fancy_String *string){
|
||||
sll_queue_push(line->first, line->last, string);
|
||||
}
|
||||
|
||||
function void
|
||||
push_fancy_line(Fancy_Block *block, Fancy_Line *line){
|
||||
sll_queue_push(block->first, block->last, line);
|
||||
block->line_count += 1;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, Face_ID face, FColor fore,
|
||||
f32 pre_margin, f32 post_margin, String_Const_u8 value){
|
||||
Fancy_String *result = push_array_zero(arena, Fancy_String, 1);
|
||||
result->value = push_string_copy(arena, value);
|
||||
result->value = value;
|
||||
result->face = face;
|
||||
result->fore = fore;
|
||||
result->back = back;
|
||||
if (list != 0){
|
||||
fancy_string_list_push(list, result);
|
||||
result->pre_margin = pre_margin;
|
||||
result->post_margin = post_margin;
|
||||
if (line != 0){
|
||||
push_fancy_string(line, result);
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_String *
|
||||
push_fancy_string(Arena *arena, Fancy_Color fore, Fancy_Color back, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, 0, fore, back, value));
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, Face_ID face, FColor fore,
|
||||
String_Const_u8 value){
|
||||
return(push_fancy_string(arena, line, face, fore, 0, 0, value));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, Face_ID face,
|
||||
f32 pre_margin, f32 post_margin, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, line, face, fcolor_zero(),
|
||||
pre_margin, post_margin, value));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, FColor fore,
|
||||
f32 pre_margin, f32 post_margin, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, line, 0, fore, pre_margin, post_margin, value));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, Face_ID face, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, line, face, fcolor_zero(), 0, 0, value));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, FColor color, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, line, 0, color, 0, 0, value));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, f32 pre_margn, f32 post_margin,
|
||||
String_Const_u8 value){
|
||||
return(push_fancy_string(arena, line, 0, fcolor_zero(), pre_margn, post_margin,
|
||||
value));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_string(Arena *arena, Fancy_Line *line, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, line, 0, fcolor_zero(), 0, 0, value));
|
||||
}
|
||||
|
||||
static Fancy_String *
|
||||
push_fancy_string(Arena *arena, Fancy_String_List *list, Fancy_Color fore, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, list, fore, fancy_pass_through(), value));
|
||||
////////////////////////////////
|
||||
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line, Face_ID face, FColor fore,
|
||||
f32 pre_margin, f32 post_margin,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_string(arena, line, face, fore, pre_margin, post_margin,
|
||||
push_u8_stringfv(arena, format, args)));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line, Face_ID face, FColor fore,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_stringfv(arena, line, face, fore, 0, 0, format, args));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line, Face_ID face,
|
||||
f32 pre_margin, f32 post_margin,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_stringfv(arena, line, face, fcolor_zero(),
|
||||
pre_margin, post_margin, format, args));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line, FColor fore,
|
||||
f32 pre_margin, f32 post_margin,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_stringfv(arena, line, 0, fore, pre_margin, post_margin,
|
||||
format, args));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line, Face_ID face,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_stringfv(arena, line, face, fcolor_zero(), 0, 0,
|
||||
format, args));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line, FColor color,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_stringfv(arena, line, 0, color, 0, 0, format, args));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line, f32 pre_margn, f32 post_margin,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_stringfv(arena, line, 0, fcolor_zero(), pre_margn, post_margin,
|
||||
format, args));
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_Line *line,
|
||||
char *format, va_list args){
|
||||
return(push_fancy_stringfv(arena, line, 0, fcolor_zero(), 0, 0, format, args));
|
||||
}
|
||||
|
||||
static Fancy_String *
|
||||
push_fancy_string(Arena *arena, Fancy_Color fore, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, 0, fore, fancy_pass_through(), value));
|
||||
#define StringFBegin() va_list args; va_start(args, format)
|
||||
#define StringFPass(N) Fancy_String *result = N
|
||||
#define StringFEnd() va_end(args); return(result)
|
||||
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line, Face_ID face, FColor fore,
|
||||
f32 pre_margin, f32 post_margin,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_string(arena, line, face, fore, pre_margin, post_margin,
|
||||
push_u8_stringfv(arena, format, args)));
|
||||
StringFEnd();
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line, Face_ID face, FColor fore,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_stringfv(arena, line, face, fore, 0, 0, format, args));
|
||||
StringFEnd();
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line, Face_ID face,
|
||||
f32 pre_margin, f32 post_margin,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_stringfv(arena, line, face, fcolor_zero(),
|
||||
pre_margin, post_margin, format, args));
|
||||
StringFEnd();
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line, FColor fore,
|
||||
f32 pre_margin, f32 post_margin,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_stringfv(arena, line, 0, fore, pre_margin, post_margin,
|
||||
format, args));
|
||||
StringFEnd();
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line, Face_ID face,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_stringfv(arena, line, face, fcolor_zero(), 0, 0,
|
||||
format, args));
|
||||
StringFEnd();
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line, FColor color,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_stringfv(arena, line, 0, color, 0, 0, format, args));
|
||||
StringFEnd();
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line, f32 pre_margn, f32 post_margin,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_stringfv(arena, line, 0, fcolor_zero(),
|
||||
pre_margn, post_margin, format, args));
|
||||
StringFEnd();
|
||||
}
|
||||
function Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Line *line,
|
||||
char *format, ...){
|
||||
StringFBegin();
|
||||
StringFPass(push_fancy_stringfv(arena, line, 0, fcolor_zero(), 0, 0, format, args));
|
||||
StringFEnd();
|
||||
}
|
||||
|
||||
static Fancy_String *
|
||||
push_fancy_string(Arena *arena, Fancy_String_List *list, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, list, fancy_pass_through(), fancy_pass_through(), value));
|
||||
}
|
||||
////////////////////////////////
|
||||
|
||||
static Fancy_String *
|
||||
push_fancy_string(Arena *arena, String_Const_u8 value){
|
||||
return(push_fancy_string(arena, 0, fancy_pass_through(), fancy_pass_through(), value));
|
||||
}
|
||||
|
||||
static Fancy_String*
|
||||
push_fancy_stringfv(Arena *arena, Fancy_String_List *list, Fancy_Color fore, Fancy_Color back, char *format, va_list args){
|
||||
String_Const_u8 str = push_u8_stringfv(arena, format, args);
|
||||
Fancy_String *result = 0;
|
||||
if (str.size > 0){
|
||||
result = push_fancy_string(arena, list, fore, back, str);
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block, Face_ID face, FColor fore,
|
||||
String_Const_u8 text){
|
||||
Fancy_Line *line = push_array_zero(arena, Fancy_Line, 1);
|
||||
line->face = face;
|
||||
line->fore = fore;
|
||||
if (text.size != 0){
|
||||
push_fancy_string(arena, line, text);
|
||||
}
|
||||
return(result);
|
||||
if (block != 0){
|
||||
push_fancy_line(block, line);
|
||||
}
|
||||
return(line);
|
||||
}
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block, Face_ID face, FColor fcolor){
|
||||
return(push_fancy_line(arena, block, face, fcolor, SCu8()));
|
||||
}
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block, Face_ID face, String_Const_u8 val){
|
||||
return(push_fancy_line(arena, block, face, fcolor_zero(), val));
|
||||
}
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block, FColor color, String_Const_u8 val){
|
||||
return(push_fancy_line(arena, block, 0, color, val));
|
||||
}
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block, Face_ID face){
|
||||
return(push_fancy_line(arena, block, face, fcolor_zero(), SCu8()));
|
||||
}
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block, FColor color){
|
||||
return(push_fancy_line(arena, block, 0, color, SCu8()));
|
||||
}
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block, String_Const_u8 val){
|
||||
return(push_fancy_line(arena, block, 0, fcolor_zero(), val));
|
||||
}
|
||||
function Fancy_Line*
|
||||
push_fancy_line(Arena *arena, Fancy_Block *block){
|
||||
return(push_fancy_line(arena, block, 0, fcolor_zero(), SCu8()));
|
||||
}
|
||||
|
||||
static Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_String_List *list, Fancy_Color fore, Fancy_Color back, char *format, ...){
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
Fancy_String *result = push_fancy_stringfv(arena, list, fore, back, format, args);
|
||||
va_end(args);
|
||||
return(result);
|
||||
}
|
||||
////////////////////////////////
|
||||
|
||||
static Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_String_List *list, Fancy_Color fore, char *format, ...){
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
Fancy_String *result = push_fancy_stringfv(arena, list, fore, fancy_pass_through(), format, args);
|
||||
va_end(args);
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_String_List *list, char *format, ...){
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
Fancy_String *result = push_fancy_stringfv(arena, list, fancy_pass_through(), fancy_pass_through(), format, args);
|
||||
va_end(args);
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Color fore, Fancy_Color back, char *format, ...){
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
Fancy_String *result = push_fancy_stringfv(arena, 0, fore, back, format, args);
|
||||
va_end(args);
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, Fancy_Color fore, char *format, ...){
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
Fancy_String *result = push_fancy_stringfv(arena, 0, fore, fancy_pass_through(), format, args);
|
||||
va_end(args);
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_String*
|
||||
push_fancy_stringf(Arena *arena, char *format, ...){
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
Fancy_String *result = push_fancy_stringfv(arena, 0, fancy_pass_through(), fancy_pass_through(), format, args);
|
||||
va_end(args);
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Fancy_String_List
|
||||
fancy_string_list_single(Fancy_String *fancy_string){
|
||||
Fancy_String_List list = {};
|
||||
list.first = fancy_string;
|
||||
list.last = fancy_string;
|
||||
return(list);
|
||||
}
|
||||
|
||||
static Vec2_f32
|
||||
draw_fancy_string(Application_Links *app, Face_ID font_id, Fancy_String *string,
|
||||
Vec2_f32 P, int_color fore, int_color back, u32 flags, Vec2_f32 dP){
|
||||
function f32
|
||||
get_fancy_string_width__inner(Application_Links *app, Face_ID face,
|
||||
Fancy_String *string){
|
||||
f32 result = 0.f;
|
||||
for (;string != 0;
|
||||
string = string->next){
|
||||
Face_ID use_font_id = (string->font_id) ? string->font_id : font_id;
|
||||
int_color use_fore = is_valid(string->fore) ? int_color_from(app, string->fore) : fore;
|
||||
|
||||
f32 adv = get_string_advance(app, use_font_id, string->value);
|
||||
|
||||
// TODO(casey): need to fill the background here, but I don't know the line
|
||||
// height, and I can't actually render filled shapes, so, like, I can't
|
||||
// properly do dP :(
|
||||
|
||||
Face_Metrics metrics = get_face_metrics(app, font_id);
|
||||
|
||||
P += (string->pre_margin*metrics.normal_advance)*dP;
|
||||
draw_string_oriented(app, use_font_id, string->value, P, use_fore, flags, dP);
|
||||
P += (adv + string->post_margin*metrics.normal_advance)*dP;
|
||||
Face_ID use_face = face;
|
||||
if (string->face != 0){
|
||||
use_face = string->face;
|
||||
}
|
||||
if (use_face != 0){
|
||||
result += get_string_advance(app, use_face, string->value);
|
||||
Face_Metrics metrics = get_face_metrics(app, use_face);
|
||||
f32 normal_advance = metrics.normal_advance;
|
||||
result += (string->pre_margin + string->post_margin)*normal_advance;
|
||||
}
|
||||
}
|
||||
return(P);
|
||||
return(result);
|
||||
}
|
||||
|
||||
static Vec2_f32
|
||||
draw_fancy_string(Application_Links *app, Face_ID font_id, Fancy_String *string,
|
||||
Vec2_f32 P, int_color fore, int_color back){
|
||||
return(draw_fancy_string(app, font_id, string, P, fore, back, 0, V2(1.f, 0.f)));
|
||||
}
|
||||
|
||||
static f32
|
||||
get_fancy_string_advance(Application_Links *app, Face_ID font_id, Fancy_String *string){
|
||||
f32 advance = 0.f;
|
||||
function f32
|
||||
get_fancy_string_height__inner(Application_Links *app, Face_ID face,
|
||||
Fancy_String *string){
|
||||
f32 result = 0.f;
|
||||
if (face != 0){
|
||||
Face_Metrics metrics = get_face_metrics(app, face);
|
||||
result = metrics.line_height;
|
||||
}
|
||||
for (;string != 0;
|
||||
string = string->next){
|
||||
Face_ID use_font_id = (string->font_id) ? string->font_id : font_id;
|
||||
f32 adv = get_string_advance(app, use_font_id, string->value);
|
||||
Face_Metrics metrics = get_face_metrics(app, font_id);
|
||||
advance += (string->pre_margin + string->post_margin)*metrics.normal_advance + adv;
|
||||
if (string->face != 0){
|
||||
Face_ID use_face = string->face;
|
||||
Face_Metrics metrics = get_face_metrics(app, use_face);
|
||||
result = max(result, metrics.line_height);
|
||||
}
|
||||
}
|
||||
return(advance);
|
||||
return(result);
|
||||
}
|
||||
|
||||
static void
|
||||
draw_rectangle_fancy(Application_Links *app, Rect_f32 rect, Fancy_Color fancy_color){
|
||||
int_color color = int_color_from(app, fancy_color);
|
||||
draw_rectangle(app, rect, 0.f, color);
|
||||
function Vec2_f32
|
||||
draw_fancy_string__inner(Application_Links *app, Face_ID face, FColor fore,
|
||||
Fancy_String *string, Vec2_f32 p, u32 flags, Vec2_f32 delta){
|
||||
for (;string != 0;
|
||||
string = string->next){
|
||||
Face_ID use_face = face;
|
||||
if (string->face != 0){
|
||||
use_face = string->face;
|
||||
}
|
||||
FColor use_fore = fore;
|
||||
if (fcolor_is_valid(string->fore)){
|
||||
use_fore = string->fore;
|
||||
}
|
||||
if (use_face != 0){
|
||||
Face_Metrics metrics = get_face_metrics(app, use_face);
|
||||
if (fcolor_is_valid(use_fore)){
|
||||
Vec2_f32 margin_delta = delta*metrics.normal_advance;
|
||||
p += margin_delta*string->pre_margin;
|
||||
p = draw_string_oriented(app, use_face, use_fore,
|
||||
string->value, p, flags, delta);
|
||||
p += margin_delta*string->post_margin;
|
||||
}
|
||||
else{
|
||||
f32 adv =
|
||||
(string->pre_margin + string->post_margin)*metrics.normal_advance;
|
||||
adv += get_string_advance(app, use_face, string->value);
|
||||
p += adv*delta;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(p);
|
||||
}
|
||||
|
||||
function f32
|
||||
get_fancy_string_width(Application_Links *app, Face_ID face,
|
||||
Fancy_String *string){
|
||||
Fancy_String *next = string->next;
|
||||
string->next = 0;
|
||||
f32 result = get_fancy_string_width__inner(app, face, string);
|
||||
string->next = next;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function f32
|
||||
get_fancy_string_height(Application_Links *app, Face_ID face,
|
||||
Fancy_String *string){
|
||||
Fancy_String *next = string->next;
|
||||
string->next = 0;
|
||||
f32 result = get_fancy_string_height__inner(app, face, string);
|
||||
string->next = next;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function Vec2_f32
|
||||
draw_fancy_string(Application_Links *app, Face_ID face, FColor fore,
|
||||
Fancy_String *string, Vec2_f32 p, u32 flags, Vec2_f32 delta){
|
||||
Fancy_String *next = string->next;
|
||||
string->next = 0;
|
||||
Vec2_f32 result = draw_fancy_string__inner(app, face, fore,
|
||||
string, p, flags, delta);
|
||||
string->next = next;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function f32
|
||||
get_fancy_line_width(Application_Links *app, Face_ID face, Fancy_Line *line){
|
||||
if (line->face != 0){
|
||||
face = line->face;
|
||||
}
|
||||
return(get_fancy_string_width__inner(app, face, line->first));
|
||||
}
|
||||
|
||||
function f32
|
||||
get_fancy_line_height(Application_Links *app, Face_ID face, Fancy_Line *line){
|
||||
if (line->face != 0){
|
||||
face = line->face;
|
||||
}
|
||||
return(get_fancy_string_height__inner(app, face, line->first));
|
||||
}
|
||||
|
||||
function Vec2_f32
|
||||
draw_fancy_line(Application_Links *app, Face_ID face, FColor fore,
|
||||
Fancy_Line *line, Vec2_f32 p, u32 flags, Vec2_f32 delta){
|
||||
if (line->face != 0){
|
||||
face = line->face;
|
||||
}
|
||||
if (fcolor_is_valid(line->fore)){
|
||||
fore = line->fore;
|
||||
}
|
||||
return(draw_fancy_string__inner(app, face, fore,
|
||||
line->first, p, flags, delta));
|
||||
}
|
||||
|
||||
function f32
|
||||
get_fancy_block_width(Application_Links *app, Face_ID face, Fancy_Block *block){
|
||||
f32 width = 0.f;
|
||||
for (Fancy_Line *node = block->first;
|
||||
node != 0;
|
||||
node = node->next){
|
||||
f32 w = get_fancy_line_width(app, face, node);
|
||||
width = max(width, w);
|
||||
}
|
||||
return(width);
|
||||
}
|
||||
|
||||
function f32
|
||||
get_fancy_block_height(Application_Links *app, Face_ID face, Fancy_Block *block){
|
||||
f32 height = 0.f;
|
||||
for (Fancy_Line *node = block->first;
|
||||
node != 0;
|
||||
node = node->next){
|
||||
height += get_fancy_line_height(app, face, node);
|
||||
}
|
||||
return(height);
|
||||
}
|
||||
|
||||
function Vec2_f32
|
||||
get_fancy_block_dim(Application_Links *app, Face_ID face, Fancy_Block *block){
|
||||
Vec2_f32 result = {};
|
||||
result.x = get_fancy_block_width(app, face, block);
|
||||
result.y = get_fancy_block_height(app, face, block);
|
||||
return(result);
|
||||
}
|
||||
|
||||
function void
|
||||
draw_fancy_block(Application_Links *app, Face_ID face, FColor fore,
|
||||
Fancy_Block *block, Vec2_f32 p, u32 flags, Vec2_f32 delta){
|
||||
Face_Metrics metrics = get_face_metrics(app, face);
|
||||
for (Fancy_Line *node = block->first;
|
||||
node != 0;
|
||||
node = node->next){
|
||||
draw_fancy_line(app, face, fore, node, p, flags, delta);
|
||||
p.y += get_fancy_line_height(app, face, node);
|
||||
}
|
||||
}
|
||||
|
||||
function Vec2_f32
|
||||
draw_fancy_string(Application_Links *app, Face_ID face, FColor fore,
|
||||
Fancy_String *string, Vec2_f32 p){
|
||||
return(draw_fancy_string(app, face, fore, string, p, 0, V2f32(1.f, 0.f)));
|
||||
}
|
||||
|
||||
function Vec2_f32
|
||||
draw_fancy_line(Application_Links *app, Face_ID face, FColor fore,
|
||||
Fancy_Line *line, Vec2_f32 p){
|
||||
return(draw_fancy_line(app, face, fore, line, p, 0, V2f32(1.f, 0.f)));
|
||||
}
|
||||
|
||||
function void
|
||||
draw_fancy_block(Application_Links *app, Face_ID face, FColor fore,
|
||||
Fancy_Block *block, Vec2_f32 p){
|
||||
draw_fancy_block(app, face, fore, block, p, 0, V2f32(1.f, 0.f));
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
// TODO(allen): beta: color palette
|
||||
global Fancy_Color white = fancy_rgba(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
global Fancy_Color light_gray = fancy_rgba(0.7f, 0.7f, 0.7f, 1.0f);
|
||||
global Fancy_Color gray = fancy_rgba(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
global Fancy_Color dark_gray = fancy_rgba(0.3f, 0.3f, 0.3f, 1.0f);
|
||||
global Fancy_Color black = fancy_rgba(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
global Fancy_Color pink = fancy_rgba(1.0f, 0.0f, 1.0f, 1.0f);
|
||||
global Fancy_Color green = fancy_rgba(0.0f, 1.0f, 0.0f, 1.0f);
|
||||
global FColor f_white = fcolor_argb(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
global FColor f_light_gray = fcolor_argb(0.7f, 0.7f, 0.7f, 1.0f);
|
||||
global FColor f_gray = fcolor_argb(0.5f, 0.5f, 0.5f, 1.0f);
|
||||
global FColor f_dark_gray = fcolor_argb(0.3f, 0.3f, 0.3f, 1.0f);
|
||||
global FColor f_black = fcolor_argb(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
global FColor f_pink = fcolor_argb(1.0f, 0.0f, 1.0f, 1.0f);
|
||||
global FColor f_green = fcolor_argb(0.0f, 1.0f, 0.0f, 1.0f);
|
||||
|
||||
// BOTTOM
|
||||
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
/*
|
||||
* Fancy string - immediate mode renderer for colored strings
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
#if !defined(FCODER_FANCY_H)
|
||||
#define FCODER_FANCY_H
|
||||
|
||||
struct Fancy_Color{
|
||||
union{
|
||||
struct{
|
||||
id_color index_a;
|
||||
id_color index_b;
|
||||
};
|
||||
u32 rgba;
|
||||
};
|
||||
|
||||
union{
|
||||
struct{
|
||||
u8 table_a;
|
||||
u8 table_b;
|
||||
u8 c_a;
|
||||
u8 c_b;
|
||||
};
|
||||
u32 code;
|
||||
};
|
||||
};
|
||||
|
||||
struct Fancy_String{
|
||||
Fancy_String *next;
|
||||
String_Const_u8 value;
|
||||
|
||||
Face_ID font_id;
|
||||
Fancy_Color fore;
|
||||
Fancy_Color back;
|
||||
|
||||
f32 pre_margin;
|
||||
f32 post_margin;
|
||||
};
|
||||
|
||||
struct Fancy_String_List{
|
||||
Fancy_String *first;
|
||||
Fancy_String *last;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// BOTTOM
|
||||
|
|
@ -186,15 +186,14 @@ lister_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
}
|
||||
|
||||
{
|
||||
Fancy_String_List text_field = {};
|
||||
push_fancy_string(scratch, &text_field, fancy_id(Stag_Pop1),
|
||||
Fancy_Line text_field = {};
|
||||
push_fancy_string(scratch, &text_field, fcolor_id(Stag_Pop1),
|
||||
lister->query.string);
|
||||
push_fancy_stringf(scratch, &text_field, fancy_id(Stag_Pop1), " ");
|
||||
push_fancy_string(scratch, &text_field, fancy_id(Stag_Default),
|
||||
push_fancy_stringf(scratch, &text_field, " ");
|
||||
push_fancy_string(scratch, &text_field, fcolor_id(Stag_Default),
|
||||
lister->text_field.string);
|
||||
draw_fancy_string(app, face_id, text_field.first,
|
||||
V2f32(text_field_rect.x0 + 3.f, text_field_rect.y0),
|
||||
Stag_Default, Stag_Back, 0, V2f32(1.f, 0.f));
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &text_field,
|
||||
V2f32(text_field_rect.x0 + 3.f, text_field_rect.y0));
|
||||
}
|
||||
|
||||
Range_f32 x = rect_range_x(list_rect);
|
||||
|
@ -272,15 +271,15 @@ lister_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
}
|
||||
|
||||
draw_rectangle(app, item_rect, 6.f, get_margin_color(highlight));
|
||||
draw_rectangle(app, item_inner, 6.f, Stag_Back);
|
||||
draw_rectangle(app, item_inner, 6.f, fcolor_id(Stag_Back));
|
||||
|
||||
Fancy_String_List line = {};
|
||||
push_fancy_string(scratch, &line, fancy_id(Stag_Default), node->string);
|
||||
push_fancy_stringf(scratch, &line, fancy_id(Stag_Default), " ");
|
||||
push_fancy_string(scratch, &line, fancy_id(Stag_Pop2), node->status);
|
||||
Fancy_Line line = {};
|
||||
push_fancy_string(scratch, &line, fcolor_id(Stag_Default), node->string);
|
||||
push_fancy_stringf(scratch, &line, " ");
|
||||
push_fancy_string(scratch, &line, fcolor_id(Stag_Pop2), node->status);
|
||||
|
||||
Vec2_f32 p = V2f32(item_inner.x0 + 3.f, item_inner.y0 + (block_height - line_height)*0.5f);
|
||||
draw_fancy_string(app, face_id, line.first, p, Stag_Default, 0, 0, V2(1.f, 0.f));
|
||||
Vec2_f32 p = item_inner.p0 + V2f32(3.f, (block_height - line_height)*0.5f);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &line, p);
|
||||
}
|
||||
|
||||
draw_set_clip(app, prev_clip);
|
||||
|
|
|
@ -646,19 +646,20 @@ log_parse_fill(Application_Links *app, Buffer_ID buffer){
|
|||
}
|
||||
|
||||
internal void
|
||||
log_graph_render__tag(Arena *arena, Fancy_String_List *line, Log_Parse *log, Log_Tag *tag){
|
||||
log_graph_render__tag(Arena *arena, Fancy_Line *line,
|
||||
Log_Parse *log, Log_Tag *tag){
|
||||
String_Const_u8 tag_name = log_parse__get_string(log, tag->name);
|
||||
push_fancy_stringf(arena, line, white, "[");
|
||||
push_fancy_string(arena, line, green, tag_name);
|
||||
push_fancy_stringf(arena, line, white, "=");
|
||||
push_fancy_stringf(arena, line, f_white, "[");
|
||||
push_fancy_string(arena, line, f_green, tag_name);
|
||||
push_fancy_stringf(arena, line, f_white, "=");
|
||||
if (tag->value.kind == LogTagKind_Integer){
|
||||
push_fancy_stringf(arena, line, pink, "0x%llx", tag->value.value_s);
|
||||
push_fancy_stringf(arena, line, f_pink, "0x%llx", tag->value.value_s);
|
||||
}
|
||||
else if (tag->value.kind == LogTagKind_String){
|
||||
String_Const_u8 value = log_parse__get_string(log, tag->value.value);
|
||||
push_fancy_string(arena, line, pink, value);
|
||||
push_fancy_string(arena, line, f_pink, value);
|
||||
}
|
||||
push_fancy_stringf(arena, line, white, "]");
|
||||
push_fancy_stringf(arena, line, f_white, "]");
|
||||
}
|
||||
|
||||
internal void
|
||||
|
@ -671,8 +672,9 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
Rect_f32 view_rect = view_get_screen_rect(app, view);
|
||||
Rect_f32 inner = rect_inner(view_rect, 3);
|
||||
draw_rectangle(app, view_rect, 0.f,
|
||||
get_margin_color(is_active_view?UIHighlight_Active:UIHighlight_None));
|
||||
draw_rectangle(app, inner, 0.f, Stag_Back);
|
||||
get_margin_color(is_active_view?
|
||||
UIHighlight_Active:UIHighlight_None));
|
||||
draw_rectangle(app, inner, 0.f, fcolor_id(Stag_Back));
|
||||
|
||||
Rect_f32 prev_clip = draw_set_clip(app, inner);
|
||||
////////////////////////////////
|
||||
|
@ -710,23 +712,23 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
|
||||
Rect_f32 box_inner = rect_inner(box, 3.f);
|
||||
|
||||
Fancy_Color margin_color = dark_gray;
|
||||
FColor margin_color = f_dark_gray;
|
||||
if (!in_details_region && hover_event == 0 && rect_contains_point(box, m_p)){
|
||||
margin_color = gray;
|
||||
margin_color = f_gray;
|
||||
hover_event = box_node->event;
|
||||
}
|
||||
if (box_node->event == log_graph.selected_event){
|
||||
margin_color = light_gray;
|
||||
margin_color = f_light_gray;
|
||||
}
|
||||
|
||||
draw_rectangle_fancy(app, box , margin_color);
|
||||
draw_rectangle_fancy(app, box_inner, black );
|
||||
draw_rectangle(app, box , 0.f, margin_color);
|
||||
draw_rectangle(app, box_inner, 0.f, f_black );
|
||||
|
||||
Log_Event *event = box_node->event;
|
||||
|
||||
String_Const_u8 event_name = log_parse__get_string(&log_parse, event->event_name);
|
||||
Fancy_String_List line = {};
|
||||
push_fancy_string(scratch, &line, white, event_name);
|
||||
Fancy_Line line = {};
|
||||
push_fancy_string(scratch, &line, f_white, event_name);
|
||||
|
||||
for (Log_Filter *filter = log_preview_set.first;
|
||||
filter != 0;
|
||||
|
@ -745,7 +747,7 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
|
||||
Vec2_f32 p = V2f32(box_inner.x0 + 3.f,
|
||||
(f32_round32((box_inner.y0 + box_inner.y1 - line_height)*0.5f)));
|
||||
draw_fancy_string(app, log_graph.face_id, line.first, p, 0, 0, 0, V2f32(1.f, 0.f));
|
||||
draw_fancy_line(app, log_graph.face_id, fcolor_zero(), &line, p);
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -757,8 +759,8 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
Log_Graph_List_Tab current_tab = log_graph.tab;
|
||||
Log_Filter_Set *viewing_filter_set = log_filter_set_from_tab(current_tab);
|
||||
|
||||
draw_rectangle_fancy(app, box , dark_gray);
|
||||
draw_rectangle_fancy(app, box_inner, black );
|
||||
draw_rectangle(app, box , 0.f, f_dark_gray);
|
||||
draw_rectangle(app, box_inner, 0.f, f_black );
|
||||
|
||||
{
|
||||
f32 y_cursor = box_inner.y0 + 3.f;
|
||||
|
@ -767,8 +769,8 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
{
|
||||
f32 x_cursor = box_inner.x0 + 3.f;
|
||||
for (i32 i = LogTab_ERROR + 1; i < LogTab_COUNT; i += 1){
|
||||
Fancy_Color color = (i == current_tab)?white:gray;
|
||||
Fancy_String_List line = {};
|
||||
FColor color = (i == current_tab)?f_white:f_gray;
|
||||
Fancy_Line line = {};
|
||||
switch (i){
|
||||
case LogTab_Filters:
|
||||
{
|
||||
|
@ -781,13 +783,15 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
}
|
||||
|
||||
Vec2_f32 p = V2f32(x_cursor, y_cursor);
|
||||
f32 advance = get_fancy_string_advance(app, log_graph.face_id, line.first);
|
||||
draw_fancy_string(app, log_graph.face_id, line.first, p,
|
||||
Stag_Default, Stag_Back, 0, V2f32(1.f, 0.f));
|
||||
x_cursor += advance + metrics.normal_advance;
|
||||
f32 width = get_fancy_line_width(app, log_graph.face_id,
|
||||
&line);
|
||||
draw_fancy_line(app, log_graph.face_id, fcolor_zero(),
|
||||
&line, p);
|
||||
x_cursor += width + metrics.normal_advance;
|
||||
|
||||
if (log_graph.has_unused_click){
|
||||
Rect_f32 click_rect = Rf32(p.x, p.y, p.x + advance, p.y + line_height);
|
||||
Rect_f32 click_rect = Rf32_xy_wh(p.x, p.y,
|
||||
width, line_height);
|
||||
if (rect_contains_point(click_rect, log_graph.unused_click)){
|
||||
log_graph.has_unused_click = false;
|
||||
log_graph.tab = i;
|
||||
|
@ -805,36 +809,38 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
y_cursor += line_height;
|
||||
if (y_cursor + line_height > box_inner.y1) goto finish_list_display;
|
||||
|
||||
Fancy_String_List line = {};
|
||||
Fancy_Line line = {};
|
||||
|
||||
if (filter->kind == LogFilter_TagValue){
|
||||
push_fancy_stringf(scratch, &line, white, "val [");
|
||||
push_fancy_stringf(scratch, &line, f_white, "val [");
|
||||
String_Const_u8 tag_name = log_parse__get_string(&log_parse, filter->tag_name_code);
|
||||
push_fancy_stringf(scratch, &line, green, "%.*s", string_expand(tag_name));
|
||||
push_fancy_stringf(scratch, &line, white, "=");
|
||||
push_fancy_stringf(scratch, &line, f_green, "%.*s", string_expand(tag_name));
|
||||
push_fancy_stringf(scratch, &line, f_white, "=");
|
||||
if (filter->tag_value.kind == LogTagKind_Integer){
|
||||
push_fancy_stringf(scratch, &line, pink, "0x%llx", filter->tag_value.value_s);
|
||||
push_fancy_stringf(scratch, &line, f_pink, "0x%llx", filter->tag_value.value_s);
|
||||
}
|
||||
else if (filter->tag_value.kind == LogTagKind_String){
|
||||
String_Const_u8 value = log_parse__get_string(&log_parse, filter->tag_value.value);
|
||||
push_fancy_stringf(scratch, &line, pink, "%.*s", string_expand(value));
|
||||
push_fancy_stringf(scratch, &line, f_pink, "%.*s", string_expand(value));
|
||||
}
|
||||
push_fancy_stringf(scratch, &line, white, "]");
|
||||
push_fancy_stringf(scratch, &line, f_white, "]");
|
||||
}
|
||||
else{
|
||||
push_fancy_stringf(scratch, &line, white, "name [");
|
||||
push_fancy_stringf(scratch, &line, f_white, "name [");
|
||||
String_Const_u8 tag_name = log_parse__get_string(&log_parse, filter->tag_name_code);
|
||||
push_fancy_stringf(scratch, &line, green, "%.*s", string_expand(tag_name));
|
||||
push_fancy_stringf(scratch, &line, white, "]");
|
||||
push_fancy_stringf(scratch, &line, f_green, "%.*s", string_expand(tag_name));
|
||||
push_fancy_stringf(scratch, &line, f_white, "]");
|
||||
}
|
||||
|
||||
Vec2_f32 p = V2f32(box_inner.x0 + 3.f, y_cursor);
|
||||
f32 advance = get_fancy_string_advance(app, log_graph.face_id, line.first);
|
||||
draw_fancy_string(app, log_graph.face_id, line.first, p, Stag_Default, Stag_Back,
|
||||
0, V2f32(1.f, 0.f));
|
||||
f32 width = get_fancy_line_width(app, log_graph.face_id,
|
||||
&line);
|
||||
draw_fancy_line(app, log_graph.face_id, fcolor_zero(),
|
||||
&line, p);
|
||||
|
||||
if (log_graph.has_unused_click){
|
||||
Rect_f32 click_rect = Rf32(p.x, p.y, p.x + advance, p.y + line_height);
|
||||
Rect_f32 click_rect = Rf32_xy_wh(p.x, p.y,
|
||||
width, line_height);
|
||||
if (rect_contains_point(click_rect, log_graph.unused_click)){
|
||||
log_graph.has_unused_click = false;
|
||||
log_filter_set__free_filter(viewing_filter_set, filter);
|
||||
|
@ -852,17 +858,16 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
if (y_cursor + line_height > box_inner.y1) goto finish_event_display;
|
||||
|
||||
{
|
||||
Fancy_String_List line = {};
|
||||
Fancy_Line line = {};
|
||||
String_Const_u8 file_name = log_parse__get_string(&log_parse, view_event->src_file_name);
|
||||
push_fancy_stringf(scratch, &line, green, "[%d] ", view_event->event_number);
|
||||
push_fancy_stringf(scratch, &line, white, "%.*s:", string_expand(file_name));
|
||||
push_fancy_stringf(scratch, &line, pink, "%llu", view_event->line_number);
|
||||
push_fancy_stringf(scratch, &line, f_green, "[%d] ", view_event->event_number);
|
||||
push_fancy_stringf(scratch, &line, f_white, "%.*s:", string_expand(file_name));
|
||||
push_fancy_stringf(scratch, &line, f_pink, "%llu", view_event->line_number);
|
||||
|
||||
Vec2_f32 right_p = V2f32(box_inner.x1 - 3.f, y_cursor);
|
||||
f32 advance = get_fancy_string_advance(app, log_graph.face_id, line.first);
|
||||
Vec2 p = V2f32(right_p.x - advance, right_p.y);
|
||||
draw_fancy_string(app, log_graph.face_id, line.first, p, Stag_Default, Stag_Back,
|
||||
0, V2(1.f, 0.f));
|
||||
f32 width = get_fancy_line_width(app, log_graph.face_id, &line);
|
||||
Vec2 p = V2f32(right_p.x - width, right_p.y);
|
||||
draw_fancy_line(app, log_graph.face_id, fcolor_zero(), &line, p);
|
||||
}
|
||||
|
||||
for (Log_Tag *tag = view_event->first_tag;
|
||||
|
@ -872,14 +877,14 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
if (y_cursor + line_height > box_inner.y1) goto finish_event_display;
|
||||
|
||||
{
|
||||
Fancy_String_List line = {};
|
||||
Fancy_Line line = {};
|
||||
log_graph_render__tag(scratch, &line, &log_parse, tag);
|
||||
|
||||
Vec2_f32 right_p = V2f32(box_inner.x1 - 3.f, y_cursor);
|
||||
f32 advance = get_fancy_string_advance(app, log_graph.face_id, line.first);
|
||||
Vec2 p = V2f32(right_p.x - advance, right_p.y);
|
||||
draw_fancy_string(app, log_graph.face_id, line.first, p,
|
||||
Stag_Default, Stag_Back, 0, V2(1.f, 0.f));
|
||||
f32 width = get_fancy_line_width(app, log_graph.face_id, &line);
|
||||
Vec2 p = V2f32(right_p.x - width, right_p.y);
|
||||
draw_fancy_line(app, log_graph.face_id, fcolor_zero(),
|
||||
&line, p);
|
||||
|
||||
if (log_graph.has_unused_click){
|
||||
Rect_f32 click_rect = Rf32(p.x, p.y, right_p.x, p.y + line_height);
|
||||
|
|
|
@ -179,28 +179,25 @@ profile_draw_tab(Application_Links *app, Tab_State *state, Profile_Inspection *i
|
|||
|
||||
state->p.x += state->x_half_padding;
|
||||
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_string(scratch, &list, fancy_pass_through(), string);
|
||||
Fancy_String *fstring = push_fancy_string(scratch, 0, string);
|
||||
|
||||
b32 hover = false;
|
||||
f32 width = get_fancy_string_advance(app, state->face_id, list.first);
|
||||
f32 width = get_fancy_string_width(app, state->face_id, fstring);
|
||||
Rect_f32 box = Rf32(If32_size(state->p.x, width), state->tabs_y);
|
||||
if (rect_contains_point(box, state->m_p)){
|
||||
hover = true;
|
||||
insp->tab_id_hovered = tab_id;
|
||||
}
|
||||
|
||||
int_color text = Stag_Default;
|
||||
int_color back = 0;
|
||||
FColor text = fcolor_id(Stag_Default);
|
||||
if (insp->tab_id == tab_id){
|
||||
text = Stag_Pop2;
|
||||
text = fcolor_id(Stag_Pop2);
|
||||
}
|
||||
else if (hover){
|
||||
text = Stag_Pop1;
|
||||
text = fcolor_id(Stag_Pop1);
|
||||
}
|
||||
|
||||
Vec2_f32 np = draw_fancy_string(app, state->face_id, list.first, state->p,
|
||||
text, back);
|
||||
Vec2_f32 np = draw_fancy_string(app, state->face_id, text, fstring, state->p);
|
||||
state->p = np;
|
||||
state->p.x += state->x_half_padding;
|
||||
}
|
||||
|
@ -261,8 +258,9 @@ profile_draw_node(Application_Links *app, View_ID view, Face_ID face_id,
|
|||
f32 x_padding = normal_advance*1.5f;
|
||||
f32 x_half_padding = x_padding*0.5f;
|
||||
|
||||
int_color colors[] = {
|
||||
Stag_Back_Cycle_1, Stag_Back_Cycle_2, Stag_Back_Cycle_3, Stag_Back_Cycle_4,
|
||||
FColor colors[] = {
|
||||
fcolor_id(Stag_Back_Cycle_1), fcolor_id(Stag_Back_Cycle_2),
|
||||
fcolor_id(Stag_Back_Cycle_3), fcolor_id(Stag_Back_Cycle_4),
|
||||
};
|
||||
|
||||
Scratch_Block scratch(app);
|
||||
|
@ -274,22 +272,22 @@ profile_draw_node(Application_Links *app, View_ID view, Face_ID face_id,
|
|||
|
||||
String_Const_u8 thread_name = profile_node_thread_name(node);
|
||||
if (thread_name.size > 0){
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_string(scratch, &list, fancy_id(Stag_Pop1), thread_name);
|
||||
Fancy_String *fstr =
|
||||
push_fancy_string(scratch, 0, fcolor_id(Stag_Pop1), thread_name);
|
||||
Vec2_f32 p = V2f32(x_pos, y.min + 1.f);
|
||||
draw_fancy_string(app, face_id, list.first, p, 0, 0);
|
||||
f32 w = get_fancy_string_advance(app, face_id, list.first);
|
||||
draw_fancy_string(app, face_id, fcolor_zero(), fstr, p);
|
||||
f32 w = get_fancy_string_width(app, face_id, fstr);
|
||||
nav_bar_w = max(nav_bar_w, w);
|
||||
}
|
||||
y.min += line_height + 2.f;
|
||||
|
||||
String_Const_u8 name = profile_node_name(node);
|
||||
if (name.size > 0){
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_string(scratch, &list, fancy_id(Stag_Default), name);
|
||||
Fancy_String *fstr =
|
||||
push_fancy_string(scratch, 0, fcolor_id(Stag_Default), name);
|
||||
Vec2_f32 p = V2f32(x_pos, y.min + 1.f);
|
||||
draw_fancy_string(app, face_id, list.first, p, 0, 0);
|
||||
f32 w = get_fancy_string_advance(app, face_id, list.first);
|
||||
draw_fancy_string(app, face_id, fcolor_zero(), fstr, p);
|
||||
f32 w = get_fancy_string_width(app, face_id, fstr);
|
||||
nav_bar_w = max(nav_bar_w, w);
|
||||
}
|
||||
y.min += line_height + 2.f;
|
||||
|
@ -298,24 +296,22 @@ profile_draw_node(Application_Links *app, View_ID view, Face_ID face_id,
|
|||
|
||||
x_pos += nav_bar_w + x_half_padding;
|
||||
if (node->parent != 0){
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_string(scratch, &list, fancy_pass_through(),
|
||||
string_u8_litexpr("to parent"));
|
||||
|
||||
f32 w = get_fancy_string_advance(app, face_id, list.first) + x_padding;
|
||||
Fancy_String *fstr = push_fancy_string(scratch, 0, fcolor_zero(),
|
||||
string_u8_litexpr("to parent"));
|
||||
f32 w = get_fancy_string_width(app, face_id, fstr) + x_padding;
|
||||
Range_f32 btn_x = If32_size(x_pos, w);
|
||||
Rect_f32 box = Rf32(btn_x, nav_bar_y);
|
||||
|
||||
int_color color = Stag_Default;
|
||||
FColor color = fcolor_id(Stag_Default);
|
||||
if (rect_contains_point(box, m_p)){
|
||||
draw_rectangle(app, box, 0.f, Stag_Margin);
|
||||
color = Stag_Pop1;
|
||||
draw_rectangle(app, box, 0.f, fcolor_id(Stag_Margin));
|
||||
color = fcolor_id(Stag_Pop1);
|
||||
insp->hover_node = node->parent;
|
||||
}
|
||||
|
||||
Vec2_f32 p = V2f32(box.x0 + x_half_padding,
|
||||
(box.y0 + box.y1 - line_height)*0.5f);
|
||||
draw_fancy_string(app, face_id, list.first, p, color, 0);
|
||||
draw_fancy_string(app, face_id, color, fstr, p);
|
||||
|
||||
x_pos = btn_x.max;
|
||||
}
|
||||
|
@ -326,8 +322,7 @@ profile_draw_node(Application_Links *app, View_ID view, Face_ID face_id,
|
|||
|
||||
Rect_f32 time_slice_box = side_by_side.min;
|
||||
time_slice_box = rect_inner(time_slice_box, 3.f);
|
||||
draw_rectangle_outline(app, time_slice_box, 0.f, 3.f,
|
||||
0xFFFFFFFF);
|
||||
draw_rectangle_outline(app, time_slice_box, 0.f, 3.f, f_white);
|
||||
time_slice_box = rect_inner(time_slice_box, 3.f);
|
||||
|
||||
if (node->closed){
|
||||
|
@ -371,12 +366,11 @@ profile_draw_node(Application_Links *app, View_ID view, Face_ID face_id,
|
|||
// NOTE(allen): duration
|
||||
{
|
||||
f32 duration = ((f32)range_size(node->time))/1000000.f;
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Default),
|
||||
Fancy_Line list = {};
|
||||
push_fancy_stringf(scratch, &list, fcolor_id(Stag_Default),
|
||||
"time: %11.9f", duration);
|
||||
draw_fancy_string(app, face_id, list.first,
|
||||
V2f32(x_pos, y_pos + 1.f),
|
||||
0, 0);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(),
|
||||
&list, V2f32(x_pos, y_pos + 1.f));
|
||||
y_pos += line_height + 2.f;
|
||||
}
|
||||
}
|
||||
|
@ -404,14 +398,13 @@ profile_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
Profile_Inspection *inspect = &global_profile_inspection;
|
||||
|
||||
if (inspect->thread_count == 0){
|
||||
Fancy_String_List text = {};
|
||||
push_fancy_string(scratch, &text, fancy_id(Stag_Pop2),
|
||||
string_u8_litexpr("no profile data"));
|
||||
f32 width = get_fancy_string_advance(app, face_id, text.first);
|
||||
Fancy_String *fstr = push_fancy_string(scratch, 0, fcolor_id(Stag_Pop2),
|
||||
string_u8_litexpr("no profile data"));
|
||||
f32 width = get_fancy_string_width(app, face_id, fstr);
|
||||
Vec2_f32 view_center = (region.p0 + region.p1)*0.5f;
|
||||
Vec2_f32 half_dim = V2f32(width, line_height)*0.5f;
|
||||
Vec2_f32 p = view_center - half_dim;
|
||||
draw_fancy_string(app, face_id, text.first, p, Stag_Default, 0);
|
||||
draw_fancy_string(app, face_id, fcolor_zero(), fstr, p);
|
||||
}
|
||||
else{
|
||||
Rect_f32_Pair tabs_body = rect_split_top_bottom(region, line_height + 2.f);
|
||||
|
@ -436,7 +429,7 @@ profile_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
tab_state.x_half_padding = x_half_padding;
|
||||
tab_state.m_p = m_p;
|
||||
|
||||
draw_rectangle(app, tabs_body.min, 0.f, Stag_Margin_Hover);
|
||||
draw_rectangle(app, tabs_body.min, 0.f, fcolor_id(Stag_Margin_Hover));
|
||||
|
||||
if (inspect->tab_id == ProfileInspectTab_None){
|
||||
inspect->tab_id = ProfileInspectTab_Threads;
|
||||
|
@ -497,26 +490,26 @@ profile_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
for (i32 i = 0; i < count; i += 1, thread += 1){
|
||||
Range_f32 y = If32_size(y_pos, block_height);
|
||||
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Pop1),
|
||||
Fancy_Line list = {};
|
||||
push_fancy_stringf(scratch, &list, fcolor_id(Stag_Pop1),
|
||||
"%-20.*s (%6d) ",
|
||||
string_expand(thread->name),
|
||||
thread->thread_id);
|
||||
|
||||
f32 active_time = ((f32)thread->active_time)/1000000.f;
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Pop2),
|
||||
push_fancy_stringf(scratch, &list, fcolor_id(Stag_Pop2),
|
||||
"active time %11.9f",
|
||||
active_time);
|
||||
|
||||
Vec2_f32 p = V2f32(x.min + x_half_padding,
|
||||
(y.min + y.max - line_height)*0.5f);
|
||||
draw_fancy_string(app, face_id, list.first, p, 0, 0);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &list, p);
|
||||
|
||||
Rect_f32 box = Rf32(x, y);
|
||||
int_color margin = Stag_Margin;
|
||||
FColor margin = fcolor_id(Stag_Margin);
|
||||
if (rect_contains_point(box, m_p)){
|
||||
inspect->hover_thread = thread;
|
||||
margin = Stag_Margin_Hover;
|
||||
margin = fcolor_id(Stag_Margin_Hover);
|
||||
}
|
||||
draw_rectangle_outline(app, box, 6.f, 3.f, margin);
|
||||
|
||||
|
@ -535,46 +528,45 @@ profile_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
|
||||
b32 name_too_long = false;
|
||||
i32 name_width = 45;
|
||||
Fancy_String_List list = {};
|
||||
Fancy_Line list = {};
|
||||
if (node->name.size > name_width){
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Pop1),
|
||||
push_fancy_stringf(scratch, &list, fcolor_id(Stag_Pop1),
|
||||
"%.*s... ",
|
||||
name_width - 3, node->name.str);
|
||||
name_too_long = true;
|
||||
}
|
||||
else{
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Pop1),
|
||||
push_fancy_stringf(scratch, &list, fcolor_id(Stag_Pop1),
|
||||
"%-*.*s ",
|
||||
name_width,
|
||||
string_expand(node->name));
|
||||
name_width, string_expand(node->name));
|
||||
}
|
||||
|
||||
if (node->corrupted_time){
|
||||
push_fancy_string(scratch, &list, fancy_id(Stag_Pop2),
|
||||
push_fancy_string(scratch, &list, fcolor_id(Stag_Pop2),
|
||||
string_u8_litexpr("timing error "));
|
||||
}
|
||||
else{
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Pop2),
|
||||
push_fancy_stringf(scratch, &list, fcolor_id(Stag_Pop2),
|
||||
"%11.9fs ",
|
||||
((f32)node->total_time)/1000000.f);
|
||||
}
|
||||
|
||||
push_fancy_stringf(scratch, &list, fancy_id(Stag_Keyword),
|
||||
push_fancy_stringf(scratch, &list, fcolor_id(Stag_Keyword),
|
||||
"hit # %5d", node->hit_count);
|
||||
|
||||
Vec2_f32 p = V2f32(x.min + x_half_padding,
|
||||
(y.min + y.max - line_height)*0.5f);
|
||||
draw_fancy_string(app, face_id, list.first, p, 0, 0);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &list, p);
|
||||
|
||||
Rect_f32 box = Rf32(x, y);
|
||||
int_color margin = Stag_Margin;
|
||||
FColor margin = fcolor_id(Stag_Margin);
|
||||
if (rect_contains_point(box, m_p)){
|
||||
if (name_too_long){
|
||||
inspect->full_name_hovered = node->name;
|
||||
}
|
||||
inspect->location_jump_hovered = node->location;
|
||||
inspect->hover_slot = node;
|
||||
margin = Stag_Margin_Hover;
|
||||
margin = fcolor_id(Stag_Margin_Hover);
|
||||
}
|
||||
draw_rectangle_outline(app, box, 6.f, 3.f, margin);
|
||||
|
||||
|
@ -592,19 +584,19 @@ profile_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
node = node->next){
|
||||
Range_f32 y = If32_size(y_pos, block_height);
|
||||
|
||||
Fancy_String_List list = {};
|
||||
push_fancy_string(scratch, &list, fancy_id(Stag_Pop2),
|
||||
Fancy_Line list = {};
|
||||
push_fancy_string(scratch, &list, fcolor_id(Stag_Pop2),
|
||||
node->message);
|
||||
|
||||
Vec2_f32 p = V2f32(x.min + x_half_padding,
|
||||
(y.min + y.max - line_height)*0.5f);
|
||||
draw_fancy_string(app, face_id, list.first, p, 0, 0);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &list, p);
|
||||
|
||||
Rect_f32 box = Rf32(x, y);
|
||||
int_color margin = Stag_Margin;
|
||||
FColor margin = fcolor_id(Stag_Margin);
|
||||
if (rect_contains_point(box, m_p)){
|
||||
inspect->location_jump_hovered = node->location;
|
||||
margin = Stag_Margin_Hover;
|
||||
margin = fcolor_id(Stag_Margin_Hover);
|
||||
}
|
||||
draw_rectangle_outline(app, box, 6.f, 3.f, margin);
|
||||
|
||||
|
@ -637,44 +629,31 @@ profile_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
// NOTE(allen): no tool tip for tabs
|
||||
}
|
||||
else{
|
||||
i32 line_count = 0;
|
||||
Fancy_String_List list[2] = {};
|
||||
Fancy_Color color = fancy_rgba(1.f, 1.f, 1.f, 0.5f);
|
||||
Fancy_Block block = {};
|
||||
FColor text_color = fcolor_change_alpha(app, f_white, 0.5f);
|
||||
FColor back_color = fcolor_change_alpha(app, f_black, 0.5f);
|
||||
|
||||
f32 width = 0.f;
|
||||
if (inspect->full_name_hovered.size > 0){
|
||||
line_count += 1;
|
||||
push_fancy_stringf(scratch, &list[0], color, "%.*s",
|
||||
Fancy_Line *line = push_fancy_line(scratch, &block);
|
||||
push_fancy_stringf(scratch, line, text_color, "%.*s",
|
||||
string_expand(inspect->full_name_hovered));
|
||||
f32 l_width = get_fancy_string_advance(app, face_id, list[0].first);
|
||||
width = max(width, l_width);
|
||||
}
|
||||
if (inspect->location_jump_hovered.size > 0){
|
||||
line_count += 1;
|
||||
push_fancy_stringf(scratch, &list[1], color, "[shift] '%.*s'",
|
||||
Fancy_Line *line = push_fancy_line(scratch, &block);
|
||||
push_fancy_stringf(scratch, line, text_color, "[shift] '%.*s'",
|
||||
string_expand(inspect->location_jump_hovered));
|
||||
f32 l_width = get_fancy_string_advance(app, face_id, list[1].first);
|
||||
width = max(width, l_width);
|
||||
}
|
||||
|
||||
if (line_count > 0){
|
||||
Vec2_f32 dims = V2f32(width + x_padding, line_count*line_height + 2.f);
|
||||
if (block.line_count > 0){
|
||||
Vec2_f32 dims = get_fancy_block_dim(app, face_id, &block);
|
||||
dims += V2f32(x_padding, 2.f);
|
||||
|
||||
Rect_f32 box = get_tool_tip_box(region, m_p, dims);
|
||||
draw_set_clip(app, box);
|
||||
|
||||
draw_rectangle(app, box, 6.f, 0x80000000);
|
||||
f32 y = box.y0 + 1.f;
|
||||
if (inspect->full_name_hovered.size > 0){
|
||||
draw_fancy_string(app, face_id, list[0].first,
|
||||
V2f32(box.x0 + x_half_padding, y),
|
||||
0, 0);
|
||||
y += line_height;
|
||||
}
|
||||
if (inspect->location_jump_hovered.size > 0){
|
||||
draw_fancy_string(app, face_id, list[1].first,
|
||||
V2f32(box.x0 + x_half_padding, y),
|
||||
0, 0);
|
||||
}
|
||||
draw_rectangle(app, box, 6.f, back_color);
|
||||
draw_fancy_block(app, face_id, fcolor_zero(), &block,
|
||||
V2f32(box.x0 + x_half_padding, box.y0 + 1.f));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,21 +18,73 @@ typedef Custom_Layer_Init_Type *_Init_APIs_Type(struct API_VTable_custom *custom
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
typedef u32 argb_color;
|
||||
typedef u16 ID_Color;
|
||||
union FColor{
|
||||
struct{
|
||||
u8 padding__[3];
|
||||
u8 a_byte;
|
||||
};
|
||||
ARGB_Color argb;
|
||||
struct{
|
||||
ID_Color id;
|
||||
u16 padding_;
|
||||
};
|
||||
};
|
||||
|
||||
typedef u32 int_color;
|
||||
struct Theme_Color{
|
||||
ID_Color tag;
|
||||
ARGB_Color color;
|
||||
};
|
||||
|
||||
typedef u16 id_color;
|
||||
//struct Theme{
|
||||
//ARGB_Color colors[Stag_COUNT];
|
||||
//};
|
||||
|
||||
typedef u32 Child_Process_ID;
|
||||
struct Color_Table{
|
||||
ARGB_Color *vals;
|
||||
u32 count;
|
||||
};
|
||||
|
||||
struct Color_Picker{
|
||||
String_Const_u8 title;
|
||||
ARGB_Color *dest;
|
||||
b32 *finished;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef u32 Face_ID;
|
||||
|
||||
struct Fancy_String{
|
||||
Fancy_String *next;
|
||||
String_Const_u8 value;
|
||||
Face_ID face;
|
||||
FColor fore;
|
||||
f32 pre_margin;
|
||||
f32 post_margin;
|
||||
};
|
||||
|
||||
struct Fancy_Line{
|
||||
Fancy_Line *next;
|
||||
Face_ID face;
|
||||
FColor fore;
|
||||
Fancy_String *first;
|
||||
Fancy_String *last;
|
||||
};
|
||||
|
||||
struct Fancy_Block{
|
||||
Fancy_Line *first;
|
||||
Fancy_Line *last;
|
||||
i32 line_count;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
typedef i32 Buffer_ID;
|
||||
|
||||
typedef i32 View_ID;
|
||||
|
||||
typedef i32 Panel_ID;
|
||||
|
||||
typedef u32 Text_Layout_ID;
|
||||
typedef u32 Child_Process_ID;
|
||||
|
||||
typedef i32 UI_Highlight_Level;
|
||||
enum{
|
||||
|
@ -375,17 +427,6 @@ struct Query_Bar_Group{
|
|||
~Query_Bar_Group();
|
||||
};
|
||||
|
||||
struct Theme_Color{
|
||||
id_color tag;
|
||||
argb_color color;
|
||||
};
|
||||
|
||||
//struct Theme{
|
||||
//int_color colors[Stag_COUNT];
|
||||
//};
|
||||
|
||||
typedef u32 Face_ID;
|
||||
|
||||
struct Font_Load_Location{
|
||||
String_Const_u8 file_name;
|
||||
b32 in_4coder_font_folder;
|
||||
|
@ -533,11 +574,6 @@ Vec2_f32 name(Vec2_f32 pending, b32 is_new_target, f32 dt, void *data)
|
|||
|
||||
typedef Rect_f32 Buffer_Region_Function(Application_Links *app, View_ID view_id, Rect_f32 region);
|
||||
|
||||
struct Color_Table{
|
||||
argb_color *vals;
|
||||
u32 count;
|
||||
};
|
||||
|
||||
typedef void New_Clipboard_Contents_Function(Application_Links *app, String_Const_u8 contents);
|
||||
#define NEW_CLIPBOARD_CONTENTS_SIG(name) \
|
||||
void name(Application_Links *app, String_Const_u8 contents)
|
||||
|
@ -600,12 +636,6 @@ struct View_Context{
|
|||
Command_Map_ID map_id;
|
||||
};
|
||||
|
||||
struct Color_Picker{
|
||||
String_Const_u8 title;
|
||||
argb_color *dest;
|
||||
b32 *finished;
|
||||
};
|
||||
|
||||
typedef u32 String_Match_Flag;
|
||||
enum{
|
||||
StringMatch_CaseSensitive = 1,
|
||||
|
|
|
@ -346,12 +346,12 @@ static Command_Metadata fcoder_metacmd_table[211] = {
|
|||
{ PROC_LINKS(kill_buffer, 0), false, "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1579 },
|
||||
{ PROC_LINKS(save, 0), false, "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1587 },
|
||||
{ PROC_LINKS(reopen, 0), false, "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1597 },
|
||||
{ PROC_LINKS(undo, 0), false, "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1826 },
|
||||
{ PROC_LINKS(redo, 0), false, "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1839 },
|
||||
{ PROC_LINKS(undo_all_buffers, 0), false, "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1853 },
|
||||
{ PROC_LINKS(redo_all_buffers, 0), false, "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1924 },
|
||||
{ PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2025 },
|
||||
{ PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2032 },
|
||||
{ PROC_LINKS(undo, 0), false, "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1822 },
|
||||
{ PROC_LINKS(redo, 0), false, "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1835 },
|
||||
{ PROC_LINKS(undo_all_buffers, 0), false, "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1849 },
|
||||
{ PROC_LINKS(redo_all_buffers, 0), false, "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1920 },
|
||||
{ PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2021 },
|
||||
{ PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2028 },
|
||||
{ PROC_LINKS(set_eol_mode_to_crlf, 0), false, "set_eol_mode_to_crlf", 20, "Puts the buffer in crlf line ending mode.", 41, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 82 },
|
||||
{ PROC_LINKS(set_eol_mode_to_lf, 0), false, "set_eol_mode_to_lf", 18, "Puts the buffer in lf line ending mode.", 39, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 93 },
|
||||
{ PROC_LINKS(set_eol_mode_to_binary, 0), false, "set_eol_mode_to_binary", 22, "Puts the buffer in bin line ending mode.", 40, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 104 },
|
||||
|
@ -388,13 +388,13 @@ static Command_Metadata fcoder_metacmd_table[211] = {
|
|||
{ PROC_LINKS(if_read_only_goto_position, 0), false, "if_read_only_goto_position", 26, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 562 },
|
||||
{ PROC_LINKS(if_read_only_goto_position_same_panel, 0), false, "if_read_only_goto_position_same_panel", 37, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 579 },
|
||||
{ PROC_LINKS(view_jump_list_with_lister, 0), false, "view_jump_list_with_lister", 26, "When executed on a buffer with jumps, creates a persistent lister for all the jumps", 83, "w:\\4ed\\code\\custom\\4coder_jump_lister.cpp", 41, 104 },
|
||||
{ PROC_LINKS(show_the_log_graph, 0), true, "show_the_log_graph", 18, "Parses *log* and displays the 'log graph' UI", 44, "w:\\4ed\\code\\custom\\4coder_log_parser.cpp", 40, 990 },
|
||||
{ PROC_LINKS(show_the_log_graph, 0), true, "show_the_log_graph", 18, "Parses *log* and displays the 'log graph' UI", 44, "w:\\4ed\\code\\custom\\4coder_log_parser.cpp", 40, 995 },
|
||||
{ PROC_LINKS(copy, 0), false, "copy", 4, "Copy the text in the range from the cursor to the mark onto the clipboard.", 74, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 19 },
|
||||
{ PROC_LINKS(cut, 0), false, "cut", 3, "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 28 },
|
||||
{ PROC_LINKS(paste, 0), false, "paste", 5, "At the cursor, insert the text at the top of the clipboard.", 59, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 39 },
|
||||
{ PROC_LINKS(paste_next, 0), false, "paste_next", 10, "If the previous command was paste or paste_next, replaces the paste range with the next text down on the clipboard, otherwise operates as the paste command.", 156, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 73 },
|
||||
{ PROC_LINKS(paste_and_indent, 0), false, "paste_and_indent", 16, "Paste from the top of clipboard and run auto-indent on the newly pasted text.", 77, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 115 },
|
||||
{ PROC_LINKS(paste_next_and_indent, 0), false, "paste_next_and_indent", 21, "Paste the next item on the clipboard and run auto-indent on the newly pasted text.", 82, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 122 },
|
||||
{ PROC_LINKS(paste_next, 0), false, "paste_next", 10, "If the previous command was paste or paste_next, replaces the paste range with the next text down on the clipboard, otherwise operates as the paste command.", 156, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 71 },
|
||||
{ PROC_LINKS(paste_and_indent, 0), false, "paste_and_indent", 16, "Paste from the top of clipboard and run auto-indent on the newly pasted text.", 77, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 111 },
|
||||
{ PROC_LINKS(paste_next_and_indent, 0), false, "paste_next_and_indent", 21, "Paste the next item on the clipboard and run auto-indent on the newly pasted text.", 82, "w:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 118 },
|
||||
{ PROC_LINKS(execute_previous_cli, 0), false, "execute_previous_cli", 20, "If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.", 126, "w:\\4ed\\code\\custom\\4coder_cli_command.cpp", 41, 7 },
|
||||
{ PROC_LINKS(execute_any_cli, 0), false, "execute_any_cli", 15, "Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.", 133, "w:\\4ed\\code\\custom\\4coder_cli_command.cpp", 41, 22 },
|
||||
{ PROC_LINKS(build_search, 0), false, "build_search", 12, "Looks for a build.bat, build.sh, or makefile in the current and parent directories. Runs the first that it finds and prints the output to *compilation*.", 153, "w:\\4ed\\code\\custom\\4coder_build_commands.cpp", 44, 128 },
|
||||
|
@ -441,7 +441,7 @@ static Command_Metadata fcoder_metacmd_table[211] = {
|
|||
{ PROC_LINKS(miblo_decrement_time_stamp, 0), false, "miblo_decrement_time_stamp", 26, "Decrement a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 237 },
|
||||
{ PROC_LINKS(miblo_increment_time_stamp_minute, 0), false, "miblo_increment_time_stamp_minute", 33, "Increment a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 243 },
|
||||
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), false, "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 249 },
|
||||
{ PROC_LINKS(profile_inspect, 0), true, "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "w:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 713 },
|
||||
{ PROC_LINKS(profile_inspect, 0), true, "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "w:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 692 },
|
||||
{ PROC_LINKS(default_startup, 0), false, "default_startup", 15, "Default command for responding to a startup event", 49, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 7 },
|
||||
{ PROC_LINKS(default_try_exit, 0), false, "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 21 },
|
||||
};
|
||||
|
|
|
@ -85,10 +85,10 @@
|
|||
#define custom_view_set_buffer_scroll_sig() b32 custom_view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule)
|
||||
#define custom_view_set_mark_sig() b32 custom_view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek)
|
||||
#define custom_view_set_buffer_sig() b32 custom_view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags)
|
||||
#define custom_view_post_fade_sig() b32 custom_view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, int_color color)
|
||||
#define custom_view_post_fade_sig() b32 custom_view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color)
|
||||
#define custom_view_push_context_sig() b32 custom_view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx)
|
||||
#define custom_view_pop_context_sig() b32 custom_view_pop_context(Application_Links* app, View_ID view_id)
|
||||
#define custom_view_alter_context_sig() b32 custom_view_alter_context(Application_Links* app, View_ID view, View_Context* ctx)
|
||||
#define custom_view_alter_context_sig() b32 custom_view_alter_context(Application_Links* app, View_ID view_id, View_Context* ctx)
|
||||
#define custom_view_current_context_sig() View_Context custom_view_current_context(Application_Links* app, View_ID view_id)
|
||||
#define custom_view_current_context_hook_memory_sig() Data custom_view_current_context_hook_memory(Application_Links* app, View_ID view_id, Hook_ID hook_id)
|
||||
#define custom_create_user_managed_scope_sig() Managed_Scope custom_create_user_managed_scope(Application_Links* app)
|
||||
|
@ -146,15 +146,15 @@
|
|||
#define custom_try_release_face_sig() b32 custom_try_release_face(Application_Links* app, Face_ID id, Face_ID replacement_id)
|
||||
#define custom_set_theme_colors_sig() void custom_set_theme_colors(Application_Links* app, Theme_Color* colors, i32 count)
|
||||
#define custom_get_theme_colors_sig() void custom_get_theme_colors(Application_Links* app, Theme_Color* colors, i32 count)
|
||||
#define custom_finalize_color_sig() argb_color custom_finalize_color(Application_Links* app, int_color color)
|
||||
#define custom_finalize_color_sig() ARGB_Color custom_finalize_color(Application_Links* app, ID_Color color)
|
||||
#define custom_push_hot_directory_sig() String_Const_u8 custom_push_hot_directory(Application_Links* app, Arena* arena)
|
||||
#define custom_set_hot_directory_sig() b32 custom_set_hot_directory(Application_Links* app, String_Const_u8 string)
|
||||
#define custom_send_exit_signal_sig() void custom_send_exit_signal(Application_Links* app)
|
||||
#define custom_set_window_title_sig() b32 custom_set_window_title(Application_Links* app, String_Const_u8 title)
|
||||
#define custom_draw_string_oriented_sig() Vec2 custom_draw_string_oriented(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta)
|
||||
#define custom_draw_string_oriented_sig() Vec2_f32 custom_draw_string_oriented(Application_Links* app, Face_ID font_id, FColor color, String_Const_u8 str, Vec2_f32 point, u32 flags, Vec2_f32 delta)
|
||||
#define custom_get_string_advance_sig() f32 custom_get_string_advance(Application_Links* app, Face_ID font_id, String_Const_u8 str)
|
||||
#define custom_draw_rectangle_sig() void custom_draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, int_color color)
|
||||
#define custom_draw_rectangle_outline_sig() void custom_draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, int_color color)
|
||||
#define custom_draw_rectangle_sig() void custom_draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, FColor color)
|
||||
#define custom_draw_rectangle_outline_sig() void custom_draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, FColor color)
|
||||
#define custom_draw_set_clip_sig() Rect_f32 custom_draw_set_clip(Application_Links* app, Rect_f32 new_clip)
|
||||
#define custom_text_layout_create_sig() Text_Layout_ID custom_text_layout_create(Application_Links* app, Buffer_ID buffer_id, Rect_f32 rect, Buffer_Point buffer_point)
|
||||
#define custom_text_layout_region_sig() Rect_f32 custom_text_layout_region(Application_Links* app, Text_Layout_ID text_layout_id)
|
||||
|
@ -162,7 +162,7 @@
|
|||
#define custom_text_layout_get_visible_range_sig() Interval_i64 custom_text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id)
|
||||
#define custom_text_layout_line_on_screen_sig() Range_f32 custom_text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number)
|
||||
#define custom_text_layout_character_on_screen_sig() Rect_f32 custom_text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos)
|
||||
#define custom_paint_text_color_sig() void custom_paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, int_color color)
|
||||
#define custom_paint_text_color_sig() void custom_paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, FColor color)
|
||||
#define custom_text_layout_free_sig() b32 custom_text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id)
|
||||
#define custom_draw_text_layout_sig() void custom_draw_text_layout(Application_Links* app, Text_Layout_ID layout_id)
|
||||
#define custom_open_color_picker_sig() void custom_open_color_picker(Application_Links* app, Color_Picker* picker)
|
||||
|
@ -255,10 +255,10 @@ typedef b32 custom_view_set_cursor_type(Application_Links* app, View_ID view_id,
|
|||
typedef b32 custom_view_set_buffer_scroll_type(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule);
|
||||
typedef b32 custom_view_set_mark_type(Application_Links* app, View_ID view_id, Buffer_Seek seek);
|
||||
typedef b32 custom_view_set_buffer_type(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags);
|
||||
typedef b32 custom_view_post_fade_type(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, int_color color);
|
||||
typedef b32 custom_view_post_fade_type(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color);
|
||||
typedef b32 custom_view_push_context_type(Application_Links* app, View_ID view_id, View_Context* ctx);
|
||||
typedef b32 custom_view_pop_context_type(Application_Links* app, View_ID view_id);
|
||||
typedef b32 custom_view_alter_context_type(Application_Links* app, View_ID view, View_Context* ctx);
|
||||
typedef b32 custom_view_alter_context_type(Application_Links* app, View_ID view_id, View_Context* ctx);
|
||||
typedef View_Context custom_view_current_context_type(Application_Links* app, View_ID view_id);
|
||||
typedef Data custom_view_current_context_hook_memory_type(Application_Links* app, View_ID view_id, Hook_ID hook_id);
|
||||
typedef Managed_Scope custom_create_user_managed_scope_type(Application_Links* app);
|
||||
|
@ -316,15 +316,15 @@ typedef b32 custom_try_modify_face_type(Application_Links* app, Face_ID id, Face
|
|||
typedef b32 custom_try_release_face_type(Application_Links* app, Face_ID id, Face_ID replacement_id);
|
||||
typedef void custom_set_theme_colors_type(Application_Links* app, Theme_Color* colors, i32 count);
|
||||
typedef void custom_get_theme_colors_type(Application_Links* app, Theme_Color* colors, i32 count);
|
||||
typedef argb_color custom_finalize_color_type(Application_Links* app, int_color color);
|
||||
typedef ARGB_Color custom_finalize_color_type(Application_Links* app, ID_Color color);
|
||||
typedef String_Const_u8 custom_push_hot_directory_type(Application_Links* app, Arena* arena);
|
||||
typedef b32 custom_set_hot_directory_type(Application_Links* app, String_Const_u8 string);
|
||||
typedef void custom_send_exit_signal_type(Application_Links* app);
|
||||
typedef b32 custom_set_window_title_type(Application_Links* app, String_Const_u8 title);
|
||||
typedef Vec2 custom_draw_string_oriented_type(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta);
|
||||
typedef Vec2_f32 custom_draw_string_oriented_type(Application_Links* app, Face_ID font_id, FColor color, String_Const_u8 str, Vec2_f32 point, u32 flags, Vec2_f32 delta);
|
||||
typedef f32 custom_get_string_advance_type(Application_Links* app, Face_ID font_id, String_Const_u8 str);
|
||||
typedef void custom_draw_rectangle_type(Application_Links* app, Rect_f32 rect, f32 roundness, int_color color);
|
||||
typedef void custom_draw_rectangle_outline_type(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, int_color color);
|
||||
typedef void custom_draw_rectangle_type(Application_Links* app, Rect_f32 rect, f32 roundness, FColor color);
|
||||
typedef void custom_draw_rectangle_outline_type(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, FColor color);
|
||||
typedef Rect_f32 custom_draw_set_clip_type(Application_Links* app, Rect_f32 new_clip);
|
||||
typedef Text_Layout_ID custom_text_layout_create_type(Application_Links* app, Buffer_ID buffer_id, Rect_f32 rect, Buffer_Point buffer_point);
|
||||
typedef Rect_f32 custom_text_layout_region_type(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
|
@ -332,7 +332,7 @@ typedef Buffer_ID custom_text_layout_get_buffer_type(Application_Links* app, Tex
|
|||
typedef Interval_i64 custom_text_layout_get_visible_range_type(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
typedef Range_f32 custom_text_layout_line_on_screen_type(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
||||
typedef Rect_f32 custom_text_layout_character_on_screen_type(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
||||
typedef void custom_paint_text_color_type(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, int_color color);
|
||||
typedef void custom_paint_text_color_type(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, FColor color);
|
||||
typedef b32 custom_text_layout_free_type(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
typedef void custom_draw_text_layout_type(Application_Links* app, Text_Layout_ID layout_id);
|
||||
typedef void custom_open_color_picker_type(Application_Links* app, Color_Picker* picker);
|
||||
|
@ -598,10 +598,10 @@ internal b32 view_set_cursor(Application_Links* app, View_ID view_id, Buffer_See
|
|||
internal b32 view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule);
|
||||
internal b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek);
|
||||
internal b32 view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags);
|
||||
internal b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, int_color color);
|
||||
internal b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color);
|
||||
internal b32 view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx);
|
||||
internal b32 view_pop_context(Application_Links* app, View_ID view_id);
|
||||
internal b32 view_alter_context(Application_Links* app, View_ID view, View_Context* ctx);
|
||||
internal b32 view_alter_context(Application_Links* app, View_ID view_id, View_Context* ctx);
|
||||
internal View_Context view_current_context(Application_Links* app, View_ID view_id);
|
||||
internal Data view_current_context_hook_memory(Application_Links* app, View_ID view_id, Hook_ID hook_id);
|
||||
internal Managed_Scope create_user_managed_scope(Application_Links* app);
|
||||
|
@ -659,15 +659,15 @@ internal b32 try_modify_face(Application_Links* app, Face_ID id, Face_Descriptio
|
|||
internal b32 try_release_face(Application_Links* app, Face_ID id, Face_ID replacement_id);
|
||||
internal void set_theme_colors(Application_Links* app, Theme_Color* colors, i32 count);
|
||||
internal void get_theme_colors(Application_Links* app, Theme_Color* colors, i32 count);
|
||||
internal argb_color finalize_color(Application_Links* app, int_color color);
|
||||
internal ARGB_Color finalize_color(Application_Links* app, ID_Color color);
|
||||
internal String_Const_u8 push_hot_directory(Application_Links* app, Arena* arena);
|
||||
internal b32 set_hot_directory(Application_Links* app, String_Const_u8 string);
|
||||
internal void send_exit_signal(Application_Links* app);
|
||||
internal b32 set_window_title(Application_Links* app, String_Const_u8 title);
|
||||
internal Vec2 draw_string_oriented(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta);
|
||||
internal Vec2_f32 draw_string_oriented(Application_Links* app, Face_ID font_id, FColor color, String_Const_u8 str, Vec2_f32 point, u32 flags, Vec2_f32 delta);
|
||||
internal f32 get_string_advance(Application_Links* app, Face_ID font_id, String_Const_u8 str);
|
||||
internal void draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, int_color color);
|
||||
internal void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, int_color color);
|
||||
internal void draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, FColor color);
|
||||
internal void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, FColor color);
|
||||
internal Rect_f32 draw_set_clip(Application_Links* app, Rect_f32 new_clip);
|
||||
internal Text_Layout_ID text_layout_create(Application_Links* app, Buffer_ID buffer_id, Rect_f32 rect, Buffer_Point buffer_point);
|
||||
internal Rect_f32 text_layout_region(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
|
@ -675,7 +675,7 @@ internal Buffer_ID text_layout_get_buffer(Application_Links* app, Text_Layout_ID
|
|||
internal Interval_i64 text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
internal Range_f32 text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
||||
internal Rect_f32 text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
||||
internal void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, int_color color);
|
||||
internal void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, FColor color);
|
||||
internal b32 text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
internal void draw_text_layout(Application_Links* app, Text_Layout_ID layout_id);
|
||||
internal void open_color_picker(Application_Links* app, Color_Picker* picker);
|
||||
|
|
|
@ -85,10 +85,10 @@ api(custom) function b32 view_set_cursor(Application_Links* app, View_ID view_id
|
|||
api(custom) function b32 view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule);
|
||||
api(custom) function b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek);
|
||||
api(custom) function b32 view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags);
|
||||
api(custom) function b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, int_color color);
|
||||
api(custom) function b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color);
|
||||
api(custom) function b32 view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx);
|
||||
api(custom) function b32 view_pop_context(Application_Links* app, View_ID view_id);
|
||||
api(custom) function b32 view_alter_context(Application_Links* app, View_ID view, View_Context* ctx);
|
||||
api(custom) function b32 view_alter_context(Application_Links* app, View_ID view_id, View_Context* ctx);
|
||||
api(custom) function View_Context view_current_context(Application_Links* app, View_ID view_id);
|
||||
api(custom) function Data view_current_context_hook_memory(Application_Links* app, View_ID view_id, Hook_ID hook_id);
|
||||
api(custom) function Managed_Scope create_user_managed_scope(Application_Links* app);
|
||||
|
@ -146,15 +146,15 @@ api(custom) function b32 try_modify_face(Application_Links* app, Face_ID id, Fac
|
|||
api(custom) function b32 try_release_face(Application_Links* app, Face_ID id, Face_ID replacement_id);
|
||||
api(custom) function void set_theme_colors(Application_Links* app, Theme_Color* colors, i32 count);
|
||||
api(custom) function void get_theme_colors(Application_Links* app, Theme_Color* colors, i32 count);
|
||||
api(custom) function argb_color finalize_color(Application_Links* app, int_color color);
|
||||
api(custom) function ARGB_Color finalize_color(Application_Links* app, ID_Color color);
|
||||
api(custom) function String_Const_u8 push_hot_directory(Application_Links* app, Arena* arena);
|
||||
api(custom) function b32 set_hot_directory(Application_Links* app, String_Const_u8 string);
|
||||
api(custom) function void send_exit_signal(Application_Links* app);
|
||||
api(custom) function b32 set_window_title(Application_Links* app, String_Const_u8 title);
|
||||
api(custom) function Vec2 draw_string_oriented(Application_Links* app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta);
|
||||
api(custom) function Vec2_f32 draw_string_oriented(Application_Links* app, Face_ID font_id, FColor color, String_Const_u8 str, Vec2_f32 point, u32 flags, Vec2_f32 delta);
|
||||
api(custom) function f32 get_string_advance(Application_Links* app, Face_ID font_id, String_Const_u8 str);
|
||||
api(custom) function void draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, int_color color);
|
||||
api(custom) function void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, int_color color);
|
||||
api(custom) function void draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, FColor color);
|
||||
api(custom) function void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, FColor color);
|
||||
api(custom) function Rect_f32 draw_set_clip(Application_Links* app, Rect_f32 new_clip);
|
||||
api(custom) function Text_Layout_ID text_layout_create(Application_Links* app, Buffer_ID buffer_id, Rect_f32 rect, Buffer_Point buffer_point);
|
||||
api(custom) function Rect_f32 text_layout_region(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
|
@ -162,7 +162,7 @@ api(custom) function Buffer_ID text_layout_get_buffer(Application_Links* app, Te
|
|||
api(custom) function Interval_i64 text_layout_get_visible_range(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
api(custom) function Range_f32 text_layout_line_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 line_number);
|
||||
api(custom) function Rect_f32 text_layout_character_on_screen(Application_Links* app, Text_Layout_ID layout_id, i64 pos);
|
||||
api(custom) function void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, int_color color);
|
||||
api(custom) function void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, FColor color);
|
||||
api(custom) function b32 text_layout_free(Application_Links* app, Text_Layout_ID text_layout_id);
|
||||
api(custom) function void draw_text_layout(Application_Links* app, Text_Layout_ID layout_id);
|
||||
api(custom) function void open_color_picker(Application_Links* app, Color_Picker* picker);
|
||||
|
|
|
@ -43,456 +43,447 @@ lexeme_table_lookup(u64 *hash_array, String_Const_u8 *key_array,
|
|||
}
|
||||
|
||||
#endif
|
||||
u64 main_keys_hash_array[125] = {
|
||||
0x0000000000000000,0x0000000000000000,0xae0dc40193b178f9,0xb96986ad74366239,
|
||||
0xae0dc4007d2799c3,0x0000000000000000,0x6b890ab6607df9f5,0xfe4cf8e09552fd7d,
|
||||
0xb96986abf449ab87,0x0ce3b6f3f2ae6d8b,0xb96986b1e4d5012d,0x0000000000000000,
|
||||
0xae0dc4006a46609d,0xbae13981c29d9e93,0xb96986ac8864fc5b,0x0000000000000000,
|
||||
0xfe4cdd7782bcdf87,0x0000000000000000,0x27dc518216dc92b9,0x0000000000000000,
|
||||
0x0000000000000000,0x0ce3a6b2ed33a3f3,0xb6c16efd6d7f8691,0x0000000000000000,
|
||||
0x5f1d5c76d1541da9,0x0000000000000000,0x0000000000000000,0xae0dc4006ef1e009,
|
||||
0xb96986ad76870c01,0xb96986aba21ca901,0xb96986ae1e791a09,0xfe4cda48543d15eb,
|
||||
0x0000000000000000,0xfe4c21260e153663,0xbae13981c29e1649,0xae0dc4007c306d83,
|
||||
0x0000000000000000,0x0000000000000000,0x0000000000000000,0xfe53a22c8fba72db,
|
||||
0x0000000000000000,0x0000000000000000,0xfe4c3c0e0a6459c3,0x0000000000000000,
|
||||
0x0000000000000000,0x482db76ef4a7c2b9,0x0000000000000000,0x0000000000000000,
|
||||
0xb96986adef80de03,0xbae13981c29e443f,0x0000000000000000,0x0000000000000000,
|
||||
0x0000000000000000,0xfe4c3b126f24e73b,0x0000000000000000,0x0000000000000000,
|
||||
0xb6c16efd6d5e9039,0x0ce3a73cf2370b75,0x0000000000000000,0x0000000000000000,
|
||||
0x0000000000000000,0x0ce3a6cd0e243afd,0xae0dc4006d60a3dd,0xb6c16efd6d33baeb,
|
||||
0x0000000000000000,0x0000000000000000,0xae0dc4007c1e53d9,0xfe50f7d974bbaa05,
|
||||
0xb96986acb1e73223,0xb96986ad72de7ddd,0xb96986ae0d38e84b,0x0000000000000000,
|
||||
0x0000000000000000,0xfe4c3b65bbba43b3,0x320c5ad54842e269,0xb6c16efd6d7eb2db,
|
||||
0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000,
|
||||
0xb6c16efd6d41ec49,0xb6c16efd6d3ad8c3,0xb6c16efd6d79768d,0x0000000000000000,
|
||||
0x0ce3a725764fbd37,0x0000000000000000,0xb6c16efd6d326823,0xae0dc4006a76982b,
|
||||
0x0000000000000000,0x0000000000000000,0xae0dc40193bc7f19,0xa48abde904c1baf9,
|
||||
0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000,
|
||||
0x0000000000000000,0xb6c16efd6d379001,0x0000000000000000,0x0000000000000000,
|
||||
0x0000000000000000,0x0000000000000000,0xb96986ae0d2c0de5,0x0000000000000000,
|
||||
0xb96986ac4109bb39,0x0000000000000000,0x5ee5e1225dabbaf9,0x6b8a48a90953eeab,
|
||||
0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000,
|
||||
0xb6c16efd6d3a30eb,0xb96986ae1e53e287,0xfe4c6461b7a951e5,0x0000000000000000,
|
||||
0xbae13981c29ded97,0xbae13981c29dde75,0x5f1d5c76d1541c8f,0x0000000000000000,
|
||||
0x0ce3b6f5b502c4ff,0x0000000000000000,0xae0dc4006c0426b9,0x0ce3b6f3f2ae5611,
|
||||
0xc8cfe7a5027aeab5,
|
||||
u64 main_keys_hash_array[121] = {
|
||||
0xd7d4c38040a2a51b,0xdf638ad4b9cf69f1,0x0000000000000000,0x49161f88607bb631,
|
||||
0x536665a889795331,0xac2560d906339023,0x0000000000000000,0x0000000000000000,
|
||||
0x9df913c598e7c12f,0x0000000000000000,0x30a1e151f231a23d,0x0000000000000000,
|
||||
0xdf638ad451f403ad,0xdf63897bcdc00091,0xb02f5667f4aa212d,0x0000000000000000,
|
||||
0x0000000000000000,0x0000000000000000,0x0000000000000000,0xac2560d9187f0241,
|
||||
0x0000000000000000,0xdf638adf7971e675,0xb2eaca38e283efad,0x0000000000000000,
|
||||
0xdf638ad318e5d1ff,0xdf638ad080551679,0x0000000000000000,0x0000000000000000,
|
||||
0xdf638ad206456083,0x0000000000000000,0x0000000000000000,0x0000000000000000,
|
||||
0x0000000000000000,0x0000000000000000,0xac2560dad36752fb,0x0000000000000000,
|
||||
0x536665a889463469,0xb2ea03bb268a134f,0x0000000000000000,0xb2e835e1b80e6623,
|
||||
0xd7d4c38040add1c7,0x0000000000000000,0x0000000000000000,0x0000000000000000,
|
||||
0xdf638ad4bed34c65,0x9df9cfb653425513,0xd7d4c38040ae41d1,0x0000000000000000,
|
||||
0x947a68a4ac1c1501,0x6d88621e3e0beb01,0x0000000000000000,0x536665a88ceccda5,
|
||||
0x0000000000000000,0x536665a88ccb6129,0x0000000000000000,0x0000000000000000,
|
||||
0x536665a8896b20ab,0x0000000000000000,0x0000000000000000,0xb07367b671947053,
|
||||
0xb2ea3109b4b43533,0x536665a889437cc3,0x0000000000000000,0x0000000000000000,
|
||||
0xac2560d91bdcfc25,0x9df91c40ba8cd527,0x0000000000000000,0x536665a889769513,
|
||||
0xdf638979523c12d1,0x0000000000000000,0x0000000000000000,0xb2c5e55df6610773,
|
||||
0x0000000000000000,0x536665a8894345fb,0x0000000000000000,0x0000000000000000,
|
||||
0x0000000000000000,0x0000000000000000,0x0000000000000000,0xac2560daec0e3851,
|
||||
0x0000000000000000,0xb2c54a9d3317afb5,0xac2560d919a44b01,0x0000000000000000,
|
||||
0xb77ddd8b9e414ce1,0x0000000000000000,0x18f86466c464cb01,0x0000000000000000,
|
||||
0x0000000000000000,0xd7d4c38040a2854f,0x9df9ce6f49907115,0xac2560d90e3e3341,
|
||||
0xdf63897b933beefb,0x0000000000000000,0x9df9cfb6534252e9,0xb2ea06e728b259ed,
|
||||
0x0000000000000000,0x0000000000000000,0xb2ea5877c412647b,0x0000000000000000,
|
||||
0xac2560d90618b725,0x34cb86f3fc1ca901,0xdf638ad4a65162c3,0x0000000000000000,
|
||||
0x536665a88c2a1c41,0x49161f88607ba867,0xb2ead185c7065f1b,0x9df91f79b4ec2e9b,
|
||||
0x0000000000000000,0xdf638ad4bf72e239,0xac2560dad9a93d8b,0xdf638979520bcfbf,
|
||||
0xac2560dada9feda1,0x0000000000000000,0x0000000000000000,0x536665a88cc8be73,
|
||||
0xdf63897b8855fa1b,0xb2c5e570be19f85b,0x9df91ccc8c85f8ed,0xd7d4c38040adb35d,
|
||||
0x0000000000000000,
|
||||
};
|
||||
u8 main_keys_key_array_2[] = {0x63,0x6f,0x6e,0x73,0x74,};
|
||||
u8 main_keys_key_array_3[] = {0x73,0x74,0x72,0x75,0x63,0x74,};
|
||||
u8 main_keys_key_array_4[] = {0x77,0x68,0x69,0x6c,0x65,};
|
||||
u8 main_keys_key_array_6[] = {0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,};
|
||||
u8 main_keys_key_array_7[] = {0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74,};
|
||||
u8 main_keys_key_array_8[] = {0x72,0x65,0x74,0x75,0x72,0x6e,};
|
||||
u8 main_keys_key_array_9[] = {0x61,0x6c,0x69,0x67,0x6e,0x6f,0x66,};
|
||||
u8 main_keys_key_array_10[] = {0x74,0x79,0x70,0x65,0x69,0x64,};
|
||||
u8 main_keys_key_array_12[] = {0x66,0x6c,0x6f,0x61,0x74,};
|
||||
u8 main_keys_key_array_13[] = {0x61,0x73,0x6d,};
|
||||
u8 main_keys_key_array_14[] = {0x69,0x6e,0x6c,0x69,0x6e,0x65,};
|
||||
u8 main_keys_key_array_16[] = {0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,};
|
||||
u8 main_keys_key_array_18[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_21[] = {0x70,0x72,0x69,0x76,0x61,0x74,0x65,};
|
||||
u8 main_keys_key_array_22[] = {0x74,0x68,0x69,0x73,};
|
||||
u8 main_keys_key_array_24[] = {0x64,0x6f,};
|
||||
u8 main_keys_key_array_27[] = {0x73,0x68,0x6f,0x72,0x74,};
|
||||
u8 main_keys_key_array_28[] = {0x73,0x74,0x61,0x74,0x69,0x63,};
|
||||
u8 main_keys_key_array_29[] = {0x70,0x75,0x62,0x6c,0x69,0x63,};
|
||||
u8 main_keys_key_array_30[] = {0x65,0x78,0x70,0x6f,0x72,0x74,};
|
||||
u8 main_keys_key_array_31[] = {0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,};
|
||||
u8 main_keys_key_array_33[] = {0x64,0x65,0x63,0x6c,0x74,0x79,0x70,0x65,};
|
||||
u8 main_keys_key_array_34[] = {0x69,0x6e,0x74,};
|
||||
u8 main_keys_key_array_35[] = {0x75,0x6e,0x69,0x6f,0x6e,};
|
||||
u8 main_keys_key_array_39[] = {0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,};
|
||||
u8 main_keys_key_array_42[] = {0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,};
|
||||
u8 main_keys_key_array_45[] = {0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_48[] = {0x64,0x6f,0x75,0x62,0x6c,0x65,};
|
||||
u8 main_keys_key_array_49[] = {0x74,0x72,0x79,};
|
||||
u8 main_keys_key_array_53[] = {0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,};
|
||||
u8 main_keys_key_array_56[] = {0x6c,0x6f,0x6e,0x67,};
|
||||
u8 main_keys_key_array_57[] = {0x76,0x69,0x72,0x74,0x75,0x61,0x6c,};
|
||||
u8 main_keys_key_array_61[] = {0x64,0x65,0x66,0x61,0x75,0x6c,0x74,};
|
||||
u8 main_keys_key_array_62[] = {0x63,0x61,0x74,0x63,0x68,};
|
||||
u8 main_keys_key_array_63[] = {0x63,0x61,0x73,0x65,};
|
||||
u8 main_keys_key_array_66[] = {0x75,0x73,0x69,0x6e,0x67,};
|
||||
u8 main_keys_key_array_67[] = {0x6e,0x6f,0x65,0x78,0x63,0x65,0x70,0x74,};
|
||||
u8 main_keys_key_array_68[] = {0x64,0x65,0x6c,0x65,0x74,0x65,};
|
||||
u8 main_keys_key_array_69[] = {0x73,0x77,0x69,0x74,0x63,0x68,};
|
||||
u8 main_keys_key_array_70[] = {0x73,0x69,0x7a,0x65,0x6f,0x66,};
|
||||
u8 main_keys_key_array_73[] = {0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,};
|
||||
u8 main_keys_key_array_74[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x61,0x73,0x73,0x65,0x72,0x74,};
|
||||
u8 main_keys_key_array_75[] = {0x74,0x72,0x75,0x65,};
|
||||
u8 main_keys_key_array_80[] = {0x67,0x6f,0x74,0x6f,};
|
||||
u8 main_keys_key_array_81[] = {0x65,0x6e,0x75,0x6d,};
|
||||
u8 main_keys_key_array_82[] = {0x76,0x6f,0x69,0x64,};
|
||||
u8 main_keys_key_array_84[] = {0x74,0x79,0x70,0x65,0x64,0x65,0x66,};
|
||||
u8 main_keys_key_array_86[] = {0x63,0x68,0x61,0x72,};
|
||||
u8 main_keys_key_array_87[] = {0x66,0x61,0x6c,0x73,0x65,};
|
||||
u8 main_keys_key_array_90[] = {0x63,0x6c,0x61,0x73,0x73,};
|
||||
u8 main_keys_key_array_91[] = {0x72,0x65,0x69,0x6e,0x74,0x65,0x72,0x70,0x72,0x65,0x74,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_97[] = {0x62,0x6f,0x6f,0x6c,};
|
||||
u8 main_keys_key_array_102[] = {0x73,0x69,0x67,0x6e,0x65,0x64,};
|
||||
u8 main_keys_key_array_104[] = {0x66,0x72,0x69,0x65,0x6e,0x64,};
|
||||
u8 main_keys_key_array_106[] = {0x63,0x6f,0x6e,0x73,0x74,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_107[] = {0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,};
|
||||
u8 main_keys_key_array_112[] = {0x65,0x6c,0x73,0x65,};
|
||||
u8 main_keys_key_array_113[] = {0x65,0x78,0x74,0x65,0x72,0x6e,};
|
||||
u8 main_keys_key_array_114[] = {0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,};
|
||||
u8 main_keys_key_array_116[] = {0x66,0x6f,0x72,};
|
||||
u8 main_keys_key_array_117[] = {0x6e,0x65,0x77,};
|
||||
u8 main_keys_key_array_118[] = {0x69,0x66,};
|
||||
u8 main_keys_key_array_120[] = {0x6e,0x75,0x6c,0x6c,0x70,0x74,0x72,};
|
||||
u8 main_keys_key_array_122[] = {0x62,0x72,0x65,0x61,0x6b,};
|
||||
u8 main_keys_key_array_123[] = {0x61,0x6c,0x69,0x67,0x6e,0x61,0x73,};
|
||||
u8 main_keys_key_array_124[] = {0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x6c,0x6f,0x63,0x61,0x6c,};
|
||||
String_Const_u8 main_keys_key_array[125] = {
|
||||
u8 main_keys_key_array_0[] = {0x61,0x73,0x6d,};
|
||||
u8 main_keys_key_array_1[] = {0x73,0x74,0x72,0x75,0x63,0x74,};
|
||||
u8 main_keys_key_array_3[] = {0x64,0x6f,};
|
||||
u8 main_keys_key_array_4[] = {0x67,0x6f,0x74,0x6f,};
|
||||
u8 main_keys_key_array_5[] = {0x66,0x61,0x6c,0x73,0x65,};
|
||||
u8 main_keys_key_array_8[] = {0x74,0x79,0x70,0x65,0x64,0x65,0x66,};
|
||||
u8 main_keys_key_array_10[] = {0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x6c,0x6f,0x63,0x61,0x6c,};
|
||||
u8 main_keys_key_array_12[] = {0x73,0x69,0x67,0x6e,0x65,0x64,};
|
||||
u8 main_keys_key_array_13[] = {0x66,0x72,0x69,0x65,0x6e,0x64,};
|
||||
u8 main_keys_key_array_14[] = {0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,};
|
||||
u8 main_keys_key_array_19[] = {0x63,0x6f,0x6e,0x73,0x74,};
|
||||
u8 main_keys_key_array_21[] = {0x74,0x79,0x70,0x65,0x69,0x64,};
|
||||
u8 main_keys_key_array_22[] = {0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,};
|
||||
u8 main_keys_key_array_24[] = {0x72,0x65,0x74,0x75,0x72,0x6e,};
|
||||
u8 main_keys_key_array_25[] = {0x70,0x75,0x62,0x6c,0x69,0x63,};
|
||||
u8 main_keys_key_array_28[] = {0x69,0x6e,0x6c,0x69,0x6e,0x65,};
|
||||
u8 main_keys_key_array_34[] = {0x77,0x68,0x69,0x6c,0x65,};
|
||||
u8 main_keys_key_array_36[] = {0x62,0x6f,0x6f,0x6c,};
|
||||
u8 main_keys_key_array_37[] = {0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,};
|
||||
u8 main_keys_key_array_39[] = {0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,};
|
||||
u8 main_keys_key_array_40[] = {0x74,0x72,0x79,};
|
||||
u8 main_keys_key_array_44[] = {0x73,0x77,0x69,0x74,0x63,0x68,};
|
||||
u8 main_keys_key_array_45[] = {0x61,0x6c,0x69,0x67,0x6e,0x6f,0x66,};
|
||||
u8 main_keys_key_array_46[] = {0x69,0x6e,0x74,};
|
||||
u8 main_keys_key_array_48[] = {0x72,0x65,0x69,0x6e,0x74,0x65,0x72,0x70,0x72,0x65,0x74,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_49[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_51[] = {0x76,0x6f,0x69,0x64,};
|
||||
u8 main_keys_key_array_53[] = {0x74,0x68,0x69,0x73,};
|
||||
u8 main_keys_key_array_56[] = {0x63,0x68,0x61,0x72,};
|
||||
u8 main_keys_key_array_59[] = {0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,};
|
||||
u8 main_keys_key_array_60[] = {0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,};
|
||||
u8 main_keys_key_array_61[] = {0x65,0x6c,0x73,0x65,};
|
||||
u8 main_keys_key_array_64[] = {0x63,0x61,0x74,0x63,0x68,};
|
||||
u8 main_keys_key_array_65[] = {0x6e,0x75,0x6c,0x6c,0x70,0x74,0x72,};
|
||||
u8 main_keys_key_array_67[] = {0x63,0x61,0x73,0x65,};
|
||||
u8 main_keys_key_array_68[] = {0x65,0x78,0x70,0x6f,0x72,0x74,};
|
||||
u8 main_keys_key_array_71[] = {0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,};
|
||||
u8 main_keys_key_array_73[] = {0x65,0x6e,0x75,0x6d,};
|
||||
u8 main_keys_key_array_79[] = {0x73,0x68,0x6f,0x72,0x74,};
|
||||
u8 main_keys_key_array_81[] = {0x65,0x78,0x70,0x6c,0x69,0x63,0x69,0x74,};
|
||||
u8 main_keys_key_array_82[] = {0x63,0x6c,0x61,0x73,0x73,};
|
||||
u8 main_keys_key_array_84[] = {0x73,0x74,0x61,0x74,0x69,0x63,0x5f,0x61,0x73,0x73,0x65,0x72,0x74,};
|
||||
u8 main_keys_key_array_86[] = {0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_89[] = {0x66,0x6f,0x72,};
|
||||
u8 main_keys_key_array_90[] = {0x64,0x65,0x66,0x61,0x75,0x6c,0x74,};
|
||||
u8 main_keys_key_array_91[] = {0x62,0x72,0x65,0x61,0x6b,};
|
||||
u8 main_keys_key_array_92[] = {0x64,0x65,0x6c,0x65,0x74,0x65,};
|
||||
u8 main_keys_key_array_94[] = {0x61,0x6c,0x69,0x67,0x6e,0x61,0x73,};
|
||||
u8 main_keys_key_array_95[] = {0x6e,0x6f,0x65,0x78,0x63,0x65,0x70,0x74,};
|
||||
u8 main_keys_key_array_98[] = {0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,};
|
||||
u8 main_keys_key_array_100[] = {0x66,0x6c,0x6f,0x61,0x74,};
|
||||
u8 main_keys_key_array_101[] = {0x63,0x6f,0x6e,0x73,0x74,0x5f,0x63,0x61,0x73,0x74,};
|
||||
u8 main_keys_key_array_102[] = {0x73,0x69,0x7a,0x65,0x6f,0x66,};
|
||||
u8 main_keys_key_array_104[] = {0x6c,0x6f,0x6e,0x67,};
|
||||
u8 main_keys_key_array_105[] = {0x69,0x66,};
|
||||
u8 main_keys_key_array_106[] = {0x74,0x65,0x6d,0x70,0x6c,0x61,0x74,0x65,};
|
||||
u8 main_keys_key_array_107[] = {0x70,0x72,0x69,0x76,0x61,0x74,0x65,};
|
||||
u8 main_keys_key_array_109[] = {0x73,0x74,0x61,0x74,0x69,0x63,};
|
||||
u8 main_keys_key_array_110[] = {0x75,0x6e,0x69,0x6f,0x6e,};
|
||||
u8 main_keys_key_array_111[] = {0x65,0x78,0x74,0x65,0x72,0x6e,};
|
||||
u8 main_keys_key_array_112[] = {0x75,0x73,0x69,0x6e,0x67,};
|
||||
u8 main_keys_key_array_115[] = {0x74,0x72,0x75,0x65,};
|
||||
u8 main_keys_key_array_116[] = {0x64,0x6f,0x75,0x62,0x6c,0x65,};
|
||||
u8 main_keys_key_array_117[] = {0x64,0x65,0x63,0x6c,0x74,0x79,0x70,0x65,};
|
||||
u8 main_keys_key_array_118[] = {0x76,0x69,0x72,0x74,0x75,0x61,0x6c,};
|
||||
u8 main_keys_key_array_119[] = {0x6e,0x65,0x77,};
|
||||
String_Const_u8 main_keys_key_array[121] = {
|
||||
{main_keys_key_array_0, 3},
|
||||
{main_keys_key_array_1, 6},
|
||||
{0, 0},
|
||||
{main_keys_key_array_3, 2},
|
||||
{main_keys_key_array_4, 4},
|
||||
{main_keys_key_array_5, 5},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_2, 5},
|
||||
{main_keys_key_array_3, 6},
|
||||
{main_keys_key_array_4, 5},
|
||||
{main_keys_key_array_8, 7},
|
||||
{0, 0},
|
||||
{main_keys_key_array_6, 9},
|
||||
{main_keys_key_array_7, 8},
|
||||
{main_keys_key_array_8, 6},
|
||||
{main_keys_key_array_9, 7},
|
||||
{main_keys_key_array_10, 6},
|
||||
{main_keys_key_array_10, 12},
|
||||
{0, 0},
|
||||
{main_keys_key_array_12, 5},
|
||||
{main_keys_key_array_13, 3},
|
||||
{main_keys_key_array_14, 6},
|
||||
{0, 0},
|
||||
{main_keys_key_array_16, 8},
|
||||
{0, 0},
|
||||
{main_keys_key_array_18, 11},
|
||||
{main_keys_key_array_12, 6},
|
||||
{main_keys_key_array_13, 6},
|
||||
{main_keys_key_array_14, 9},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_21, 7},
|
||||
{main_keys_key_array_22, 4},
|
||||
{0, 0},
|
||||
{main_keys_key_array_24, 2},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_27, 5},
|
||||
{main_keys_key_array_19, 5},
|
||||
{0, 0},
|
||||
{main_keys_key_array_21, 6},
|
||||
{main_keys_key_array_22, 8},
|
||||
{0, 0},
|
||||
{main_keys_key_array_24, 6},
|
||||
{main_keys_key_array_25, 6},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_28, 6},
|
||||
{main_keys_key_array_29, 6},
|
||||
{main_keys_key_array_30, 6},
|
||||
{main_keys_key_array_31, 8},
|
||||
{0, 0},
|
||||
{main_keys_key_array_33, 8},
|
||||
{main_keys_key_array_34, 3},
|
||||
{main_keys_key_array_35, 5},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_34, 5},
|
||||
{0, 0},
|
||||
{main_keys_key_array_36, 4},
|
||||
{main_keys_key_array_37, 8},
|
||||
{0, 0},
|
||||
{main_keys_key_array_39, 8},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_42, 8},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_45, 12},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_48, 6},
|
||||
{main_keys_key_array_49, 3},
|
||||
{main_keys_key_array_40, 3},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_53, 8},
|
||||
{main_keys_key_array_44, 6},
|
||||
{main_keys_key_array_45, 7},
|
||||
{main_keys_key_array_46, 3},
|
||||
{0, 0},
|
||||
{main_keys_key_array_48, 16},
|
||||
{main_keys_key_array_49, 11},
|
||||
{0, 0},
|
||||
{main_keys_key_array_51, 4},
|
||||
{0, 0},
|
||||
{main_keys_key_array_53, 4},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_56, 4},
|
||||
{main_keys_key_array_57, 7},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_61, 7},
|
||||
{main_keys_key_array_62, 5},
|
||||
{main_keys_key_array_63, 4},
|
||||
{main_keys_key_array_59, 9},
|
||||
{main_keys_key_array_60, 8},
|
||||
{main_keys_key_array_61, 4},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_66, 5},
|
||||
{main_keys_key_array_67, 8},
|
||||
{main_keys_key_array_64, 5},
|
||||
{main_keys_key_array_65, 7},
|
||||
{0, 0},
|
||||
{main_keys_key_array_67, 4},
|
||||
{main_keys_key_array_68, 6},
|
||||
{main_keys_key_array_69, 6},
|
||||
{main_keys_key_array_70, 6},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_73, 8},
|
||||
{main_keys_key_array_74, 13},
|
||||
{main_keys_key_array_75, 4},
|
||||
{main_keys_key_array_71, 8},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_80, 4},
|
||||
{main_keys_key_array_81, 4},
|
||||
{main_keys_key_array_82, 4},
|
||||
{0, 0},
|
||||
{main_keys_key_array_84, 7},
|
||||
{0, 0},
|
||||
{main_keys_key_array_86, 4},
|
||||
{main_keys_key_array_87, 5},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_90, 5},
|
||||
{main_keys_key_array_91, 16},
|
||||
{main_keys_key_array_73, 4},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_97, 4},
|
||||
{main_keys_key_array_79, 5},
|
||||
{0, 0},
|
||||
{main_keys_key_array_81, 8},
|
||||
{main_keys_key_array_82, 5},
|
||||
{0, 0},
|
||||
{main_keys_key_array_84, 13},
|
||||
{0, 0},
|
||||
{main_keys_key_array_86, 12},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_89, 3},
|
||||
{main_keys_key_array_90, 7},
|
||||
{main_keys_key_array_91, 5},
|
||||
{main_keys_key_array_92, 6},
|
||||
{0, 0},
|
||||
{main_keys_key_array_94, 7},
|
||||
{main_keys_key_array_95, 8},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_98, 8},
|
||||
{0, 0},
|
||||
{main_keys_key_array_100, 5},
|
||||
{main_keys_key_array_101, 10},
|
||||
{main_keys_key_array_102, 6},
|
||||
{0, 0},
|
||||
{main_keys_key_array_104, 6},
|
||||
{main_keys_key_array_104, 4},
|
||||
{main_keys_key_array_105, 2},
|
||||
{main_keys_key_array_106, 8},
|
||||
{main_keys_key_array_107, 7},
|
||||
{0, 0},
|
||||
{main_keys_key_array_106, 10},
|
||||
{main_keys_key_array_107, 9},
|
||||
{main_keys_key_array_109, 6},
|
||||
{main_keys_key_array_110, 5},
|
||||
{main_keys_key_array_111, 6},
|
||||
{main_keys_key_array_112, 5},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_115, 4},
|
||||
{main_keys_key_array_116, 6},
|
||||
{main_keys_key_array_117, 8},
|
||||
{main_keys_key_array_118, 7},
|
||||
{main_keys_key_array_119, 3},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{main_keys_key_array_112, 4},
|
||||
{main_keys_key_array_113, 6},
|
||||
{main_keys_key_array_114, 8},
|
||||
{0, 0},
|
||||
{main_keys_key_array_116, 3},
|
||||
{main_keys_key_array_117, 3},
|
||||
{main_keys_key_array_118, 2},
|
||||
{0, 0},
|
||||
{main_keys_key_array_120, 7},
|
||||
{0, 0},
|
||||
{main_keys_key_array_122, 5},
|
||||
{main_keys_key_array_123, 7},
|
||||
{main_keys_key_array_124, 12},
|
||||
};
|
||||
Lexeme_Table_Value main_keys_value_array[125] = {
|
||||
Lexeme_Table_Value main_keys_value_array[121] = {
|
||||
{4, TokenCppKind_Asm},
|
||||
{4, TokenCppKind_Struct},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Do},
|
||||
{4, TokenCppKind_Goto},
|
||||
{8, TokenCppKind_LiteralFalse},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Typedef},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_ThreadLocal},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Signed},
|
||||
{4, TokenCppKind_Friend},
|
||||
{4, TokenCppKind_Protected},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Const},
|
||||
{4, TokenCppKind_Struct},
|
||||
{4, TokenCppKind_While},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Protected},
|
||||
{4, TokenCppKind_Explicit},
|
||||
{4, TokenCppKind_Return},
|
||||
{4, TokenCppKind_AlignOf},
|
||||
{4, TokenCppKind_TypeID},
|
||||
{4, TokenCppKind_Unsigned},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Return},
|
||||
{4, TokenCppKind_Public},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Float},
|
||||
{4, TokenCppKind_Asm},
|
||||
{4, TokenCppKind_Inline},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_While},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Bool},
|
||||
{4, TokenCppKind_Operator},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_StaticCast},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Private},
|
||||
{4, TokenCppKind_This},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Do},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Short},
|
||||
{4, TokenCppKind_Static},
|
||||
{4, TokenCppKind_Public},
|
||||
{4, TokenCppKind_Export},
|
||||
{4, TokenCppKind_Register},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_DeclType},
|
||||
{4, TokenCppKind_Int},
|
||||
{4, TokenCppKind_Union},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Continue},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Volatile},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_DynamicCast},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Double},
|
||||
{4, TokenCppKind_Typename},
|
||||
{4, TokenCppKind_Try},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Typename},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Long},
|
||||
{4, TokenCppKind_Virtual},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Default},
|
||||
{4, TokenCppKind_Catch},
|
||||
{4, TokenCppKind_Case},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Using},
|
||||
{4, TokenCppKind_NoExcept},
|
||||
{4, TokenCppKind_Delete},
|
||||
{4, TokenCppKind_Switch},
|
||||
{4, TokenCppKind_SizeOf},
|
||||
{4, TokenCppKind_AlignOf},
|
||||
{4, TokenCppKind_Int},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_ReinterpretCast},
|
||||
{4, TokenCppKind_StaticCast},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Template},
|
||||
{4, TokenCppKind_StaticAssert},
|
||||
{8, TokenCppKind_LiteralTrue},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Goto},
|
||||
{4, TokenCppKind_Enum},
|
||||
{4, TokenCppKind_Void},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Typedef},
|
||||
{4, TokenCppKind_This},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Char},
|
||||
{8, TokenCppKind_LiteralFalse},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Class},
|
||||
{4, TokenCppKind_ReinterpretCast},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Bool},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Signed},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Friend},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_ConstCast},
|
||||
{4, TokenCppKind_Namespace},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Register},
|
||||
{4, TokenCppKind_Else},
|
||||
{4, TokenCppKind_Extern},
|
||||
{4, TokenCppKind_Unsigned},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_For},
|
||||
{4, TokenCppKind_New},
|
||||
{4, TokenCppKind_If},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Catch},
|
||||
{4, TokenCppKind_NullPtr},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Case},
|
||||
{4, TokenCppKind_Export},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Continue},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Enum},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Short},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Explicit},
|
||||
{4, TokenCppKind_Class},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_StaticAssert},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_DynamicCast},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_For},
|
||||
{4, TokenCppKind_Default},
|
||||
{4, TokenCppKind_Break},
|
||||
{4, TokenCppKind_Delete},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_AlignAs},
|
||||
{4, TokenCppKind_ThreadLocal},
|
||||
{4, TokenCppKind_NoExcept},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Volatile},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Float},
|
||||
{4, TokenCppKind_ConstCast},
|
||||
{4, TokenCppKind_SizeOf},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Long},
|
||||
{4, TokenCppKind_If},
|
||||
{4, TokenCppKind_Template},
|
||||
{4, TokenCppKind_Private},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_Static},
|
||||
{4, TokenCppKind_Union},
|
||||
{4, TokenCppKind_Extern},
|
||||
{4, TokenCppKind_Using},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{8, TokenCppKind_LiteralTrue},
|
||||
{4, TokenCppKind_Double},
|
||||
{4, TokenCppKind_DeclType},
|
||||
{4, TokenCppKind_Virtual},
|
||||
{4, TokenCppKind_New},
|
||||
{0, 0},
|
||||
};
|
||||
i32 main_keys_slot_count = 125;
|
||||
u64 main_keys_seed = 0xfa381694d5674125;
|
||||
i32 main_keys_slot_count = 121;
|
||||
u64 main_keys_seed = 0xc6a99799e45617dd;
|
||||
u64 pp_directives_hash_array[25] = {
|
||||
0x0000000000000000,0x34b86dc413bdc61d,0x0000000000000000,0xcc5e69206f9dddbd,
|
||||
0x0000000000000000,0x65f024ddd53ade19,0x65f02489c656353d,0x0000000000000000,
|
||||
0xcc5e69207d2543bd,0x35db8e7164ab1e55,0x6bb45a7c34b15b09,0x35db8e7164f625dd,
|
||||
0x0000000000000000,0x0000000000000000,0x35db8e7164ab3649,0xcc5e692189cbad79,
|
||||
0x0000000000000000,0xcc5e69207d6608a3,0x0000000000000000,0x0000000000000000,
|
||||
0x65f02488282ecfbd,0x6bb4b5a2472171e5,0xcc5e6921a27c7d55,0x0000000000000000,
|
||||
0x65f02489e6243cc7,
|
||||
0xfa6a010b7dbbde13,0x0000000000000000,0xce2f38db2af5366d,0xfa6a010b7d62d06d,
|
||||
0xcc962e54221688f9,0x0000000000000000,0x03b5dc5556efc84d,0xfa6a010b0bc317e5,
|
||||
0x0000000000000000,0xcaa053e8a98a24b9,0xcaa053e8a98a2085,0xcc9620cd74b482d5,
|
||||
0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000,
|
||||
0xce2f38da33096dd7,0xce2f38dbf3d6ad6d,0xfa6a010b0bd76809,0x0000000000000000,
|
||||
0xfa6a010b0edd496d,0xce2f38e88510d3c9,0x0000000000000000,0xcaa053e8aa33abcd,
|
||||
0x0000000000000000,
|
||||
};
|
||||
u8 pp_directives_key_array_1[] = {0x69,0x66,};
|
||||
u8 pp_directives_key_array_3[] = {0x69,0x66,0x64,0x65,0x66,};
|
||||
u8 pp_directives_key_array_5[] = {0x70,0x72,0x61,0x67,0x6d,0x61,};
|
||||
u8 pp_directives_key_array_6[] = {0x64,0x65,0x66,0x69,0x6e,0x65,};
|
||||
u8 pp_directives_key_array_8[] = {0x75,0x6e,0x64,0x65,0x66,};
|
||||
u8 pp_directives_key_array_9[] = {0x65,0x6c,0x69,0x66,};
|
||||
u8 pp_directives_key_array_10[] = {0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,};
|
||||
u8 pp_directives_key_array_11[] = {0x6c,0x69,0x6e,0x65,};
|
||||
u8 pp_directives_key_array_14[] = {0x65,0x6c,0x73,0x65,};
|
||||
u8 pp_directives_key_array_15[] = {0x65,0x72,0x72,0x6f,0x72,};
|
||||
u8 pp_directives_key_array_17[] = {0x75,0x73,0x69,0x6e,0x67,};
|
||||
u8 pp_directives_key_array_20[] = {0x69,0x66,0x6e,0x64,0x65,0x66,};
|
||||
u8 pp_directives_key_array_21[] = {0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,};
|
||||
u8 pp_directives_key_array_22[] = {0x65,0x6e,0x64,0x69,0x66,};
|
||||
u8 pp_directives_key_array_24[] = {0x69,0x6d,0x70,0x6f,0x72,0x74,};
|
||||
u8 pp_directives_key_array_0[] = {0x75,0x73,0x69,0x6e,0x67,};
|
||||
u8 pp_directives_key_array_2[] = {0x64,0x65,0x66,0x69,0x6e,0x65,};
|
||||
u8 pp_directives_key_array_3[] = {0x75,0x6e,0x64,0x65,0x66,};
|
||||
u8 pp_directives_key_array_4[] = {0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,};
|
||||
u8 pp_directives_key_array_6[] = {0x69,0x66,};
|
||||
u8 pp_directives_key_array_7[] = {0x65,0x6e,0x64,0x69,0x66,};
|
||||
u8 pp_directives_key_array_9[] = {0x65,0x6c,0x73,0x65,};
|
||||
u8 pp_directives_key_array_10[] = {0x65,0x6c,0x69,0x66,};
|
||||
u8 pp_directives_key_array_11[] = {0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,};
|
||||
u8 pp_directives_key_array_16[] = {0x69,0x6d,0x70,0x6f,0x72,0x74,};
|
||||
u8 pp_directives_key_array_17[] = {0x69,0x66,0x6e,0x64,0x65,0x66,};
|
||||
u8 pp_directives_key_array_18[] = {0x65,0x72,0x72,0x6f,0x72,};
|
||||
u8 pp_directives_key_array_20[] = {0x69,0x66,0x64,0x65,0x66,};
|
||||
u8 pp_directives_key_array_21[] = {0x70,0x72,0x61,0x67,0x6d,0x61,};
|
||||
u8 pp_directives_key_array_23[] = {0x6c,0x69,0x6e,0x65,};
|
||||
String_Const_u8 pp_directives_key_array[25] = {
|
||||
{pp_directives_key_array_0, 5},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_1, 2},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_2, 6},
|
||||
{pp_directives_key_array_3, 5},
|
||||
{pp_directives_key_array_4, 7},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_5, 6},
|
||||
{pp_directives_key_array_6, 6},
|
||||
{pp_directives_key_array_6, 2},
|
||||
{pp_directives_key_array_7, 5},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_8, 5},
|
||||
{pp_directives_key_array_9, 4},
|
||||
{pp_directives_key_array_10, 7},
|
||||
{pp_directives_key_array_11, 4},
|
||||
{pp_directives_key_array_10, 4},
|
||||
{pp_directives_key_array_11, 7},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_14, 4},
|
||||
{pp_directives_key_array_15, 5},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_17, 5},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_20, 6},
|
||||
{pp_directives_key_array_21, 7},
|
||||
{pp_directives_key_array_22, 5},
|
||||
{pp_directives_key_array_16, 6},
|
||||
{pp_directives_key_array_17, 6},
|
||||
{pp_directives_key_array_18, 5},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_20, 5},
|
||||
{pp_directives_key_array_21, 6},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_23, 4},
|
||||
{0, 0},
|
||||
{pp_directives_key_array_24, 6},
|
||||
};
|
||||
Lexeme_Table_Value pp_directives_value_array[25] = {
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPIf},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPIfDef},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPPragma},
|
||||
{5, TokenCppKind_PPDefine},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPUndef},
|
||||
{5, TokenCppKind_PPElIf},
|
||||
{5, TokenCppKind_PPInclude},
|
||||
{5, TokenCppKind_PPLine},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPElse},
|
||||
{5, TokenCppKind_PPError},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPUsing},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPDefine},
|
||||
{5, TokenCppKind_PPUndef},
|
||||
{5, TokenCppKind_PPInclude},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPIfNDef},
|
||||
{5, TokenCppKind_PPVersion},
|
||||
{5, TokenCppKind_PPIf},
|
||||
{5, TokenCppKind_PPEndIf},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPElse},
|
||||
{5, TokenCppKind_PPElIf},
|
||||
{5, TokenCppKind_PPVersion},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPImport},
|
||||
{5, TokenCppKind_PPIfNDef},
|
||||
{5, TokenCppKind_PPError},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPIfDef},
|
||||
{5, TokenCppKind_PPPragma},
|
||||
{0, 0},
|
||||
{5, TokenCppKind_PPLine},
|
||||
{0, 0},
|
||||
};
|
||||
i32 pp_directives_slot_count = 25;
|
||||
u64 pp_directives_seed = 0x8fec132e93357a37;
|
||||
u64 pp_directives_seed = 0x7dd6fc44901da387;
|
||||
u64 pp_keys_hash_array[2] = {
|
||||
0xaa00330834c0d751,0x0000000000000000,
|
||||
0x0000000000000000,0x3eb4becea6185ce7,
|
||||
};
|
||||
u8 pp_keys_key_array_0[] = {0x64,0x65,0x66,0x69,0x6e,0x65,0x64,};
|
||||
u8 pp_keys_key_array_1[] = {0x64,0x65,0x66,0x69,0x6e,0x65,0x64,};
|
||||
String_Const_u8 pp_keys_key_array[2] = {
|
||||
{pp_keys_key_array_0, 7},
|
||||
{0, 0},
|
||||
{pp_keys_key_array_1, 7},
|
||||
};
|
||||
Lexeme_Table_Value pp_keys_value_array[2] = {
|
||||
{4, TokenCppKind_PPDefined},
|
||||
{0, 0},
|
||||
{4, TokenCppKind_PPDefined},
|
||||
};
|
||||
i32 pp_keys_slot_count = 2;
|
||||
u64 pp_keys_seed = 0x444d48e552bc237e;
|
||||
u64 pp_keys_seed = 0x62441372bace9443;
|
||||
struct Lex_State_Cpp{
|
||||
u32 flags_ZF0;
|
||||
u32 flags_KF0;
|
||||
|
|
|
@ -348,19 +348,18 @@ system_save_file_sig(){
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
internal int_color
|
||||
swap_r_and_b(int_color a){
|
||||
int_color result = a & 0xff00ff00;
|
||||
internal ARGB_Color
|
||||
swap_r_and_b(ARGB_Color a){
|
||||
ARGB_Color result = a & 0xff00ff00;
|
||||
result |= ((a >> 16) & 0xff);
|
||||
result |= ((a & 0xff) << 16);
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal int_color
|
||||
int_color_from_colorref(COLORREF ref, int_color alpha_from){
|
||||
int_color rgb = swap_r_and_b(ref & 0xffffff);
|
||||
|
||||
int_color result = ((0xff000000 & alpha_from) | rgb);
|
||||
internal ARGB_Color
|
||||
int_color_from_colorref(COLORREF ref, ARGB_Color alpha_from){
|
||||
ARGB_Color rgb = swap_r_and_b(ref & 0xffffff);
|
||||
ARGB_Color result = ((0xff000000 & alpha_from) | rgb);
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
@ -383,17 +382,20 @@ color_picker_hook(HWND Window, UINT Message, WPARAM WParam, LPARAM LParam){
|
|||
|
||||
case WM_CTLCOLORSTATIC:
|
||||
{
|
||||
// NOTE(casey): I can't believe I'm 42 years old and I still have to do this fucking crap.
|
||||
// Microsoft is so fucking fired every god damn day. Would it have killed you to update rgbResult
|
||||
// continuously, or at least provide a GetCurrentColor() call???
|
||||
// NOTE(casey): I can't believe I'm 42 years old and I still have to do
|
||||
// this fucking crap. Microsoft is so fucking fired every god damn day.
|
||||
// Would it have killed you to update rgbResult continuously, or at least
|
||||
// provide a GetCurrentColor() call???
|
||||
//
|
||||
// Anyway, since the color picker doesn't tell us when the color is changed, what we do is watch for messages
|
||||
// that repaint the color swatch, which is dialog id 0x2c5, and then we sample it to see what color it is.
|
||||
// No, I'm not fucking kidding, that's what we do.
|
||||
// Anyway, since the color picker doesn't tell us when the color is
|
||||
// changed, what we do is watch for messages that repaint the color
|
||||
// swatch, which is dialog id 0x2c5, and then we sample it to see what
|
||||
// color it is. No, I'm not fucking kidding, that's what we do.
|
||||
HWND swatch_window = (HWND)LParam;
|
||||
if(GetDlgCtrlID(swatch_window) == 0x2c5)
|
||||
{
|
||||
CHOOSECOLORW *win32_params = (CHOOSECOLORW *)GetWindowLongPtr(Window, GWLP_USERDATA);
|
||||
CHOOSECOLORW *win32_params =
|
||||
(CHOOSECOLORW *)GetWindowLongPtr(Window, GWLP_USERDATA);
|
||||
if(win32_params)
|
||||
{
|
||||
Color_Picker *picker = (Color_Picker*)win32_params->lCustData;
|
||||
|
@ -401,8 +403,11 @@ color_picker_hook(HWND Window, UINT Message, WPARAM WParam, LPARAM LParam){
|
|||
RECT rect;
|
||||
GetClientRect(swatch_window, &rect);
|
||||
HDC swatch_dc = (HDC)WParam;
|
||||
COLORREF Probe = GetPixel(swatch_dc, (rect.left + rect.right) / 4, (rect.top + rect.bottom) / 2);
|
||||
int_color new_color = int_color_from_colorref(Probe, *picker->dest);
|
||||
COLORREF Probe = GetPixel(swatch_dc,
|
||||
(rect.left + rect.right)/4,
|
||||
(rect.top + rect.bottom)/2);
|
||||
ARGB_Color new_color =
|
||||
int_color_from_colorref(Probe, *picker->dest);
|
||||
|
||||
if(*picker->dest != new_color)
|
||||
{
|
||||
|
@ -433,9 +438,8 @@ color_picker_thread(LPVOID Param)
|
|||
{
|
||||
Color_Picker *picker = (Color_Picker*)Param;
|
||||
|
||||
int_color color = 0;
|
||||
if(picker->dest)
|
||||
{
|
||||
ARGB_Color color = 0;
|
||||
if (picker->dest){
|
||||
color = *picker->dest;
|
||||
}
|
||||
|
||||
|
@ -451,18 +455,15 @@ color_picker_thread(LPVOID Param)
|
|||
win32_params.lCustData = (LPARAM)picker;
|
||||
win32_params.lpfnHook = color_picker_hook;
|
||||
|
||||
if(ChooseColorW(&win32_params))
|
||||
{
|
||||
if (ChooseColorW(&win32_params)){
|
||||
color = int_color_from_colorref(win32_params.rgbResult, color);
|
||||
}
|
||||
|
||||
if(picker->dest)
|
||||
{
|
||||
if(picker->dest){
|
||||
*picker->dest = color;
|
||||
}
|
||||
|
||||
if(picker->finished)
|
||||
{
|
||||
if (picker->finished){
|
||||
*picker->finished = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue