@@ -3,8 +3,9 @@ package maprenderer
33import (
44 "image"
55 "image/color"
6- "image/draw"
76 "sort"
7+
8+ "github.com/fogleman/gg"
89)
910
1011func NewIsoRenderer (cr ColorResolver , na NodeAccessor , cubesize int ) (* IsoRenderer , error ) {
@@ -78,29 +79,34 @@ func (r *IsoRenderer) Render(from, to *Pos) (image.Image, error) {
7879 return nodes [i ].Order < nodes [j ].Order
7980 })
8081
81- // prepare image
82- //dc := gg.NewContext(600, 600) //TODO
83-
8482 size := to .Subtract (from ).Add (NewPos (1 , 1 , 1 ))
8583 size_x , size_y := GetIsometricImageSize (size , r .cubesize )
86- img := image .NewRGBA (image .Rect (0 , 0 , size_x , size_y ))
84+
85+ // prepare image
86+ dc := gg .NewContext (size_x , size_y )
8787
8888 for _ , node := range nodes {
8989 rel_pos := node .Pos .Subtract (from )
9090 x , y := GetImagePos (rel_pos , size , size_x , size_y , r .cubesize )
9191
92- cube_img := r .rc .GetCachedIsoCubeImage (node .RGBA , r .cubesize )
93- p1 := image.Point {X : int (x ), Y : int (y )}
94- r := image.Rectangle {
95- p1 , p1 .Add (cube_img .Bounds ().Size ()),
96- }
92+ // uncached draw
93+ DrawCube (dc , node .RGBA , r .cubesize , x , y )
94+
95+ // cached draw
96+ /*
97+ cube_img := r.rc.GetCachedIsoCubeImage(node.RGBA, r.cubesize)
98+ p1 := image.Point{X: int(x), Y: int(y)}
99+ r := image.Rectangle{
100+ p1, p1.Add(cube_img.Bounds().Size()),
101+ }
97102
98- // NOTE: the native "draw.Draw" function doesn't work with transparency
99- draw .Draw (img , r , cube_img , image.Point {0 , 0 }, draw .Over )
100- //dc.DrawImage(cube_img, int(math.Floor(x)), int(math.Floor(y)))
103+ // NOTE: the native "draw.Draw" function doesn't work with transparency
104+ draw.Draw(img, r, cube_img, image.Point{0, 0}, draw.Over)
105+ //dc.DrawImage(cube_img, int(math.Floor(x)), int(math.Floor(y)))
106+ */
101107 }
102108
103- return img , nil
109+ return dc . Image () , nil
104110}
105111
106112func (r * IsoRenderer ) searchNode (pos , direction , base_pos * Pos , bounds [2 ]* Pos ) (* IsometricNode , error ) {
0 commit comments