diff options
Diffstat (limited to 'src/image/names.go')
-rw-r--r-- | src/image/names.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/image/names.go b/src/image/names.go new file mode 100644 index 0000000..17b0658 --- /dev/null +++ b/src/image/names.go @@ -0,0 +1,58 @@ +// Copyright 2010 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. + +package image + +import ( + "image/color" +) + +var ( + // Black is an opaque black uniform image. + Black = NewUniform(color.Black) + // White is an opaque white uniform image. + White = NewUniform(color.White) + // Transparent is a fully transparent uniform image. + Transparent = NewUniform(color.Transparent) + // Opaque is a fully opaque uniform image. + Opaque = NewUniform(color.Opaque) +) + +// Uniform is an infinite-sized Image of uniform color. +// It implements the color.Color, color.Model, and Image interfaces. +type Uniform struct { + C color.Color +} + +func (c *Uniform) RGBA() (r, g, b, a uint32) { + return c.C.RGBA() +} + +func (c *Uniform) ColorModel() color.Model { + return c +} + +func (c *Uniform) Convert(color.Color) color.Color { + return c.C +} + +func (c *Uniform) Bounds() Rectangle { return Rectangle{Point{-1e9, -1e9}, Point{1e9, 1e9}} } + +func (c *Uniform) At(x, y int) color.Color { return c.C } + +func (c *Uniform) RGBA64At(x, y int) color.RGBA64 { + r, g, b, a := c.C.RGBA() + return color.RGBA64{uint16(r), uint16(g), uint16(b), uint16(a)} +} + +// Opaque scans the entire image and reports whether it is fully opaque. +func (c *Uniform) Opaque() bool { + _, _, _, a := c.C.RGBA() + return a == 0xffff +} + +// NewUniform returns a new Uniform image of the given color. +func NewUniform(c color.Color) *Uniform { + return &Uniform{c} +} |