1 | // Copyright 2020 Google LLC. |
2 | #ifndef Decorations_DEFINED |
3 | #define Decorations_DEFINED |
4 | |
5 | #include "include/core/SkCanvas.h" |
6 | #include "include/core/SkPath.h" |
7 | #include "modules/skparagraph/include/TextStyle.h" |
8 | #include "modules/skparagraph/src/TextLine.h" |
9 | |
10 | namespace skia { |
11 | namespace textlayout { |
12 | |
13 | class Decorations { |
14 | public: |
15 | void paint(SkCanvas* canvas, const TextStyle& textStyle, const TextLine::ClipContext& context, SkScalar baseline, SkPoint offset); |
16 | |
17 | private: |
18 | |
19 | void calculateThickness(TextStyle textStyle, sk_sp<SkTypeface> typeface); |
20 | void calculatePosition(TextDecoration decoration, SkScalar ascent); |
21 | void calculatePaint(const TextStyle& textStyle); |
22 | void calculateWaves(const TextStyle& textStyle, SkRect clip); |
23 | void calculateGaps(const TextLine::ClipContext& context, const SkRect& rect, SkScalar baseline, SkScalar halo); |
24 | |
25 | SkScalar fThickness; |
26 | SkScalar fPosition; |
27 | |
28 | SkFontMetrics fFontMetrics; |
29 | SkPaint fPaint; |
30 | SkPath fPath; |
31 | }; |
32 | } // namespace textlayout |
33 | } // namespace skia |
34 | #endif |
35 | |