1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef CORE_FXCRT_FX_ARB_H_ 8 #define CORE_FXCRT_FX_ARB_H_ 9 10 #include <vector> 11 12 #include "core/fxcrt/fx_system.h" 13 #include "core/fxcrt/fx_ucd.h" 14 15 struct FX_ARBFORMTABLE { 16 uint16_t wIsolated; 17 uint16_t wFinal; 18 uint16_t wInitial; 19 uint16_t wMedial; 20 }; 21 22 struct FX_ARAALEF { 23 uint16_t wAlef; 24 uint16_t wIsolated; 25 }; 26 27 struct FX_ARASHADDA { 28 uint16_t wShadda; 29 uint16_t wIsolated; 30 }; 31 32 const FX_ARBFORMTABLE* FX_GetArabicFormTable(FX_WCHAR unicode); 33 FX_WCHAR FX_GetArabicFromAlefTable(FX_WCHAR alef); 34 FX_WCHAR FX_GetArabicFromShaddaTable(FX_WCHAR shadda); 35 36 enum FX_ARBPOSITION { 37 FX_ARBPOSITION_Isolated = 0, 38 FX_ARBPOSITION_Final, 39 FX_ARBPOSITION_Initial, 40 FX_ARBPOSITION_Medial, 41 }; 42 43 void FX_BidiLine(CFX_WideString& wsText, int32_t iBaseLevel = 0); 44 void FX_BidiLine(std::vector<CFX_TxtChar>& chars, 45 int32_t iCount, 46 int32_t iBaseLevel = 0); 47 void FX_BidiLine(std::vector<CFX_RTFChar>& chars, 48 int32_t iCount, 49 int32_t iBaseLevel = 0); 50 51 #endif // CORE_FXCRT_FX_ARB_H_ 52