From: Nigel Tao Date: Tue, 3 Mar 2015 01:59:23 +0000 (+1100) Subject: image: make Rectangle implement Image. X-Git-Tag: go1.5beta1~1731 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=848e2feac68be7b97e36d0064c28be7a850b033d;p=gostls13.git image: make Rectangle implement Image. Change-Id: I01e328fc3644b679bacf2209c3d7ade9d8bffe53 Reviewed-on: https://go-review.googlesource.com/6551 Reviewed-by: Rob Pike --- diff --git a/src/image/geom.go b/src/image/geom.go index 70e3ff0288..e1cd4dc1e3 100644 --- a/src/image/geom.go +++ b/src/image/geom.go @@ -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