26 #define BACKSPACE_KEY 8
27 #define VALIDATE_KEY '\r'
33 #define KEYBOARD_KEY_HEIGHT 60
35 #define KEYBOARD_KEY_HEIGHT 72
39 #define SHIFT_KEY_INDEX 26
40 #define DIGITS_SWITCH_KEY_INDEX 27
41 #define BACKSPACE_KEY_INDEX 28
42 #define SPACE_KEY_INDEX 29
43 #define SPECIAL_KEYS_INDEX 30
46 #define KEYBOARD_KEY_WIDTH 14
47 #define KEYBOARD_KEY_HEIGHT 14
48 #define KEYBOARD_WIDTH (5 * KEYBOARD_KEY_WIDTH)
54 #if (SCREEN_HEIGHT == 600)
55 #define KEYPAD_KEY_HEIGHT 88
57 #define KEYPAD_KEY_HEIGHT 104
59 #define KEYPAD_MAX_DIGITS 12
61 #define KEYPAD_WIDTH 114
62 #define KEYPAD_HEIGHT 18
68 #define BORDER_MARGIN 24
69 #define BOTTOM_BORDER_MARGIN 24
71 #define BORDER_MARGIN 32
72 #define BOTTOM_BORDER_MARGIN 24
77 #define BACK_BUTTON_HEADER_HEIGHT 88
79 #define BACK_BUTTON_HEADER_HEIGHT 96
84 #define BUTTON_RADIUS RADIUS_40_PIXELS
85 #define BUTTON_DIAMETER 80
87 #define BUTTON_RADIUS RADIUS_44_PIXELS
88 #define BUTTON_DIAMETER 88
94 #define SPINNER_WIDTH 60
95 #define SPINNER_HEIGHT 44
97 #define SPINNER_WIDTH 64
98 #define SPINNER_HEIGHT 48
103 #define RADIO_WIDTH 32
104 #define RADIO_HEIGHT 32
106 #define RADIO_WIDTH 40
107 #define RADIO_HEIGHT 40
112 #define SPACE_ICON C_Space_32px
113 #define BACKSPACE_ICON C_Erase_32px
114 #define SHIFT_ICON C_Maj_32px
115 #define SHIFT_LOCKED_ICON C_Maj_Lock_32px
116 #define VALIDATE_ICON C_Check_32px
117 #define RADIO_OFF_ICON C_radio_inactive_32px
118 #define RADIO_ON_ICON C_radio_active_32px
119 #define PUSH_ICON C_Chevron_32px
120 #define LEFT_ARROW_ICON C_Back_32px
121 #define RIGHT_ARROW_ICON C_Next_32px
122 #define CHEVRON_BACK_ICON C_Chevron_Back_32px
123 #define CHEVRON_NEXT_ICON C_Chevron_Next_32px
124 #define CLOSE_ICON C_Close_32px
125 #define WHEEL_ICON C_Settings_32px
126 #define INFO_I_ICON C_Info_32px
127 #define QRCODE_ICON C_QRCode_32px
128 #define MINI_PUSH_ICON C_Mini_Push_32px
129 #define WARNING_ICON C_Warning_32px
131 #define SPACE_ICON C_Space_40px
132 #define BACKSPACE_ICON C_Erase_40px
133 #define SHIFT_ICON C_Maj_40px
134 #define SHIFT_LOCKED_ICON C_Maj_Lock_40px
135 #define VALIDATE_ICON C_Check_40px
136 #define RADIO_OFF_ICON C_radio_inactive_40px
137 #define RADIO_ON_ICON C_radio_active_40px
138 #define PUSH_ICON C_Chevron_40px
139 #define LEFT_ARROW_ICON C_Back_40px
140 #define RIGHT_ARROW_ICON C_Next_40px
141 #define CHEVRON_BACK_ICON C_Chevron_Back_40px
142 #define CHEVRON_NEXT_ICON C_Chevron_Next_40px
143 #define CLOSE_ICON C_Close_40px
144 #define WHEEL_ICON C_Settings_40px
145 #define INFO_I_ICON C_Info_40px
146 #define QRCODE_ICON C_QRCode_40px
147 #define MINI_PUSH_ICON C_Mini_Push_40px
148 #define WARNING_ICON C_Warning_40px
152 #define C_warning64px _Pragma("GCC warning \"Deprecated constant!\"") C_Warning_64px
153 #define C_round_warning_64px _Pragma("GCC warning \"Deprecated constant!\"") C_Important_Circle_64px
154 #define C_round_check_64px _Pragma("GCC warning \"Deprecated constant!\"") C_Check_Circle_64px
155 #define C_Message_64px _Pragma("GCC warning \"Deprecated constant!\"") C_Review_64px
156 #define C_leftArrow32px _Pragma("GCC warning \"Deprecated constant!\"") C_Back_32px
157 #define C_Next32px _Pragma("GCC warning \"Deprecated constant!\"") C_Next_32px
158 #define C_round_cross_64px _Pragma("GCC warning \"Deprecated constant!\"") C_Denied_Circle_64px
161 #define NB_MAX_PAGES_WITH_DASHES 6
168 ((1 << SWIPED_UP) | (1 << SWIPED_DOWN) | (1 << SWIPED_LEFT) | (1 << SWIPED_RIGHT))
174 #define LEFT_BUTTON 0x01
175 #define RIGHT_BUTTON 0x02
176 #define BOTH_BUTTONS 0x03
177 #define RELEASED_MASK 0x80
178 #define CONTINUOUS_MASK \
208 #ifdef HAVE_HW_TOUCH_SWIPE
387 typedef char *(*onTextDrawCallback_t)(
uint8_t token);
480 MODE_DIGITS_AND_SPECIALS,
508 bool enableBackspace;
struct PACKED__ nbgl_line_s nbgl_line_t
struct to represent a vertical or horizontal line
struct PACKED__ nbgl_navigation_bar_s nbgl_page_indicator_t
struct to represent a navigation bar (PAGE_INDICATOR type) There can be up to 5 page indicators,...
struct PACKED__ nbgl_radio_s nbgl_radio_t
struct to represent a radio button (RADIO_BUTTON type)
void(* nbgl_touchCallback_t)(void *obj, nbgl_touchType_t eventType)
prototype of function to be called when a touch event is received by an object
struct PACKED__ nbgl_text_area_s nbgl_text_area_t
struct to represent a text area (TEXT_AREA type)
uint8_t nbgl_containerPoolGetNbUsed(uint8_t layer)
returns the number of containers currently used in the pool
void nbgl_objDraw(nbgl_obj_t *obj)
This function draws or redraws the given object and its children (recursive version)
void nbgl_refresh(void)
This functions refreshes the actual screen on display with what has changed since the last refresh.
struct PACKED__ nbgl_progress_bar_s nbgl_progress_bar_t
struct to represent a progress bar (PROGRESS_BAR type)
void nbgl_keyboardTouchCallback(nbgl_obj_t *obj, nbgl_touchType_t eventType)
function to be called when the keyboard object is touched
nbgl_obj_t ** nbgl_containerPoolGet(uint8_t nbObjs, uint8_t layer)
Gets a new container from the pool, with the given number of obj pointers.
struct PACKED__ nbgl_keypad_s nbgl_keypad_t
struct to represent a keypad (KEYPAD type)
void nbgl_refreshReset(void)
This functions resets all changes since the last refresh.
struct PACKED__ nbgl_mask_control_s nbgl_mask_control_t
keyboardCase_t
Letters casing in which to open/set the keyboard.
@ LOCKED_UPPER_CASE
locked upper case mode
@ LOWER_CASE
lower case mode
@ UPPER_CASE
upper case mode for one character
void nbgl_objAllowDrawing(bool enable)
This functions enables or disables drawing/refresh for all further calls.
struct PACKED__ nbgl_text_entry_s nbgl_text_entry_t
struct to represent a text entry area (TEXT_ENTRY type)
void nbgl_keypadTouchCallback(nbgl_obj_t *obj, nbgl_touchType_t eventType)
function to be called when the keypad object is touched
bool nbgl_keyboardGetPosition(nbgl_keyboard_t *kbd, char index, uint16_t *x, uint16_t *y)
This function gets the position (top-left corner) of the key at the given index. (to be used for Test...
struct PACKED__ nbgl_keyboard_s nbgl_keyboard_t
struct to represent a keyboard (KEYBOARD type)
void nbgl_refreshSpecial(nbgl_refresh_mode_t mode)
This functions refreshes the actual screen on display with what has changed since the last refresh,...
@ BUTTON_BOTH_TOUCHED
Sent when both buttons are touched.
@ BUTTON_LEFT_CONTINUOUS_PRESSED
@ BUTTON_BOTH_PRESSED
Sent when both buttons are released.
@ BUTTON_RIGHT_CONTINUOUS_PRESSED
@ BUTTON_LEFT_PRESSED
Sent when Left button is released.
@ BUTTON_RIGHT_PRESSED
Send when Right button is released.
void nbgl_containerPoolRelease(uint8_t layer)
Release the objects pointers from the pool for the given layer.
struct PACKED__ nbgl_image_s nbgl_image_t
struct to represent an image (IMAGE type)
int nbgl_objPoolGetArray(nbgl_obj_type_t type, uint8_t nbObjs, uint8_t layer, nbgl_obj_t **objArray)
Gets nbObjects new graphic object from the pool, with the given type, for the given layer (screen)....
uint8_t nbgl_objPoolGetId(nbgl_obj_t *obj)
Gets a unique index for the given object, in the pool.
char *(* onTextDrawCallback_t)(uint8_t token)
prototype of function to be called when a TEXT_AREA object is drawned, and no text was provided
bool nbgl_keypadGetPosition(nbgl_keypad_t *kbd, char index, uint16_t *x, uint16_t *y)
This function gets the position (top-left corner) of the key at the given index. (to be used for Test...
struct PACKED__ nbgl_button_s nbgl_button_t
struct to represent a button (BUTTON type) that can contain a text and/or an icon
void(* nbgl_buttonCallback_t)(void *obj, nbgl_buttonEvent_t buttonEvent)
prototype of function to be called when a button event is received by an object (TODO: change to scre...
keyboardMode_t
Mode in which to open/set the keyboard.
@ MODE_SPECIAL
extended special characters mode
@ MODE_DIGITS
digits and some special characters mode
@ MODE_LETTERS
letters mode
void nbgl_objDrawKeyboard(nbgl_keyboard_t *kbd)
This function draws a keyboard object.
void nbgl_refreshSpecialWithPostRefresh(nbgl_refresh_mode_t mode, nbgl_post_refresh_t post_refresh)
nbgl_obj_t * nbgl_objPoolGet(nbgl_obj_type_t type, uint8_t layer)
Gets a new graphic object from the pool, with the given type. The type field of the object is set.
uint8_t nbgl_objPoolGetNbUsed(uint8_t layer)
returns the number of objects currently used in the pool
void(* keyboardCallback_t)(char touchedKey)
prototype of function to be called when a valid key is pressed on keyboard Backspace is equal to 0x8 ...
void nbgl_objDrawKeypad(nbgl_keypad_t *kbd)
This function draws a keypad object.
nbgl_icon_details_t *(* onImageDrawCallback_t)(uint8_t token)
prototype of function to be called when a IMAGE object is drawned, and no buffer was provided
struct PACKED__ nbgl_container_s nbgl_container_t
struct to represent a container (CONTAINER type)
nbgl_page_indicator_style_t
Style to apply to nbgl_page_indicator_t.
@ CURRENT_INDICATOR
only current page dash is black
@ PROGRESSIVE_INDICATOR
all dashes before active page are black
void nbgl_objPoolRelease(uint8_t layer)
Release the objects from the pool for the given layer.
bool nbgl_refreshIsNeeded(void)
This functions returns true if there is something to refresh.
struct PACKED__ nbgl_switch_s nbgl_switch_t
struct to represent a switch (size is fixed) (SWITCH type)
struct PACKED__ nbgl_obj_s nbgl_obj_t
Common structure for all graphical objects.
struct PACKED__ nbgl_spinner_s nbgl_spinner_t
struct to represent a "spinner", represented by the Ledger corners, in gray, with one of the corners ...
void nbgl_objInit(void)
This functions inits all internal of nbgl objects layer.
struct PACKED__ nbgl_image_file_s nbgl_image_file_t
struct to represent an image file object (IMAGE_FILE type) The source of the data is an image file wi...
struct PACKED__ nbgl_qrcode_s nbgl_qrcode_t
struct to represent a QR code (QR_CODE type), whose size is fixed
nbgl_obj_t * nbgl_objPoolGetPrevious(nbgl_obj_t *obj, uint8_t layer)
Gets a link to the previous object in the pool, for the given layer. (to be used with care)
common types for Graphical Library
uint8_t nbgl_transformation_t
Represents the transformation to be applied on the bitmap before rendering This is a bitfield using m...
nbgl_state_t
to represent a boolean state.
nbgl_post_refresh_t
Post refresh modes.
nbgl_radius_t
possible radius for objects
nbgl_touchType_t
The different types of Touchscreen events.
nbgl_qrcode_version_t
possible modes for QR Code
nbgl_direction_t
Directions for layout or lines.
struct PACKED__ nbgl_icon_details_s nbgl_icon_details_t
Represents all information about an icon.
nbgl_aligment_t
All types of alignments.
nbgl_hardwareSwipe_t
Hardware powered detected swipe states.
nbgl_obj_type_t
All types of graphical objects.
nbgl_touchState_t
the 2 possible states of a finger on the Touchscreen
nbgl_style_t
possible styles for text area border
struct PACKED__ nbgl_area_s nbgl_area_t
Represents a rectangle area of the screen.
nbgl_refresh_mode_t
different modes of refresh for nbgl_refreshSpecial()
struct to represent a container (CONTAINER type)
nbgl_obj_t obj
common part
struct nbgl_obj_s ** children
children of this object (nbChildren size)
nbgl_direction_t layout
layout of children inside this object
bool forceClean
if set to true, a paint will be done with background color
struct to represent an image file object (IMAGE_FILE type) The source of the data is an image file wi...
const uint8_t * buffer
buffer containing image file
struct to represent an image (IMAGE type)
nbgl_transformation_t transformation
usually NO_TRANSFORMATION
onImageDrawCallback_t onDrawCallback
uint8_t token
token to use as param of onDrawCallback
const nbgl_icon_details_t * buffer
struct to represent a keyboard (KEYBOARD type)
color_t textColor
color set to letters.
keyboardCase_t casing
keyboard casing mode (lower, upper once or upper locked)
bool lettersOnly
if true, only display letter keys and Backspace
nbgl_obj_t obj
common part
keyboardMode_t mode
keyboard mode to start with
color_t borderColor
color set to key borders
keyboardCallback_t callback
function called when an active key is pressed
bool needsRefresh
if true, means that the keyboard has been redrawn and needs a refresh
struct to represent a keypad (KEYPAD type)
bool enableBackspace
if true, Backspace key is enabled
bool enableDigits
if true, Digit keys are enabled
bool shuffled
if true, Digit keys are shuffled
bool enableValidate
if true, Validate key is enabled
nbgl_obj_t obj
common part
color_t textColor
color set to digits.
color_t borderColor
color set to key borders
bool partial
if true, means that only some keys have changed
keyboardCallback_t callback
function called when an active key is pressed
struct to represent a vertical or horizontal line
nbgl_obj_t obj
common part
nbgl_direction_t direction
direction of the line, e.g VERTICAL or HORIZONTAL
color_t lineColor
color of the line
nbgl_obj_t obj
common part
bool enableMasking
true: Enable masking of area / false: Disable masking of area
uint8_t maskIndex
index of mask
struct to represent a navigation bar (PAGE_INDICATOR type) There can be up to 5 page indicators,...
nbgl_obj_t obj
common part
nbgl_page_indicator_style_t style
Style to apply.
uint8_t activePage
index of active page (from 0 to nbPages-1).
uint8_t nbPages
number of pages.
Common structure for all graphical objects.
uint16_t touchMask
bit mask to tell engine which touch events are handled by this object
struct nbgl_obj_s * parent
parent of this object
nbgl_obj_type_t type
type of the graphical object, must be explicitly set
int16_t rel_x0
horizontal position of top-left corner relative to parent's top-left corner
int16_t alignmentMarginY
vertical margin when aligning
struct nbgl_obj_s * alignTo
object to align to (parent by default)
int16_t alignmentMarginX
horizontal margin when aligning
nbgl_aligment_t alignment
type of alignment
struct to represent a progress bar (PROGRESS_BAR type)
color_t foregroundColor
color of the inner progress bar and border (if applicable)
bool withBorder
if set to true, a border in black surround the whole object
bool partialRedraw
set to true to redraw only partially the object (update state).
uint8_t state
state of the progress, in % (from 0 to 100).
struct to represent a QR code (QR_CODE type), whose size is fixed
nbgl_qrcode_version_t version
const char * text
text single line (NULL terminated)
struct to represent a radio button (RADIO_BUTTON type)
color_t activeColor
color set to to inner circle, when active.
color_t borderColor
color set to border.
nbgl_state_t state
state of the radio button. Active is when state == ON_STATE
struct to represent a "spinner", represented by the Ledger corners, in gray, with one of the corners ...
nbgl_obj_t obj
common part
struct to represent a switch (size is fixed) (SWITCH type)
color_t offColor
color set to border and knob, when OFF (knob on the left).
color_t onColor
color set to border and knob, when ON (knob on the right).
nbgl_state_t state
state of the switch.
struct to represent a text area (TEXT_AREA type)
bool wrapping
if set to true, break lines on ' ' when possible
onTextDrawCallback_t onDrawCallback
function called if not NULL to get the text of the text area
uint16_t len
number of bytes to write (if 0, max number of chars or strlen is used)
nbgl_style_t style
to define the style of border
color_t textColor
color set to '1' bits in text. '0' are set to backgroundColor color.
uint8_t token
token to use as param of onDrawCallback
nbgl_aligment_t textAlignment
alignment of text within the area
nbgl_font_id_e fontId
id of the font to use
nbgl_obj_t obj
common part
const char * text
ASCII text to draw (NULL terminated). Can be NULL.
struct to represent a text entry area (TEXT_ENTRY type)
nbgl_font_id_e fontId
id of the font to use
const char * text
text to display (up to nbChars chars).
uint8_t nbChars
number of char placeholders to display (8 or 9 chars).
nbgl_obj_t obj
common part
The low level Touchscreen event, coming from driver.
int16_t y
vertical position of the touch (or for a RELEASED the last touched point)
int16_t x
horizontal position of the touch (or for a RELEASED the last touched point)
nbgl_touchState_t state
state of the touch event, e.g PRESSED or RELEASED