op/paint: skip zero images

Updates gio#235

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-06-16 11:32:19 +02:00
parent 3fc8f55350
commit 75c9736708
3 changed files with 14 additions and 2 deletions
+10
View File
@@ -340,6 +340,16 @@ func TestLinearGradientAngled(t *testing.T) {
}, func(r result) {}) }, func(r result) {})
} }
func TestZeroImage(t *testing.T) {
ops := new(op.Ops)
w := newWindow(t, 10, 10)
paint.ImageOp{}.Add(ops)
paint.PaintOp{}.Add(ops)
if err := w.Frame(ops); err != nil {
t.Error(err)
}
}
// lerp calculates linear interpolation with color b and p. // lerp calculates linear interpolation with color b and p.
func lerp(a, b f32color.RGBA, p float32) f32color.RGBA { func lerp(a, b f32color.RGBA, p float32) f32color.RGBA {
return f32color.RGBA{ return f32color.RGBA{
+2 -2
View File
@@ -70,7 +70,7 @@ func drawImage(t *testing.T, size int, ops *op.Ops, draw func(o *op.Ops)) (im *i
} }
func run(t *testing.T, f func(o *op.Ops), c func(r result)) { func run(t *testing.T, f func(o *op.Ops), c func(r result)) {
// draw a few times and check that it is correct each time, to // Draw a few times and check that it is correct each time, to
// ensure any caching effects still generate the correct images. // ensure any caching effects still generate the correct images.
var img *image.RGBA var img *image.RGBA
var err error var err error
@@ -82,7 +82,7 @@ func run(t *testing.T, f func(o *op.Ops), c func(r result)) {
t.Error("error rendering:", err) t.Error("error rendering:", err)
return return
} }
// check for a reference image and make sure we are identical. // Check for a reference image and make sure it is identical.
if !verifyRef(t, img, 0) { if !verifyRef(t, img, 0) {
name := fmt.Sprintf("%s-%d-bad.png", t.Name(), i) name := fmt.Sprintf("%s-%d-bad.png", t.Name(), i)
if err := saveImage(name, img); err != nil { if err := saveImage(name, img); err != nil {
+2
View File
@@ -98,6 +98,8 @@ func (i ImageOp) Add(o *op.Ops) {
Color: i.color, Color: i.color,
}.Add(o) }.Add(o)
return return
} else if i.src == nil || i.src.Bounds().Empty() {
return
} }
data := o.Write2(opconst.TypeImageLen, i.src, i.handle) data := o.Write2(opconst.TypeImageLen, i.src, i.handle)
data[0] = byte(opconst.TypeImage) data[0] = byte(opconst.TypeImage)