aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go')
-rw-r--r--vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go b/vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go
new file mode 100644
index 0000000..38e80e8
--- /dev/null
+++ b/vendor/github.com/llgcode/draw2d/samples/linecapjoin/linecapjoin.go
@@ -0,0 +1,52 @@
+// Copyright 2010 The draw2d Authors. All rights reserved.
+// created: 21/11/2010 by Laurent Le Goff
+
+// Package linecapjoin demonstrates the different line caps and joins.
+package linecapjoin
+
+import (
+ "image/color"
+
+ "github.com/llgcode/draw2d"
+ "github.com/llgcode/draw2d/samples"
+)
+
+// Main draws the different line caps and joins.
+// This should only be used during testing.
+func Main(gc draw2d.GraphicContext, ext string) (string, error) {
+ // Draw the line
+ const offset = 75.0
+ x := 35.0
+ caps := []draw2d.LineCap{draw2d.ButtCap, draw2d.SquareCap, draw2d.RoundCap}
+ joins := []draw2d.LineJoin{draw2d.BevelJoin, draw2d.MiterJoin, draw2d.RoundJoin}
+ for i := range caps {
+ Draw(gc, caps[i], joins[i], x, 50, x, 160, offset)
+ x += offset
+ }
+
+ // Return the output filename
+ return samples.Output("linecapjoin", ext), nil
+}
+
+// Draw a line with an angle with specified line cap and join
+func Draw(gc draw2d.GraphicContext, cap draw2d.LineCap, join draw2d.LineJoin,
+ x0, y0, x1, y1, offset float64) {
+ gc.SetLineCap(cap)
+ gc.SetLineJoin(join)
+
+ // Draw thick line
+ gc.SetStrokeColor(color.NRGBA{0x33, 0x33, 0x33, 0xFF})
+ gc.SetLineWidth(30.0)
+ gc.MoveTo(x0, y0)
+ gc.LineTo((x0+x1)/2+offset, (y0+y1)/2)
+ gc.LineTo(x1, y1)
+ gc.Stroke()
+
+ // Draw thin helping line
+ gc.SetStrokeColor(color.NRGBA{0xFF, 0x33, 0x33, 0xFF})
+ gc.SetLineWidth(2.56)
+ gc.MoveTo(x0, y0)
+ gc.LineTo((x0+x1)/2+offset, (y0+y1)/2)
+ gc.LineTo(x1, y1)
+ gc.Stroke()
+}