[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