fx_ucd.h revision ee451cb395940862dad63c85adfe8f2fd55e864c
126266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar// Copyright 2014 PDFium Authors. All rights reserved. 226266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar// Use of this source code is governed by a BSD-style license that can be 326266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar// found in the LICENSE file. 426266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar 526266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 626266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar 726266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar#ifndef _FX_UNICODE_ 826266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar#define _FX_UNICODE_ 926266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbarenum FX_CHARBREAKPROP { 1026266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_OP = 0, 1126266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_CL = 1, 1226266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_QU = 2, 13c86804bc9c3f1953520b59084c9ad75104aba123Daniel Dunbar FX_CBP_GL = 3, 14d99ef536b241071b6f4c01db6525dc03242ac30bDmitri Gribenko FX_CBP_NS = 4, 15fbe2fafe317a757031e4f24026a77dd305607d32Daniel Dunbar FX_CBP_EX = 5, 1626266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_SY = 6, 1726266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_IS = 7, 1826266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_PR = 8, 198616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_CBP_PO = 9, 208616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_CBP_NU = 10, 218616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_CBP_AL = 11, 228616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_CBP_ID = 12, 2326266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_IN = 13, 2426266885d6eba8ee197577dd42a8e68a0e4dd2e8Daniel Dunbar FX_CBP_HY = 14, 259a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_BA = 15, 269a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_BB = 16, 27171af64ef10ae816ed2a4f15f5d17aca1d71769fAlexander Kornienko FX_CBP_B2 = 17, 289a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_ZW = 18, 299a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_CM = 19, 309a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_WJ = 20, 319a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_H2 = 21, 329a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_H3 = 22, 339a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_JL = 23, 349a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_JV = 24, 359a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_JT = 25, 369a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar 3732148cef25570a4fbe3ad0ec497ce3ae2cf1b774Daniel Dunbar FX_CBP_BK = 26, 3832148cef25570a4fbe3ad0ec497ce3ae2cf1b774Daniel Dunbar FX_CBP_CR = 27, 39da1573f95902a42aa4d11e8f45ab98ec7e27bc28Daniel Dunbar FX_CBP_LF = 28, 409a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_NL = 29, 41467dc88512b4ba4bb16e274ea3771dc1415d31daDouglas Gregor FX_CBP_SA = 30, 429a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_SG = 31, 439a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_CB = 32, 442758595023c5c7c0495f19260089f975022c50dcDaniel Dunbar FX_CBP_XX = 33, 45c544ba09695e300f31355af342258bd57619e737Douglas Gregor FX_CBP_AI = 34, 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines FX_CBP_SP = 35, 479a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_CBP_TB = 37, 48d10c5b88334d860d19284032a7126dc2219f57edDaniel Dunbar FX_CBP_NONE = 36, 499a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar}; 50f033f1da4a34f8df6e95e9929dc04ff54bb8fb01Douglas Gregor#define FX_BIDICLASSBITS 6 519a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar#define FX_BIDICLASSBITSMASK (31 << FX_BIDICLASSBITS) 52809d1be9820039b4cf6efa48246a0d70ffa13394James Dennettenum FX_BIDICLASS { 539a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_BIDICLASS_ON = 0, 549a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_BIDICLASS_L = 1, 559a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_BIDICLASS_R = 2, 5630660a898545416f0fea2d717f16f75640001e38Ted Kremenek FX_BIDICLASS_AN = 3, 579a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_BIDICLASS_EN = 4, 589a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_BIDICLASS_AL = 5, 599a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_BIDICLASS_NSM = 6, 609a8a83b8fe5be9a4ca20ec6eeaafaf201ce594f9Daniel Dunbar FX_BIDICLASS_CS = 7, 611f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_ES = 8, 621f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_ET = 9, 631f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_BN = 10, 641f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_S = 11, 651f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_WS = 12, 661f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_B = 13, 671f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_RLO = 14, 681f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_RLE = 15, 691f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_LRO = 16, 701f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_LRE = 17, 711f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_PDF = 18, 721f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_BIDICLASS_N = FX_BIDICLASS_ON, 731f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor}; 741f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor#define FX_CHARTYPEBITS 11 751f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor#define FX_CHARTYPEBITSMASK (15 << FX_CHARTYPEBITS) 761f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregorenum FX_CHARTYPE { 771f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_Unknown = 0, 781f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_Tab = (1 << FX_CHARTYPEBITS), 791f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_Space = (2 << FX_CHARTYPEBITS), 808616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_CHARTYPE_Control = (3 << FX_CHARTYPEBITS), 811f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_Combination = (4 << FX_CHARTYPEBITS), 821f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_Numeric = (5 << FX_CHARTYPEBITS), 831f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_Normal = (6 << FX_CHARTYPEBITS), 848616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_CHARTYPE_ArabicAlef = (7 << FX_CHARTYPEBITS), 858616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_CHARTYPE_ArabicSpecial = (8 << FX_CHARTYPEBITS), 861f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_ArabicDistortion = (9 << FX_CHARTYPEBITS), 871f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_ArabicNormal = (10 << FX_CHARTYPEBITS), 881f6b2b5c82b2d2d3935b0db76352a04e9877b73fDouglas Gregor FX_CHARTYPE_ArabicForm = (11 << FX_CHARTYPEBITS), 89a1f1fad8b60e1cb9d21a40a37f2e03150bcbeb6fDouglas Gregor FX_CHARTYPE_Arabic = (12 << FX_CHARTYPEBITS), 90a1f1fad8b60e1cb9d21a40a37f2e03150bcbeb6fDouglas Gregor}; 918616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidistypedef struct _FX_CHARPROPERTIES { 928616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis union { 936bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines struct { 94a1f1fad8b60e1cb9d21a40a37f2e03150bcbeb6fDouglas Gregor FX_DWORD dwBreakType : 6; 956bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines FX_DWORD dwBidiClass : 5; 968616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_DWORD dwCharType : 4; 978616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_DWORD dwRotation : 1; 988616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_DWORD dwCJKSpecial : 1; 998616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_DWORD dwVertIndex : 6; 1008616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_DWORD dwBidiIndex : 9; 1018616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis }; 1028616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis FX_DWORD dwCharProps; 1036bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines }; 1048616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis} FX_CHARPROPERTIES; 1056bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen HinesFX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch); 1068616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios KyrtzidisFX_BOOL FX_IsCtrlCode(FX_WCHAR ch); 1078616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios KyrtzidisFX_BOOL FX_IsRotationCode(FX_WCHAR ch); 1088616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios KyrtzidisFX_BOOL FX_IsCombinationChar(FX_WCHAR wch); 1098616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios KyrtzidisFX_BOOL FX_IsBidiChar(FX_WCHAR wch); 1108616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios KyrtzidisFX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical); 1118616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios KyrtzidisFX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_DWORD dwProps, FX_BOOL bRTL, FX_BOOL bVertical); 1128616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis#endif 1138616f9af65b9a3662f2c9dfed38eeabc509f8446Argyrios Kyrtzidis