From 683c6ff4858edae5b10ed6cca142674752d28977 Mon Sep 17 00:00:00 2001 From: Joris Vincent Date: Tue, 2 Aug 2022 10:53:03 +0200 Subject: [PATCH] Function for resolve resolution from 2 knowns --- stimuli/utils/sizes.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/stimuli/utils/sizes.py b/stimuli/utils/sizes.py index 5a2d5fd0..13dd11dc 100644 --- a/stimuli/utils/sizes.py +++ b/stimuli/utils/sizes.py @@ -9,6 +9,35 @@ class ResolutionError(ValueError): pass +def resolve(shape=None, visual_size=None, ppd=None): + # TODO: make 2D + n_unknowns = ( + (shape is None or shape == (None, None)) + + (visual_size is None or visual_size == (None, None)) + + (ppd is None or ppd == (None, None)) + ) + if n_unknowns > 1: + raise ValueError( + f"Too many unkowns to resolve resolution; {visual_size},{shape},{ppd}" + ) + elif n_unknowns == 0: + valid_resolution(shape=shape, visual_size=visual_size, ppd=ppd) + else: # 1 unknown + if shape is None or shape == (None, None): + shape = shape_from_visual_size_ppd(visual_size=visual_size, ppd=ppd) + elif visual_size is None or visual_size == (None, None): + visual_size = visual_size_from_shape_ppd(shape=shape, ppd=ppd) + elif ppd is None or ppd == (None, None): + ppd = ppd_from_shape_visual_size(shape=shape, visual_size=visual_size) + + shape = validate_shape(shape) + ppd = validate_ppd(ppd) + visual_size = validate_visual_size(visual_size) + valid_resolution(shape=shape, visual_size=visual_size, ppd=ppd) + + return shape, visual_size, ppd + + def valid_resolution(shape, visual_size, ppd): shape = validate_shape(shape) ppd = validate_ppd(ppd)