]> Cypherpunks repositories - gostls13.git/commitdiff
image: make Rectangle implement Image.
authorNigel Tao <nigeltao@golang.org>
Tue, 3 Mar 2015 01:59:23 +0000 (12:59 +1100)
committerNigel Tao <nigeltao@golang.org>
Wed, 4 Mar 2015 00:03:46 +0000 (00:03 +0000)
Change-Id: I01e328fc3644b679bacf2209c3d7ade9d8bffe53
Reviewed-on: https://go-review.googlesource.com/6551
Reviewed-by: Rob Pike <r@golang.org>
src/image/geom.go

index 70e3ff0288dabfbefa676d02ac9d9296dde48212..e1cd4dc1e3e0980cf7ca152ac13caba83095399a 100644 (file)
@@ -5,6 +5,7 @@
 package image
 
 import (
+       "image/color"
        "strconv"
 )
 
@@ -77,6 +78,10 @@ func Pt(X, Y int) Point {
 // It is well-formed if Min.X <= Max.X and likewise for Y. Points are always
 // well-formed. A rectangle's methods always return well-formed outputs for
 // well-formed inputs.
+//
+// A Rectangle is also an Image whose bounds are the rectangle itself. At
+// returns color.Opaque for points in the rectangle and color.Transparent
+// otherwise.
 type Rectangle struct {
        Min, Max Point
 }
@@ -226,6 +231,24 @@ func (r Rectangle) Canon() Rectangle {
        return r
 }
 
+// At implements the Image interface.
+func (r Rectangle) At(x, y int) color.Color {
+       if (Point{x, y}).In(r) {
+               return color.Opaque
+       }
+       return color.Transparent
+}
+
+// Bounds implements the Image interface.
+func (r Rectangle) Bounds() Rectangle {
+       return r
+}
+
+// ColorModel implements the Image interface.
+func (r Rectangle) ColorModel() color.Model {
+       return color.Alpha16Model
+}
+
 // ZR is the zero Rectangle.
 var ZR Rectangle