kopia lustrzana https://github.com/inkstitch/inkstitch
preserveAspectRatio (#641)
rodzic
5c450ab13b
commit
a1c2139521
|
@ -127,6 +127,17 @@ def get_viewbox_transform(node):
|
|||
try:
|
||||
sx = doc_width / float(viewbox[2])
|
||||
sy = doc_height / float(viewbox[3])
|
||||
|
||||
# preserve aspect ratio
|
||||
aspect_ratio = node.get('preserveAspectRatio', 'xMidYMid meet')
|
||||
if aspect_ratio != 'none':
|
||||
unit = parse_length_with_units(node.get('width'))[1]
|
||||
if float(viewbox[2]) > parse_length_with_units(node.get('width'))[0]:
|
||||
sx = convert_length(viewbox[2] + unit) / float(viewbox[2]) if 'slice' in aspect_ratio else 1.0
|
||||
if float(viewbox[3]) > parse_length_with_units(node.get('height'))[0]:
|
||||
sy = convert_length(viewbox[3] + unit) / float(viewbox[3]) if 'slice' in aspect_ratio else 1.0
|
||||
sx = sy = max(sx, sy) if 'slice' in aspect_ratio else min(sx, sy)
|
||||
|
||||
scale_transform = simpletransform.parseTransform("scale(%f, %f)" % (sx, sy))
|
||||
transform = simpletransform.composeTransform(transform, scale_transform)
|
||||
except ZeroDivisionError:
|
||||
|
|
Ładowanie…
Reference in New Issue