aboutsummaryrefslogtreecommitdiff
path: root/imgutil
diff options
context:
space:
mode:
authorPřemysl Janouch <p@janouch.name>2019-04-13 00:33:45 +0200
committerPřemysl Janouch <p@janouch.name>2019-04-13 00:34:40 +0200
commitb287ba55007455571b2d17603914f4f3325eeb54 (patch)
tree744023f2412b9d198eb4e0635de9e9ebf07af0fe /imgutil
parentfab0a52189baadd854d293ed076cdf7459d5b7f6 (diff)
downloadsklad-b287ba55007455571b2d17603914f4f3325eeb54.tar.gz
sklad-b287ba55007455571b2d17603914f4f3325eeb54.tar.xz
sklad-b287ba55007455571b2d17603914f4f3325eeb54.zip
Split out imgutil
Diffstat (limited to 'imgutil')
-rw-r--r--imgutil/imgutil.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/imgutil/imgutil.go b/imgutil/imgutil.go
new file mode 100644
index 0000000..bd9122b
--- /dev/null
+++ b/imgutil/imgutil.go
@@ -0,0 +1,57 @@
+package imgutil
+
+import (
+ "image"
+ "image/color"
+)
+
+// Scale is a scaling image.Image wrapper.
+type Scale struct {
+ Image image.Image
+ Scale int
+}
+
+// ColorModel implements image.Image.
+func (s *Scale) ColorModel() color.Model {
+ return s.Image.ColorModel()
+}
+
+// Bounds implements image.Image.
+func (s *Scale) Bounds() image.Rectangle {
+ r := s.Image.Bounds()
+ return image.Rect(r.Min.X*s.Scale, r.Min.Y*s.Scale,
+ r.Max.X*s.Scale, r.Max.Y*s.Scale)
+}
+
+// At implements image.Image.
+func (s *Scale) At(x, y int) color.Color {
+ if x < 0 {
+ x = x - s.Scale + 1
+ }
+ if y < 0 {
+ y = y - s.Scale + 1
+ }
+ return s.Image.At(x/s.Scale, y/s.Scale)
+}
+
+// LeftRotate is a 90 degree rotating image.Image wrapper.
+type LeftRotate struct {
+ Image image.Image
+}
+
+// ColorModel implements image.Image.
+func (lr *LeftRotate) ColorModel() color.Model {
+ return lr.Image.ColorModel()
+}
+
+// Bounds implements image.Image.
+func (lr *LeftRotate) Bounds() image.Rectangle {
+ r := lr.Image.Bounds()
+ // Min is inclusive, Max is exclusive.
+ return image.Rect(r.Min.Y, -(r.Max.X - 1), r.Max.Y, -(r.Min.X - 1))
+}
+
+// At implements image.Image.
+func (lr *LeftRotate) At(x, y int) color.Color {
+ return lr.Image.At(-y, x)
+}