#ifndef _TUI_LAYOUT_H_
#define _TUI_LAYOUT_H_

#include <stdint.h>
#include "TuiKeypad.h"
#include "tlPinpadLayout.h"
#include "tl_tui_layout.h"

extern uint32_t STANDARD_SCREEN_WIDTH_DP;
extern uint32_t STANDARD_SCREEN_HEIGHT_DP;
extern uint32_t STANDARD_SOFTKEY_HEIGHT_DP;

typedef enum EScreenType {
	SCREEN_TYPE_DEFAULT,
	SCREEN_TYPE_WINNER_SUB,
	SCREEN_TYPE_WINNER_MAIN,
    SCREEN_TYPE_TOP_SUB,
    SCREEN_TYPE_TOP_MAIN,
    SCREEN_TYPE_Q2_SUB,
    SCREEN_TYPE_Q2_MAIN
} EScreenType;

#ifdef __cplusplus
extern "C" {
#endif

    void initLayoutWith(layoutParams_t params);
    #ifdef TEST_LEGACY_LAYOUT
    bool testInitLayout(void);
    #endif
    void initLayout(void);
    void setScreenType(EScreenType type);
    EScreenType getScreenType(void);

#ifdef __cplusplus
}
#endif

extern enum DISPLAY_SUPPORT_TYPE display_type;
extern bool _SUPPORT_DISPLAY_HIDE_NOTCH;
extern uint32_t STANDARD_BOTTOM_BAR_HEIGHT_DP;

//screen
extern float SCREEN_PIX_PER_DP;
extern uint32_t SCREEN_PUNCHCUT_HEIGHT;
extern uint32_t SCREEN_WIDTH;
extern uint32_t SCREEN_HEIGHT;

extern uint32_t BACKUP_MNEMONIC_LIST_COLUMN_COUNT;
extern uint32_t BACKUP_MNEMONIC_LIST_TOP_MARGIN;
extern uint32_t BACKUP_MNEMONIC_LIST_SIDE_MARGIN;
extern uint32_t BACKUP_MNEMONIC_LIST_TEXTBOX_WIDTH;
extern uint32_t BACKUP_MNEMONIC_LIST_TEXTBOX_HEIGHT;
extern uint32_t BACKUP_MNEMONIC_LIST_NUMBER_WIDTH;
extern uint32_t BACKUP_MNEMONIC_LIST_NUMBER_DISTANCE;
extern uint32_t BACKUP_MNEMONIC_LIST_TEXTBOX_DISTANCE;
extern uint32_t BACKUP_MNEMONIC_LIST_TEXTBOX_LINE_DISTANCE;
extern uint32_t BACKUP_MNEMONIC_PHRASE_NUMBER_TEXTBOX_TOP_MARGIN;
extern uint32_t BACKUP_MNEMONIC_PHRASE_NUMBER_TEXTBOX_WIDTH;
extern uint32_t BACKUP_MNEMONIC_PHRASE_NUMBER_TEXTBOX_HEIGHT;

extern uint32_t BACKUP_QUIZ_TEXTINPUT_START_TOP_MARGIN;
extern uint32_t BACKUP_QUIZ_TEXTINPUT_LEFT_MARGIN;
extern uint32_t BACKUP_QUIZ_TEXTINPUT_WIDTH;
extern uint32_t BACKUP_QUIZ_TEXTINPUT_HEIGHT;
extern uint32_t BACKUP_QUIZ_TEXTINPUT_LINE_DISTANCE;
extern uint32_t BACKUP_QUIZ_BUTTON_START_TOP_MARGIN;
extern uint32_t BACKUP_QUIZ_BUTTON_LEFT_MARGIN;
extern uint32_t BACKUP_QUIZ_BUTTON_WIDTH;
extern uint32_t BACKUP_QUIZ_BUTTON_HEIGHT;
extern uint32_t BACKUP_QUIZ_NEXT_DISTANCE;
extern uint32_t BACKUP_QUIZ_KEYPAD_START_X;
extern uint32_t BACKUP_QUIZ_KEYPAD_START_Y;

//confirm
extern uint32_t CONFIRM_TEXT_SIDE_MARGIN;
extern uint32_t CONFIRM_TEXT_ADDRESS_TYPE_TOP_MARGIN;
extern uint32_t CONFIRM_TEXT_EXTRA_GUIDE_HEIGHT;
extern uint32_t CONFIRM_TEXT_DATA_MEMO_HEIGHT;

