• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2024 Google LLC
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_harfbuzz_DEFINED
9 #define SkShaper_harfbuzz_DEFINED
10 
11 #include "include/core/SkFourByteTag.h"
12 #include "include/core/SkRefCnt.h"
13 #include "include/core/SkTypes.h"
14 #include "modules/skshaper/include/SkShaper.h"
15 
16 #include <cstddef>
17 #include <memory>
18 
19 class SkFontMgr;
20 class SkUnicode;
21 #ifdef ENABLE_DRAWING_ADAPTER
22 namespace SkiaRsText {
23 #endif
24 namespace SkShapers::HB {
25 #ifdef ENABLE_TEXT_ENHANCE
26 SKSHAPER_API std::unique_ptr<SkShaper> ShaperDrivenWrapper(sk_sp<SkUnicode> unicode,
27                                                            std::shared_ptr<RSFontMgr> fallback);
28 SKSHAPER_API std::unique_ptr<SkShaper> ShapeThenWrap(sk_sp<SkUnicode> unicode,
29                                                      std::shared_ptr<RSFontMgr> fallback);
30 SKSHAPER_API std::unique_ptr<SkShaper> ShapeDontWrapOrReorder(sk_sp<SkUnicode> unicode,
31                                                               std::shared_ptr<RSFontMgr> fallback);
32 #else
33 SKSHAPER_API std::unique_ptr<SkShaper> ShaperDrivenWrapper(sk_sp<SkUnicode> unicode,
34                                                            sk_sp<SkFontMgr> fallback);
35 SKSHAPER_API std::unique_ptr<SkShaper> ShapeThenWrap(sk_sp<SkUnicode> unicode,
36                                                      sk_sp<SkFontMgr> fallback);
37 SKSHAPER_API std::unique_ptr<SkShaper> ShapeDontWrapOrReorder(sk_sp<SkUnicode> unicode,
38                                                               sk_sp<SkFontMgr> fallback);
39 #endif
40 SKSHAPER_API std::unique_ptr<SkShaper::ScriptRunIterator> ScriptRunIterator(const char* utf8,
41                                                                             size_t utf8Bytes);
42 SKSHAPER_API std::unique_ptr<SkShaper::ScriptRunIterator> ScriptRunIterator(const char* utf8,
43                                                                             size_t utf8Bytes,
44                                                                             SkFourByteTag script);
45 
46 SKSHAPER_API void PurgeCaches();
47 } // namespace SkShapers::HB
48 #ifdef ENABLE_DRAWING_ADAPTER
49 } // namespace SkiaRsText
50 namespace SkShapers::HB{
51     using namespace SkiaRsText::SkShapers::HB;
52 }
53 #endif
54 #endif
55