mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 22:29:45 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			605 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			605 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| {
 | |
|     $Id$
 | |
|     This file is part of the Free Pascal run time library.
 | |
|     Copyright (c) 2003 by Yuri Prokushev (prokushev@freemail.ru).
 | |
| 
 | |
|     OS/2 Presentation Manager Window Manager - Bidirectional
 | |
|     support include file.
 | |
| 
 | |
|     See the file COPYING.FPC, included in this distribution,
 | |
|     for details about the copyright.
 | |
| 
 | |
|     This program is distributed in the hope that it will be useful,
 | |
|     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
| 
 | |
|  **********************************************************************}
 | |
| 
 | |
| {Warning: This code is alfa. Future versions
 | |
|  of this unit might not be compatible.}
 | |
| 
 | |
| unit pmbidi;
 | |
| 
 | |
| interface
 | |
| 
 | |
| uses os2def, pmwin;
 | |
| 
 | |
| 
 | |
| {$PACKRECORDS C}
 | |
| 
 | |
|   {                                                                       }
 | |
|   { Bidirectional languages support window messages                       }
 | |
|   {                                                                       }
 | |
| 
 | |
|   const
 | |
|      WM_SETBIDIATTR = $0BD0;
 | |
|      WM_QUERYBIDIATTR = $0BD1;
 | |
|      WM_SETBIDISTAT = $0BD2;
 | |
|      WM_QUERYBIDISTAT = $0BD3;
 | |
|      WM_KBDLAYERCHANGED = $0BD4;
 | |
|   {                                                                       }
 | |
|   {  Language Viewer messages                                             }
 | |
|   {                                                                       }
 | |
|      WM_LANGVIEWINFOCHANGED = $0BE0;
 | |
|      WM_LANG_OPTIONS_DIALOG = $0BE2;
 | |
|      WM_LANGOPTIONSDIALOG = $0BE2;
 | |
|   { LVI values - indicating which Bidi information has changed  }
 | |
|      LVI_WND_BIDI_ATTR = 1;
 | |
|      LVI_WND_BIDI_STAT = 2;
 | |
|      LVI_FOCUS_CHANGE = 3;
 | |
|      LVI_KBD_LAYER = 4;
 | |
|      LVI_CSD = 5;
 | |
|      LVI_SET_KBD_LAYER = 6;
 | |
|      LVI_ALL = -(1);
 | |
|   { Possible return values from WM_SETBIDIATTR/WM_SETBIDISTAT  }
 | |
|      SBI_MSG_NOT_PROCESSED = 0;
 | |
|      SBI_MSG_PROCESSED = 1;
 | |
|      SBI_MSG_PROCESSED_SELF = 2;
 | |
|   {                                                                       }
 | |
|   { Bidirectional attributes masks                                        }
 | |
|   {                                                                       }
 | |
|      BDAM_INIT = $80000000;
 | |
|      BDAM_LEVEL = $70000000;
 | |
|      BDAM_NATIVE = $08000000;
 | |
|      BDAM_TEXTTYPE = $01000000;
 | |
|      BDAM_TEXT_ORIENTATION = $00030000;
 | |
|      BDAM_WND_ORIENTATION = $00100000;
 | |
|      BDAM_NUMERALS = $00003000;
 | |
|      BDAM_SYM_SWAP = $00000100;
 | |
|      BDAM_WORD_BREAK = $00000200;
 | |
|      BDAM_TEXT_SHAPE = $000000FF;
 | |
|      BDAM_ALL=(BDAM_INIT or
 | |
|    BDAM_LEVEL            or
 | |
|    BDAM_TEXTTYPE         or
 | |
|    BDAM_NATIVE           or
 | |
|    BDAM_TEXT_ORIENTATION or
 | |
|    BDAM_WND_ORIENTATION  or
 | |
|    BDAM_NUMERALS         or
 | |
|    BDAM_SYM_SWAP         or
 | |
|    BDAM_WORD_BREAK       or
 | |
|    BDAM_TEXT_SHAPE         );
 | |
|     {                                                                       }
 | |
