add Painter Arg

This commit is contained in:
Laurent Le Goff 2012-05-28 09:52:49 +02:00
parent fda5c8e713
commit f7dc650faa
4 changed files with 24 additions and 6 deletions

View file

@ -39,8 +39,6 @@ func NewGraphicContext(img draw.Image) *ImageGraphicContext {
switch selectImage := img.(type) { switch selectImage := img.(type) {
case *image.RGBA: case *image.RGBA:
painter = raster.NewRGBAPainter(selectImage) painter = raster.NewRGBAPainter(selectImage)
//case *image.NRGBA:
// painter = NewNRGBAPainter(selectImage)
default: default:
panic("Image type not supported") panic("Image type not supported")
} }
@ -62,6 +60,26 @@ func NewGraphicContext(img draw.Image) *ImageGraphicContext {
return gc return gc
} }
// Create a new Graphic context from an image and a Painter (see Freetype-go)
func NewGraphicContextWithPainter(img draw.Image, painter Painter) *ImageGraphicContext {
width, height := img.Bounds().Dx(), img.Bounds().Dy()
dpi := 92
ftContext := freetype.NewContext()
ftContext.SetDPI(dpi)
ftContext.SetClip(img.Bounds())
ftContext.SetDst(img)
gc := &ImageGraphicContext{
NewStackGraphicContext(),
img,
painter,
raster.NewRasterizer(width, height),
raster.NewRasterizer(width, height),
ftContext,
dpi,
}
return gc
}
func (gc *ImageGraphicContext) SetDPI(dpi int) { func (gc *ImageGraphicContext) SetDPI(dpi int) {
gc.DPI = dpi gc.DPI = dpi
gc.freetype.SetDPI(dpi) gc.freetype.SetDPI(dpi)

View file

@ -116,7 +116,7 @@ func DrawImage(src image.Image, dest draw.Image, tr MatrixTransform, op draw.Op,
u = x u = x
v = y v = y
tr.InverseTransform(&u, &v) tr.InverseTransform(&u, &v)
if bounds.Min.X <= int(u) && bounds.Max.X > int(u) && bounds.Min.Y <= int(v) && bounds.Max.Y > int(v) { if bounds.Min.X <= int(u) && bounds.Max.X > int(u) && bounds.Min.Y <= int(v) && bounds.Max.Y > int(v) {
c1 = dest.At(int(x), int(y)) c1 = dest.At(int(x), int(y))
switch filter { switch filter {
case LinearFilter: case LinearFilter: