/* * Copyright (C) OpenTX * * Based on code named * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _GUI_H_ #define _GUI_H_ #include "gui_common.h" #include "menus.h" #include "popups.h" #define MENUS_SCROLLBAR_WIDTH 0 #if defined(PCBX7) || defined(PCBX3) #define HEADER_LINE 0 #define HEADER_LINE_COLUMNS #else #define HEADER_LINE 1 #define HEADER_LINE_COLUMNS 0, #endif #define COLUMN_X 0 #define drawFieldLabel(x, y, str) lcdDrawTextAlignedLeft(y, str) #define NUM_BODY_LINES (LCD_LINES-1) #define MENU_HEADER_HEIGHT FH #define CURVE_SIDE_WIDTH (LCD_H/2) #define CURVE_CENTER_X (LCD_W-CURVE_SIDE_WIDTH-2) #define CURVE_CENTER_Y (LCD_H/2) #define MIXES_2ND_COLUMN (12*FW) // Temporary no highlight extern uint8_t noHighlightCounter; #define NO_HIGHLIGHT() (noHighlightCounter > 0) #define START_NO_HIGHLIGHT() do { noHighlightCounter = 25; } while(0) void drawSlider(coord_t x, coord_t y, uint8_t width, uint8_t value, uint8_t max, uint8_t attr); void drawSlider(coord_t x, coord_t y, uint8_t value, uint8_t max, uint8_t attr); extern int8_t checkIncDec_Ret; // global helper vars #define EDIT_SELECT_FIELD 0 #define EDIT_MODIFY_FIELD 1 #define EDIT_MODIFY_STRING 2 extern int8_t s_editMode; // global editmode // checkIncDec flags // we leave room for EE_MODEL and EE_GENERAL #define NO_INCDEC_MARKS 0x04 #define INCDEC_SWITCH 0x08 #define INCDEC_SOURCE 0x10 #define INCDEC_REP10 0x40 #define NO_DBLKEYS 0x80 #define INCDEC_DECLARE_VARS(f) uint8_t incdecFlag = (f); IsValueAvailable isValueAvailable = NULL #define INCDEC_SET_FLAG(f) incdecFlag = (f) #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) // mawrow special values #define READONLY_ROW ((uint8_t)-1) #define TITLE_ROW READONLY_ROW #define HIDDEN_ROW ((uint8_t)-2) struct CheckIncDecStops { const int count; const int stops[]; int min() const { return stops[0]; } int max() const { return stops[count-1]; } bool contains(int value) const { for (int i=0; i= 0x0e) void repeatLastCursorMove(event_t event); #define REPEAT_LAST_CURSOR_MOVE() { if (EVT_KEY_MASK(event) >= 0x0e) putEvent(event); else repeatLastCursorMove(event); } #define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() #else #define IS_ROTARY_LEFT(evt) (0) #define IS_ROTARY_RIGHT(evt) (0) #define IS_ROTARY_BREAK(evt) (0) #define IS_ROTARY_LONG(evt) (0) #define IS_ROTARY_EVENT(evt) (0) void repeatLastCursorMove(event_t event); #define REPEAT_LAST_CURSOR_MOVE() repeatLastCursorMove(event) #define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() #endif // TODO enum #if defined(PCBX7) || defined(PCBX3) #define EDIT_MODE_INIT 0 #else #define EDIT_MODE_INIT -1 #endif extern uint8_t editNameCursorPos; uint8_t getExposCount(); void insertExpo(uint8_t idx); void deleteExpo(uint8_t idx); uint8_t getMixesCount(); void insertMix(uint8_t idx); void deleteMix(uint8_t idx); typedef int (*FnFuncP) (int x); void drawFunction(FnFuncP fn, uint8_t offset=0); void onSourceLongEnterPress(const char *result); uint8_t switchToMix(uint8_t source); void drawCheckBox(coord_t x, coord_t y, uint8_t value, LcdFlags attr); extern const unsigned char sticks[] ; void drawSplash(); void drawSecondSplash(); void drawScreenIndex(uint8_t index, uint8_t count, uint8_t attr); void drawStick(coord_t centrex, int16_t xval, int16_t yval); void drawPotsBars(); void doMainScreenGraphics(); void drawProgressScreen(const char * title, const char * message, int num, int den); void drawSleepBitmap(); void drawVerticalScrollbar(coord_t x, coord_t y, coord_t h, uint16_t offset, uint16_t count, uint8_t visible); void drawAlertBox(const char * title, const char * text, const char * action); void showAlertBox(const char * title, const char * text, const char * action , uint8_t sound); #define SET_SCROLLBAR_X(x) #define LOAD_MODEL_BITMAP() #define IS_MAIN_VIEW_DISPLAYED() menuHandlers[0] == menuMainView #if defined(TELEMETRY_FRSKY) #define IS_TELEMETRY_VIEW_DISPLAYED() menuHandlers[0] == menuViewTelemetryFrsky #else #define IS_TELEMETRY_VIEW_DISPLAYED() false #endif #define IS_OTHER_VIEW_DISPLAYED() false void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); #if defined(FLIGHT_MODES) void displayFlightModes(coord_t x, coord_t y, FlightModesType value); FlightModesType editFlightModes(coord_t x, coord_t y, event_t event, FlightModesType value, uint8_t attr); #else #define displayFlightModes(...) #endif #endif // _GUI_H_