aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go')
-rw-r--r--vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go b/vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go
new file mode 100644
index 0000000..49832cf
--- /dev/null
+++ b/vendor/github.com/llgcode/draw2d/draw2dpdf/path_converter.go
@@ -0,0 +1,44 @@
+// Copyright 2015 The draw2d Authors. All rights reserved.
+// created: 26/06/2015 by Stani Michiels
+
+package draw2dpdf
+
+import (
+ "math"
+
+ "github.com/llgcode/draw2d"
+)
+
+const deg = 180 / math.Pi
+
+// ConvertPath converts a paths to the pdf api
+func ConvertPath(path *draw2d.Path, pdf Vectorizer) {
+ var startX, startY float64 = 0, 0
+ i := 0
+ for _, cmp := range path.Components {
+ switch cmp {
+ case draw2d.MoveToCmp:
+ startX, startY = path.Points[i], path.Points[i+1]
+ pdf.MoveTo(startX, startY)
+ i += 2
+ case draw2d.LineToCmp:
+ pdf.LineTo(path.Points[i], path.Points[i+1])
+ i += 2
+ case draw2d.QuadCurveToCmp:
+ pdf.CurveTo(path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3])
+ i += 4
+ case draw2d.CubicCurveToCmp:
+ pdf.CurveBezierCubicTo(path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3], path.Points[i+4], path.Points[i+5])
+ i += 6
+ case draw2d.ArcToCmp:
+ pdf.ArcTo(path.Points[i], path.Points[i+1], path.Points[i+2], path.Points[i+3],
+ 0, // degRotate
+ path.Points[i+4]*deg, // degStart = startAngle
+ (path.Points[i+4]-path.Points[i+5])*deg) // degEnd = startAngle-angle
+ i += 6
+ case draw2d.CloseCmp:
+ pdf.LineTo(startX, startY)
+ pdf.ClosePath()
+ }
+ }
+}