svg.py 902 B

123456789101112131415161718192021222324252627282930
  1. import re
  2. def ctrans(svg, pfrom, pto):
  3. res = svg
  4. for centry, ccol in pfrom.items():
  5. cr = ccol + ';'
  6. cro = pto.get(centry)
  7. if not cro:
  8. continue
  9. cro += ';'
  10. res = re.sub(cr, cro, res, flags=re.IGNORECASE)
  11. if (cr[1], cr[3], cr[5]) == (cr[2], cr[4], cr[6]):
  12. cr = cr[0:1] + cr[3] + cr[5] + ';'
  13. res = re.sub(cr, cro, res, flags=re.IGNORECASE)
  14. return res
  15. def license(svg, license_data):
  16. svgidx = svg.index('<svg')
  17. insidx = svg.index('>', svgidx) + 1
  18. metastr = '\n<metadata>\n' + license_data + '</metadata>\n'
  19. return svg[:insidx] + metastr + svg[insidx:]
  20. def size(svg):
  21. try:
  22. x1, y1, x2, y2 = list(map(
  23. int, svg[svg.index('viewBox'):].split('"', 2)[1].split()))
  24. return x2 - x1, y2 - y1
  25. except Exception:
  26. raise ValueError('Could not detect image size')