func (dw *DrawingWand) GetFillRule() FillRule {
	return FillRule(C.MagickDrawGetFillRule(dw.dw))
}
Returns the fill rule used while drawing polygons.
package gmagick
import (
	"runtime"
	"sync"
	"sync/atomic"
	"unsafe"
)
import "C"
type DrawingWand struct {
	dw   *C.DrawingWand
	init sync.Once
}
func newDrawingWand(cdw *C.DrawingWand) *DrawingWand {
	dw := &DrawingWand{dw: cdw}
	runtime.SetFinalizer(dw, Destroy)
	dw.IncreaseCount()
	return dw
}
func NewDrawingWand() *DrawingWand {
	return newDrawingWand(C.NewDrawingWand())
}
func (dw *DrawingWand) Clone() *DrawingWand {
	return newDrawingWand(C.CloneDrawingWand(dw.dw))
}
func (dw *DrawingWand) Destroy() {
	if dw.dw == nil {
		return
	}
	dw.init.Do(func() {
		C.DestroyDrawingWand(dw.dw)
		dw.dw = nil
		dw.DecreaseCount()
	})
}
func (dw *DrawingWand) IncreaseCount() {
	atomic.AddInt64(&drawingWandCounter, int64(1))
	unsetCanTerminate()
}
func (dw *DrawingWand) DecreaseCount() {
	atomic.AddInt64(&drawingWandCounter, int64(-1))
	setCanTerminate()
}
func (dw *DrawingWand) Affine(affine *AffineMatrix) {
	C.MagickDrawAffine(dw.dw, affine.ptr())
}
func (dw *DrawingWand) Annotation(x, y float64, text string) {
	cstext := (*C.uchar)((unsafe.Pointer)(C.CString(text)))
	defer C.free(unsafe.Pointer(cstext))
	C.MagickDrawAnnotation(dw.dw, C.double(x), C.double(y), cstext)
}
func (dw *DrawingWand) Arc(sx, sy, ex, ey, sd, ed float64) {
	C.MagickDrawArc(dw.dw, C.double(sx), C.double(sy), C.double(ex), C.double(ey), C.double(sd), C.double(ed))
}
func (dw *DrawingWand) Bezier(coordinates []PointInfo) {
	ccoordinates := [1 << 16]C.PointInfo{}
	for k, v := range coordinates {
		ccoordinates[k] = C.PointInfo{C.double(v.X), C.double(v.Y)}
	}
	C.MagickDrawBezier(dw.dw, C.ulong(len(coordinates)), (*C.PointInfo)(&ccoordinates[0]))
}
func (dw *DrawingWand) Circle(ox, oy, px, py float64) {
	C.MagickDrawCircle(dw.dw, C.double(ox), C.double(oy), C.double(px), C.double(py))
}
func (dw *DrawingWand) Composite(compose CompositeOperator, x, y, width, height float64, mw *MagickWand) {
	C.draw_composite(dw.dw, C.CompositeOperator(compose), C.double(x), C.double(y), C.double(width), C.double(height), mw.mw)
}
func (dw *DrawingWand) Color(x, y float64, pm PaintMethod) {
	C.MagickDrawColor(dw.dw, C.double(x), C.double(y), C.PaintMethod(pm))
}
func (dw *DrawingWand) Comment(comment string) {
	cscomment := C.CString(comment)
	defer C.free(unsafe.Pointer(cscomment))
	C.MagickDrawComment(dw.dw, cscomment)
}
func (dw *DrawingWand) Ellipse(ox, oy, rx, ry, start, end float64) {
	C.MagickDrawEllipse(dw.dw, C.double(ox), C.double(oy), C.double(rx), C.double(ry), C.double(start), C.double(end))
}
func (dw *DrawingWand) GetClipPath() string {
	cscp := C.MagickDrawGetClipPath(dw.dw)
	defer C.MagickRelinquishMemory(unsafe.Pointer(cscp))
	return C.GoString(cscp)
}
func (dw *DrawingWand) GetClipRule() FillRule {
	return FillRule(C.MagickDrawGetClipRule(dw.dw))
}
func (dw *DrawingWand) GetClipUnits() ClipPathUnits {
	return ClipPathUnits(C.MagickDrawGetClipUnits(dw.dw))
}
func (dw *DrawingWand) GetFillColor() (pw *PixelWand) {
	pw = NewPixelWand()
	C.MagickDrawGetFillColor(dw.dw, pw.pw)
	return
}
func (dw *DrawingWand) GetFillOpacity() float64 {
	return float64(C.MagickDrawGetFillOpacity(dw.dw))
}