• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "SkTextLayout.h"
2 
SkTextStyle()3 SkTextStyle::SkTextStyle() {
4     fPaint.setAntiAlias(true);
5 }
6 
SkTextStyle(const SkTextStyle & src)7 SkTextStyle::SkTextStyle(const SkTextStyle& src) : fPaint(src.fPaint) {}
8 
SkTextStyle(const SkPaint & paint)9 SkTextStyle::SkTextStyle(const SkPaint& paint) : fPaint(paint) {}
10 
~SkTextStyle()11 SkTextStyle::~SkTextStyle() {}
12 
13 ///////////////////////////////////////////////////////////////////////////////
14 
SkTextLayout()15 SkTextLayout::SkTextLayout() {
16     fBounds.setEmpty();
17     fDefaultStyle = new SkTextStyle;
18 }
19 
~SkTextLayout()20 SkTextLayout::~SkTextLayout() {
21     fDefaultStyle->unref();
22     fLines.deleteAll();
23 }
24 
setText(const char text[],size_t length)25 void SkTextLayout::setText(const char text[], size_t length) {
26     fText.setCount(length);
27     memcpy(fText.begin(), text, length);
28 }
29 
setBounds(const SkRect & bounds)30 void SkTextLayout::setBounds(const SkRect& bounds) {
31     fBounds = bounds;
32     // if width changed, inval cache
33 }
34 
setDefaultStyle(SkTextStyle * style)35 SkTextStyle* SkTextLayout::setDefaultStyle(SkTextStyle* style) {
36     SkRefCnt_SafeAssign(fDefaultStyle, style);
37     return style;
38 }
39 
40 ///////////////////////////////////////////////////////////////////////////////
41 
42 struct SkTextLayout::GlyphRun {
43     GlyphRun();
44     ~GlyphRun();
45 
46     SkPoint*    fLocs;
47     uint16_t*   fGlyphIDs;
48     int         fCount;
49 };
50 
GlyphRun()51 SkTextLayout::GlyphRun::GlyphRun() : fLocs(NULL), fGlyphIDs(NULL), fCount(0) {}
52 
~GlyphRun()53 SkTextLayout::GlyphRun::~GlyphRun() {
54     delete[] fLocs;
55     delete[] fGlyphIDs;
56 }
57 
58 struct SkTextLayout::Line {
LineSkTextLayout::Line59     Line() {}
60     ~Line();
61 
62     SkScalar                fBaselineY;
63     SkTDArray<GlyphRun*>    fRuns;
64 };
65 
~Line()66 SkTextLayout::Line::~Line() {
67     fRuns.deleteAll();
68 }
69 
draw(SkCanvas * canvas)70 void SkTextLayout::draw(SkCanvas* canvas) {
71 }
72 
73