mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 17:25:20 +03:00
Change OSD stick overlays to be more square.
This commit is contained in:
parent
a4ce8b5600
commit
c74e1f0df1
1 changed files with 26 additions and 9 deletions
|
@ -108,12 +108,17 @@
|
||||||
|
|
||||||
// Stick overlay size
|
// Stick overlay size
|
||||||
#define OSD_STICK_OVERLAY_WIDTH 7
|
#define OSD_STICK_OVERLAY_WIDTH 7
|
||||||
#define OSD_STICK_OVERLAY_HEIGHT 7
|
#define OSD_STICK_OVERLAY_HEIGHT 5
|
||||||
|
|
||||||
#define STICK_OVERLAY_HORIZONTAL_CHAR '-'
|
#define STICK_OVERLAY_HORIZONTAL_CHAR '-'
|
||||||
#define STICK_OVERLAY_VERTICAL_CHAR '|'
|
#define STICK_OVERLAY_VERTICAL_CHAR '|'
|
||||||
#define STICK_OVERLAY_CROSS_CHAR '+'
|
#define STICK_OVERLAY_CROSS_CHAR '+'
|
||||||
#define STICK_OVERLAY_CURSOR_CHAR '0'
|
#define STICK_OVERLAY_CURSOR_CHAR 0x84
|
||||||
|
#define STICK_OVERLAY_CURSOR_LOW_CHAR 0x86
|
||||||
|
#define STICK_OVERLAY_CURSOR_HIGH_CHAR 0x82
|
||||||
|
|
||||||
|
#define OSD_STICK_OVERLAY_VERT_MID_ROW ((OSD_STICK_OVERLAY_HEIGHT - 1) / 2)
|
||||||
|
#define OSD_STICK_OVERLAY_VERT_ROW_HEIGHT ((PWM_RANGE_MAX - PWM_RANGE_MIN) / OSD_STICK_OVERLAY_HEIGHT)
|
||||||
|
|
||||||
const char * const osdTimerSourceNames[] = {
|
const char * const osdTimerSourceNames[] = {
|
||||||
"ON TIME ",
|
"ON TIME ",
|
||||||
|
@ -1318,13 +1323,13 @@ static void osdDrawStickOverlayAxisItem(osd_items_e osd_item)
|
||||||
OSD_Y(osdConfig()->item_pos[osd_item]));
|
OSD_Y(osdConfig()->item_pos[osd_item]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void osdDrawStickOverlayPos(osd_items_e osd_item, uint8_t xpos, uint8_t ypos)
|
static void osdDrawStickOverlayPos(osd_items_e osd_item, uint8_t xpos, uint8_t ypos, char cursor)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint8_t elemPosX = OSD_X(osdConfig()->item_pos[osd_item]);
|
const uint8_t elemPosX = OSD_X(osdConfig()->item_pos[osd_item]);
|
||||||
uint8_t elemPosY = OSD_Y(osdConfig()->item_pos[osd_item]);
|
const uint8_t elemPosY = OSD_Y(osdConfig()->item_pos[osd_item]);
|
||||||
|
|
||||||
displayWriteChar(osdDisplayPort, elemPosX + xpos, elemPosY + ypos, STICK_OVERLAY_CURSOR_CHAR);
|
displayWriteChar(osdDisplayPort, elemPosX + xpos, elemPosY + ypos, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void osdDrawStickOverlayCursor(osd_items_e osd_item)
|
static void osdDrawStickOverlayCursor(osd_items_e osd_item)
|
||||||
|
@ -1339,10 +1344,22 @@ static void osdDrawStickOverlayCursor(osd_items_e osd_item)
|
||||||
horizontal_channel = radioModes[osdConfig()->overlay_radio_mode-1].right_horizontal;
|
horizontal_channel = radioModes[osdConfig()->overlay_radio_mode-1].right_horizontal;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t x_pos = (uint8_t)constrain(scaleRange(rcData[horizontal_channel], PWM_RANGE_MIN, PWM_RANGE_MAX, 0, OSD_STICK_OVERLAY_WIDTH), 0, OSD_STICK_OVERLAY_WIDTH - 1);
|
const uint8_t x_pos = constrain(scaleRange(rcData[horizontal_channel], PWM_RANGE_MIN, PWM_RANGE_MAX, 0, OSD_STICK_OVERLAY_WIDTH), 0, OSD_STICK_OVERLAY_WIDTH - 1);
|
||||||
uint8_t y_pos = OSD_STICK_OVERLAY_HEIGHT - 1 - (uint8_t)constrain(scaleRange(rcData[vertical_channel], PWM_RANGE_MIN, PWM_RANGE_MAX, 0, OSD_STICK_OVERLAY_HEIGHT), 0, OSD_STICK_OVERLAY_HEIGHT - 1);
|
const uint8_t y_pos = OSD_STICK_OVERLAY_HEIGHT - 1 - constrain(scaleRange(rcData[vertical_channel], PWM_RANGE_MIN, PWM_RANGE_MAX, 0, OSD_STICK_OVERLAY_HEIGHT), 0, OSD_STICK_OVERLAY_HEIGHT - 1);
|
||||||
|
|
||||||
osdDrawStickOverlayPos(osd_item, x_pos, y_pos);
|
char cursor;
|
||||||
|
if (y_pos != OSD_STICK_OVERLAY_VERT_MID_ROW) {
|
||||||
|
const uint16_t yPosInRow = (constrain(rcData[vertical_channel], PWM_RANGE_MIN, PWM_RANGE_MAX) - PWM_RANGE_MIN) % OSD_STICK_OVERLAY_VERT_ROW_HEIGHT;
|
||||||
|
if (yPosInRow < OSD_STICK_OVERLAY_VERT_ROW_HEIGHT / 2 && rcData[vertical_channel] < PWM_RANGE_MAX) {
|
||||||
|
cursor = STICK_OVERLAY_CURSOR_LOW_CHAR;
|
||||||
|
} else {
|
||||||
|
cursor = STICK_OVERLAY_CURSOR_HIGH_CHAR;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cursor = STICK_OVERLAY_CURSOR_CHAR;
|
||||||
|
}
|
||||||
|
|
||||||
|
osdDrawStickOverlayPos(osd_item, x_pos, y_pos, cursor);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue