From a9aa15d1d6fd1c079163505f749359d3614bea22 Mon Sep 17 00:00:00 2001 From: Thomas Friedel Date: Sun, 25 Mar 2018 15:48:26 +0200 Subject: [PATCH] nested clipping now works with save/restore --- canvas.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/canvas.go b/canvas.go index 9ccb115..77f82a9 100644 --- a/canvas.go +++ b/canvas.go @@ -505,16 +505,16 @@ func (cv *Canvas) Restore() { if l <= 0 { return } - hadClip := len(cv.state.clip) > 0 + gli.StencilMask(0x02) + gli.Clear(gl_STENCIL_BUFFER_BIT) + gli.StencilMask(0xFF) + for _, st := range cv.stateStack { + if len(st.clip) > 0 { + cv.clip(st.clip) + } + } cv.state = cv.stateStack[l-1] cv.stateStack = cv.stateStack[:l-1] - if len(cv.state.clip) > 0 { - cv.clip(cv.state.clip) - } else if hadClip { - gli.StencilMask(0x02) - gli.Clear(gl_STENCIL_BUFFER_BIT) - gli.StencilMask(0xFF) - } } // Scale updates the current transformation with a scaling by the given values