svx/source/svdraw/svdmrkv.cxx |   27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

New commits:
commit a1e4dad6b98a2a5d4b4ef5db479d6f520331f1d1
Author:     Dennis Francis <dennis.fran...@collabora.com>
AuthorDate: Mon Dec 13 11:36:53 2021 +0530
Commit:     Dennis Francis <dennis.fran...@collabora.com>
CommitDate: Wed Feb 2 10:12:17 2022 +0100

    lokCalcRTL: ensure +ve X coords in shape handles/selections msgs
    
    LOK client expects all coordinates to be in +ve document coordinates, so
    negate the negative X coordinates of LOK RTL shapes before sending the
    selection/handles messages.
    
    Conflicts:
            svx/source/svdraw/svdmrkv.cxx
    
    Change-Id: I683581370c5b115efbe315224d6218ec2e74c7f1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129190
    Tested-by: Jenkins
    Reviewed-by: Dennis Francis <dennis.fran...@collabora.com>

diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx
index 4406b5f535ff..73e530b2cd5e 100644
--- a/svx/source/svdraw/svdmrkv.cxx
+++ b/svx/source/svdraw/svdmrkv.cxx
@@ -703,6 +703,7 @@ OUString lcl_getDragParameterString( const OUString& rCID )
 bool SdrMarkView::dumpGluePointsToJSON(boost::property_tree::ptree& rTree)
 {
     bool result = false;
+    tools::Long nSignX = mbNegativeX ? -1 : 1;
     if (OutputDevice* pOutDev = mpMarkedPV ? 
mpMarkedPV->GetView().GetFirstOutputDevice() : nullptr)
     {
         bool bConvertUnit = false;
@@ -735,7 +736,7 @@ bool 
SdrMarkView::dumpGluePointsToJSON(boost::property_tree::ptree& rTree)
                 {
                     rPoint = o3tl::convert(rPoint, o3tl::Length::mm100, 
o3tl::Length::twip);
                 }
-                point.put("x", rPoint.getX());
+                point.put("x", nSignX * rPoint.getX());
                 point.put("y", rPoint.getY());
                 node.add_child("point", point);
                 points.push_back(std::make_pair("", node));
@@ -750,7 +751,7 @@ bool 
SdrMarkView::dumpGluePointsToJSON(boost::property_tree::ptree& rTree)
                     p = o3tl::convert(p, o3tl::Length::mm100, 
o3tl::Length::twip);
                 }
                 boost::property_tree::ptree gridOffset;
-                gridOffset.put("x", p.getX());
+                gridOffset.put("x", nSignX * p.getX());
                 gridOffset.put("y", p.getY());
                 object.add_child("gridoffset", gridOffset);
             }
@@ -769,6 +770,7 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle 
const & rRect, const S
     SfxViewShell* pViewShell = GetSfxViewShell();
 
     tools::Rectangle aSelection(rRect);
+    tools::Long nSignX = mbNegativeX ? -1 : 1;
     bool bIsChart = false;
     Point addLogicOffset(0, 0);
     bool convertMapMode = false;
@@ -862,7 +864,7 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle 
const & rRect, const S
                 if (convertMapMode)
                     p = o3tl::convert(p, o3tl::Length::mm100, 
o3tl::Length::twip);
                 aExtraInfo.append(",\"gridOffsetX\":");
-                aExtraInfo.append(p.getX());
+                aExtraInfo.append(nSignX * p.getX());
                 aExtraInfo.append(",\"gridOffsetY\":");
                 aExtraInfo.append(p.getY());
             }
@@ -966,6 +968,8 @@ void SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle 
const & rRect, const S
                                                     const basegfx::B2DPoint 
aB2Point = aPolygon.getB2DPoint(nIndex);
                                                     Point 
aPoint(aB2Point.getX(), aB2Point.getY());
                                                     
aPoint.Move(aLogicOffset.getX(), aLogicOffset.getY());
+                                                    if (mbNegativeX)
+                                                        
aPoint.setX(-aPoint.X());
                                                     if (nIndex > 0)
                                                         sPolygonElem += " ";
                                                     sPolygonElem += 
aPoint.toString();
@@ -1078,8 +1082,21 @@ void 
SdrMarkView::SetMarkHandlesForLOKit(tools::Rectangle const & rRect, const S
                     handleArrayStr = handleArrayStr + aStream.str().c_str();
                 }
             }
-            sSelectionText = aSelection.toString() +
-                ", " + OString::number(nRotAngle.get());
+
+            if (mbNegativeX)
+            {
+                tools::Rectangle aNegatedRect(aSelection);
+                aNegatedRect.SetLeft(-aNegatedRect.Left());
+                aNegatedRect.SetRight(-aNegatedRect.Right());
+                aNegatedRect.Justify();
+                sSelectionText = aNegatedRect.toString() +
+                    ", " + OString::number(nRotAngle.get());
+            }
+            else
+            {
+                sSelectionText = aSelection.toString() +
+                    ", " + OString::number(nRotAngle.get());
+            }
             if (!aExtraInfo.isEmpty())
             {
                 sSelectionTextView = sSelectionText + ", " + 
aExtraInfo.toString() + "}";

Reply via email to