/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkTextLayout_DEFINED #define SkTextLayout_DEFINED #include "SkPaint.h" #include "SkRefCnt.h" class SkTextStyle : public SkRefCnt { public: SK_DECLARE_INST_COUNT(SkTextStyle) SkTextStyle(); SkTextStyle(const SkTextStyle&); explicit SkTextStyle(const SkPaint&); virtual ~SkTextStyle(); const SkPaint& paint() const { return fPaint; } SkPaint& paint() { return fPaint; } // todo: bidi-override, language private: SkPaint fPaint; typedef SkRefCnt INHERITED; }; class SkTextLayout { public: SkTextLayout(); ~SkTextLayout(); void setText(const char text[], size_t length); void setBounds(const SkRect& bounds); SkTextStyle* getDefaultStyle() const { return fDefaultStyle; } SkTextStyle* setDefaultStyle(SkTextStyle*); // SkTextStyle* setStyle(SkTextStyle*, size_t offset, size_t length); void draw(SkCanvas* canvas); private: SkTDArray fText; SkTextStyle* fDefaultStyle; SkRect fBounds; // cache struct Line; struct GlyphRun; SkTDArray fLines; }; #endif