3 ms·
As they linked to the LibreOffice bug that we hit,[1] it might be worthwhile explaining how the cross platform architecture works in LibreOffice. The widgeting
by chris_wot 6y ago
As they linked to the LibreOffice bug that we hit,[1] it might be worthwhile explaining how the cross platform architecture works in LibreOffice.
The widgeting/graphics library is actually run by something called VCL (the Visual Component Library). It's a bit of a mess to be honest, but the simplified version is that there is a class called OutputDevice that the rest of the app uses, which basically acts as a fascade over a platform specific class called SalGraphics (there are a number of other platform specific classes, SalGraphics is what I focus on here).
Basically it is a class that implements a bunch of primitive drawing functions which call on abstract functions. We then implement these functions in a platform specific class.
To see the guts of the Mac class, see AquaSalGraphics [2] - and no, none of know why it was named "Aqua"... our codebase is old.
FWIW, OutputDevice has serious issues. I have detailed them in a mailing list post. [3]
1. https://bugs.documentfoundation.org/show_bug.cgi?id=138122 https://bugs.documentfoundation.org/show_bug.cgi?id=138122
2. https://opengrok.libreoffice.org/xref/core/vcl/inc/quartz/salgdi.h?r=e7ace1d0#133 https://opengrok.libreoffice.org/xref/core/vcl/inc/quartz/sa...
3. https://lists.freedesktop.org/archives/libreoffice/2020-December/086546.html https://lists.freedesktop.org/archives/libreoffice/2020-Dece...
- hutattedonmyarm 6y ago> and no, none of know why it was named "Aqua"... our codebase is old. The macOS UI is called Aqua, and has been for quite a while! https://en.wikipedia.org/wiki/Aqua_(user_interface) https://en.wikipedia.org/wiki/Aqua_(user_interface)
- deleted 6y ago[deleted]