In order to prevent having multiple dependencies along different files of my project and since I might change how data will be presented, I decided to make an "interface" (not in the golang sense but in an architectural way) to the draw2d package
As I didn't need anything else, I just renamed one of the types:
type CanvasContext draw2dimg.GraphicContext
In one of my modules I had the following code (path is a CanvasContext variable):
// initialization and some code omitted for clarity
path.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff})
path.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff})
path.SetLineWidth(5)
// some more code here
path.Close()
path.FillStroke()
Among all those method calls on path, only the FillStroke failed with the compile error:
path.FillStroke undefined (type *drawing.CanvasContext has no field or method FillStroke)
In order to prevent it I have to redefine the FillStroke, but not any other method, with:
func (cc *CanvasContext) FillStroke() {
gc := draw2dimg.GraphicContext(*cc)
gc.FillStroke()
}
Why do I have to redefine only that one and not any of the other calls?