• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef SkShaper_DEFINED
9 #define SkShaper_DEFINED
10 
11 #include <memory>
12 
13 #include "SkPoint.h"
14 #include "SkTypeface.h"
15 
16 class SkPaint;
17 class SkTextBlobBuilder;
18 
19 /**
20    Shapes text using HarfBuzz and places the shaped text into a
21    TextBlob.
22 
23    If compiled without HarfBuzz, fall back on SkPaint::textToGlyphs.
24  */
25 class SkShaper {
26 public:
27     SkShaper(sk_sp<SkTypeface> face);
28     ~SkShaper();
29 
30     bool good() const;
31     SkScalar shape(SkTextBlobBuilder* dest,
32                    const SkPaint& srcPaint,
33                    const char* utf8text,
34                    size_t textBytes,
35                    SkPoint point) const;
36 
37 private:
38     SkShaper(const SkShaper&) = delete;
39     SkShaper& operator=(const SkShaper&) = delete;
40 
41     struct Impl;
42     std::unique_ptr<Impl> fImpl;
43 };
44 
45 #endif  // SkShaper_DEFINED
46