# coding=UTF-8 CANVAS = { 'max_long_side': 500, 'min_long_side': 20, 'max_short_side': 150, 'min_short_side': 20 } CANVAS_FRAME = { 'max_long_side': 150, 'min_long_side': 40, 'max_short_side': 150, 'min_short_side': 40, } def calculate_canvas_frame_limits(width, height): if width > height: width = min(width, CANVAS_FRAME.get('max_long_side')) width = max(width, CANVAS_FRAME.get('min_long_side')) height = min(height, CANVAS_FRAME.get('max_short_side')) height = max(height, CANVAS_FRAME.get('min_short_side')) else: height = min(height, CANVAS_FRAME.get('max_long_side')) height = max(height, CANVAS_FRAME.get('min_long_side')) width = min(width, CANVAS_FRAME.get('max_short_side')) width = max(width, CANVAS_FRAME.get('min_short_side')) # round to nearest 10 width = round(width, -1) height = round(height, -1) return width, height def calculate_canvas_limits(width, height, framed=False): if framed: return calculate_canvas_frame_limits(width, height) if width > height: width = min(width, CANVAS.get('max_long_side')) width = max(width, CANVAS.get('min_long_side')) height = min(height, CANVAS.get('max_short_side')) height = max(height, CANVAS.get('min_short_side')) else: height = min(height, CANVAS.get('max_long_side')) height = max(height, CANVAS.get('min_long_side')) width = min(width, CANVAS.get('max_short_side')) width = max(width, CANVAS.get('min_short_side')) return width, height