// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" #include "core/hle/service/set/settings_types.h" namespace Service { namespace FileSystem { class FileSystemController; } // namespace FileSystem namespace NS { enum class FontArchives : u64 { Extension = 0x0100000000000810, Standard = 0x0100000000000811, Korean = 0x0100000000000812, ChineseTraditional = 0x0100000000000813, ChineseSimple = 0x0100000000000814, }; enum class SharedFontType : u32 { JapanUSEuropeStandard = 0, ChineseSimplified = 1, ExtendedChineseSimplified = 2, ChineseTraditional = 3, KoreanHangul = 4, NintendoExtended = 5, }; enum class LoadState : u32 { Loading = 0, Loaded = 1, }; constexpr std::array, 7> SHARED_FONTS{ std::make_pair(FontArchives::Standard, "nintendo_udsg-r_std_003.bfttf"), std::make_pair(FontArchives::ChineseSimple, "nintendo_udsg-r_org_zh-cn_003.bfttf"), std::make_pair(FontArchives::ChineseSimple, "nintendo_udsg-r_ext_zh-cn_003.bfttf"), std::make_pair(FontArchives::ChineseTraditional, "nintendo_udjxh-db_zh-tw_003.bfttf"), std::make_pair(FontArchives::Korean, "nintendo_udsg-r_ko_003.bfttf"), std::make_pair(FontArchives::Extension, "nintendo_ext_003.bfttf"), std::make_pair(FontArchives::Extension, "nintendo_ext2_003.bfttf"), }; void DecryptSharedFontToTTF(const std::vector& input, std::vector& output); void EncryptSharedFont(const std::vector& input, std::vector& output, std::size_t& offset); class IPlatformServiceManager final : public ServiceFramework { public: explicit IPlatformServiceManager(Core::System& system_, const char* service_name_); ~IPlatformServiceManager() override; private: Result RequestLoad(SharedFontType type); Result GetLoadState(Out out_load_state, SharedFontType type); Result GetSize(Out out_size, SharedFontType type); Result GetSharedMemoryAddressOffset(Out out_shared_memory_offset, SharedFontType type); Result GetSharedMemoryNativeHandle( OutCopyHandle out_shared_memory_native_handle); Result GetSharedFontInOrderOfPriority(OutArray out_font_codes, OutArray out_font_offsets, OutArray out_font_sizes, Out out_fonts_are_loaded, Out out_font_count, Set::LanguageCode language_code); struct Impl; std::unique_ptr impl; }; } // namespace NS } // namespace Service