204 lines
4.5 KiB
C
204 lines
4.5 KiB
C
|
/*
|
||
|
* Mr. 4th Dimention - Allen Webster
|
||
|
*
|
||
|
* 06.05.2016 (dd.mm.yyyy)
|
||
|
*
|
||
|
* Global app level settings definition
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
// TOP
|
||
|
|
||
|
#if !defined(FRED_APP_MODELS_H)
|
||
|
#define FRED_APP_MODELS_H
|
||
|
|
||
|
struct App_Settings{
|
||
|
char *init_files[8];
|
||
|
i32 init_files_count;
|
||
|
i32 init_files_max;
|
||
|
|
||
|
char **custom_flags;
|
||
|
i32 custom_flags_count;
|
||
|
|
||
|
b32 lctrl_lalt_is_altgr;
|
||
|
|
||
|
i32 font_size;
|
||
|
b8 use_hinting;
|
||
|
};
|
||
|
|
||
|
enum App_State{
|
||
|
APP_STATE_EDIT,
|
||
|
APP_STATE_RESIZING,
|
||
|
// never below this
|
||
|
APP_STATE_COUNT
|
||
|
};
|
||
|
|
||
|
struct Model_View_Command_Function{
|
||
|
Model_View_Command_Function *next;
|
||
|
Custom_Command_Function *custom_func;
|
||
|
View_ID view_id;
|
||
|
};
|
||
|
|
||
|
struct Model_Input_Event_Node{
|
||
|
Model_Input_Event_Node *next;
|
||
|
Input_Event event;
|
||
|
};
|
||
|
|
||
|
struct Model_Wind_Down_Co{
|
||
|
Model_Wind_Down_Co *next;
|
||
|
Coroutine *co;
|
||
|
};
|
||
|
|
||
|
struct Models{
|
||
|
Arena arena_;
|
||
|
Arena *arena;
|
||
|
Heap heap;
|
||
|
|
||
|
App_Settings settings;
|
||
|
App_State state;
|
||
|
|
||
|
Face_ID global_face_id;
|
||
|
|
||
|
Coroutine_Group coroutines;
|
||
|
Model_Wind_Down_Co *wind_down_stack;
|
||
|
Model_Wind_Down_Co *free_wind_downs;
|
||
|
|
||
|
Child_Process_Container child_processes;
|
||
|
Custom_API config_api;
|
||
|
|
||
|
Tick_Function *tick;
|
||
|
Render_Caller_Function *render_caller;
|
||
|
Whole_Screen_Render_Caller_Function *whole_screen_render_caller;
|
||
|
Delta_Rule_Function *delta_rule;
|
||
|
u64 delta_rule_memory_size;
|
||
|
|
||
|
Hook_Function *buffer_viewer_update;
|
||
|
Custom_Command_Function *view_event_handler;
|
||
|
Buffer_Name_Resolver_Function *buffer_name_resolver;
|
||
|
Buffer_Hook_Function *begin_buffer;
|
||
|
Buffer_Hook_Function *end_buffer;
|
||
|
Buffer_Hook_Function *new_file;
|
||
|
Buffer_Hook_Function *save_file;
|
||
|
Buffer_Edit_Range_Function *buffer_edit_range;
|
||
|
Buffer_Region_Function *buffer_region;
|
||
|
Layout_Function *layout_func;
|
||
|
View_Change_Buffer_Function *view_change_buffer;
|
||
|
|
||
|
Color_Table color_table_;
|
||
|
|
||
|
Model_View_Command_Function *free_view_cmd_funcs;
|
||
|
Model_View_Command_Function *first_view_cmd_func;
|
||
|
Model_View_Command_Function *last_view_cmd_func;
|
||
|
|
||
|
Arena virtual_event_arena;
|
||
|
Model_Input_Event_Node *free_virtual_event;
|
||
|
Model_Input_Event_Node *first_virtual_event;
|
||
|
Model_Input_Event_Node *last_virtual_event;
|
||
|
|
||
|
Layout layout;
|
||
|
Working_Set working_set;
|
||
|
Live_Views view_set;
|
||
|
Global_History global_history;
|
||
|
Text_Layout_Container text_layouts;
|
||
|
Font_Set font_set;
|
||
|
|
||
|
Managed_ID_Set managed_id_set;
|
||
|
Dynamic_Workspace dynamic_workspace;
|
||
|
Lifetime_Allocator lifetime_allocator;
|
||
|
|
||
|
Editing_File *message_buffer;
|
||
|
Editing_File *scratch_buffer;
|
||
|
Editing_File *log_buffer;
|
||
|
Editing_File *keyboard_buffer;
|
||
|
|
||
|
Hot_Directory hot_directory;
|
||
|
|
||
|
b8 keep_playing;
|
||
|
b8 hard_exit;
|
||
|
|
||
|
b8 has_new_title;
|
||
|
i32 title_capacity;
|
||
|
char *title_space;
|
||
|
|
||
|
Panel *resizing_intermediate_panel;
|
||
|
|
||
|
Plat_Handle period_wakeup_timer;
|
||
|
i32 frame_counter;
|
||
|
u32 next_animate_delay;
|
||
|
b32 animate_next_frame;
|
||
|
|
||
|
Profile_Global_List profile_list;
|
||
|
|
||
|
// Last frame state
|
||
|
Vec2_i32 prev_p;
|
||
|
Panel *prev_mouse_panel;
|
||
|
b32 animated_last_frame;
|
||
|
u64 last_render_usecond_stamp;
|
||
|
|
||
|
// Event Context
|
||
|
Application_Step_Input *input;
|
||
|
i64 current_input_sequence_number;
|
||
|
User_Input current_input;
|
||
|
b8 current_input_unhandled;
|
||
|
|
||
|
b8 in_render_mode;
|
||
|
Render_Target *target;
|
||
|
};
|
||
|
|
||
|
////////////////////////////////
|
||
|
|
||
|
typedef i32 Dynamic_Workspace_Type;
|
||
|
enum{
|
||
|
DynamicWorkspace_Global = 0,
|
||
|
DynamicWorkspace_Unassociated = 1,
|
||
|
DynamicWorkspace_Buffer = 2,
|
||
|
DynamicWorkspace_View = 3,
|
||
|
DynamicWorkspace_Intersected = 4,
|
||
|
};
|
||
|
|
||
|
enum Input_Types{
|
||
|
Input_AnyKey,
|
||
|
Input_Esc,
|
||
|
Input_MouseMove,
|
||
|
Input_MouseLeftButton,
|
||
|
Input_MouseRightButton,
|
||
|
Input_MouseWheel,
|
||
|
Input_Count
|
||
|
};
|
||
|
|
||
|
struct Consumption_Record{
|
||
|
b32 consumed;
|
||
|
char consumer[32];
|
||
|
};
|
||
|
|
||
|
struct File_Init{
|
||
|
String_Const_u8 name;
|
||
|
Editing_File **ptr;
|
||
|
b32 read_only;
|
||
|
};
|
||
|
|
||
|
enum Command_Line_Action{
|
||
|
CLAct_Nothing,
|
||
|
CLAct_Ignore,
|
||
|
CLAct_CustomDLL,
|
||
|
CLAct_WindowSize,
|
||
|
CLAct_WindowMaximize,
|
||
|
CLAct_WindowPosition,
|
||
|
CLAct_WindowFullscreen,
|
||
|
CLAct_FontSize,
|
||
|
CLAct_FontUseHinting,
|
||
|
CLAct_UserDirectory,
|
||
|
//
|
||
|
CLAct_COUNT,
|
||
|
};
|
||
|
|
||
|
enum Command_Line_Mode{
|
||
|
CLMode_App,
|
||
|
CLMode_Custom
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|
||
|
// BOTTOM
|
||
|
|