Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Rect:
- x_fns = {
- frozenset(('left', 'right')): lambda d: (d['left'], d['right']),
- frozenset(('left', 'width')): lambda d: (d['left'], d['left'] + d['width']),
- frozenset(('left', 'center_x')): lambda d: (d['left'], d['center_x'] * 2 - d['left']),
- ...: ...
- }
- y_fns = {
- frozenset(('top', 'bottom')): lambda d: (d['top'], d['right']),
- frozenset(('top', 'height')): lambda d: (d['top'], d['top'] + d['height']),
- frozenset(('top', 'center_y')): lambda d: (d['top'], d['center_y'] * 2 - d['top']),
- ...: ...
- }
- @classmethod
- def resolve(cls, **kwargs):
- ret = cls()
- x_key = frozenset(v for v in "left right center_x width".split() if v in kwargs)
- ret.left, ret.right = cls.x_fns[x_key](kwargs)
- y_key = frozenset(v for v in "top bottom center_y height".split() if v in kwargs)
- ret.top, ret.bottom = cls.y_fns[y_key](kwargs)
- return ret
- r = Rect.resolve(center_x=200, left=50, center_y=200, top=50)
- print(vars(r))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement