preserveAspectRatio (#641)

pull/645/head
Kaalleen 2020-03-28 11:18:52 +01:00 zatwierdzone przez GitHub
rodzic 5c450ab13b
commit a1c2139521
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 11 dodań i 0 usunięć

Wyświetl plik

@ -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: