Kaydet (Commit) 7069ec6d authored tarafından Miklos Vajna's avatar Miklos Vajna

tdf#124327 sc opengl: fix lack of AA text in charts

Commit 708d1c5a (sc lok: emit
RowColumnHeader info in twips, 2015-11-02) and later commits improved
precision of the Pixel Per Twips (PPT) factor in Calc, but this caused
offset problems in PDF export. So the LOK case uses double precision and
otherwise we use limited precision since commit
616fd241 (tdf#115262 sc: fix cumulative
placement error of images, 2018-10-01).

It turns out this double precision was also useful in the opengl case:
if UI scaling is set to 125% on Windows, then this helps producing AA
text for charts. Given that unlimited precision is the direction we want
to go, enable double precision for the GL case as well, not just for
LOK.

Verified that tdf#115262 is not re-introduced in the GL case, also that
manual PDF export (with GL enabled) does not produce the mentioned
unexpected image position offsets.

Change-Id: I23a8d6dce1b48c178977bda9909feb59fe8f3ad8
Reviewed-on: https://gerrit.libreoffice.org/70407Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
üst 3d57865f
......@@ -574,7 +574,9 @@ public:
SC_DLLPUBLIC static sal_uInt32 GetStandardFormat( SvNumberFormatter&, sal_uInt32 nFormat, SvNumFormatType nType );
SC_DLLPUBLIC static sal_uInt16 GetStandardRowHeight();
/// Horizontal pixel per twips factor.
SC_DLLPUBLIC static double nScreenPPTX;
/// Vertical pixel per twips factor.
SC_DLLPUBLIC static double nScreenPPTY;
static tools::SvRef<ScDocShell> xDrawClipDocShellRef;
......
......@@ -49,6 +49,7 @@
#include <unotools/transliterationwrapper.hxx>
#include <comphelper/lok.hxx>
#include <vcl/opengl/OpenGLWrapper.hxx>
#include <global.hxx>
#include <scresid.hxx>
......@@ -469,8 +470,10 @@ void ScGlobal::InitPPT()
{
OutputDevice* pDev = Application::GetDefaultDevice();
if (comphelper::LibreOfficeKit::isActive())
if (comphelper::LibreOfficeKit::isActive() || OpenGLWrapper::isVCLOpenGLEnabled())
{
// LOK: the below limited precision is not enough for RowColumnHeader.
// OpenGL: limited precision breaks AA of text in charts.
nScreenPPTX = double(pDev->GetDPIX()) / double(TWIPS_PER_INCH);
nScreenPPTY = double(pDev->GetDPIY()) / double(TWIPS_PER_INCH);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment