diff --git a/4ed_api_implementation.cpp b/4ed_api_implementation.cpp index d7251ca0..838505c4 100644 --- a/4ed_api_implementation.cpp +++ b/4ed_api_implementation.cpp @@ -2698,29 +2698,6 @@ get_microseconds_timestamp(Application_Links *app) return(system_now_time()); } -function Vec2 -models_get_coordinate_center(Models *models){ - Vec2 result = {}; - if (models->coordinate_center_stack_top > 0){ - result = models->coordinate_center_stack[models->coordinate_center_stack_top - 1]; - } - return(result); -} - -function Vec2 -draw_helper__models_space_to_screen_space(Models *models, Vec2 point){ - Vec2 c = models_get_coordinate_center(models); - return(point + c); -} - -function Rect_f32 -draw_helper__models_space_to_screen_space(Models *models, Rect_f32 rect){ - Vec2 c = models_get_coordinate_center(models); - rect.p0 += c; - rect.p1 += c; - return(rect); -} - api(custom) function Vec2 draw_string_oriented(Application_Links *app, Face_ID font_id, String_Const_u8 str, Vec2 point, int_color color, u32 flags, Vec2 delta) { @@ -2733,7 +2710,6 @@ draw_string_oriented(Application_Links *app, Face_ID font_id, String_Const_u8 st } else{ Color_Table color_table = models->color_table; - point = draw_helper__models_space_to_screen_space(models, point); u32 actual_color = finalize_color(color_table, color); f32 width = draw_string(models->target, face, str, point, actual_color, flags, delta); result += delta*width; @@ -2754,7 +2730,6 @@ draw_rectangle(Application_Links *app, Rect_f32 rect, int_color color){ Models *models = (Models*)app->cmd_context; if (models->in_render_mode){ Color_Table color_table = models->color_table; - rect = draw_helper__models_space_to_screen_space(models, rect); u32 actual_color = finalize_color(color_table, color); draw_rectangle(models->target, rect, actual_color); } @@ -2766,7 +2741,6 @@ draw_rectangle_outline(Application_Links *app, Rect_f32 rect, int_color color) Models *models = (Models*)app->cmd_context; if (models->in_render_mode){ Color_Table color_table = models->color_table; - rect = draw_helper__models_space_to_screen_space(models, rect); u32 actual_color = finalize_color(color_table, color); draw_rectangle_outline(models->target, rect, actual_color); } @@ -2785,27 +2759,6 @@ draw_clip_pop(Application_Links *app){ return(Rf32(draw_pop_clip(models->target))); } -api(custom) function void -draw_coordinate_center_push(Application_Links *app, Vec2 point){ - Models *models = (Models*)app->cmd_context; - if (models->coordinate_center_stack_top < ArrayCount(models->coordinate_center_stack)){ - point = draw_helper__models_space_to_screen_space(models, point); - models->coordinate_center_stack[models->coordinate_center_stack_top] = point; - models->coordinate_center_stack_top += 1; - } -} - -api(custom) function Vec2 -draw_coordinate_center_pop(Application_Links *app){ - Models *models = (Models*)app->cmd_context; - Vec2 result = {}; - if (models->coordinate_center_stack_top > 0){ - models->coordinate_center_stack_top -= 1; - result = models->coordinate_center_stack[models->coordinate_center_stack_top]; - } - return(result); -} - api(custom) function Text_Layout_ID text_layout_create(Application_Links *app, Buffer_ID buffer_id, Rect_f32 rect, Buffer_Point buffer_point){ Models *models = (Models*)app->cmd_context; @@ -2855,9 +2808,6 @@ text_layout_region(Application_Links *app, Text_Layout_ID text_layout_id){ Text_Layout *layout = text_layout_get(&models->text_layouts, text_layout_id); if (layout != 0){ result = layout->rect; - Vec2_f32 coordinate_center = models_get_coordinate_center(models); - result.p0 -= coordinate_center; - result.p1 -= coordinate_center; } return(result); } @@ -2911,8 +2861,6 @@ text_layout_line_on_screen(Application_Links *app, Text_Layout_ID layout_id, i64 result += rect.y0 - layout->point.pixel_shift.y; result = range_intersect(result, rect_range_y(rect)); - Vec2_f32 coordinate_center = models_get_coordinate_center(models); - result -= coordinate_center.y; } } else if (line_number < layout->visible_line_number_range.min){ @@ -2976,10 +2924,6 @@ text_layout_character_on_screen(Application_Links *app, Text_Layout_ID layout_id result.p0 += shift; result.p1 += shift; result = rect_intersect(rect, result); - - Vec2_f32 coordinate_center = models_get_coordinate_center(models); - result.p0 -= coordinate_center; - result.p1 -= coordinate_center; } } return(result); diff --git a/4ed_app_models.h b/4ed_app_models.h index 98ae2049..0ed2c925 100644 --- a/4ed_app_models.h +++ b/4ed_app_models.h @@ -127,9 +127,6 @@ struct Models{ Render_Target *target; b32 in_render_mode; - // TODO(allen): endless stack? - Vec2 coordinate_center_stack[32]; - i32 coordinate_center_stack_top; }; //////////////////////////////// diff --git a/custom/4coder_default_hooks.cpp b/custom/4coder_default_hooks.cpp index 8ee27192..6466e534 100644 --- a/custom/4coder_default_hooks.cpp +++ b/custom/4coder_default_hooks.cpp @@ -319,11 +319,8 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View f32 line_height = face_metrics.line_height; - Rect_f32 sub_region = Rf32(V2(0, 0), rect_dim(view_inner_rect)); - sub_region = default_view_buffer_region(app, view_id, sub_region); - Rect_f32 buffer_rect = Rf32(V2(view_inner_rect.p0 + sub_region.p0), - V2(view_inner_rect.p0 + sub_region.p1)); - buffer_rect = rect_intersect(buffer_rect, view_inner_rect); + Rect_f32 sub_region = default_view_buffer_region(app, view_id, view_inner_rect); + Rect_f32 buffer_rect = rect_intersect(sub_region, view_inner_rect); Buffer_Scroll scroll = view_get_buffer_scroll(app, view_id); Buffer_Point buffer_point = scroll.position; @@ -496,7 +493,6 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View draw_clip_push(app, buffer_rect); draw_text_layout(app, text_layout_id); - text_layout_free(app, text_layout_id); draw_clip_pop(app); // NOTE(allen): FPS HUD @@ -512,8 +508,6 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View history_frame_index[wrapped_index] = frame_info.index; Rect_f32 hud_rect = view_get_screen_rect(app, view_id); - hud_rect.p1 -= hud_rect.p0; - hud_rect.p0 = V2(0.f, 0.f); hud_rect.y0 = hud_rect.y1 - line_height*(f32)(history_depth); draw_rectangle(app, hud_rect, 0xFF000000); draw_rectangle_outline(app, hud_rect, 0xFFFFFFFF); @@ -558,9 +552,7 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View } // NOTE(allen): Frame - Rect_f32 r_cursor = view_get_screen_rect(app, view_id); - r_cursor.p1 -= r_cursor.p0; - r_cursor.p0 = V2(0.f,0.f); + Rect_f32 r_cursor = view_inner_rect; // NOTE(allen): Filebar b32 showing_file_bar = false; @@ -651,46 +643,45 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View // NOTE(allen): Line Numbers if (global_config.show_line_number_margins){ - i32 line_count = (i32)buffer_get_line_count(app, buffer); - i32 line_count_digit_count = (i32)digit_count_from_integer(line_count, 10); + i64 line_count = buffer_get_line_count(app, buffer); + i64 line_count_digit_count = digit_count_from_integer(line_count, 10); // TODO(allen): I need a "digit width" f32 zero = get_string_advance(app, face_id, string_u8_litexpr("0")); - f32 margin_width = (f32)line_count_digit_count*zero; + f32 margin_width = ((f32)line_count_digit_count)*zero; Rect_f32 left_margin = r_cursor; - left_margin.x1 = left_margin.x0 + margin_width + 2; + left_margin.x1 = left_margin.x0 + margin_width + 2.f; r_cursor.x0 = left_margin.x1; draw_rectangle(app, left_margin, Stag_Line_Numbers_Back); Rect_f32 clip_region = left_margin; - clip_region.p0 += view_inner_rect.p0; - clip_region.p1 += view_inner_rect.p0; draw_clip_push(app, clip_region); Fancy_Color line_color = fancy_id(Stag_Line_Numbers_Text); Buffer_Cursor cursor = view_compute_cursor(app, view_id, seek_pos(visible_range.first)); + i64 line_number = cursor.line; for (;cursor.pos <= visible_range.one_past_last;){ - Range_f32 line_y = text_layout_line_on_screen(app, text_layout_id, cursor.line); - Vec2_f32 p = V2f32(left_margin.x1, line_y.min); - Temp_Memory temp = begin_temp(scratch); - Fancy_String *line_string = push_fancy_stringf(scratch, line_color, "%*lld", line_count_digit_count, cursor.line); - draw_fancy_string(app, face_id, line_string, p, Stag_Margin_Active, 0); - end_temp(temp); - i64 next_line = cursor.line + 1; - cursor = view_compute_cursor(app, view_id, seek_line_col(next_line, 1)); - if (cursor.line < next_line){ + if (line_number > line_count){ break; } + Range_f32 line_y = text_layout_line_on_screen(app, text_layout_id, line_number); + Vec2_f32 p = V2f32(left_margin.x0, line_y.min); + Temp_Memory_Block temp(scratch); + Fancy_String *line_string = push_fancy_stringf(scratch, line_color, "%*lld", line_count_digit_count, line_number); + draw_fancy_string(app, face_id, line_string, p, Stag_Margin_Active, 0); + line_number += 1; } draw_clip_pop(app); } + + text_layout_free(app, text_layout_id); } internal void -default_ui_render_caller(Application_Links *app, View_ID view_id, Rect_f32 rect_f32, Face_ID face_id){ +default_ui_render_caller(Application_Links *app, View_ID view_id, Rect_f32 rect, Face_ID face_id){ UI_Data *ui_data = 0; Arena *ui_arena = 0; if (view_get_ui_data(app, view_id, ViewGetUIFlag_KeepDataAsIs, &ui_data, &ui_arena)){ @@ -700,6 +691,8 @@ default_ui_render_caller(Application_Links *app, View_ID view_id, Rect_f32 rect_ item != 0; item = item->next){ Rect_f32 item_rect = Rf32(item->rect_outer); + item_rect.p0 += rect.p0; + item_rect.p1 += rect.p0; switch (item->coordinates){ case UICoordinates_ViewSpace: @@ -711,7 +704,7 @@ default_ui_render_caller(Application_Links *app, View_ID view_id, Rect_f32 rect_ {}break; } - if (rect_overlap(item_rect, rect_f32)){ + if (rect_overlap(item_rect, rect)){ Rect_f32 inner = rect_inner(item_rect, (f32)item->inner_margin); Face_Metrics metrics = get_face_metrics(app, face_id); @@ -732,23 +725,7 @@ default_ui_render_caller(Application_Links *app, View_ID view_id, Rect_f32 rect_ } } internal void -default_ui_render_caller(Application_Links *app, View_ID view_id, Rect_f32 rect_f32){ - Buffer_ID buffer = view_get_buffer(app, view_id, AccessAll); - Face_ID face_id = get_face_id(app, buffer); - default_ui_render_caller(app, view_id, rect_f32, face_id); -} -internal void -default_ui_render_caller(Application_Links *app, View_ID view_id, Face_ID face_id){ - Rect_f32 rect = view_get_screen_rect(app, view_id); - rect.p1 -= rect.p0; - rect.p0 = V2(0.f,0.f); - default_ui_render_caller(app, view_id, rect, face_id); -} -internal void -default_ui_render_caller(Application_Links *app, View_ID view){ - Rect_f32 rect = view_get_screen_rect(app, view); - rect.p1 -= rect.p0; - rect.p0 = V2(0.f,0.f); +default_ui_render_caller(Application_Links *app, View_ID view, Rect_f32 rect){ Buffer_ID buffer = view_get_buffer(app, view, AccessAll); Face_ID face_id = get_face_id(app, buffer); default_ui_render_caller(app, view, rect, face_id); @@ -761,14 +738,13 @@ default_render_view(Application_Links *app, Frame_Info frame_info, View_ID view, draw_rectangle(app, view_rect, get_margin_color(is_active?UIActivation_Active:UIActivation_None)); draw_rectangle(app, inner, Stag_Back); draw_clip_push(app, inner); - draw_coordinate_center_push(app, inner.p0); Managed_Scope scope = view_get_managed_scope(app, view); View_Render_Hook **hook_ptr = scope_attachment(app, scope, view_render_hook, View_Render_Hook*); if (*hook_ptr == 0){ if (view_is_in_ui_mode(app, view)){ - default_ui_render_caller(app, view); + default_ui_render_caller(app, view, inner); } else{ default_buffer_render_caller(app, frame_info, view, inner); @@ -780,7 +756,6 @@ default_render_view(Application_Links *app, Frame_Info frame_info, View_ID view, } draw_clip_pop(app); - draw_coordinate_center_pop(app); } RENDER_CALLER_SIG(default_render_caller){ @@ -794,7 +769,6 @@ RENDER_CALLER_SIG(default_render_caller){ HOOK_SIG(default_exit){ // If this returns false it cancels the exit. - b32 result = true; if (!allow_immediate_close_without_checking_for_changes){ diff --git a/custom/generated/custom_api.cpp b/custom/generated/custom_api.cpp index 2af22333..67e89b03 100644 --- a/custom/generated/custom_api.cpp +++ b/custom/generated/custom_api.cpp @@ -168,8 +168,6 @@ vtable->draw_rectangle = draw_rectangle; vtable->draw_rectangle_outline = draw_rectangle_outline; vtable->draw_clip_push = draw_clip_push; vtable->draw_clip_pop = draw_clip_pop; -vtable->draw_coordinate_center_push = draw_coordinate_center_push; -vtable->draw_coordinate_center_pop = draw_coordinate_center_pop; vtable->text_layout_create = text_layout_create; vtable->text_layout_region = text_layout_region; vtable->text_layout_get_buffer = text_layout_get_buffer; @@ -354,8 +352,6 @@ draw_rectangle = vtable->draw_rectangle; draw_rectangle_outline = vtable->draw_rectangle_outline; draw_clip_push = vtable->draw_clip_push; draw_clip_pop = vtable->draw_clip_pop; -draw_coordinate_center_push = vtable->draw_coordinate_center_push; -draw_coordinate_center_pop = vtable->draw_coordinate_center_pop; text_layout_create = vtable->text_layout_create; text_layout_region = vtable->text_layout_region; text_layout_get_buffer = vtable->text_layout_get_buffer; diff --git a/custom/generated/custom_api.h b/custom/generated/custom_api.h index 37b7fc60..3d52ec63 100644 --- a/custom/generated/custom_api.h +++ b/custom/generated/custom_api.h @@ -166,8 +166,6 @@ #define custom_draw_rectangle_outline_sig() void custom_draw_rectangle_outline(Application_Links* app, Rect_f32 rect, int_color color) #define custom_draw_clip_push_sig() void custom_draw_clip_push(Application_Links* app, Rect_f32 clip_box) #define custom_draw_clip_pop_sig() Rect_f32 custom_draw_clip_pop(Application_Links* app) -#define custom_draw_coordinate_center_push_sig() void custom_draw_coordinate_center_push(Application_Links* app, Vec2 point) -#define custom_draw_coordinate_center_pop_sig() Vec2 custom_draw_coordinate_center_pop(Application_Links* app) #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) #define custom_text_layout_get_buffer_sig() Buffer_ID custom_text_layout_get_buffer(Application_Links* app, Text_Layout_ID text_layout_id) @@ -348,8 +346,6 @@ typedef void custom_draw_rectangle_type(Application_Links* app, Rect_f32 rect, i typedef void custom_draw_rectangle_outline_type(Application_Links* app, Rect_f32 rect, int_color color); typedef void custom_draw_clip_push_type(Application_Links* app, Rect_f32 clip_box); typedef Rect_f32 custom_draw_clip_pop_type(Application_Links* app); -typedef void custom_draw_coordinate_center_push_type(Application_Links* app, Vec2 point); -typedef Vec2 custom_draw_coordinate_center_pop_type(Application_Links* app); 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); typedef Buffer_ID custom_text_layout_get_buffer_type(Application_Links* app, Text_Layout_ID text_layout_id); @@ -531,8 +527,6 @@ custom_draw_rectangle_type *draw_rectangle; custom_draw_rectangle_outline_type *draw_rectangle_outline; custom_draw_clip_push_type *draw_clip_push; custom_draw_clip_pop_type *draw_clip_pop; -custom_draw_coordinate_center_push_type *draw_coordinate_center_push; -custom_draw_coordinate_center_pop_type *draw_coordinate_center_pop; custom_text_layout_create_type *text_layout_create; custom_text_layout_region_type *text_layout_region; custom_text_layout_get_buffer_type *text_layout_get_buffer; @@ -715,8 +709,6 @@ internal void draw_rectangle(Application_Links* app, Rect_f32 rect, int_color co internal void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, int_color color); internal void draw_clip_push(Application_Links* app, Rect_f32 clip_box); internal Rect_f32 draw_clip_pop(Application_Links* app); -internal void draw_coordinate_center_push(Application_Links* app, Vec2 point); -internal Vec2 draw_coordinate_center_pop(Application_Links* app); 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); internal Buffer_ID text_layout_get_buffer(Application_Links* app, Text_Layout_ID text_layout_id); @@ -899,8 +891,6 @@ global custom_draw_rectangle_type *draw_rectangle = 0; global custom_draw_rectangle_outline_type *draw_rectangle_outline = 0; global custom_draw_clip_push_type *draw_clip_push = 0; global custom_draw_clip_pop_type *draw_clip_pop = 0; -global custom_draw_coordinate_center_push_type *draw_coordinate_center_push = 0; -global custom_draw_coordinate_center_pop_type *draw_coordinate_center_pop = 0; global custom_text_layout_create_type *text_layout_create = 0; global custom_text_layout_region_type *text_layout_region = 0; global custom_text_layout_get_buffer_type *text_layout_get_buffer = 0; diff --git a/custom/generated/custom_api_master_list.h b/custom/generated/custom_api_master_list.h index 8ac79eeb..fb2801f8 100644 --- a/custom/generated/custom_api_master_list.h +++ b/custom/generated/custom_api_master_list.h @@ -166,8 +166,6 @@ api(custom) function void draw_rectangle(Application_Links* app, Rect_f32 rect, api(custom) function void draw_rectangle_outline(Application_Links* app, Rect_f32 rect, int_color color); api(custom) function void draw_clip_push(Application_Links* app, Rect_f32 clip_box); api(custom) function Rect_f32 draw_clip_pop(Application_Links* app); -api(custom) function void draw_coordinate_center_push(Application_Links* app, Vec2 point); -api(custom) function Vec2 draw_coordinate_center_pop(Application_Links* app); 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); api(custom) function Buffer_ID text_layout_get_buffer(Application_Links* app, Text_Layout_ID text_layout_id);