func Grid(canvas *pdf.Canvas, x, y, w, h, step float64) {
	canvas.Push()
	canvas.SetColor(0.75, 0.75, 0.75)
	canvas.Translate(unit(x), unit(y))

	rowCount := int(math.Floor(h / step))

	for row := 0; row < rowCount; row++ {
		bottom := float64(row) * step
		top := bottom + step

		start := 0.0
		if row%2 == 0 {
			start += step
		}
		for left := start; left < w; left += (2 * step) {
			right := left + step
			bottomLeft := point(left, bottom)
			topRight := point(right, top)
			path := new(pdf.Path)
			path.Rectangle(pdf.Rectangle{bottomLeft, topRight})
			canvas.Fill(path)
		}
	}

	canvas.Pop()
}
Exemple #2
0
func traceCurve(a, b, c, d pdf.Point, canvas *pdf.Canvas) {
	path := new(pdf.Path)
	path.Move(a)
	path.Curve(b, c, d)

	canvas.Stroke(path)
}
Exemple #3
0
func EngraveStaff(origin pdf.Point, width, height, lineWidth pdf.Unit, canvas *pdf.Canvas) {
	path := new(pdf.Path)

	noteHeight := pdf.Unit(height / 4)
	for i := 0; i < 5; i++ {
		path.Move(origin)
		path.Line(pdf.Point{origin.X + width, origin.Y})
		origin.Y = origin.Y + noteHeight
	}

	canvas.Push()
	canvas.SetLineWidth(lineWidth)
	canvas.Stroke(path)
	canvas.Pop()
}
Exemple #4
0
func EngraveSurrogateNoteHead(origin pdf.Point, size pdf.Unit, canvas *pdf.Canvas) {
	outline := new(pdf.Path)

	topRight := pdf.Point{origin.X + size, origin.Y + size}
	outline.Rectangle(pdf.Rectangle{origin, topRight})

	mid := pdf.Point{origin.X + pdf.Unit(size/2), origin.Y + pdf.Unit(size/2)}
	midPoints := new(pdf.Path)
	midPoints.Move(pdf.Point{mid.X, origin.Y})
	midPoints.Line(pdf.Point{mid.X, origin.Y + size})
	midPoints.Move(pdf.Point{origin.X, mid.Y})
	midPoints.Line(pdf.Point{origin.X + size, mid.Y})

	canvas.Push()
	canvas.SetColor(0.6, 0.6, 0.6)
	canvas.Fill(outline)
	canvas.SetLineWidth(pdf.Unit(0.1))
	canvas.Stroke(midPoints)
	canvas.Pop()
}