Hi,
As recently Jean-Pierre has reported he had been running out of memory
with complex boards, I decided to take another step to reduce memory
footprint of OpenGL canvas.
Currently, the most expensive thing to draw is stroked text, as there
are lots of labels on tracks and pads. To reduce the drawing cost (and
memory requirements), texts that are not targeted to Gerber files (i.e.
pad & track labels) might be displayed using bitmap fonts. This way, a
single letter cost is reduced from tens of triangles to just two.
Another gain is we can select any font for this purpose and easily
change it. I picked one for testing, but I think we have to decide
together which one shall be used. Bitmap fonts are also antialiased (I
am sorry Lorenzo), so they might be a bit easier on eyes.
As texts now do not occupy as much memory space as they used to, they
might be stored in the video card memory. Thanks to that, they might be
displayed on selected items as well (in the past selected items had
labels removed). This should also reduce per-frame traffic and make
rendering process smoother.
I did my best to use the same character set as is available with the
original stroke font, but I wonder if it is really necessary. It seems
that net/pad names are limited to latin characters, so maybe we should
limit the character set. Thoughts?
At the moment bitmap fonts are only available in OpenGL canvas, as I
believe they offer the greatest performance boost there. I am not sure
if Cairo can really benefit from such solution, but it might be tested
as well.
Before I push the changes to the master repository, I will be grateful
for some testing [1] and feedback. There are also two screenshots [2, 3]
to demonstrate the difference.
Regards,
Orson
1. https://github.com/orsonmmz/kicad-source-mirror/tree/bitmap_fonts
2. https://orson.net.pl/pub/original_font.png
3. https://orson.net.pl/pub/bitmap_font.png