Programmatically generate SVG (vector) images, animations, and interactive Jupyter widgets

Bug fixes

Changed files
+8 -6
drawSvg
+1
drawSvg/defs.py
···
class FilterItem(DrawingDefSub):
''' A child of Filter with any tag name'''
+
hasContent = False
def __init__(self, tag_name, **args):
super().__init__(**args)
self.TAG_NAME = tag_name
+5 -4
drawSvg/drawing.py
···
if k[-1] == '-':
k = k[:-1]
self.svgArgs[k] = v
+
self.idIndex = 0
def setRenderSize(self, w=None, h=None):
self.renderWidth = w
self.renderHeight = h
···
else:
return self.renderWidth, self.renderHeight
def draw(self, obj, **kwargs):
+
if obj is None:
+
return
if not hasattr(obj, 'writeSvgElement'):
elements = obj.toDrawables(elements=elementsModule, **kwargs)
else:
···
elementsModule.writeXmlNodeArgs(self.svgArgs, outputFile)
outputFile.write('>\n<defs>\n')
# Write definition elements
-
idIndex = 0
def idGen(base=''):
-
nonlocal idIndex
-
idStr = self.idPrefix + base + str(idIndex)
-
idIndex += 1
+
idStr = self.idPrefix + base + str(self.idIndex)
+
self.idIndex += 1
return idStr
prevSet = set((id(defn) for defn in self.otherDefs))
def isDuplicate(obj):
+2 -2
drawSvg/elements.py
···
'.jpeg':'image/jpeg',
'.jpg': 'image/jpeg',
'.png': 'image/png',
+
'.svg': 'image/svg+xml',
'.tif': 'image/tiff',
'.tiff':'image/tiff',
'.pdf': 'application/pdf',
···
Warning)
if mimeType is None:
mimeType = self.MIME_DEFAULT
-
warnings.warn('Unspecified image type; assuming png'.format(ext),
-
Warning)
+
warnings.warn('Unspecified image type; assuming png', Warning)
if data is not None:
embed = True
if embed and data is None: