예제 #1
0
파일: render.go 프로젝트: pauek/go-evoimage
func render(n int, expr string) {
	e, err := eimg.Read(expr)
	if err != nil {
		fmt.Println("ERROR: ", err)
		os.Exit(1)
	}
	fmt.Println(e)
	img := e.Render(Size, Samples)
	imgname := fmt.Sprintf("img%04d.png", n)
	f, err := os.Create(imgname)
	if err != nil {
		fmt.Printf("Cannot open '%s': %s", imgname, err)
		os.Exit(1)
	}
	err = png.Encode(f, img)
	if err != nil {
		fmt.Printf("Cannot encode '%s': %s", imgname, err)
		os.Exit(1)
	}
	wg.Done()
}
예제 #2
0
func Graphviz(n int, expr string) {
	// Read expression from line
	e, err := eimg.Read(expr)
	if err != nil {
		fmt.Printf("ERROR: %s\n", err)
		return
	}

	if Print {
		e.Graphviz(os.Stdout)
		return
	}

	// Write dot file
	dotfile := fmt.Sprintf("img%04d.dot", n)
	file, err := os.Create(dotfile)
	if err != nil {
		fmt.Printf("ERROR: Cannot create '%s': %s", dotfile, err)
		os.Exit(1)
	}
	e.Graphviz(file)
	file.Close()

	// invoke dot
	pngfile := fmt.Sprintf("img%04dg.png", n)
	dot := exec.Command("dot", "-Tpng", "-o", pngfile, dotfile)
	if err := dot.Run(); err != nil {
		fmt.Printf("ERROR: Cannot run 'dot -Tpng -o %s %s': %s",
			pngfile, dotfile, err)
	}

	// remove dot file
	if err := os.Remove(dotfile); err != nil {
		fmt.Printf("ERROR: Cannot delete file '%s': %s", dotfile, err)
	}

	fmt.Println(e)
	wg.Done()
}