extern uint32_t CONFIRM_TEXT_ADDRESS_HEIGHT;
extern uint32_t CONFIRM_TEXT_2ND_ADDRESS_Y_DISTANCE;
extern uint32_t CONFIRM_TEXT_AREA_WIDTH;
extern uint32_t CONFIRM_DIVIDER_SIDE_MARGIN;
extern uint32_t CONFIRM_DIVIDER_LINE_DISTANCE;
extern uint32_t CONFIRM_DIVIDER_LINE_DISTANCE2;
extern uint32_t CONFIRM_TEXT_TOKEN_NAME_LINE_DISTANCE;
extern uint32_t CONFIRM_TEXT_TOKEN_AMOUNT_LINE_DISTANCE;
extern uint32_t CONFIRM_TEXT_AMOUNT_LINE_DISTANCE;
extern uint32_t CONFIRM_TEXT_GAS_SIDE_MARGIN;
extern uint32_t CONFIRM_TEXT_GAS_PRICE_LINE_DISTANCE;
extern uint32_t CONFIRM_TEXT_GAS_LIMIT_LINE_DISTANCE;
extern uint32_t CONFIRM_TEXT_DATA_LINE_DISTANCE;
extern uint32_t CONFIRM_TEXT_DATA_LENGTH_LINE_DISTANCE;
extern uint32_t CONFIRM_TEXT_DATA_LINE_FIXED_DISTANCE;
extern uint32_t CONFIRM_TEXT_FEE_LINE_DISTANCE;

//keypad
extern uint32_t CONTROL_KEYPAD_BUTTON_DISTANCE_WIDTH;
extern uint32_t CONTROL_KEYPAD_BUTTON_DISTANCE_HEIGHT;
extern uint32_t CONTROL_KEYPAD_BUTTON_MARGIN_WIDTH;
extern uint32_t CONTROL_KEYPAD_BUTTON_MARGIN_HEIGHT;
extern uint32_t CONTROL_KEYPAD_BUTTON_WIDTH;
extern uint32_t CONTROL_KEYPAD_BUTTON_HEIGHT;
extern uint32_t CONTROL_KEYPAD_TOP_MARGIN;
extern uint32_t CONTROL_KEYPAD_SIDE_MARGIN_LEFT;
extern uint32_t CONTROL_KEYPAD_SIDE_MARGIN_RIGHT;
extern uint32_t CONTROL_KEYPAD_BACK_SPACE_WIDTH;
extern uint32_t CONTROL_KEYPAD_BACK_SPACE_HEIGHT;

extern int32_t keypadLoctionAdjustment[CONTROL_KEYPAD_COLUMN_COUNT * 3][2];
extern int32_t backspaceLoctionAdjustment[2];

//restore
extern uint32_t RESTORE_KEYPAD_START_X;
extern uint32_t RESTORE_KEYPAD_START_Y;
extern uint32_t RESTORE_MNEMONIC_TEXTBOX_WIDTH;
extern uint32_t RESTORE_MNEMONIC_TEXTBOX_HEIGHT;
extern uint32_t RESTORE_MNEMONIC_TEXTINPUT_START_X;
extern uint32_t RESTORE_MNEMONIC_TEXTINPUT_START_Y;
extern uint32_t RESTORE_MNEMONIC_TEXTINPUT_WIDTH;
extern uint32_t RESTORE_MNEMONIC_TEXTINPUT_HEIGHT;
extern uint32_t RESTORE_MNEMONIC_TEXTINPUT_CURSOR_MARGIN;
extern uint32_t RESTORE_MNEMONIC_TEXTINPUT_LINE_START_Y;
extern uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_TOP_MARGIN;
extern uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_SIDE_MARGIN;
extern uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_WIDTH;
extern uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_HEIGHT;
extern uint32_t RESTORE_MNEMONIC_LIST_TOP_MARGIN;
extern uint32_t RESTORE_MNEMONIC_LIST_SIDE_MARGIN;
extern uint32_t RESTORE_MNEMONIC_LIST_MAX_COUNT;
extern uint32_t RESTORE_MNEMONIC_LIST_COLUMN_COUNT;
extern uint32_t RESTORE_MNEMONIC_LIST_LINE_DISTANCE;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_TOP_MARGIN;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_SIDE_MARGIN;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_COLUMN_COUNT;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_LINE_DISTANCE;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_WIDTH;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_MORE_WIDTH;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_HEIGHT;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_MORE_HEIGHT;
extern uint32_t RESTORE_MNEMONIC_RECOMMEND_LIST_COUNT;

