Browse Source

* Initial import

yuri 22 years ago
parent
commit
978483f87d
4 changed files with 635 additions and 141 deletions
  1. 24 135
      rtl/os2/Makefile
  2. 2 2
      rtl/os2/Makefile.fpc
  3. 606 0
      rtl/os2/pmbidi.pas
  4. 3 4
      rtl/os2/todo-os2.txt

+ 24 - 135
rtl/os2/Makefile

@@ -1,8 +1,8 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 1.1 [2003/04/04]
+# Don't edit, this file is generated by FPCMake Version 1.1 [2002/09/26]
 #
 #
 default: all
 default: all
-MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx palmos macos macosx emx
+MAKEFILETARGETS=linux go32v2 win32 os2 freebsd beos netbsd amiga atari sunos qnx netware openbsd wdosx
 override PATH:=$(subst \,/,$(PATH))
 override PATH:=$(subst \,/,$(PATH))
 ifeq ($(findstring ;,$(PATH)),)
 ifeq ($(findstring ;,$(PATH)),)
 inUnix=1
 inUnix=1
@@ -58,9 +58,6 @@ ifdef inUnix
 PATHSEP=/
 PATHSEP=/
 else
 else
 PATHSEP:=$(subst /,\,/)
 PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
 endif
 endif
 ifdef PWD
 ifdef PWD
 BASEDIR:=$(subst \,/,$(shell $(PWD)))
 BASEDIR:=$(subst \,/,$(shell $(PWD)))
@@ -90,8 +87,8 @@ endif
 endif
 endif
 export ECHO
 export ECHO
 endif
 endif
-override OS_TARGET_DEFAULT=os2
-override CPU_TARGET_DEFAULT=i386
+OS_TARGET=os2
+CPU_TARGET=i386
 override DEFAULT_FPCDIR=../..
 override DEFAULT_FPCDIR=../..
 ifndef FPC
 ifndef FPC
 ifdef PP
 ifdef PP
@@ -113,38 +110,37 @@ endif
 override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
 override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
 override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
 override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
 ifndef FPC_VERSION
 ifndef FPC_VERSION
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+FPC_VERSION:=$(shell $(FPC) -iV)
 endif
 endif
-export FPC FPC_VERSION FPC_COMPILERINFO
+export FPC FPC_VERSION
 unexport CHECKDEPEND ALLDEPENDENCIES
 unexport CHECKDEPEND ALLDEPENDENCIES
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+COMPILERINFO:=$(shell $(FPC) -iSP -iTP -iSO -iTO)
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 1,$(COMPILERINFO))
+endif
 ifndef CPU_TARGET
 ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
+CPU_TARGET:=$(word 2,$(COMPILERINFO))
 endif
 endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 3,$(COMPILERINFO))
 endif
 endif
 ifndef OS_TARGET
 ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
+OS_TARGET:=$(word 4,$(COMPILERINFO))
 endif
 endif
+else
 ifndef CPU_SOURCE
 ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+CPU_SOURCE:=$(shell $(FPC) -iSP)
 endif
 endif
 ifndef CPU_TARGET
 ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+CPU_TARGET:=$(shell $(FPC) -iTP)
 endif
 endif
 ifndef OS_SOURCE
 ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+OS_SOURCE:=$(shell $(FPC) -iSO)
 endif
 endif
 ifndef OS_TARGET
 ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+OS_TARGET:=$(shell $(FPC) -iTO)
+endif
 endif
 endif
 FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
 FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
 FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
 FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
@@ -220,7 +216,7 @@ override FPCOPT+=-Ur
 endif
 endif
 OBJPASDIR=$(RTL)/objpas
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
 GRAPHDIR=$(INC)/graph
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock dos crt objects printer sysutils math typinfo varutils charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings ports os2def doscalls moncalls kbdcalls moucalls viocalls pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi dos crt objects printer sysutils math typinfo varutils charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs video mouse keyboard variants types
 override TARGET_LOADERS+=prt0 prt1
 override TARGET_LOADERS+=prt0 prt1
 override TARGET_RSTS+=math varutils typinfo variants pmhelp
 override TARGET_RSTS+=math varutils typinfo variants pmhelp
 override INSTALL_FPCPACKAGE=y
 override INSTALL_FPCPACKAGE=y
@@ -432,97 +428,6 @@ SHAREDLIBEXT=.so
 STATICLIBPREFIX=libp
 STATICLIBPREFIX=libp
 RSTEXT=.rst
 RSTEXT=.rst
 FPCMADE=fpcmade
 FPCMADE=fpcmade
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.v1
-PACKAGESUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-FPCMADE=fpcmade.dos
-ZIPSUFFIX=go32
-endif
-ifeq ($(OS_TARGET),linux)
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.lnx
-ZIPSUFFIX=linux
-endif
-ifeq ($(OS_TARGET),freebsd)
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.freebsd
-ZIPSUFFIX=freebsd
-endif
-ifeq ($(OS_TARGET),netbsd)
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.netbsd
-ZIPSUFFIX=netbsd
-endif
-ifeq ($(OS_TARGET),openbsd)
-EXEEXT=
-HASSHAREDLIB=1
-FPCMADE=fpcmade.openbsd
-ZIPSUFFIX=openbsd
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.w32
-ZIPSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.os2
-ZIPSUFFIX=os2
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),emx)
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-FPCMADE=fpcmade.emx
-ZIPSUFFIX=emx
-ECHO=echo
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-FPCMADE=fpcmade.amg
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-FPCMADE=fpcmade.ata
-endif
-ifeq ($(OS_TARGET),beos)
-EXEEXT=
-FPCMADE=fpcmade.be
-ZIPSUFFIX=be
-endif
-ifeq ($(OS_TARGET),sunos)
-EXEEXT=
-FPCMADE=fpcmade.sun
-ZIPSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-EXEEXT=
-FPCMADE=fpcmade.qnx
-ZIPSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-FPCMADE=fpcmade.nw
-ZIPSUFFIX=nw
-endif
-ifeq ($(OS_TARGET),macos)
-EXEEXT=
-FPCMADE=fpcmade.mcc
-endif
-else
 ifeq ($(OS_TARGET),go32v1)
 ifeq ($(OS_TARGET),go32v1)
 PPUEXT=.pp1
 PPUEXT=.pp1
 OEXT=.o1
 OEXT=.o1
