New color scheme system up and running with dynamic meta-allocated-ids, arrays of colors in each slot, and full custom layer control
parent
c681ce5f7b
commit
dbb2671bd0
76
4ed.cpp
76
4ed.cpp
|
@ -9,67 +9,6 @@
|
|||
|
||||
// TOP
|
||||
|
||||
internal void
|
||||
fill_hardcode_default_style(Color_Table color_table){
|
||||
color_table.vals[Stag_Back] = 0xFF0C0C0C;
|
||||
color_table.vals[Stag_Margin] = 0xFF181818;
|
||||
color_table.vals[Stag_Margin_Hover] = 0xFF252525;
|
||||
color_table.vals[Stag_Margin_Active] = 0xFF323232;
|
||||
color_table.vals[Stag_List_Item] = color_table.vals[Stag_Margin];
|
||||
color_table.vals[Stag_List_Item_Hover] = color_table.vals[Stag_Margin_Hover];
|
||||
color_table.vals[Stag_List_Item_Active] = color_table.vals[Stag_Margin_Active];
|
||||
color_table.vals[Stag_Cursor] = 0xFF00EE00;
|
||||
color_table.vals[Stag_Highlight] = 0xFFDDEE00;
|
||||
color_table.vals[Stag_Mark] = 0xFF494949;
|
||||
color_table.vals[Stag_Default] = 0xFF90B080;
|
||||
color_table.vals[Stag_At_Cursor] = color_table.vals[Stag_Back];
|
||||
color_table.vals[Stag_Highlight_Cursor_Line] = 0xFF1E1E1E;
|
||||
color_table.vals[Stag_At_Highlight] = 0xFFFF44DD;
|
||||
color_table.vals[Stag_Comment] = 0xFF2090F0;
|
||||
color_table.vals[Stag_Keyword] = 0xFFD08F20;
|
||||
color_table.vals[Stag_Str_Constant] = 0xFF50FF30;
|
||||
color_table.vals[Stag_Char_Constant] = color_table.vals[Stag_Str_Constant];
|
||||
color_table.vals[Stag_Int_Constant] = color_table.vals[Stag_Str_Constant];
|
||||
color_table.vals[Stag_Float_Constant] = color_table.vals[Stag_Str_Constant];
|
||||
color_table.vals[Stag_Bool_Constant] = color_table.vals[Stag_Str_Constant];
|
||||
color_table.vals[Stag_Include] = color_table.vals[Stag_Str_Constant];
|
||||
color_table.vals[Stag_Preproc] = color_table.vals[Stag_Default];
|
||||
color_table.vals[Stag_Special_Character] = 0xFFFF0000;
|
||||
color_table.vals[Stag_Ghost_Character] = color_blend(color_table.vals[Stag_Default], 0.5f, color_table.vals[Stag_Back]);
|
||||
|
||||
color_table.vals[Stag_Paste] = 0xFFDDEE00;
|
||||
color_table.vals[Stag_Undo] = 0xFF00DDEE;
|
||||
|
||||
color_table.vals[Stag_Highlight_Junk] = 0xff3a0000;
|
||||
color_table.vals[Stag_Highlight_White] = 0xff003a3a;
|
||||
|
||||
color_table.vals[Stag_Bar] = 0xFF888888;
|
||||
color_table.vals[Stag_Base] = 0xFF000000;
|
||||
color_table.vals[Stag_Pop1] = 0xFF3C57DC;
|
||||
color_table.vals[Stag_Pop2] = 0xFFFF0000;
|
||||
|
||||
color_table.vals[Stag_Back_Cycle_1] = 0x10A00000;
|
||||
color_table.vals[Stag_Back_Cycle_2] = 0x0C00A000;
|
||||
color_table.vals[Stag_Back_Cycle_3] = 0x0C0000A0;
|
||||
color_table.vals[Stag_Back_Cycle_4] = 0x0CA0A000;
|
||||
color_table.vals[Stag_Text_Cycle_1] = 0xFFA00000;
|
||||
color_table.vals[Stag_Text_Cycle_2] = 0xFF00A000;
|
||||
color_table.vals[Stag_Text_Cycle_3] = 0xFF0030B0;
|
||||
color_table.vals[Stag_Text_Cycle_4] = 0xFFA0A000;
|
||||
|
||||
color_table.vals[Stag_Line_Numbers_Back] = 0xFF101010;
|
||||
color_table.vals[Stag_Line_Numbers_Text] = 0xFF404040;
|
||||
}
|
||||
|
||||
internal void
|
||||
app_hardcode_default_style(Models *models){
|
||||
Color_Table color_table = {};
|
||||
color_table.count = Stag_COUNT;
|
||||
color_table.vals = push_array(models->arena, u32, color_table.count);
|
||||
fill_hardcode_default_style(color_table);
|
||||
models->fallback_color_table = color_table;
|
||||
}
|
||||
|
||||
internal void
|
||||
init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings, i32 argc, char **argv){
|
||||
char *arg = 0;
|
||||
|
@ -337,7 +276,6 @@ App_Init_Sig(app_init){
|
|||
Face *new_face = font_set_new_face(&models->font_set, &description);
|
||||
models->global_face_id = new_face->id;
|
||||
}
|
||||
app_hardcode_default_style(models);
|
||||
|
||||
// NOTE(allen): title space
|
||||
models->has_new_title = true;
|
||||
|
@ -805,20 +743,6 @@ App_Step_Sig(app_step){
|
|||
frame.literal_dt = literal_dt;
|
||||
frame.animation_dt = animation_dt;
|
||||
|
||||
{
|
||||
Color_Table color_table = models->fallback_color_table;
|
||||
#if 0
|
||||
if (models->modify_color_table != 0){
|
||||
color_table = models->modify_color_table(&models->app_links, frame);
|
||||
if (color_table.count < models->fallback_color_table.count){
|
||||
block_copy(models->fallback_color_table.vals, color_table.vals, color_table.count*sizeof(*color_table.vals));
|
||||
color_table = models->fallback_color_table;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
models->color_table = color_table;
|
||||
}
|
||||
|
||||
Application_Links app = {};
|
||||
app.tctx = tctx;
|
||||
app.cmd_context = models;
|
||||
|
|
|
@ -1741,16 +1741,14 @@ view_set_buffer(Application_Links *app, View_ID view_id, Buffer_ID buffer_id, Se
|
|||
// TODO(allen): remove this!
|
||||
api(custom) function b32
|
||||
view_post_fade(Application_Links *app, View_ID view_id, f32 seconds, Range_i64 range,
|
||||
FColor color){
|
||||
ARGB_Color 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){
|
||||
Color_Table color_table = models->color_table;
|
||||
view_post_paste_effect(view, seconds, (i32)range.start, (i32)size,
|
||||
finalize_color(color_table, color));
|
||||
view_post_paste_effect(view, seconds, (i32)range.start, (i32)size, color);
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
|
@ -2018,6 +2016,13 @@ managed_scope_allocator(Application_Links *app, Managed_Scope scope)
|
|||
return(result);
|
||||
}
|
||||
|
||||
api(custom) function u64
|
||||
managed_id_group_highest_id(Application_Links *app, String_Const_u8 group){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Managed_ID_Set *set = &models->managed_id_set;
|
||||
return(managed_ids_group_highest_id(set, group));
|
||||
}
|
||||
|
||||
api(custom) function Managed_ID
|
||||
managed_id_declare(Application_Links *app, String_Const_u8 group, String_Const_u8 name)
|
||||
{
|
||||
|
@ -2772,37 +2777,6 @@ try_release_face(Application_Links *app, Face_ID id, Face_ID replacement_id)
|
|||
return(release_font_and_update(models, face, replacement));
|
||||
}
|
||||
|
||||
api(custom) function void
|
||||
set_theme_colors(Application_Links *app, Theme_Color *colors, i32 count)
|
||||
{
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Color_Table color_table = models->color_table;
|
||||
Theme_Color *theme_color = colors;
|
||||
for (i32 i = 0; i < count; ++i, ++theme_color){
|
||||
if (theme_color->tag < color_table.count){
|
||||
color_table.vals[theme_color->tag] = theme_color->color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
api(custom) function void
|
||||
get_theme_colors(Application_Links *app, Theme_Color *colors, i32 count)
|
||||
{
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Color_Table color_table = models->color_table;
|
||||
Theme_Color *theme_color = colors;
|
||||
for (i32 i = 0; i < count; ++i, ++theme_color){
|
||||
theme_color->color = finalize_color(color_table, theme_color->tag);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
return(finalize_color(color_table, color));
|
||||
}
|
||||
|
||||
api(custom) function String_Const_u8
|
||||
push_hot_directory(Application_Links *app, Arena *arena)
|
||||
{
|
||||
|
@ -2841,7 +2815,7 @@ set_window_title(Application_Links *app, String_Const_u8 title)
|
|||
}
|
||||
|
||||
api(custom) function Vec2_f32
|
||||
draw_string_oriented(Application_Links *app, Face_ID font_id, FColor color,
|
||||
draw_string_oriented(Application_Links *app, Face_ID font_id, ARGB_Color color,
|
||||
String_Const_u8 str, Vec2_f32 point, u32 flags, Vec2_f32 delta)
|
||||
{
|
||||
Vec2_f32 result = point;
|
||||
|
@ -2852,9 +2826,7 @@ draw_string_oriented(Application_Links *app, Face_ID font_id, FColor color,
|
|||
result += delta*width;
|
||||
}
|
||||
else{
|
||||
Color_Table color_table = models->color_table;
|
||||
u32 actual_color = finalize_color(color_table, color);
|
||||
f32 width = draw_string(models->target, face, str, point, actual_color, flags, delta);
|
||||
f32 width = draw_string(models->target, face, str, point, color, flags, delta);
|
||||
result += delta*width;
|
||||
}
|
||||
return(result);
|
||||
|
@ -2869,23 +2841,18 @@ 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, FColor color){
|
||||
draw_rectangle(Application_Links *app, Rect_f32 rect, f32 roundness, ARGB_Color color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
if (models->in_render_mode){
|
||||
Color_Table color_table = models->color_table;
|
||||
u32 actual_color = finalize_color(color_table, color);
|
||||
draw_rectangle(models->target, rect, roundness, actual_color);
|
||||
draw_rectangle(models->target, rect, roundness, color);
|
||||
}
|
||||
}
|
||||
|
||||
api(custom) function void
|
||||
draw_rectangle_outline(Application_Links *app, Rect_f32 rect,
|
||||
f32 roundness, f32 thickness, FColor color){
|
||||
draw_rectangle_outline(Application_Links *app, Rect_f32 rect, f32 roundness, f32 thickness, ARGB_Color color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
if (models->in_render_mode){
|
||||
Color_Table color_table = models->color_table;
|
||||
u32 actual_color = finalize_color(color_table, color);
|
||||
draw_rectangle_outline(models->target, rect, roundness, thickness, actual_color);
|
||||
draw_rectangle_outline(models->target, rect, roundness, thickness, color);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2932,11 +2899,7 @@ 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);
|
||||
FColor *colors_array = push_array(arena, FColor, item_count);
|
||||
for (i64 i = 0; i < item_count; i += 1){
|
||||
colors_array[i].a_byte = 0;
|
||||
colors_array[i].id = Stag_Default;
|
||||
}
|
||||
ARGB_Color *colors_array = push_array_zero(arena, ARGB_Color, item_count);
|
||||
result = text_layout_new(&models->text_layouts, arena, buffer_id, buffer_point,
|
||||
visible_range, visible_line_number_range, rect, colors_array,
|
||||
layout_func);
|
||||
|
@ -3086,7 +3049,7 @@ 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,
|
||||
FColor color){
|
||||
ARGB_Color color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Rect_f32 result = {};
|
||||
Text_Layout *layout = text_layout_get(&models->text_layouts, layout_id);
|
||||
|
@ -3095,7 +3058,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;
|
||||
FColor *color_ptr = layout->item_colors + range.min;
|
||||
ARGB_Color *color_ptr = layout->item_colors + range.min;
|
||||
for (i64 i = range.min; i < range.max; i += 1, color_ptr += 1){
|
||||
*color_ptr = color;
|
||||
}
|
||||
|
@ -3109,11 +3072,11 @@ 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){
|
||||
draw_text_layout(Application_Links *app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Text_Layout *layout = text_layout_get(&models->text_layouts, layout_id);
|
||||
if (layout != 0 && models->target != 0){
|
||||
text_layout_render(app->tctx, models, layout);
|
||||
text_layout_render(app->tctx, models, layout, special_color, ghost_color);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -76,8 +76,7 @@ struct Models{
|
|||
Buffer_Region_Function *buffer_region;
|
||||
Layout_Function *layout_func;
|
||||
|
||||
Color_Table fallback_color_table;
|
||||
Color_Table color_table;
|
||||
Color_Table color_table_;
|
||||
|
||||
Model_View_Command_Function *free_view_cmd_funcs;
|
||||
Model_View_Command_Function *first_view_cmd_func;
|
||||
|
|
|
@ -15,6 +15,20 @@ managed_ids_init(Base_Allocator *allocator, Managed_ID_Set *set){
|
|||
set->name_to_group_table = make_table_Data_u64(allocator, 20);
|
||||
}
|
||||
|
||||
internal Managed_ID
|
||||
managed_ids_group_highest_id(Managed_ID_Set *set, String_Const_u8 group_name){
|
||||
Managed_ID result = 0;
|
||||
Data data = make_data(group_name.str, group_name.size);
|
||||
Table_Lookup lookup = table_lookup(&set->name_to_group_table, data);
|
||||
if (lookup.found_match){
|
||||
u64 val = 0;
|
||||
table_read(&set->name_to_group_table, lookup, &val);
|
||||
Managed_ID_Group *group = (Managed_ID_Group*)IntAsPtr(val);
|
||||
result = group->id_counter - 1;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal Managed_ID
|
||||
managed_ids_declare(Managed_ID_Set *set, String_Const_u8 group_name, String_Const_u8 name){
|
||||
Managed_ID_Group *group = 0;
|
||||
|
|
|
@ -1,136 +1,131 @@
|
|||
/*
|
||||
* Mr. 4th Dimention - Allen Webster
|
||||
*
|
||||
* 31.03.2019
|
||||
*
|
||||
* Text layout representation
|
||||
*
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
internal void
|
||||
text_layout_init(Thread_Context *tctx, Text_Layout_Container *container){
|
||||
block_zero_struct(container);
|
||||
container->node_arena = reserve_arena(tctx);
|
||||
container->table = make_table_u64_u64(tctx->allocator, 20);
|
||||
}
|
||||
|
||||
internal Text_Layout*
|
||||
text_layout_new__alloc_layout(Text_Layout_Container *container){
|
||||
Text_Layout *node = container->free_nodes;
|
||||
if (node == 0){
|
||||
node = push_array(container->node_arena, Text_Layout, 1);
|
||||
}
|
||||
else{
|
||||
sll_stack_pop(container->free_nodes);
|
||||
}
|
||||
return(node);
|
||||
}
|
||||
|
||||
internal void
|
||||
text_layout_release(Thread_Context *tctx, Models *models, Text_Layout_Container *container, Text_Layout *layout){
|
||||
release_arena(tctx, layout->arena);
|
||||
sll_stack_push(container->free_nodes, layout);
|
||||
}
|
||||
|
||||
internal Text_Layout_ID
|
||||
text_layout_new(Text_Layout_Container *container, Arena *arena,
|
||||
Buffer_ID buffer_id, Buffer_Point point,
|
||||
Range_i64 visible_range, Interval_i64 visible_line_number_range,
|
||||
Rect_f32 rect, FColor *item_colors, Layout_Function *layout_func){
|
||||
Text_Layout *new_layout_data = text_layout_new__alloc_layout(container);
|
||||
new_layout_data->arena = arena;
|
||||
new_layout_data->buffer_id = buffer_id;
|
||||
new_layout_data->point = point;
|
||||
new_layout_data->visible_range = visible_range;
|
||||
new_layout_data->visible_line_number_range = visible_line_number_range;
|
||||
new_layout_data->rect = rect;
|
||||
new_layout_data->item_colors = item_colors;
|
||||
new_layout_data->layout_func = layout_func;
|
||||
Text_Layout_ID new_id = ++container->id_counter;
|
||||
table_insert(&container->table, new_id, (u64)PtrAsInt(new_layout_data));
|
||||
return(new_id);
|
||||
}
|
||||
|
||||
internal Text_Layout*
|
||||
text_layout_get(Text_Layout_Container *container, Text_Layout_ID id){
|
||||
Text_Layout *result = 0;
|
||||
Table_Lookup lookup = table_lookup(&container->table, id);
|
||||
if (lookup.found_match){
|
||||
u64 ptr_val = 0;
|
||||
table_read(&container->table, lookup, &ptr_val);
|
||||
result = (Text_Layout*)IntAsPtr(ptr_val);
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal b32
|
||||
text_layout_erase(Thread_Context *tctx, Models *models, Text_Layout_Container *container, Text_Layout_ID id){
|
||||
b32 result = false;
|
||||
Table_Lookup lookup = table_lookup(&container->table, id);
|
||||
if (lookup.found_match){
|
||||
u64 ptr_val = 0;
|
||||
table_read(&container->table, lookup, &ptr_val);
|
||||
Text_Layout *ptr = (Text_Layout*)IntAsPtr(ptr_val);
|
||||
text_layout_release(tctx, models, container, ptr);
|
||||
table_erase(&container->table, lookup);
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal void
|
||||
text_layout_render(Thread_Context *tctx, Models *models, Text_Layout *layout){
|
||||
Editing_File *file = imp_get_file(models, layout->buffer_id);
|
||||
if (file != 0){
|
||||
Render_Target *target = models->target;
|
||||
Color_Table color_table = models->color_table;
|
||||
Face *face = file_get_face(models, file);
|
||||
f32 width = rect_width(layout->rect);
|
||||
|
||||
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;
|
||||
i64 line_number = layout->visible_line_number_range.min;
|
||||
i64 line_number_last = layout->visible_line_number_range.max;
|
||||
Layout_Function *layout_func = layout->layout_func;
|
||||
for (;line_number <= line_number_last; line_number += 1){
|
||||
Layout_Item_List line = file_get_line_layout(tctx, models, file,
|
||||
layout_func, width, face,
|
||||
line_number);
|
||||
for (Layout_Item_Block *block = line.first;
|
||||
block != 0;
|
||||
block = block->next){
|
||||
Layout_Item *item = block->items;
|
||||
i64 count = block->item_count;
|
||||
FColor *item_colors = layout->item_colors;
|
||||
for (i32 i = 0; i < count; i += 1, item += 1){
|
||||
if (item->codepoint != 0){
|
||||
ARGB_Color color = 0;
|
||||
if (HasFlag(item->flags, LayoutItemFlag_Special_Character)){
|
||||
color = special_color;
|
||||
}
|
||||
else if (HasFlag(item->flags, LayoutItemFlag_Ghost_Character)){
|
||||
color = ghost_color;
|
||||
}
|
||||
else{
|
||||
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, color, GlyphFlag_None);
|
||||
}
|
||||
}
|
||||
}
|
||||
shift_p.y += line.height;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// BOTTOM
|
||||
/*
|
||||
* Mr. 4th Dimention - Allen Webster
|
||||
*
|
||||
* 31.03.2019
|
||||
*
|
||||
* Text layout representation
|
||||
*
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
internal void
|
||||
text_layout_init(Thread_Context *tctx, Text_Layout_Container *container){
|
||||
block_zero_struct(container);
|
||||
container->node_arena = reserve_arena(tctx);
|
||||
container->table = make_table_u64_u64(tctx->allocator, 20);
|
||||
}
|
||||
|
||||
internal Text_Layout*
|
||||
text_layout_new__alloc_layout(Text_Layout_Container *container){
|
||||
Text_Layout *node = container->free_nodes;
|
||||
if (node == 0){
|
||||
node = push_array(container->node_arena, Text_Layout, 1);
|
||||
}
|
||||
else{
|
||||
sll_stack_pop(container->free_nodes);
|
||||
}
|
||||
return(node);
|
||||
}
|
||||
|
||||
internal void
|
||||
text_layout_release(Thread_Context *tctx, Models *models, Text_Layout_Container *container, Text_Layout *layout){
|
||||
release_arena(tctx, layout->arena);
|
||||
sll_stack_push(container->free_nodes, layout);
|
||||
}
|
||||
|
||||
internal Text_Layout_ID
|
||||
text_layout_new(Text_Layout_Container *container, Arena *arena,
|
||||
Buffer_ID buffer_id, Buffer_Point point,
|
||||
Range_i64 visible_range, Range_i64 visible_line_number_range,
|
||||
Rect_f32 rect, ARGB_Color *item_colors, Layout_Function *layout_func){
|
||||
Text_Layout *new_layout_data = text_layout_new__alloc_layout(container);
|
||||
new_layout_data->arena = arena;
|
||||
new_layout_data->buffer_id = buffer_id;
|
||||
new_layout_data->point = point;
|
||||
new_layout_data->visible_range = visible_range;
|
||||
new_layout_data->visible_line_number_range = visible_line_number_range;
|
||||
new_layout_data->rect = rect;
|
||||
new_layout_data->item_colors = item_colors;
|
||||
new_layout_data->layout_func = layout_func;
|
||||
Text_Layout_ID new_id = ++container->id_counter;
|
||||
table_insert(&container->table, new_id, (u64)PtrAsInt(new_layout_data));
|
||||
return(new_id);
|
||||
}
|
||||
|
||||
internal Text_Layout*
|
||||
text_layout_get(Text_Layout_Container *container, Text_Layout_ID id){
|
||||
Text_Layout *result = 0;
|
||||
Table_Lookup lookup = table_lookup(&container->table, id);
|
||||
if (lookup.found_match){
|
||||
u64 ptr_val = 0;
|
||||
table_read(&container->table, lookup, &ptr_val);
|
||||
result = (Text_Layout*)IntAsPtr(ptr_val);
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal b32
|
||||
text_layout_erase(Thread_Context *tctx, Models *models, Text_Layout_Container *container, Text_Layout_ID id){
|
||||
b32 result = false;
|
||||
Table_Lookup lookup = table_lookup(&container->table, id);
|
||||
if (lookup.found_match){
|
||||
u64 ptr_val = 0;
|
||||
table_read(&container->table, lookup, &ptr_val);
|
||||
Text_Layout *ptr = (Text_Layout*)IntAsPtr(ptr_val);
|
||||
text_layout_release(tctx, models, container, ptr);
|
||||
table_erase(&container->table, lookup);
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal void
|
||||
text_layout_render(Thread_Context *tctx, Models *models, Text_Layout *layout,
|
||||
ARGB_Color special_color, ARGB_Color ghost_color){
|
||||
Editing_File *file = imp_get_file(models, layout->buffer_id);
|
||||
if (file != 0){
|
||||
Render_Target *target = models->target;
|
||||
Face *face = file_get_face(models, file);
|
||||
f32 width = rect_width(layout->rect);
|
||||
|
||||
Vec2_f32 shift_p = layout->rect.p0 - layout->point.pixel_shift;
|
||||
i64 first_index = layout->visible_range.first;
|
||||
i64 line_number = layout->visible_line_number_range.min;
|
||||
i64 line_number_last = layout->visible_line_number_range.max;
|
||||
Layout_Function *layout_func = layout->layout_func;
|
||||
for (;line_number <= line_number_last; line_number += 1){
|
||||
Layout_Item_List line = file_get_line_layout(tctx, models, file,
|
||||
layout_func, width, face,
|
||||
line_number);
|
||||
for (Layout_Item_Block *block = line.first;
|
||||
block != 0;
|
||||
block = block->next){
|
||||
Layout_Item *item = block->items;
|
||||
i64 count = block->item_count;
|
||||
ARGB_Color *item_colors = layout->item_colors;
|
||||
for (i32 i = 0; i < count; i += 1, item += 1){
|
||||
if (item->codepoint != 0){
|
||||
ARGB_Color color = 0;
|
||||
if (HasFlag(item->flags, LayoutItemFlag_Special_Character)){
|
||||
color = special_color;
|
||||
}
|
||||
else if (HasFlag(item->flags, LayoutItemFlag_Ghost_Character)){
|
||||
color = ghost_color;
|
||||
}
|
||||
else{
|
||||
color = item_colors[item->index - first_index];
|
||||
}
|
||||
Vec2_f32 p = item->rect.p0 + shift_p;
|
||||
draw_font_glyph(target, face, item->codepoint, p, color, GlyphFlag_None);
|
||||
}
|
||||
}
|
||||
}
|
||||
shift_p.y += line.height;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// BOTTOM
|
||||
|
|
|
@ -21,7 +21,7 @@ union Text_Layout{
|
|||
Interval_i64 visible_range;
|
||||
Interval_i64 visible_line_number_range;
|
||||
Rect_f32 rect;
|
||||
FColor *item_colors;
|
||||
ARGB_Color *item_colors;
|
||||
Layout_Function *layout_func;
|
||||
};
|
||||
};
|
||||
|
|
16
4ed_view.cpp
16
4ed_view.cpp
|
@ -793,22 +793,6 @@ release_font_and_update(Models *models, Face *face, Face *replacement_face){
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
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(result);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal View*
|
||||
imp_get_view(Models *models, View_ID view_id){
|
||||
Live_Views *view_set = &models->view_set;
|
||||
|
|
|
@ -1593,173 +1593,6 @@ CUSTOM_DOC("Reopen the current buffer from the hard drive.")
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
CUSTOM_COMMAND_SIG(multi_paste){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
i32 count = clipboard_count(app, 0);
|
||||
if (count > 0){
|
||||
View_ID view = get_active_view(app, Access_ReadWriteVisible);
|
||||
Managed_Scope scope = view_get_managed_scope(app, view);
|
||||
|
||||
Rewrite_Type *rewrite = scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type);
|
||||
if (*rewrite == Rewrite_Paste){
|
||||
Rewrite_Type *next_rewrite = scope_attachment(app, scope, view_next_rewrite_loc, Rewrite_Type);
|
||||
*next_rewrite = Rewrite_Paste;
|
||||
i32 *paste_index_ptr = scope_attachment(app, scope, view_paste_index_loc, i32);
|
||||
i32 paste_index = (*paste_index_ptr) + 1;
|
||||
*paste_index_ptr = paste_index;
|
||||
|
||||
String_Const_u8 string = push_clipboard_index(app, scratch, 0, paste_index);
|
||||
|
||||
String_Const_u8 insert_string = push_u8_stringf(scratch, "\n%.*s", string_expand(string));
|
||||
|
||||
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
|
||||
Range_i64 range = get_view_range(app, view);
|
||||
buffer_replace_range(app, buffer, Ii64(range.max), insert_string);
|
||||
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));
|
||||
|
||||
view_post_fade(app, view, 0.667f,
|
||||
Ii64(range.max + 1, range.max + insert_string.size),
|
||||
fcolor_id(Stag_Paste));
|
||||
}
|
||||
else{
|
||||
paste(app);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Range_i64
|
||||
multi_paste_range(Application_Links *app, View_ID view, Range_i64 range, i32 paste_count, b32 old_to_new){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
Range_i64 finish_range = range;
|
||||
if (paste_count >= 1){
|
||||
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
|
||||
if (buffer != 0){
|
||||
i64 total_size = 0;
|
||||
for (i32 paste_index = 0; paste_index < paste_count; ++paste_index){
|
||||
Temp_Memory temp = begin_temp(scratch);
|
||||
String_Const_u8 string = push_clipboard_index(app, scratch, 0, paste_index);
|
||||
total_size += string.size + 1;
|
||||
end_temp(temp);
|
||||
}
|
||||
total_size -= 1;
|
||||
|
||||
i32 first = paste_count - 1;
|
||||
i32 one_past_last = -1;
|
||||
i32 step = -1;
|
||||
if (!old_to_new){
|
||||
first = 0;
|
||||
one_past_last = paste_count;
|
||||
step = 1;
|
||||
}
|
||||
|
||||
List_String_Const_u8 list = {};
|
||||
|
||||
for (i32 paste_index = first; paste_index != one_past_last; paste_index += step){
|
||||
if (paste_index != first){
|
||||
string_list_push(scratch, &list, SCu8("\n", 1));
|
||||
}
|
||||
String_Const_u8 string = push_clipboard_index(app, scratch, 0, paste_index);
|
||||
if (string.size > 0){
|
||||
string_list_push(scratch, &list, string);
|
||||
}
|
||||
}
|
||||
|
||||
String_Const_u8 flattened = string_list_flatten(scratch, list);
|
||||
|
||||
buffer_replace_range(app, buffer, range, flattened);
|
||||
i64 pos = range.min;
|
||||
finish_range.min = pos;
|
||||
finish_range.max = pos + total_size;
|
||||
view_set_mark(app, view, seek_pos(finish_range.min));
|
||||
view_set_cursor_and_preferred_x(app, view, seek_pos(finish_range.max));
|
||||
|
||||
// TODO(allen): Send this to all views.
|
||||
view_post_fade(app, view, 0.667f, finish_range, fcolor_id(Stag_Paste));
|
||||
}
|
||||
}
|
||||
return(finish_range);
|
||||
}
|
||||
|
||||
function void
|
||||
multi_paste_interactive_up_down(Application_Links *app, i32 paste_count, i32 clip_count){
|
||||
View_ID view = get_active_view(app, Access_ReadWriteVisible);
|
||||
i64 pos = view_get_cursor_pos(app, view);
|
||||
b32 old_to_new = true;
|
||||
Range_i64 range = multi_paste_range(app, view, Ii64(pos), paste_count, old_to_new);
|
||||
|
||||
Query_Bar_Group group(app);
|
||||
Query_Bar bar = {};
|
||||
bar.prompt = string_u8_litexpr("Up and Down to condense and expand paste stages; R to reverse order; Return to finish; Escape to abort.");
|
||||
if (start_query_bar(app, &bar, 0) == 0) return;
|
||||
|
||||
User_Input in = {};
|
||||
for (;;){
|
||||
in = get_next_input(app, EventProperty_AnyKey, EventProperty_Escape);
|
||||
if (in.abort) break;
|
||||
|
||||
b32 did_modify = false;
|
||||
if (match_key_code(&in, KeyCode_Up)){
|
||||
if (paste_count > 1){
|
||||
--paste_count;
|
||||
did_modify = true;
|
||||
}
|
||||
}
|
||||
else if (match_key_code(&in, KeyCode_Down)){
|
||||
if (paste_count < clip_count){
|
||||
++paste_count;
|
||||
did_modify = true;
|
||||
}
|
||||
}
|
||||
else if (match_key_code(&in, KeyCode_R)){
|
||||
old_to_new = !old_to_new;
|
||||
did_modify = true;
|
||||
}
|
||||
else if (match_key_code(&in, KeyCode_Return)){
|
||||
break;
|
||||
}
|
||||
|
||||
if (did_modify){
|
||||
range = multi_paste_range(app, view, range, paste_count, old_to_new);
|
||||
}
|
||||
}
|
||||
|
||||
if (in.abort){
|
||||
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
|
||||
buffer_replace_range(app, buffer, range, SCu8(""));
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(multi_paste_interactive){
|
||||
i32 clip_count = clipboard_count(app, 0);
|
||||
if (clip_count > 0){
|
||||
multi_paste_interactive_up_down(app, 1, clip_count);
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(multi_paste_interactive_quick){
|
||||
i32 clip_count = clipboard_count(app, 0);
|
||||
if (clip_count > 0){
|
||||
u8 string_space[256];
|
||||
Query_Bar_Group group(app);
|
||||
Query_Bar bar = {};
|
||||
bar.prompt = string_u8_litexpr("How Many Slots To Paste: ");
|
||||
bar.string = SCu8(string_space, (umem)0);
|
||||
bar.string_capacity = sizeof(string_space);
|
||||
query_user_number(app, &bar);
|
||||
|
||||
i32 initial_paste_count = (i32)string_to_integer(bar.string, 10);
|
||||
initial_paste_count = clamp(1, initial_paste_count, clip_count);
|
||||
end_query_bar(app, &bar, 0);
|
||||
|
||||
multi_paste_interactive_up_down(app, initial_paste_count, clip_count);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal i32
|
||||
record_get_new_cursor_position_undo(Application_Links *app, Buffer_ID buffer_id, History_Record_Index index, Record_Info record){
|
||||
i32 new_edit_position = 0;
|
||||
|
|
|
@ -62,7 +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.
|
||||
view_post_fade(app, view, 0.667f, Ii64_size(pos, string.size), fcolor_id(Stag_Paste));
|
||||
ARGB_Color argb = fcolor_resolve(fcolor_id(defcolor_paste));
|
||||
view_post_fade(app, view, 0.667f, Ii64_size(pos, string.size), argb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -97,7 +98,8 @@ CUSTOM_DOC("If the previous command was paste or paste_next, replaces the paste
|
|||
buffer_replace_range(app, buffer, range, string);
|
||||
view_set_cursor_and_preferred_x(app, view, seek_pos(pos + string.size));
|
||||
|
||||
view_post_fade(app, view, 0.667f, Ii64_size(pos, string.size), fcolor_id(Stag_Paste));
|
||||
ARGB_Color argb = fcolor_resolve(fcolor_id(defcolor_paste));
|
||||
view_post_fade(app, view, 0.667f, Ii64_size(pos, string.size), argb);
|
||||
}
|
||||
else{
|
||||
paste(app);
|
||||
|
@ -119,5 +121,174 @@ CUSTOM_DOC("Paste the next item on the clipboard and run auto-indent on the newl
|
|||
auto_indent_range(app);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
CUSTOM_COMMAND_SIG(multi_paste){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
i32 count = clipboard_count(app, 0);
|
||||
if (count > 0){
|
||||
View_ID view = get_active_view(app, Access_ReadWriteVisible);
|
||||
Managed_Scope scope = view_get_managed_scope(app, view);
|
||||
|
||||
Rewrite_Type *rewrite = scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type);
|
||||
if (*rewrite == Rewrite_Paste){
|
||||
Rewrite_Type *next_rewrite = scope_attachment(app, scope, view_next_rewrite_loc, Rewrite_Type);
|
||||
*next_rewrite = Rewrite_Paste;
|
||||
i32 *paste_index_ptr = scope_attachment(app, scope, view_paste_index_loc, i32);
|
||||
i32 paste_index = (*paste_index_ptr) + 1;
|
||||
*paste_index_ptr = paste_index;
|
||||
|
||||
String_Const_u8 string = push_clipboard_index(app, scratch, 0, paste_index);
|
||||
|
||||
String_Const_u8 insert_string = push_u8_stringf(scratch, "\n%.*s", string_expand(string));
|
||||
|
||||
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
|
||||
Range_i64 range = get_view_range(app, view);
|
||||
buffer_replace_range(app, buffer, Ii64(range.max), insert_string);
|
||||
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));
|
||||
|
||||
ARGB_Color argb = fcolor_resolve(fcolor_id(defcolor_paste));
|
||||
view_post_fade(app, view, 0.667f,
|
||||
Ii64(range.max + 1, range.max + insert_string.size),
|
||||
argb);
|
||||
}
|
||||
else{
|
||||
paste(app);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Range_i64
|
||||
multi_paste_range(Application_Links *app, View_ID view, Range_i64 range, i32 paste_count, b32 old_to_new){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
Range_i64 finish_range = range;
|
||||
if (paste_count >= 1){
|
||||
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
|
||||
if (buffer != 0){
|
||||
i64 total_size = 0;
|
||||
for (i32 paste_index = 0; paste_index < paste_count; ++paste_index){
|
||||
Temp_Memory temp = begin_temp(scratch);
|
||||
String_Const_u8 string = push_clipboard_index(app, scratch, 0, paste_index);
|
||||
total_size += string.size + 1;
|
||||
end_temp(temp);
|
||||
}
|
||||
total_size -= 1;
|
||||
|
||||
i32 first = paste_count - 1;
|
||||
i32 one_past_last = -1;
|
||||
i32 step = -1;
|
||||
if (!old_to_new){
|
||||
first = 0;
|
||||
one_past_last = paste_count;
|
||||
step = 1;
|
||||
}
|
||||
|
||||
List_String_Const_u8 list = {};
|
||||
|
||||
for (i32 paste_index = first; paste_index != one_past_last; paste_index += step){
|
||||
if (paste_index != first){
|
||||
string_list_push(scratch, &list, SCu8("\n", 1));
|
||||
}
|
||||
String_Const_u8 string = push_clipboard_index(app, scratch, 0, paste_index);
|
||||
if (string.size > 0){
|
||||
string_list_push(scratch, &list, string);
|
||||
}
|
||||
}
|
||||
|
||||
String_Const_u8 flattened = string_list_flatten(scratch, list);
|
||||
|
||||
buffer_replace_range(app, buffer, range, flattened);
|
||||
i64 pos = range.min;
|
||||
finish_range.min = pos;
|
||||
finish_range.max = pos + total_size;
|
||||
view_set_mark(app, view, seek_pos(finish_range.min));
|
||||
view_set_cursor_and_preferred_x(app, view, seek_pos(finish_range.max));
|
||||
|
||||
// TODO(allen): Send this to all views.
|
||||
ARGB_Color argb = fcolor_resolve(fcolor_id(defcolor_paste));
|
||||
view_post_fade(app, view, 0.667f, finish_range, argb);
|
||||
}
|
||||
}
|
||||
return(finish_range);
|
||||
}
|
||||
|
||||
function void
|
||||
multi_paste_interactive_up_down(Application_Links *app, i32 paste_count, i32 clip_count){
|
||||
View_ID view = get_active_view(app, Access_ReadWriteVisible);
|
||||
i64 pos = view_get_cursor_pos(app, view);
|
||||
b32 old_to_new = true;
|
||||
Range_i64 range = multi_paste_range(app, view, Ii64(pos), paste_count, old_to_new);
|
||||
|
||||
Query_Bar_Group group(app);
|
||||
Query_Bar bar = {};
|
||||
bar.prompt = string_u8_litexpr("Up and Down to condense and expand paste stages; R to reverse order; Return to finish; Escape to abort.");
|
||||
if (start_query_bar(app, &bar, 0) == 0) return;
|
||||
|
||||
User_Input in = {};
|
||||
for (;;){
|
||||
in = get_next_input(app, EventProperty_AnyKey, EventProperty_Escape);
|
||||
if (in.abort) break;
|
||||
|
||||
b32 did_modify = false;
|
||||
if (match_key_code(&in, KeyCode_Up)){
|
||||
if (paste_count > 1){
|
||||
--paste_count;
|
||||
did_modify = true;
|
||||
}
|
||||
}
|
||||
else if (match_key_code(&in, KeyCode_Down)){
|
||||
if (paste_count < clip_count){
|
||||
++paste_count;
|
||||
did_modify = true;
|
||||
}
|
||||
}
|
||||
else if (match_key_code(&in, KeyCode_R)){
|
||||
old_to_new = !old_to_new;
|
||||
did_modify = true;
|
||||
}
|
||||
else if (match_key_code(&in, KeyCode_Return)){
|
||||
break;
|
||||
}
|
||||
|
||||
if (did_modify){
|
||||
range = multi_paste_range(app, view, range, paste_count, old_to_new);
|
||||
}
|
||||
}
|
||||
|
||||
if (in.abort){
|
||||
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
|
||||
buffer_replace_range(app, buffer, range, SCu8(""));
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(multi_paste_interactive){
|
||||
i32 clip_count = clipboard_count(app, 0);
|
||||
if (clip_count > 0){
|
||||
multi_paste_interactive_up_down(app, 1, clip_count);
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(multi_paste_interactive_quick){
|
||||
i32 clip_count = clipboard_count(app, 0);
|
||||
if (clip_count > 0){
|
||||
u8 string_space[256];
|
||||
Query_Bar_Group group(app);
|
||||
Query_Bar bar = {};
|
||||
bar.prompt = string_u8_litexpr("How Many Slots To Paste: ");
|
||||
bar.string = SCu8(string_space, (umem)0);
|
||||
bar.string_capacity = sizeof(string_space);
|
||||
query_user_number(app, &bar);
|
||||
|
||||
i32 initial_paste_count = (i32)string_to_integer(bar.string, 10);
|
||||
initial_paste_count = clamp(1, initial_paste_count, clip_count);
|
||||
end_query_bar(app, &bar, 0);
|
||||
|
||||
multi_paste_interactive_up_down(app, initial_paste_count, clip_count);
|
||||
}
|
||||
}
|
||||
|
||||
// BOTTOM
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ custom_layer_init(Application_Links *app){
|
|||
ProfileThreadName(tctx, list, string_u8_litexpr("main"));
|
||||
|
||||
initialize_managed_id_metadata(app);
|
||||
set_default_color_scheme(app);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,140 @@
|
|||
/*
|
||||
* Default color slots
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
function Color_Array
|
||||
finalize_color_array(Color_Table table, u64 id){
|
||||
return(table.arrays[id % table.count]);
|
||||
}
|
||||
|
||||
function ARGB_Color
|
||||
finalize_color(Color_Array array, i32 sub_index){
|
||||
ARGB_Color result = 0xFFFFFFFF;
|
||||
if (array.count > 0){
|
||||
result = array.vals[sub_index % array.count];
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
function ARGB_Color
|
||||
finalize_color(Color_Table color_table, u64 id, i32 sub_index){
|
||||
Color_Array array = finalize_color_array(color_table, id);
|
||||
return(finalize_color(array, sub_index));
|
||||
}
|
||||
|
||||
function Color_Array
|
||||
finalize_color_array(u64 id){
|
||||
return(finalize_color_array(active_color_table, id));
|
||||
}
|
||||
|
||||
function ARGB_Color
|
||||
finalize_color(u64 id, i32 sub_index){
|
||||
return(finalize_color(active_color_table, id, sub_index));
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
function Color_Array
|
||||
make_colors(Arena *arena, ARGB_Color color){
|
||||
Color_Array result = {};
|
||||
result.count = 1;
|
||||
result.vals = push_array(arena, ARGB_Color, 1);
|
||||
result.vals[0] = color;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function Color_Array
|
||||
make_colors(Arena *arena, ARGB_Color c1, ARGB_Color c2){
|
||||
Color_Array result = {};
|
||||
result.count = 2;
|
||||
result.vals = push_array(arena, ARGB_Color, 2);
|
||||
result.vals[0] = c1;
|
||||
result.vals[1] = c2;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function Color_Array
|
||||
make_colors(Arena *arena, ARGB_Color c1, ARGB_Color c2, ARGB_Color c3){
|
||||
Color_Array result = {};
|
||||
result.count = 3;
|
||||
result.vals = push_array(arena, ARGB_Color, 3);
|
||||
result.vals[0] = c1;
|
||||
result.vals[1] = c2;
|
||||
result.vals[2] = c3;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function Color_Array
|
||||
make_colors(Arena *arena, ARGB_Color c1, ARGB_Color c2, ARGB_Color c3, ARGB_Color c4){
|
||||
Color_Array result = {};
|
||||
result.count = 4;
|
||||
result.vals = push_array(arena, ARGB_Color, 4);
|
||||
result.vals[0] = c1;
|
||||
result.vals[1] = c2;
|
||||
result.vals[2] = c3;
|
||||
result.vals[3] = c4;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function Color_Array
|
||||
make_colors(Arena *arena, ARGB_Color *colors, i32 count){
|
||||
Color_Array result = {};
|
||||
result.count = count;
|
||||
result.vals = push_array_write(arena, ARGB_Color, count, colors);
|
||||
return(result);
|
||||
}
|
||||
|
||||
function void
|
||||
set_default_color_scheme(Application_Links *app){
|
||||
Arena arena = make_arena_system();
|
||||
|
||||
Managed_ID highest_color_id = managed_id_group_highest_id(app, string_u8_litexpr("colors"));
|
||||
default_color_table.count = (u32)(clamp_top(highest_color_id + 1, max_u32));
|
||||
default_color_table.arrays = push_array_zero(&arena, Color_Array, default_color_table.count);
|
||||
|
||||
default_color_table.arrays[0] = make_colors(&arena, 0xFF90B080);
|
||||
default_color_table.arrays[defcolor_bar] = make_colors(&arena, 0xFF888888);
|
||||
default_color_table.arrays[defcolor_base] = make_colors(&arena, 0xFF000000);
|
||||
default_color_table.arrays[defcolor_pop1] = make_colors(&arena, 0xFF3C57DC);
|
||||
default_color_table.arrays[defcolor_pop2] = make_colors(&arena, 0xFFFF0000);
|
||||
default_color_table.arrays[defcolor_back] = make_colors(&arena, 0xFF0C0C0C);
|
||||
default_color_table.arrays[defcolor_margin] = make_colors(&arena, 0xFF181818);
|
||||
default_color_table.arrays[defcolor_margin_hover] = make_colors(&arena, 0xFF252525);
|
||||
default_color_table.arrays[defcolor_margin_active] = make_colors(&arena, 0xFF323232);
|
||||
default_color_table.arrays[defcolor_list_item] = make_colors(&arena, 0xFF181818);
|
||||
default_color_table.arrays[defcolor_list_item_hover] = make_colors(&arena, 0xFF252525);
|
||||
default_color_table.arrays[defcolor_list_item_active] = make_colors(&arena, 0xFF323232);
|
||||
default_color_table.arrays[defcolor_cursor] = make_colors(&arena, 0xFF00EE00);
|
||||
default_color_table.arrays[defcolor_at_cursor] = make_colors(&arena, 0xFF0C0C0C);
|
||||
default_color_table.arrays[defcolor_highlight_cursor_line] = make_colors(&arena, 0xFF1E1E1E);
|
||||
default_color_table.arrays[defcolor_highlight] = make_colors(&arena, 0xFFDDEE00);
|
||||
default_color_table.arrays[defcolor_at_highlight] = make_colors(&arena, 0xFFFF44DD);
|
||||
default_color_table.arrays[defcolor_mark] = make_colors(&arena, 0xFF494949);
|
||||
default_color_table.arrays[defcolor_text_default] = make_colors(&arena, 0xFF90B080);
|
||||
default_color_table.arrays[defcolor_comment] = make_colors(&arena, 0xFF2090F0);
|
||||
default_color_table.arrays[defcolor_comment_pop] = make_colors(&arena, 0xFF00A000, 0xFFA00000);
|
||||
default_color_table.arrays[defcolor_keyword] = make_colors(&arena, 0xFFD08F20);
|
||||
default_color_table.arrays[defcolor_str_constant] = make_colors(&arena, 0xFF50FF30);
|
||||
default_color_table.arrays[defcolor_char_constant] = make_colors(&arena, 0xFF50FF30);
|
||||
default_color_table.arrays[defcolor_int_constant] = make_colors(&arena, 0xFF50FF30);
|
||||
default_color_table.arrays[defcolor_float_constant] = make_colors(&arena, 0xFF50FF30);
|
||||
default_color_table.arrays[defcolor_bool_constant] = make_colors(&arena, 0xFF50FF30);
|
||||
default_color_table.arrays[defcolor_preproc] = make_colors(&arena, 0xFFA0B8A0);
|
||||
default_color_table.arrays[defcolor_include] = make_colors(&arena, 0xFF50FF30);
|
||||
default_color_table.arrays[defcolor_special_character] = make_colors(&arena, 0xFFFF0000);
|
||||
default_color_table.arrays[defcolor_ghost_character] = make_colors(&arena, 0xFF4E5E46);
|
||||
default_color_table.arrays[defcolor_highlight_junk] = make_colors(&arena, 0xFF3A0000);
|
||||
default_color_table.arrays[defcolor_highlight_white] = make_colors(&arena, 0xFF003A3A);
|
||||
default_color_table.arrays[defcolor_paste] = make_colors(&arena, 0xFFDDEE00);
|
||||
default_color_table.arrays[defcolor_undo] = make_colors(&arena, 0xFF00DDEE);
|
||||
default_color_table.arrays[defcolor_back_cycle] = make_colors(&arena, 0xFF130707, 0xFF071307, 0xFF070713, 0xFF131307);
|
||||
default_color_table.arrays[defcolor_text_cycle] = make_colors(&arena, 0xFFA00000, 0xFF00A000, 0xFF0030B0, 0xFFA0A000);
|
||||
default_color_table.arrays[defcolor_line_numbers_back] = make_colors(&arena, 0xFF101010);
|
||||
default_color_table.arrays[defcolor_line_numbers_text] = make_colors(&arena, 0xFF404040);
|
||||
|
||||
active_color_table = default_color_table;
|
||||
}
|
||||
|
||||
// BOTTOM
|
|
@ -1,59 +1,55 @@
|
|||
/*
|
||||
* Colors with meanings built into the core.
|
||||
* Default color slots
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
enum Style_Tag{
|
||||
Stag_NOOP = 0,
|
||||
|
||||
Stag_Bar = 1,
|
||||
Stag_Base = 2,
|
||||
Stag_Pop1 = 3,
|
||||
Stag_Pop2 = 4,
|
||||
Stag_Back = 5,
|
||||
Stag_Margin = 6,
|
||||
Stag_Margin_Hover = 7,
|
||||
Stag_Margin_Active = 8,
|
||||
Stag_List_Item = 9,
|
||||
Stag_List_Item_Hover = 10,
|
||||
Stag_List_Item_Active = 11,
|
||||
Stag_Cursor = 12,
|
||||
Stag_At_Cursor = 13,
|
||||
Stag_Highlight_Cursor_Line = 14,
|
||||
Stag_Highlight = 15,
|
||||
Stag_At_Highlight = 16,
|
||||
Stag_Mark = 17,
|
||||
Stag_Default = 18,
|
||||
Stag_Comment = 19,
|
||||
Stag_Keyword = 20,
|
||||
Stag_Str_Constant = 21,
|
||||
Stag_Char_Constant = 22,
|
||||
Stag_Int_Constant = 23,
|
||||
Stag_Float_Constant = 24,
|
||||
Stag_Bool_Constant = 25,
|
||||
Stag_Preproc = 26,
|
||||
Stag_Include = 27,
|
||||
Stag_Special_Character = 28,
|
||||
Stag_Ghost_Character = 29,
|
||||
Stag_Highlight_Junk = 30,
|
||||
Stag_Highlight_White = 31,
|
||||
Stag_Paste = 32,
|
||||
Stag_Undo = 33,
|
||||
Stag_Back_Cycle_1 = 34,
|
||||
Stag_Back_Cycle_2 = 35,
|
||||
Stag_Back_Cycle_3 = 36,
|
||||
Stag_Back_Cycle_4 = 37,
|
||||
Stag_Text_Cycle_1 = 38,
|
||||
Stag_Text_Cycle_2 = 39,
|
||||
Stag_Text_Cycle_3 = 40,
|
||||
Stag_Text_Cycle_4 = 41,
|
||||
Stag_Line_Numbers_Back = 42,
|
||||
Stag_Line_Numbers_Text = 43,
|
||||
Stag_COUNT = 44
|
||||
};
|
||||
#if !defined(FCODER_DEFAULT_COLORS_H)
|
||||
#define FCODER_DEFAULT_COLORS_H
|
||||
|
||||
#define FirstCustomColor Stag_COUNT
|
||||
CUSTOM_ID(colors, defcolor_bar);
|
||||
CUSTOM_ID(colors, defcolor_base);
|
||||
CUSTOM_ID(colors, defcolor_pop1);
|
||||
CUSTOM_ID(colors, defcolor_pop2);
|
||||
CUSTOM_ID(colors, defcolor_back);
|
||||
CUSTOM_ID(colors, defcolor_margin);
|
||||
CUSTOM_ID(colors, defcolor_margin_hover);
|
||||
CUSTOM_ID(colors, defcolor_margin_active);
|
||||
CUSTOM_ID(colors, defcolor_list_item);
|
||||
CUSTOM_ID(colors, defcolor_list_item_hover);
|
||||
CUSTOM_ID(colors, defcolor_list_item_active);
|
||||
CUSTOM_ID(colors, defcolor_cursor);
|
||||
CUSTOM_ID(colors, defcolor_at_cursor);
|
||||
CUSTOM_ID(colors, defcolor_highlight_cursor_line);
|
||||
CUSTOM_ID(colors, defcolor_highlight);
|
||||
CUSTOM_ID(colors, defcolor_at_highlight);
|
||||
CUSTOM_ID(colors, defcolor_mark);
|
||||
CUSTOM_ID(colors, defcolor_text_default);
|
||||
CUSTOM_ID(colors, defcolor_comment);
|
||||
CUSTOM_ID(colors, defcolor_comment_pop);
|
||||
CUSTOM_ID(colors, defcolor_keyword);
|
||||
CUSTOM_ID(colors, defcolor_str_constant);
|
||||
CUSTOM_ID(colors, defcolor_char_constant);
|
||||
CUSTOM_ID(colors, defcolor_int_constant);
|
||||
CUSTOM_ID(colors, defcolor_float_constant);
|
||||
CUSTOM_ID(colors, defcolor_bool_constant);
|
||||
CUSTOM_ID(colors, defcolor_preproc);
|
||||
CUSTOM_ID(colors, defcolor_include);
|
||||
CUSTOM_ID(colors, defcolor_special_character);
|
||||
CUSTOM_ID(colors, defcolor_ghost_character);
|
||||
CUSTOM_ID(colors, defcolor_highlight_junk);
|
||||
CUSTOM_ID(colors, defcolor_highlight_white);
|
||||
CUSTOM_ID(colors, defcolor_paste);
|
||||
CUSTOM_ID(colors, defcolor_undo);
|
||||
CUSTOM_ID(colors, defcolor_back_cycle);
|
||||
CUSTOM_ID(colors, defcolor_text_cycle);
|
||||
CUSTOM_ID(colors, defcolor_line_numbers_back);
|
||||
CUSTOM_ID(colors, defcolor_line_numbers_text);
|
||||
|
||||
global Color_Table active_color_table = {};
|
||||
global Color_Table default_color_table = {};
|
||||
|
||||
#endif
|
||||
|
||||
// BOTTOM
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -77,6 +77,7 @@
|
|||
#include "generated/lexer_cpp.cpp"
|
||||
#include "4coder_command_map.cpp"
|
||||
#include "4coder_default_framework_variables.cpp"
|
||||
#include "4coder_default_colors.cpp"
|
||||
#include "4coder_helper.cpp"
|
||||
#include "4coder_delta_rule.cpp"
|
||||
#include "4coder_layout_rule.cpp"
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -9,7 +9,7 @@
|
|||
|
||||
struct Comment_Highlight_Pair{
|
||||
String_Const_u8 needle;
|
||||
FColor color;
|
||||
ARGB_Color color;
|
||||
};
|
||||
|
||||
typedef i32 Range_Highlight_Kind;
|
||||
|
|
|
@ -23,9 +23,17 @@ fcolor_argb(f32 r, f32 g, f32 b, f32 a){
|
|||
}
|
||||
|
||||
function FColor
|
||||
fcolor_id(ID_Color id){
|
||||
fcolor_id(Managed_ID id){
|
||||
FColor result = {};
|
||||
result.id = id;
|
||||
result.id = (ID_Color)id;
|
||||
return(result);
|
||||
}
|
||||
|
||||
function FColor
|
||||
fcolor_id(Managed_ID id, u32 sub_index){
|
||||
FColor result = {};
|
||||
result.id = (ID_Color)id;
|
||||
result.sub_index = (u8)sub_index;
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
@ -42,11 +50,11 @@ argb_color_blend(ARGB_Color a, f32 t, ARGB_Color b){
|
|||
}
|
||||
|
||||
function ARGB_Color
|
||||
fcolor_resolve_to_argb(Application_Links *app, FColor color){
|
||||
fcolor_resolve(FColor color){
|
||||
ARGB_Color result = 0;
|
||||
if (color.a_byte == 0){
|
||||
if (color.id != 0){
|
||||
result = finalize_color(app, color.id);
|
||||
result = finalize_color(color.id, color.sub_index);
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
@ -56,20 +64,20 @@ fcolor_resolve_to_argb(Application_Links *app, FColor color){
|
|||
}
|
||||
|
||||
function FColor
|
||||
fcolor_change_alpha(Application_Links *app, FColor color, f32 alpha){
|
||||
Vec4_f32 v = unpack_color(fcolor_resolve_to_argb(app, color));
|
||||
fcolor_change_alpha(FColor color, f32 alpha){
|
||||
Vec4_f32 v = unpack_color(fcolor_resolve(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);
|
||||
fcolor_blend(FColor a, f32 at, FColor b, f32 bt){
|
||||
ARGB_Color a_argb = fcolor_resolve(a);
|
||||
ARGB_Color b_argb = fcolor_resolve(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));
|
||||
fcolor_blend(FColor a, f32 t, FColor b){
|
||||
return(fcolor_blend(a, 1.f - t, b, t));
|
||||
}
|
||||
|
||||
function FColor
|
||||
|
@ -612,6 +620,7 @@ draw_fancy_string__inner(Application_Links *app, Face_ID face, FColor fore, Fanc
|
|||
use_fore = string->fore;
|
||||
}
|
||||
if (use_face != 0){
|
||||
ARGB_Color use_argb = fcolor_resolve(use_fore);
|
||||
Face_Metrics metrics = get_face_metrics(app, use_face);
|
||||
f32 down_shift = (base_line - metrics.ascent);
|
||||
down_shift = clamp_bot(0.f, down_shift);
|
||||
|
@ -621,7 +630,7 @@ draw_fancy_string__inner(Application_Links *app, Face_ID face, FColor fore, Fanc
|
|||
if (fcolor_is_valid(use_fore)){
|
||||
Vec2_f32 margin_delta = delta*metrics.normal_advance;
|
||||
p_shifted += margin_delta*string->pre_margin;
|
||||
p_shifted = draw_string_oriented(app, use_face, use_fore, string->value, p_shifted, flags, delta);
|
||||
p_shifted = draw_string_oriented(app, use_face, use_argb, string->value, p_shifted, flags, delta);
|
||||
p_shifted += margin_delta*string->post_margin;
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -182,10 +182,10 @@ lister_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
|
||||
{
|
||||
Fancy_Line text_field = {};
|
||||
push_fancy_string(scratch, &text_field, fcolor_id(Stag_Pop1),
|
||||
push_fancy_string(scratch, &text_field, fcolor_id(defcolor_pop1),
|
||||
lister->query.string);
|
||||
push_fancy_stringf(scratch, &text_field, " ");
|
||||
push_fancy_string(scratch, &text_field, fcolor_id(Stag_Default),
|
||||
push_fancy_string(scratch, &text_field, fcolor_id(defcolor_text_default),
|
||||
lister->text_field.string);
|
||||
draw_fancy_line(app, face_id, fcolor_zero(), &text_field,
|
||||
V2f32(text_field_rect.x0 + 3.f, text_field_rect.y0));
|
||||
|
@ -266,13 +266,13 @@ lister_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
highlight = UIHighlight_Hover;
|
||||
}
|
||||
|
||||
draw_rectangle(app, item_rect, 6.f, get_margin_color(highlight));
|
||||
draw_rectangle(app, item_inner, 6.f, fcolor_id(Stag_Back));
|
||||
draw_rectangle_fcolor(app, item_rect, 6.f, get_margin_color(highlight));
|
||||
draw_rectangle_fcolor(app, item_inner, 6.f, fcolor_id(defcolor_back));
|
||||
|
||||
Fancy_Line line = {};
|
||||
push_fancy_string(scratch, &line, fcolor_id(Stag_Default), node->string);
|
||||
push_fancy_string(scratch, &line, fcolor_id(defcolor_text_default), node->string);
|
||||
push_fancy_stringf(scratch, &line, " ");
|
||||
push_fancy_string(scratch, &line, fcolor_id(Stag_Pop2), node->status);
|
||||
push_fancy_string(scratch, &line, fcolor_id(defcolor_pop2), node->status);
|
||||
|
||||
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);
|
||||
|
|
|
@ -671,10 +671,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, fcolor_id(Stag_Back));
|
||||
draw_rectangle_fcolor(app, view_rect, 0.f,
|
||||
get_margin_color(is_active_view?UIHighlight_Active:UIHighlight_None));
|
||||
draw_rectangle_fcolor(app, inner, 0.f, fcolor_id(defcolor_back));
|
||||
|
||||
Rect_f32 prev_clip = draw_set_clip(app, inner);
|
||||
////////////////////////////////
|
||||
|
@ -721,8 +720,8 @@ log_graph_render(Application_Links *app, Frame_Info frame_info, View_ID view){
|
|||
margin_color = f_light_gray;
|
||||
}
|
||||
|
||||
draw_rectangle(app, box , 0.f, margin_color);
|
||||
draw_rectangle(app, box_inner, 0.f, f_black );
|
||||
draw_rectangle_fcolor(app, box , 0.f, margin_color);
|
||||
draw_rectangle_fcolor(app, box_inner, 0.f, f_black );
|
||||
|
||||
Log_Event *event = box_node->event;
|
||||
|
||||
|
@ -759,8 +758,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(app, box , 0.f, f_dark_gray);
|
||||
draw_rectangle(app, box_inner, 0.f, f_black );
|
||||
draw_rectangle_fcolor(app, box , 0.f, f_dark_gray);
|
||||
draw_rectangle_fcolor(app, box_inner, 0.f, f_black );
|
||||
|
||||
{
|
||||
f32 y_cursor = box_inner.y0 + 3.f;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -230,7 +230,7 @@ get_word_complete_needle_range(Application_Links *app, Buffer_ID buffer, i64 pos
|
|||
needle_range.max = pos;
|
||||
needle_range.min = scan(app, boundary_alpha_numeric_underscore_utf8, buffer, Scan_Backward, pos);
|
||||
i64 e = scan(app, boundary_alpha_numeric_underscore_utf8, buffer, Scan_Forward, needle_range.min);
|
||||
if (needle_range.max > e){
|
||||
if (pos > e){
|
||||
needle_range = Ii64(pos);
|
||||
}
|
||||
return(needle_range);
|
||||
|
@ -414,11 +414,9 @@ CUSTOM_DOC("Iteratively tries completing the word to the left of the cursor with
|
|||
|
||||
if (first_completion || !initialized){
|
||||
ProfileBlock(app, "word complete state init");
|
||||
|
||||
initialized = false;
|
||||
i64 pos = view_get_cursor_pos(app, view);
|
||||
|
||||
Range_i64 needle_range = get_word_complete_needle_range(app, buffer, pos);
|
||||
|
||||
if (range_size(needle_range) > 0){
|
||||
initialized = true;
|
||||
range = needle_range;
|
||||
|
@ -482,8 +480,8 @@ word_complete_menu_render(Application_Links *app, Frame_Info frame_info, View_ID
|
|||
for (i32 i = 0; i < menu->count; i += 1){
|
||||
if (menu->options[i].size > 0){
|
||||
Fancy_Line *line = push_fancy_line(scratch, &block, face);
|
||||
push_fancy_stringf(scratch, line, fcolor_id(Stag_Pop1), "F%d:", i + 1);
|
||||
push_fancy_string(scratch, line, fcolor_id(Stag_Default), menu->options[i]);
|
||||
push_fancy_stringf(scratch, line, fcolor_id(defcolor_pop1), "F%d:", i + 1);
|
||||
push_fancy_string(scratch, line, fcolor_id(defcolor_text_default), menu->options[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -501,7 +499,7 @@ word_complete_menu_render(Application_Links *app, Frame_Info frame_info, View_ID
|
|||
f32 x_half_padding = x_padding*0.5f;
|
||||
|
||||
draw_drop_down(app, face, &block, cursor_p, region, x_padding, x_half_padding,
|
||||
fcolor_id(Stag_Margin_Hover), fcolor_id(Stag_Back));
|
||||
fcolor_id(defcolor_margin_hover), fcolor_id(defcolor_back));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ tutorial_render(Application_Links *app, Frame_Info frame_info, View_ID view_id){
|
|||
f32 panel_y0 = region.y0 - 3.f;
|
||||
|
||||
region = rect_inner(region, 3.f);
|
||||
draw_rectangle(app, region, 20.f, fcolor_id(Stag_Back));
|
||||
draw_rectangle_fcolor(app, region, 20.f, fcolor_id(defcolor_back));
|
||||
region = rect_inner(region, 10.f);
|
||||
|
||||
Vec2_f32 title_p = V2f32(region.x0, panel_y0 + (metrics.line_height*2.f) - title_height*0.5f);
|
||||
|
@ -302,25 +302,25 @@ global String_Const_u8 hms_title = string_u8_litexpr("Handmade Seattle Demo");
|
|||
function void
|
||||
hms_demo_tutorial_short_details(Application_Links *app, Arena *arena, Fancy_Line *short_details){
|
||||
Face_ID face = get_face_id(app, 0);
|
||||
push_fancy_string(arena, short_details, tutorial.face, fcolor_id(Stag_Pop1), hms_title);
|
||||
push_fancy_string(arena, short_details, face, fcolor_id(Stag_Default), 8.f, 8.f, string_u8_litexpr("Welcome to Handmade Seattle and to this 4coder demo!"));
|
||||
push_fancy_string(arena, short_details, face, fcolor_id(Stag_Pop2), string_u8_litexpr("Click here to see more."));
|
||||
push_fancy_string(arena, short_details, tutorial.face, fcolor_id(defcolor_pop1), hms_title);
|
||||
push_fancy_string(arena, short_details, face, fcolor_id(defcolor_text_default), 8.f, 8.f, string_u8_litexpr("Welcome to Handmade Seattle and to this 4coder demo!"));
|
||||
push_fancy_string(arena, short_details, face, fcolor_id(defcolor_pop2), string_u8_litexpr("Click here to see more."));
|
||||
}
|
||||
|
||||
function void
|
||||
hms_demo_tutorial_long_start(Application_Links *app, Arena *arena, Fancy_Block *long_details){
|
||||
Fancy_Line *line = push_fancy_line(arena, long_details, tutorial.face, fcolor_id(Stag_Pop1), hms_title);
|
||||
Fancy_Line *line = push_fancy_line(arena, long_details, tutorial.face, fcolor_id(defcolor_pop1), hms_title);
|
||||
|
||||
Face_ID face = get_face_id(app, 0);
|
||||
//
|
||||
line = push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default));
|
||||
line = push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default));
|
||||
#define M "If you want more information than what you can find here, please "
|
||||
push_fancy_string(arena, line, string_u8_litexpr(M));
|
||||
#undef M
|
||||
push_fancy_string(arena, line, fcolor_id(Stag_Pop2), string_u8_litexpr("ask!"));
|
||||
push_fancy_string(arena, line, fcolor_id(defcolor_pop2), string_u8_litexpr("ask!"));
|
||||
|
||||
//
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr(""));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr(""));
|
||||
}
|
||||
|
||||
function void
|
||||
|
@ -337,12 +337,12 @@ hms_demo_tutorial_binding_line(Application_Links *app, Arena *arena, Fancy_Block
|
|||
pad_size = 40.f - fill_size;
|
||||
}
|
||||
|
||||
Fancy_Line *line = line = push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default));
|
||||
Fancy_Line *line = line = push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default));
|
||||
push_fancy_stringf(arena, line, pad_size, 0.5f, "<");
|
||||
if (m.size > 0){
|
||||
push_fancy_stringf(arena, line, fcolor_id(Stag_Keyword), 0.f, 0.5f, "%s", modifiers);
|
||||
push_fancy_stringf(arena, line, fcolor_id(defcolor_keyword), 0.f, 0.5f, "%s", modifiers);
|
||||
}
|
||||
push_fancy_stringf(arena, line, fcolor_id(Stag_Pop2), "%s", key);
|
||||
push_fancy_stringf(arena, line, fcolor_id(defcolor_pop2), "%s", key);
|
||||
push_fancy_stringf(arena, line, 0.5f, 1.f, ">");
|
||||
push_fancy_stringf(arena, line, "%s", description);
|
||||
}
|
||||
|
@ -359,7 +359,7 @@ hms_demo_tutorial_slide_1(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Let's start with a few navigation commands:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Let's start with a few navigation commands:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control", "Comma", "change active panel");
|
||||
|
@ -376,7 +376,7 @@ hms_demo_tutorial_slide_1(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "PageUp/PageDown", "move cursor by full pages up/down");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Available in code files:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Available in code files:"));
|
||||
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
|
@ -409,7 +409,7 @@ hms_demo_tutorial_slide_2(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Now a look at basic editing:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Now a look at basic editing:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "TextInsert", "non-modal text insertion works in any user-writable buffers at the cursor");
|
||||
|
@ -429,7 +429,7 @@ hms_demo_tutorial_slide_2(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "Up/Down", "move the current line");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Range commands based on a cursor and mark (emacs style):"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Range commands based on a cursor and mark (emacs style):"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control", "Space", "moves the mark to the cursor");
|
||||
|
@ -443,7 +443,7 @@ hms_demo_tutorial_slide_2(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control", "X", "cut the range");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Paste options with a multi-stage clipboard:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Paste options with a multi-stage clipboard:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control", "V", "paste the clipboard to the buffer");
|
||||
|
@ -466,7 +466,7 @@ hms_demo_tutorial_slide_3(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Now try beginning a file lister:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Now try beginning a file lister:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control", "N", "begin a file lister for exploring the file system - always creating a new file");
|
||||
|
@ -477,7 +477,7 @@ hms_demo_tutorial_slide_3(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "O", "same as previous option but opens in the other panel");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Inside a file lister:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Inside a file lister:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "TextInsert", "narrows the lister down to options with substrings matching the text field");
|
||||
|
@ -497,7 +497,7 @@ hms_demo_tutorial_slide_3(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "Escape", "cancel the operation");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("There are also buffer listers for operations on buffers that are already open:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("There are also buffer listers for operations on buffers that are already open:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control", "I", "begin a buffer lister and switch to the selected buffer");
|
||||
|
@ -520,12 +520,12 @@ hms_demo_tutorial_slide_4(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("The command lister makes all commands available in one place:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("The command lister makes all commands available in one place:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "X", "a lister of all commands");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Try some of these commands from the command lister:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Try some of these commands from the command lister:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "toggle_filebar", "toggle the panel's filebar");
|
||||
|
@ -560,7 +560,7 @@ hms_demo_tutorial_slide_5(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Fast navigation by jump lists:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Fast navigation by jump lists:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "F", "after the user answers a query for a string generate a jump list of matches");
|
||||
|
@ -571,7 +571,7 @@ hms_demo_tutorial_slide_5(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control Shift", "I", "parse the current buffer as a C/C++ source and generate a jump list of functions");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("After generating a jump list it is bound as the active jump list enabling these commands:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("After generating a jump list it is bound as the active jump list enabling these commands:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "N", "jump to the next jump location");
|
||||
|
@ -597,43 +597,43 @@ hms_demo_tutorial_slide_6(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Virtual whitespace:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Virtual whitespace:"));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("\tBuffers that are indexed with information about nest structures can be equiped with the virtual whitespace layout algorithm."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("\tThe on screen layout of text is independent of the actual whitespace contents of the underlying text."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default), string_u8_litexpr(""));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default), string_u8_litexpr(""));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Keyword),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_keyword),
|
||||
string_u8_litexpr("\tTry inserting new scopes and parenthetical sections in a code file."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("\t\tObserve that indentation is updated automatically."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Keyword),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_keyword),
|
||||
string_u8_litexpr("\tTry creating a line that is long enough to wrap around the edge."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("\t\tObserve that wrapped lines obey the same indentation rules as literal lines."));
|
||||
|
||||
{
|
||||
Fancy_Line *line = push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default));
|
||||
Fancy_Line *line = push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default));
|
||||
push_fancy_stringf(arena, line, "\tUse the command ");
|
||||
push_fancy_stringf(arena, line, fcolor_id(Stag_Pop2), "toggle_virtual_whitespace");
|
||||
push_fancy_stringf(arena, line, fcolor_id(defcolor_pop2), "toggle_virtual_whitespace");
|
||||
push_fancy_stringf(arena, line, " to turn this feature on and off");
|
||||
}
|
||||
|
||||
{
|
||||
Fancy_Line *line = push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default));
|
||||
Fancy_Line *line = push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default));
|
||||
push_fancy_stringf(arena, line, "\tUse the command ");
|
||||
push_fancy_stringf(arena, line, fcolor_id(Stag_Pop2), "toggle_line_wrap");
|
||||
push_fancy_stringf(arena, line, fcolor_id(defcolor_pop2), "toggle_line_wrap");
|
||||
push_fancy_stringf(arena, line, " to see how layout changes with line wrapping on and off");
|
||||
}
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Auto Indentation:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Auto Indentation:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Control", "Tab", "auto indent the lines marked by the range; the effect is only visible with virtual whitespace off.");
|
||||
|
@ -653,7 +653,7 @@ hms_demo_tutorial_slide_7(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("Builds, scripts, and projects:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("Builds, scripts, and projects:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "M", "searches for and runs a build script (windows -> 'build.bat'; unix -> 'build.sh')");
|
||||
|
@ -664,7 +664,7 @@ hms_demo_tutorial_slide_7(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "execute_previous_cli", "repeats an execute_any_cli command with the same command and ouptut buffer");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("If a script/command generates output that can be parsed as jumps (e.g. compilation errors) then it becomes the active jump buffer:"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("If a script/command generates output that can be parsed as jumps (e.g. compilation errors) then it becomes the active jump buffer:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "N", "jump to the next jump location");
|
||||
|
@ -675,7 +675,7 @@ hms_demo_tutorial_slide_7(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt Shift", "M", "jump to the first jump");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("The project system enables rich bindings of arbitrary system scripts (when a project is loaded):"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("The project system enables rich bindings of arbitrary system scripts (when a project is loaded):"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "F#", "run a script bound to the corresponding index in the loaded project");
|
||||
|
@ -689,7 +689,7 @@ hms_demo_tutorial_slide_7(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "setup_new_project", "command to generate a new 'project.4coder' file and build scripts");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("\tCheckout 'project.4coder' to see more about what is in a project."));
|
||||
|
||||
return(result);
|
||||
|
@ -707,16 +707,16 @@ hms_demo_tutorial_slide_8(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("Probably the biggest feature in 4coder is that so many things about it can be customized."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("The project loaded for this demo is the 'default custom layer' everything here could be done differently, as you see fit."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr(""));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1),
|
||||
string_u8_litexpr("Search for these commands to see some of the features available to customization:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
|
@ -740,11 +740,11 @@ hms_demo_tutorial_slide_8(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "setup_default_mapping", "defines the mapping of commands to bindings");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default), string_u8_litexpr(""));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default), string_u8_litexpr(""));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default), string_u8_litexpr("\tThe macros CUSTOM_COMMAND_SIG and CUSTOM_DOC markup the commands to create the list of all available commands."));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default), string_u8_litexpr("\tThe macros CUSTOM_COMMAND_SIG and CUSTOM_DOC markup the commands to create the list of all available commands."));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default), string_u8_litexpr("\tThis means that user written commands that use the same markup automatically appear in the command_lister along side built in commands!"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default), string_u8_litexpr("\tThis means that user written commands that use the same markup automatically appear in the command_lister along side built in commands!"));
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
@ -761,13 +761,13 @@ hms_demo_tutorial_slide_9(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Default),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_text_default),
|
||||
string_u8_litexpr("The customization system exposes much more than just commands to be customized..."));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"Alt", "F", "(hint!) this is the default binding for search, use it to find these functions");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1),
|
||||
string_u8_litexpr("Write completely custom GUIs:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
|
@ -776,7 +776,7 @@ hms_demo_tutorial_slide_9(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "tutorial_run_loop/tutorial_render", "underlying implementation for the tutorial system powering this demo!");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1),
|
||||
string_u8_litexpr("Write custom text coloring and highlighting in buffers:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
|
@ -788,7 +788,7 @@ hms_demo_tutorial_slide_9(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "default_render_buffer", "puts together all the default markup in buffer rendering");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1),
|
||||
string_u8_litexpr("Write custom line layout rules:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
|
@ -797,7 +797,7 @@ hms_demo_tutorial_slide_9(Application_Links *app, Arena *arena){
|
|||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
"", "layout_index_unwrapped__inner", "the unwrapped version of the virtual whitespace layout logic");
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1),
|
||||
string_u8_litexpr("Write custom smoothing rules that interact with buffer and UI scrolling:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
|
@ -821,7 +821,7 @@ hms_demo_tutorial_slide_10(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1),
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1),
|
||||
string_u8_litexpr("Some miscellaneous things to try:"));
|
||||
|
||||
hms_demo_tutorial_binding_line(app, arena, long_details, face,
|
||||
|
@ -857,11 +857,11 @@ hms_demo_tutorial_slide_11(Application_Links *app, Arena *arena){
|
|||
Fancy_Block *long_details = &result.long_details;
|
||||
hms_demo_tutorial_long_start(app, arena, long_details);
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr(""));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr(""));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr(""));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr(""));
|
||||
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(Stag_Pop1), string_u8_litexpr("\t\tThanks for checking out the demo!"));
|
||||
push_fancy_line(arena, long_details, face, fcolor_id(defcolor_pop1), string_u8_litexpr("\t\tThanks for checking out the demo!"));
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,8 @@ union FColor{
|
|||
ARGB_Color argb;
|
||||
struct{
|
||||
ID_Color id;
|
||||
u16 padding_;
|
||||
u8 sub_index;
|
||||
u8 padding_;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -36,12 +37,13 @@ struct Theme_Color{
|
|||
ARGB_Color color;
|
||||
};
|
||||
|
||||
//struct Theme{
|
||||
//ARGB_Color colors[Stag_COUNT];
|
||||
//};
|
||||
struct Color_Array{
|
||||
ARGB_Color *vals;
|
||||
i32 count;
|
||||
};
|
||||
|
||||
struct Color_Table{
|
||||
ARGB_Color *vals;
|
||||
Color_Array *arrays;
|
||||
u32 count;
|
||||
};
|
||||
|
||||
|
|
|
@ -358,12 +358,12 @@ static Command_Metadata fcoder_metacmd_table[222] = {
|
|||
{ PROC_LINKS(kill_buffer, 0), false, "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1568 },
|
||||
{ PROC_LINKS(save, 0), false, "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1576 },
|
||||
{ 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, 1586 },
|
||||
{ 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, 1811 },
|
||||
{ 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, 1824 },
|
||||
{ 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, 1838 },
|
||||
{ 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, 1909 },
|
||||
{ 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, 2010 },
|
||||
{ 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, 2016 },
|
||||
{ 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, 1644 },
|
||||
{ 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, 1657 },
|
||||
{ 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, 1671 },
|
||||
{ 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, 1742 },
|
||||
{ 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, 1843 },
|
||||
{ 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, 1849 },
|
||||
{ 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, 86 },
|
||||
{ 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, 99 },
|
||||
{ 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, 112 },
|
||||
|
@ -389,7 +389,7 @@ static Command_Metadata fcoder_metacmd_table[222] = {
|
|||
{ PROC_LINKS(list_all_locations_of_type_definition, 0), false, "list_all_locations_of_type_definition", 37, "Queries user for string, lists all locations of strings that appear to define a type whose name matches the input string.", 121, "w:\\4ed\\code\\custom\\4coder_search.cpp", 36, 210 },
|
||||
{ PROC_LINKS(list_all_locations_of_type_definition_of_identifier, 0), false, "list_all_locations_of_type_definition_of_identifier", 51, "Reads a token or word under the cursor and lists all locations of strings that appear to define a type whose name matches it.", 125, "w:\\4ed\\code\\custom\\4coder_search.cpp", 36, 218 },
|
||||
{ PROC_LINKS(word_complete, 0), false, "word_complete", 13, "Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.", 130, "w:\\4ed\\code\\custom\\4coder_search.cpp", 36, 392 },
|
||||
{ PROC_LINKS(word_complete_drop_down, 0), false, "word_complete_drop_down", 23, "Word complete with drop down menu.", 34, "w:\\4ed\\code\\custom\\4coder_search.cpp", 36, 641 },
|
||||
{ PROC_LINKS(word_complete_drop_down, 0), false, "word_complete_drop_down", 23, "Word complete with drop down menu.", 34, "w:\\4ed\\code\\custom\\4coder_search.cpp", 36, 639 },
|
||||
{ PROC_LINKS(goto_jump_at_cursor, 0), false, "goto_jump_at_cursor", 19, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 346 },
|
||||
{ PROC_LINKS(goto_jump_at_cursor_same_panel, 0), false, "goto_jump_at_cursor_same_panel", 30, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list.", 167, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 373 },
|
||||
{ PROC_LINKS(goto_next_jump, 0), false, "goto_next_jump", 14, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "w:\\4ed\\code\\custom\\4coder_jump_sticky.cpp", 41, 462 },
|
||||
|
@ -401,13 +401,13 @@ static Command_Metadata fcoder_metacmd_table[222] = {
|
|||
{ 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, 59 },
|
||||
{ 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(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, 994 },
|
||||
{ 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, 70 },
|
||||
{ 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, 108 },
|
||||
{ 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, 115 },
|
||||
{ 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, 110 },
|
||||
{ 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, 117 },
|
||||
{ PROC_LINKS(keyboard_macro_start_recording, 0), false, "keyboard_macro_start_recording", 30, "Start macro recording, do nothing if macro recording is already started", 71, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 44 },
|
||||
{ PROC_LINKS(keyboard_macro_finish_recording, 0), false, "keyboard_macro_finish_recording", 31, "Stop macro recording, do nothing if macro recording is not already started", 74, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 57 },
|
||||
{ PROC_LINKS(keyboard_macro_replay, 0), false, "keyboard_macro_replay", 21, "Replay the most recently recorded keyboard macro", 48, "w:\\4ed\\code\\custom\\4coder_keyboard_macro.cpp", 44, 80 },
|
||||
|
@ -459,7 +459,7 @@ static Command_Metadata fcoder_metacmd_table[222] = {
|
|||
{ 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, 890 },
|
||||
{ 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, 887 },
|
||||
{ PROC_LINKS(kill_tutorial, 0), false, "kill_tutorial", 13, "If there is an active tutorial, kill it.", 40, "w:\\4ed\\code\\custom\\4coder_tutorial.cpp", 38, 9 },
|
||||
{ PROC_LINKS(tutorial_maximize, 0), false, "tutorial_maximize", 17, "Expand the tutorial window", 26, "w:\\4ed\\code\\custom\\4coder_tutorial.cpp", 38, 20 },
|
||||
{ PROC_LINKS(tutorial_minimize, 0), false, "tutorial_minimize", 17, "Shrink the tutorial window", 26, "w:\\4ed\\code\\custom\\4coder_tutorial.cpp", 38, 34 },
|
||||
|
|
|
@ -108,6 +108,7 @@ vtable->get_managed_scope_with_multiple_dependencies = get_managed_scope_with_mu
|
|||
vtable->managed_scope_clear_contents = managed_scope_clear_contents;
|
||||
vtable->managed_scope_clear_self_all_dependent_scopes = managed_scope_clear_self_all_dependent_scopes;
|
||||
vtable->managed_scope_allocator = managed_scope_allocator;
|
||||
vtable->managed_id_group_highest_id = managed_id_group_highest_id;
|
||||
vtable->managed_id_declare = managed_id_declare;
|
||||
vtable->managed_scope_get_attachment = managed_scope_get_attachment;
|
||||
vtable->managed_scope_attachment_erase = managed_scope_attachment_erase;
|
||||
|
@ -155,9 +156,6 @@ vtable->get_face_id = get_face_id;
|
|||
vtable->try_create_new_face = try_create_new_face;
|
||||
vtable->try_modify_face = try_modify_face;
|
||||
vtable->try_release_face = try_release_face;
|
||||
vtable->set_theme_colors = set_theme_colors;
|
||||
vtable->get_theme_colors = get_theme_colors;
|
||||
vtable->finalize_color = finalize_color;
|
||||
vtable->push_hot_directory = push_hot_directory;
|
||||
vtable->set_hot_directory = set_hot_directory;
|
||||
vtable->send_exit_signal = send_exit_signal;
|
||||
|
@ -292,6 +290,7 @@ get_managed_scope_with_multiple_dependencies = vtable->get_managed_scope_with_mu
|
|||
managed_scope_clear_contents = vtable->managed_scope_clear_contents;
|
||||
managed_scope_clear_self_all_dependent_scopes = vtable->managed_scope_clear_self_all_dependent_scopes;
|
||||
managed_scope_allocator = vtable->managed_scope_allocator;
|
||||
managed_id_group_highest_id = vtable->managed_id_group_highest_id;
|
||||
managed_id_declare = vtable->managed_id_declare;
|
||||
managed_scope_get_attachment = vtable->managed_scope_get_attachment;
|
||||
managed_scope_attachment_erase = vtable->managed_scope_attachment_erase;
|
||||
|
@ -339,9 +338,6 @@ get_face_id = vtable->get_face_id;
|
|||
try_create_new_face = vtable->try_create_new_face;
|
||||
try_modify_face = vtable->try_modify_face;
|
||||
try_release_face = vtable->try_release_face;
|
||||
set_theme_colors = vtable->set_theme_colors;
|
||||
get_theme_colors = vtable->get_theme_colors;
|
||||
finalize_color = vtable->finalize_color;
|
||||
push_hot_directory = vtable->push_hot_directory;
|
||||
set_hot_directory = vtable->set_hot_directory;
|
||||
send_exit_signal = vtable->send_exit_signal;
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
#define custom_view_set_mark_sig() b32 custom_view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek)
|
||||
#define custom_view_quit_ui_sig() b32 custom_view_quit_ui(Application_Links* app, View_ID view_id)
|
||||
#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, FColor color)
|
||||
#define custom_view_post_fade_sig() b32 custom_view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, ARGB_Color 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_id, View_Context* ctx)
|
||||
|
@ -106,6 +106,7 @@
|
|||
#define custom_managed_scope_clear_contents_sig() b32 custom_managed_scope_clear_contents(Application_Links* app, Managed_Scope scope)
|
||||
#define custom_managed_scope_clear_self_all_dependent_scopes_sig() b32 custom_managed_scope_clear_self_all_dependent_scopes(Application_Links* app, Managed_Scope scope)
|
||||
#define custom_managed_scope_allocator_sig() Base_Allocator* custom_managed_scope_allocator(Application_Links* app, Managed_Scope scope)
|
||||
#define custom_managed_id_group_highest_id_sig() u64 custom_managed_id_group_highest_id(Application_Links* app, String_Const_u8 group)
|
||||
#define custom_managed_id_declare_sig() Managed_ID custom_managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name)
|
||||
#define custom_managed_scope_get_attachment_sig() void* custom_managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size)
|
||||
#define custom_managed_scope_attachment_erase_sig() void* custom_managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id)
|
||||
|
@ -153,17 +154,14 @@
|
|||
#define custom_try_create_new_face_sig() Face_ID custom_try_create_new_face(Application_Links* app, Face_Description* description)
|
||||
#define custom_try_modify_face_sig() b32 custom_try_modify_face(Application_Links* app, Face_ID id, Face_Description* description)
|
||||
#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, 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_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_draw_string_oriented_sig() Vec2_f32 custom_draw_string_oriented(Application_Links* app, Face_ID font_id, ARGB_Color 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, 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_rectangle_sig() void custom_draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, ARGB_Color color)
|
||||
#define custom_draw_rectangle_outline_sig() void custom_draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, ARGB_Color 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)
|
||||
|
@ -171,9 +169,9 @@
|
|||
#define custom_text_layout_get_visible_range_sig() Range_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, FColor color)
|
||||
#define custom_paint_text_color_sig() void custom_paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color 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_draw_text_layout_sig() void custom_draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color)
|
||||
#define custom_open_color_picker_sig() void custom_open_color_picker(Application_Links* app, Color_Picker* picker)
|
||||
#define custom_animate_in_n_milliseconds_sig() void custom_animate_in_n_milliseconds(Application_Links* app, u32 n)
|
||||
#define custom_buffer_find_all_matches_sig() String_Match_List custom_buffer_find_all_matches(Application_Links* app, Arena* arena, Buffer_ID buffer, i32 string_id, Range_i64 range, String_Const_u8 needle, Character_Predicate* predicate, Scan_Direction direction)
|
||||
|
@ -273,7 +271,7 @@ typedef b32 custom_view_set_buffer_scroll_type(Application_Links* app, View_ID v
|
|||
typedef b32 custom_view_set_mark_type(Application_Links* app, View_ID view_id, Buffer_Seek seek);
|
||||
typedef b32 custom_view_quit_ui_type(Application_Links* app, View_ID view_id);
|
||||
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, FColor color);
|
||||
typedef b32 custom_view_post_fade_type(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, ARGB_Color 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_id, View_Context* ctx);
|
||||
|
@ -286,6 +284,7 @@ typedef Managed_Scope custom_get_managed_scope_with_multiple_dependencies_type(A
|
|||
typedef b32 custom_managed_scope_clear_contents_type(Application_Links* app, Managed_Scope scope);
|
||||
typedef b32 custom_managed_scope_clear_self_all_dependent_scopes_type(Application_Links* app, Managed_Scope scope);
|
||||
typedef Base_Allocator* custom_managed_scope_allocator_type(Application_Links* app, Managed_Scope scope);
|
||||
typedef u64 custom_managed_id_group_highest_id_type(Application_Links* app, String_Const_u8 group);
|
||||
typedef Managed_ID custom_managed_id_declare_type(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||
typedef void* custom_managed_scope_get_attachment_type(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size);
|
||||
typedef void* custom_managed_scope_attachment_erase_type(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
||||
|
@ -333,17 +332,14 @@ typedef Face_ID custom_get_face_id_type(Application_Links* app, Buffer_ID buffer
|
|||
typedef Face_ID custom_try_create_new_face_type(Application_Links* app, Face_Description* description);
|
||||
typedef b32 custom_try_modify_face_type(Application_Links* app, Face_ID id, Face_Description* description);
|
||||
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, 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_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 Vec2_f32 custom_draw_string_oriented_type(Application_Links* app, Face_ID font_id, ARGB_Color 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, FColor color);
|
||||
typedef void custom_draw_rectangle_outline_type(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, FColor color);
|
||||
typedef void custom_draw_rectangle_type(Application_Links* app, Rect_f32 rect, f32 roundness, ARGB_Color color);
|
||||
typedef void custom_draw_rectangle_outline_type(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, ARGB_Color 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);
|
||||
|
@ -351,9 +347,9 @@ typedef Buffer_ID custom_text_layout_get_buffer_type(Application_Links* app, Tex
|
|||
typedef Range_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, FColor color);
|
||||
typedef void custom_paint_text_color_type(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color 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_draw_text_layout_type(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
||||
typedef void custom_open_color_picker_type(Application_Links* app, Color_Picker* picker);
|
||||
typedef void custom_animate_in_n_milliseconds_type(Application_Links* app, u32 n);
|
||||
typedef String_Match_List custom_buffer_find_all_matches_type(Application_Links* app, Arena* arena, Buffer_ID buffer, i32 string_id, Range_i64 range, String_Const_u8 needle, Character_Predicate* predicate, Scan_Direction direction);
|
||||
|
@ -467,6 +463,7 @@ custom_get_managed_scope_with_multiple_dependencies_type *get_managed_scope_with
|
|||
custom_managed_scope_clear_contents_type *managed_scope_clear_contents;
|
||||
custom_managed_scope_clear_self_all_dependent_scopes_type *managed_scope_clear_self_all_dependent_scopes;
|
||||
custom_managed_scope_allocator_type *managed_scope_allocator;
|
||||
custom_managed_id_group_highest_id_type *managed_id_group_highest_id;
|
||||
custom_managed_id_declare_type *managed_id_declare;
|
||||
custom_managed_scope_get_attachment_type *managed_scope_get_attachment;
|
||||
custom_managed_scope_attachment_erase_type *managed_scope_attachment_erase;
|
||||
|
@ -514,9 +511,6 @@ custom_get_face_id_type *get_face_id;
|
|||
custom_try_create_new_face_type *try_create_new_face;
|
||||
custom_try_modify_face_type *try_modify_face;
|
||||
custom_try_release_face_type *try_release_face;
|
||||
custom_set_theme_colors_type *set_theme_colors;
|
||||
custom_get_theme_colors_type *get_theme_colors;
|
||||
custom_finalize_color_type *finalize_color;
|
||||
custom_push_hot_directory_type *push_hot_directory;
|
||||
custom_set_hot_directory_type *set_hot_directory;
|
||||
custom_send_exit_signal_type *send_exit_signal;
|
||||
|
@ -636,7 +630,7 @@ internal b32 view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buf
|
|||
internal b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek);
|
||||
internal b32 view_quit_ui(Application_Links* app, View_ID view_id);
|
||||
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, FColor color);
|
||||
internal b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, ARGB_Color 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_id, View_Context* ctx);
|
||||
|
@ -649,6 +643,7 @@ internal Managed_Scope get_managed_scope_with_multiple_dependencies(Application_
|
|||
internal b32 managed_scope_clear_contents(Application_Links* app, Managed_Scope scope);
|
||||
internal b32 managed_scope_clear_self_all_dependent_scopes(Application_Links* app, Managed_Scope scope);
|
||||
internal Base_Allocator* managed_scope_allocator(Application_Links* app, Managed_Scope scope);
|
||||
internal u64 managed_id_group_highest_id(Application_Links* app, String_Const_u8 group);
|
||||
internal Managed_ID managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||
internal void* managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size);
|
||||
internal void* managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
||||
|
@ -696,17 +691,14 @@ internal Face_ID get_face_id(Application_Links* app, Buffer_ID buffer_id);
|
|||
internal Face_ID try_create_new_face(Application_Links* app, Face_Description* description);
|
||||
internal b32 try_modify_face(Application_Links* app, Face_ID id, Face_Description* description);
|
||||
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, 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_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 Vec2_f32 draw_string_oriented(Application_Links* app, Face_ID font_id, ARGB_Color 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, FColor color);
|
||||
internal void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, FColor color);
|
||||
internal void draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, ARGB_Color color);
|
||||
internal void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, ARGB_Color 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);
|
||||
|
@ -714,9 +706,9 @@ internal Buffer_ID text_layout_get_buffer(Application_Links* app, Text_Layout_ID
|
|||
internal Range_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, FColor color);
|
||||
internal void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color 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 draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
||||
internal void open_color_picker(Application_Links* app, Color_Picker* picker);
|
||||
internal void animate_in_n_milliseconds(Application_Links* app, u32 n);
|
||||
internal String_Match_List buffer_find_all_matches(Application_Links* app, Arena* arena, Buffer_ID buffer, i32 string_id, Range_i64 range, String_Const_u8 needle, Character_Predicate* predicate, Scan_Direction direction);
|
||||
|
@ -831,6 +823,7 @@ global custom_get_managed_scope_with_multiple_dependencies_type *get_managed_sco
|
|||
global custom_managed_scope_clear_contents_type *managed_scope_clear_contents = 0;
|
||||
global custom_managed_scope_clear_self_all_dependent_scopes_type *managed_scope_clear_self_all_dependent_scopes = 0;
|
||||
global custom_managed_scope_allocator_type *managed_scope_allocator = 0;
|
||||
global custom_managed_id_group_highest_id_type *managed_id_group_highest_id = 0;
|
||||
global custom_managed_id_declare_type *managed_id_declare = 0;
|
||||
global custom_managed_scope_get_attachment_type *managed_scope_get_attachment = 0;
|
||||
global custom_managed_scope_attachment_erase_type *managed_scope_attachment_erase = 0;
|
||||
|
@ -878,9 +871,6 @@ global custom_get_face_id_type *get_face_id = 0;
|
|||
global custom_try_create_new_face_type *try_create_new_face = 0;
|
||||
global custom_try_modify_face_type *try_modify_face = 0;
|
||||
global custom_try_release_face_type *try_release_face = 0;
|
||||
global custom_set_theme_colors_type *set_theme_colors = 0;
|
||||
global custom_get_theme_colors_type *get_theme_colors = 0;
|
||||
global custom_finalize_color_type *finalize_color = 0;
|
||||
global custom_push_hot_directory_type *push_hot_directory = 0;
|
||||
global custom_set_hot_directory_type *set_hot_directory = 0;
|
||||
global custom_send_exit_signal_type *send_exit_signal = 0;
|
||||
|
|
|
@ -93,7 +93,7 @@ api(custom) function b32 view_set_buffer_scroll(Application_Links* app, View_ID
|
|||
api(custom) function b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek);
|
||||
api(custom) function b32 view_quit_ui(Application_Links* app, View_ID view_id);
|
||||
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, FColor color);
|
||||
api(custom) function b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, ARGB_Color 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_id, View_Context* ctx);
|
||||
|
@ -106,6 +106,7 @@ api(custom) function Managed_Scope get_managed_scope_with_multiple_dependencies(
|
|||
api(custom) function b32 managed_scope_clear_contents(Application_Links* app, Managed_Scope scope);
|
||||
api(custom) function b32 managed_scope_clear_self_all_dependent_scopes(Application_Links* app, Managed_Scope scope);
|
||||
api(custom) function Base_Allocator* managed_scope_allocator(Application_Links* app, Managed_Scope scope);
|
||||
api(custom) function u64 managed_id_group_highest_id(Application_Links* app, String_Const_u8 group);
|
||||
api(custom) function Managed_ID managed_id_declare(Application_Links* app, String_Const_u8 group, String_Const_u8 name);
|
||||
api(custom) function void* managed_scope_get_attachment(Application_Links* app, Managed_Scope scope, Managed_ID id, umem size);
|
||||
api(custom) function void* managed_scope_attachment_erase(Application_Links* app, Managed_Scope scope, Managed_ID id);
|
||||
|
@ -153,17 +154,14 @@ api(custom) function Face_ID get_face_id(Application_Links* app, Buffer_ID buffe
|
|||
api(custom) function Face_ID try_create_new_face(Application_Links* app, Face_Description* description);
|
||||
api(custom) function b32 try_modify_face(Application_Links* app, Face_ID id, Face_Description* description);
|
||||
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, 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_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 Vec2_f32 draw_string_oriented(Application_Links* app, Face_ID font_id, ARGB_Color 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, FColor color);
|
||||
api(custom) function void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, FColor color);
|
||||
api(custom) function void draw_rectangle(Application_Links* app, Rect_f32 rect, f32 roundness, ARGB_Color color);
|
||||
api(custom) function void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, f32 roundness, f32 thickness, ARGB_Color 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);
|
||||
|
@ -171,9 +169,9 @@ api(custom) function Buffer_ID text_layout_get_buffer(Application_Links* app, Te
|
|||
api(custom) function Range_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, FColor color);
|
||||
api(custom) function void paint_text_color(Application_Links* app, Text_Layout_ID layout_id, Interval_i64 range, ARGB_Color 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 draw_text_layout(Application_Links* app, Text_Layout_ID layout_id, ARGB_Color special_color, ARGB_Color ghost_color);
|
||||
api(custom) function void open_color_picker(Application_Links* app, Color_Picker* picker);
|
||||
api(custom) function void animate_in_n_milliseconds(Application_Links* app, u32 n);
|
||||
api(custom) function String_Match_List buffer_find_all_matches(Application_Links* app, Arena* arena, Buffer_ID buffer, i32 string_id, Range_i64 range, String_Const_u8 needle, Character_Predicate* predicate, Scan_Direction direction);
|
||||
|
|
|
@ -1,5 +1,43 @@
|
|||
function void
|
||||
initialize_managed_id_metadata(Application_Links *app){
|
||||
defcolor_bar = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_bar"));
|
||||
defcolor_base = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_base"));
|
||||
defcolor_pop1 = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_pop1"));
|
||||
defcolor_pop2 = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_pop2"));
|
||||
defcolor_back = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_back"));
|
||||
defcolor_margin = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_margin"));
|
||||
defcolor_margin_hover = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_margin_hover"));
|
||||
defcolor_margin_active = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_margin_active"));
|
||||
defcolor_list_item = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_list_item"));
|
||||
defcolor_list_item_hover = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_list_item_hover"));
|
||||
defcolor_list_item_active = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_list_item_active"));
|
||||
defcolor_cursor = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_cursor"));
|
||||
defcolor_at_cursor = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_at_cursor"));
|
||||
defcolor_highlight_cursor_line = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_highlight_cursor_line"));
|
||||
defcolor_highlight = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_highlight"));
|
||||
defcolor_at_highlight = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_at_highlight"));
|
||||
defcolor_mark = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_mark"));
|
||||
defcolor_text_default = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_text_default"));
|
||||
defcolor_comment = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_comment"));
|
||||
defcolor_comment_pop = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_comment_pop"));
|
||||
defcolor_keyword = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_keyword"));
|
||||
defcolor_str_constant = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_str_constant"));
|
||||
defcolor_char_constant = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_char_constant"));
|
||||
defcolor_int_constant = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_int_constant"));
|
||||
defcolor_float_constant = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_float_constant"));
|
||||
defcolor_bool_constant = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_bool_constant"));
|
||||
defcolor_preproc = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_preproc"));
|
||||
defcolor_include = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_include"));
|
||||
defcolor_special_character = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_special_character"));
|
||||
defcolor_ghost_character = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_ghost_character"));
|
||||
defcolor_highlight_junk = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_highlight_junk"));
|
||||
defcolor_highlight_white = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_highlight_white"));
|
||||
defcolor_paste = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_paste"));
|
||||
defcolor_undo = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_undo"));
|
||||
defcolor_back_cycle = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_back_cycle"));
|
||||
defcolor_text_cycle = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_text_cycle"));
|
||||
defcolor_line_numbers_back = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_line_numbers_back"));
|
||||
defcolor_line_numbers_text = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_line_numbers_text"));
|
||||
view_rewrite_loc = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("view_rewrite_loc"));
|
||||
view_next_rewrite_loc = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("view_next_rewrite_loc"));
|
||||
view_paste_index_loc = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("view_paste_index_loc"));
|
||||
|
|
Loading…
Reference in New Issue