[Libreoffice-commits] core.git: starmath/inc starmath/source

Takeshi Abe tabe at fixedpoint.jp
Mon Aug 22 02:17:26 UTC 2016


 starmath/inc/cursor.hxx    |    2 +-
 starmath/source/cursor.cxx |   14 ++++++--------
 2 files changed, 7 insertions(+), 9 deletions(-)

New commits:
commit 8a5c2586dc4f6854f8155331aad1c3fb2d54462f
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Fri Aug 19 17:51:13 2016 +0900

    starmath: Do SmCursor::MoveTo() more simply
    
    ... without unnecessary copy and re-calculation of squared distances.
    
    Change-Id: I2900f8ef690cae750be036dcb3c4270c82286a4c

diff --git a/starmath/inc/cursor.hxx b/starmath/inc/cursor.hxx
index 9fd9139..8eac806 100644
--- a/starmath/inc/cursor.hxx
+++ b/starmath/inc/cursor.hxx
@@ -107,7 +107,7 @@ public:
     void Move(OutputDevice* pDev, SmMovementDirection direction, bool bMoveAnchor = true);
 
     /** Move to the caret position closet to a given point */
-    void MoveTo(OutputDevice* pDev, Point pos, bool bMoveAnchor);
+    void MoveTo(OutputDevice* pDev, const Point& pos, bool bMoveAnchor);
 
     /** Delete the current selection or do nothing */
     void Delete();
diff --git a/starmath/source/cursor.cxx b/starmath/source/cursor.cxx
index 35a06b7..a5a933e 100644
--- a/starmath/source/cursor.cxx
+++ b/starmath/source/cursor.cxx
@@ -77,9 +77,8 @@ void SmCursor::Move(OutputDevice* pDev, SmMovementDirection direction, bool bMov
     }
 }
 
-void SmCursor::MoveTo(OutputDevice* pDev, Point pos, bool bMoveAnchor){
-    SmCaretLine best_line,  //Best line found so far, when iterating
-                curr_line;  //Current line, when iterating
+void SmCursor::MoveTo(OutputDevice* pDev, const Point& pos, bool bMoveAnchor)
+{
     SmCaretPosGraphEntry* NewPos = nullptr;
     long dp_sq = 0,     //Distance to current line squared
          dbp_sq = 1;    //Distance to best line squared
@@ -87,19 +86,18 @@ void SmCursor::MoveTo(OutputDevice* pDev, Point pos, bool bMoveAnchor){
     {
         OSL_ENSURE(pEntry->CaretPos.IsValid(), "The caret position graph may not have invalid positions!");
         //Compute current line
-        curr_line = SmCaretPos2LineVisitor(pDev, pEntry->CaretPos).GetResult();
+        SmCaretLine curr_line = SmCaretPos2LineVisitor(pDev, pEntry->CaretPos).GetResult();
+        //Compute squared distance to current line
+        dp_sq = curr_line.SquaredDistanceX(pos) + curr_line.SquaredDistanceY(pos);
         //If we have a position compare to it
         if(NewPos){
-            //Compute squared distance to current line
-            dp_sq = curr_line.SquaredDistanceX(pos) + curr_line.SquaredDistanceY(pos);
             //If best line is closer, reject current line
             if(dbp_sq <= dp_sq) continue;
         }
         //Accept current position as the best
-        best_line = curr_line;
         NewPos = pEntry.get();
         //Update distance to best line
-        dbp_sq = best_line.SquaredDistanceX(pos) + best_line.SquaredDistanceY(pos);
+        dbp_sq = dp_sq;
     }
     if(NewPos){
         mpPosition = NewPos;


More information about the Libreoffice-commits mailing list