mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
Font bounds check, trying to get Russian working
This commit is contained in:
@@ -54,6 +54,7 @@ private:
|
||||
bool inLeftHandedMode; // Whether the screen is in left or not (used for offsets in GRAM)
|
||||
bool displayOnOffState; // If the display is on or not
|
||||
uint8_t fontWidth, fontHeight;
|
||||
uint16_t fontTableLength;
|
||||
int16_t cursor_x, cursor_y;
|
||||
uint8_t displayOffset;
|
||||
};
|
||||
|
||||
@@ -124,6 +124,8 @@ void OLED::drawChar(char c, char PrecursorCommand) {
|
||||
return;
|
||||
}
|
||||
charPointer = ((uint8_t*) currentFont) + ((fontWidth * (fontHeight / 8)) * index);
|
||||
if ((charPointer - currentFont) > fontTableLength)
|
||||
return;
|
||||
if (cursor_x >= 0 && cursor_x < 96)
|
||||
drawArea(cursor_x, cursor_y, fontWidth, fontHeight, charPointer);
|
||||
cursor_x += fontWidth;
|
||||
@@ -180,14 +182,17 @@ void OLED::setFont(uint8_t fontNumber) {
|
||||
currentFont = ASCII6x8;
|
||||
fontHeight = 8;
|
||||
fontWidth = 6;
|
||||
fontTableLength = sizeof(ASCII6x8);
|
||||
} else if (fontNumber == 2) {
|
||||
currentFont = ExtraFontChars;
|
||||
fontHeight = 16;
|
||||
fontWidth = 12;
|
||||
fontTableLength = sizeof(ExtraFontChars);
|
||||
} else {
|
||||
currentFont = FONT_12;
|
||||
fontHeight = 16;
|
||||
fontWidth = 12;
|
||||
fontTableLength = sizeof(FONT_12);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,21 +19,21 @@
|
||||
#endif
|
||||
#ifdef LANG_EN
|
||||
const char* SettingsLongNames[13] = {
|
||||
/*These are all the help text for all the settings.*/
|
||||
/*No requirements on spacing or length*/
|
||||
"Power source. Sets cutoff voltage. <DC 10V> <S 3.3V per cell>", //
|
||||
"Sleep Temperature <C>", //
|
||||
"Sleep Timeout <Minutes>", //
|
||||
"Shutdown Timeout <Minutes>", //
|
||||
"Motion Sensitivity <0.Off 1.least sensitive 9.most sensitive>", //
|
||||
"Display detailed information in a smaller font.", //
|
||||
"Display Orientation <A. Automatic L. Left Handed R. Right Handed>", //
|
||||
"Enable front key enters boost mode 450C mode when soldering", //
|
||||
"Temperature when in \"boost\" mode", //
|
||||
"Automatically starts the iron into soldering on power up. T=Soldering, S= Sleep mode,F=Off", //
|
||||
"Blink the temperature on the cooling screen while the tip is still hot.", //
|
||||
"Calibrate tip offset.", //s
|
||||
"Reset all settings", };
|
||||
/*These are all the help text for all the settings.*/
|
||||
/*No requirements on spacing or length*/
|
||||
"Power source. Sets cutoff voltage. <DC 10V> <S 3.3V per cell>", //
|
||||
"Sleep Temperature <C>",//
|
||||
"Sleep Timeout <Minutes>",//
|
||||
"Shutdown Timeout <Minutes>",//
|
||||
"Motion Sensitivity <0.Off 1.least sensitive 9.most sensitive>",//
|
||||
"Display detailed information in a smaller font.",//
|
||||
"Display Orientation <A. Automatic L. Left Handed R. Right Handed>",//
|
||||
"Enable front key enters boost mode 450C mode when soldering",//
|
||||
"Temperature when in \"boost\" mode",//
|
||||
"Automatically starts the iron into soldering on power up. T=Soldering, S= Sleep mode,F=Off",//
|
||||
"Blink the temperature on the cooling screen while the tip is still hot.",//
|
||||
"Calibrate tip offset.",//s
|
||||
"Reset all settings",};
|
||||
|
||||
const char* SettingsCalibrationWarning = "Please ensure the tip is at room temperature before continuing!";
|
||||
const char* UVLOWarningString = "LOW VOLT"; //Fixed width 8 chars
|
||||
@@ -220,28 +220,23 @@ const char SettingTempFChar = 'F';
|
||||
#endif
|
||||
|
||||
#ifdef LANG_RU
|
||||
const char* SettingsLongNames[13] =
|
||||
{
|
||||
const char* SettingsLongNames[13] = {
|
||||
//These are all the help text for all the settings./
|
||||
"Источник питания. Установка напряжения отключения. <DC 10V> <S 3.3 V на батарею>",
|
||||
"Температура Сна <С>",
|
||||
"Переход в режим Сна <Минуты>",
|
||||
"Переходит в режим ожидания <Минуты>",
|
||||
"Акселерометр <0. Выкл. 1. мин. чувствительный 9. макс. чувствительный>",
|
||||
"В чем измерять температуру",
|
||||
"Шаг измерения температуры",
|
||||
"Скорость обновления дисплея температуры",
|
||||
"Ориентация Дисплея <A. Автоматический L. Левая Рука R. Правая Рука>",
|
||||
"Активация кнопки A для Турбо режима до 450С при пайке ",
|
||||
"Установка температуры для Турбо режима",
|
||||
"Изменяет стрелки на дисплей питания при пайке",
|
||||
"Автоматический запуск паяльника при включении питания. T=Нагрев, S=Режим Сна,F=Выкл.",
|
||||
"Мигает температура на экране охлаждения, пока жало остается горячим."};
|
||||
"ЀИстЀочник питания. Установка напряжения отключения. <DC 10V> <S 3.3 V на батарею>", "Температура Сна <С>",
|
||||
"Переход в режим Сна <Минуты>", "Переходит в режим ожидания <Минуты>",
|
||||
"Акселерометр <0. Выкл. 1. мин. чувствительный 9. макс. чувствительный>",
|
||||
"Display detailed information in a smaller font.", //
|
||||
"Ориентация Дисплея <A. Автоматический L. Левая Рука R. Правая Рука>",
|
||||
"Активация кнопки A для Турбо режима до 450С при пайке ", "Установка температуры для Турбо режима",
|
||||
"Изменяет стрелки на дисплей питания при пайке",
|
||||
"Автоматический запуск паяльника при включении питания. T=Нагрев, S=Режим Сна,F=Выкл.",
|
||||
"Мигает температура на экране охлаждения, пока жало остается горячим.", "Calibrate tip offset.", //s
|
||||
"Reset all settings", };
|
||||
|
||||
const char* SettingsCalibrationWarning = "Please ensure the tip is at room temperature before continuing!";
|
||||
|
||||
const char* UVLOWarningString = "Low Volt";//Fixed width 8 chars
|
||||
const char* CoolingPromptString = "Выкл. ";//Fixed width 5 chars
|
||||
const char* UVLOWarningString = "Low Volt"; //Fixed width 8 chars
|
||||
const char* CoolingPromptString = "Выкл. "; //Fixed width 5 chars
|
||||
const char SettingTrueChar = 'T';
|
||||
const char SettingFalseChar = 'F';
|
||||
const char SettingSleepChar = 'S';
|
||||
|
||||
@@ -272,42 +272,43 @@ static void gui_settingsMenu() {
|
||||
//draw string starting from descriptionOffset
|
||||
|
||||
int16_t maxOffset = strlen(settingsMenu[currentScreen].description);
|
||||
if (!descriptionStart)
|
||||
if (descriptionStart == 0)
|
||||
descriptionStart = HAL_GetTick();
|
||||
int16_t descriptionOffset = ((HAL_GetTick() - descriptionStart) / 150) % maxOffset;
|
||||
lcd.setCursor(12 * (7 - descriptionOffset), 0);
|
||||
lcd.print(settingsMenu[currentScreen].description);
|
||||
}
|
||||
ButtonState buttons = getButtonState();
|
||||
if (descriptionStart)
|
||||
if (descriptionStart | (HAL_GetTick() - descriptionStart < 500))
|
||||
buttons = BUTTON_NONE;
|
||||
switch (buttons) {
|
||||
case BUTTON_BOTH:
|
||||
earlyExit = true; //will make us exit next loop
|
||||
break;
|
||||
case BUTTON_F_SHORT:
|
||||
//increment
|
||||
settingsMenu[currentScreen].incrementHandler.func();
|
||||
break;
|
||||
case BUTTON_B_SHORT:
|
||||
currentScreen++;
|
||||
break;
|
||||
case BUTTON_F_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
else {
|
||||
switch (buttons) {
|
||||
case BUTTON_BOTH:
|
||||
earlyExit = true; //will make us exit next loop
|
||||
break;
|
||||
case BUTTON_F_SHORT:
|
||||
//increment
|
||||
settingsMenu[currentScreen].incrementHandler.func();
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_B_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
break;
|
||||
case BUTTON_B_SHORT:
|
||||
currentScreen++;
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_NONE:
|
||||
break;
|
||||
break;
|
||||
case BUTTON_F_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
settingsMenu[currentScreen].incrementHandler.func();
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_B_LONG:
|
||||
if (HAL_GetTick() - autoRepeatTimer > 200) {
|
||||
currentScreen++;
|
||||
autoRepeatTimer = HAL_GetTick();
|
||||
}
|
||||
break;
|
||||
case BUTTON_NONE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
lcd.refresh(); //update the LCD
|
||||
osDelay(20); //pause for a sec
|
||||
HAL_IWDG_Refresh(&hiwdg);
|
||||
|
||||
Reference in New Issue
Block a user