Added round erasers that only expose 25% of the background each
time you click and apply the eraser.
Reworked how erasers are handled in the code to make it easier
to add this.
Reworked how eraser icons are drawn in the selector on the right.
(Squares and non-fuzzy, non-transparent circles are solid;
fuzzy circles are solid in the center with a dithered edge;
transparent circles are entirely dithered.)
TODO
* Document the new eraser type
* Remove a visual artfact (XOR outline) when using Ctrl-Z to Undo
* Eraser icons turn from black to white when temporarily switching
to certain other tools (e.g., after prompts like Quit or Print,
or after using Save)
Updates the Bulgarian translation to 100%.
Also fixes an inconsistency in the translation of the word "click", replacing all instances with the variant, derived from English, since it makes it easier to understand the mouse is being talked about.
appstreamcli validate gets very upset if you have a trailing period in
the name of the app:
E: org.tuxpaint.Tuxpaint:116: name-has-dot-suffix P\u025bntiri Tukisi .
E: org.tuxpaint.Tuxpaint:119: name-has-dot-suffix Tuks il\u0259 \u015f\u0259kil \u00e7\u0259k.
The named values for <display_length> were removed in Appstream 1.0,
released recently. In their place, use integer values.
For the <requires> block, attempt to encode the same reasonableness
restrictions as are enforced on the windowsize setting. The code
requires the height to be at least 480px and the width at least 500px,
but there is no way to specify width versus height, just shortest versus
longest edge, so I just require that the shortest edge is at least
500px.
For the <recommends> block, 768px is the suggested number in the
appstream specification for laptops and tablets.
005c5f104dhttps://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-relations-display_length
I had updated the guide circle drawing routine to draw points
every 360 / radius steps (so smaller circles had fewer XOR'd points),
but obviously this will cause a divide by zero if either circle's
radius = 360, since I'm using an integer, it will cause a frozen
for()-loop if radius > 360.
h/t Pere for pointing out the freeze!