处理printf不支持%f的问题

This commit is contained in:
anod 2023-07-04 21:56:41 +08:00
parent e7d39b5e6c
commit 4392535ee6

View File

@ -63,10 +63,10 @@ atp_text_t CONFIG_OUTPUT = "[general]\n" \
"useGbaDb=%s\n\n" \ "useGbaDb=%s\n\n" \
"[video]\n" \ "[video]\n" \
"scaler=%d\n" \ "scaler=%d\n" \
"gbaGamma=%1.2f\n" \ "gbaGamma=%s\n" \
"lcdGamma=%1.2f\n" \ "lcdGamma=%s\n" \
"contrast=%1.2f\n" \ "contrast=%s\n" \
"brightness=%1.2f\n\n" \ "brightness=%s\n\n" \
"[advanced]\n" \ "[advanced]\n" \
"saveOverride=false\n" \ "saveOverride=false\n" \
"defaultSave=%d\n\n" \ "defaultSave=%d\n\n" \
@ -120,6 +120,17 @@ static atp_error_t config_item( atp_callerdata_t gblcfg, atp_counter_t index, at
return ATP_SUCCESS; return ATP_SUCCESS;
} }
static char* float2str( float f, char out[16] )
{
int s = (int)f;
if( f < 0 ) f = -f;
f = f - floor(f);
f *= 100;
int n = (int)f;
ee_snprintf(out, 16, "%d.%02d", s, n);
return out;
}
static atp_pageopt_t config_adjust( atp_callerdata_t gblcfg, atp_counter_t index, atp_boolean_t x, atp_boolean_t, atp_boolean_t l, atp_boolean_t r, atp_boolean_t start, atp_boolean_t ) static atp_pageopt_t config_adjust( atp_callerdata_t gblcfg, atp_counter_t index, atp_boolean_t x, atp_boolean_t, atp_boolean_t l, atp_boolean_t r, atp_boolean_t start, atp_boolean_t )
{ {
OafConfig *g_oafConfig = (OafConfig*)gblcfg; OafConfig *g_oafConfig = (OafConfig*)gblcfg;
@ -158,16 +169,20 @@ static atp_pageopt_t config_adjust( atp_callerdata_t gblcfg, atp_counter_t index
char *data = malloc( len ); char *data = malloc( len );
if( data == NULL ) return ATP_PAGE_DOSELECT; // only ignore this save if( data == NULL ) return ATP_PAGE_DOSELECT; // only ignore this save
char gbaGamma[16];
char lcdGamma[16];
char contract[16];
char brightness[16];
len = ee_snprintf( len = ee_snprintf(
data, len, CONFIG_OUTPUT, data, len, CONFIG_OUTPUT,
g_oafConfig->backlight, g_oafConfig->backlight,
g_oafConfig->directBoot ? "true":"false", g_oafConfig->directBoot ? "true":"false",
g_oafConfig->useGbaDb ? "true" : "false", g_oafConfig->useGbaDb ? "true" : "false",
g_oafConfig->scaler, g_oafConfig->scaler,
g_oafConfig->gbaGamma, float2str(g_oafConfig->gbaGamma, gbaGamma),
g_oafConfig->lcdGamma, float2str(g_oafConfig->lcdGamma, lcdGamma),
g_oafConfig->contrast, float2str(g_oafConfig->contrast, contract),
g_oafConfig->brightness, float2str(g_oafConfig->brightness, brightness),
g_oafConfig->defaultSave, g_oafConfig->defaultSave,
g_oafConfig->cheatMode g_oafConfig->cheatMode
); );