#include "TuiLayout.h"
#include "TuiRotation.h"

#if defined(W1536)
#include "TuiLayout_w1536.h"
#elif defined(DPI640)
#include "TuiLayout_w1440.h"
#elif defined(DPI480)
#include "TuiLayout_w1080.h"
#elif defined(DPI320)
#include "TuiLayout_w720.h"
#else
#include "TuiLayout_w1080.h"
#endif

uint32_t BACKUP_MNEMONIC_LIST_COLUMN_COUNT;
uint32_t BACKUP_MNEMONIC_LIST_TOP_MARGIN;
uint32_t BACKUP_MNEMONIC_LIST_SIDE_MARGIN;
uint32_t BACKUP_MNEMONIC_LIST_TEXTBOX_HEIGHT;
uint32_t BACKUP_MNEMONIC_LIST_NUMBER_WIDTH;
uint32_t BACKUP_MNEMONIC_LIST_NUMBER_DISTANCE;
uint32_t BACKUP_MNEMONIC_LIST_TEXTBOX_DISTANCE;
uint32_t BACKUP_MNEMONIC_LIST_TEXTBOX_LINE_DISTANCE;

uint32_t BACKUP_QUIZ_TEXTINPUT_START_TOP_MARGIN;
uint32_t BACKUP_QUIZ_TEXTINPUT_LEFT_MARGIN;
uint32_t BACKUP_QUIZ_TEXTINPUT_WIDTH;
uint32_t BACKUP_QUIZ_TEXTINPUT_HEIGHT;
uint32_t BACKUP_QUIZ_TEXTINPUT_LINE_DISTANCE;
uint32_t BACKUP_QUIZ_BUTTON_START_TOP_MARGIN;
uint32_t BACKUP_QUIZ_BUTTON_LEFT_MARGIN;
uint32_t BACKUP_QUIZ_BUTTON_WIDTH;
uint32_t BACKUP_QUIZ_BUTTON_HEIGHT;
uint32_t BACKUP_QUIZ_NEXT_DISTANCE;
uint32_t BACKUP_QUIZ_KEYPAD_START_X;
uint32_t BACKUP_QUIZ_KEYPAD_START_Y;

//confirm
uint32_t CONFIRM_TEXT_SIDE_MARGIN;
uint32_t CONFIRM_TEXT_ADDRESS_TOP_MARGIN;
uint32_t CONFIRM_TEXT_ADDRESS_HEIGHT;
uint32_t CONFIRM_TEXT_2ND_ADDRESS_Y_DISTANCE;
uint32_t CONFIRM_TEXT_AREA_WIDTH;
uint32_t CONFIRM_DIVIDER_SIDE_MARGIN;
uint32_t CONFIRM_DIVIDER_LINE_DISTANCE;
uint32_t CONFIRM_DIVIDER_LINE_DISTANCE2;
uint32_t CONFIRM_TEXT_TOKEN_NAME_LINE_DISTANCE;
uint32_t CONFIRM_TEXT_TOKEN_AMOUNT_LINE_DISTANCE;
uint32_t CONFIRM_TEXT_AMOUNT_LINE_DISTANCE;
uint32_t CONFIRM_TEXT_GAS_SIDE_MARGIN;
uint32_t CONFIRM_TEXT_GAS_PRICE_LINE_DISTANCE;
uint32_t CONFIRM_TEXT_GAS_LIMIT_LINE_DISTANCE;
uint32_t CONFIRM_TEXT_DATA_LINE_DISTANCE;
uint32_t CONFIRM_TEXT_DATA_LENGTH_LINE_DISTANCE;
uint32_t CONFIRM_TEXT_DATA_LINE_FIXED_DISTANCE;

//keypad
uint32_t CONTROL_KEYPAD_BUTTON_DISTANCE_WIDTH;
uint32_t CONTROL_KEYPAD_BUTTON_DISTANCE_HEIGHT;
uint32_t CONTROL_KEYPAD_BUTTON_MARGIN_WIDTH;
uint32_t CONTROL_KEYPAD_BUTTON_MARGIN_HEIGHT;
uint32_t CONTROL_KEYPAD_BUTTON_WIDTH;
uint32_t CONTROL_KEYPAD_BUTTON_HEIGHT;
uint32_t CONTROL_KEYPAD_TOP_MARGIN;
uint32_t CONTROL_KEYPAD_SIDE_MARGIN_LEFT;
uint32_t CONTROL_KEYPAD_SIDE_MARGIN_RIGHT;
uint32_t CONTROL_KEYPAD_BACK_SPACE_WIDTH;
uint32_t CONTROL_KEYPAD_BACK_SPACE_HEIGHT;

//restore
uint32_t RESTORE_KEYPAD_START_X;
uint32_t RESTORE_KEYPAD_START_Y;
uint32_t RESTORE_MNEMONIC_TEXTBOX_WIDTH;
uint32_t RESTORE_MNEMONIC_TEXTBOX_HEIGHT;
uint32_t RESTORE_MNEMONIC_TEXTINPUT_START_X;
uint32_t RESTORE_MNEMONIC_TEXTINPUT_START_Y;
uint32_t RESTORE_MNEMONIC_TEXTINPUT_WIDTH;
uint32_t RESTORE_MNEMONIC_TEXTINPUT_HEIGHT;
uint32_t RESTORE_MNEMONIC_TEXTINPUT_CURSOR_MARGIN;
uint32_t RESTORE_MNEMONIC_TEXTINPUT_LINE_START_Y;
uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_TOP_MARGIN;
uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_SIDE_MARGIN;
uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_WIDTH;
uint32_t RESTORE_MNEMONIC_LIST_TEXT_AREA_HEIGHT;
uint32_t RESTORE_MNEMONIC_LIST_TOP_MARGIN;
uint32_t RESTORE_MNEMONIC_LIST_SIDE_MARGIN;
uint32_t RESTORE_MNEMONIC_LIST_MAX_COUNT;
uint32_t RESTORE_MNEMONIC_LIST_COLUMN_COUNT;
uint32_t RESTORE_MNEMONIC_LIST_LINE_DISTANCE;
uint32_t RESTORE_MNEMONIC_RECOMMEND_TOP_MARGIN;
uint32_t RESTORE_MNEMONIC_RECOMMEND_SIDE_MARGIN;
uint32_t RESTORE_MNEMONIC_RECOMMEND_COLUMN_COUNT;
uint32_t RESTORE_MNEMONIC_RECOMMEND_LINE_DISTANCE;
uint32_t RESTORE_MNEMONIC_RECOMMEND_WIDTH;
uint32_t RESTORE_MNEMONIC_RECOMMEND_HEIGHT;

//screen
float SCREEN_PIX_PER_DP;
uint32_t SCREEN_PUNCHCUT_HEIGHT;
uint32_t SCREEN_WIDTH;
uint32_t SCREEN_HEIGHT;

int32_t keypadLoctionAdjustment[CONTROL_KEYPAD_COLUMN_COUNT * 3][2];
int32_t backspaceLoctionAdjustment[2];

static EScreenType gScreenType = SCREEN_TYPE_DEFAULT;

void initLayout() {
	setScreenType(SCREEN_TYPE_DEFAULT);
#if defined(W1536)
	setRotationType(CLOCKWISE_ROTATION_TYPE);
	initLayoutW1536();
#elif defined(DPI320)
	initLayoutW720();
#elif defined(DPI480)
	initLayoutW1080();
#elif defined(DPI640)
	initLayoutW1440();
#endif
}

void setScreenType(EScreenType type) {
	gScreenType = type;
}

EScreenType getScreenType() {
	return gScreenType;
}