aboutsummaryrefslogtreecommitdiffstats
path: root/layout/draw.go
diff options
context:
space:
mode:
Diffstat (limited to 'layout/draw.go')
-rw-r--r--layout/draw.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/layout/draw.go b/layout/draw.go
new file mode 100644
index 0000000..760a149
--- /dev/null
+++ b/layout/draw.go
@@ -0,0 +1,27 @@
+package layout
+
+import (
+ "image"
+ "image/color"
+ "image/draw"
+)
+
+// subimager is implemented by most Image types.
+type subimager interface {
+ SubImage(image.Rectangle) image.Image
+}
+
+// Subimage returns an image representing the portion of the image m visible through r.
+// The returned value shares pixels with the original.
+// Panics if the concrete image type does not have a SubImage() method.
+func subimage(m draw.Image, r image.Rectangle) draw.Image {
+ return m.(subimager).SubImage(r).(draw.Image)
+}
+
+// drawBackground returns a draw call that fills the entire image with a color.
+func drawBackground(c color.Color) func(draw.Image) image.Rectangle {
+ return func(img draw.Image) image.Rectangle {
+ draw.Draw(img, img.Bounds(), &image.Uniform{c}, image.ZP, draw.Src)
+ return img.Bounds()
+ }
+}