|     { Bidirectional attributes values (in Bidi attributes word)             }
 | |
|     {                                                                       }
 | |
|     { Note: Value of the attributes must match the values in layout.h.      }
 | |
|     {                                                                       }
 | |
|        BDA_INIT = $80000000;
 | |
|        BDA_LEVEL = $30000000;
 | |
|        BDA_NATIVE_OFF = $00000000;
 | |
|        BDA_NATIVE_ON = $08000000;
 | |
|        BDA_TEXTTYPE_VISUAL = $00000000;
 | |
|        BDA_TEXTTYPE_IMPLICIT = $01000000;
 | |
|        BDA_WND_ORIENT_LTR = $00000000;
 | |
|        BDA_WND_ORIENT_RTL = $00100000;
 | |
|        BDA_TEXT_ORIENT_LTR = $00000000;
 | |
|        BDA_TEXT_ORIENT_RTL = $00010000;
 | |
|        BDA_TEXT_ORIENT_DYNAMIC = $00020000;
 | |
|        BDA_TEXT_ORIENT_CONTEXT = $00020000;
 | |
|        BDA_NUMERALS_NOMINAL = $00000000;
 | |
|        BDA_NUMERALS_PASSTHRU = $00001000;
 | |
|        BDA_NUMERALS_NATIONAL = $00002000;
 | |
|        BDA_NUMERALS_CONTEXTUAL = $00003000;
 | |
|        BDA_SYM_SWAP_OFF = $00000000;
 | |
|        BDA_SYM_SWAP_ON = $00000100;
 | |
|        BDA_WORD_BREAK_OFF = $00000000;
 | |
|        BDA_WORD_BREAK_ON = $00000200;
 | |
|        BDA_TEXT_DISPLAY_SHAPED = $00000000;
 | |
|        BDA_TEXT_SAVE_SHAPED = $00000001;
 | |
|        BDA_TEXT_NOMINAL = $00000010;
 | |
|        BDA_TEXT_INITIAL = $00000011;
 | |
|        BDA_TEXT_MIDDLE = $00000012;
 | |
|        BDA_TEXT_FINAL = $00000013;
 | |
|        BDA_TEXT_ISOLATED = $00000014;
 | |
|     {                                                                       }
 | |
|     { Bidirectional attribute (BIDIATTR) as specified in a window template  }
 | |
|     { or in the resource script.                                            }
 | |
|     {                                                                       }
 | |
| type
 | |
|        BIDIPARAM = PRESPARAMS;
 | |
| 
 | |
| const
 | |
|     { First BidiAttr PresParam   }
 | |
|        PP_BDATTR_FIRST = $100;
 | |
|     {                            }
 | |
|     { Set ALL Bidi attrs         }
 | |
|        PP_BDATTR_ALL = $101;
 | |
|     {                            }
 | |
|     { Text/Data type             }
 | |
|        PP_BDATTR_TEXTTYPE = $102;
 | |
|     { Text Orientation           }
 | |
|        PP_BDATTR_TEXT_ORIENTATION = $103;
 | |
|     { Window Orientation         }
 | |
|        PP_BDATTR_WND_ORIENTATION = $104;
 | |
|     { Arabic/Hindi Numerals      }
 | |
|        PP_BDATTR_NUMERALS = $105;
 | |
|     { Symetric Swapping          }
 | |
|        PP_BDATTR_SYM_SWAP = $106;
 | |
|     { Word break                 }
 | |
|        PP_BDATTR_WORD_BREAK = $107;
 | |
|     { Char Shape Determination   }
 | |
|        PP_BDATTR_TEXT_SHAPE = $108;
 | |
|     {                            }
 | |
|     { Last BidiAttr PresParam    }
 | |
|        PP_BDATTR_LAST = $108;
 | |
|     {                            }
 | |
|     { Bidirectional status flags }
 | |
|        PP_BDSTATUS = $110;
 | |
|     {                                                                       }
 | |
|     { Values used in Set/Query Bidirectional status word                    }
 | |
|     {                                                                       }
 | |
|        BDS_HKFLAG_ENG_LAYER = $00010000;
 | |
