[wip] func gen layout finished

This commit is contained in:
2023-04-02 11:55:03 +02:00
parent 45ef68b74d
commit ec33dab706

View File

@@ -100,13 +100,24 @@ static uint8_t _calcMarkePos(uint32_t value, uint32_t max)
return ((62 * value) + (max / 2)) / max;
}
static uint8_t _sizeOfCharArray(char *array)
{
uint8_t size = 0;
while (*array++)
{
size++;
}
return size;
}
static void _drawMeterHelper(GFX_display_t *disp, char *min, char *max, uint8_t pos)
{
uint8_t max_size = _sizeOfCharArray(max);
DISP_drawPixel(disp, 64, 40, GFX_WHITE);
DISP_drawPixel(disp, 125, 40, GFX_WHITE);
DISP_drawHorizontalLine(disp, 64, 41, 62, GFX_WHITE);
DISP_writeString(disp, &font5x7Info, (uint8_t *)min, 62, 43, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, (uint8_t *)max, 117, 43, BM_NORMAL);
DISP_writeString(disp, &font5x7Info, (uint8_t *)max, 127 - (6 * max_size), 43, BM_NORMAL);
// marker 0% - 62, 100% - 123
DISP_drawBitmap(disp, &marker, 62 + pos, 35, BM_NORMAL);
}
@@ -127,6 +138,22 @@ static void _drawAmplValueHelper(GFX_display_t *disp, uint32_t ampl, uint8_t foc
DISP_drawBitmap(disp, &marker, marker_ampl_pos_x[(AMPL_MAX_DIGIT - 1) - focus_digit], 15, BM_NORMAL);
}
static void _drawOffsValueHelper(GFX_display_t *disp, uint32_t offs, uint8_t focus_digit)
{
DISP_clearRegion(disp, 64, 13, 66, 40);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"O:", 64, 20, BM_NORMAL);
_drawAmplValue(disp, offs, 20);
DISP_drawBitmap(disp, &marker, marker_ampl_pos_x[(AMPL_MAX_DIGIT - 1) - focus_digit], 15, BM_NORMAL);
}
static void _drawPhaseValueHelper(GFX_display_t *disp, uint32_t phase, uint8_t focus_digit)
{
DISP_clearRegion(disp, 64, 13, 66, 40);
DISP_writeString(disp, &font5x7Info, (uint8_t *)"P:", 64, 20, BM_NORMAL);
_drawAmplValue(disp, phase, 20);
DISP_drawBitmap(disp, &marker, marker_ampl_pos_x[(AMPL_MAX_DIGIT - 1) - focus_digit], 15, BM_NORMAL);
}
static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data)
{
GEN_fg_t *fun_gen = (GEN_fg_t *)app_data->generator;
@@ -141,8 +168,12 @@ static void _drawFuncGenValues(GFX_display_t *disp, APP_data_t *app_data)
_drawMeterHelper(disp, "0V", "5V", _calcMarkePos(100, 500));
break;
case LAY_OFFS:
_drawOffsValueHelper(disp, fun_gen->offset, app_data->offs_focus_digit);
_drawMeterHelper(disp, "-5V", "+5V", _calcMarkePos(100, 500));
break;
case LAY_PHAS:
_drawPhaseValueHelper(disp, fun_gen->phase, app_data->phas_focus_digit);
_drawMeterHelper(disp, "0", "360", _calcMarkePos(100, 500));
break;
case LAY_MAIN:
DISP_clearRegion(disp, 62, 13, 66, 40);