added font option

master
Allen Webster 2017-01-30 13:41:08 -05:00
parent 7dc483c8f6
commit 5b27fa3806
6 changed files with 50 additions and 48 deletions

75
4ed.cpp
View File

@ -936,6 +936,7 @@ enum Command_Line_Action{
CLAct_WindowStreamMode, CLAct_WindowStreamMode,
CLAct_FontSize, CLAct_FontSize,
CLAct_FontStartHinting, CLAct_FontStartHinting,
CLAct_FontCustom,
CLAct_Count CLAct_Count
}; };
@ -945,8 +946,7 @@ enum Command_Line_Mode{
}; };
void void
init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings, init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings, Command_Line_Parameters clparams){
Command_Line_Parameters clparams){
char *arg = 0; char *arg = 0;
Command_Line_Mode mode = CLMode_App; Command_Line_Mode mode = CLMode_App;
Command_Line_Action action = CLAct_Nothing; Command_Line_Action action = CLAct_Nothing;
@ -984,6 +984,8 @@ init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings,
case 'u': action = CLAct_UserFile; strict = 0; break; case 'u': action = CLAct_UserFile; strict = 0; break;
case 'U': action = CLAct_UserFile; strict = 1; break; case 'U': action = CLAct_UserFile; strict = 1; break;
case 'c': action = CLAct_FontCustom; break;
case 'd': action = CLAct_CustomDLL; strict = 0; break; case 'd': action = CLAct_CustomDLL; strict = 0; break;
case 'D': action = CLAct_CustomDLL; strict = 1; break; case 'D': action = CLAct_CustomDLL; strict = 1; break;
@ -1087,6 +1089,16 @@ init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings,
action = CLAct_Nothing; action = CLAct_Nothing;
}break; }break;
case CLAct_FontCustom:
{
if ((i + 3) <= clparams.argc){
settings->custom_font_file = clparams.argv[i++];
settings->custom_font_name = clparams.argv[i++];
settings->custom_font_size = str_to_int_c(clparams.argv[i]);
}
action = CLAct_Nothing;
}break;
case CLAct_FontStartHinting: case CLAct_FontStartHinting:
{ {
plat_settings->use_hinting = 1; plat_settings->use_hinting = 1;
@ -1126,18 +1138,14 @@ app_setup_memory(System_Functions *system, Application_Memory *memory){
return(vars); return(vars);
} }
inline App_Settings static App_Settings null_app_settings = {0};
app_settings_zero(){
App_Settings settings={0};
return(settings);
}
App_Read_Command_Line_Sig(app_read_command_line){ App_Read_Command_Line_Sig(app_read_command_line){
i32 out_size = 0; i32 out_size = 0;
App_Vars *vars = app_setup_memory(system, memory); App_Vars *vars = app_setup_memory(system, memory);
App_Settings *settings = &vars->models.settings; App_Settings *settings = &vars->models.settings;
*settings = app_settings_zero(); *settings = null_app_settings;
settings->font_size = 16; settings->font_size = 16;
if (clparams.argc > 1){ if (clparams.argc > 1){
@ -1422,8 +1430,6 @@ App_Init_Sig(app_init){
{ {
models->font_set = &target->font_set; models->font_set = &target->font_set;
font_set_init(models->font_set, partition, 16, 5);
struct Font_Setup{ struct Font_Setup{
char *c_file_name; char *c_file_name;
i32 file_name_len; i32 file_name_len;
@ -1434,38 +1440,39 @@ App_Init_Sig(app_init){
i32 font_size = models->settings.font_size; i32 font_size = models->settings.font_size;
char *custom_font_file = models->settings.custom_font_file;
char *custom_font_name = models->settings.custom_font_name;
i32 custom_font_size = models->settings.custom_font_size;
b32 use_custom_font = true;
if (!custom_font_file){
use_custom_font = false;
custom_font_file = "";
custom_font_name = "";
}
if (font_size < 8) font_size = 8; if (font_size < 8) font_size = 8;
Font_Setup font_setup[] = { Font_Setup font_setup[] = {
{literal("LiberationSans-Regular.ttf"), {literal("LiberationSans-Regular.ttf"), literal("Liberation Sans"), font_size},
literal("Liberation Sans"), {literal("liberation-mono.ttf"), literal("Liberation Mono"), font_size},
font_size}, {literal("Hack-Regular.ttf"), literal("Hack"), font_size},
{literal("CutiveMono-Regular.ttf"), literal("Cutive Mono"), font_size},
{literal("liberation-mono.ttf"), {literal("Inconsolata-Regular.ttf"), literal("Inconsolata"), font_size},
literal("Liberation Mono"), {custom_font_file, str_size(custom_font_file),
font_size}, custom_font_name, str_size(custom_font_name),
custom_font_size},
{literal("Hack-Regular.ttf"),
literal("Hack"),
font_size},
{literal("CutiveMono-Regular.ttf"),
literal("Cutive Mono"),
font_size},
{literal("Inconsolata-Regular.ttf"),
literal("Inconsolata"),
font_size},
}; };
i32 font_count = ArrayCount(font_setup); i32 font_count = ArrayCount(font_setup);
if (!use_custom_font){
--font_count;
}
font_set_init(models->font_set, partition, 16, 6);
for (i32 i = 0; i < font_count; ++i){ for (i32 i = 0; i < font_count; ++i){
String file_name = make_string(font_setup[i].c_file_name, String file_name = make_string(font_setup[i].c_file_name, font_setup[i].file_name_len);
font_setup[i].file_name_len); String name = make_string(font_setup[i].c_name, font_setup[i].name_len);
String name = make_string(font_setup[i].c_name,
font_setup[i].name_len);
i32 pt_size = font_setup[i].pt_size; i32 pt_size = font_setup[i].pt_size;
font_set_add(partition, models->font_set, file_name, name, pt_size); font_set_add(partition, models->font_set, file_name, name, pt_size);
} }
} }

2
4ed.h
View File

@ -63,7 +63,7 @@ typedef struct Plat_Settings{
b8 use_hinting; b8 use_hinting;
} Plat_Settings; } Plat_Settings;
#define App_Read_Command_Line_Sig(name) \ #define App_Read_Command_Line_Sig(name) \
i32 name(System_Functions *system, \ i32 name(System_Functions *system, \
Application_Memory *memory, \ Application_Memory *memory, \
String current_directory, \ String current_directory, \

View File

@ -1072,7 +1072,7 @@ DOC_SEE(begin_buffer_creation)
} }
if (!do_new_file){ if (!do_new_file){
Assert(!handle_equal(handle, handle_zero())); Assert(!handle_equal(handle, null_plat_handle));
i32 size = system->load_size(handle); i32 size = system->load_size(handle);
b32 in_general_mem = 0; b32 in_general_mem = 0;

View File

@ -16,12 +16,16 @@ struct App_Settings{
char *init_files[8]; char *init_files[8];
i32 init_files_count; i32 init_files_count;
i32 init_files_max; i32 init_files_max;
i32 initial_line; i32 initial_line;
b32 lctrl_lalt_is_altgr; b32 lctrl_lalt_is_altgr;
i32 font_size; i32 font_size;
char *custom_font_file;
char *custom_font_name;
i32 custom_font_size;
i32 custom_arg_start; i32 custom_arg_start;
i32 custom_arg_end; i32 custom_arg_end;
}; };

View File

@ -13,11 +13,7 @@ struct Plat_Handle{
u32 d[4]; u32 d[4];
}; };
inline Plat_Handle static Plat_Handle null_plat_handle = {0};
handle_zero(void){
Plat_Handle result = {0};
return(result);
}
inline int32_t inline int32_t
handle_equal(Plat_Handle a, Plat_Handle b){ handle_equal(Plat_Handle a, Plat_Handle b){

View File

@ -2231,12 +2231,7 @@ WinMain(HINSTANCE hInstance,
char **files = 0; char **files = 0;
i32 *file_count = 0; i32 *file_count = 0;
win32vars.app.read_command_line(&win32vars.system, win32vars.app.read_command_line(&win32vars.system, &memory_vars, current_directory, &win32vars.settings, &files, &file_count, clparams);
&memory_vars,
current_directory,
&win32vars.settings,
&files, &file_count,
clparams);
sysshared_filter_real_files(files, file_count); sysshared_filter_real_files(files, file_count);