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
10namespace skia {
11namespace textlayout {
12
13class 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