File size: 1,214 Bytes
f4a41d8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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'