diff options
-rw-r--r-- | comphelper/source/misc/lok.cxx | 24 | ||||
-rw-r--r-- | include/comphelper/lok.hxx | 12 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin4.cxx | 1 | ||||
-rw-r--r-- | svx/source/sdr/contact/objectcontactofpageview.cxx | 9 | ||||
-rw-r--r-- | vcl/source/outdev/bitmap.cxx | 4 |
5 files changed, 45 insertions, 5 deletions
diff --git a/comphelper/source/misc/lok.cxx b/comphelper/source/misc/lok.cxx index a6abd2a65486..a321260588f1 100644 --- a/comphelper/source/misc/lok.cxx +++ b/comphelper/source/misc/lok.cxx @@ -17,6 +17,8 @@ namespace LibreOfficeKit static bool g_bActive(false); +static bool g_bViewCallback(true); + void setActive(bool bActive) { g_bActive = bActive; @@ -27,6 +29,28 @@ bool isActive() return g_bActive; } +void setViewCallback(bool bViewCallback) +{ + g_bViewCallback = bViewCallback; +} + +bool isViewCallback() +{ + return g_bViewCallback; +} + +static bool g_bLocalRendering(false); + +void setLocalRendering(bool bLocalRendering) +{ + g_bLocalRendering = bLocalRendering; +} + +bool isLocalRendering() +{ + return g_bLocalRendering; +} + static void (*pStatusIndicatorCallback)(void *data, statusIndicatorCallbackType type, int percent)(nullptr); static void *pStatusIndicatorCallbackData(nullptr); diff --git a/include/comphelper/lok.hxx b/include/comphelper/lok.hxx index 79fa115e6585..8afd3d82a77d 100644 --- a/include/comphelper/lok.hxx +++ b/include/comphelper/lok.hxx @@ -36,6 +36,18 @@ COMPHELPER_DLLPUBLIC void setStatusIndicatorCallback(void (*callback)(void *data // Check whether the code is running as invoked through LibreOfficeKit. COMPHELPER_DLLPUBLIC bool isActive(); +/// Shift the coordinates before rendering each bitmap. +/// Used by Calc to render each tile separately. +/// This should be unnecessary (and removed) once Calc +/// moves to using 100MM Unit. +COMPHELPER_DLLPUBLIC void setLocalRendering(bool bLocalRendering = true); +COMPHELPER_DLLPUBLIC bool isLocalRendering(); + +/// Check whether clients register a callback for each view. +COMPHELPER_DLLPUBLIC bool isViewCallback(); +/// Set whether clients register a callback for each view. +COMPHELPER_DLLPUBLIC void setViewCallback(bool bViewCallback); + // Status indicator handling. Even if in theory there could be several status indicators active at // the same time, in practice there is only one at a time, so we don't handle any identification of // status indicator in this API. diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 33fb2aac747c..7ce585c43d13 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -826,6 +826,7 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI aOrigin.getY() - aOrigin.getY() / twipFactor); aNew.SetOrigin(aOrigin); pContentDev->SetMapMode(aNew); + comphelper::LibreOfficeKit::setLocalRendering(); } DrawRedraw( aOutputData, eMode, SC_LAYER_FRONT ); diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx b/svx/source/sdr/contact/objectcontactofpageview.cxx index 71522cf63074..b6f244a8ddac 100644 --- a/svx/source/sdr/contact/objectcontactofpageview.cxx +++ b/svx/source/sdr/contact/objectcontactofpageview.cxx @@ -232,7 +232,8 @@ namespace sdr // transform to world coordinates aViewRange.transform(rTargetOutDev.GetInverseViewTransformation()); - if (comphelper::LibreOfficeKit::isActive()) + if (comphelper::LibreOfficeKit::isActive() && + comphelper::LibreOfficeKit::isLocalRendering()) { const int TWIPS_PER_PIXEL = 15; aViewRange = basegfx::B2DRange(aViewRange.getMinimum().getX(), @@ -309,7 +310,8 @@ namespace sdr drawinglayer::processor2d::createProcessor2DFromOutputDevice( rTargetOutDev, getViewInformation2D())); - if (comphelper::LibreOfficeKit::isActive()) + if (comphelper::LibreOfficeKit::isActive() && + comphelper::LibreOfficeKit::isLocalRendering()) { // Restore the origin. MapMode aMapMode = pOutDev->GetMapMode(); @@ -322,7 +324,8 @@ namespace sdr pProcessor2D->process(xPrimitiveSequence); } - if (comphelper::LibreOfficeKit::isActive()) + if (comphelper::LibreOfficeKit::isActive() && + comphelper::LibreOfficeKit::isLocalRendering()) { // Restore the original map-mode. pOutDev->SetMapMode(aOrigMapMode); diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx index 0e2dd19aa21d..ef545762cad4 100644 --- a/vcl/source/outdev/bitmap.cxx +++ b/vcl/source/outdev/bitmap.cxx @@ -1193,14 +1193,14 @@ void OutputDevice::DrawTransformedBitmapEx( basegfx::fround(aScale.getX() + aTranslate.getX()) - aDestPt.X(), basegfx::fround(aScale.getY() + aTranslate.getY()) - aDestPt.Y()); const Point aOrigin = GetMapMode().GetOrigin(); - if (comphelper::LibreOfficeKit::isActive()) + if (comphelper::LibreOfficeKit::isActive() && GetMapMode().GetMapUnit() != MAP_PIXEL) { aDestPt.Move(aOrigin.getX(), aOrigin.getY()); EnableMapMode(false); } DrawBitmapEx(aDestPt, aDestSize, rBitmapEx); - if (comphelper::LibreOfficeKit::isActive()) + if (comphelper::LibreOfficeKit::isActive() && GetMapMode().GetMapUnit() != MAP_PIXEL) { EnableMapMode(true); aDestPt.Move(-aOrigin.getX(), -aOrigin.getY()); |