draw: remove Go 1.8 support
This change removes support for Go 1.8 and older, as they're no longer
supported per release policy¹.
This brings back a simpler file layout that was here prior to CL 36730,
but keeps using type aliases for the exported names from the standard
library's image/draw package.
Don't keep the comment motivating type alias use, since that feature is
no longer new, and commonly understood by now.
¹ https://tip.golang.org/doc/devel/release.html#policy
Change-Id: I5fab71162cf6daa5985a048ed06011efacddf886
Reviewed-on: https://go-review.googlesource.com/c/148567
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/draw/draw.go b/draw/draw.go
index dfaa7fc..cd5aaba 100644
--- a/draw/draw.go
+++ b/draw/draw.go
@@ -11,9 +11,8 @@
// package in the standard library.
package draw
-// This file, and the go1_*.go files, just contains the API exported by the
-// image/draw package in the standard library. Other files in this package
-// provide additional features.
+// This file just contains the API exported by the image/draw package in the
+// standard library. Other files in this package provide additional features.
import (
"image"
@@ -32,6 +31,9 @@
draw.DrawMask(dst, r, src, sp, mask, mp, draw.Op(op))
}
+// Drawer contains the Draw method.
+type Drawer = draw.Drawer
+
// FloydSteinberg is a Drawer that is the Src Op with Floyd-Steinberg error
// diffusion.
var FloydSteinberg Drawer = floydSteinberg{}
@@ -41,3 +43,19 @@
func (floydSteinberg) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point) {
draw.FloydSteinberg.Draw(dst, r, src, sp)
}
+
+// Image is an image.Image with a Set method to change a single pixel.
+type Image = draw.Image
+
+// Op is a Porter-Duff compositing operator.
+type Op = draw.Op
+
+const (
+ // Over specifies ``(src in mask) over dst''.
+ Over Op = draw.Over
+ // Src specifies ``src in mask''.
+ Src Op = draw.Src
+)
+
+// Quantizer produces a palette for an image.
+type Quantizer = draw.Quantizer
diff --git a/draw/go1_8.go b/draw/go1_8.go
deleted file mode 100644
index ec192b7..0000000
--- a/draw/go1_8.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.9,!go1.8.typealias
-
-package draw
-
-import (
- "image"
- "image/color"
- "image/draw"
-)
-
-// Drawer contains the Draw method.
-type Drawer interface {
- // Draw aligns r.Min in dst with sp in src and then replaces the
- // rectangle r in dst with the result of drawing src on dst.
- Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point)
-}
-
-// Image is an image.Image with a Set method to change a single pixel.
-type Image interface {
- image.Image
- Set(x, y int, c color.Color)
-}
-
-// Op is a Porter-Duff compositing operator.
-type Op int
-
-const (
- // Over specifies ``(src in mask) over dst''.
- Over Op = Op(draw.Over)
- // Src specifies ``src in mask''.
- Src Op = Op(draw.Src)
-)
-
-// Draw implements the Drawer interface by calling the Draw function with
-// this Op.
-func (op Op) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point) {
- (draw.Op(op)).Draw(dst, r, src, sp)
-}
-
-// Quantizer produces a palette for an image.
-type Quantizer interface {
- // Quantize appends up to cap(p) - len(p) colors to p and returns the
- // updated palette suitable for converting m to a paletted image.
- Quantize(p color.Palette, m image.Image) color.Palette
-}
diff --git a/draw/go1_9.go b/draw/go1_9.go
deleted file mode 100644
index fc548e9..0000000
--- a/draw/go1_9.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.9 go1.8.typealias
-
-package draw
-
-import (
- "image/draw"
-)
-
-// We use type aliases (new in Go 1.9) for the exported names from the standard
-// library's image/draw package. This is not merely syntactic sugar for
-//
-// type Drawer draw.Drawer
-//
-// as aliasing means that the types in this package, such as draw.Image and
-// draw.Op, are identical to the corresponding draw.Image and draw.Op types in
-// the standard library. In comparison, prior to Go 1.9, the code in go1_8.go
-// defines new types that mimic the old but are different types.
-//
-// The package documentation, in draw.go, explicitly gives the intent of this
-// package:
-//
-// This package is a superset of and a drop-in replacement for the
-// image/draw package in the standard library.
-//
-// Drop-in replacement means that I can replace all of my "image/draw" imports
-// with "golang.org/x/image/draw", to access additional features in this
-// package, and no further changes are required. That's mostly true, but not
-// completely true unless we use type aliases.
-//
-// Without type aliases, users might need to import both "image/draw" and
-// "golang.org/x/image/draw" in order to convert from two conceptually
-// equivalent but different (from the compiler's point of view) types, such as
-// from one draw.Op type to another draw.Op type, to satisfy some other
-// interface or function signature.
-
-// Drawer contains the Draw method.
-type Drawer = draw.Drawer
-
-// Image is an image.Image with a Set method to change a single pixel.
-type Image = draw.Image
-
-// Op is a Porter-Duff compositing operator.
-type Op = draw.Op
-
-const (
- // Over specifies ``(src in mask) over dst''.
- Over Op = draw.Over
- // Src specifies ``src in mask''.
- Src Op = draw.Src
-)
-
-// Quantizer produces a palette for an image.
-type Quantizer = draw.Quantizer
diff --git a/draw/scale_test.go b/draw/scale_test.go
index ea41940..042a82d 100644
--- a/draw/scale_test.go
+++ b/draw/scale_test.go
@@ -519,9 +519,7 @@
for _, dstMaskP := range dstMaskPs {
dstInside := mk(q, nil, image.Point{})
for _, wrap := range []bool{false, true} {
- // TODO: replace "rectImage(rect)" with "rect" once Go 1.5 is
- // released, where an image.Rectangle implements image.Image.
- dstMask := image.Image(rectImage(rect))
+ dstMask := image.Image(rect)
if wrap {
dstMask = srcWrapper{dstMask}
}
@@ -562,19 +560,6 @@
})
}
-// TODO: delete this wrapper type once Go 1.5 is released, where an
-// image.Rectangle implements image.Image.
-type rectImage image.Rectangle
-
-func (r rectImage) ColorModel() color.Model { return color.Alpha16Model }
-func (r rectImage) Bounds() image.Rectangle { return image.Rectangle(r) }
-func (r rectImage) At(x, y int) color.Color {
- if (image.Point{x, y}).In(image.Rectangle(r)) {
- return color.Opaque
- }
- return color.Transparent
-}
-
// The fooWrapper types wrap the dst or src image to avoid triggering the
// type-specific fast path implementations.
type (
diff --git a/draw/stdlib_test.go b/draw/stdlib_test.go
index 9015bfd..7ee8770 100644
--- a/draw/stdlib_test.go
+++ b/draw/stdlib_test.go
@@ -2,15 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build go1.9
-
package draw
-// This file contains tests that depend on the exact behavior of the
-// image/color package in the standard library. The color conversion formula
-// from YCbCr to RGBA changed between Go 1.4 and Go 1.5, and between Go 1.8 and
-// Go 1.9, so this file's tests are only enabled for Go 1.9 and above.
-
import (
"bytes"
"image"