func (gc *GraphicContext) Restore() {
	gc.StackGraphicContext.Restore()
}
Restore remove the current context and restore the last one
package draw2dsvg
import (
		"github.com/golang/freetype/truetype"
	"github.com/llgcode/draw2d"
	"github.com/llgcode/draw2d/draw2dbase"
	"golang.org/x/image/font"
	"golang.org/x/image/math/fixed"
	"image"
	"log"
	"math"
	"strconv"
	"strings"
)
type drawType int
const (
	filled drawType = 1 << iota
	stroked
)
type GraphicContext struct {
	*draw2dbase.StackGraphicContext
	FontCache  draw2d.FontCache
	glyphCache draw2dbase.GlyphCache
	glyphBuf   *truetype.GlyphBuf
	svg        *Svg
	DPI        int
}
func NewGraphicContext(svg *Svg) *GraphicContext {
	gc := &GraphicContext{
		draw2dbase.NewStackGraphicContext(),
		draw2d.GetGlobalFontCache(),
		draw2dbase.NewGlyphCache(),
		&truetype.GlyphBuf{},
		svg,
		92,
	}
	return gc
}
func (gc *GraphicContext) Clear() {
	gc.svg.Groups = nil
}
func (gc *GraphicContext) Stroke(paths ...*draw2d.Path) {
	gc.drawPaths(stroked, paths...)
	gc.Current.Path.Clear()
}
func (gc *GraphicContext) Fill(paths ...*draw2d.Path) {
	gc.drawPaths(filled, paths...)
	gc.Current.Path.Clear()
}
func (gc *GraphicContext) FillStroke(paths ...*draw2d.Path) {
	gc.drawPaths(filled|stroked, paths...)
	gc.Current.Path.Clear()
}
func (gc *GraphicContext) FillString(text string) (cursor float64) {
	return gc.FillStringAt(text, 0, 0)
}
func (gc *GraphicContext) FillStringAt(text string, x, y float64) (cursor float64) {
	return gc.drawString(text, filled, x, y)
}
func (gc *GraphicContext) StrokeString(text string) (cursor float64) {
	return gc.StrokeStringAt(text, 0, 0)
}
func (gc *GraphicContext) StrokeStringAt(text string, x, y float64) (cursor float64) {
	return gc.drawString(text, stroked, x, y)
}
func (gc *GraphicContext) Save() {
	gc.StackGraphicContext.Save()
}