#include "fastfetch.h" #define FF_FONT_MODULE_NAME "Font" #define FF_FONT_NUM_FORMAT_ARGS 17 void ffPrintFont(FFinstance* instance) { const FFstrbuf* plasma = &ffCalculatePlasma(instance)->font; const FFstrbuf* gtk2 = &ffCalculateGTK2(instance)->font; const FFstrbuf* gtk3 = &ffCalculateGTK3(instance)->font; const FFstrbuf* gtk4 = &ffCalculateGTK4(instance)->font; if(plasma->length == 0 && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0) { ffPrintError(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, FF_FONT_NUM_FORMAT_ARGS, "No fonts found"); return; } FF_STRBUF_CREATE(plasmaName); double plasmaSize; ffGetFont(plasma->chars, &plasmaName, &plasmaSize); FF_STRBUF_CREATE(plasmaPretty); ffGetFontPretty(&plasmaPretty, &plasmaName, plasmaSize); FF_STRBUF_CREATE(gtk2Name); double gtk2Size; ffGetFont(gtk2->chars, >k2Name, >k2Size); FF_STRBUF_CREATE(gtk2Pretty); ffGetFontPretty(>k2Pretty, >k2Name, gtk2Size); FF_STRBUF_CREATE(gtk3Name); double gtk3Size; ffGetFont(gtk3->chars, >k3Name, >k3Size); FF_STRBUF_CREATE(gtk3Pretty); ffGetFontPretty(>k3Pretty, >k3Name, gtk3Size); FF_STRBUF_CREATE(gtk4Name); double gtk4Size; ffGetFont(gtk4->chars, >k4Name, >k4Size); FF_STRBUF_CREATE(gtk4Pretty); ffGetFontPretty(>k4Pretty, >k4Name, gtk4Size); FF_STRBUF_CREATE(gtkPretty); ffGetGtkPretty(>kPretty, >k2Pretty, >k3Pretty, >k4Pretty); if(instance->config.fontFormat.length == 0) { ffPrintLogoAndKey(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey); if(plasma->length > 0) { ffStrbufWriteTo(&plasmaPretty, stdout); fputs(" [Plasma]", stdout); if(gtkPretty.length > 0) fputs(", ", stdout); } ffStrbufPutTo(>kPretty, stdout); } else { ffPrintFormatString(instance, FF_FONT_MODULE_NAME, 0, &instance->config.fontKey, &instance->config.fontFormat, NULL, FF_FONT_NUM_FORMAT_ARGS, (FFformatarg[]){ {FF_FORMAT_ARG_TYPE_STRBUF, plasma}, {FF_FORMAT_ARG_TYPE_STRBUF, &plasmaName}, {FF_FORMAT_ARG_TYPE_DOUBLE, &plasmaSize}, {FF_FORMAT_ARG_TYPE_STRBUF, &plasmaPretty}, {FF_FORMAT_ARG_TYPE_STRBUF, gtk2}, {FF_FORMAT_ARG_TYPE_STRBUF, >k2Name}, {FF_FORMAT_ARG_TYPE_DOUBLE, >k2Size}, {FF_FORMAT_ARG_TYPE_STRBUF, >k2Pretty}, {FF_FORMAT_ARG_TYPE_STRBUF, gtk3}, {FF_FORMAT_ARG_TYPE_STRBUF, >k3Name}, {FF_FORMAT_ARG_TYPE_DOUBLE, >k3Size}, {FF_FORMAT_ARG_TYPE_STRBUF, >k3Pretty}, {FF_FORMAT_ARG_TYPE_STRBUF, gtk4}, {FF_FORMAT_ARG_TYPE_STRBUF, >k4Name}, {FF_FORMAT_ARG_TYPE_DOUBLE, >k4Size}, {FF_FORMAT_ARG_TYPE_STRBUF, >k4Pretty}, {FF_FORMAT_ARG_TYPE_STRBUF, >kPretty} }); } ffStrbufDestroy(&plasmaName); ffStrbufDestroy(&plasmaPretty); ffStrbufDestroy(>k2Name); ffStrbufDestroy(>k2Pretty); ffStrbufDestroy(>k3Name); ffStrbufDestroy(>k3Pretty); ffStrbufDestroy(>k4Name); ffStrbufDestroy(>k4Pretty); ffStrbufDestroy(>kPretty); }