TerminalFont: support JSON format

This commit is contained in:
李通洲
2023-09-12 11:18:05 +08:00
parent 9447f1ca80
commit 2251086c0f
2 changed files with 38 additions and 1 deletions
+37 -1
View File
@@ -49,7 +49,7 @@ void ffPrintTerminalFont(FFTerminalFontOptions* options)
void ffInitTerminalFontOptions(FFTerminalFontOptions* options)
{
ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_TERMINALFONT_MODULE_NAME, ffParseTerminalFontCommandOptions, ffParseTerminalFontJsonObject, ffPrintTerminalFont, NULL);
ffOptionInitModuleBaseInfo(&options->moduleInfo, FF_TERMINALFONT_MODULE_NAME, ffParseTerminalFontCommandOptions, ffParseTerminalFontJsonObject, ffPrintTerminalFont, ffGenerateTerminalFontJson);
ffOptionInitModuleArg(&options->moduleArgs);
}
@@ -84,3 +84,39 @@ void ffParseTerminalFontJsonObject(FFTerminalFontOptions* options, yyjson_val* m
ffPrintError(FF_TERMINALFONT_MODULE_NAME, 0, &options->moduleArgs, "Unknown JSON key %s", key);
}
}
void ffGenerateTerminalFontJson(FF_MAYBE_UNUSED FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module)
{
FFTerminalFontResult result;
ffFontInit(&result.font);
ffFontInit(&result.fallback);
ffStrbufInit(&result.error);
if(!ffDetectTerminalFont(&result))
{
yyjson_mut_obj_add_strbuf(doc, module, "error", &result.error);
return;
}
yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result");
yyjson_mut_val* font = yyjson_mut_obj_add_obj(doc, obj, "font");
yyjson_mut_obj_add_strbuf(doc, font, "name", &result.font.name);
yyjson_mut_obj_add_strbuf(doc, font, "size", &result.font.size);
yyjson_mut_val* fontStyles = yyjson_mut_obj_add_arr(doc, font, "styles");
FF_LIST_FOR_EACH(FFstrbuf, style, result.font.styles)
{
yyjson_mut_arr_add_strbuf(doc, fontStyles, style);
}
yyjson_mut_obj_add_strbuf(doc, font, "pretty", &result.font.pretty);
yyjson_mut_val* fallback = yyjson_mut_obj_add_obj(doc, obj, "fallback");
yyjson_mut_obj_add_strbuf(doc, fallback, "name", &result.fallback.name);
yyjson_mut_obj_add_strbuf(doc, fallback, "size", &result.fallback.size);
yyjson_mut_val* fallbackStyles = yyjson_mut_obj_add_arr(doc, fallback, "styles");
FF_LIST_FOR_EACH(FFstrbuf, style, result.fallback.styles)
{
yyjson_mut_arr_add_strbuf(doc, fallbackStyles, style);
}
yyjson_mut_obj_add_strbuf(doc, fallback, "pretty", &result.fallback.pretty);
}
+1
View File
@@ -9,3 +9,4 @@ void ffInitTerminalFontOptions(FFTerminalFontOptions* options);
bool ffParseTerminalFontCommandOptions(FFTerminalFontOptions* options, const char* key, const char* value);
void ffDestroyTerminalFontOptions(FFTerminalFontOptions* options);
void ffParseTerminalFontJsonObject(FFTerminalFontOptions* options, yyjson_val* module);
void ffGenerateTerminalFontJson(FFTerminalOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module);