blob: b898617c5fff88b7fbf38bfd28162073a31042cb [file] [log] [blame]
// Copyright 2020 Google LLC.
#ifndef Decorations_DEFINED
#define Decorations_DEFINED
#include "include/core/SkPath.h"
#include "modules/skparagraph/include/ParagraphPainter.h"
#include "modules/skparagraph/include/TextStyle.h"
#include "modules/skparagraph/src/TextLine.h"
namespace skia {
namespace textlayout {
class Decorations {
public:
void paint(ParagraphPainter* painter, const TextStyle& textStyle, const TextLine::ClipContext& context, SkScalar baseline);
private:
void calculateThickness(TextStyle textStyle, sk_sp<SkTypeface> typeface);
void calculatePosition(TextDecoration decoration, SkScalar ascent);
void calculatePaint(const TextStyle& textStyle);
void calculateWaves(const TextStyle& textStyle, SkRect clip);
void calculateGaps(const TextLine::ClipContext& context, const SkRect& rect, SkScalar baseline, SkScalar halo);
SkScalar fThickness;
SkScalar fPosition;
SkFontMetrics fFontMetrics;
ParagraphPainter::DecorationStyle fDecorStyle;
SkPath fPath;
};
} // namespace textlayout
} // namespace skia
#endif