/* * Copyright (C) Ascensio System SIA, 2009-2026 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation, together with the * additional terms provided in the LICENSE file. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA by email at info@onlyoffice.com * or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga, * LV-1050, Latvia, European Union. * * The interactive user interfaces in modified versions of the Program * are required to display Appropriate Legal Notices in accordance with * Section 5 of the GNU AGPL version 3. * * No trademark rights are granted under this License. * * All non-code elements of the Product, including illustrations, * icon sets, and technical writing content, are licensed under the * Creative Commons Attribution-ShareAlike 4.0 International License: * https://creativecommons.org/licenses/by-sa/4.0/legalcode * * This license applies only to such non-code elements and does not * modify or replace the licensing terms applicable to the Program's * source code, which remains licensed under the GNU Affero General * Public License v3. * * SPDX-License-Identifier: AGPL-3.0-only */ #ifndef _BUILD_NATIVE_TEXT_MEASURER_EMBED_H_ #define _BUILD_NATIVE_TEXT_MEASURER_EMBED_H_ #include "../js_internal/js_base.h" #if defined(__ANDROID__) || defined(_IOS) #define SUPPORT_HARFBUZZ_SHAPER #endif using namespace NSJSBase; class JS_DECL CTextMeasurerEmbed : public CJSEmbedObject { private: void* m_hyphen_engine; public: CTextMeasurerEmbed(); ~CTextMeasurerEmbed(); public: JSSmart FT_Malloc(JSSmart typed_array_or_len); JSSmart FT_Free(JSSmart pointer); JSSmart FT_Init(); JSSmart FT_Set_TrueType_HintProp(JSSmart library, JSSmart tt_interpreter); JSSmart FT_Open_Face(JSSmart library, JSSmart memory, JSSmart size, JSSmart face_index); JSSmart FT_Open_Face2(JSSmart library, JSSmart array, JSSmart face_index); JSSmart FT_GetFaceInfo(JSSmart face); JSSmart FT_Load_Glyph(JSSmart face, JSSmart gid, JSSmart mode); JSSmart FT_Get_Glyph_Measure_Params(JSSmart face, JSSmart is_vector); JSSmart FT_Get_Glyph_Render_Params(JSSmart face, JSSmart render_mode); JSSmart FT_Get_Glyph_Render_Buffer(JSSmart face, JSSmart size); JSSmart FT_Set_Transform(JSSmart face, JSSmart xx, JSSmart yx, JSSmart xy, JSSmart yy); JSSmart FT_Set_Char_Size(JSSmart face, JSSmart char_width, JSSmart char_height, JSSmart hres, JSSmart vres); JSSmart FT_SetCMapForCharCode(JSSmart face, JSSmart unicode); JSSmart FT_GetKerningX(JSSmart face, JSSmart gid1, JSSmart gid2); JSSmart FT_GetFaceMaxAdvanceX(JSSmart face); #ifdef SUPPORT_HARFBUZZ_SHAPER JSSmart HB_LanguageFromString(JSSmart language_bcp_47); JSSmart HB_ShapeText(JSSmart face, JSSmart font, JSSmart text, JSSmart nFeatures, JSSmart nScript, JSSmart nDirection, JSSmart nLanguage); JSSmart HB_FontMalloc(); JSSmart HB_FontFree(JSSmart font); #endif JSSmart Hyphen_SetCacheSize(JSSmart size); JSSmart Hyphen_Word(JSSmart lang, JSSmart word); JSSmart Hyphen_IsDictionaryExist(JSSmart lang); DECLARE_EMBED_METHODS }; #endif // _BUILD_NATIVE_TEXT_MEASURER_EMBED_H_