diff --git a/desmume/src/aggdraw.cpp b/desmume/src/aggdraw.cpp index 36c54bfa0..422f33c23 100644 --- a/desmume/src/aggdraw.cpp +++ b/desmume/src/aggdraw.cpp @@ -62,6 +62,45 @@ typedef std::map TAgg_Font_Table; static TAgg_Font_Table font_table; +font_type fonts_list[] = +{ + { agg::gse4x6, "gse4x6" }, + { agg::gse4x8, "gse4x8" }, + { agg::gse5x7, "gse5x7" }, + { agg::gse5x9, "gse5x9" }, + { agg::gse6x9, "gse6x9" }, + { agg::gse6x12, "gse6x12" }, + { agg::gse7x11, "gse7x11" }, + { agg::gse7x11_bold, "gse7x11_bold" }, + { agg::gse7x15, "gse7x15" }, + { agg::gse7x15_bold, "gse7x15_bold" }, + { agg::gse8x16, "gse8x16" }, + { agg::gse8x16_bold, "gse8x16_bold" }, + { agg::mcs11_prop, "mcs11_prop" }, + { agg::mcs11_prop_condensed, "mcs11_prop_condensed" }, + { agg::mcs12_prop, "mcs12_prop" }, + { agg::mcs13_prop, "mcs13_prop" }, + { agg::mcs5x10_mono, "mcs5x10_mono" }, + { agg::mcs5x11_mono, "mcs5x11_mono" }, + { agg::mcs6x10_mono, "mcs6x10_mono" }, + { agg::mcs6x11_mono, "mcs6x11_mono" }, + { agg::mcs7x12_mono_high, "mcs7x12_mono_high" }, + { agg::mcs7x12_mono_low, "mcs7x12_mono_low" }, + { agg::verdana12, "verdana12" }, + { agg::verdana12_bold, "verdana12_bold" }, + { agg::verdana13, "verdana13" }, + { agg::verdana13_bold, "verdana13_bold" }, + { agg::verdana14, "verdana14" }, + { agg::verdana14_bold, "verdana14_bold" }, + { agg::verdana16, "verdana16" }, + { agg::verdana16_bold, "verdana16_bold" }, + { agg::verdana17, "verdana17" }, + { agg::verdana17_bold, "verdana17_bold" }, + { agg::verdana18, "verdana18" }, + { agg::verdana18_bold, "verdana18_bold" }, +}; +int font_Nums = ARRAY_SIZE(fonts_list); + const agg::int8u* AggDrawTarget::lookupFont(const std::string& name) { TAgg_Font_Table::iterator it(font_table.find(name)); @@ -71,51 +110,8 @@ const agg::int8u* AggDrawTarget::lookupFont(const std::string& name) static void Agg_init_fonts() { - struct font_type - { - const agg::int8u* font; - const char* name; - } - fonts[] = - { - { agg::gse4x6, "gse4x6" }, - { agg::gse4x8, "gse4x8" }, - { agg::gse5x7, "gse5x7" }, - { agg::gse5x9, "gse5x9" }, - { agg::gse6x9, "gse6x9" }, - { agg::gse6x12, "gse6x12" }, - { agg::gse7x11, "gse7x11" }, - { agg::gse7x11_bold, "gse7x11_bold" }, - { agg::gse7x15, "gse7x15" }, - { agg::gse7x15_bold, "gse7x15_bold" }, - { agg::gse8x16, "gse8x16" }, - { agg::gse8x16_bold, "gse8x16_bold" }, - { agg::mcs11_prop, "mcs11_prop" }, - { agg::mcs11_prop_condensed, "mcs11_prop_condensed" }, - { agg::mcs12_prop, "mcs12_prop" }, - { agg::mcs13_prop, "mcs13_prop" }, - { agg::mcs5x10_mono, "mcs5x10_mono" }, - { agg::mcs5x11_mono, "mcs5x11_mono" }, - { agg::mcs6x10_mono, "mcs6x10_mono" }, - { agg::mcs6x11_mono, "mcs6x11_mono" }, - { agg::mcs7x12_mono_high, "mcs7x12_mono_high" }, - { agg::mcs7x12_mono_low, "mcs7x12_mono_low" }, - { agg::verdana12, "verdana12" }, - { agg::verdana12_bold, "verdana12_bold" }, - { agg::verdana13, "verdana13" }, - { agg::verdana13_bold, "verdana13_bold" }, - { agg::verdana14, "verdana14" }, - { agg::verdana14_bold, "verdana14_bold" }, - { agg::verdana16, "verdana16" }, - { agg::verdana16_bold, "verdana16_bold" }, - { agg::verdana17, "verdana17" }, - { agg::verdana17_bold, "verdana17_bold" }, - { agg::verdana18, "verdana18" }, - { agg::verdana18_bold, "verdana18_bold" }, - }; - - for(u32 i=0;isetFont(fonts_list[GetPrivateProfileInt("Display","HUD Font", font_Nums-1, IniName)].name); //in case this isnt actually a singlecore system, but the user requested it //then restrict ourselves to one core @@ -5235,6 +5239,22 @@ DOKEYDOWN: if(tpaused) NDS_UnPause(); } return 0; + + case IDD_FONTCONFIG: + { + bool tpaused = false; + if(execute) + { + tpaused = true; + NDS_Pause(); + } + + DialogBoxW(hAppInst, MAKEINTRESOURCEW(IDD_FONTSETTINGS), hwnd, (DLGPROC)HUDFontSettingsDlgProc); + + if(tpaused) NDS_UnPause(); + } + return 0; + case IDC_FRAMESKIPAUTO: { char text[80]; @@ -5537,7 +5557,38 @@ void Change3DCoreWithFallbackAndSave(int newCore, int fallbackCore) int gpu3dSaveValue = ((cur3DCore != GPU3D_NULL) ? cur3DCore : GPU3D_NULL_SAVED); WritePrivateProfileInt("3D", "Renderer", gpu3dSaveValue, IniName); } +LRESULT CALLBACK HUDFontSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) +{ + switch(msg) + { + case WM_INITDIALOG: + { + for(int i=0;isetFont(fonts_list[i].name); + WritePrivateProfileInt("Display","HUD Font", i, IniName); + } + case IDCANCEL: + { + EndDialog(hw, TRUE); + } + return TRUE; + } + return TRUE; + } + } + return FALSE; +} LRESULT CALLBACK GFX3DSettingsDlgProc(HWND hw, UINT msg, WPARAM wp, LPARAM lp) { switch(msg) diff --git a/desmume/src/windows/resource.h b/desmume/src/windows/resource.h index c26d576e0..a5b61c16f 100644 --- a/desmume/src/windows/resource.h +++ b/desmume/src/windows/resource.h @@ -43,6 +43,7 @@ #define IDM_MBG2 122 #define IDD_CHEAT_EXPORT 122 #define IDM_MBG3 123 +#define IDD_FONTSETTINGS 123 #define IDM_SBG0 124 #define IDM_SBG1 125 #define IDM_SBG2 126 @@ -389,6 +390,7 @@ #define IDC_RFOLDER 1039 #define IDC_2012 1039 #define IDC_BBROWSE2 1040 +#define IDC_FONTCOMBO 1040 #define IDC_PATHDESMUME 1041 #define IDC_BRESTART 1042 #define IDC_BVIEW 1043 @@ -853,6 +855,9 @@ #define ID_SAVETYPE_FORCEASCURRENT 40082 #define IDC_SAVETYPE_FORCE 40083 #define ID_DISPLAYMETHOD_VSYNC 40084 +#define ID_TOOLS_SETFONT 40085 +#define ID_CONFIG_SETFONT 40086 +#define IDD_FONTCONFIG 40087 #define IDC_LABEL_UP 50000 #define IDC_LABEL_RIGHT 50001 #define IDC_LABEL_LEFT 50002 @@ -952,9 +957,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 123 -#define _APS_NEXT_COMMAND_VALUE 40085 -#define _APS_NEXT_CONTROL_VALUE 1040 +#define _APS_NEXT_RESOURCE_VALUE 125 +#define _APS_NEXT_COMMAND_VALUE 40088 +#define _APS_NEXT_CONTROL_VALUE 1041 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/desmume/src/windows/resources.rc b/desmume/src/windows/resources.rc index 7c3b7370a..ae3011294 100644 Binary files a/desmume/src/windows/resources.rc and b/desmume/src/windows/resources.rc differ