@@ -637,8 +542,8 @@ ZIPSUFFIX=qnx
 endif
 endif
 ifeq ($(OS_TARGET),netware)
 ifeq ($(OS_TARGET),netware)
 STATICLIBPREFIX=
 STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
+PPUEXT=.ppn
+OEXT=.on
 ASMEXT=.s
 ASMEXT=.s
 SMARTEXT=.sl
 SMARTEXT=.sl
 STATICLIBEXT=.a
 STATICLIBEXT=.a
@@ -647,16 +552,6 @@ FPCMADE=fpcmade.nw
 ZIPSUFFIX=nw
 ZIPSUFFIX=nw
 EXEEXT=.nlm
 EXEEXT=.nlm
 endif
 endif
-ifeq ($(OS_TARGET),macos)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-FPCMADE=fpcmade.mcc
-endif
-endif
 ifndef ECHO
 ifndef ECHO
 ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
 ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
 ifeq ($(ECHO),)
 ifeq ($(ECHO),)
@@ -968,11 +863,6 @@ override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
 override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
 override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
 endif
 endif
 endif
 endif
-ifeq ($(OS_TARGET),linux)
-ifeq ($(FPC_VERSION),1.0.6)
-override FPCOPTDEF+=HASUNIX
-endif
-endif
 ifdef OPT
 ifdef OPT
 override FPCOPT+=$(OPT)
 override FPCOPT+=$(OPT)
 endif
 endif
@@ -1207,7 +1097,6 @@ fpc_baseinfo:
 	@$(ECHO)  Rm........ $(RMPROG)
 	@$(ECHO)  Rm........ $(RMPROG)
 	@$(ECHO)  GInstall.. $(GINSTALL)
 	@$(ECHO)  GInstall.. $(GINSTALL)
 	@$(ECHO)  Echo...... $(ECHO)
 	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
 	@$(ECHO)  Date...... $(DATE)
 	@$(ECHO)  Date...... $(DATE)
 	@$(ECHO)  FPCMake... $(FPCMAKE)
 	@$(ECHO)  FPCMake... $(FPCMAKE)
 	@$(ECHO)  PPUMove... $(PPUMOVE)
 	@$(ECHO)  PPUMove... $(PPUMOVE)

+ 2 - 2
rtl/os2/Makefile.fpc

@@ -9,7 +9,7 @@ main=rtl
 loaders=prt0 prt1
 loaders=prt0 prt1
 units=$(SYSTEMUNIT) objpas strings \
 units=$(SYSTEMUNIT) objpas strings \
       ports os2def doscalls moncalls kbdcalls moucalls viocalls \
       ports os2def doscalls moncalls kbdcalls moucalls viocalls \
-      pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock \
+      pmbitmap pmwin pmgpi pmstddlg pmhelp pmdev pmspl pmshl pmwp pmwsock pmbidi \
       dos crt objects printer \
       dos crt objects printer \
       sysutils math typinfo varutils \
       sysutils math typinfo varutils \
       charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs \
       charset ucomplex cpu mmx getopts heaptrc lineinfo dynlibs \
@@ -176,7 +176,7 @@ varutils$(PPUEXT) : $(OBJPASDIR)/cvarutil.inc $(OBJPASDIR)/varutils.inc \
         $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
         $(COMPILER) -I$(OBJPASDIR) varutils.pp $(REDIR)
 
 
 types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 types$(PPUEXT) : $(OBJPASDIR/types.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
-	$(COMPILER) $(OBJPASDIR)/types.pp
+        $(COMPILER) $(OBJPASDIR)/types.pp
 
 
 #
 #
 # Other system-independent RTL Units
 # Other system-independent RTL Units

+ 606 - 0
rtl/os2/pmbidi.pas

@@ -0,0 +1,606 @@
+{
+    $Id$
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2003 by Yuri Prokushev ([email protected]).
+
+    OS/2 Presentation Manager Device Context constants, types and
+    function declarations
+
+    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}
+
+  {                              Module Header                               \
+
+    OS/2 Presentation Manager Window Manager - Bidirectional support include file.
+
+  \                                                                           }
+  {                                                                       }
+  { 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.1  2003-06-26 17:11:23  yuri
+* Initial import
+
+}

+ 3 - 4
rtl/os2/todo-os2.txt

@@ -26,14 +26,13 @@ finish PM support                             high
           - PMDev...................................................YP
           - PMDev...................................................YP
           - PMSpl...................................................TH
           - PMSpl...................................................TH
           - PMShl...................................................YP
           - PMShl...................................................YP
-    - PMBidi
+          - PMBidi..................................................YP
     - PMDdi
     - PMDdi
     - PMdjp.h (PMWin?)
     - PMdjp.h (PMWin?)
     - PMFont.h (PMWin?)
     - PMFont.h (PMWin?)
-    - PMMle.h (PMWin?)
     - PMSei.h (PMWin?)
     - PMSei.h (PMWin?)
-    - PMWP
-    - PMWSock
+          - PMWP....................................................YP
+          - PMWSock.................................................YP
 
 
 RTL                                           high
 RTL                                           high
     - sockets
     - sockets