|        BDS_HKFLAG_NAT_LAYER = $00020000;
 | |
|        BDS_HKFLAG_PUSH = $00040000;
 | |
|        BDS_HKFLAG_END_PUSH = $00080000;
 | |
|        BDS_HKFLAG_AUTO_PUSH = $00100000;
 | |
|        BDS_HKFLAG_FIELD_REV = $00200000;
 | |
|        BDS_HKFLAG_SCREEN_REV = $00400000;
 | |
|        BDS_HKFLAG_STATUS_INDICATOR = $02000000;
 | |
|        BDS_HKFLAG_DISPLAY_SHAPED = $04000000;
 | |
|        BDS_HKFLAG_INITIAL = $08000000;
 | |
|        BDS_HKFLAG_MIDDLE = $10000000;
 | |
|        BDS_HKFLAG_FINAL = $20000000;
 | |
|        BDS_HKFLAG_ISOLATED = $40000000;
 | |
|        BDS_HKFLAG_SAVE_SHAPED = $80000000;
 | |
|        BDS_HKFLAG_ENTRY_SWITCH_UI = $00800000;
 | |
|        BDS_FAUTOPUSH_RTL_ON = $00000001;
 | |
|        BDS_FAUTOPUSH_LTR_ON = $00000002;
 | |
|        BDS_FPUSH_ON = $00000004;
 | |
|        BDS_DISABLE_INPUT_PROCESSING = $00000020;
 | |
|     {                                                                       }
 | |
|     { Bidirectional status masks                                            }
 | |
|     {                                                                       }
 | |
|        BDSM_HKFLAGS = $FE7F0000;
 | |
|        BDSM_AUTOPUSH_RTL = $00000001;
 | |
|        BDSM_AUTOPUSH_LTR = $00000002;
 | |
|        BDSM_PUSH_ON = $00000004;
 | |
|        BDSM_DISABLE_INPUT_PROCESSING = $00000020;
 | |
|        BDSM_ALL     =     ( BDSM_HKFLAGS      or
 | |
|                             BDSM_AUTOPUSH_RTL or
 | |
|                             BDSM_AUTOPUSH_LTR or
 | |
|                             BDSM_PUSH_ON      or
 | |
|                             BDSM_DISABLE_INPUT_PROCESSING );
 | |
|     {                                                                       }
 | |
|     { Functions to Set/Query Bidirectional Langugage Information            }
 | |
|     {                                                                       }
 | |
|     { Process Bidi attributes     }
 | |
|        LI_BD_PROCESS_ATTR = $00000010;
 | |
|     { Process Bidi attributes     }
 | |
|        LI_BD_PROCESS_STAT = $00000011;
 | |
|     { Window Bidi Attributes      }
 | |
|        LI_BD_WND_ATTR = $00000020;
 | |
|     { Window Bidi Status          }
 | |
|        LI_BD_WND_STAT = $00000021;
 | |
|     { Clipboard Bidi Attributes   }
 | |
|        LI_BD_CLIP_ATTR = $00000030;
 | |
|     { Clipboard Conversion Bidi Attributes   }
 | |
|        LI_BD_CLIP_CONV_ATTR = $00000031;
 | |
|     { Values used in WinSet/QueryLangInfo (in flFlags);  }
 | |
|     { No message is sent to the  }
 | |
|        LIF_NO_SENDMSG = $00000001;
 | |
|     { window to inform it of the }
 | |
|     { change                     }
 | |
|     { Send SetBidiAttr msg to    }
 | |
|        LIF_CHILD_INHERIT = $00000002;
 | |
|     { all child windows.         }
 | |
|     { Refresh all windows whose  }
 | |
|        LIF_WND_REFRESH = $00000004;
 | |
|     { bidi attributes are set    }
 | |
