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 #ifndef SkShaperFactory_DEFINED 8 #define SkShaperFactory_DEFINED 9 10 #include "include/core/SkFourByteTag.h" 11 #include "include/core/SkRefCnt.h" 12 #include "include/core/SkTypes.h" 13 #include "modules/skshaper/include/SkShaper.h" 14 15 #include <cstddef> 16 #include <cstdint> 17 #include <memory> 18 19 class SkFontMgr; 20 class SkUnicode; 21 22 namespace SkShapers { 23 24 class SKSHAPER_API Factory : public SkRefCnt { 25 public: 26 virtual std::unique_ptr<SkShaper> makeShaper(sk_sp<SkFontMgr> fallback) = 0; 27 virtual std::unique_ptr<SkShaper::BiDiRunIterator> makeBidiRunIterator( 28 const char* utf8, size_t utf8Bytes, uint8_t bidiLevel) = 0; 29 virtual std::unique_ptr<SkShaper::ScriptRunIterator> makeScriptRunIterator( 30 const char* utf8, size_t utf8Bytes, SkFourByteTag script) = 0; 31 32 virtual SkUnicode* getUnicode() = 0; 33 }; 34 35 namespace Primitive { 36 SKSHAPER_API sk_sp<Factory> Factory(); 37 } 38 39 } // namespace SkShapers 40 41 #endif // SkShaperFactory_DEFINED 42