1'''
2A library for creating SVG files or just drawings that can be displayed in
3iPython notebooks
4
5Example:
6```
7 d = draw.Drawing(200, 100, origin='center')
8
9 d.append(draw.Lines(-80, -45,
10 70, -49,
11 95, 49,
12 -90, 40,
13 close=False,
14 fill='#eeee00',
15 stroke='black'))
16
17 d.append(draw.Rectangle(0,0,40,50, fill='#1248ff'))
18 d.append(draw.Circle(-40, -10, 30,
19 fill='red', stroke_width=2, stroke='black'))
20
21 p = draw.Path(stroke_width=2, stroke='green',
22 fill='black', fill_opacity=0.5)
23 p.M(-30,5) # Start path at point (-30, 5)
24 p.l(60,30) # Draw line to (60, 30)
25 p.h(-70) # Draw horizontal line to x=-70
26 p.Z() # Draw line to start
27 d.append(p)
28
29 d.append(draw.ArcLine(60,-20,20,60,270,
30 stroke='red', stroke_width=5, fill='red', fill_opacity=0.2))
31 d.append(draw.Arc(60,-20,20,60,270,cw=False,
32 stroke='green', stroke_width=3, fill='none'))
33 d.append(draw.Arc(60,-20,20,270,60,cw=True,
34 stroke='blue', stroke_width=1, fill='black', fill_opacity=0.3))
35
36 d.setPixelScale(2) # Set number of pixels per geometry unit
37 #d.setRenderSize(400,200) # Alternative to setPixelScale
38 d.saveSvg('example.svg')
39 d.savePng('example.png')
40
41 # Display in iPython notebook
42 d.rasterize() # Display as PNG
43 d # Display as SVG
44```
45'''
46
47from .defs import *
48from .raster import Raster
49from .drawing import Drawing
50from .elements import *
51from .video import (
52 render_svg_frames,
53 save_video,
54)
55from .animation import (
56 Animation,
57 animate_video,
58 animate_jupyter,
59)
60
61
62# Make all elements available in the elements module
63from . import defs
64from . import elements
65def registerElement(name, elem):
66 setattr(elements, name, elem)
67elementsDir = dir(elements)
68for k in dir(defs):
69 if k.startswith('_'): continue
70 if k in elementsDir: continue
71 registerElement(k, getattr(defs, k))
72