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