Remove View_Summary from core API
							parent
							
								
									18b755c626
								
							
						
					
					
						commit
						3911eb2197
					
				|  | @ -646,41 +646,6 @@ STRUCT Marker{ | |||
| }; | ||||
| 
 | ||||
| 
 | ||||
| /* DOC(View_Summary acts as a handle to a view and describes the state of the view.)
 | ||||
| DOC_SEE(Access_Flag) | ||||
| DOC_SEE(Full_Cursor) | ||||
| DOC_SEE(GUI_Scroll_Vars) */ | ||||
| STRUCT View_Summary{ | ||||
|     /* DOC(This field indicates whether the View_Summary describes a view that is open in 4coder. When this field is false the summary is referred to as a "null summary". ) */ | ||||
|     b32 exists; | ||||
|     /* DOC(This field is the id of the associated view. If this is a null summary then view_id is 0. ) */ | ||||
|     i32 view_id; | ||||
|     /* DOC(Then this is the id of the buffer this view currently sees.) */ | ||||
|     i32 buffer_id; | ||||
|     /* DOC(This field contains flags describing the protection status of the view.) */ | ||||
|     Access_Flag lock_flags; | ||||
|      | ||||
|     /* DOC(This describes the position of the cursor.) */ | ||||
|     Full_Cursor cursor; | ||||
|     /* DOC(This describes the position of the mark.) */ | ||||
|     Full_Cursor mark; | ||||
|     /* DOC(This is the x position that is maintained in vertical navigation.) */ | ||||
|     float preferred_x; | ||||
|     /* DOC(This specifies the height of a line rendered in the view.) */ | ||||
|     float line_height; | ||||
|     /* DOC(This indicates that the view is set to render with unwrapped lines.) */ | ||||
|     b32 unwrapped_lines; | ||||
|     /* DOC(This indicates that the view is set to highlight white space.) */ | ||||
|     b32 show_whitespace; | ||||
|      | ||||
|     /* DOC(This describes the screen position in which this view is displayed.) */ | ||||
|     i32_Rect view_region; | ||||
|     /* DOC(TODO) */ | ||||
|     i32_Rect render_region; | ||||
|     /* DOC(This describes the scrolling position inside the view.) */ | ||||
|     GUI_Scroll_Vars scroll_vars; | ||||
| }; | ||||
| 
 | ||||
