2021-02-18 22:25:36 +01:00
#include "fastfetch.h"
2021-04-15 18:59:26 +02:00
#define FF_FONT_MODULE_NAME "Font"
2021-05-23 19:40:34 +02:00
#define FF_FONT_NUM_FORMAT_ARGS 21
2021-04-15 18:59:26 +02:00
2021-02-27 18:30:05 +01:00
void ffPrintFont ( FFinstance * instance )
2021-02-18 22:25:36 +01:00
{
2021-06-27 21:53:50 +02:00
const FFWMDEResult * wmde = ffDetectWMDE ( instance );
if ( ffStrbufIgnCaseCompS ( & wmde -> wmProtocolName , "TTY" ) == 0 )
{
ffPrintError ( instance , FF_FONT_MODULE_NAME , 0 , & instance -> config . fontKey , & instance -> config . fontFormat , FF_FONT_NUM_FORMAT_ARGS , "Font isn't supported in TTY" );
return ;
}
2021-05-23 19:40:34 +02:00
const FFstrbuf * plasmaRaw = & ffDetectPlasma ( instance ) -> font ;
const FFstrbuf * gtk2Raw = & ffDetectGTK2 ( instance ) -> font ;
const FFstrbuf * gtk3Raw = & ffDetectGTK3 ( instance ) -> font ;
const FFstrbuf * gtk4Raw = & ffDetectGTK4 ( instance ) -> font ;
2021-02-19 16:23:41 +01:00
2021-05-23 19:40:34 +02:00
if ( plasmaRaw -> length == 0 && gtk2Raw -> length == 0 && gtk3Raw -> length == 0 && gtk4Raw -> length == 0 )
2021-04-05 19:25:34 +02:00
{
2021-04-15 18:59:26 +02:00
ffPrintError ( instance , FF_FONT_MODULE_NAME , 0 , & instance -> config . fontKey , & instance -> config . fontFormat , FF_FONT_NUM_FORMAT_ARGS , "No fonts found" );
2021-04-05 19:25:34 +02:00
return ;
}
2021-02-18 22:25:36 +01:00
2021-05-23 19:40:34 +02:00
FFfont plasma ;
ffFontInitQt ( & plasma , plasmaRaw -> chars );
2021-04-05 19:25:34 +02:00
2021-05-23 19:40:34 +02:00
FFfont gtk2 ;
ffFontInitPango ( & gtk2 , gtk2Raw -> chars );
2021-04-05 19:25:34 +02:00
2021-05-23 19:40:34 +02:00
FFfont gtk3 ;
ffFontInitPango ( & gtk3 , gtk3Raw -> chars );
2021-04-05 19:25:34 +02:00
2021-05-23 19:40:34 +02:00
FFfont gtk4 ;
ffFontInitPango ( & gtk4 , gtk4Raw -> chars );
2021-03-27 18:14:19 +01:00
2021-05-23 19:40:34 +02:00
FFstrbuf gtk ;
ffStrbufInit ( & gtk );
ffGetGtkPretty ( & gtk , & gtk2 . pretty , & gtk3 . pretty , & gtk4 . pretty );
2021-03-19 20:57:07 +01:00
2021-03-23 19:48:52 +01:00
if ( instance -> config . fontFormat . length == 0 )
2021-02-18 22:25:36 +01:00
{
2021-04-15 18:59:26 +02:00
ffPrintLogoAndKey ( instance , FF_FONT_MODULE_NAME , 0 , & instance -> config . fontKey );
2021-05-23 19:40:34 +02:00
if ( plasma . pretty . length > 0 )
2021-04-05 19:25:34 +02:00
{
2021-05-23 19:40:34 +02:00
ffStrbufWriteTo ( & plasma . pretty , stdout );
2021-04-05 19:25:34 +02:00
fputs ( " [Plasma]" , stdout );
2021-05-23 19:40:34 +02:00
if ( gtk . length > 0 )
2021-04-05 19:25:34 +02:00
fputs ( ", " , stdout );
}
2021-05-23 19:40:34 +02:00
ffStrbufPutTo ( & gtk , stdout );
2021-02-18 22:25:36 +01:00
}
else
{
2021-04-15 18:59:26 +02:00
ffPrintFormatString ( instance , FF_FONT_MODULE_NAME , 0 , & instance -> config . fontKey , & instance -> config . fontFormat , NULL , FF_FONT_NUM_FORMAT_ARGS , ( FFformatarg []){
2021-05-23 19:40:34 +02:00
{ FF_FORMAT_ARG_TYPE_STRBUF , plasmaRaw },
{ FF_FORMAT_ARG_TYPE_STRBUF , & plasma . name },
{ FF_FORMAT_ARG_TYPE_STRBUF , & plasma . size },
{ FF_FORMAT_ARG_TYPE_LIST , & plasma . styles },
{ FF_FORMAT_ARG_TYPE_STRBUF , & plasma . pretty },
{ FF_FORMAT_ARG_TYPE_STRBUF , gtk2Raw },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk2 . name },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk2 . size },
{ FF_FORMAT_ARG_TYPE_LIST , & gtk2 . styles },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk2 . pretty },
{ FF_FORMAT_ARG_TYPE_STRBUF , gtk3Raw },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk3 . name },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk3 . size },
{ FF_FORMAT_ARG_TYPE_LIST , & gtk3 . styles },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk3 . pretty },
{ FF_FORMAT_ARG_TYPE_STRBUF , gtk4Raw },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk4 . name },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk4 . size },
{ FF_FORMAT_ARG_TYPE_LIST , & gtk4 . styles },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk4 . pretty },
{ FF_FORMAT_ARG_TYPE_STRBUF , & gtk }
2021-04-15 18:59:26 +02:00
});
2021-02-18 22:25:36 +01:00
}
2021-05-23 19:40:34 +02:00
ffFontDestroy ( & plasma );
ffFontDestroy ( & gtk2 );
ffFontDestroy ( & gtk3 );
ffFontDestroy ( & gtk4 );
ffStrbufDestroy ( & gtk );
2021-03-27 18:14:19 +01:00
}