aboutsummaryrefslogtreecommitdiff
path: root/cmd/ff-primitive
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-04-01 10:05:03 -0700
committerChristine Dodrill <me@christine.website>2019-04-01 10:05:28 -0700
commitf06f021f402270951f849dde7bee3f3340b8a1d5 (patch)
treebaee337aab524f162b349d254d21c2d8f2716d44 /cmd/ff-primitive
parentba91a17859267201b1d1f0e71da465b1464d940f (diff)
downloadx-f06f021f402270951f849dde7bee3f3340b8a1d5.tar.xz
x-f06f021f402270951f849dde7bee3f3340b8a1d5.zip
reorg
Diffstat (limited to 'cmd/ff-primitive')
-rw-r--r--cmd/ff-primitive/main.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/cmd/ff-primitive/main.go b/cmd/ff-primitive/main.go
new file mode 100644
index 0000000..3ee0882
--- /dev/null
+++ b/cmd/ff-primitive/main.go
@@ -0,0 +1,55 @@
+package main
+
+import (
+ "flag"
+ "image"
+ "log"
+ "os"
+ "runtime"
+ "runtime/pprof"
+
+ "github.com/Xe/x/internal"
+ "github.com/fogleman/primitive/primitive"
+ farbfeld "github.com/hullerob/go.farbfeld"
+)
+
+var (
+ shapeCount = flag.Int("count", 150, "number of shapes used")
+ repeatShapeCount = flag.Int("repeat-count", 0, "number of extra shapes drawn in each step")
+ alpha = flag.Int("alpha", 128, "alpha of all shapes")
+ cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
+)
+
+func stepImg(img image.Image, count int) image.Image {
+ bg := primitive.MakeColor(primitive.AverageImageColor(img))
+ model := primitive.NewModel(img, bg, 512, runtime.NumCPU())
+
+ for range make([]struct{}, count) {
+ model.Step(primitive.ShapeTypeTriangle, *alpha, *repeatShapeCount)
+ }
+
+ return model.Context.Image()
+}
+
+func main() {
+ internal.HandleStartup()
+
+ if *cpuprofile != "" {
+ f, err := os.Create(*cpuprofile)
+ if err != nil {
+ log.Fatal(err)
+ }
+ pprof.StartCPUProfile(f)
+ defer pprof.StopCPUProfile()
+ }
+
+ img, err := farbfeld.Decode(os.Stdin)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ err = farbfeld.Encode(os.Stdout, stepImg(img, *shapeCount))
+ if err != nil {
+ log.Fatal(err)
+ }
+}