| // +build ignore,OMIT |
| |
| package main |
| |
| import ( |
| "flag" |
| "image/png" |
| "log" |
| "os" |
| ) |
| |
| // IMPORT OMIT |
| import ( |
| "golang.org/x/talks/content/2013/bestpractices/funcdraw/drawer" |
| "golang.org/x/talks/content/2013/bestpractices/funcdraw/parser" |
| ) |
| |
| // ENDIMPORT OMIT |
| |
| var ( |
| width = flag.Int("width", 300, "image width") |
| height = flag.Int("height", 300, "image height") |
| xmin = flag.Float64("xmin", -10, "min value for x") |
| xmax = flag.Float64("xmax", 10, "max value for x") |
| ) |
| |
| func main() { |
| flag.Parse() |
| if flag.NArg() != 1 { |
| log.Fatal("missing expression to parse") |
| } |
| |
| text := flag.Arg(0) |
| // START OMIT |
| // Parse the text into an executable function. |
| f, err := parser.Parse(text) |
| if err != nil { |
| log.Fatalf("parse %q: %v", text, err) |
| } |
| |
| // Create an image plotting the function. |
| m := drawer.Draw(f, *width, *height, *xmin, *xmax) |
| |
| // Encode the image into the standard output. |
| err = png.Encode(os.Stdout, m) |
| if err != nil { |
| log.Fatalf("encode image: %v", err) |
| } |
| // END OMIT |
| } |