Managing draw style

In the previous section we briefly talked about controlling the appearance of drawing primitives, in this section we draw styles and tools to manage the draw style.

Full overview of properties of DrawStyle

Property Type Default Description
fill ColorRGBa? ColorRGBa.BLACK The fill color
stroke ColorRGBa? ColorRGBa.BLACK The stroke color
strokeWeight Double 1.0 The stroke weight
lineCap LineCap    
lineJoin LineJoin    
fontMap FontMap? null The font to use
colorMatrix Matrix55 IDENTITY The color matrix (used for images)
channelWriteMask ChannelMask ALL The channel write mask
shadeStyle ShadeStyle? null The shade style
blendMode BlendMode OVER The blend mode
quality DrawQuality QUALITY A hint that controls the quality of some primitives
depthTestPass DepthTestPass ALWAYS When a fragment should pass the depth test
depthWrite Boolean false Should the fragment depth be written to the depth buffer?
stencil StencilStyle   The stencil style
frontStencil StencilStyle   The stencil style for front-facing fragments
backStencil StencilStyle   The stencil style for back-facing fragments
clip Rectangle? null A rectangle that describes where drawing will take place

The active draw style

val active = drawer.drawStyle.copy()

The draw style stack

Styles can be pushed on and popped from a stack maintained by Drawer.

extend {
    drawer.pushStyle()
    drawer.fill = ColorRGBa.PINK
    drawer.rectangle(100.0, 100.0, 100.0, 100.0)
    drawer.popStyle()
}

The Drawer provides a helper function called isolated {} that pushes style and transforms on a their respective stacks, executes the user code and pops style and transforms back.

extend {
    drawer.isolated {
        fill = ColorRGBa.PINK
        rectangle(100.0, 100.0, 100.0, 100.0)
    }
}

edit on GitHub