kopia lustrzana https://github.com/inkstitch/inkstitch
preserveAspectRatio (#641)
rodzic
5c450ab13b
commit
a1c2139521
|
@ -127,6 +127,17 @@ def get_viewbox_transform(node):
|
||||||
try:
|
try:
|
||||||
sx = doc_width / float(viewbox[2])
|
sx = doc_width / float(viewbox[2])
|
||||||
sy = doc_height / float(viewbox[3])
|
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))
|
scale_transform = simpletransform.parseTransform("scale(%f, %f)" % (sx, sy))
|
||||||
transform = simpletransform.composeTransform(transform, scale_transform)
|
transform = simpletransform.composeTransform(transform, scale_transform)
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
|
|
Ładowanie…
Reference in New Issue