blob: 215230708f388ad37df5815cd7f3b85b51577976 [file] [log] [blame]
reed@android.comed8dbf72010-02-11 13:56:04 +00001#ifndef SkTextLayout_DEFINED
2#define SkTextLayout_DEFINED
3
4#include "SkPaint.h"
5#include "SkRefCnt.h"
6
7class SkTextStyle : public SkRefCnt {
8public:
9 SkTextStyle();
10 SkTextStyle(const SkTextStyle&);
11 explicit SkTextStyle(const SkPaint&);
12 virtual ~SkTextStyle();
13
14 const SkPaint& paint() const { return fPaint; }
15 SkPaint& paint() { return fPaint; }
16
17 // todo: bidi-override, language
18
19private:
20 SkPaint fPaint;
21};
22
23class SkTextLayout {
24public:
25 SkTextLayout();
26 ~SkTextLayout();
27
28 void setText(const char text[], size_t length);
29 void setBounds(const SkRect& bounds);
30
31 SkTextStyle* getDefaultStyle() const { return fDefaultStyle; }
32 SkTextStyle* setDefaultStyle(SkTextStyle*);
33
34// SkTextStyle* setStyle(SkTextStyle*, size_t offset, size_t length);
35
36 void draw(SkCanvas* canvas);
37
38private:
39 SkTDArray<char> fText;
40 SkTextStyle* fDefaultStyle;
41 SkRect fBounds;
42
43 // cache
44 struct Line;
45 struct GlyphRun;
46 SkTDArray<Line*> fLines;
47};
48
49#endif
50