From aee8e4254170c7102279191642d742855f765c6a Mon Sep 17 00:00:00 2001 From: Stani Date: Fri, 10 Jul 2015 02:15:00 +0200 Subject: [PATCH] add sample: linecapjoin --- samples/linecapjoin/linecapjoin.go | 54 ++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 samples/linecapjoin/linecapjoin.go diff --git a/samples/linecapjoin/linecapjoin.go b/samples/linecapjoin/linecapjoin.go new file mode 100644 index 0000000..6acf659 --- /dev/null +++ b/samples/linecapjoin/linecapjoin.go @@ -0,0 +1,54 @@ +// 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.Cap{draw2d.ButtCap, draw2d.SquareCap, draw2d.RoundCap} + joins := []draw2d.Join{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.Cap, join draw2d.Join, + x0, y0, x1, y1, offset float64) { + gc.Save() // pdf: save & restore needed to isolate caps and joins + 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() + gc.Restore() +}