def __init__(self, identify_data: Union['Frame', Dict[str, str]]): if isinstance(identify_data, Frame): for k in Frame.__annotations__: setattr(self, k, getattr(identify_data, k)) else: self.gap = max(0, int(identify_data['gap']) * 10) sz, pos = identify_data['canvas'].split('+', 1) self.canvas_width, self.canvas_height = map( positive_int, sz.split('x', 1)) self.canvas_x, self.canvas_y = map(int, pos.split('+', 1)) self.width, self.height = map(positive_int, identify_data['size'].split('x', 1)) self.xdpi, self.ydpi = map(positive_float, identify_data['dpi'].split('x', 1)) self.index = positive_int(identify_data['index']) q = identify_data['transparency'].lower() self.mode = 'rgba' if q in ('blend', 'true') else 'rgb' self.needs_blend = q == 'blend' self.dispose = getattr(Dispose, identify_data['dispose'].lower()) self.dimensions_swapped = identify_data.get('orientation') in ('5', '6', '7', '8') if self.dimensions_swapped: self.canvas_width, self.canvas_height = self.canvas_height, self.canvas_width self.width, self.height = self.height, self.width
def tab_bar_min_tabs(x: str) -> int: return max(1, positive_int(x))
def window_size(val: str) -> Tuple[int, str]: val = val.lower() unit = 'cells' if val.endswith('c') else 'px' return positive_int(val.rstrip('c')), unit
def num_context_lines(self, val: str, ans: typing.Dict[str, typing.Any]) -> None: ans['num_context_lines'] = positive_int(val)