from enum import IntEnum from typing import Tuple class Position(IntEnum): TOP_LEFT = 1 TOP_CENTER = 2 TOP_RIGHT = 3 CENTER_LEFT = 4 CENTER = 5 CENTER_RIGHT = 6 BOTTOM_LEFT = 7 BOTTOM_CENTER = 8 BOTTOM_RIGHT = 9 def align(bounds: Tuple[int, int], inner_box: Tuple[int, int], position: Position, padding: int = 0) -> Tuple[int, int]: x, y = 0, 0 if position in (Position.TOP_LEFT, Position.TOP_CENTER, Position.TOP_RIGHT): y = padding elif position in (Position.BOTTOM_LEFT, Position.BOTTOM_CENTER, Position.BOTTOM_RIGHT): y = bounds[1] - inner_box[1] - padding else: y = (bounds[1] - inner_box[1]) // 2 if position in (Position.TOP_LEFT, Position.CENTER_LEFT, Position.BOTTOM_LEFT): x = padding elif position in (Position.TOP_RIGHT, Position.CENTER_RIGHT, Position.BOTTOM_RIGHT): x = bounds[0] - inner_box[0] - padding else: x = (bounds[0] - inner_box[0]) // 2 return (x, y) def getTextAlignFromPosition(position: Position) -> str: if position in (Position.TOP_RIGHT, Position.CENTER_RIGHT, Position.BOTTOM_RIGHT): return 'right' if position in (Position.TOP_CENTER, Position.CENTER, Position.BOTTOM_CENTER): return 'center' return 'left'