1 #include "SkTextLayout.h" 2 SkTextStyle()3SkTextStyle::SkTextStyle() { 4 fPaint.setAntiAlias(true); 5 } 6 SkTextStyle(const SkTextStyle & src)7SkTextStyle::SkTextStyle(const SkTextStyle& src) : fPaint(src.fPaint) {} 8 SkTextStyle(const SkPaint & paint)9SkTextStyle::SkTextStyle(const SkPaint& paint) : fPaint(paint) {} 10 ~SkTextStyle()11SkTextStyle::~SkTextStyle() {} 12 13 /////////////////////////////////////////////////////////////////////////////// 14 SkTextLayout()15SkTextLayout::SkTextLayout() { 16 fBounds.setEmpty(); 17 fDefaultStyle = new SkTextStyle; 18 } 19 ~SkTextLayout()20SkTextLayout::~SkTextLayout() { 21 fDefaultStyle->unref(); 22 fLines.deleteAll(); 23 } 24 setText(const char text[],size_t length)25void SkTextLayout::setText(const char text[], size_t length) { 26 fText.setCount(length); 27 memcpy(fText.begin(), text, length); 28 } 29 setBounds(const SkRect & bounds)30void SkTextLayout::setBounds(const SkRect& bounds) { 31 fBounds = bounds; 32 // if width changed, inval cache 33 } 34 setDefaultStyle(SkTextStyle * style)35SkTextStyle* 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()51SkTextLayout::GlyphRun::GlyphRun() : fLocs(NULL), fGlyphIDs(NULL), fCount(0) {} 52 ~GlyphRun()53SkTextLayout::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()66SkTextLayout::Line::~Line() { 67 fRuns.deleteAll(); 68 } 69 draw(SkCanvas * canvas)70void SkTextLayout::draw(SkCanvas* canvas) { 71 } 72 73