| /* DOC(The enumeration of types of managed objects.) */ | ||||
| ENUM(i32, Managed_Object_Type) | ||||
| { | ||||
|  | @ -830,8 +795,8 @@ STRUCT Query_Bar_Ptr_Array{ | |||
|     i32 count; | ||||
| }; | ||||
| 
 | ||||
| TYPEDEF_FUNC void UI_Quit_Function_Type(struct Application_Links *app, View_Summary view); | ||||
| #define UI_QUIT_FUNCTION(name) void name(struct Application_Links *app, View_Summary view) | ||||
| TYPEDEF_FUNC void UI_Quit_Function_Type(struct Application_Links *app, View_ID view); | ||||
| #define UI_QUIT_FUNCTION(name) void name(struct Application_Links *app, View_ID view) | ||||
| 
 | ||||
| /*
 | ||||
| DOC(Theme_Color stores a style tag/color pair, for the purpose of setting and getting colors in the theme.) | ||||
|  |  | |||
|  | @ -57,6 +57,42 @@ get_buffer_summary(Application_Links *app, Buffer_ID buffer_id, Access_Flag acce | |||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| static b32 | ||||
| get_view_summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view){ | ||||
|     b32 result = false; | ||||
|     if (view_exists(app, view_id)){ | ||||
|         Buffer_ID buffer = 0; | ||||
|         if (view_get_buffer(app, view_id, access, &buffer)){ | ||||
|             result = true; | ||||
|              | ||||
|             Face_ID face_id = 0; | ||||
|             get_face_id(app, buffer, &face_id); | ||||
|             Face_Metrics metrics = {}; | ||||
|             get_face_metrics(app, face_id, &metrics); | ||||
|              | ||||
|             view->exists = true; | ||||
|             view->view_id = view_id; | ||||
|             view->line_height = metrics.line_height; | ||||
|             buffer_get_setting(app, buffer, BufferSetting_WrapLine, &view->unwrapped_lines); | ||||
|             view->unwrapped_lines = !view->unwrapped_lines; | ||||
|             view_get_setting(app, view_id, ViewSetting_ShowWhitespace, &view->show_whitespace); | ||||
|             view->buffer_id = buffer; | ||||
|             i32 pos = 0; | ||||
|             view_get_mark_pos(app, view_id, &pos); | ||||
|             view_compute_cursor(app, view_id, seek_pos(pos), &view->mark); | ||||
|             view_get_cursor_pos(app, view_id, &pos); | ||||
|             view_compute_cursor(app, view_id, seek_pos(pos), &view->cursor); | ||||
|             view_get_preferred_x(app, view_id, &view->preferred_x); | ||||
|             Rect_f32 screen_rect = {}; | ||||
|             view_get_screen_rect(app, view_id, &screen_rect); | ||||
|             view->view_region = screen_rect; | ||||
|             view->render_region = f32R(0.f, 0.f, rect_width(screen_rect), rect_height(screen_rect)); | ||||
|             view_get_scroll_vars(app, view_id, &view->scroll_vars); | ||||
|         } | ||||
|     } | ||||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| static b32 | ||||
| exec_system_command(Application_Links *app, View_Summary *view, Buffer_Identifier buffer_id, | ||||
|                     char *path, int32_t path_len, char *command, i32 command_len, Command_Line_Interface_Flag flags){ | ||||
|  |  | |||
|  | @ -65,6 +65,41 @@ STRUCT Buffer_Summary{ | |||
|     b32 unwrapped_lines; | ||||
| }; | ||||
| 
 | ||||
| /* DOC(View_Summary acts as a handle to a view and describes the state of the view.)
 | ||||
| DOC_SEE(Access_Flag) | ||||
| DOC_SEE(Full_Cursor) | ||||
| DOC_SEE(GUI_Scroll_Vars) */ | ||||
| STRUCT View_Summary{ | ||||
|     /* DOC(This field indicates whether the View_Summary describes a view that is open in 4coder. When this field is false the summary is referred to as a "null summary". ) */ | ||||
|     b32 exists; | ||||
|     /* DOC(This field is the id of the associated view. If this is a null summary then view_id is 0. ) */ | ||||
|     i32 view_id; | ||||
|     /* DOC(Then this is the id of the buffer this view currently sees.) */ | ||||
|     i32 buffer_id; | ||||
|     /* DOC(This field contains flags describing the protection status of the view.) */ | ||||
|     Access_Flag lock_flags; | ||||
|      | ||||
|     /* DOC(This describes the position of the cursor.) */ | ||||
|     Full_Cursor cursor; | ||||
|     /* DOC(This describes the position of the mark.) */ | ||||
|     Full_Cursor mark; | ||||
|     /* DOC(This is the x position that is maintained in vertical navigation.) */ | ||||
|     f32 preferred_x; | ||||
|     /* DOC(This specifies the height of a line rendered in the view.) */ | ||||
|     f32 line_height; | ||||
|     /* DOC(This indicates that the view is set to render with unwrapped lines.) */ | ||||
|     b32 unwrapped_lines; | ||||
|     /* DOC(This indicates that the view is set to highlight white space.) */ | ||||
|     b32 show_whitespace; | ||||
|      | ||||
|     /* DOC(This describes the screen position in which this view is displayed.) */ | ||||
|     Rect_f32 view_region; | ||||
|     /* DOC(TODO) */ | ||||
|     Rect_f32 render_region; | ||||
|     /* DOC(This describes the scrolling position inside the view.) */ | ||||
|     GUI_Scroll_Vars scroll_vars; | ||||
| }; | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| // BOTTOM
 | ||||
|  |  | |||
|  | @ -377,7 +377,7 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View | |||
|     } | ||||
|      | ||||
|     { | ||||
|         Rect_f32 r_cursor = f32R(view.render_region); | ||||
|         Rect_f32 r_cursor = view.render_region; | ||||
|          | ||||
|         // NOTE(allen): Filebar
 | ||||
|         { | ||||
|  | @ -724,7 +724,7 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View | |||
|         history_animation_dt[wrapped_index] = frame_info.animation_dt; | ||||
|         history_frame_index[wrapped_index]  = frame_info.index; | ||||
|          | ||||
|         Rect_f32 hud_rect = f32R(view.render_region); | ||||
|         Rect_f32 hud_rect = view.render_region; | ||||
|         hud_rect.y0 = hud_rect.y1 - view.line_height*(f32)(history_depth); | ||||
|         draw_rectangle(app, hud_rect, 0xFF000000); | ||||
|         draw_rectangle_outline(app, hud_rect, 0xFFFFFFFF); | ||||
|  | @ -860,7 +860,7 @@ static void | |||
| default_ui_render_caller(Application_Links *app, View_ID view_id, Face_ID face_id){ | ||||
|     View_Summary view = {}; | ||||
|     if (get_view_summary(app, view_id, AccessAll, &view)){ | ||||
|         Rect_f32 rect_f32 = f32R(view.render_region); | ||||
|         Rect_f32 rect_f32 = view.render_region; | ||||
|         default_ui_render_caller(app, view_id, rect_f32, face_id); | ||||
|     } | ||||
| } | ||||
|  | @ -868,7 +868,7 @@ static void | |||
| default_ui_render_caller(Application_Links *app, View_ID view_id){ | ||||
|     View_Summary view = {}; | ||||
|     if (get_view_summary(app, view_id, AccessAll, &view)){ | ||||
|         Rect_f32 rect_f32 = f32R(view.render_region); | ||||
|         Rect_f32 rect_f32 = view.render_region; | ||||
|         Buffer_ID buffer_id = 0; | ||||
|         view_get_buffer(app, view_id, AccessAll, &buffer_id); | ||||
|         Face_ID face_id = 0; | ||||
|  | @ -942,7 +942,7 @@ HOOK_SIG(default_view_adjust){ | |||
|          get_view_next(app, &view, AccessAll)){ | ||||
|         Buffer_ID buffer = 0; | ||||
|         view_get_buffer(app, view.view_id, AccessAll, &buffer); | ||||
|         i32 view_width = view.render_region.x1 - view.render_region.x0; | ||||
|         f32 view_width = view.render_region.x1 - view.render_region.x0; | ||||
|         Face_ID face_id = get_default_font_for_view(app, view.view_id); | ||||
|         f32 em = get_string_advance(app, face_id, make_lit_string("m")); | ||||
|          | ||||
|  |  | |||
|  | @ -43,11 +43,12 @@ | |||
| #include "4coder_scope_commands.h" | ||||
| #include "4coder_combined_write_commands.h" | ||||
| 
 | ||||
| #include "4coder_buffer_seek_constructors.cpp" | ||||
| #include "4coder_hash_functions.cpp" | ||||
| 
 | ||||
| #include "4coder_api_transition_30_31.cpp" | ||||
| 
 | ||||
| #include "4coder_hash_functions.cpp" | ||||
| #include "4coder_default_framework_variables.cpp" | ||||
| #include "4coder_buffer_seek_constructors.cpp" | ||||
| #include "4coder_helper.cpp" | ||||
| #include "4coder_fancy.cpp" | ||||
| #include "4coder_ui_helper.cpp" | ||||
|  |  | |||
|  | @ -47,11 +47,14 @@ struct Application_Links; | |||
| #define BUFFER_GET_FILE_ATTRIBUTES_SIG(n) b32 n(Application_Links *app, Buffer_ID buffer_id, File_Attributes *attributes_out) | ||||
| #define GET_VIEW_NEXT_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out) | ||||
| #define GET_VIEW_PREV_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out) | ||||
| #define GET_VIEW_SUMMARY_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out) | ||||
| #define GET_ACTIVE_VIEW_SIG(n) b32 n(Application_Links *app, Access_Flag access, View_ID *view_id_out) | ||||
| #define GET_ACTIVE_PANEL_SIG(n) b32 n(Application_Links *app, Panel_ID *panel_id_out) | ||||
| #define VIEW_EXISTS_SIG(n) b32 n(Application_Links *app, View_ID view_id) | ||||
| #define VIEW_GET_BUFFER_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out) | ||||
| #define VIEW_GET_CURSOR_POS_SIG(n) b32 n(Application_Links *app, View_ID view_id, i32 *pos_out) | ||||
| #define VIEW_GET_MARK_POS_SIG(n) b32 n(Application_Links *app, View_ID view_id, i32 *pos_out) | ||||
| #define VIEW_GET_PREFERRED_X_SIG(n) b32 n(Application_Links *app, View_ID view_id, f32 *preferred_x_out) | ||||
| #define VIEW_GET_SCREEN_RECT_SIG(n) b32 n(Application_Links *app, View_ID view_id, Rect_f32 *rect_out) | ||||
| #define VIEW_GET_PANEL_SIG(n) b32 n(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out) | ||||
| #define PANEL_GET_VIEW_SIG(n) b32 n(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out) | ||||
| #define PANEL_IS_SPLIT_SIG(n) b32 n(Application_Links *app, Panel_ID panel_id) | ||||
|  | @ -229,11 +232,14 @@ typedef BUFFER_REOPEN_SIG(Buffer_Reopen_Function); | |||
| typedef BUFFER_GET_FILE_ATTRIBUTES_SIG(Buffer_Get_File_Attributes_Function); | ||||
| typedef GET_VIEW_NEXT_SIG(Get_View_Next_Function); | ||||
| typedef GET_VIEW_PREV_SIG(Get_View_Prev_Function); | ||||
| typedef GET_VIEW_SUMMARY_SIG(Get_View_Summary_Function); | ||||
| typedef GET_ACTIVE_VIEW_SIG(Get_Active_View_Function); | ||||
| typedef GET_ACTIVE_PANEL_SIG(Get_Active_Panel_Function); | ||||
| typedef VIEW_EXISTS_SIG(View_Exists_Function); | ||||
| typedef VIEW_GET_BUFFER_SIG(View_Get_Buffer_Function); | ||||
| typedef VIEW_GET_CURSOR_POS_SIG(View_Get_Cursor_Pos_Function); | ||||
| typedef VIEW_GET_MARK_POS_SIG(View_Get_Mark_Pos_Function); | ||||
| typedef VIEW_GET_PREFERRED_X_SIG(View_Get_Preferred_X_Function); | ||||
| typedef VIEW_GET_SCREEN_RECT_SIG(View_Get_Screen_Rect_Function); | ||||
| typedef VIEW_GET_PANEL_SIG(View_Get_Panel_Function); | ||||
| typedef PANEL_GET_VIEW_SIG(Panel_Get_View_Function); | ||||
| typedef PANEL_IS_SPLIT_SIG(Panel_Is_Split_Function); | ||||
|  | @ -413,11 +419,14 @@ Buffer_Reopen_Function *buffer_reopen; | |||
| Buffer_Get_File_Attributes_Function *buffer_get_file_attributes; | ||||
| Get_View_Next_Function *get_view_next; | ||||
| Get_View_Prev_Function *get_view_prev; | ||||
| Get_View_Summary_Function *get_view_summary; | ||||
| Get_Active_View_Function *get_active_view; | ||||
| Get_Active_Panel_Function *get_active_panel; | ||||
| View_Exists_Function *view_exists; | ||||
| View_Get_Buffer_Function *view_get_buffer; | ||||
| View_Get_Cursor_Pos_Function *view_get_cursor_pos; | ||||
| View_Get_Mark_Pos_Function *view_get_mark_pos; | ||||
| View_Get_Preferred_X_Function *view_get_preferred_x; | ||||
| View_Get_Screen_Rect_Function *view_get_screen_rect; | ||||
| View_Get_Panel_Function *view_get_panel; | ||||
| Panel_Get_View_Function *panel_get_view; | ||||
| Panel_Is_Split_Function *panel_is_split; | ||||
|  | @ -596,11 +605,14 @@ Buffer_Reopen_Function *buffer_reopen_; | |||
| Buffer_Get_File_Attributes_Function *buffer_get_file_attributes_; | ||||
| Get_View_Next_Function *get_view_next_; | ||||
| Get_View_Prev_Function *get_view_prev_; | ||||
| Get_View_Summary_Function *get_view_summary_; | ||||
| Get_Active_View_Function *get_active_view_; | ||||
| Get_Active_Panel_Function *get_active_panel_; | ||||
| View_Exists_Function *view_exists_; | ||||
| View_Get_Buffer_Function *view_get_buffer_; | ||||
| View_Get_Cursor_Pos_Function *view_get_cursor_pos_; | ||||
| View_Get_Mark_Pos_Function *view_get_mark_pos_; | ||||
| View_Get_Preferred_X_Function *view_get_preferred_x_; | ||||
| View_Get_Screen_Rect_Function *view_get_screen_rect_; | ||||
| View_Get_Panel_Function *view_get_panel_; | ||||
| Panel_Get_View_Function *panel_get_view_; | ||||
| Panel_Is_Split_Function *panel_is_split_; | ||||
|  | @ -787,11 +799,14 @@ app_links->buffer_reopen_ = Buffer_Reopen;\ | |||
| app_links->buffer_get_file_attributes_ = Buffer_Get_File_Attributes;\ | ||||
| app_links->get_view_next_ = Get_View_Next;\ | ||||
| app_links->get_view_prev_ = Get_View_Prev;\ | ||||
| app_links->get_view_summary_ = Get_View_Summary;\ | ||||
| app_links->get_active_view_ = Get_Active_View;\ | ||||
| app_links->get_active_panel_ = Get_Active_Panel;\ | ||||
| app_links->view_exists_ = View_Exists;\ | ||||
| app_links->view_get_buffer_ = View_Get_Buffer;\ | ||||
| app_links->view_get_cursor_pos_ = View_Get_Cursor_Pos;\ | ||||
| app_links->view_get_mark_pos_ = View_Get_Mark_Pos;\ | ||||
| app_links->view_get_preferred_x_ = View_Get_Preferred_X;\ | ||||
| app_links->view_get_screen_rect_ = View_Get_Screen_Rect;\ | ||||
| app_links->view_get_panel_ = View_Get_Panel;\ | ||||
| app_links->panel_get_view_ = Panel_Get_View;\ | ||||
| app_links->panel_is_split_ = Panel_Is_Split;\ | ||||
|  | @ -970,11 +985,14 @@ static b32 buffer_reopen(Application_Links *app, Buffer_ID buffer_id, Buffer_Reo | |||
| static b32 buffer_get_file_attributes(Application_Links *app, Buffer_ID buffer_id, File_Attributes *attributes_out){return(app->buffer_get_file_attributes(app, buffer_id, attributes_out));} | ||||
| static b32 get_view_next(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_next(app, view_id, access, view_id_out));} | ||||
| static b32 get_view_prev(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_prev(app, view_id, access, view_id_out));} | ||||
| static b32 get_view_summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out){return(app->get_view_summary(app, view_id, access, view_summary_out));} | ||||
| static b32 get_active_view(Application_Links *app, Access_Flag access, View_ID *view_id_out){return(app->get_active_view(app, access, view_id_out));} | ||||
| static b32 get_active_panel(Application_Links *app, Panel_ID *panel_id_out){return(app->get_active_panel(app, panel_id_out));} | ||||
| static b32 view_exists(Application_Links *app, View_ID view_id){return(app->view_exists(app, view_id));} | ||||
| static b32 view_get_buffer(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out){return(app->view_get_buffer(app, view_id, access, buffer_id_out));} | ||||
| static b32 view_get_cursor_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_cursor_pos(app, view_id, pos_out));} | ||||
| static b32 view_get_mark_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_mark_pos(app, view_id, pos_out));} | ||||
| static b32 view_get_preferred_x(Application_Links *app, View_ID view_id, f32 *preferred_x_out){return(app->view_get_preferred_x(app, view_id, preferred_x_out));} | ||||
| static b32 view_get_screen_rect(Application_Links *app, View_ID view_id, Rect_f32 *rect_out){return(app->view_get_screen_rect(app, view_id, rect_out));} | ||||
| static b32 view_get_panel(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out){return(app->view_get_panel(app, view_id, panel_id_out));} | ||||
| static b32 panel_get_view(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out){return(app->panel_get_view(app, panel_id, view_id_out));} | ||||
| static b32 panel_is_split(Application_Links *app, Panel_ID panel_id){return(app->panel_is_split(app, panel_id));} | ||||
|  | @ -1153,11 +1171,14 @@ static b32 buffer_reopen(Application_Links *app, Buffer_ID buffer_id, Buffer_Reo | |||
| static b32 buffer_get_file_attributes(Application_Links *app, Buffer_ID buffer_id, File_Attributes *attributes_out){return(app->buffer_get_file_attributes_(app, buffer_id, attributes_out));} | ||||
| static b32 get_view_next(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_next_(app, view_id, access, view_id_out));} | ||||
| static b32 get_view_prev(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_prev_(app, view_id, access, view_id_out));} | ||||
| static b32 get_view_summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out){return(app->get_view_summary_(app, view_id, access, view_summary_out));} | ||||
| static b32 get_active_view(Application_Links *app, Access_Flag access, View_ID *view_id_out){return(app->get_active_view_(app, access, view_id_out));} | ||||
| static b32 get_active_panel(Application_Links *app, Panel_ID *panel_id_out){return(app->get_active_panel_(app, panel_id_out));} | ||||
| static b32 view_exists(Application_Links *app, View_ID view_id){return(app->view_exists_(app, view_id));} | ||||
| static b32 view_get_buffer(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out){return(app->view_get_buffer_(app, view_id, access, buffer_id_out));} | ||||
| static b32 view_get_cursor_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_cursor_pos_(app, view_id, pos_out));} | ||||
| static b32 view_get_mark_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_mark_pos_(app, view_id, pos_out));} | ||||
| static b32 view_get_preferred_x(Application_Links *app, View_ID view_id, f32 *preferred_x_out){return(app->view_get_preferred_x_(app, view_id, preferred_x_out));} | ||||
| static b32 view_get_screen_rect(Application_Links *app, View_ID view_id, Rect_f32 *rect_out){return(app->view_get_screen_rect_(app, view_id, rect_out));} | ||||
| static b32 view_get_panel(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out){return(app->view_get_panel_(app, view_id, panel_id_out));} | ||||
| static b32 panel_get_view(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out){return(app->panel_get_view_(app, panel_id, view_id_out));} | ||||
| static b32 panel_is_split(Application_Links *app, Panel_ID panel_id){return(app->panel_is_split_(app, panel_id));} | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ CUSTOM_DOC("A lister mode command that activates the list's action on the highli | |||
|     Partition *scratch = &global_part; | ||||
|     Heap *heap = &global_heap; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         void *user_data = 0; | ||||
|         if (0 <= state->raw_item_index && state->raw_item_index < state->lister.data.options.count){ | ||||
|  | @ -32,7 +32,7 @@ CUSTOM_COMMAND_SIG(lister__write_character) | |||
| CUSTOM_DOC("A lister mode command that dispatches to the lister's write character handler.") | ||||
| { | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->lister.data.handlers.write_character != 0){ | ||||
|         state->lister.data.handlers.write_character(app); | ||||
|     } | ||||
|  | @ -42,7 +42,7 @@ CUSTOM_COMMAND_SIG(lister__backspace_text_field) | |||
| CUSTOM_DOC("A lister mode command that dispatches to the lister's backspace text field handler.") | ||||
| { | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->lister.data.handlers.backspace != 0){ | ||||
|         state->lister.data.handlers.backspace(app); | ||||
|     } | ||||
|  | @ -52,7 +52,7 @@ CUSTOM_COMMAND_SIG(lister__move_up) | |||
| CUSTOM_DOC("A lister mode command that dispatches to the lister's navigate up handler.") | ||||
| { | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->lister.data.handlers.navigate_up != 0){ | ||||
|         state->lister.data.handlers.navigate_up(app); | ||||
|     } | ||||
|  | @ -62,7 +62,7 @@ CUSTOM_COMMAND_SIG(lister__move_down) | |||
| CUSTOM_DOC("A lister mode command that dispatches to the lister's navigate down handler.") | ||||
| { | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->lister.data.handlers.navigate_down != 0){ | ||||
|         state->lister.data.handlers.navigate_down(app); | ||||
|     } | ||||
|  | @ -77,7 +77,7 @@ CUSTOM_DOC("A lister mode command that scrolls the list in response to the mouse | |||
|     Mouse_State mouse = get_mouse_state(app); | ||||
|     scroll.target_y += mouse.wheel; | ||||
|     view_set_scroll(app, &view, scroll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         lister_update_ui(app, scratch, &view, state); | ||||
|     } | ||||
|  | @ -88,7 +88,7 @@ CUSTOM_DOC("A lister mode command that beings a click interaction with a list it | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         UI_Item clicked = lister_get_clicked_item(app, view.view_id, scratch); | ||||
|         state->hot_user_data = clicked.user_data; | ||||
|  | @ -101,7 +101,7 @@ CUSTOM_DOC("A lister mode command that ends a click interaction with a list item | |||
|     Partition *scratch = &global_part; | ||||
|     Heap *heap = &global_heap; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized && state->hot_user_data != 0){ | ||||
|         UI_Item clicked = lister_get_clicked_item(app, view.view_id, scratch); | ||||
|         if (state->hot_user_data == clicked.user_data){ | ||||
|  | @ -116,7 +116,7 @@ CUSTOM_DOC("A lister mode command that updates the lists UI data.") | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         lister_update_ui(app, scratch, &view, state); | ||||
|     } | ||||
|  | @ -127,7 +127,7 @@ CUSTOM_DOC("A lister mode command that inserts a new character to the text field | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         User_Input in = get_command_input(app); | ||||
|         u8 character[4]; | ||||
|  | @ -147,7 +147,7 @@ CUSTOM_DOC("A lister mode command that backspaces one character from the text fi | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         backspace_utf8(&state->lister.data.text_field); | ||||
|         backspace_utf8(&state->lister.data.key_string); | ||||
|  | @ -162,7 +162,7 @@ CUSTOM_DOC("A lister mode command that moves the highlighted item one up in the | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         state->item_index = state->item_index - 1; | ||||
|         if (state->item_index < 0){ | ||||
|  | @ -178,7 +178,7 @@ CUSTOM_DOC("A lister mode command that moves the highlighted item one down in th | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         state->item_index = state->item_index + 1; | ||||
|         if (state->item_index > state->item_count_after_filter - 1){ | ||||
|  | @ -194,7 +194,7 @@ CUSTOM_DOC("A lister mode command that inserts a character into the text field o | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         User_Input in = get_command_input(app); | ||||
|         u8 character[4]; | ||||
|  | @ -219,7 +219,7 @@ CUSTOM_DOC("A lister mode command that backspaces one character from the text fi | |||
| { | ||||
|     Partition *scratch = &global_part; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         if (state->lister.data.text_field.size > 0){ | ||||
|             char last_char = state->lister.data.text_field.str[state->lister.data.text_field.size - 1]; | ||||
|  | @ -259,7 +259,7 @@ CUSTOM_DOC("A lister mode command that handles input for the fixed sure to kill | |||
|     Partition *scratch = &global_part; | ||||
|     Heap *heap = &global_heap; | ||||
|     View_Summary view = get_active_view(app, AccessAll); | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view.view_id); | ||||
|     if (state->initialized){ | ||||
|         User_Input in = get_command_input(app); | ||||
|         u8 character[4]; | ||||
|  | @ -316,7 +316,7 @@ begin_integrated_lister__with_refresh_handler(Application_Links *app, char *quer | |||
|         Heap *heap = &global_heap; | ||||
|         view_begin_ui_mode(app, view); | ||||
|         view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map); | ||||
|         Lister_State *state = view_get_lister_state(view); | ||||
|         Lister_State *state = view_get_lister_state(view->view_id); | ||||
|         init_lister_state(app, state, heap); | ||||
|         lister_first_init(app, &state->lister, user_data, user_data_size); | ||||
|         lister_set_query_string(&state->lister.data, query_string); | ||||
|  | @ -354,7 +354,7 @@ begin_integrated_lister__basic_list(Application_Links *app, char *query_string, | |||
|     Heap *heap = &global_heap; | ||||
|     view_begin_ui_mode(app, view); | ||||
|     view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map); | ||||
|     Lister_State *state = view_get_lister_state(view); | ||||
|     Lister_State *state = view_get_lister_state(view->view_id); | ||||
|     init_lister_state(app, state, heap); | ||||
|     lister_first_init(app, &state->lister, user_data, user_data_size); | ||||
|     for (i32 i = 0; i < option_count; i += 1){ | ||||
|  | @ -377,7 +377,7 @@ begin_integrated_lister__with_fixed_options(Application_Links *app, char *query_ | |||
|     Heap *heap = &global_heap; | ||||
|     view_begin_ui_mode(app, view); | ||||
|     view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map); | ||||
|     Lister_State *state = view_get_lister_state(view); | ||||
|     Lister_State *state = view_get_lister_state(view->view_id); | ||||
|     init_lister_state(app, state, heap); | ||||
|     lister_first_init(app, &state->lister, user_data, user_data_size); | ||||
|     for (i32 i = 0; i < option_count; i += 1){ | ||||
|  | @ -423,7 +423,7 @@ begin_integrated_lister__theme_list(Application_Links *app, char *query_string, | |||
|     Heap *heap = &global_heap; | ||||
|     view_begin_ui_mode(app, view); | ||||
|     view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map); | ||||
|     Lister_State *state = view_get_lister_state(view); | ||||
|     Lister_State *state = view_get_lister_state(view->view_id); | ||||
|     init_lister_state(app, state, heap); | ||||
|     lister_first_init(app, &state->lister, user_data, user_data_size); | ||||
|     state->lister.data.theme_list = true; | ||||
|  |  | |||
|  | @ -260,12 +260,13 @@ panel_space_from_view_space(Vec2_i32 p, Vec2_i32 scroll_p){ | |||
| 
 | ||||
| ////////////////////////////////
 | ||||
| 
 | ||||
| // TODO(allen): VIEW_16_LIMIT
 | ||||
| Lister_State global_lister_state_[16] = {}; | ||||
| Lister_State *global_lister_state = global_lister_state_ - 1; | ||||
| 
 | ||||
| static Lister_State* | ||||
| view_get_lister_state(View_Summary *view){ | ||||
|     return(&global_lister_state[view->view_id]); | ||||
| view_get_lister_state(View_ID view){ | ||||
|     return(&global_lister_state[view]); | ||||
| } | ||||
| 
 | ||||
| static i32 | ||||
|  | @ -292,9 +293,9 @@ init_lister_state(Application_Links *app, Lister_State *state, Heap *heap){ | |||
| } | ||||
| 
 | ||||
| UI_QUIT_FUNCTION(lister_quit_function){ | ||||
|     Lister_State *state = view_get_lister_state(&view); | ||||
|     Lister_State *state = view_get_lister_state(view); | ||||
|     state->initialized = false; | ||||
|     view_clear_ui_data(app, view.view_id); | ||||
|     view_clear_ui_data(app, view); | ||||
| } | ||||
| 
 | ||||
| static UI_Item | ||||
|  | @ -348,7 +349,7 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view, | |||
|     b32 is_theme_list = state->lister.data.theme_list; | ||||
|      | ||||
|     i32 x0 = 0; | ||||
|     i32 x1 = rect_width(view->view_region); | ||||
|     i32 x1 = (i32)(rect_width(view->view_region)); | ||||
|     i32 line_height = lister_get_line_height(view); | ||||
|     i32 block_height = lister_get_block_height(line_height, is_theme_list); | ||||
|     i32 text_field_height = lister_get_text_field_height(view); | ||||
|  |  | |||
|  | @ -16,52 +16,12 @@ access_test(u32 lock_flags, u32 access_flags){ | |||
|     return((lock_flags & ~access_flags) == 0); | ||||
| } | ||||
| 
 | ||||
| internal void | ||||
| fill_view_summary(System_Functions *system, View_Summary *view, View *vptr, Live_Views *live_set, Working_Set *working_set){ | ||||
|     block_zero_struct(view); | ||||
|     if (vptr->in_use){ | ||||
|         Assert(vptr->file != 0); | ||||
|          | ||||
|         view->exists = true; | ||||
|         view->view_id = (i32)(vptr - live_set->views) + 1; | ||||
|         view->line_height = (f32)(vptr->line_height); | ||||
|         view->unwrapped_lines = vptr->file->settings.unwrapped_lines; | ||||
|         view->show_whitespace = vptr->show_whitespace; | ||||
|         view->lock_flags = view_get_access_flags(vptr); | ||||
|          | ||||
|         view->buffer_id = vptr->file->id.id; | ||||
|          | ||||
|         File_Edit_Positions edit_pos = view_get_edit_pos(vptr); | ||||
|         view->mark    = file_compute_cursor(system, vptr->file, seek_pos(vptr->mark)); | ||||
|         view->cursor  = file_compute_cursor(system, vptr->file, seek_pos(edit_pos.cursor_pos)); | ||||
|          | ||||
|         view->preferred_x = vptr->preferred_x; | ||||
|          | ||||
|         Rect_i32 region = vptr->panel->rect_inner; | ||||
|         view->view_region = region; | ||||
|         view->render_region = i32R(0, 0, rect_width(region), rect_height(region)); | ||||
|         if (vptr->ui_mode){ | ||||
|             view->scroll_vars = vptr->ui_scroll; | ||||
|         } | ||||
|         else{ | ||||
|             view->scroll_vars = edit_pos.scroll; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| internal void | ||||
| fill_view_summary(System_Functions *system, View_Summary *view, View *vptr, Models *models){ | ||||
|     fill_view_summary(system, view, vptr, &models->live_set, &models->working_set); | ||||
| } | ||||
| 
 | ||||
| internal void | ||||
| view_quit_ui(System_Functions *system, Models *models, View *view){ | ||||
|     Assert(view != 0); | ||||
|     view->ui_mode = false; | ||||
|     if (view->ui_quit != 0){ | ||||
|         View_Summary view_summary = {}; | ||||
|         fill_view_summary(system, &view_summary, view, models); | ||||
|         view->ui_quit(&models->app_links, view_summary); | ||||
|         view->ui_quit(&models->app_links, view_get_id(&models->live_set, view)); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -1807,11 +1767,11 @@ get_view_prev__inner(Layout *layout, View *view){ | |||
| API_EXPORT b32 | ||||
| Get_View_Next(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out) | ||||
| /*
 | ||||
| DOC_PARAM(view, The View_Summary pointed to by view is iterated to the next view or to a null summary if this is the last view.) | ||||
| DOC_PARAM(view, The  pointed to by view is iterated to the next view or to a null summary if this is the last view.) | ||||
| DOC_PARAM(access, The access parameter determines what levels of protection this call can access. The view outputted will be the next view that is accessible.) | ||||
| DOC | ||||
| ( | ||||
| This call steps a View_Summary to the next view in the global view order. | ||||
| This call steps a  to the next view in the global view order. | ||||
| 
 | ||||
| If the view outputted does not exist, the loop is finished. | ||||
| Views should not be closed or opened durring a view loop. | ||||
|  | @ -1855,26 +1815,6 @@ Get_View_Prev(Application_Links *app, View_ID view_id, Access_Flag access, View_ | |||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| // TODO(allen): redocument
 | ||||
| API_EXPORT b32 | ||||
| Get_View_Summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out) | ||||
| /*
 | ||||
| DOC_PARAM(view_id, The view_id specifies the view to try to get.) | ||||
| DOC_PARAM(access, The access parameter determines what levels of protection this call can access.) | ||||
| DOC_RETURN(This call returns a summary that describes the indicated view if it is open and accessible.) | ||||
| DOC_SEE(Access_Flag) | ||||
| */{ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     System_Functions *system = models->system; | ||||
|     View *view = imp_get_view(models, view_id); | ||||
|     b32 result = false; | ||||
|     if (view_api_check_view(view, access)){ | ||||
|         fill_view_summary(system, view_summary_out, view, models); | ||||
|         result = true; | ||||
|     } | ||||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| // TODO(allen): redocument
 | ||||
| API_EXPORT b32 | ||||
| Get_Active_View(Application_Links *app, Access_Flag access, View_ID *view_id_out) | ||||
|  | @ -1913,6 +1853,17 @@ Get_Active_Panel(Application_Links *app, Panel_ID *panel_id_out){ | |||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| API_EXPORT b32 | ||||
| View_Exists(Application_Links *app, View_ID view_id){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     View *view = imp_get_view(models, view_id); | ||||
|     b32 result = false; | ||||
|     if (view_api_check_view(view)){ | ||||
|         result = true; | ||||
|     } | ||||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| API_EXPORT b32 | ||||
| View_Get_Buffer(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|  | @ -1941,13 +1892,48 @@ View_Get_Cursor_Pos(Application_Links *app, View_ID view_id, i32 *pos_out){ | |||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| API_EXPORT b32 | ||||
| View_Get_Mark_Pos(Application_Links *app, View_ID view_id, i32 *pos_out){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     View *view = imp_get_view(models, view_id); | ||||
|     b32 result = false; | ||||
|     if (view_api_check_view(view)){ | ||||
|         *pos_out = view->mark; | ||||
|         result = true; | ||||
|     } | ||||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| API_EXPORT b32 | ||||
| View_Get_Preferred_X(Application_Links *app, View_ID view_id, f32 *preferred_x_out){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     View *view = imp_get_view(models, view_id); | ||||
|     b32 result = false; | ||||
|     if (view_api_check_view(view)){ | ||||
|         *preferred_x_out = view->preferred_x; | ||||
|         result = true; | ||||
|     } | ||||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| API_EXPORT b32 | ||||
| View_Get_Screen_Rect(Application_Links *app, View_ID view_id, Rect_f32 *rect_out){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     b32 result = false; | ||||
|     View *view = imp_get_view(models, view_id); | ||||
|     if (view_api_check_view(view)){ | ||||
|         *rect_out = f32R(view->panel->rect_full); | ||||
|         result = true; | ||||
|     } | ||||
|     return(result); | ||||
| } | ||||
| 
 | ||||
| API_EXPORT b32 | ||||
| View_Get_Panel(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out){ | ||||
|     Models *models = (Models*)app->cmd_context; | ||||
|     Layout *layout = &models->layout; | ||||
|     b32 result = false; | ||||
|     View *view = imp_get_view(models, view_id); | ||||
|     *panel_id_out = 0; | ||||
|     if (view_api_check_view(view)){ | ||||
|         Panel *panel = view->panel; | ||||
|         *panel_id_out = panel_get_id(layout, panel); | ||||
|  | @ -1961,7 +1947,6 @@ Panel_Get_View(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out){ | |||
|     Models *models = (Models*)app->cmd_context; | ||||
|     b32 result = false; | ||||
|     Panel *panel = imp_get_panel(models, panel_id); | ||||
|     *view_id_out = 0; | ||||
|     if (panel_api_check_panel(panel)){ | ||||
|         if (panel->kind == PanelKind_Final){ | ||||
|             View *view = panel->view; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Allen Webster
						Allen Webster