michael@0: michael@0: /* michael@0: * Copyright 2011 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: #include "SkTextLayout.h" michael@0: michael@0: SkTextStyle::SkTextStyle() { michael@0: fPaint.setAntiAlias(true); michael@0: } michael@0: michael@0: SkTextStyle::SkTextStyle(const SkTextStyle& src) : fPaint(src.fPaint) {} michael@0: michael@0: SkTextStyle::SkTextStyle(const SkPaint& paint) : fPaint(paint) {} michael@0: michael@0: SkTextStyle::~SkTextStyle() {} michael@0: michael@0: /////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: SkTextLayout::SkTextLayout() { michael@0: fBounds.setEmpty(); michael@0: fDefaultStyle = new SkTextStyle; michael@0: } michael@0: michael@0: SkTextLayout::~SkTextLayout() { michael@0: fDefaultStyle->unref(); michael@0: fLines.deleteAll(); michael@0: } michael@0: michael@0: void SkTextLayout::setText(const char text[], size_t length) { michael@0: fText.setCount(length); michael@0: memcpy(fText.begin(), text, length); michael@0: } michael@0: michael@0: void SkTextLayout::setBounds(const SkRect& bounds) { michael@0: fBounds = bounds; michael@0: // if width changed, inval cache michael@0: } michael@0: michael@0: SkTextStyle* SkTextLayout::setDefaultStyle(SkTextStyle* style) { michael@0: SkRefCnt_SafeAssign(fDefaultStyle, style); michael@0: return style; michael@0: } michael@0: michael@0: /////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: struct SkTextLayout::GlyphRun { michael@0: GlyphRun(); michael@0: ~GlyphRun(); michael@0: michael@0: SkPoint* fLocs; michael@0: uint16_t* fGlyphIDs; michael@0: int fCount; michael@0: }; michael@0: michael@0: SkTextLayout::GlyphRun::GlyphRun() : fLocs(NULL), fGlyphIDs(NULL), fCount(0) {} michael@0: michael@0: SkTextLayout::GlyphRun::~GlyphRun() { michael@0: delete[] fLocs; michael@0: delete[] fGlyphIDs; michael@0: } michael@0: michael@0: struct SkTextLayout::Line { michael@0: Line() {} michael@0: ~Line(); michael@0: michael@0: SkScalar fBaselineY; michael@0: SkTDArray fRuns; michael@0: }; michael@0: michael@0: SkTextLayout::Line::~Line() { michael@0: fRuns.deleteAll(); michael@0: } michael@0: michael@0: void SkTextLayout::draw(SkCanvas* canvas) { michael@0: }