blob: 57a86c1397b202ff1f3cfc1b3ff8d10309cb4f74 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_PAINT_PAINT_TEXT_BLOB_BUILDER_H_
#define CC_PAINT_PAINT_TEXT_BLOB_BUILDER_H_
#include <vector>
#include "base/macros.h"
#include "cc/paint/paint_export.h"
#include "cc/paint/paint_font.h"
#include "cc/paint/paint_text_blob.h"
#include "third_party/skia/include/core/SkRect.h"
#include "third_party/skia/include/core/SkScalar.h"
#include "third_party/skia/include/core/SkTextBlob.h"
namespace cc {
class CC_PAINT_EXPORT PaintTextBlobBuilder {
public:
using RunBuffer = SkTextBlobBuilder::RunBuffer;
PaintTextBlobBuilder();
~PaintTextBlobBuilder();
scoped_refptr<PaintTextBlob> TakeTextBlob();
// These functions pass the calls through to SkTextBlobBuilder, see its
// interface for details.
const RunBuffer& AllocRunPosH(const PaintFont& font,
int count,
SkScalar y,
const SkRect* bounds = nullptr);
const RunBuffer& AllocRunPos(const PaintFont& font,
int count,
const SkRect* bounds = nullptr);
private:
std::vector<PaintTypeface> typefaces_;
SkTextBlobBuilder sk_builder_;
DISALLOW_COPY_AND_ASSIGN(PaintTextBlobBuilder);
};
} // namespace cc
#endif // CC_PAINT_PAINT_TEXT_BLOB_BUILDER_H_