diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-09-04 15:07:10 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2019-09-04 18:24:50 +0300 |
commit | bb894ceaf8d3655dd14bc63bf4a4557e3a16f530 (patch) | |
tree | 1aa9eab6cd4b10f81a0d382a6c009147333d1df7 /resources/images | |
parent | 529c7f1090e16c1bcff39948a8a5f4ed054650fb (diff) |
Allow slices in the image Filter funcs, not just varargs
[ci skip]
See #6255
Diffstat (limited to 'resources/images')
-rw-r--r-- | resources/images/filters_test.go | 34 | ||||
-rw-r--r-- | resources/images/image.go | 18 |
2 files changed, 52 insertions, 0 deletions
diff --git a/resources/images/filters_test.go b/resources/images/filters_test.go new file mode 100644 index 000000000..658a9a427 --- /dev/null +++ b/resources/images/filters_test.go @@ -0,0 +1,34 @@ +// Copyright 2019 The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package images + +import ( + "testing" + + "github.com/gohugoio/hugo/resources/internal" + + qt "github.com/frankban/quicktest" +) + +func TestFilterHash(t *testing.T) { + c := qt.New(t) + + f := &Filters{} + + c.Assert(internal.HashString(f.Grayscale()), qt.Equals, internal.HashString(f.Grayscale())) + c.Assert(internal.HashString(f.Grayscale()), qt.Not(qt.Equals), internal.HashString(f.Invert())) + c.Assert(internal.HashString(f.Gamma(32)), qt.Not(qt.Equals), internal.HashString(f.Gamma(33))) + c.Assert(internal.HashString(f.Gamma(32)), qt.Equals, internal.HashString(f.Gamma(32))) + +} diff --git a/resources/images/image.go b/resources/images/image.go index aa7d567aa..e72d96837 100644 --- a/resources/images/image.go +++ b/resources/images/image.go @@ -14,6 +14,7 @@ package images import ( + "fmt" "image" "image/color" "image/gif" @@ -259,3 +260,20 @@ func imageConfigFromImage(img image.Image) image.Config { b := img.Bounds() return image.Config{Width: b.Max.X, Height: b.Max.Y} } + +func ToFilters(in interface{}) []gift.Filter { + switch v := in.(type) { + case []gift.Filter: + return v + case []filter: + vv := make([]gift.Filter, len(v)) + for i, f := range v { + vv[i] = f + } + return vv + case gift.Filter: + return []gift.Filter{v} + default: + panic(fmt.Sprintf("%T is not an image filter", in)) + } +} |