コード例 #1
0
ファイル: enumerate.go プロジェクト: ebering/zellij
func main() {
	flag.Parse()
	ZellijTilings, reset = zellij.TileSkeleton(skeleton, tileSymmetry, false)
	Frame := zellij.SkeletonFrame(skeleton)
	symmetryCounts := make(map[string]int)
	for T := range ZellijTilings {
		symmetryGroup := zellij.DetectSymmetryGroup(T)
		filename := fmt.Sprintf("%v-%v-%d", skeleton, symmetryGroup, symmetryCounts[symmetryGroup]+1)
		symmetryCounts[symmetryGroup]++
		save, err := os.Create(path.Join(dir, filename+".zellij"))
		if err != nil {
			panic("file error")
		}
		enc := json.NewEncoder(save)
		enc.Encode([]*quadratic.Map{Frame, T})
		save.Close()
		image := cairo.NewSurface(path.Join(dir, "svg", filename+".svg"), 72*5, 72*5)
		image.SetSourceRGB(0., 0., 0.)
		image.SetLineWidth(.1)
		image.Translate(72*2.5, 72*2.5)
		image.Scale(4., 4.)
		T.ColourFaces(image, zellij.PlainBrush)
		image.Finish()
	}
}
コード例 #2
0
ファイル: interactive.go プロジェクト: ebering/zellij
func RenderTiles(w http.ResponseWriter, req *http.Request) {
	e := os.Remove("svg/test-surface.svg")
	if e != nil {
		os.Stderr.WriteString(e.String() + "\n")
	}

	if CurrentTiling == nil {
		EmptySvg(w, req)
		return
	}

	style := req.FormValue("style")

	image := cairo.NewSurface("svg/test-surface.svg", 72*4, 72*4)
	image.SetSourceRGB(0., 0., 0.)
	image.SetLineWidth(.1)
	image.Translate(72*2., 72*2.)
	image.Scale(4., 4.)
	if style == "edges" {
		image.SetSourceRGBA(0., 0., 0., 1.)
		CurrentTiling.DrawEdges(image)
	} else if style == "plain" {
		CurrentTiling.ColourFaces(image, zellij.OrangeBlueBrush)
	} else {
		CurrentTiling.ColourDebugFaces(image)
		CurrentTiling.DrawDebugEdges(image)
	}

	image.Finish()
	http.ServeFile(w, req, "svg/test-surface.svg")
}
コード例 #3
0
ファイル: draw.go プロジェクト: patrickxb/gocairo
func main() {
	surface := cairo.NewSurface(cairo.FormatArgB32, 240, 80)
	surface.SelectFontFace("serif", cairo.FontSlantNormal, cairo.FontWeightBold)
	surface.SetFontSize(32.0)
	surface.SetSourceRGB(0.0, 0.0, 1.0)
	surface.MoveTo(10.0, 50.0)
	surface.ShowText("Hello World")
	surface.Finish()
	surface.WriteToPNG("hello.png")
}
コード例 #4
0
ファイル: interactive.go プロジェクト: ebering/zellij
func EmbellishFrame(w http.ResponseWriter, req *http.Request) {
	e := os.Remove("svg/embellishment.svg")
	if e != nil {
		os.Stderr.WriteString(e.String() + "\n")
	}
	frame := quadratic.NewMap()
	jsonErr := json.NewDecoder(strings.NewReader(req.FormValue("frame"))).Decode(frame)
	if jsonErr != nil {
		os.Stderr.WriteString("json error: " + jsonErr.String() + "\n")
		return
	}
	zig, err := zellij.Embellish(frame, MotifDatabase)
	if err != nil {
		os.Stderr.WriteString(err.String() + "\n")
		return
	}
	fmt.Fprintf(os.Stderr, "embellishment has %v faces\n", zig.Faces.Len())
	bx := zig.Verticies.At(0).(*quadratic.Vertex).Point
	tx := zig.Verticies.At(0).(*quadratic.Vertex).Point
	by := zig.Verticies.At(0).(*quadratic.Vertex).Point
	ty := zig.Verticies.At(0).(*quadratic.Vertex).Point
	for i := 1; i < zig.Verticies.Len(); i++ {
		v := zig.Verticies.At(i).(*quadratic.Vertex).Point
		if v.Y().Float64() < by.Y().Float64() {
			by = v
		} else if v.Y().Float64() > ty.Y().Float64() {
			ty = v
		}
		if v.X().Float64() < bx.X().Float64() {
			bx = v
		} else if v.X().Float64() > tx.X().Float64() {
			tx = v
		}
	}
	xwidth := math.Floor(tx.X().Float64() - bx.X().Float64() + 20.0)
	ywidth := math.Floor(ty.Y().Float64() - by.Y().Float64() + 20.0)

	image := cairo.NewSurface("svg/embellishment.svg", xwidth*4, ywidth*4)
	image.SetSourceRGB(0., 0., 0.)
	image.SetLineWidth(.1)
	image.Translate(-bx.X().Float64()*4.+40, -by.Y().Float64()*4.+40)
	image.Scale(4., 4.)
	zig.ColourFaces(image, zellij.OrangeBlueBrush)
	image.Finish()
	http.ServeFile(w, req, "svg/embellishment.svg")
}
コード例 #5
0
ファイル: interactive.go プロジェクト: ebering/zellij
func DrawSkel(w http.ResponseWriter, req *http.Request) {
	e := os.Remove("svg/test-surface.svg")
	if e != nil {
		os.Stderr.WriteString(e.String() + "\n")
	}
	skeleton := req.FormValue("skeleton")
	image := cairo.NewSurface("svg/test-surface.svg", 72*4, 72*4)
	image.SetSourceRGB(0., 0., 0.)
	image.SetLineWidth(.1)
	image.Translate(72*2., 72*2.)
	image.Scale(4., 4.)
	skel, ok := zellij.SkeletonMap(skeleton)
	if ok != nil {
		os.Stderr.WriteString(ok.String() + "\n")
	}
	skel.DrawEdges(image)
	image.Finish()
	http.ServeFile(w, req, "svg/test-surface.svg")
}