Existing unit tests are working with some minor differences
Change-Id: I78fb28a553f3aa9f8709708470c121bbe452fb8a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233304
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Julia Lavrova <jlavrova@google.com>
diff --git a/modules/skparagraph/src/TextLine.h b/modules/skparagraph/src/TextLine.h
index 3bbbb45..91d01b4 100644
--- a/modules/skparagraph/src/TextLine.h
+++ b/modules/skparagraph/src/TextLine.h
@@ -29,40 +29,44 @@
SkScalar widthWithSpaces,
LineMetrics sizes);
- inline void setMaster(ParagraphImpl* master) { fMaster = master; }
+ void setMaster(ParagraphImpl* master) { fMaster = master; }
- inline TextRange trimmedText() const { return fTextRange; }
- inline TextRange textWithSpaces() const { return fTextWithWhitespacesRange; }
- inline Run* ellipsis() const { return fEllipsis.get(); }
- inline LineMetrics sizes() const { return fSizes; }
- inline bool empty() const { return fTextRange.empty(); }
+ TextRange trimmedText() const { return fTextRange; }
+ TextRange textWithSpaces() const { return fTextWithWhitespacesRange; }
+ ClusterRange clusters() const { return fClusterRange; }
+ ClusterRange clustersWithSpaces() { return fGhostClusterRange; }
+ Run* ellipsis() const { return fEllipsis.get(); }
+ LineMetrics sizes() const { return fSizes; }
+ bool empty() const { return fTextRange.empty(); }
- inline SkScalar height() const { return fAdvance.fY; }
+ SkScalar height() const { return fAdvance.fY; }
SkScalar width() const {
return fAdvance.fX + (fEllipsis != nullptr ? fEllipsis->fAdvance.fX : 0);
}
- inline SkScalar shift() const { return fShift; }
+ SkScalar shift() const { return fShift; }
SkScalar widthWithSpaces() const { return fWidthWithSpaces; }
SkVector offset() const;
- inline SkScalar alphabeticBaseline() const { return fSizes.alphabeticBaseline(); }
- inline SkScalar ideographicBaseline() const { return fSizes.ideographicBaseline(); }
- inline SkScalar baseline() const { return fSizes.baseline(); }
- inline SkScalar roundingDelta() const { return fSizes.delta(); }
+ SkScalar alphabeticBaseline() const { return fSizes.alphabeticBaseline(); }
+ SkScalar ideographicBaseline() const { return fSizes.ideographicBaseline(); }
+ SkScalar baseline() const { return fSizes.baseline(); }
+ SkScalar roundingDelta() const { return fSizes.delta(); }
using StyleVisitor = std::function<SkScalar(TextRange textRange, const TextStyle& style,
SkScalar offsetX)>;
void iterateThroughStylesInTextOrder(StyleType styleType, const StyleVisitor& visitor) const;
- using RunVisitor = std::function<bool(Run* run, size_t pos, size_t size, SkRect clip,
- SkScalar shift, bool clippingNeeded)>;
+ SkScalar calculateLeftVisualOffset(TextRange textRange) const;
+
+ using RunVisitor = std::function<bool(Run* run, size_t pos, size_t size, TextRange text,
+ SkRect clip, SkScalar shift, bool clippingNeeded)>;
SkScalar iterateThroughRuns(TextRange textRange,
SkScalar offsetX,
bool includeGhostWhitespaces,
const RunVisitor& visitor) const;
- using ClustersVisitor = std::function<bool(const Cluster* cluster, ClusterIndex index)>;
- void iterateThroughClustersInGlyphsOrder(bool reverse, const ClustersVisitor& visitor) const;
+ using ClustersVisitor = std::function<bool(const Cluster* cluster, ClusterIndex index, bool leftToRight, bool ghost)>;
+ void iterateThroughClustersInGlyphsOrder(bool reverse, bool includeGhosts, const ClustersVisitor& visitor) const;
void format(TextAlign effectiveAlign, SkScalar maxWidth);
void paint(SkCanvas* canvas);