aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--image.go26
-rw-r--r--main.go18
2 files changed, 44 insertions, 0 deletions
diff --git a/image.go b/image.go
new file mode 100644
index 0000000..fe9b67f
--- /dev/null
+++ b/image.go
@@ -0,0 +1,26 @@
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+type Pixel struct {
+ r, g, b int
+}
+
+type Frame [HEIGHT][WIDTH]Pixel
+
+func (frame Frame) Save(filename string) {
+ f, err := os.Create(filename)
+ if err != nil {
+ panic(nil)
+ }
+ defer f.Close()
+ f.WriteString(fmt.Sprintf("P3\n%d %d\n255\n", WIDTH, HEIGHT))
+ for _, row := range frame {
+ for _, pixel := range row {
+ f.WriteString(fmt.Sprintf("%d %d %d ", pixel.r, pixel.g, pixel.b))
+ }
+ }
+}
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..f8245a4
--- /dev/null
+++ b/main.go
@@ -0,0 +1,18 @@
+package main
+
+const HEIGHT = 100
+const WIDTH = 200
+
+func main() {
+ frame := Frame{}
+ for x := 0; x < HEIGHT; x++ {
+ for y := 0; y < WIDTH; y++ {
+ frame[HEIGHT-1-x][y] = Pixel{
+ r: 255 * y / WIDTH,
+ g: 255 * x / HEIGHT,
+ b: 255 * 0.2,
+ }
+ }
+ }
+ frame.Save("img.ppm")
+}