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() }
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() }