diff options
author | Přemysl Janouch <p@janouch.name> | 2019-04-13 00:33:45 +0200 |
---|---|---|
committer | Přemysl Janouch <p@janouch.name> | 2019-04-13 00:34:40 +0200 |
commit | b287ba55007455571b2d17603914f4f3325eeb54 (patch) | |
tree | 744023f2412b9d198eb4e0635de9e9ebf07af0fe /imgutil | |
parent | fab0a52189baadd854d293ed076cdf7459d5b7f6 (diff) | |
download | sklad-b287ba55007455571b2d17603914f4f3325eeb54.tar.gz sklad-b287ba55007455571b2d17603914f4f3325eeb54.tar.xz sklad-b287ba55007455571b2d17603914f4f3325eeb54.zip |
Split out imgutil
Diffstat (limited to 'imgutil')
-rw-r--r-- | imgutil/imgutil.go | 57 |
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) +} |