Hi,

For jfree.FXGraphics2D, I implemented the proposed approach in the new
GCHandler:
https://github.com/jfree/fxgraphics2d/blob/1994b9cb3a9bff93bf95100d398756d7f9f626c2/src/main/java/org/jfree/fx/GCStateHandler.java

It boosts fxG2D performance & correctness.

Ideally, such methods getSavePoint(), restoreToCount() should be added to
GraphicsContext API...

Cheers,
Laurent

Le ven. 3 févr. 2023, 23:31, Laurent Bourgès <bourges.laur...@gmail.com> a
écrit :

> Hi,
>
> While working with skia & jfree's skijaGraphics2D wrapper, I observed skia
> offers nice methods in SkCanvas missing in javafx Canvas/GraphicsContext to
> deal with save/restore state:
>
> - int getSaveCount ()
>   Returns the number of saved states, each containing: SkMatrix and clip.
>
> - void restoreToCount (int saveCount)
>   Restores state to SkMatrix and clip values when save(), returned
> saveCount.
>
> As javafx canvas also maintains s stack of saved states, such methods are
> trivial to implement to allow resetting completely the canvas state by
> restoreToCount(0).
>
> Moreover, clip(shape) + save/restore are really tricky to allows ensure
> clip is reset to previous state ...
>
> Would you agree to add such methods to have more predictive behaviour than
> counting all save() calls to ensure to call restore() the same number of
> times to reset the canvas to its initial state ?
>
> See SkijaGraphics2d implementation that saves / restore skCanvas clip
> using such index property:
>
> https://github.com/jfree/skijagraphics2d/blob/main/src/main/java/org/jfree/skija/SkijaGraphics2D.java
>
> Cheers,
> Laurent
>

Reply via email to