add Painter Arg
This commit is contained in:
parent
fda5c8e713
commit
f7dc650faa
4 changed files with 24 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
||||||
// Copyright 2010 The draw2d Authors. All rights reserved.
|
// Copyright 2010 The draw2d Authors. All rights reserved.
|
||||||
// created: 13/12/2010 by Laurent Le Goff
|
// created: 13/12/2010 by Laurent Le Goff
|
||||||
|
|
||||||
// The package draw2d provide a Graphic Context that can draw vectorial figure on surface.
|
// The package draw2d provide a Graphic Context that can draw vectorial figure on surface.
|
||||||
package draw2d
|
package draw2d
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -16,7 +16,7 @@ type Path interface {
|
||||||
// Add a line to the current subpath
|
// Add a line to the current subpath
|
||||||
// relative to the current point
|
// relative to the current point
|
||||||
RLineTo(dx, dy float64)
|
RLineTo(dx, dy float64)
|
||||||
|
|
||||||
QuadCurveTo(cx, cy, x, y float64)
|
QuadCurveTo(cx, cy, x, y float64)
|
||||||
RQuadCurveTo(dcx, dcy, dx, dy float64)
|
RQuadCurveTo(dcx, dcy, dx, dy float64)
|
||||||
CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64)
|
CubicCurveTo(cx1, cy1, cx2, cy2, x, y float64)
|
||||||
|
|
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue