1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-26 17:55:19 +03:00

[Horus] UI continued

This commit is contained in:
Bertrand Songis 2015-12-26 17:58:25 +01:00
parent ba2d03b3ad
commit 9db8005f71
10 changed files with 37 additions and 53 deletions

View file

@ -13,12 +13,12 @@ macro(add_bitmaps_target targetname filter width format)
add_custom_target(${targetname} DEPENDS ${bitmaps_files}) add_custom_target(${targetname} DEPENDS ${bitmaps_files})
endmacro(add_bitmaps_target) endmacro(add_bitmaps_target)
macro(add_truetype_font_target radio name font size) macro(add_truetype_font_target radio name font size bold)
set(target ${RADIO_SRC_DIRECTORY}/fonts/${radio}/font_${name}) set(target ${RADIO_SRC_DIRECTORY}/fonts/${radio}/font_${name})
add_custom_command( add_custom_command(
OUTPUT ${target}.png OUTPUT ${target}.png
OUTPUT ${target}.specs OUTPUT ${target}.specs
COMMAND ${RADIO_DIRECTORY}/util/font2png.py ${font} ${size} False ${target} COMMAND ${RADIO_DIRECTORY}/util/font2png.py ${font} ${size} ${bold} ${target}
WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY} WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY}
) )
add_custom_target(ttf_${radio}_${name} DEPENDS ${target}.png ${target}.specs) add_custom_target(ttf_${radio}_${name} DEPENDS ${target}.png ${target}.specs)

View file

@ -1,8 +1,9 @@
add_truetype_font_target(horus tinsize "DejaVu Sans" 9) add_truetype_font_target(horus tinsize "DejaVu Sans" 9 False)
add_truetype_font_target(horus smlsize "DejaVu Sans" 13) add_truetype_font_target(horus smlsize "DejaVu Sans" 13 False)
add_truetype_font_target(horus stdsize "DejaVu Sans" 16) add_truetype_font_target(horus stdsize "DejaVu Sans" 16 False)
add_truetype_font_target(horus midsize "DejaVu Sans" 24) add_truetype_font_target(horus midsize "DejaVu Sans" 24 False)
add_truetype_font_target(horus xxlsize "DejaVu Sans" 48) add_truetype_font_target(horus dblsize "DejaVu Sans" 32 True)
add_truetype_font_target(horus xxlsize "DejaVu Sans" 48 False)
add_custom_target(ttf_horus_fonts DEPENDS ttf_horus_tinsize ttf_horus_smlsize ttf_horus_stdsize ttf_horus_midsize ttf_horus_dblsize ttf_horus_xxlsize) add_custom_target(ttf_horus_fonts DEPENDS ttf_horus_tinsize ttf_horus_smlsize ttf_horus_stdsize ttf_horus_midsize ttf_horus_dblsize ttf_horus_xxlsize)
add_bitmaps_target(horus_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/????[^_]*.png" 480 5/6/5/8) add_bitmaps_target(horus_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/????[^_]*.png" 480 5/6/5/8)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Before After
Before After

View file

@ -1 +1 @@
{ 0,4,11,23,49,68,99,124,130,141,152,171,195,204,216,223,237,257,275,294,313,334,353,373,392,412,432,440,449,473,497,521,537,550,575,595,618,641,660,677,702,723,730,742,764,782,807,828,854,873,899,921,941,965,987,1012,1045,1069,1093,1116,1127,1141,1151,1175,1196,1208,1227,1247,1265,1285,1305,1320,1340,1359,1365,1375,1395,1401,1431,1450,1470,1490,1510,1525,1543,1558,1577,1598,1625,1646,1667,1685,1709,1712,1736,1764,1791,1809,1827,1849,1871,1893,1915,1943 } { 0,4,14,28,54,76,110,139,146,160,173,193,217,228,242,251,266,289,310,331,352,375,397,420,441,464,487,497,508,532,556,580,598,613,641,665,689,715,736,757,783,808,818,832,859,880,910,935,963,987,1015,1040,1062,1087,1112,1140,1178,1206,1234,1258,1272,1287,1300,1324,1343,1356,1378,1401,1420,1443,1466,1484,1507,1529,1539,1553,1576,1586,1618,1640,1663,1686,1709,1726,1746,1764,1786,1810,1841,1865,1889,1909,1933,1936,1960,1988,2015,2033,2051,2074,2097,2120,2143,2171 }

View file

@ -20,46 +20,45 @@
#include "../../opentx.h" #include "../../opentx.h"
coord_t getCurveYCoord(FnFuncP fn, coord_t x) coord_t getCurveYCoord(FnFuncP fn, int x, int width)
{ {
return limit(CURVE_CENTER_Y-CURVE_SIDE_WIDTH, CURVE_CENTER_Y - divRoundClosest(fn(divRoundClosest(x * RESX, CURVE_SIDE_WIDTH)) * CURVE_SIDE_WIDTH, RESX), CURVE_CENTER_Y+CURVE_SIDE_WIDTH); return limit(-width, -divRoundClosest(fn(divRoundClosest(x * RESX, width)) * width, RESX), +width);
} }
void drawFunction(FnFuncP fn, int offset) void drawFunction(FnFuncP fn, int x, int y, int width)
{ {
int left = CURVE_CENTER_X-offset-CURVE_SIDE_WIDTH; int left = x - width;
int right = CURVE_CENTER_X-offset+CURVE_SIDE_WIDTH; int right = x + width;
int center = CURVE_CENTER_X-offset;
// Axis // Axis
lcdDrawSolidHorizontalLine(left, CURVE_CENTER_Y, CURVE_SIDE_WIDTH*2+1, CURVE_AXIS_COLOR); lcdDrawSolidHorizontalLine(left, y, width*2+1, CURVE_AXIS_COLOR);
lcdDrawSolidVerticalLine(center, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, CURVE_SIDE_WIDTH*2, CURVE_AXIS_COLOR); lcdDrawSolidVerticalLine(x, y-width, width*2, CURVE_AXIS_COLOR);
// Extra lines // Extra lines
lcdDrawVerticalLine(left+CURVE_SIDE_WIDTH/2, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, CURVE_SIDE_WIDTH*2, STASHED, CURVE_AXIS_COLOR); lcdDrawVerticalLine(left+width/2, y-width, width*2, STASHED, CURVE_AXIS_COLOR);
lcdDrawVerticalLine(right-CURVE_SIDE_WIDTH/2, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, CURVE_SIDE_WIDTH*2, STASHED, CURVE_AXIS_COLOR); lcdDrawVerticalLine(right-width/2, y-width, width*2, STASHED, CURVE_AXIS_COLOR);
lcdDrawHorizontalLine(left, CURVE_CENTER_Y-CURVE_SIDE_WIDTH/2, CURVE_SIDE_WIDTH*2+1, STASHED, CURVE_AXIS_COLOR); lcdDrawHorizontalLine(left, y-width/2, width*2+1, STASHED, CURVE_AXIS_COLOR);
lcdDrawHorizontalLine(left, CURVE_CENTER_Y+CURVE_SIDE_WIDTH/2, CURVE_SIDE_WIDTH*2+1, STASHED, CURVE_AXIS_COLOR); lcdDrawHorizontalLine(left, y+width/2, width*2+1, STASHED, CURVE_AXIS_COLOR);
// Outside border // Outside border
lcdDrawSolidVerticalLine(left, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, CURVE_SIDE_WIDTH*2, TEXT_COLOR); lcdDrawSolidVerticalLine(left, y-width, width*2, TEXT_COLOR);
lcdDrawSolidVerticalLine(right, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, CURVE_SIDE_WIDTH*2, TEXT_COLOR); lcdDrawSolidVerticalLine(right, y-width, width*2, TEXT_COLOR);
lcdDrawSolidHorizontalLine(left, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, CURVE_SIDE_WIDTH*2+1, TEXT_COLOR); lcdDrawSolidHorizontalLine(left, y-width, width*2+1, TEXT_COLOR);
lcdDrawSolidHorizontalLine(left, CURVE_CENTER_Y+CURVE_SIDE_WIDTH, CURVE_SIDE_WIDTH*2+1, TEXT_COLOR); lcdDrawSolidHorizontalLine(left, y+width, width*2+1, TEXT_COLOR);
coord_t prev_yv = (coord_t)-1; coord_t prev_yv = (coord_t)-1;
for (int xv=-CURVE_SIDE_WIDTH; xv<=CURVE_SIDE_WIDTH; xv+=1) { for (int xv=-width; xv<=width; xv+=1) {
coord_t yv = getCurveYCoord(fn, xv); coord_t yv = y + getCurveYCoord(fn, xv, width);
if (prev_yv != (coord_t)-1) { if (prev_yv != (coord_t)-1) {
if (prev_yv < yv) { if (prev_yv < yv) {
for (int y=prev_yv; y<=yv; y+=1) { for (int y=prev_yv; y<=yv; y+=1) {
lcdDrawBitmapPattern(CURVE_CENTER_X+xv-offset-2, y-2, LBM_POINT, TEXT_COLOR); lcdDrawBitmapPattern(x+xv-2, y-2, LBM_POINT, TEXT_COLOR);
} }
} }
else { else {
for (int y=yv; y<=prev_yv; y+=1) { for (int y=yv; y<=prev_yv; y+=1) {
lcdDrawBitmapPattern(CURVE_CENTER_X+xv-offset-2, y-2, LBM_POINT, TEXT_COLOR); lcdDrawBitmapPattern(x+xv-2, y-2, LBM_POINT, TEXT_COLOR);
} }
} }
} }

View file

@ -79,7 +79,7 @@ void drawStick(coord_t centrex, int16_t xval, int16_t yval);
void drawSticks(); void drawSticks();
// Curve functions // Curve functions
coord_t getCurveYCoord(FnFuncP fn, coord_t x); coord_t getCurveYCoord(FnFuncP fn, int x, int width);
void drawFunction(FnFuncP fn, int offset); void drawFunction(FnFuncP fn, int offset);
void drawCurveVerticalScale(int x); void drawCurveVerticalScale(int x);
void drawCurveHorizontalScale(); void drawCurveHorizontalScale();

View file

@ -49,9 +49,9 @@ point_t getPoint(uint8_t i)
return result; return result;
} }
void DrawCurve(int offset=0) void drawCurve(int x, int y, int width)
{ {
drawFunction(curveFn, offset); drawFunction(curveFn, x, y, width);
/*int i = 0; /*int i = 0;
do { do {
@ -209,7 +209,7 @@ bool menuModelCurveOne(evt_t event)
killEvents(event); killEvents(event);
} }
DrawCurve(); drawCurve(CURVE_CENTER_X, CURVE_CENTER_Y, CURVE_SIDE_WIDTH);
drawCurveHorizontalScale(); drawCurveHorizontalScale();
if (menuVerticalPosition < ITEM_CURVE_COORDS1) drawCurveVerticalScale(CURVE_CENTER_X-CURVE_SIDE_WIDTH-15); if (menuVerticalPosition < ITEM_CURVE_COORDS1) drawCurveVerticalScale(CURVE_CENTER_X-CURVE_SIDE_WIDTH-15);
@ -351,13 +351,13 @@ bool menuModelCurvesAll(evt_t event)
putsStrIdx(MENUS_MARGIN_LEFT, y, STR_CV, k+1, attr); putsStrIdx(MENUS_MARGIN_LEFT, y, STR_CV, k+1, attr);
editName(50, y, g_model.curveNames[k], sizeof(g_model.curveNames[k]), 0, 0); editName(50, y, g_model.curveNames[k], sizeof(g_model.curveNames[k]), 0, 0);
CurveInfo & crv = g_model.curves[k]; CurveInfo & crv = g_model.curves[k];
lcdDrawNumber(100, y, 5+crv.points, LEFT, 0, NULL, STR_PTS); lcdDrawNumber(120, y, 5+crv.points, LEFT, 0, NULL, STR_PTS);
} }
} }
if (sub >= 0) { if (sub >= 0) {
s_curveChan = sub; s_curveChan = sub;
DrawCurve(23); drawCurve(CURVE_CENTER_X, CURVE_CENTER_Y+10, 80);
} }
return true; return true;

View file

@ -296,8 +296,7 @@ bool menuModelExpoOne(evt_t event)
coord_t y = MENU_CONTENT_TOP; coord_t y = MENU_CONTENT_TOP;
drawFunction(expoFn); drawFunction(expoFn, CURVE_CENTER_X, CURVE_CENTER_Y, CURVE_SIDE_WIDTH);
drawCurveHorizontalScale(); drawCurveHorizontalScale();
drawCurveVerticalScale(CURVE_CENTER_X-CURVE_SIDE_WIDTH-15); drawCurveVerticalScale(CURVE_CENTER_X-CURVE_SIDE_WIDTH-15);
@ -319,7 +318,7 @@ bool menuModelExpoOne(evt_t event)
sprintf(texty, "%d", calcRESXto100(y)); sprintf(texty, "%d", calcRESXto100(y));
x = divRoundClosest(x*CURVE_SIDE_WIDTH, RESX); x = divRoundClosest(x*CURVE_SIDE_WIDTH, RESX);
y = getCurveYCoord(expoFn, x); y = CURVE_CENTER_Y + getCurveYCoord(expoFn, x, CURVE_SIDE_WIDTH);
lcdDrawSolidFilledRect(CURVE_CENTER_X+x, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, 2, 2*CURVE_SIDE_WIDTH+2, CURVE_CURSOR_COLOR); lcdDrawSolidFilledRect(CURVE_CENTER_X+x, CURVE_CENTER_Y-CURVE_SIDE_WIDTH, 2, 2*CURVE_SIDE_WIDTH+2, CURVE_CURSOR_COLOR);
lcdDrawSolidFilledRect(CURVE_CENTER_X-CURVE_SIDE_WIDTH-2, y-1, 2*CURVE_SIDE_WIDTH+2, 2, CURVE_CURSOR_COLOR); lcdDrawSolidFilledRect(CURVE_CENTER_X-CURVE_SIDE_WIDTH-2, y-1, 2*CURVE_SIDE_WIDTH+2, 2, CURVE_CURSOR_COLOR);

View file

@ -49,7 +49,6 @@ enum LimitsItems {
ITEM_LIMITS_MAXROW = ITEM_LIMITS_COUNT-1 ITEM_LIMITS_MAXROW = ITEM_LIMITS_COUNT-1
}; };
#if defined(PPM_CENTER_ADJUSTABLE)
#define LIMITS_NAME_POS 52 #define LIMITS_NAME_POS 52
#define LIMITS_OFFSET_POS 160 #define LIMITS_OFFSET_POS 160
#define LIMITS_MIN_POS 220 #define LIMITS_MIN_POS 220
@ -59,16 +58,6 @@ enum LimitsItems {
#define LIMITS_CURVE_POS 350 #define LIMITS_CURVE_POS 350
#define LIMITS_PPM_CENTER_POS 440 #define LIMITS_PPM_CENTER_POS 440
#define LIMITS_SYMETRICAL_POS 450 #define LIMITS_SYMETRICAL_POS 450
#else
#define LIMITS_NAME_POS 44
#define LIMITS_OFFSET_POS 136
#define LIMITS_MIN_POS 178
#define LIMITS_DIRECTION_POS 181
#define LIMITS_MAX_POS 218
#define LIMITS_REVERT_POS 228
#define LIMITS_CURVE_POS 258
#define LIMITS_SYMETRICAL_POS 294
#endif
#define LIMITS_MIN_MAX_OFFSET 1000 #define LIMITS_MIN_MAX_OFFSET 1000
#define CONVERT_US_MIN_MAX(x) (((x)*1280)/250) #define CONVERT_US_MIN_MAX(x) (((x)*1280)/250)
@ -222,11 +211,7 @@ bool menuModelLimits(evt_t event)
case ITEM_LIMITS_DIRECTION: case ITEM_LIMITS_DIRECTION:
{ {
uint8_t revert = ld->revert; uint8_t revert = ld->revert;
#if defined(PPM_CENTER_ADJUSTABLE)
lcdDrawText(LIMITS_REVERT_POS, y, revert ? "\177" : "\176", attr); lcdDrawText(LIMITS_REVERT_POS, y, revert ? "\177" : "\176", attr);
#else
lcdDrawTextAtIndex(LIMITS_REVERT_POS, y, STR_MMMINV, revert, attr);
#endif
if (active) { if (active) {
uint8_t revert_new = checkIncDecModel(event, revert, 0, 1); uint8_t revert_new = checkIncDecModel(event, revert, 0, 1);
if (checkIncDec_Ret && isThrottleOutput(k)) { if (checkIncDec_Ret && isThrottleOutput(k)) {

View file

@ -400,7 +400,7 @@ void pushModelNotes();
#define EDIT_MODE_INIT 0 // TODO enum #define EDIT_MODE_INIT 0 // TODO enum
typedef int (*FnFuncP) (int x); typedef int (*FnFuncP) (int x);
void drawFunction(FnFuncP fn, int offset=0); void drawFunction(FnFuncP fn, int x, int y, int width);
uint8_t switchToMix(uint8_t source); uint8_t switchToMix(uint8_t source);