1// Copyright 2010 The draw2d Authors. All rights reserved.
2// created: 13/12/2010 by Laurent Le Goff
3
4package drawing
5
6// Transformer apply the Matrix transformation tr
7type Transformer struct {
8	Tr        Matrix
9	Flattener Flattener
10}
11
12// MoveTo implements the path builder interface.
13func (t Transformer) MoveTo(x, y float64) {
14	u := x*t.Tr[0] + y*t.Tr[2] + t.Tr[4]
15	v := x*t.Tr[1] + y*t.Tr[3] + t.Tr[5]
16	t.Flattener.MoveTo(u, v)
17}
18
19// LineTo implements the path builder interface.
20func (t Transformer) LineTo(x, y float64) {
21	u := x*t.Tr[0] + y*t.Tr[2] + t.Tr[4]
22	v := x*t.Tr[1] + y*t.Tr[3] + t.Tr[5]
23	t.Flattener.LineTo(u, v)
24}
25
26// LineJoin implements the path builder interface.
27func (t Transformer) LineJoin() {
28	t.Flattener.LineJoin()
29}
30
31// Close implements the path builder interface.
32func (t Transformer) Close() {
33	t.Flattener.Close()
34}
35
36// End implements the path builder interface.
37func (t Transformer) End() {
38	t.Flattener.End()
39}
40