// 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