|     { directly by the API (and   }
 | |
|     { not by a sent message.     }
 | |
|     {                                                                       }
 | |
|     { Flags for WinSetKbdLayer                                              }
 | |
|     {                                                                       }
 | |
|        SKLF_SENDMSG = $00000001;
 | |
|     {                                                                       }
 | |
|     { Keyboard layers for WinSetKbdLayer                                    }
 | |
|     {                                                                       }
 | |
|        KL_LATIN = $00000000;
 | |
|        KL_NATIONAL = $00000001;
 | |
|     {                                                                       }
 | |
|     { Keyboard layouts for WinSetKbdLayout                                  }
 | |
|     {                                                                       }
 | |
|     { VKey                               }
 | |
|        KBDL_VKEY = 1;
 | |
|     { Belgium        - 120               }
 | |
|        KBDL_BE = 2;
 | |
|     { Canadian       - 058 French        }
 | |
|        KBDL_CF = 3;
 | |
|     { Denmark        - 159               }
 | |
|        KBDL_DK = 4;
 | |
|     { France         - 189               }
 | |
|        KBDL_FR = 5;
 | |
|     { Germany        - 129               }
 | |
|        KBDL_GR = 6;
 | |
|     { Germany        - 129               }
 | |
|        KBDL_DE = 6;
 | |
|     { Italy          - 141               }
 | |
|        KBDL_IT = 7;
 | |
|     { Latin America  - 171               }
 | |
|        KBDL_LA = 8;
 | |
|     { Netherlands    - 143               }
 | |
|        KBDL_NL = 9;
 | |
|     { Norway         - 155               }
 | |
|        KBDL_NO = 10;
 | |
|     { Portugal       - 163               }
 | |
|        KBDL_PO = 11;
 | |
|     { Swiss-French   - 150f              }
 | |
|        KBDL_SF = 12;
 | |
|     { Swiss-German   - 150d              }
 | |
|        KBDL_SG = 13;
 | |
|     { Spain          - 172               }
 | |
|        KBDL_ES = 14;
 | |
|     { Finland        - 153               }
 | |
|        KBDL_FI = 15;
 | |
|     { Sweden         - 153               }
 | |
|        KBDL_SV = 16;
 | |
|     { United Kingdom - 166               }
 | |
|        KBDL_UK = 17;
 | |
|     { United States  - 103p              }
 | |
|        KBDL_US = 18;
 | |
|     { French         - 120               }
 | |
|        KBDL_FR120 = 19;
 | |
|     { Italian        - 142               }
 | |
|        KBDL_IT142 = 20;
 | |
|     { United Kingdom - 168               }
 | |
|        KBDL_UK168W = 21;
 | |
|     { Turkey         - 179               }
 | |
|        KBDL_TR = 22;
 | |
|     { Czech          - 243               }
 | |
|        KBDL_CZ = 23;
 | |
|     { Slovakia       - 245               }
 | |
|        KBDL_SK = 24;
 | |
|     { Hungarian      - 208               }
 | |
|        KBDL_HU = 25;
 | |
|     { Croatia        - 234               }
 | |
|        KBDL_HR = 26;
 | |
|     { Poland         - 163               }
 | |
|        KBDL_PL = 27;
 | |
|     { Iceland        - 197               }
 | |
|        KBDL_IS = 28;
 | |
|     { Brazil         - 275               }
 | |
|        KBDL_BR = 29;
 | |
|     { Hebrew         - 212 Latin         }
 | |
|        KBDL_HE_LATIN = 30;
 | |
|     { Hebrew         - 212 Hebrew        }
 | |
|        KBDL_HE_NATIONAL = 31;
 | |
|     { Arabic         - 238 Latin         }
 | |
|        KBDL_AR_LATIN = 32;
 | |
|     { Arabic         - 238 Arabic        }
 | |
|        KBDL_AR_NATIONAL = 33;
 | |
|     { Brazil         - 274               }
 | |
|        KBDL_BR274 = 34;
 | |
|     { Greek          - 319 Latin         }
 | |
|        KBDL_GK_LAT319 = 35;
 | |
|     { Greek          - 319 Greek         }
 | |
|        KBDL_GK_NAT319 = 36;
 | |
|     { Greek          - 220 Latin         }
 | |
|        KBDL_GK_LAT220 = 37;
 | |
|     { Greek          - 220 Greek         }
 | |
|        KBDL_GK_NAT220 = 38;
 | |
|     { Arabic         - 470 Latin         }
 | |
|        KBDL_AR_LAT470 = 39;
 | |
|     { Arabic         - 470 Arabic        }
 | |
|        KBDL_AR_NAT470 = 40;
 | |
|     { Turkey         - 440               }
 | |
|        KBDL_TR440 = 41;
 | |
|     { Slovenia       - 234               }
 | |
|        KBDL_SL = 42;
 | |
|     { Romania        - 446               }
 | |
|        KBDL_RO = 43;
 | |
|     { Bulgaria       - 442 Cyrillic      }
 | |
|        KBDL_BG_NATIONAL = 44;
 | |
|     { Bulgaria       - 442 Latin         }
 | |
|        KBDL_BG_LATIN = 45;
 | |
|     { Macedonia      - 449 Cyrillic      }
 | |
|        KBDL_MK_NATIONAL = 46;
 | |
|     { Macedonia      - 449 Latin         }
 | |
|        KBDL_MK_LATIN = 47;
 | |
|     { Serbia         - 450 Cyrillic      }
 | |
|        KBDL_SR_NATIONAL = 48;
 | |
|     { Serbia         - 450 Latin         }
 | |
|        KBDL_SR_LATIN = 49;
 | |
|     { Russia         - 441 Cyrillic      }
 | |
|        KBDL_RU_NATIONAL = 50;
 | |
|     { Russia         - 441 Latin         }
 | |
|        KBDL_RU_LATIN = 51;
 | |
|     { Poland         - 274 Programmer    }
 | |
|        KBDL_PL274 = 52;
 | |
|     { Russia         - 443 Cyrillic      }
 | |
|        KBDL_RU_NAT443 = 53;
 | |
|     { Russia         - 443 Latin         }
 | |
|        KBDL_RU_LAT443 = 54;
 | |
|     { Bosnia         - 234               }
 | |
|        KBDL_BA = 55;
 | |
|     { Albania        - 452               }
 | |
|        KBDL_SQ = 56;
 | |
|     { International  - 103               }
 | |
|        KBDL_US_INTER = 57;
 | |
|     { Canadian       - 445               }
 | |
|        KBDL_CA = 58;
 | |
|     { Canadian       - 501               }
 | |
|        KBDL_CA_EXTRA = 59;
 | |
|     { German         - 453               }
 | |
|        KBDL_DE453 = 60;
 | |
|     { German         - 500               }
 | |
|        KBDL_DE_EXTRA = 61;
 | |
|     { Iceland        - 458               }
 | |
|        KBDL_IS458 = 62;
 | |
|     { Estonia        - 454               }
 | |
|        KBDL_EE = 63;
 | |
|     { Thai Kbd       - Latin for 874     }
 | |
|        KBDL_TH_LATIN = 64;
 | |
|     { Thai Kbd       - Pattachot for 874 }
 | |
|        KBDL_TH_PAT = 65;
 | |
|     { Thai Kbd                           }
 | |
|        KBDL_TH_PAT_CAP = 66;
 | |
|     { Thai Kbd       - Kesmanee for 874  }
 | |
|        KBDL_TH_KES = 67;
 | |
|     { Thai Kbd                           }
 | |
|        KBDL_TH_KES_CAP = 68;
 | |
|     { Thai Kbd       - Pattachot for 850 }
 | |
|        KBDL_TH_COMP_PAT = 69;
 | |
|     { Thai Kbd                           }
 | |
|        KBDL_TH_COMP_PAT_CAP = 70;
 | |
|     { Thai Kbd       - Kesmanee for 850  }
 | |
|        KBDL_TH_COMP_KES = 71;
 | |
|     { Thai Kbd                           }
 | |
|        KBDL_TH_COMP_KES_CAP = 72;
 | |
|     { US Dvorak      -                   }
 | |
|        KBDL_US_DV = 73;
 | |
|     { US Left        -                   }
 | |
|        KBDL_US_LEFT = 74;
 | |
|     { US Right       -                   }
 | |
|        KBDL_US_RIGHT = 75;
 | |
|     { Lithuania      - 456 - National    }
 | |
|        KBDL_LTL = 76;
 | |
|     { Lithuania      - 456 - Programmer  }
 | |
|        KBDL_LTP = 77;
 | |
|     { Latvia 455     - 455 - National    }
 | |
|        KBDL_LVL = 78;
 | |
|     { Latvia 455     - 455 - Programmer  }
 | |
|        KBDL_LVP = 79;
 | |
|     { Japan Latin                        }
 | |
|        KBDL_JALPHANUMERIC = 80;
 | |
|        KBDL_JP = 80;
 | |
|     { Japan Katakana                     }
 | |
|        KBDL_JKATAKANA = 81;
 | |
|     { Japan Katakana Romanji             }
 | |
|        KBDL_JKATAKANAROMAN = 82;
 | |
|     { Japan Hiragana                     }
 | |
|        KBDL_JHIRAGANA = 83;
 | |
|     { Japan Hiragana Romanji             }
 | |
|        KBDL_JHIRAGANAROMAN = 84;
 | |
|        KBDL_JCAPSALPHANUMERIC = 85;
 | |
|     { Korean                             }
 | |
|        KBDL_KALPHANUMERIC = 86;
 | |
|        KBDL_KR = 86;
 | |
|     { Korean national layer              }
 | |
|        KBDL_KJAMO = 87;
 | |
|     { Simplified Chinese                 }
 | |
|        KBDL_SALPHANUMERIC = 88;
 | |
|     { Traditional Chinese                }
 | |
|        KBDL_TALPHANUMERIC = 89;
 | |
|        KBDL_TW = 89;
 | |
|     { Belarus 463    - 463 - Latin       }
 | |
|        KBDL_BYL = 90;
 | |
|     { Belarus 463    - 463 - Cyrillic    }
 | |
|        KBDL_BYC = 91;
 | |
|     { Ukraine 465    - 465 - Latin       }
 | |
|        KBDL_UAL = 92;
 | |
|     { Ukraine 465    - 465 - Ukraine     }
 | |
|        KBDL_UAU = 93;
 | |
|     {                                                                       }
 | |
|     { Defines for use in WinQueryCpType                                     }
 | |
|     {                                                                       }
 | |
|     { Latin 1  }
 | |
|        CPTYPE_OTHER = 1;
 | |
|        CPTYPE_ARABIC = 2;
 | |
|        CPTYPE_BALTIC = 3;
 | |
|        CPTYPE_CYRILLIC = 4;
 | |
|        CPTYPE_GREEK = 5;
 | |
|        CPTYPE_HEBREW = 6;
 | |
|        CPTYPE_JAPANESE = 7;
 | |
|        CPTYPE_KOREAN = 8;
 | |
|        CPTYPE_LATIN2 = 9;
 | |
|        CPTYPE_SCHINESE = 10;
 | |
|        CPTYPE_TCHINESE = 11;
 | |
|        CPTYPE_THAI = 12;
 | |
|        CPTYPE_TURKISH = 13;
 | |
|        CPTYPE_UNICODE = 14;
 | |
|     { was #define dname def_expr }
 | |
|     function HMQ_SYSTEM : THMQ;
 | |
| 
 | |
|     {                                                                       }
 | |
|     { PM Bidirectional support - function prototypes.                       }
 | |
|     {                                                                       }
 | |
| 
 | |
| Function WinSetLangInfo(aHWND: HWND; ulEffect, ulData, flMask, flFlags,
 | |
|                         ulReserved: Cardinal ): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 20;
 | |
| 
 | |
| Function WinQueryLangInfo(ahwnd: HWND; ulEffect, flFlags, ulReserved: Cardinal): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 21;
 | |
| 
 | |
| Function WinSetKbdLayer(ahwnd: HWND; idKbdLayer, flFlags: Cardinal): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 22;
 | |
| 
 | |
| Function WinQueryKbdLayer(ahwnd: HWND): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 23;
 | |
| 
 | |
| Function WinQueryKbdLayout(hwndDesktop: HWND): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 23;
 | |
| 
 | |
| //Function WinSetKbdLayout(hwndDesktop: HWND; idKbdLayout: Cardinal): Longbool; cdecl;
 | |
| //    external '???';
 | |
| 
 | |
| Function WinSetLangViewer(ahab, hwndLangViewer: HAB; Codepage: Cardinal): HWND; cdecl;
 | |
|     external 'pmbidi' index 24;
 | |
| 
 | |
| Function WinQueryLangViewer(ahab: HAB; Codepage: Cardinal): HWND; cdecl;
 | |
|     external 'pmbidi' index 25;
 | |
| 
 | |
| Function GpiSetBidiAttr(ahps: HPS; BidiAttr: Cardinal): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 50;
 | |
| 
 | |
| Function GpiQueryBidiAttr(ahps: HPS): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 51;
 | |
| 
 | |
| Function WinQueryCpType(ahmq: HMQ): Cardinal; cdecl;
 | |
|     external 'pmbidi' index 60;
 | |
| 
 | |
|     {                                                                            }
 | |
|     {  Macros to manipulate Bidi values                                          }
 | |
|     {                                                                            }
 | |
|     {
 | |
|          Macro to make a BidiAttribute/Status ULONG from several fields
 | |
| 
 | |
|          Example :      SET_BD_VALUE(BidiAtts,
 | |
|                                      BDA_TEXT_ORIENT_RTL   | BDA_TEXTTYPE_IMPLICIT,
 | |
|                                      BDAM_TEXT_ORIENTATION | BDAM_TEXTTYPE)
 | |
| 
 | |
|         }
 | |
| //   #define SET_BD_VALUE(BidiValue,NewBidiValue,Mask) \
 | |
| //   (BidiValue = ((BidiValue & (~(Mask))) | (NewBidiValue & (Mask))))
 | |
| 
 | |
|     {
 | |
|          Macro to extract one or more fields from a BidiAttribute/Status ULONG
 | |
| 
 | |
|          Example :      Orientation = QUERY_BD_VALUE(BidiAtts,BDAM_TEXT_ORIENTATION)
 | |
| 
 | |
|         }
 | |
| //   ( ((ULONG)BidiValue) & ((ULONG)Mask) )
 | |
| const
 | |
|     {                                                                       }
 | |
|     { New CURSOR flags for Left-To-Right and Right-To-Left cursors          }
 | |
|     { These are in addtion to those in the CURSOR section in PMWIN.H        }
 | |
|     {                                                                       }
 | |
|        CURSOR_DIR_LTR = $0100;
 | |
|        CURSOR_DIR_RTL = $0300;
 | |
|     {                                                                            }
 | |
|     {  PM Bidi Error codes.                                                      }
 | |
|     {                                                                            }
 | |
|        PMERR_BIDI_FIRST = $10F0;
 | |
|        PMERR_BIDI_TEXT_CONV_FAILED = $10F0;
 | |
|        PMERR_BIDI_LAST = $10FF;
 | |
|     {                                                                            }
 | |
|     { Bidi virtual key definitions                                               }
 | |
|     {                                                                            }
 | |
|        VK_BIDI_FIRST = $E0;
 | |
|        VK_START_PUSH = $E0;
 | |
|        VK_END_PUSH = $E1;
 | |
|        VK_REVERSE_FIELD = $E2;
 | |
|        VK_REVERSE_WINDOW = $E3;
 | |
|        VK_AUTOPUSH = $E4;
 | |
|        VK_STATUS_INDICATOR = $E5;
 | |
|        VK_TEXT_DISPLAY_SHAPED = $E6;
 | |
|        VK_TEXT_INITIAL = $E7;
 | |
|        VK_TEXT_MIDDLE = $E8;
 | |
|        VK_TEXT_FINAL = $E9;
 | |
|        VK_TEXT_ISOLATED = $EA;
 | |
|        VK_TEXT_SAVE_SHAPED = $EB;
 | |
|        VK_REQUIRED_SPACE = $EC;
 | |
|        VK_LTR_MARKER = $ED;
 | |
|        VK_RTL_MARKER = $EE;
 | |
|        VK_ENTRY_SWITCH_UI = $EF;
 | |
|        VK_LAYER0 = $F0;
 | |
|        VK_LAYER1 = $F1;
 | |
|        VK_LAYER2 = $F2;
 | |
|        VK_LAYER3 = $F3;
 | |
|        VK_LATIN_LAYER = VK_LAYER0;
 | |
|        VK_NATIONAL_LAYER = VK_LAYER1;
 | |
|        VK_BIDI_LAST = $FF;
 | |
|     {                                                                       }
 | |
|     {  Language-sensitive definition for standard File and Font dialogs.    }
 | |
|     {                                                                       }
 | |
|     { Use National Language  }
 | |
| 
 | |
|     const
 | |
|        FNTS_NATIONAL_LANGUAGE = $80000000;
 | |
|     { Use National Language  }
 | |
|        FDS_NATIONAL_LANGUAGE = $80000000;
 | |
|     {                                                                       }
 | |
|     {  WM_ messages related to bidirectional language support for           }
 | |
|     {      CUATOOLS components.                                             }
 | |
|     {                                                                       }
 | |
|        CM_SETITEMBIDIATTR = $0390;
 | |
|        CM_SETFIELDBIDIATTR = $0391;
 | |
|        CM_QUERYITEMBIDIATTR = $0392;
 | |
|        CM_QUERYFIELDBIDIATTR = $0393;
 | |
|        BKM_SETSTATUSLINEBIDIATTR = $0394;
 | |
|        BKM_QUERYSTATUSLINEBIDIATTR = $0395;
 | |
|        BKM_SETTABTEXTBIDIATTR = $0396;
 | |
|        BKM_QUERYTABTEXTBIDIATTR = $0397;
 | |
|        VM_SETITEMBIDIATTR = $0398;
 | |
|        VM_QUERYITEMBIDIATTR = $0399;
 | |
|     { bam  }
 | |
|     { Bidirectional Attributes word  }
 | |
|     { Bitmask to define which bidi   }
 | |
| 
 | |
|     type
 | |
| 
 | |
|        TBD_ATTR_MASK = record
 | |
|             ulBdAttr : Cardinal;
 | |
|             ulBdMask : Cardinal;
 | |
|          end;
 | |
|     { attributes are to be used.     }
 | |
| 
 | |
|        PBD_ATTR_MASK = ^TBD_ATTR_MASK;
 | |
|     {                                                                     }
 | |
|     { BOOKPAGEBIDIINFO structure is pointed to from the BOOKPAGEINFO      }
 | |
|     { structure (BKM_SETPAGEINFO notebook message)                        }
 | |
|     {                                                                     }
 | |
|     { bkpgbdi  }
 | |
|     { Major Tab Text BD_ATTR_MASK struct.    }
 | |
|     { Minor Tab Text BD_ATTR_MASK struct.    }
 | |
|     { Status Line Text BD_ATTR_MASK struct.  }
 | |
| 
 | |
|        TBOOKPAGEBIDIINFO = record
 | |
|             bamMajorTab : TBD_ATTR_MASK;
 | |
|             bamMinorTab : TBD_ATTR_MASK;
 | |
|             bamStatusLine : TBD_ATTR_MASK;
 | |
|          end;
 | |
| 
 | |
|        PBOOKPAGEBIDIINFO = ^TBOOKPAGEBIDIINFO;
 | |
| 
 | |
| implementation
 | |
| 
 | |
|     { was #define dname def_expr }
 | |
|     function HMQ_SYSTEM : THMQ;
 | |
|         begin
 | |
|            HMQ_SYSTEM:=THMQ(0);
 | |
|         end;
 | |
| 
 | |
| 
 | |
| end.
 | |
| 
 | |
| {
 | |
| $Log$
 | |
| Revision 1.2  2003-06-26 17:20:04  yuri
 | |
| * Misstyping fixed
 | |
| 
 | |
| Revision 1.1  2003/06/26 17:11:23  yuri
 | |
| * Initial import
 | |
| 
 | |
| }
 | 
