from typing import * # Card size info TOTAL_HEIGHT = 1125 TOTAL_WIDTH = 825 BLEED_MARGIN = 37.5 SAFE_MARGIN = 75 MAX_SAFE_X = TOTAL_WIDTH - SAFE_MARGIN MAX_SAFE_Y = TOTAL_HEIGHT - SAFE_MARGIN # Icon info ICON_SIZE = 125 ICON_MARGIN_LEFT = 0 ICON_MARGIN_TOP = 0 ICON_X = ICON_MARGIN_LEFT + SAFE_MARGIN ICON_Y = ICON_MARGIN_TOP + SAFE_MARGIN # Banner info BANNER_WIDTH = 75 BANNER_HEIGHT = 225 BANNER_X = ICON_X + ICON_SIZE + 10 BANNER_Y = 0 BANNER_TEXT_FONT = "\"ethnocentric 12\"" BANNER_TEXT_X = BANNER_X - 10 BANNER_TEXT_Y = BANNER_HEIGHT // 3 BANNER_TEXT_WIDTH = BANNER_WIDTH + 20 # Name info NAME_X = ICON_X + ICON_SIZE NAME_Y = SAFE_MARGIN + 10 NAME_WIDTH = MAX_SAFE_X - NAME_X NAME_HEIGHT = 125 NAME_FONT = "\"ethnocentric 11\"" NAME_WITH_BANNER_X = BANNER_X + BANNER_WIDTH NAME_WITH_BANNER_WIDTH = NAME_WIDTH - (NAME_WITH_BANNER_X - NAME_X) def central_sym(x: int, y: int) -> Tuple[int, int]: return TOTAL_WIDTH - x, TOTAL_HEIGHT - y # Alternative objects ALT_ICON_X, ALT_ICON_Y = central_sym(ICON_X, ICON_Y) ALT_BANNER_X, ALT_BANNER_Y = central_sym(BANNER_X, BANNER_Y) ALT_BANNER_TEXT_X, ALT_BANNER_TEXT_Y = central_sym(BANNER_TEXT_X, BANNER_TEXT_Y) LAYOUT: str = f""" icon: x: {ICON_X} y: {ICON_Y} width: {ICON_SIZE} height: {ICON_SIZE} alt_icon: extends: icon x: {ALT_ICON_X} y: {ALT_ICON_Y} angle: 3.14159 banner: x: {BANNER_X} y: {BANNER_Y} width: {BANNER_WIDTH} height: {BANNER_HEIGHT} banner_text: x: {BANNER_TEXT_X} y: {BANNER_TEXT_Y} width: {BANNER_TEXT_WIDTH} height: 70 font: {BANNER_TEXT_FONT} align: center # hint: blue alt_banner: extends: banner x: {ALT_BANNER_X} y: {ALT_BANNER_Y} angle: 3.14159 alt_banner_text: extends: banner_text angle: 3.14159 x: {ALT_BANNER_TEXT_X} y: {ALT_BANNER_TEXT_Y} name: x: {NAME_X} y: {NAME_Y} width: {NAME_WIDTH} height: {NAME_HEIGHT} align: center valign: middle font: {NAME_FONT} # hint: red name_with_banner: extends: name x: {NAME_WITH_BANNER_X} width: {NAME_WITH_BANNER_WIDTH} cut: x: {BLEED_MARGIN} y: {BLEED_MARGIN} width: {TOTAL_WIDTH - (2 * BLEED_MARGIN)} height: {TOTAL_HEIGHT - (2 * BLEED_MARGIN)} safe: x: {SAFE_MARGIN} y: {SAFE_MARGIN} width: {TOTAL_WIDTH - (2 * SAFE_MARGIN)} height: {TOTAL_HEIGHT - (2 * SAFE_MARGIN)} radius: 16 dash: 3 3 """ if __name__ == "__main__": open("layout.yml", "w").write(LAYOUT)