//pinpad
extern sLayout_t g_pinpad_layout;
extern sPinPadKey_t g_softkey[SOFTKEY_SIZE];
extern sPinPadKey_t g_softkey_bhr[SOFTKEY_SIZE];
extern uint32_t g_pinbox_space;
extern uint32_t g_pinbox_width;
extern uint32_t g_pinbox_height;
extern uint32_t g_pinbox_y;

extern uint32_t PINPAD_SOFTKEY_DP;
extern uint32_t PINPAD_SOFTKEY_HEIGHT;
extern uint32_t PINPAD_BOTTOM_BAR_HEIGHT;
extern uint32_t PINPAD_KEY_WIDTH;
extern uint32_t PINPAD_KEY_HEIGHT;
extern uint32_t PINPAD_STAR_SIZE;
extern uint32_t PINPAD_HEIGHT_DP;

extern uint32_t PINPAD_COL1_LEFT_HD;
extern uint32_t PINPAD_COL1_RIGHT_HD;
extern uint32_t PINPAD_COL2_LEFT_HD;
extern uint32_t PINPAD_COL2_RIGHT_HD;
extern uint32_t PINPAD_COL3_LEFT_HD;
extern uint32_t PINPAD_COL3_RIGHT_HD;

extern uint32_t PINPAD_LINE1_TOP_HD;
extern uint32_t PINPAD_LINE1_BOTTOM_HD;
extern uint32_t PINPAD_LINE2_TOP_HD;
extern uint32_t PINPAD_LINE2_BOTTOM_HD;
extern uint32_t PINPAD_LINE3_TOP_HD;
extern uint32_t PINPAD_LINE3_BOTTOM_HD;
extern uint32_t PINPAD_LINE4_TOP_HD;
extern uint32_t PINPAD_LINE4_BOTTOM_HD;

extern uint32_t PINPAD_SOFTKEY_LEFT;
extern uint32_t PINPAD_SOFTKEY_TOP;
extern uint32_t PINPAD_SOFTKEY_BACK_LEFT;
extern uint32_t PINPAD_SOFTKEY_BACK_RIGHT;
extern uint32_t PINPAD_SOFTKEY_BACK_TOP;
extern uint32_t PINPAD_SOFTKEY_BACK_BOTTOM;
extern uint32_t PINPAD_SOFTKEY_BACK_BHR_LEFT;
extern uint32_t PINPAD_SOFTKEY_BACK_BHR_RIGHT;
extern uint32_t PINPAD_SOFTKEY_BACK_BHR_TOP;
extern uint32_t PINPAD_SOFTKEY_BACK_BHR_BOTTOM;

extern uint32_t PINPAD_STATUS_BAR_HEIGHT;
extern uint32_t PINPAD_ACTION_BAR_TOP;
extern uint32_t PINPAD_ACTION_BAR_HEIGHT;
extern uint32_t PINPAD_ACTION_BAR_TEXT_LEFT_DP;

extern uint32_t PINPAD_PIN_BOX_DISTANCE;
extern uint32_t PINPAD_PIN_BOX_WIDTH;
extern uint32_t PINPAD_PIN_BOX_HEIGHT;
extern uint32_t PINPAD_PIN_BOX_SPACE;
extern uint32_t PINPAD_PIN_BOX_IMG_WIDTH;
extern uint32_t PINPAD_PIN_BOX_IMG_HEIGHT;
extern uint32_t PINPAD_PIN_BOX_TOP;
extern uint32_t PINPAD_PIN_BOX_BOTTOM;

extern uint32_t PINPAD_PIN_TEXT_TOP;
extern uint32_t PINPAD_PIN_TEXT_BOTTOM;

extern uint32_t PINPAD_PROMPT_DISTANCE;
extern uint32_t PINPAD_PROMPT_AREA_TOP;
extern uint32_t PINPAD_PROMPT_AREA_BOTTOM;

extern uint32_t PINPAD_SECURE_ICON_WIDTH;
extern uint32_t PINPAD_SECURE_ICON_TOP;
extern uint32_t PINPAD_SECURE_ICON_TEXT_DISTANCE;
extern uint32_t PINPAD_SECURE_MODE_TEXT_TOP;

extern uint32_t PINPAD_ACTION_BAR_BACK_BUTTON_SIZE;
extern uint32_t PINPAD_ACTION_BAR_BACK_BUTTON_LEFT;
extern uint32_t PINPAD_ACTION_BAR_BACK_BUTTON_RIGHT;
extern uint32_t PINPAD_ACTION_BAR_BACK_BUTTON_TOP;
extern uint32_t PINPAD_ACTION_BAR_BACK_BUTTON_BOTTOM;

#endif // _TUI_LAYOUT_H_
