From 051b0c72388356614f446e9e35ece2287ad74363 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Fri, 3 Mar 2023 22:34:40 +0900 Subject: [PATCH] internal/ui: bug fix: a big-offscreen size could be 0 Closes #2589 --- internal/ui/image.go | 4 ++++ vector/util_test.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 vector/util_test.go diff --git a/internal/ui/image.go b/internal/ui/image.go index e475a32c9..2acc47b27 100644 --- a/internal/ui/image.go +++ b/internal/ui/image.go @@ -346,6 +346,10 @@ func (i *bigOffscreenImage) drawTriangles(srcs [graphics.ShaderImageCount]*Image i.region = r } + if i.region.Width == 0 || i.region.Height == 0 { + return + } + if i.image == nil { i.image = NewImage(int(i.region.Width)*bigOffscreenScale, int(i.region.Height)*bigOffscreenScale, i.imageType) } diff --git a/vector/util_test.go b/vector/util_test.go new file mode 100644 index 000000000..d34cf99a7 --- /dev/null +++ b/vector/util_test.go @@ -0,0 +1,37 @@ +// Copyright 2023 The Ebitengine Authors +// +// 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 vector_test + +import ( + "image/color" + "testing" + + "github.com/hajimehoshi/ebiten/v2" + t "github.com/hajimehoshi/ebiten/v2/internal/testing" + "github.com/hajimehoshi/ebiten/v2/vector" +) + +func TestMain(m *testing.M) { + t.MainWithRunLoop(m) +} + +// Issue #2589 +func TestLine0(t *testing.T) { + dst := ebiten.NewImage(16, 16) + vector.StrokeLine(dst, 0, 0, 0, 0, 2, color.White) + if got, want := dst.At(0, 0), (color.RGBA{}); got != want { + t.Errorf("got: %v, want: %v", got, want) + } +}