Version

Quick search

Table Of Contents

Scissor Instructions

New in version 1.9.1.

Scissor instructions clip your drawing area into a rectangular region.

The area provided to clip is in screenspace pixels and must be provided as integer values not floats.

The following code will draw a circle ontop of our widget while clipping the circle so it does not expand beyond the widget borders.

with self.canvas.after:
    #If our widget is inside another widget that modified the coordinates
    #spacing (such as ScrollView) we will want to convert to Window coords
    x,y = self.to_window(*self.pos)
    width, height = self.size
    #We must convert from the possible float values provided by kivy
    #widgets to an integer screenspace, in python3 round returns an int so
    #the int cast will be unnecessary.
    ScissorPush(x=int(round(x)), y=int(round(y)),
        width=int(round(width)), height=int(round(height)))
    Color(rgba=(1., 0., 0., .5))
    Ellipse(size=(width*2., height*2.),
        pos=self.center)
    ScissorPop()
class kivy.graphics.scissor_instructions.Rect(int x, int y, int width, int height)

Bases: builtins.object

Rect class used internally by ScissorStack and ScissorPush to determine correct clipping area.

intersect(Rect other)
class kivy.graphics.scissor_instructions.ScissorPop

Bases: kivy.graphics.instructions.Instruction

Pop the scissor stack. Call after ScissorPush, once you have completed the drawing you wish to be clipped.

class kivy.graphics.scissor_instructions.ScissorPush(**kwargs)

Bases: kivy.graphics.instructions.Instruction

to control the area and position of the scissoring region. Defaults to 0, 0, 100, 100

Scissor works by clipping all drawing outside of a rectangle starting at int x, int y position and having sides of int width by int height in Window space coordinates

class kivy.graphics.scissor_instructions.ScissorStack

Bases: builtins.object

Class used internally to keep track of the current state of glScissors regions. Do not instantiate, prefer to inspect the module’s scissor_stack.

pop()
push(element)