Browse Source

initial import

michael 26 years ago
parent
commit
37638f71d6
100 changed files with 28904 additions and 0 deletions
  1. 161 0
      packages/Makefile
  2. 152 0
      packages/forms/Makefile
  3. 38 0
      packages/forms/README
  4. 67 0
      packages/forms/USAGE
  5. 110 0
      packages/forms/cursorfont.inc
  6. 151 0
      packages/forms/demo/Makefile
  7. 0 0
      packages/forms/demo/align.pp
  8. 40 0
      packages/forms/demo/arrowbutton.pp
  9. 9 0
      packages/forms/demo/bm1.xbm
  10. 7 0
      packages/forms/demo/bm2.xbm
  11. 104 0
      packages/forms/demo/borderwidth.pp
  12. 222 0
      packages/forms/demo/boxtype.pp
  13. 178 0
      packages/forms/demo/browserall.pp
  14. 89 0
      packages/forms/demo/browserop.pp
  15. 112 0
      packages/forms/demo/buttonall.pp
  16. 95 0
      packages/forms/demo/butttypes.pp
  17. 243 0
      packages/forms/demo/canvas.pp
  18. 82 0
      packages/forms/demo/chartall.pp
  19. 121 0
      packages/forms/demo/chartstrip.pp
  20. 52 0
      packages/forms/demo/choice.pp
  21. 281 0
      packages/forms/demo/colbrowser.pp
  22. 8 0
      packages/forms/demo/colsel.pp
  23. 47 0
      packages/forms/demo/colsel1.pp
  24. 72 0
      packages/forms/demo/counter.pp
  25. 38 0
      packages/forms/demo/crab.xpm
  26. 38 0
      packages/forms/demo/crab45.xpm
  27. 90 0
      packages/forms/demo/cursor.pp
  28. 11 0
      packages/forms/demo/doc2p
  29. 84 0
      packages/forms/demo/fbrowse.pp
  30. 54 0
      packages/forms/demo/fbrowse1.pp
  31. 72 0
      packages/forms/demo/fdial.pp
  32. 47 0
      packages/forms/demo/flclock.pp
  33. 107 0
      packages/forms/demo/fonts.pp
  34. 84 0
      packages/forms/demo/free1.pp
  35. 49 0
      packages/forms/demo/goodies.pp
  36. 226 0
      packages/forms/demo/group.pp
  37. 37 0
      packages/forms/demo/iconify.pp
  38. 98 0
      packages/forms/demo/inputall.pp
  39. 469 0
      packages/forms/demo/inputall.s
  40. 67 0
      packages/forms/demo/invslider.pp
  41. 103 0
      packages/forms/demo/lalign.pp
  42. 64 0
      packages/forms/demo/ldial.pp
  43. 141 0
      packages/forms/demo/ll.pp
  44. 58 0
      packages/forms/demo/longlabel.pp
  45. 61 0
      packages/forms/demo/makefile.org
  46. 121 0
      packages/forms/demo/menu.pp
  47. 29 0
      packages/forms/demo/minput.pp
  48. 52 0
      packages/forms/demo/multilabel.pp
  49. 63 0
      packages/forms/demo/ndial.pp
  50. 152 0
      packages/forms/demo/newbutton.pp
  51. 58 0
      packages/forms/demo/nomail.xbm
  52. 112 0
      packages/forms/demo/objinactive.pp
  53. 46 0
      packages/forms/demo/objpos.pp
  54. 122 0
      packages/forms/demo/objreturn.pp
  55. 72 0
      packages/forms/demo/porsche.xpm
  56. 56 0
      packages/forms/demo/positioner.pp
  57. 236 0
      packages/forms/demo/pup.pp
  58. 45 0
      packages/forms/demo/pushbutton.pp
  59. 17 0
      packages/forms/demo/pushme.pp
  60. 29 0
      packages/forms/demo/secretinput.pp
  61. 75 0
      packages/forms/demo/sliderall.pp
  62. 68 0
      packages/forms/demo/srs.xbm
  63. 54 0
      packages/forms/demo/touchbutton.pp
  64. 71 0
      packages/forms/demo/xyplotover.pp
  65. 25 0
      packages/forms/demo/yesno.pp
  66. 1133 0
      packages/forms/fd2pascal.pp
  67. 3452 0
      packages/forms/forms-86.pp
  68. 3716 0
      packages/forms/forms-88.pp
  69. 3716 0
      packages/forms/forms.pp
  70. 568 0
      packages/forms/x.pp
  71. 2098 0
      packages/forms/xlib.pp
  72. 457 0
      packages/forms/xresource.pp
  73. 893 0
      packages/forms/xutil.pp
  74. 140 0
      packages/ibase/Makefile
  75. 42 0
      packages/ibase/README
  76. 1847 0
      packages/ibase/ibase.pp
  77. 37 0
      packages/ibase/mkdb
  78. 26 0
      packages/ibase/mkdb.bat
  79. 13 0
      packages/ibase/mkdb.sqd
  80. 147 0
      packages/ibase/testib.pp
  81. 128 0
      packages/inet/Makefile
  82. 556 0
      packages/inet/inet.pp
  83. 54 0
      packages/inet/pfinger.pp
  84. 249 0
      packages/inet/testinet.pp
  85. 139 0
      packages/mysql/Makefile
  86. 30 0
      packages/mysql/README
  87. 28 0
      packages/mysql/mkdb
  88. 309 0
      packages/mysql/mysql.pp
  89. 215 0
      packages/mysql/mysql_com.pp
  90. 19 0
      packages/mysql/mysql_version.pp
  91. 21 0
      packages/mysql/mysqls.c
  92. 17 0
      packages/mysql/mysqls.pp
  93. 16 0
      packages/mysql/rmdb
  94. 81 0
      packages/mysql/testdb.pp
  95. 138 0
      packages/ncurses/Makefile
  96. 21 0
      packages/ncurses/README
  97. 154 0
      packages/ncurses/firework.pp
  98. 744 0
      packages/ncurses/ncurses.h
  99. 1731 0
      packages/ncurses/ncurses.pp
  100. 27 0
      packages/ncurses/testn.pp

+ 161 - 0
packages/Makefile

@@ -0,0 +1,161 @@
+#
+#   $Id$
+#   Copyright (c) 1999 by the Free Pascal Development Team
+#
+#   Makefile for <template> for Free Pascal
+#
+#   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.
+#
+#####################################################################
+# Defaults
+#####################################################################
+
+
+# Where are the include files located
+INC=
+PROCINC=
+OSINC=
+
+# Needed options, without it won't compile
+NEEDOPT=
+
+# Needed unit dir, which is searched as the first path
+NEEDUNITDIR=
+
+# Where need we to place the executables/ppu/objects
+TARGETDIR=
+UNITTARGETDIR=
+
+# As default make only the units
+#DEFAULTUNITS=1
+
+
+#####################################################################
+# Real targets
+#####################################################################
+
+all: alldirs;
+clean: cleanalldirs
+install: installalldirs
+
+#####################################################################
+# Include default makefile
+#####################################################################
+
+# test if FPCMAKE is still valid
+ifdef FPCMAKE
+ifeq ($(strip $(wildcard $(FPCMAKE))),)
+FPCDIR=
+FPCMAKE=
+endif
+endif
+
+ifndef FPCDIR
+ifdef DEFAULTFPCDIR
+FPCDIR=$(DEFAULTFPCDIR)
+endif
+endif
+
+ifndef FPCMAKE
+ifdef FPCDIR
+FPCMAKE=$(FPCDIR)/makefile.fpc
+else
+FPCMAKE=makefile.fpc
+endif
+endif
+
+override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
+ifeq ($(FPCMAKE),)
+testfpcmake:
+	@echo makefile.fpc not found!
+	@echo Check the FPCMAKE and FPCDIR environment variables.
+	@exit
+else
+include $(FPCMAKE)
+testfpcmake:
+endif
+
+
+#####################################################################
+# Targets
+#####################################################################
+# Construct real targets
+
+.PHONY: all clean install info alldirs\
+        staticlib sharedlib libsclean \
+        staticinstall sharedinstall libinstall
+
+
+clean: testfpcmake fpc_clean
+
+install: testfpcmake fpc_install
+
+info: testfpcmake fpc_info
+
+staticlib: testfpcmake fpc_staticlib
+
+sharedlib: testfpcmake fpc_sharedlib
+
+libsclean: testfpcmake fpc_libsclean
+
+staticinstall: testfpcmake fpc_staticinstall
+
+sharedinstall: testfpcmake fpc_sharedinstall
+
+libinstall: testfpcmake fpc_libinstall
+
+
+alldirs:
+	$(MAKE) -C ibase
+	$(MAKE) -C mysql
+	$(MAKE) -C uncgi
+ifdef inlinux
+	$(MAKE) -C utmp
+	$(MAKE) -C inet
+	$(MAKE) -C postgres
+	$(MAKE) -C ncurses
+	$(MAKE) -C forms
+	$(MAKE) -C svgalib
+endif
+
+cleanalldirs:
+
+	$(MAKE) -C ibase clean
+	$(MAKE) -C mysql clean
+	$(MAKE) -C uncgi clean
+ifdef inlinux
+	$(MAKE) -C utmp clean
+	$(MAKE) -C inet clean
+	$(MAKE) -C postgres clean
+	$(MAKE) -C ncurses clean
+	$(MAKE) -C forms clean
+	$(MAKE) -C svgalib clean
+endif
+
+installalldirs:
+	$(MAKE) -C ibase DEFAULTUNITS=1 install
+	$(MAKE) -C mysql DEFAULTUNITS=1 install
+	$(MAKE) -C uncgi DEFAULTUNITS=1 install
+ifdef inlinux
+	$(MAKE) -C utmp DEFAULTUNITS=1 install
+	$(MAKE) -C inet DEFAULTUNITS=1 install
+	$(MAKE) -C postgres DEFAULTUNITS=1 install
+	$(MAKE) -C ncurses DEFAULTUNITS=1 install
+	$(MAKE) -C forms DEFAULTUNITS=1 install
+	$(MAKE) -C svgalib DEFAULTUNITS=1 install
+endif
+
+#
+# $Log$
+# Revision 1.1  1999-05-12 00:11:27  michael
+# initial import
+#
+# Revision 1.1  1999/03/16 00:50:29  peter
+#   + init
+#
+#

+ 152 - 0
packages/forms/Makefile

@@ -0,0 +1,152 @@
+#
+#   $Id$
+#   Copyright (c) 1999 by the Free Pascal Development Team
+#
+#   Makefile for <template> for Free Pascal
+#
+#   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.
+#
+#####################################################################
+# Defaults
+#####################################################################
+
+# Version of forms
+FORMSVERSION=88
+#FORMSVERSION=86
+
+# Where are the include files located
+INC=
+PROCINC=
+OSINC=
+
+# Needed options, without it won't compile
+NEEDOPT=-S2
+
+# Needed unit dir, which is searched as the first path
+NEEDUNITDIR=
+
+# Define if forms library is not in /usr/lib 
+# FORMSLIBDIR=
+
+# Define if X library is not in /usr/lib 
+# XLIBDIR=
+
+# Where need we to place the executables/ppu/objects
+TARGETDIR=
+UNITTARGETDIR=
+
+# As default make only the units
+#DEFAULTUNITS=1
+
+# Uncomment this is the makefile.fpc isn't located in ../..
+DEFAULTFPCDIR=../..
+
+#####################################################################
+# Real targets
+#####################################################################
+
+UNITOBJECTS=x xresource xlib xutil forms
+EXEOBJECTS=fd2pascal
+
+#####################################################################
+# Common targets
+#####################################################################
+
+ifdef FORMSLLIBDIR 
+override NEEDLIBDIR+=$(FORMSLIBDIR)
+endif
+ifdef XLIBDIR 
+override NEEDLIBDIR+=$(XLIBDIR)
+endif
+
+#####################################################################
+# Common targets
+#####################################################################
+
+.PHONY: all clean install info \
+        staticlib sharedlib libsclean \
+        staticinstall sharedinstall libinstall demo\
+        
+all: testfpcmake fpc_all
+
+clean: testfpcmake fpc_clean
+
+install: testfpcmake fpc_install
+
+info: testfpcmake fpc_info
+
+staticlib: testfpcmake fpc_staticlib
+
+sharedlib: testfpcmake fpc_sharedlib
+
+libsclean: testfpcmake fpc_libsclean
+
+staticinstall: testfpcmake fpc_staticinstall
+
+sharedinstall: testfpcmake fpc_sharedinstall
+
+libinstall: testfpcmake fpc_libinstall
+
+demo:
+	$(MAKE) -C demo
+
+#####################################################################
+# Include default makefile
+#####################################################################
+
+# test if FPCMAKE is still valid
+ifdef FPCMAKE
+ifeq ($(strip $(wildcard $(FPCMAKE))),)
+FPCDIR=
+FPCMAKE=
+endif
+endif
+
+ifndef FPCDIR
+ifdef DEFAULTFPCDIR
+FPCDIR=$(DEFAULTFPCDIR)
+endif
+endif
+
+ifndef FPCMAKE
+ifdef FPCDIR
+FPCMAKE=$(FPCDIR)/makefile.fpc
+else
+FPCMAKE=makefile.fpc
+endif
+endif
+
+override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
+ifeq ($(FPCMAKE),)
+testfpcmake:
+	@echo makefile.fpc not found!
+	@echo Check the FPCMAKE and FPCDIR environment variables.
+	@exit
+else
+include $(FPCMAKE)
+testfpcmake:
+endif
+
+#####################################################################
+# Dependencies
+#####################################################################
+
+forms$(PPUEXT): forms-$(FORMSVERSION)$(PASEXT) x$(PPUEXT) xresource$(PPUEXT) xlib$(PPUEXT)\
+              xutil$(PPUEXT)
+	ln -sf forms-$(FORMSVERSION)$(PASEXT) forms$(PASEXT)
+	$(COMPILER) forms$(PASEXT)
+
+#
+# $Log$
+# Revision 1.1  1999-05-12 00:11:25  michael
+# initial import
+#
+# Revision 1.1  1999/03/16 00:50:29  peter
+#   + init
+#
+#

+ 38 - 0
packages/forms/README

@@ -0,0 +1,38 @@
+FPKPascal XForms support.
+-------------------------
+
+To compile the units in this directory, proceed as follows:
+
+0. You need an installed forms library. You need to know where it is
+   installed. Either version 0.86 or 0.88 will do. For version 0.88
+   you need version 0.99.8 or higher of the compiler.
+
+2. Edit the Makefile in the current directory . You have to specify:
+   - which version of the forms library you use (0.86 or 0.88)
+   - The place of the forms library. (if not in /usr/lib).
+   - The place of the X library. (should be /usr/X11/lib)
+   - Where you want the forms libraries installed.
+   - Where you want the fd2pascal filter installed.
+   - Optionally, the path to the compiler and the pascal units.
+
+3. You should be all set to compile. type 
+    make all 
+   This will compile all the needed units, and the fd2pascal program which
+   translates .fd design files to pascal programs.
+   As of version 0.88, the fdesign program can directly issue pascal
+   code if you have fd2pascal installed.
+
+4. To compile the demo programs, type (still in the forms directory)
+    make demo     
+   This will compile all the demo programs in the demo subdirectory.
+
+5. To install the units and the fd2pascal program, type 
+    make install
+   This will install all units and the program in the directories you 
+   specified. They will be created if they don't exist.
+
+More information on all this can be found on 
+  http://tfdec1.fys.kuleuven.ac.be/~michael/fpc-linux/forms.html
+
+Enjoy !
+Michael Van Canneyt ([email protected])

+ 67 - 0
packages/forms/USAGE

@@ -0,0 +1,67 @@
+The usage of the forms library is relatively straightforward.
+
+The interface has been designed as follows:
+
+- All functions and procedures have kept their names.
+- All types have a T appended in front of it.
+  If the forms manual speaks of a FL_OBJECT type, then the FPK port
+  has a TFL_OBJECT type.
+  (This is because of pascal's CaSe InSenSiTiViTy)
+- Pointers to all objects have been defined as Ptype_of_object.
+  In C   : FL_OBJECT *
+  in FPK : PFL_OBJECT = ^TFL_OBJECT
+- All 'int' declarations are 'longint' in fpkpascal.
+
+Check out the 'demo' directory for examples.
+
+Some fields of some structs have been renamed (fields as 'label' or 'type')
+when they were in conflict with Pascal reserved words. Unfortunately this
+has not been done in a consistent way. This will change in the future,
+hopefully. As a rule of thumb : reserved pascal words got the prefix 'the',
+so 'type' became 'thetype' etc.
+
+When in doubt : consult the interface part of 'forms.pp'
+
+How to compile an executable ?
+
+Easy as pie:
+The only thing that you must remember is to provide the linker with the
+path to the X-libraries, and the form libraries. You can set this through
+the '-k' option of -Fl option. 
+ 
+ppc386 -k-L/usr/X11/lib myprog.pp
+or
+ppc386 -Fl/usr/X11/lib myprog.pp
+
+Will do the trick in most cases.
+
+
+DESIGNING A FORM
+================
+
+As of version 0.88 of xforms, fdesign supports pascal directly !
+Using version 0.86, you can use the workaround described below:
+
+You can convert existing design programs as follows:
+version 0.86:
+  fdesign [other options] -convert -ada -filter fd2pascal file.fd
+version 0.88:
+  fdesign [other options] -convert -pascal file.fd
+
+or start a new design with
+version 0.86:
+  fdesign -ada -filter fd2pascal
+version 0.88:
+  fdesign -pascal
+
+This will emit pascal code. Use the following options
+ -callback
+   to emit procedure headers.
+ -main
+   to emit a program instead of a unit
+ -altformat
+   to use global variables instead of records.
+
+Enjoy !
+
+Michael Van Canneyt ([email protected])

+ 110 - 0
packages/forms/cursorfont.inc

@@ -0,0 +1,110 @@
+{ $XConsortium: cursorfont.h,v 1.4 94/04/17 20:22:00 rws Exp $ }
+{
+
+Copyright (c) 1987  X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+}
+
+Const
+  XC_num_glyphs= 154;
+  XC_X_cursor= 0;
+  XC_arrow= 2;
+  XC_based_arrow_down= 4;
+  XC_based_arrow_up= 6;
+  XC_boat= 8;
+  XC_bogosity= 10;
+  XC_bottom_left_corner= 12;
+  XC_bottom_right_corner= 14;
+  XC_bottom_side= 16;
+  XC_bottom_tee= 18;
+  XC_box_spiral= 20;
+  XC_center_ptr= 22;
+  XC_circle= 24;
+  XC_clock= 26;
+  XC_coffee_mug= 28;
+  XC_cross= 30;
+  XC_cross_reverse= 32;
+  XC_crosshair= 34;
+  XC_diamond_cross= 36;
+  XC_dot= 38;
+  XC_dotbox= 40;
+  XC_double_arrow= 42;
+  XC_draft_large= 44;
+  XC_draft_small= 46;
+  XC_draped_box= 48;
+  XC_exchange= 50;
+  XC_fleur= 52;
+  XC_gobbler= 54;
+  XC_gumby= 56;
+  XC_hand1= 58;
+  XC_hand2= 60;
+  XC_heart= 62;
+  XC_icon= 64;
+  XC_iron_cross= 66;
+  XC_left_ptr= 68;
+  XC_left_side= 70;
+  XC_left_tee= 72;
+  XC_leftbutton= 74;
+  XC_ll_angle= 76;
+  XC_lr_angle= 78;
+  XC_man= 80;
+  XC_middlebutton= 82;
+  XC_mouse= 84;
+  XC_pencil= 86;
+  XC_pirate= 88;
+  XC_plus= 90;
+  XC_question_arrow= 92;
+  XC_right_ptr= 94;
+  XC_right_side= 96;
+  XC_right_tee= 98;
+  XC_rightbutton= 100;
+  XC_rtl_logo= 102;
+  XC_sailboat= 104;
+  XC_sb_down_arrow= 106;
+  XC_sb_h_double_arrow= 108;
+  XC_sb_left_arrow= 110;
+  XC_sb_right_arrow= 112;
+  XC_sb_up_arrow= 114;
+  XC_sb_v_double_arrow= 116;
+  XC_shuttle= 118;
+  XC_sizing= 120;
+  XC_spider= 122;
+  XC_spraycan= 124;
+  XC_star= 126;
+  XC_target= 128;
+  XC_tcross= 130;
+  XC_top_left_arrow= 132;
+  XC_top_left_corner= 134;
+  XC_top_right_corner= 136;
+  XC_top_side= 138;
+  XC_top_tee= 140;
+  XC_trek= 142;
+  XC_ul_angle= 144;
+  XC_umbrella= 146;
+  XC_ur_angle= 148;
+  XC_watch= 150;
+  XC_xterm= 152;

+ 151 - 0
packages/forms/demo/Makefile

@@ -0,0 +1,151 @@
+#
+#   $Id$
+#   Copyright (c) 1999 by the Free Pascal Development Team
+#
+#   Makefile for <template> for Free Pascal
+#
+#   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.
+#
+#####################################################################
+# Defaults
+#####################################################################
+
+
+# Where are the include files located
+INC=
+PROCINC=
+OSINC=
+
+# Needed options, without it won't compile
+NEEDOPT=
+
+# Needed unit dir, which is searched as the first path
+NEEDUNITDIR=..
+
+# Define if forms library is not in /usr/lib 
+# FORMSLIBDIR=
+
+# Define if X library is not in /usr/lib 
+XLIBDIR=/usr/X11/lib
+
+# Where need we to place the executables/ppu/objects
+TARGETDIR=
+UNITTARGETDIR=
+
+# As default make only the units
+#DEFAULTUNITS=1
+
+# Uncomment this is the makefile.fpc isn't located in ../..
+DEFAULTFPCDIR=../../..
+
+#####################################################################
+# Real targets
+#####################################################################
+
+EXEOBJECTS=pushme yesno pushbutton touchbutton minput inputall choice butttypes\
+         colsel colsel1 buttonall chartall positioner secretinput cursor fdial\
+         ldial ndial invslider sliderall borderwidth boxtype xyplotover\
+         arrowbutton browserop browserall chartstrip colbrowser counter\
+         fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu\
+         objinactive objpos newbutton multilabel objreturn
+
+#####################################################################
+# Common targets
+#####################################################################
+
+ifdef FORMSLIBDIR 
+override NEEDLIBDIR+=$(FORMSLIBDIR)
+endif
+ifdef XLIBDIR 
+override NEEDLIBDIR+=$(XLIBDIR)
+endif
+
+#####################################################################
+# Common targets
+#####################################################################
+
+.PHONY: all clean install info \
+        staticlib sharedlib libsclean \
+        staticinstall sharedinstall libinstall \
+        
+all: testfpcmake fpc_all
+
+clean: testfpcmake fpc_clean
+
+install: testfpcmake fpc_install
+
+info: testfpcmake fpc_info
+
+staticlib: testfpcmake fpc_staticlib
+
+sharedlib: testfpcmake fpc_sharedlib
+
+libsclean: testfpcmake fpc_libsclean
+
+staticinstall: testfpcmake fpc_staticinstall
+
+sharedinstall: testfpcmake fpc_sharedinstall
+
+libinstall: testfpcmake fpc_libinstall
+
+
+#####################################################################
+# Include default makefile
+#####################################################################
+
+# test if FPCMAKE is still valid
+ifdef FPCMAKE
+ifeq ($(strip $(wildcard $(FPCMAKE))),)
+FPCDIR=
+FPCMAKE=
+endif
+endif
+
+ifndef FPCDIR
+ifdef DEFAULTFPCDIR
+FPCDIR=$(DEFAULTFPCDIR)
+endif
+endif
+
+ifndef FPCMAKE
+ifdef FPCDIR
+FPCMAKE=$(FPCDIR)/makefile.fpc
+else
+FPCMAKE=makefile.fpc
+endif
+endif
+
+override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
+ifeq ($(FPCMAKE),)
+testfpcmake:
+	@echo makefile.fpc not found!
+	@echo Check the FPCMAKE and FPCDIR environment variables.
+	@exit
+else
+include $(FPCMAKE)
+testfpcmake:
+endif
+
+#####################################################################
+# Dependencies
+#####################################################################
+
+forms$(PPUEXT): forms-$(FORMSVERSION)$(PASEXT) x$(PPUEXT) xresource$(PPUEXT) xlib$(PPUEXT)\
+              xutil$(PPUEXT)
+	ln -sf forms-$(FORMSVERSION)$(PASEXT) forms$(PASEXT)
+	$(COMPILER) forms$(PASEXT)
+
+#
+# $Log$
+# Revision 1.1  1999-05-12 00:11:24  michael
+# initial import
+#
+# Revision 1.1  1999/03/16 00:50:29  peter
+#   + init
+#
+#

+ 0 - 0
packages/forms/demo/align.pp


+ 40 - 0
packages/forms/demo/arrowbutton.pp

@@ -0,0 +1,40 @@
+{ This demo shows the use of special symbol labels }
+program arrowbutton;
+
+uses forms;
+
+const border : longint = FL_TRANSIENT;
+
+var 
+  form : PFL_FORM;
+  obj,but : PFL_OBJECT;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+  form := fl_bgn_form(FL_UP_BOX,400,400);
+    obj := fl_add_button(FL_NORMAL_BUTTON, 50, 250,100,100,'@1');
+    fl_set_object_lcol(obj,FL_BLUE);
+    obj := fl_add_button(FL_NORMAL_BUTTON,150, 250,100,100,'@2');
+    fl_set_object_lcol(obj,FL_BLUE);
+    obj := fl_add_button(FL_NORMAL_BUTTON,250, 250,100,100,'@3');
+    fl_set_object_lcol(obj,FL_BLUE);
+    obj := fl_add_button(FL_NORMAL_BUTTON, 50,150,100,100,'@4');
+    fl_set_object_lcol(obj,FL_BLUE);
+    but := fl_add_button(FL_NORMAL_BUTTON,150,150,100,100,'@square');
+    fl_set_object_lcol(but,FL_GREEN);
+    fl_set_object_color(but,FL_MAGENTA,FL_RED);
+    obj := fl_add_button(FL_NORMAL_BUTTON,250,150,100,100,'@6');
+    fl_set_object_lcol(obj,FL_BLUE);
+    obj := fl_add_button(FL_NORMAL_BUTTON, 50, 50,100,100,'@7');
+    fl_set_object_lcol(obj,FL_BLUE);
+    obj := fl_add_button(FL_NORMAL_BUTTON,150, 50,100,100,'@8');
+    fl_set_object_lcol(obj,FL_BLUE);
+    obj := fl_add_button(FL_NORMAL_BUTTON,250, 50,100,100,'@9');
+    fl_set_object_lcol(obj,FL_BLUE);
+  fl_end_form();
+
+  fl_show_form(form,FL_PLACE_ASPECT,border,'Buttons');
+  while (fl_do_forms() <> but) do;
+  fl_hide_form(form);
+end.

+ 9 - 0
packages/forms/demo/bm1.xbm

@@ -0,0 +1,9 @@
+const bm1_width: Longint = 16;
+    bm1_height : longint = 16;
+    bm1_bits : array [1..32] of byte =  
+    (
+    $00, $00, $00, $57, $7c, $72, $c4, $52, $c4, $00, $44, $01,
+    $44, $1f, $fc, $22, $40, $42, $40, $44, $40, $43, $c0, $40,
+    $70, $40, $8c, $20, $00, $1f, $00, $00
+    );
+

+ 7 - 0
packages/forms/demo/bm2.xbm

@@ -0,0 +1,7 @@
+Const 
+   bm2_width : longint = 16;
+   bm2_height : longint = 16;
+   bm2_bits : array[1..32] of byte = (
+   $00, $00, $00, $57, $7c, $72, $fc, $52, $fc, $00, $7c, $01,
+   $7c, $1f, $fc, $22, $40, $42, $40, $44, $40, $43, $c0, $40,
+   $70, $40, $8c, $20, $00, $1f, $00, $00 );

+ 104 - 0
packages/forms/demo/borderwidth.pp

@@ -0,0 +1,104 @@
+program borderwidth;
+
+uses forms;
+
+type TFD_bwform = record
+	bwform : PFL_FORM;
+	vdata : pointer;
+	ldata : longint;
+	done,
+	bw_choice,
+	bwgroup,
+	pmobj : PFL_OBJECT;
+	end;
+PFD_bwform = ^TFD_bwform;
+	
+
+{ callbacks for form bwform }
+procedure done_callback(ob : PFL_OBJECT; data : longint);export;
+begin
+  { fill-in code for callback }
+   halt(0);
+end;
+
+var
+fd_bwform : PFD_bwform;
+
+const bws : array[0..7] of longint = (-3,-2,-1,1,2,3,4,5);
+
+procedure bw_callback(ob : PFL_OBJECT; data : longint);export;
+
+var bw : longint;
+
+begin
+   bw := bws[fl_get_choice(ob)-1];
+
+   fl_set_object_bw(fd_bwform^.bwgroup, bw);
+   { since bwgroup includes the backface, it wipes out the done button}  
+   fl_redraw_object(fd_bwform^.done);
+   fl_redraw_object(fd_bwform^.bw_choice);
+end;
+
+function create_form_bwform : PFD_bwform;
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_bwform;
+  
+begin
+
+  new(fdui);
+  fdui^.bwform := fl_bgn_form(FL_NO_BOX, 380, 340);
+
+  fdui^.bwgroup := fl_bgn_group();
+  obj := fl_add_box(FL_UP_BOX,0,0,380,340,'');
+  obj := fl_add_frame(FL_EMBOSSED_FRAME,220,60,135,145,'');
+  obj := fl_add_frame(FL_ENGRAVED_FRAME,15,60,185,145,'');
+  obj := fl_add_slider(FL_HOR_SLIDER,25,75,160,25,'');
+  obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,305,145,40,35,'');
+  fdui^.pmobj := obj;
+  obj := fl_add_positioner(FL_NORMAL_POSITIONER,30,225,100,80,'');
+  obj := fl_add_counter(FL_NORMAL_COUNTER,25,160,160,25,'');
+  obj := fl_add_lightbutton(FL_PUSH_BUTTON,230,100,100,30,'LightButton');
+  obj := fl_add_roundbutton(FL_PUSH_BUTTON,230,130,80,33,'Button');
+  obj := fl_add_round3dbutton(FL_PUSH_BUTTON,230,152,80,33,'Button');
+    fl_set_object_color(obj,FL_COL1, FL_BLUE);
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,230,174,80,33,'Button');
+  obj := fl_add_input(FL_NORMAL_INPUT,195,240,160,28,'Input');
+  obj := fl_add_valslider(FL_HOR_BROWSER_SLIDER,25,120,160,25,'');
+  obj := fl_add_button(FL_NORMAL_BUTTON,230,65,100,30,'Button');
+  fl_end_group();
+
+  obj := fl_add_button(FL_NORMAL_BUTTON,270,290,75,30,'Done');
+  fdui^.done := obj;
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_callback),0);
+  obj:= fl_add_choice(FL_NORMAL_CHOICE,105,20,80,25,'Border Width');
+  fdui^.bw_choice := obj ;
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@bw_callback),0);
+  fl_end_form();
+  fdui^.bwform^.fdui  := fdui;
+
+  create_form_bwform:= fdui;
+end;
+
+begin
+   { application default. Can be overriden by the command line options }
+   fl_set_border_width(-2); 
+
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   fd_bwform := create_form_bwform;
+
+   { fill-in form initialization code }
+   fl_set_pixmapbutton_file(fd_bwform^.pmobj, 'crab.xpm');
+
+   fl_addto_choice(fd_bwform^.bw_choice,'-3 Pixel|-2 Pixel|-1 Pixel');
+   fl_addto_choice(fd_bwform^.bw_choice,' 1 Pixel| 2 Pixel| 3 Pixel');
+   fl_addto_choice(fd_bwform^.bw_choice,' 4 Pixel| 5 Pixel');
+   fl_set_choice_text(fd_bwform^.bw_choice, '-2 Pixel');
+
+   { show the first form }
+   fl_show_form(fd_bwform^.bwform,FL_PLACE_CENTER,FL_NOBORDER,'bwform');
+   while (fl_do_forms<>nil) do;
+end.
+
+
+

+ 222 - 0
packages/forms/demo/boxtype.pp

@@ -0,0 +1,222 @@
+{ This demo show the different boxtypes. Note that some
+ * boxtypes are not appropriate for some objects
+ }
+program boxtype;
+
+uses forms;
+
+const border = FL_TRANSIENT;
+
+
+type TVN_Struct = record
+     theval : longint;
+     name : pchar;
+     end;
+
+const gmode : array[0..5] of TVN_Struct =
+ ((theval : FL_StaticGray;  name : 'StaticGray'),
+ (theval : FL_GrayScale;   name : 'GrayScale'),
+ (Theval : FL_StaticColor; name : 'StaticColor'),
+ (Theval : FL_Pseudocolor; name : 'PseudoColor'),
+ (theval : FL_Truecolor;   name : 'TrueColor'),
+ (Theval : FL_DirectColor; name : 'DirectColor'));
+
+Const btypes : array [0..15] of TVN_struct=
+(
+   (theval : FL_NO_BOX; name : 'no box'),
+   (theval : FL_UP_BOX; name : 'up box'),
+   (theval : FL_DOWN_BOX; name : 'down box'),
+   (theval : FL_BORDER_BOX; name : 'border box'),
+   (theval : FL_SHADOW_BOX; name : 'shadow box'),
+   (theval : FL_FLAT_BOX; name : 'flat box'),
+   (theval : FL_FRAME_BOX; name : 'frame box'),
+   (theval : FL_EMBOSSED_BOX; name : 'embossed box'),
+   (theval : FL_ROUNDED_BOX; name : 'rounded box'),
+   (theval : FL_RFLAT_BOX; name : 'rflat box'),
+   (theval : FL_RSHADOW_BOX; name : 'shadow box'),
+   (theval : FL_OVAL_BOX; name : 'oval box'),
+   (theval : FL_ROUNDED3D_UPBOX; name : 'rounded3d upbox'),
+   (theval : FL_ROUNDED3D_DOWNBOX; name : 'rounded3d downbox'),
+   (theval : FL_OVAL3D_UPBOX; name : 'oval3d upbox'),
+   (theval : FL_OVAL3D_DOWNBOX; name : 'oval3d downbox')
+   );
+
+{$i srs.xbm}
+
+{************** Callback *********************}
+
+var
+  form : PFL_FORM;
+  tobj : array [0..17] of PFL_OBJECT;
+  exitob, btypeob, modeob : PFL_OBJECT;
+Const
+lastbt : Longint = -1;
+
+procedure boxtype_cb (ob : PFL_OBJECT; arg : longint);export;
+
+var
+  i, req_bt  : longint;
+  
+begin
+  req_bt:= fl_get_choice(ob) - 1;
+  if (lastbt <> req_bt) then
+    begin
+     fl_freeze_form (form);
+     fl_redraw_form (form);
+     i:=0;
+     while i<18 do
+       begin
+       fl_set_object_boxtype (tobj[i], btypes[req_bt].theval);
+       inc(i);
+       end;
+     fl_unfreeze_form (form);
+     lastbt := req_bt;
+    end;
+end;
+
+Const lval : longint = -1;
+
+procedure  mode_cb (ob : PFL_OBJECT; arg : longint);export;
+
+var
+  db,theval : longint;
+
+begin
+  db:=0;
+  theval := fl_get_choice (ob) -1;
+  if (theval = lval) or ( theval < 0) then exit;
+
+  fl_hide_form (form);
+  if not (fl_mode_capable(gmode[theval].theval, 0)<>0) then
+    begin
+      fl_set_choice(ob, lval);
+      theval := lval;
+    end;
+
+  fl_set_graphics_mode (gmode[theval].theval, db);
+  fl_show_form (form, FL_PLACE_GEOMETRY, border, 'Box types');
+
+  lval := theval;
+end;
+
+{************** Creation Routines ********************}
+
+procedure create_form_form;
+var
+  obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_NO_BOX, 720, 520);
+  obj := fl_add_box(FL_UP_BOX, 0, 0, 720, 520, '');
+  fl_set_object_color(obj, FL_BLUE, FL_COL1);
+  obj := fl_add_box(FL_DOWN_BOX, 10, 90, 700, 420, '');
+  fl_set_object_color(obj, FL_COL1, FL_COL1);
+  obj := fl_add_box(FL_DOWN_BOX, 10, 10, 700, 70, '');
+  fl_set_object_color(obj, FL_SLATEBLUE, FL_COL1);
+  obj:= fl_add_box(FL_UP_BOX, 30, 110, 110, 110, 'Box');
+  tobj[0] := obj ;
+  obj:= fl_add_text(FL_NORMAL_TEXT, 30, 240, 110, 30, 'Text');
+  tobj[1] := obj ;
+  obj:= fl_add_bitmap(FL_NORMAL_BITMAP, 40, 280, 90, 80, 'Bitmap');
+  tobj[2] := obj ;
+  fl_set_object_lcol(obj, FL_BLUE);
+  obj:= fl_add_chart(FL_BAR_CHART, 160, 110, 160, 110, 'Chart');
+  tobj[3] := obj ;
+  obj:= fl_add_clock(FL_ANALOG_CLOCK, 40, 390, 90, 90, 'Clock');
+  tobj[4] := obj ;
+  fl_set_object_dblbuffer(tobj[4],1);
+  obj:=fl_add_button(FL_NORMAL_BUTTON, 340, 110, 120, 30, 'Button');
+  tobj[5]:=obj;
+  obj:=fl_add_lightbutton(FL_PUSH_BUTTON,340,150,120,30,'Lightbutton');
+  tobj[6]:=obj;
+  obj:=fl_add_roundbutton(FL_PUSH_BUTTON,340,190,120,30,'Roundbutton');
+  tobj[7]:=obj;
+  obj:=fl_add_slider(FL_VERT_SLIDER, 160, 250, 40, 230, 'Slider');
+  tobj[8]:=obj;
+  obj:=fl_add_valslider(FL_VERT_SLIDER, 220, 250, 40, 230, 'Valslider');
+  tobj[9]:=obj;
+  obj:=fl_add_dial (FL_LINE_DIAL, 280, 250, 100, 100, 'Dial');
+  tobj[10]:=obj;
+  obj:=fl_add_positioner(FL_NORMAL_POSITIONER,280,380,150,100, 'Positioner');
+  tobj[11]:=obj;
+  obj:=fl_add_counter (FL_NORMAL_COUNTER,480,110,210,30, 'Counter');
+  tobj[12]:=obj;
+  obj:=fl_add_input (FL_NORMAL_INPUT, 520,170,170,30, 'Input');
+  tobj[13]:=obj;
+  obj:=fl_add_menu (FL_PUSH_MENU, 400, 240, 100, 30, 'Menu');
+  tobj[14]:=obj;
+  obj:=fl_add_choice (FL_NORMAL_CHOICE, 580, 250, 110, 30, 'Choice');
+  tobj[15]:=obj;
+  obj:=fl_add_timer (FL_VALUE_TIMER, 580, 210, 110, 30, 'Timer');
+  tobj[16]:=obj;
+  fl_set_object_dblbuffer(tobj[16], 1);
+  obj:=fl_add_browser (FL_NORMAL_BROWSER,450,300,240, 180, 'Browser');
+  tobj[17]:=obj;
+  obj:= fl_add_button (FL_NORMAL_BUTTON, 590, 30, 100, 30, 'Exit');
+  exitob:=obj;
+  obj:= fl_add_choice (FL_NORMAL_CHOICE,110,30, 130, 30, 'Boxtype');
+  btypeob:=obj;
+  fl_set_object_callback (obj, PFL_CALLBACKPTR(@boxtype_cb), 0);
+  obj  :=fl_add_choice(FL_NORMAL_CHOICE,370,30,130,30,'Graphics mode');
+  modeob := obj;
+  fl_set_object_callback (obj, PFL_CALLBACKPTR(@mode_cb), 0);
+  fl_end_form ;
+end;
+
+procedure create_the_forms;
+begin
+  create_form_form;
+end;
+
+{************** Main Routine **********************}
+
+const browserlines : array [0..21] of pchar = (
+   ' ', '@C1@c@l@bObjects Demo',   ' ',
+   'This demo shows you all',      'objects that currently',
+   'exist in the Forms Library.',  ' ',
+   'You can change the boxtype',   'of the different objects',
+   'using the buttons at the',     'top of the form. Note that',
+   'some combinations might not',  'look too good. Also realize',
+   'that for all object classes',  'many different types are',
+   'available with different',     'behaviour.', ' ',
+   'With this demo you can also',  'see the effect of the drawing',
+   'mode on the appearance of the','objects.');
+
+
+var
+  ob : PFL_OBJECT;
+  c : TFL_COLOR;
+  p : ppchar;
+  vn : ^TVN_struct;
+  i : longint;
+  
+begin
+  c := FL_BLACK;
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_the_forms ();
+  fl_set_bitmap_data (tobj[2], sorceress_width, sorceress_height, pchar(@sorceress_bits));
+  fl_add_chart_value (tobj[3], 15, 'item 1', c);inc(c);
+  fl_add_chart_value (tobj[3], 5, 'item 2', c);inc(c);
+  fl_add_chart_value (tobj[3], -10, 'item 3', c);inc(c);
+  fl_add_chart_value (tobj[3], 25, 'item 4', c);inc(c);
+  fl_set_menu (tobj[14], 'item 1|item 2|item 3|item 4|item 5');
+  fl_addto_choice (tobj[15], 'item 1');
+  fl_addto_choice (tobj[15], 'item 2');
+  fl_addto_choice (tobj[15], 'item 3');
+  fl_addto_choice (tobj[15], 'item 4');
+  fl_addto_choice (tobj[15], 'item 5');
+  fl_set_timer (tobj[16], 1000.0);
+  for i:=0 to 21 do 
+     fl_add_browser_line (tobj[17], browserlines[i]);
+  for i:= 0 to 15 do
+     fl_addto_choice(btypeob, btypes[i].name);
+  for i:=0 to 5 do
+      begin 
+      fl_addto_choice (modeob, gmode[i].name);
+      if (fl_mode_capable(gmode[i].theval, 0)=0) then
+        fl_set_choice_item_mode(modeob, i, FL_PUP_GRAY);
+      end;
+  fl_set_choice (modeob, fl_vmode+1); 
+   fl_show_form (form, FL_PLACE_MOUSE, border, 'Box types');
+  while (fl_do_forms <> exitob) do;
+end.

+ 178 - 0
packages/forms/demo/browserall.pp

@@ -0,0 +1,178 @@
+{ This is a demo that shows the different types of browsers.  }
+
+
+uses forms,strings;
+
+var
+form : PFL_FORM;
+br : array[0..3] of PFL_OBJECT;
+exitobj, readout : PFL_OBJECT;
+
+
+const
+bnames : array[0..3] of pchar = 
+(
+    'NORMAL_BROWSER', 'SELECT_BROWSER', 'HOLD_BROWSER', 'MULTI_BROWSER'
+);
+
+
+procedure deselect(obj  : PFL_OBJECT ; arg : longint);export;
+var
+  i : longint ;
+begin
+  for i:=0 to 3 do
+     fl_deselect_browser(br[i]);
+end;
+
+procedure set_size(obj : PFL_OBJECT; arg : longint);export;
+var
+  i : longint;
+begin
+  for i:=0 to 3 do 
+     fl_set_browser_fontsize(br[i],arg);
+end;
+
+procedure set_style(obj : PFL_OBJECT; arg :  longint);export;
+var
+  i : longint;
+
+begin
+  for i:=0 to 3 do
+     fl_set_browser_fontstyle(br[i], arg);
+end;
+
+procedure br_callback(ob : PFL_OBJECT; arg : longint);export;
+var
+    buf : string[255];
+const
+    mb : array[0..3] of pchar = ('','left','middle','right');
+
+var i,b : longint;
+
+begin
+    b:=fl_mouse_button;
+    if (b < FL_SHORTCUT) then
+      buf :='In '+strpas(bnames[arg]) +'['+strpas(mb[b])+']'#0
+    else
+      buf:='In '+strpas(bnames[arg])+#0;
+    i := fl_get_browser(ob);
+    if i>0 then
+      begin
+      buf:=buf+strpas(fl_get_browser_line(ob,i)); 
+      buf:=buf+' was selected'#0
+      end
+    else 
+      begin
+      buf:=buf+strpas(fl_get_browser_line(ob,-i)); 
+      buf:=buf+' was deselected'#0
+      end;
+    fl_set_object_label(readout,@buf[1]);
+end;
+
+
+procedure create_form;
+var
+  obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_UP_BOX,700,570);
+  readout := fl_add_text(FL_NORMAL_TEXT,50,30,600,50,'');
+  fl_set_object_lsize(readout,FL_LARGE_SIZE);
+  fl_set_object_lalign(readout,FL_ALIGN_CENTER);
+  fl_set_object_lstyle(readout,FL_BOLD_STYLE);
+  fl_set_object_boxtype(readout,FL_UP_BOX);
+
+  fl_set_object_color(readout,FL_MAGENTA,FL_MAGENTA);
+
+  obj:= fl_add_browser(FL_NORMAL_BROWSER,20,120,150,290,bnames[0]);
+  br[0] := obj ;
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 0);
+  obj:= fl_add_browser(FL_SELECT_BROWSER,190,120,150,290,bnames[1]);
+  br[1] := obj ;
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 1);
+  obj := fl_add_browser(FL_HOLD_BROWSER,360,120,150,290,bnames[2]);
+  br[2] := obj ;
+    fl_set_object_color(obj,FL_COL1,FL_GREEN);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 2);
+  obj := fl_add_browser(FL_MULTI_BROWSER,530,120,150,290,bnames[3]);
+  br[3] := obj;
+    fl_set_object_color(br[3],FL_COL1,FL_CYAN);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_callback), 3);
+
+  obj  := fl_add_button(FL_NORMAL_BUTTON,560,510,120,30,'Exit');
+  exitobj := obj;
+     obj := fl_add_button(FL_NORMAL_BUTTON,560,460,120,30,'Deselect');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@deselect),0);
+
+  fl_bgn_group();
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,20,500,100,30,'Tiny');
+    fl_set_object_lsize(obj,FL_TINY_SIZE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,130,500,100,30,'Small');
+    fl_set_object_lsize(obj,FL_SMALL_SIZE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
+    fl_set_button(obj,1);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,500,100,30,'Normal');
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,350,500,100,30,'Large');
+    fl_set_object_lsize(obj,FL_LARGE_SIZE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),obj^.lsize);
+  fl_end_group;
+
+  fl_bgn_group;
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,20,450,100,30,'Normal');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_NORMAL_STYLE);
+    fl_set_button(obj,1);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,120,450,100,30,'Bold');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_BOLD_STYLE);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,220,450,100,30,'Italic');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_ITALIC_STYLE);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,320,450,100,30,'BoldItalic');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_BOLDITALIC_STYLE);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,420,450,100,30,'Fixed');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_style),FL_FIXED_STYLE);
+  fl_end_group;
+  fl_end_form;
+end;
+
+
+procedure fill_browsers;
+var
+  i, j : longint;
+  buf : string[128];
+
+begin
+  for i:=0 to 3 do
+    for j:=1 to 100 do 
+      begin
+      if ( j = 5) then
+        begin
+        str(j,buf);
+        buf:='@NLine with qb '+buf+#0;
+        end
+      else if ( j = 10) then
+        buf:='@-'#0
+      else if ( j = 40 ) then
+        begin
+        str(j,buf);
+        buf:='@mLine with qb '+buf+#0;
+        end
+      else
+        begin
+        str(j,buf);
+        buf:='Line with qb '+buf+#0;
+        end;
+      fl_add_browser_line(br[i],@buf[1]);
+      end
+end;
+
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form;
+  fill_browsers;
+  fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,'All Browsers');
+  fl_do_forms;
+  fl_hide_form(form);
+end.

+ 89 - 0
packages/forms/demo/browserop.pp

@@ -0,0 +1,89 @@
+{ This demo shows the different routines on browsers }
+program browserop;
+
+uses forms;
+
+var
+form : PFL_FORM;
+browserobj, inputobj, exitobj : PFL_OBJECT;
+
+procedure addit(ob : PFL_OBJECT; arg : longint);export;
+begin
+  { append and show the last line. Don't use this if you just want
+   * to add some lines. use fl_add_browser_line
+   }
+  fl_addto_browser(browserobj,fl_get_input(inputobj));
+end;
+
+procedure insertit(ob : PFL_OBJECT ; arg : longint);export;
+var
+  n :  integer;
+begin
+  n:=fl_get_browser(browserobj);
+  if (n=0) then exit;
+  fl_insert_browser_line(browserobj,n,fl_get_input(inputobj));
+end;
+
+procedure replaceit(obj : PFL_OBJECT; arg : longint);export;
+var
+  n :  integer;
+begin
+  n:=fl_get_browser(browserobj);
+  if (n=0) then exit;
+  fl_replace_browser_line(browserobj,n,fl_get_input(inputobj));
+end;
+
+
+procedure deleteit(ob : PFL_OBJECT; arg : Longint);export;
+var
+  n :  integer;
+begin
+  n:=fl_get_browser(browserobj);
+  if (n=0) then exit;
+  fl_delete_browser_line(browserobj,n);
+end;
+
+procedure clearit(ob : PFL_OBJECT; arg : longint);export;
+begin
+  fl_clear_browser(browserobj);
+end;
+
+
+procedure create_form;
+var 
+  obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_UP_BOX,390,420);
+  browserobj := fl_add_browser(FL_HOLD_BROWSER,20,20,210,330,'');
+    fl_set_object_dblbuffer(browserobj, 1);
+  obj:= fl_add_input(FL_NORMAL_INPUT,20,370,210,30,'');
+  inputobj := obj ;
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@addit),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,250,20,120,30,'Add');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@addit),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,250,60,120,30,'Insert');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@insertit),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,250,100,120,30,'Replace');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@replaceit),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,250,160,120,30,'Delete');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@deleteit),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,250,200,120,30,'Clear');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@clearit),0);
+  exitobj := fl_add_button(FL_NORMAL_BUTTON,250,370,120,30,'Exit');
+  fl_end_form();
+end;
+
+{---------------------------------------}
+
+var obj : PFL_OBJECT;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form;
+  fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,'Browser Op');
+  repeat 
+    obj := fl_do_forms 
+  until obj = exitobj;
+  fl_hide_form(form);
+end.

+ 112 - 0
packages/forms/demo/buttonall.pp

@@ -0,0 +1,112 @@
+program buttonall;
+
+uses forms;
+
+type TFD_buttform = record
+	buttform : PFL_FORM;
+	vdata : pointer;
+	ldata : Longint;
+	backface,done,objsgroup,bbutt,pbutt,bw_obj : PFL_OBJECT;
+end;
+PFD_buttform = ^TFD_buttform;
+
+Procedure done_cb(ob : PFL_OBJECT; data :  longint);export;
+begin
+   halt(0);
+end;
+
+procedure bw_cb(ob : PFL_OBJECT; data : longint);export;
+
+const
+    bws : array [0..7] of longint = (-4,-3,-2,-1,1,2,3,4);
+var 
+  n : longint;
+  fdui : PFD_BUTTform;
+   
+begin
+    n:=fl_get_choice(ob)-1;
+    fdui:=ob^.form^.fdui;
+    fl_freeze_form(ob^.form);
+    fl_set_object_bw(fdui^.backface, bws[n]);
+    fl_set_object_bw(fdui^.objsgroup, bws[n]);
+    { redrawing the backface wipes out the done button. Redraw it }
+    fl_redraw_object(fdui^.done);
+    fl_unfreeze_form(ob^.form);
+end;
+
+
+function create_form_buttform : PFD_buttform;
+
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_buttform;
+
+begin
+  new(fdui);
+  fdui^.buttform := fl_bgn_form(FL_NO_BOX, 290, 260);
+  obj := fl_add_box(FL_UP_BOX,0,0,290,260,'');
+  fdui^.backface := obj; 
+  obj := fl_add_button(FL_NORMAL_BUTTON,185,215,90,30,'Done');
+  fdui^.done := obj;    
+  fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb),0);
+
+  fdui^.objsgroup := fl_bgn_group();
+  obj := fl_add_frame(FL_ENGRAVED_FRAME,175,170,100,30,'');
+    fl_set_object_color(obj,FL_COL1,FL_GREEN);
+  obj := fl_add_round3dbutton(FL_PUSH_BUTTON,210,170,30,30,'');
+    fl_set_object_color(obj,FL_COL1,FL_GREEN);
+  obj := fl_add_bitmapbutton(FL_NORMAL_BUTTON,25,85,40,40,'bitmapbutton');
+  fdui^.bbutt := obj ;
+    fl_set_object_color(obj,FL_COL1,FL_BLACK);
+  obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,25,25,40,40,'pixmapbutton');
+  fdui^.pbutt := obj;
+  obj := fl_add_checkbutton(FL_RADIO_BUTTON,100,31,70,32,'Red');
+    fl_set_object_color(obj,FL_COL1,FL_RED);
+  obj := fl_add_checkbutton(FL_RADIO_BUTTON,100,60,70,32,'Green');
+    fl_set_object_color(obj,FL_COL1,FL_GREEN);
+  obj := fl_add_checkbutton(FL_RADIO_BUTTON,100,90,70,32,'Blue');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_lightbutton(FL_PUSH_BUTTON,20,170,92,30,'LightButton');
+    fl_set_button(obj, 1);
+  obj := fl_add_roundbutton(FL_PUSH_BUTTON,200,35,75,25,'Red');
+    fl_set_object_color(obj,FL_COL1,FL_RED);
+  obj := fl_add_roundbutton(FL_PUSH_BUTTON,200,64,75,25,'Green');
+    fl_set_object_color(obj,FL_COL1,FL_GREEN);
+  obj := fl_add_roundbutton(FL_PUSH_BUTTON,200,93,75,25,'Blue');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_round3dbutton(FL_PUSH_BUTTON,180,170,30,30,'');
+    fl_set_object_color(obj,FL_COL1,FL_RED);
+  obj := fl_add_round3dbutton(FL_PUSH_BUTTON,240,170,30,30,'');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_button(FL_PUSH_BUTTON,130,210,30,30,'go');
+    fl_set_object_boxtype(obj,FL_OVAL3D_UPBOX);
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+  obj := fl_add_button(FL_NORMAL_BUTTON,20,210,90,30,'Button');
+    fl_set_object_boxtype(obj,FL_ROUNDED3D_UPBOX);
+  obj := fl_add_choice(FL_NORMAL_CHOICE2,105,135,80,30,'BW');
+  fdui^.bw_obj := obj;   
+  fl_set_object_callback(obj,PFL_CALLBACKPTR(@bw_cb),0);
+  obj := fl_add_labelframe(FL_ENGRAVED_FRAME,190,25,85,100,'RoundButton');
+  obj := fl_add_labelframe(FL_ENGRAVED_FRAME,90,25,90,100,'CheckButton');
+  fl_end_group();
+
+  fl_end_form();
+
+  fdui^.buttform^.fdui := fdui;
+  create_form_buttform:=fdui;
+end;
+
+var   fd_buttform : PFD_buttform;
+
+begin
+   fl_initialize(@argc, argv, '', nil, 0);
+   fd_buttform := create_form_buttform;
+
+   fl_set_pixmapbutton_file(fd_buttform^.pbutt,'crab45.xpm');
+   fl_set_bitmapbutton_file(fd_buttform^.bbutt,'bm1.xbm');
+   fl_addto_choice(fd_buttform^.bw_obj,' -4 | -3 | -2 | -1 |  1|  2|  3|  4');
+   fl_set_choice(fd_buttform^.bw_obj,7);
+
+   fl_show_form(fd_buttform^.buttform,FL_PLACE_CENTER,FL_FULLBORDER,'buttform');
+   while (fl_do_forms<>nil) do ;
+end.

+ 95 - 0
packages/forms/demo/butttypes.pp

@@ -0,0 +1,95 @@
+program butttypes;
+
+uses strings,forms;
+
+type TFD_form0 = record
+	form0 : PFL_FORM;
+	vdata : pointer;
+	ldata : longint;
+	br : PFL_OBJECT;
+end;
+PFD_form0 = ^TFD_form0;
+
+{ callbacks for form form0 }
+procedure button_cb(ob : PFL_OBJECT; data : longint);export;
+var
+   ui : PFD_form0;
+  buf : string [128];
+
+begin
+   ui:=ob^.form^.fdui;
+   if (ob^.thetype = FL_HIDDEN_BUTTON ) then
+     begin
+      if (fl_show_question('Want to Quit ?', 1) = 1) then
+	halt(0);
+     end
+   else
+     begin
+      str (fl_get_button(ob),buf);
+      buf:=strpas(ob^ .thelabel)+'callback called from '+ buf+#0;
+      fl_addto_browser(ui^.br, @buf[1]);
+    end;
+end;
+
+{ Form definition file generated with fdesign. }
+
+
+function create_form_form0 : PFD_form0;
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_form0;
+
+begin
+  new(fdui);
+  fdui^.form0 := fl_bgn_form(FL_NO_BOX, 360, 300);
+  obj := fl_add_box(FL_UP_BOX,0,0,360,300,'');
+  obj := fl_add_button(FL_HIDDEN_BUTTON,0,0,360,300,'');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  obj := fl_add_button(FL_INOUT_BUTTON,20,168,105,30,'InOutButton');
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,20,15,105,30,'NormalButton');
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  obj := fl_add_button(FL_PUSH_BUTTON,20,53,105,30,'PushButton');
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  obj := fl_add_button(FL_TOUCH_BUTTON,20,130,105,30,'TouchButton');
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  obj := fl_add_button(FL_MENU_BUTTON,20,206,105,30,'MenuButton');
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  obj := fl_add_button(FL_RETURN_BUTTON,20,244,105,30,'ReturnButton');
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  obj := fl_add_button(FL_RADIO_BUTTON,20,91,105,30,'RadioButton');
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+    obj := fl_add_browser(FL_NORMAL_BROWSER,135,15,210,260,'');
+    fdui^.br :=obj;  
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@button_cb),0);
+  fl_end_form();
+
+  fl_adjust_form_size(fdui^.form0);
+  fdui^.form0^.fdui := fdui;
+
+  create_form_form0:= fdui;
+end;
+
+
+
+
+var
+   fd_form0 : PFD_form0;
+
+begin
+   fl_initialize(@argc, argv, '', nil, 0);
+   fd_form0 := create_form_form0;
+
+   { fill-in form initialization code }
+
+   { show the first form }
+   fl_show_form(fd_form0^.form0,FL_PLACE_CENTER,FL_FULLBORDER,'form0');
+   fl_do_forms();
+end.

+ 243 - 0
packages/forms/demo/canvas.pp

@@ -0,0 +1,243 @@
+{ Demo showing the use of canvas object.   V0.75
+ }
+
+uses forms,x,xlib;
+
+{*** Forms and Objects ***}
+
+type TFD_canvasform = record
+	canvasform : PFL_FORM;
+	vdata : pointer;
+	ldata : longint;
+	canvas,
+	br,
+	keyboard,
+	mouse,
+	done,
+	misc,
+	menu : PFL_OBJECT;
+end;
+
+PFD_canvasform = ^TFD_canvasform;
+
+
+Var canvasGC : TGC;
+
+
+function canvas_expose(ob : PFL_OBJECT;win : TWindow; w,h : longint; ev : PXEvent;d : Pointer) : longint;export;
+
+var ui : PFD_CANVASFORM;
+
+begin
+    ui := d;
+    XFillRectangle(PDisplay(fl_display), TDRAWABLE(win), canvasGC, 0, 0,cardinal( w), cardinal(h));
+    fl_addto_browser(ui^.br, 'Expose');
+end;
+
+ 
+function canvas_key(ob : PFL_OBJECT; win : TWindow; w,h : Longint; ev : PXEvent; d: pointer) : longint;export;
+var
+   ui :PFD_canvasform;
+   buf : string[128];
+
+
+begin
+    ui := d;
+    str (XKeycodeToKeysym(PDisplay(fl_display),ev^.xkey.keycode, TkeyCode(#0)),buf);
+    buf:= 'KeyPress: keysym='+buf+#0; 
+    fl_addto_browser(ui^.br, @buf[1]);
+    return 0;
+end;
+
+ 
+function canvas_but(ob : PFL_OBJECT; win : TWindow; w,h : longint, ev : PXEvent;d : pointer) : longint;export;
+
+var
+    ui : PFD_canvasform;
+    buf : string[128];
+
+begin
+  ui := d;
+  
+  str(ev^.xbutton.button,buf);
+  if ev^.eventtype=ButtonPress then
+    buf:='Press '+buf
+  else
+    buf:='Release '+buf;
+  buf:='Button '+buf+#0;
+    fl_addto_browser(ui^.br, @buf[1]);
+end;
+
+function canvas_misc(ob : PFL_OBJECT; win : TWindow; w,h : longint, ev : PXEvent;d : pointer) : longint;export;
+
+var
+
+   ui : PFD_canvasform; 
+begin
+  ui := d;
+  if ev^.xcrossing.eventtype=EnterNotify then
+  fl_addto_browser(ui^.br, 'Enter Canvas')
+  else
+  fl_addto_browser(ui^.br, 'Leave Canvas')
+end;
+
+procedure init_canvas(FD_canvasform *fdui)
+
+begin
+   fl_add_canvas_handler(fdui^.canvas, Expose, PFL_HANDLE_CANVAS(@canvas_expose), fdui);
+   fl_add_canvas_handler(fdui^.canvas, KeyPress, PFL_HANDLE_CANVAS(@canvas_key), fdui);
+   fl_add_canvas_handler(fdui^.canvas, ButtonPress,PFL_HANDLE_CANVAS(@canvas_but),fdui);
+   fl_add_canvas_handler(fdui^.canvas, ButtonRelease,PFL_HANDLE_CANVAS(canvas_but),fdui);
+   fl_set_button(fdui^.mouse, 1);
+   fl_set_button(fdui^.keyboard, 1);
+   canvasGC := XCreateGC(fl_get_display(),fl_state[fl_vmode].trailblazer,0,0);
+   XSetForeground(fl_get_display(), canvasGC, fl_get_flcolor(FL_BLACK));
+end;
+
+var
+fd_canvasform : PFD_canvasform;
+
+procedure sensitive_setting(ob : PFL_OBJECT ; event : longint); export;
+
+var
+    hc : PFL_HANDLE_CANVAS;
+begin
+ if event=Keypress then
+   hc := PFL_HANDLE_CANVAS(@canvas_key)
+ else
+  hc := PFL_HANDLE_CANVAS(@canvas_but);
+
+    if(fl_get_button(ob)<>0) then
+       fl_add_canvas_handler(fd_canvasform^.canvas, event, hc, fd_canvasform);
+    else
+       fl_remove_canvas_handler(fd_canvasform^.canvas, event, hc);
+end;
+
+procedure disable_it(ob : PFL_OBJECT; data : longint);export;
+
+begin
+    if fl_get_button(ob)<>0 then 
+      fl_deactivate_object(fd_canvasform^.canvas)
+    else
+      fl_activate_object (fd_canvasform^.canvas);
+end;
+
+procedure hide_it(ob : PFL_OBJECT; all : longint);export;
+
+
+begin
+      if(all<>0) then
+        begin
+         fl_hide_form(fd_canvasform^.canvasform);
+         fl_show_form(fd_canvasform^.canvasform,
+                      FL_PLACE_CENTER, FL_TRANSIENT, 'canvas');
+{$ifdef nevertrue}
+       fl_remove_selected_xevent(fd_canvasform^.canvasform^.window,
+            OwnerGrabButtonMask);
+{$endif }
+        end       
+      else
+       begin
+         if(fd_canvasform^.canvas^.visible)<>0 then
+           begin
+            fl_hide_object(fd_canvasform^.canvas);
+            fl_set_object_label(ob,'ShowCanvas');
+           end
+         else
+           begin
+            fl_show_object(fd_canvasform^.canvas);
+            fl_set_object_label(ob,'HideCanvas');
+           end
+        end;
+end;
+
+procedure misc_cb(ob : PFL_OBJECT; data : longint); export;
+
+begin
+    if(fl_get_button(ob)<>0) then
+      begin
+       fl_add_canvas_handler(fd_canvasform^.canvas, EnterNotify, 
+                             PFL_HANDLE_CANVAS(@canvas_misc), fd_canvasform);
+       fl_add_canvas_handler(fd_canvasform^.canvas, LeaveNotify,
+                             PFL_HANDLE_CANVAS(@canvas_misc), fd_canvasform);
+      end
+    else
+      begin
+       fl_remove_canvas_handler(fd_canvasform^.canvas, 
+                                EnterNotify, PFL_HANDLE_CANVAS(@canvas_misc));
+       fl_remove_canvas_handler(fd_canvasform^.canvas, 
+                                LeaveNotify, PFL_HANDLE_CANVAS(@canvas_misc));
+      end;
+end;
+
+{*****************}
+function create_form_canvasform : PFD_canvasform;
+var
+  obj :=PFL_OBJECT;
+  fdui : PFD_canvasform;
+
+begin
+  new(fdui);
+
+  fdui^.canvasform := fl_bgn_form(FL_NO_BOX, 450, 280);
+  obj := fl_add_box(FL_UP_BOX,0,0,450,280,'');
+  obj:= fl_add_canvas(FL_NORMAL_CANVAS,20,40,155,187,'');
+  fdui^.canvas := obj ;
+  obj := fl_add_browser(FL_NORMAL_BROWSER,188,40,152,187,'');
+  fdui^.br := obj ;
+    obj := fl_add_button(FL_PUSH_BUTTON,30,236,90,27,'Deactivate');
+    fl_set_object_callback(obj,disable_it,0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,120,236,90,27,'HideCanvas');
+    fl_set_object_callback(obj, hide_it, 0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,210,236,90,27,'HideForm');
+    fl_set_object_callback(obj, hide_it, 1);
+  obj := fl_add_button(FL_NORMAL_BUTTON,300,236,90,27,'Done');
+  fdui^.done := obj ;
+  obj := fl_add_text(FL_NORMAL_TEXT,130,10,120,20,'Canvas');
+    fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
+    fl_set_object_lalign(obj,FL_ALIGN_CENTER);
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+  obj:= fl_add_menu(FL_PULLDOWN_MENU, 20,10, 45,22,'Menu');
+  fdui^.menu := obj ;
+    fl_set_object_shortcut(obj,'#m', 1);
+    fl_set_object_lstyle(obj, FL_BOLD_STYLE);
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,345,40,76,26,'Keyboard');
+  fdui^.keyboard := obj ;
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+    fl_set_object_callback(obj,sensitive_setting,KeyPress);
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,345,70,76,26,'Mouse');
+    fdui^.mouse := obj ;
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+    fl_set_object_callback(obj,sensitive_setting,ButtonPress);
+ obj := fl_add_checkbutton(FL_PUSH_BUTTON,345,100,74,26,'Enter/Leave');
+    fdui^.misc := obj;
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+    fl_set_object_callback(obj,misc_cb,ButtonPress);
+  fl_end_form();
+
+  create_form_canvasform :=fdui;
+end;
+
+
+begin
+   fl_set_border_width(-2);
+
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   fd_canvasform := create_form_canvasform;
+
+   { fill-in form initialization code }
+   fl_set_object_dblbuffer(fd_canvasform^.br, 1); { looks better }
+   init_canvas (fd_canvasform);
+
+   fl_addto_menu(fd_canvasform^.menu,'Item1|Item2|Item3|Item4');
+
+   fl_show_form(fd_canvasform^.canvasform,
+                FL_PLACE_FREE,FL_FULLBORDER,'canvasform');
+{$ifdef nevertrue}
+         fl_remove_selected_xevent(fd_canvasform^.canvasform^.window,
+            OwnerGrabButtonMask);
+{$endif}
+
+   while (fl_do_forms() <> fd_canvasform^.done) do  ;
+end.
+

+ 82 - 0
packages/forms/demo/chartall.pp

@@ -0,0 +1,82 @@
+program chartall;
+{ Showing all different charts }
+
+{ Form definition file generated with fdesign. }
+uses forms;
+
+var
+  form : PFL_FORM;
+
+        barchart,
+        linechart,
+        filledchart,
+        piechart,
+        specialpiechart,
+        exitbut,
+        horbarchart,
+        spikechart : PFL_OBJECT;
+
+procedure create_form_form;
+
+var
+  obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_NO_BOX,940,360);
+  obj := fl_add_box(FL_UP_BOX,0,0,940,360,'');
+  obj := fl_add_chart(FL_BAR_CHART,20,20,210,140,'BAR_CHART');
+  barchart := obj;
+    fl_set_object_boxtype(obj,FL_RSHADOW_BOX);
+  obj := fl_add_chart(FL_LINE_CHART,250,20,210,140,'LINE_CHART');
+  linechart := obj ;
+    fl_set_object_boxtype(obj,FL_RSHADOW_BOX);
+  obj := fl_add_chart(FL_FILL_CHART,250,190,210,140,'FILL_CHART');
+  filledchart := obj   ;
+  fl_set_object_boxtype(obj,FL_RSHADOW_BOX);
+  obj := fl_add_chart(FL_PIE_CHART,480,190,210,140,'PIE_CHART');
+  piechart := obj;
+    fl_set_object_boxtype(obj,FL_RSHADOW_BOX);
+  obj:= fl_add_chart(FL_SPECIALPIE_CHART,710,20,210,140,'SPECIALPIE_CHART');
+  specialpiechart := obj ;
+    fl_set_object_boxtype(obj,FL_RSHADOW_BOX);
+  obj := fl_add_button(FL_NORMAL_BUTTON,750,260,140,30,'Exit');
+  exitbut := obj;
+  obj:= fl_add_chart(FL_HORBAR_CHART,20,190,210,140,'HORBAR_CHART');
+  horbarchart := obj;
+     fl_set_object_boxtype(obj,FL_RSHADOW_BOX);
+  obj:= fl_add_chart(FL_SPIKE_CHART,480,20,210,140,'SPIKE_CHART');
+  spikechart := obj;
+     fl_set_object_boxtype(obj,FL_RSHADOW_BOX);
+  fl_end_form();
+end;
+
+{---------------------------------------}
+
+procedure fill_in(ob : PFL_OBJECT);
+
+var c : longint;
+
+begin
+  c := FL_BLACK+1;
+  fl_add_chart_value(ob,15.0,'item 1',c); inc(c);
+  fl_add_chart_value(ob,5.0,'item 2',c);inc(c);
+  fl_add_chart_value(ob,0.0,'item 3',c);inc(c);
+  fl_add_chart_value(ob,-10.0,'item 4',c);inc(c);
+  fl_add_chart_value(ob,25.0,'item 5',c);inc(c);
+  fl_add_chart_value(ob,12.0,'item 6',c);inc(c);
+end;
+
+begin
+
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form_form();
+  fill_in(barchart);
+  fill_in(horbarchart);
+  fill_in(linechart);
+  fill_in(filledchart);
+  fill_in(spikechart);
+  fill_in(piechart);
+  fill_in(specialpiechart);
+  fl_show_form(form,FL_PLACE_CENTER,FL_TRANSIENT,'Charts');
+  fl_do_forms();
+end.

+ 121 - 0
packages/forms/demo/chartstrip.pp

@@ -0,0 +1,121 @@
+{ A demo of a moving chart }
+program chartstrip;
+
+uses forms,xlib;
+
+var
+ func : longint; 
+ xx    : double; 
+ step : double;
+
+ form : PFL_FORM;
+
+ chartobj,sinobj,exitbut,stepobj : PFL_OBJECT;
+
+procedure set_function(obj : PFL_OBJECT; arg : longint);export;
+begin
+   func := arg; 
+   fl_clear_chart(chartobj); 
+   xx := 0.0;
+end;
+
+procedure set_step(obj : PFL_OBJECT; arg : longint);export;
+
+begin
+    step := fl_get_slider_value(stepobj);
+end;
+
+{***********************************************}
+
+procedure create_form_form;
+
+var obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_NO_BOX,490,320);
+  obj := fl_add_box(FL_BORDER_BOX,0,0,490,320,'');
+  obj := fl_add_chart(FL_LINE_CHART,20,160,390,140,'');
+  chartobj := obj;
+  fl_set_object_dblbuffer(obj,1);
+
+  fl_bgn_group();
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,30,120,170,30,'sin(x)');
+  sinobj := obj ;
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),1);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,30,90,170,30,'sin(2x)*cos(x)');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),2);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,30,60,170,30,'sin(2x)+cos(x)');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),3);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,120,160,30,'sin(3x)+cos(x)');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),4);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,90,160,30,'sin(x)^2 + cos(x)');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),5);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,240,60,160,30,'sin(x)^3');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_function),6);
+  fl_end_group();
+
+  obj := fl_add_button(FL_NORMAL_BUTTON,150,20,140,30,'Exit');
+  exitbut := obj;
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+  obj:= fl_add_valslider(FL_VERT_SLIDER,430,20,40,280,'');
+  stepobj := obj ;
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_step),0);
+  fl_end_form;
+end;
+
+{**********************************}
+
+function next_step : double;
+
+var res : double;
+
+begin
+  res := 0.0;
+  case func of
+     1: res := sin(xx); 
+     2: res := sin(2*xx)*cos(xx); 
+     3: res := sin(2*xx)+cos(xx); 
+     4: res := sin(3*xx)+cos(xx); 
+     5: res := sin(xx)*sin(xx) + cos(xx); 
+     6: res := sin(xx)*sin(xx)*sin(xx); 
+  end;
+  xx := xx+step;
+  next_step:=res;
+end;
+
+function idle_cb (ex : PXEvent; d : pointer) : longint;
+begin
+    fl_insert_chart_value(chartobj,1,next_step(),'',1);
+end;
+
+var obj : PFL_OBJECT;
+
+begin
+  func:= 1;
+  xx:= 0.0;
+  step:= 0.15;
+  fl_flip_yorigin();
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form_form();
+  fl_set_chart_bounds(chartobj,-1.5,1.5);
+  fl_set_chart_maxnumb(chartobj,80);
+  fl_set_chart_autosize(chartobj,0);
+  fl_set_button(sinobj,1);
+  fl_set_slider_value(stepobj,0.15);
+  fl_set_slider_bounds(stepobj,0.0,0.4);
+{$ifdef nevertrue}
+  fl_set_idle_delta(15);
+{$endif }
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'StripChart');
+  repeat
+    fl_insert_chart_value(chartobj,1,next_step(),'',1);
+    obj := fl_check_forms();
+  until obj = exitbut;
+end.

+ 52 - 0
packages/forms/demo/choice.pp

@@ -0,0 +1,52 @@
+{ This demo shows the use of choice objects.  }
+
+program choice;
+
+uses forms;
+
+
+var form : PFL_FORM;
+    sexobj,childobj,licenceobj,marriedobj,readyobj : PFL_OBJECT;
+
+procedure  cb( ob : PFL_OBJECT; data : longint);export;
+
+begin
+   Writeln ('CallBack: ', fl_get_choice(ob));
+end;
+
+procedure create_form;
+
+begin
+  form := fl_bgn_form(FL_NO_BOX,420,360);
+  fl_add_box(FL_UP_BOX,0,0,420,360,'');
+  fl_add_input(FL_NORMAL_INPUT,70,300,320,30,'Name');
+  fl_add_input(FL_NORMAL_INPUT,70,260,320,30,'Address');
+  fl_add_input(FL_NORMAL_INPUT,70,220,320,30,'City');
+  fl_add_input(FL_NORMAL_INPUT,70,180,320,30,'Country');
+  sexobj := fl_add_choice(FL_NORMAL_CHOICE,70,130,110,30,'Sex');
+  childobj := fl_add_choice(FL_NORMAL_CHOICE,280,130,110,30,'Children');
+  licenceobj := fl_add_choice(FL_NORMAL_CHOICE,280,80,110,30,'Licence');
+  marriedobj := fl_add_choice(FL_DROPLIST_CHOICE,70,80,110,30,'Married');
+   fl_set_object_callback(marriedobj, PFL_CALLBACKPTR(@cb),0);
+  readyobj := fl_add_button(FL_NORMAL_BUTTON,150,20,140,30,'Ready');
+  fl_end_form;
+end;
+
+var obj : PFL_OBJECT;
+
+begin
+
+  fl_flip_yorigin;
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form;
+  fl_addto_choice(sexobj,'Male');
+  fl_addto_choice(sexobj,'Female');
+  fl_addto_choice(childobj,'Zero|One|Two|Three|Many');
+  fl_addto_choice(licenceobj,'Yes');
+  fl_addto_choice(licenceobj,'No');
+  fl_addto_choice(marriedobj,'Yes');
+  fl_addto_choice(marriedobj,'No');
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,Nil);
+  while (obj <> readyobj) do obj := fl_do_forms;
+  fl_hide_form(form);
+end.

+ 281 - 0
packages/forms/demo/colbrowser.pp

@@ -0,0 +1,281 @@
+Program colbrowser;
+
+uses forms,strings;
+
+Const  MAX_RGB = 3000;
+
+var
+  cl : PFL_FORM;
+  rescol, dbobj, colbr, rs, gs, bs : PFL_OBJECT;
+  dbname : string;
+  infile : text;
+
+{ the RGB data file does not have a standard location on unix. }
+{ You may need to edit this }
+
+const rgbfile = '/usr/lib/X11/rgb.txt';
+
+type TRGBdb = record 
+       r, g, b : longint;
+     end;
+
+var
+rgbdb : array [0..MAX_RGB] of TRGBdb;
+numcol : longint;
+
+procedure set_entry(i : longint);
+
+var 
+    db : TRGBdb;
+
+begin
+  db := rgbdb[i-1];
+
+    fl_freeze_form(cl);
+    fl_mapcolor(FL_FREE_COL4+i, db.r, db.g, db.b);
+    fl_mapcolor(FL_FREE_COL4, db.r, db.g, db.b);
+    fl_set_slider_value(rs, db.r);
+    fl_set_slider_value(gs, db.g);
+    fl_set_slider_value(bs, db.b);
+    fl_redraw_object(rescol);
+    fl_unfreeze_form(cl);
+end;
+
+procedure br_cb(ob : PFL_OBJECT; q :longint);export;
+
+var r : longint;
+
+begin
+    r := fl_get_browser(ob);
+    if (r <= 0) then exit;
+    set_entry(r - 1);
+end;
+
+{ slow but straightforward }
+function stripsp (s : string) : string;
+
+var temp : string;
+    i : longint;
+begin
+  temp:='';
+  for i:=1 to length(s) do
+    if pos(s[i],'0987654321')<>0 then temp:=temp+s[i];
+  stripsp:=temp;
+end;
+
+
+function  read_entry(Var r,g,b : longint;var name : string) : longint;
+
+var
+    n : longint;
+    buf,temp : string;
+    code : word;
+
+
+begin
+    readln (infile,buf);
+    if buf[1]='!' then exit(0);    
+    temp:=stripsp(copy(buf,1,4));delete(buf,1,4);
+    val (temp,r,code);
+    if code<>0 then exit(0);
+    temp:=stripsp(copy(buf,1,4));delete(buf,1,4);
+    val (temp,g,code);
+    if code<>0 then exit(0);
+    temp:=stripsp(copy(buf,1,4));delete(buf,1,4);
+    val (temp,b,code);
+    if code<>0 then exit(0);
+    { strip leading spaces from name }
+    while (buf[code+1]=' ') or (buf[code+1]=#9) do inc(code);
+    if code<>0 then delete(buf,1,code);
+    name:=buf+#0;    
+    read_entry:=1;
+end;
+
+
+function load_browser(fname : string) : longint;
+
+var buf : string;
+    r,g,b : Longint;
+    rr,gg,bb : string[3];
+    
+begin
+   assign (infile,fname);
+{$i-}
+  reset(infile);
+{$i+}
+  if ioresult<>0 then
+    begin
+      fname:=fname+#0;
+	fl_show_alert('Load', @fname[1], 'Can''t open', 0);
+	exit(0);
+    end;
+
+    fl_freeze_form(cl);
+    numcol:=-1;
+    while not eof(infile) do
+      begin
+      if read_entry(r, g, b, buf)<>0 then
+        begin
+        inc(numcol);
+	rgbdb[numcol].r := r;
+	rgbdb[numcol].g := g;
+	rgbdb[numcol].b := b;
+        str (r,rr); if length(rr)<3 then rr:=copy('   ',1,3-length(rr))+rr;
+        str(g,gg);if length(gg)<3 then gg:=copy('   ',1,3-length(gg))+gg;
+        str(b,bb);if length(bb)<3 then bb:=copy('   ',1,3-length(bb))+bb;
+        buf:='('+rr+' '+gg+' '+bb+') '+buf;
+	fl_addto_browser(colbr, @buf[1]);
+	end;
+      end;
+    close(infile);
+    fl_set_browser_topline(colbr, 1);
+    fl_select_browser_line(colbr, 1);
+    set_entry(0);
+    fl_unfreeze_form(cl);
+    load_browser:=1;
+end;
+
+function search_entry(r,g,b : Longint) : Longint;
+
+var i, j, diffr, diffg, diffb,diff, mindiff : longint;
+
+begin
+    mindiff := 1 shl 25;
+    J:=0;
+    i:=0;
+    for i:=0 to numcol do
+      begin
+       diffr := abs(r - rgbdb[i].r);
+       diffg := abs(g - rgbdb[i].g);
+       diffb := abs(b - rgbdb[i].b);
+       diff := round((3.0 * diffr) +
+	       (5.9 * diffg) +
+	       (1.1 * diffb));
+       if (mindiff > diff) then
+	 begin
+	 mindiff := diff;
+         j := i;
+	 end;
+      end;
+    search_entry:= j;
+end;
+
+procedure search_rgb(ob : PFL_OBJECT; q : longint);export;
+
+var r, g, b, i,top : longint;
+
+begin
+    top  := fl_get_browser_topline(colbr);
+    r := round(fl_get_slider_value(rs));
+    g := round(fl_get_slider_value(gs));
+    b := round(fl_get_slider_value(bs));
+
+    fl_freeze_form(cl);
+    fl_mapcolor(FL_FREE_COL4, r, g, b);
+    fl_redraw_object(rescol);
+    i := search_entry(r, g, b);
+    { change topline only if necessary }
+    if (i < top) or (i > (top+15)) then
+       fl_set_browser_topline(colbr, i-8);
+    fl_select_browser_line(colbr, i + 1);
+    fl_unfreeze_form(cl);
+end;
+
+{ change database }
+procedure db_cb(ob : PFL_OBJECT; q : longint);export;
+
+var p: pchar;
+    buf : string;
+    
+begin
+    p := fl_show_input('Enter New Database Name', @dbname[1]);
+    buf:=strpas(p)+#0;
+    if buf=dbname then exit;
+
+    if (load_browser(buf)<>0) then
+	dbname:=buf
+    else
+	fl_set_object_label(ob, @dbname[1]);
+end;
+
+procedure done_cb (ob : PFL_OBJECT; q :  longint);export;
+begin
+    halt(0);
+end;
+
+procedure create_form_cl;
+var
+    obj : PFL_OBJECT;
+
+begin
+    if (cl<>nil) then exit;
+    cl := fl_bgn_form(FL_NO_BOX, 330, 385);
+    obj := fl_add_box(FL_UP_BOX, 0, 0, 330, 385, '');
+    fl_set_object_color(obj, FL_INDIANRED, FL_COL1);
+    obj := fl_add_box(FL_NO_BOX, 40, 10, 250, 30, 'Color Browser');
+    fl_set_object_lcol(obj, FL_RED);
+    fl_set_object_lsize(obj, FL_HUGE_SIZE);
+    fl_set_object_lstyle(obj, FL_BOLD_STYLE + FL_SHADOW_STYLE);
+    obj := fl_add_button(FL_NORMAL_BUTTON, 40, 50, 250, 25, '');
+    dbobj := obj ;
+    fl_set_object_boxtype(obj, FL_BORDER_BOX);
+{    if fl_get_visual_depth()=1 then
+      fl_set_object_color(obj, FL_WHITE,FL_INDIANRED)
+    else
+      fl_set_object_color(obj, FL_INDIANRED, FL_INDIANRED);
+}
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@db_cb), 0);
+
+    obj:= fl_add_valslider(FL_VERT_FILL_SLIDER, 225, 130, 30, 200, '');
+    rs := obj; 
+    fl_set_object_color(obj, FL_INDIANRED, FL_RED);
+    fl_set_slider_bounds(obj, 0, 255);
+    fl_set_slider_precision(obj, 0);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@search_rgb), 0);
+    fl_set_slider_return(obj, 0);
+    obj:= fl_add_valslider(FL_VERT_FILL_SLIDER, 255, 130, 30, 200, '');
+    gs := obj ;
+    fl_set_object_color(obj, FL_INDIANRED, FL_GREEN);
+    fl_set_slider_bounds(obj, 0.0, 255.0);
+    fl_set_slider_precision(obj, 0);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@search_rgb), 1);
+    fl_set_slider_return(obj, 0);
+    obj := fl_add_valslider(FL_VERT_FILL_SLIDER, 285, 130, 30, 200, '');
+    bs := obj; 
+    fl_set_object_color(obj, FL_INDIANRED, FL_BLUE);
+    fl_set_slider_bounds(obj, double(0.0), double(255.0));
+    fl_set_slider_precision(obj, 0);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@search_rgb), 2);
+    fl_set_slider_return(obj, 0);
+    obj := fl_add_browser(FL_HOLD_BROWSER, 10, 90, 205, 240, '');
+    colbr := obj ;
+    fl_set_browser_fontstyle(obj, FL_FIXED_STYLE); 
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@br_cb), 0);
+
+    obj := fl_add_button(FL_NORMAL_BUTTON, 135, 345, 80, 30, 'Done');
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@done_cb), 0);
+    obj := fl_add_box(FL_FLAT_BOX, 225, 90, 90, 35, '');
+    rescol := obj; 
+    fl_set_object_color(obj, FL_FREE_COL4, FL_FREE_COL4);
+    fl_set_object_boxtype(obj, FL_BORDER_BOX);
+
+    fl_end_form();
+    {fl_scale_form (cl, 1.1, 1.0);}
+end;
+
+begin
+    fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+    cl:=nil;
+    create_form_cl();
+    dbname:= rgbfile+#0;
+    if (load_browser(dbname)<>0) then
+	fl_set_object_label(dbobj, @dbname[1])
+    else
+	fl_set_object_label(dbobj, 'None');
+
+    fl_set_form_minsize(cl, cl^.w , cl^.h);
+    fl_set_form_maxsize(cl, 2*cl^.w , 2*cl^.h);
+    fl_show_form(cl, FL_PLACE_FREE, FL_TRANSIENT, 'RGB Browser');
+
+    while (fl_do_forms()<>nil) do;
+end.

+ 8 - 0
packages/forms/demo/colsel.pp

@@ -0,0 +1,8 @@
+program colsel;
+
+uses forms;
+
+begin
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   fl_show_colormap(0);
+end.

+ 47 - 0
packages/forms/demo/colsel1.pp

@@ -0,0 +1,47 @@
+program colsel1;
+
+uses forms;
+
+var form : PFL_FORM;
+    topbox : PFL_OBJECT;
+
+procedure change_color(ob : PFL_OBJECT; col : longint);export;
+
+begin
+  fl_set_object_color(topbox, col,  col); 
+end;
+
+procedure  makeform;
+
+var obj : PFL_OBJECT;
+  i,j : Integer;
+  st : string[32];
+
+begin
+  form := fl_bgn_form(FL_UP_BOX,100,100);
+    for i:=0 to 7 do
+      for j:=0 to 7 do 
+        begin
+        str (8*j+i,st);
+        st:=st+#0;
+        obj := fl_add_button(FL_RADIO_BUTTON,11+10*i,15+10*j,8,6,@st[1]);
+        fl_set_object_color(obj,8*j+i,8*j+i);
+        fl_set_object_lalign(obj,FL_ALIGN_BOTTOM);
+        fl_set_object_callback(obj,PFL_CALLBACKPTR(@change_color), (8*j+i));
+        end;
+    topbox := fl_add_button(FL_NORMAL_BUTTON,30,5,40,8,'The Color Map');
+    fl_set_object_lsize(topbox,FL_LARGE_SIZE);
+    fl_set_object_lstyle(topbox,FL_BOLD_STYLE);
+  fl_end_form;
+end;
+
+var ret : PFL_OBJECT;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  makeform;
+  fl_scale_form(form, 4.0,4.0);
+  fl_show_form(form,FL_PLACE_FREE,FL_NOBORDER,NiL);
+  while ret<>topbox do ret := fl_do_forms();
+  fl_hide_form(form);
+end.

+ 72 - 0
packages/forms/demo/counter.pp

@@ -0,0 +1,72 @@
+{ This is an example of the use of counters.
+}
+program counter;
+
+uses forms;
+
+var
+form : PFL_FORM;
+result : PFL_OBJECT;
+co : array[0..2] of PFL_OBJECT;
+
+procedure color_change(ob : PFL_OBJECT; data : longint);export;
+
+var r,g,b : longint;
+
+begin
+    r :=  round(fl_get_counter_value(co[0]));
+    g :=  round(fl_get_counter_value(co[1]));
+    b :=  round(fl_get_counter_value(co[2]));
+
+    fl_mapcolor(FL_FREE_COL1,r,g,b);
+    fl_redraw_object(result);
+end;
+
+procedure create_form_form;
+var
+  obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_NO_BOX,480,200);
+  obj := fl_add_box(FL_UP_BOX,0,0,480,200,'');
+  obj := fl_add_box(FL_DOWN_BOX,310,20,150,160,'');
+  result := obj ;
+    fl_set_object_dblbuffer(result, 1);
+  obj := fl_add_counter(FL_NORMAL_COUNTER,20,20,270,30,'');
+  co[0] := obj; 
+    fl_set_object_color(obj,FL_INDIANRED,FL_RED);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@color_change),0);
+  obj:= fl_add_counter(FL_NORMAL_COUNTER,20,60,270,30,'');
+  co[1] := obj;
+    fl_set_object_color(obj,FL_PALEGREEN,FL_GREEN);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@color_change),0);
+  obj := fl_add_counter(FL_NORMAL_COUNTER,20,100,270,30,'');
+  co[2] := obj ;
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@color_change),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,100,150,110,30,'Exit');
+  fl_end_form();
+end;
+
+var i : longint;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form_form();
+  fl_set_object_color(result,FL_FREE_COL1,FL_FREE_COL1);
+
+  for i:=0 to 2 do
+    begin
+    fl_set_counter_bounds(co[i],0.0,255.0);
+    fl_set_counter_step(co[i],1.0,10.0);
+    fl_set_counter_precision(co[i],0);
+    fl_set_counter_return(co[i],1);
+    end;
+
+  fl_call_object_callback(co[0]);
+
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Counter');
+  fl_do_forms();
+
+end.
+

+ 38 - 0
packages/forms/demo/crab.xpm

@@ -0,0 +1,38 @@
+const
+crab45 : array[0..34] of pchar = (
+'28 28 6 2 ',
+'.  c None 	 s s_SkyBlue ',
+'x  c orange 	 s s_orange ',
+'*  c #ff72c2 	 s s_#ff72c2 ',
+'+  c SteelBlue 	 s s_SteelBlue ',
+'G  c black 	 s s_black ',
+'a  c LightGrey 	 s s_LightGrey ',
+'. . . . . . . . . . * * * * * * * . . . . . . . . . . . ',
+'. . . . . . . . * x x x x x x x * . . . . . . . . . . . ',
+'. . . . . . . * * * * * * * x x * . . . . . . . . . . . ',
+'. . . . . . . . . . . . . * x x x * . . . . . . . . . . ',
+'. . . . . . . . . . * x x x x * x x . . . . . . . . . . ',
+'. . . . . . . . + + * * * * * * * x x . . . . . . . . . ',
+'. . . . . . . . . . . . . . . . . * x x . . . . . * . . ',
+'. . * . . . . . . . . . . . . . . . * x . . * * x x . . ',
+'. * * . . + . . . . . . + + x x + * * x * * x x x + . . ',
+'. x * . . + . . . . . . . . + x + * x x x x x + + . . . ',
+'* x * . * * . . . . . . + . + x * * x x x * * . . . . . ',
+'* x * . x * . . . . . + x + + x x x x x x * * . . * * * ',
+'* x * . x * . . + . + x x x x x x x x x x * * * * x x x ',
+'* x * * x * . . + . . + x x x x x x x x x * * x x x G G ',
+'* x x x x * . . x + + + x x x x x x x x x x x * * G G . ',
+'* x x x * * . . x x x x x x x x x x x x x x x * * G G . ',
+'* * * x . * . . + + * x x x x x x x x x x x x * * G G . ',
+'. . . * . x * . * * * x x x x x x x x x x x x x * * * * ',
+'. . . . . x x * * x x x x x x x x x x x x x x * x x x x ',
+'. . . . . . x x x x x x x x x x x x x x x x * * G G G x ',
+'. . . . . . . . * x x x x x x x x x x x x x * * G G + . ',
+'. . . . . . . . * x * * * * x x x x x x x * * * G G . . ',
+'. . . . . . . * x x * * * * x x x x x * * * * * * G G . ',
+'. . . . . . . * x + . . * x * * * x * * * * * G G G G . ',
+'. . . . . . . x x + . . * x * * * * x G G G * G G G . . ',
+'. . . . . . * x + . . * x x G G G * x G G G G G . . . . ',
+'. . . . . . . . . . . * x G G G G * x G + . G G . . . . ',
+'. . . . . . . . . . . * x G . . . * x x . . . . . . . . '
+) ;

+ 38 - 0
packages/forms/demo/crab45.xpm

@@ -0,0 +1,38 @@
+const
+crab45 : array[0..35] of pchar =
+'28 28 6 2 ',
+'.  c None 	 s s_SkyBlue ',
+'x  c orange 	 s s_orange ',
+'*  c #ff72c2 	 s s_#ff72c2 ',
+'+  c SteelBlue 	 s s_SteelBlue ',
+'G  c black 	 s s_black ',
+'a  c LightGrey 	 s s_LightGrey ',
+'. . . . . . . . . . * * * * * * * . . . . . . . . . . . ',
+'. . . . . . . . * x x x x x x x * . . . . . . . . . . . ',
+'. . . . . . . * * * * * * * x x * . . . . . . . . . . . ',
+'. . . . . . . . . . . . . * x x x * . . . . . . . . . . ',
+'. . . . . . . . . . * x x x x * x x . . . . . . . . . . ',
+'. . . . . . . . + + * * * * * * * x x . . . . . . . . . ',
+'. . . . . . . . . . . . . . . . . * x x . . . . . * . . ',
+'. . * . . . . . . . . . . . . . . . * x . . * * x x . . ',
+'. * * . . + . . . . . . + + x x + * * x * * x x x + . . ',
+'. x * . . + . . . . . . . . + x + * x x x x x + + . . . ',
+'* x * . * * . . . . . . + . + x * * x x x * * . . . . . ',
+'* x * . x * . . . . . + x + + x x x x x x * * . . * * * ',
+'* x * . x * . . + . + x x x x x x x x x x * * * * x x x ',
+'* x * * x * . . + . . + x x x x x x x x x * * x x x G G ',
+'* x x x x * . . x + + + x x x x x x x x x x x * * G G . ',
+'* x x x * * . . x x x x x x x x x x x x x x x * * G G . ',
+'* * * x . * . . + + * x x x x x x x x x x x x * * G G . ',
+'. . . * . x * . * * * x x x x x x x x x x x x x * * * * ',
+'. . . . . x x * * x x x x x x x x x x x x x x * x x x x ',
+'. . . . . . x x x x x x x x x x x x x x x x * * G G G x ',
+'. . . . . . . . * x x x x x x x x x x x x x * * G G + . ',
+'. . . . . . . . * x * * * * x x x x x x x * * * G G . . ',
+'. . . . . . . * x x * * * * x x x x x * * * * * * G G . ',
+'. . . . . . . * x + . . * x * * * x * * * * * G G G G . ',
+'. . . . . . . x x + . . * x * * * * x G G G * G G G . . ',
+'. . . . . . * x + . . * x x G G G * x G G G G G . . . . ',
+'. . . . . . . . . . . * x G G G G * x G + . G G . . . . ',
+'. . . . . . . . . . . * x G . . . * x x . . . . . . . . '
+) ;

+ 90 - 0
packages/forms/demo/cursor.pp

@@ -0,0 +1,90 @@
+Program cursor;
+
+{ Cursor routines demo. }
+
+uses forms;
+
+{$i bm1.xbm}
+{$i bm2.xbm}
+
+type 
+TFD_cursor = record
+	cursor : PFL_FORM;
+	vdata : Pointer;
+	ldata : Longint;
+	end;
+PFD_Cursor = ^TFD_Cursor;
+
+var 
+  bitmapcur : Longint;
+
+
+function create_form_cursor : PFD_cursor; Forward;
+
+{ callbacks for form cursor }
+procedure setcursor_cb(ob : PFL_Object; data : Longint);
+begin
+   fl_set_cursor(FL_ObjWin(ob), data);
+end;
+
+procedure setbitmapcursor_cb(ob : PFL_OBJECT ; data : Longint);export;
+
+begin
+  if bitmapcur<>0 then
+     bitmapcur := longint(fl_create_bitmap_cursor(Pchar(@bm1_bits), Pchar(@bm2_bits), 
+                  16, 16, 8 ,8 ));
+                  {bm1_width, bm1_height,  bm1_width/2, bm1_height/2);}
+  fl_set_cursor(FL_ObjWin(ob), bitmapcur);
+end;
+
+
+Procedure done_cb (ob : PFL_OBJECT; data : Longint);export;
+begin
+    Halt(0);
+end;
+
+
+Function create_form_cursor : PFD_cursor;
+
+var 
+  obj : PFL_OBJECT;
+  fdui : PFD_cursor;
+
+begin
+  new(fdui);
+
+  fdui^.cursor := fl_bgn_form(FL_NO_BOX, 325, 175);
+  obj := fl_add_box(FL_UP_BOX,0,0,325,175,'');
+  obj := fl_add_frame(FL_EMBOSSED_FRAME,10,10,305,120,'');
+  obj := fl_add_button(FL_NORMAL_BUTTON,20,20,65,30,'Hand');
+    fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),XC_hand2);
+  obj := fl_add_button(FL_NORMAL_BUTTON,250,140,60,25,'Done');
+    fl_set_object_callback(obj,PFL_CALLBACkPTR(@done_cb),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,95,20,65,30,'Watch');
+    fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),XC_watch);
+  obj := fl_add_button(FL_NORMAL_BUTTON,170,20,65,30,'Invisible');
+    fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),FL_INVISIBLE_CURSOR);
+  obj := fl_add_button(FL_NORMAL_BUTTON,90,70,140,50,'DefaultCursor');
+    fl_set_button_shortcut(obj,'Dd#d',1);
+    fl_set_object_callback(obj,PFL_CALLBACkPTR(@setcursor_cb),FL_DEFAULT_CURSOR);
+  obj := fl_add_button(FL_NORMAL_BUTTON,245,20,65,30,'BitmapCur');
+    fl_set_object_callback(obj,PFL_CALLBACkPTR(@setbitmapcursor_cb),0);
+  fl_end_form;
+
+  create_form_cursor:= fdui;
+end;
+
+var fd_cursor : PFD_cursor ;
+
+Begin
+
+   fl_set_border_width(-2);
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   fd_cursor := create_form_cursor;
+
+   { fill-in form initialization code }
+
+   fl_show_form(fd_cursor^.cursor,FL_PLACE_CENTER,FL_FULLBORDER,'cursor');
+   fl_do_forms;
+end.
+

+ 11 - 0
packages/forms/demo/doc2p

@@ -0,0 +1,11 @@
+#!/bin/csh
+# Simple script to do some VERY basic c->pascal conversions.
+# 
+foreach f ( $1 )
+sed s/\\\"/\\\'/g <$f | sed s/\\\/\\\*/\{/g |sed s/\\\*\\\//\}/g |\
+sed s/\ =\ /\ :=\ /g | sed s/-\>/\\^\\\./g >`basename $f .c`.pp
+
+
+
+
+

+ 84 - 0
packages/forms/demo/fbrowse.pp

@@ -0,0 +1,84 @@
+{ This demo shows the use of a browser and a file selector.
+}
+program fbrowse;
+
+uses forms,strings;
+
+var 
+form : PFL_FORM;
+br : PFL_OBJECT;
+
+procedure load_file(ob : PFL_OBJECT; arg : longint);export;
+var
+  fname : pchar;
+
+begin
+  fname := fl_show_fselector ('File To Load','','*.*','');
+  if (fname = nil) then exit;
+  if (fl_load_browser(br,fname)<>0) then
+     fl_add_browser_line(br,'NO SUCH FILE!');
+end;
+ 
+procedure set_size(ob : PFL_OBJECT; arg : longint);export;
+begin
+   fl_set_browser_fontsize(br,arg);
+end;
+
+procedure exit_program(ob : PFL_OBJECT; data : longint);export;
+begin
+   halt(0);
+end;
+
+procedure create_form;
+var 
+  obj : PFL_OBJECT;
+  x,dx : TFL_Coord;
+
+begin
+  x  := 20; 
+  dx := 85;
+
+  form := fl_bgn_form(FL_NO_BOX,590,610);
+  obj := fl_add_box(FL_UP_BOX,0,0,590,610,'');
+  obj := fl_add_browser(FL_NORMAL_BROWSER,20,20,550,530,'');
+  br := obj ;
+  obj := fl_add_button(FL_NORMAL_BUTTON,x,560,dx,30,'Load');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@load_file),0);
+    x :=x+ dx + 10;
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,x,560,dx,30,'Tiny');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_TINY_SIZE);
+    x := x+dx;
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,x ,560,dx,30,'Small');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_SMALL_SIZE);
+{ Compiler crashes on the next one. Probably the comparing of the 
+  constants..
+    if (longint(FL_SMALL_SIZE)=longint(FL_BROWSER_FONTSIZE)) then
+    fl_set_button(obj, 1);
+}    x := x+dx;
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,x ,560,dx,30,'Normal');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_NORMAL_SIZE);
+{ idem here.
+   if FL_NORMAL_SIZE = FL_BROWSER_FONTSIZE then
+    fl_set_button(obj,1 );
+}    x := x+dx;
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,x ,560,dx,30,'Large');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_LARGE_SIZE);
+
+  obj := fl_add_button(FL_NORMAL_BUTTON,470,560,100,30,'Exit');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@exit_program), 0);
+  fl_end_form();
+end;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form();
+
+  fl_clear_browser(br);
+  fl_add_browser_line(br,'LOAD A FILE.');
+  fl_set_browser_fontstyle(br,FL_FIXED_STYLE);
+
+  fl_show_form(form,FL_PLACE_FREE,FL_FULLBORDER,'Browser');
+  fl_do_forms();
+  fl_hide_form(form);
+  fl_free_form(form);
+end.

+ 54 - 0
packages/forms/demo/fbrowse1.pp

@@ -0,0 +1,54 @@
+{ This demo shows the use of a browser and fl_call_object_callback.  }
+program fbrowse1;
+
+uses forms;
+
+var
+  form : PFL_FORM;
+  br, but : PFL_OBJECT;
+
+procedure load_file(ob : PFL_OBJECT; arg : longint);export;
+
+begin
+  if (fl_load_browser(br,fl_show_input('Filename to load',''))<>0) then
+     fl_add_browser_line(br,'NO SUCH FILE!');
+end;
+ 
+procedure set_size(ob : PFL_OBJECT; arg : Longint);export;
+
+begin
+  fl_set_browser_fontsize(br, arg);
+end;
+
+
+var obj : PFL_OBJECT;
+
+begin
+    fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+    form := fl_bgn_form(FL_UP_BOX,130,100);
+     br := fl_add_browser(FL_NORMAL_BROWSER,5,5,95,90,'');
+     but := fl_add_button(FL_NORMAL_BUTTON,105,5,20,8,'Exit');
+     obj := fl_add_button(FL_NORMAL_BUTTON,105,75,20,8,'Load');
+     fl_set_object_callback(obj,PFL_CALLBACKPTR(@load_file),0);
+     obj := fl_add_lightbutton(FL_RADIO_BUTTON,105,60,20,8,'Small');
+     fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_SMALL_SIZE);
+     fl_call_object_callback(obj);
+     fl_set_button(obj,1);
+     obj := fl_add_lightbutton(FL_RADIO_BUTTON,105,50,20,8,'Normal');
+     fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_NORMAL_SIZE);
+     obj := fl_add_lightbutton(FL_RADIO_BUTTON,105,40,20,8,'Large');
+     fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_size),FL_LARGE_SIZE);
+    fl_end_form();
+
+  fl_clear_browser(br);
+  fl_add_browser_line(br,'LOAD A FILE.');
+  fl_scale_form(form, 4.0, 4.0); 
+
+  fl_show_form(form,FL_PLACE_FREE,FL_FULLBORDER,'Browser');
+
+  repeat 
+    obj := fl_do_forms; 
+  until obj = but;
+  fl_hide_form(form);
+end.

+ 72 - 0
packages/forms/demo/fdial.pp

@@ -0,0 +1,72 @@
+{ This is an example of the use of filled dials, dial range
+  and dial direction.
+ }
+Program fdial;
+
+uses forms;
+
+var
+form: PFL_FORM;
+button, red, green, blue, redtext, greentext, bluetext, theresult : PFL_OBJECT;
+
+Procedure  makeform;
+
+begin
+  form := fl_bgn_form(FL_UP_BOX,300,330);
+    button := fl_add_button(FL_NORMAL_BUTTON,45,15,210,45,'A Color Editor');
+    fl_set_object_lsize(button,FL_LARGE_SIZE);
+
+    red := fl_add_dial(FL_FILL_DIAL,30,240,60,60,'Red');
+    fl_set_dial_bounds(red,0.0,255.0);
+    fl_set_dial_value(red,128.0);
+    fl_set_object_color(red,FL_DIAL_COL1, FL_RED);
+    redtext := fl_add_box(FL_DOWN_BOX,105,255,50,25,'');
+
+    green := fl_add_dial(FL_FILL_DIAL,30,155,60,60,'Green');
+    fl_set_dial_bounds(green,0.0,255.0);
+    fl_set_dial_value(green,128.0);
+    fl_set_dial_angles(green, 45.0, (360-45.0)); 
+    fl_set_object_color(green,FL_DIAL_COL1, FL_GREEN);
+    greentext := fl_add_box(FL_DOWN_BOX,105,170,50,25,'');
+
+    blue := fl_add_dial(FL_FILL_DIAL,30,70,60,60,'Blue');
+    fl_set_dial_bounds(blue,0.0,255.0);
+    fl_set_dial_value(blue,128.0);
+    fl_set_object_color(blue,FL_DIAL_COL1,FL_BLUE);
+    fl_set_dial_direction(blue, FL_DIAL_CCW);
+    bluetext := fl_add_box(FL_DOWN_BOX,105,90,50,25,'');
+
+    theresult := fl_add_box(FL_DOWN_BOX,180,70,90,245,'');
+    fl_set_object_color(theresult,FL_FREE_COL1,FL_FREE_COL1);
+    fl_set_object_dblbuffer(theresult,1);
+  fl_end_form;
+end;
+
+var 
+  ret : PFL_OBJECT;
+  r,g,b : longint;
+  st : string;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  makeform;
+  fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'A Form');
+  repeat
+    r :=  round(fl_get_dial_value(red)+0.001);
+    g :=  round(fl_get_dial_value(green)+0.001);
+    b :=  round(fl_get_dial_value(blue)+0.001);
+    fl_mapcolor(FL_FREE_COL1,r,g,b);
+    fl_redraw_object(theresult);
+    str (r,st); 
+    st:=st+#0; 
+    fl_set_object_label(redtext,@st[1]);
+    str (g,st); 
+    st:=st+#0; 
+    fl_set_object_label(greentext,@st[1]);
+    str (b,st); 
+    st:=st+#0; 
+    fl_set_object_label(bluetext,@st[1]);
+    ret := fl_do_forms;
+  until (ret = button);
+  fl_hide_form(form);
+end.

+ 47 - 0
packages/forms/demo/flclock.pp

@@ -0,0 +1,47 @@
+{ Form definition file generated with fdesign. }
+program flclock;
+
+uses forms;
+
+var
+ fclock : PFL_FORM;
+
+procedure exit_cb (ob : PFL_OBJECT; q : longint);export;
+begin
+   halt(0);
+end;
+
+procedure create_form_clock;
+var
+  obj : PFL_OBJECT;
+
+begin
+  if (fclock<>nil) then exit;
+
+  fclock := fl_bgn_form(FL_NO_BOX,500,350);
+  obj := fl_add_box(FL_UP_BOX,0,0,500,350,'');
+
+  obj := fl_add_clock(FL_DIGITAL_CLOCK,190,20,140,30,'');
+  fl_set_object_boxtype(obj,FL_ROUNDED_BOX);
+  fl_set_object_color(obj,FL_COL1,FL_BLACK);
+  fl_set_object_lsize(obj,FL_MEDIUM_SIZE);
+  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+
+  obj := fl_add_clock(FL_ANALOG_CLOCK,30,70,220,200,'');
+  fl_set_object_boxtype(obj,FL_UP_BOX);
+
+  obj := fl_add_clock(FL_ANALOG_CLOCK,260,70,220,200,'');
+  fl_set_object_boxtype(obj,FL_OVAL_BOX);
+  obj := fl_add_button(FL_NORMAL_BUTTON,380,300,100,30,'Exit');
+  fl_set_object_callback(obj, PFL_CALLBACKPTR(@exit_cb), 0);
+  fl_end_form;
+end;
+
+begin
+    fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+    create_form_clock();
+    fl_set_form_dblbuffer(fclock, 1);
+    fl_show_form(fclock, FL_PLACE_CENTER,FL_TRANSIENT,'clocks');
+    fl_do_forms();
+end.

+ 107 - 0
packages/forms/demo/fonts.pp

@@ -0,0 +1,107 @@
+{* Demo, showing ther different fonts in the different sizes. *}
+program fonts;
+
+uses forms;
+
+type
+TFD_fontsform = record
+	fontsform : PFL_FORM;
+	fontobj,
+	sizeobj,
+	textobj : PFL_OBJECT;
+	vdata : pointer;
+	ldata : longint;
+end;
+PFD_fontsform=^TFD_fontsform;
+
+var ui : PFD_fontsform;
+
+procedure done_cb(obj : PFL_OBJECT; arg : longint);export;
+begin
+    halt(0);
+end;
+
+procedure style_cb(obj : PFL_OBJECT; arg : Longint);export;
+begin
+  fl_set_object_lstyle(ui^.textobj, fl_get_browser(obj) - 1);
+end;
+
+procedure size_cb(obj : PFL_OBJECT; arg : longint); export;
+begin
+  case fl_get_browser(obj) of
+     1: fl_set_object_lsize(ui^.textobj,8); 
+     2: fl_set_object_lsize(ui^.textobj,10); 
+     3: fl_set_object_lsize(ui^.textobj,11); 
+     4: fl_set_object_lsize(ui^.textobj,12); 
+     5: fl_set_object_lsize(ui^.textobj,13); 
+     6: fl_set_object_lsize(ui^.textobj,14); 
+     7: fl_set_object_lsize(ui^.textobj,18); 
+     8: fl_set_object_lsize(ui^.textobj,24); 
+     9: fl_set_object_lsize(ui^.textobj,30); 
+  end;
+end;
+
+procedure addit(st : pchar);
+begin
+   fl_add_browser_line(ui^.fontobj,st); 
+end;
+
+
+function create_form_fontsform : PFD_fontsform;
+var
+  obj : PFL_OBJECT ;
+  fdui : PFD_fontsform;
+
+begin
+  new(fdui);
+
+  fdui^.fontsform := fl_bgn_form(FL_NO_BOX, 371, 296);
+  obj := fl_add_box(FL_FLAT_BOX,0,0,371,296,'');
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1);
+  obj := fl_add_browser(FL_HOLD_BROWSER,10,145,195,135,'');
+  fdui^.fontobj := obj;
+    fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@style_cb),0);
+  obj := fl_add_browser(FL_HOLD_BROWSER,215,145,145,135,'');
+  fdui^.sizeobj := obj ;
+    fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@size_cb),0);
+  obj:= fl_add_text(FL_NORMAL_TEXT,10,5,351,125,'The quick brown'#10'fox jumps over'#10'the lazy dog.');
+  fdui^.textobj := obj ;
+    fl_set_object_boxtype(obj, FL_FRAME_BOX);
+    fl_set_object_lalign(obj, FL_ALIGN_CENTER);
+  obj := fl_add_button(FL_HIDDEN_BUTTON,0,0,370,140,'Button');
+    fl_set_button_shortcut(obj,'^[qQ',1);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb),0);
+  fl_end_form();
+
+  create_form_fontsform:= fdui;
+end;
+
+begin
+  fl_set_border_width(-3);
+
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  ui := create_form_fontsform();
+  fl_scale_form(ui^.fontsform, 1.1,1.2);
+  fl_set_object_dblbuffer(ui^.textobj,1);
+  fl_set_object_bw(ui^.textobj,5);
+
+  fl_enumerate_fonts(PFL_ENUMERATEPTR(@addit), 1);
+  fl_select_browser_line(ui^.fontobj,1);
+  fl_addto_browser(ui^.sizeobj,'8  (tiny)');
+  fl_addto_browser(ui^.sizeobj,'10 (small)');
+  fl_addto_browser(ui^.sizeobj,'11 (scaled)');
+  fl_addto_browser(ui^.sizeobj,'12 (normal)');
+  fl_addto_browser(ui^.sizeobj,'13 (scaled)');
+  fl_addto_browser(ui^.sizeobj,'14 (medium)');
+  fl_addto_browser(ui^.sizeobj,'18 (large)');
+  fl_addto_browser(ui^.sizeobj,'24 (Huge)');
+  fl_addto_browser(ui^.sizeobj,'30 (scaled)');
+  fl_select_browser_line(ui^.sizeobj,2);
+  fl_set_object_lstyle(ui^.textobj,FL_NORMAL_STYLE);
+  fl_call_object_callback(ui^.fontobj);
+  fl_call_object_callback(ui^.sizeobj);
+  fl_show_form(ui^.fontsform,FL_PLACE_CENTER,FL_TRANSIENT,'Fonts');
+  fl_do_forms();
+end.

+ 84 - 0
packages/forms/demo/free1.pp

@@ -0,0 +1,84 @@
+{ This demo is meant to demonstrate the use of a free
+   object in a form.
+}
+program free1;
+
+uses forms;
+
+Const
+  onn : boolean = True;
+  dcol : longint = 1;
+  
+var
+  cole : TFL_COLOR;
+  form : PFL_FORM;
+  obj : PFL_OBJECT;
+  i, j, depth, col : Longint;
+  dummy : cardinal;
+
+
+{ The call back routine }
+function handle_it(obj : PFL_OBJECT; event : longint; 
+                   mx,my : TFL_Coord; 
+                   key : longint; ev : pointer) : longint;export;
+
+begin
+  exit;
+  case event of
+    FL_DRAW:
+        fl_rect(obj^.x,obj^.y,obj^.w,obj^.h, obj^.u_ldata);
+    FL_RELEASE:
+	onn := not(onn);
+    FL_STEP:
+ 	if (onn) then 
+	  begin
+	  if (obj^.u_ldata = cole) then
+	      dcol := -1;
+	  if (obj^.u_ldata = FL_FREE_COL1) then
+	      dcol := 1;
+          obj^.u_ldata := dcol;
+          fl_redraw_object(obj);
+	  end;
+  end;
+  handle_it:=0;
+end;
+
+procedure done(ob : PFL_OBJECT; data : longint); export;
+
+begin
+ halt(0)
+end;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  form := fl_bgn_form(FL_UP_BOX,400,400);
+  obj := fl_add_button(FL_NORMAL_BUTTON,320,20,40,30,'Exit');
+  fl_set_object_callback(obj, PFL_CALLBACKPTR(@done), 0);
+  obj := fl_add_free(FL_CONTINUOUS_FREE,40,80,320,280
+                     ,'',PFL_HANDLEPTR(@handle_it));
+  fl_end_form();
+  depth  := fl_get_visual_depth;
+  { can't do it if less than 4 bit deep }
+  if depth=8 then writeln ('depth of 8');
+  if (depth < 4) then
+    begin
+    writeln ('This Demo requires a depth of at least 4 bits');
+    halt(1);
+  end;
+  cole := ((1 shl depth)-1);
+  if (cole > 64) then
+     cole := 64;
+  col := FL_FREE_COL1;
+{  obj^.u_ldata := col;
+}  cole := cole+col;
+  i:=col;
+  while i<=cole do
+   begin
+     j := round(255 * (i - col) /(cole  - col));
+     dummy:=fl_mapcolor(i, j, j, j);
+     inc(i);
+   end; 
+
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Free Object');
+  fl_do_forms();
+end.

+ 49 - 0
packages/forms/demo/goodies.pp

@@ -0,0 +1,49 @@
+Program goodies;
+
+{ This demo program uses the routines in the
+   goodies section, that help you create easy
+   forms in an even easier way.
+}
+
+uses forms,strings;
+
+var
+  choice : Longint;
+  str1,str2 : string[100];
+  s : pchar;
+  
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+  fl_set_resource(FLOKLabel,'Go');
+
+  if (fl_show_question('Do you want bold font ?',1)<>0) then
+     fl_set_goodies_font(FL_BOLD_STYLE,FL_NORMAL_SIZE);
+
+  fl_show_messages('This is a test program for the goodies of the forms library');
+
+  fl_show_alert('Alert', 'Alert form can be used to inform', 
+               'recoverable errors', 0);
+
+  if (fl_show_question('Do you want to quit?', 0)<>0) then
+      halt(0);
+
+  s:=fl_show_input('Give a string:','');
+  if s<>nil then strcopy(@str1[1],s);
+  fl_show_message('You typed:','',@str1[1]);
+  choice := fl_show_choices('Pick a choice',3,'One','Two','Three',2);
+  case choice of
+    1: fl_show_message('You typed: One','',''); 
+    2: fl_show_message('You typed: Two','',''); 
+    3: fl_show_message('You typed: Three','','');
+  else
+    begin 
+    fl_show_message('An error occured!','','');
+    end
+  end;
+  str1:='<Cancel>'#0;
+  s:=fl_show_input('Give another string:',@str1[1]);
+  if s<>nil then s:=@str1[1];
+  fl_show_message('You typed:','',s);
+  fl_show_messages('Good Bye');
+end.

+ 226 - 0
packages/forms/demo/group.pp

@@ -0,0 +1,226 @@
+program group;
+
+uses forms;
+
+{$i porsche.xpm}
+{$i nomail.xbm}
+{$i bm1.xbm}
+
+Const NGROUP = 4;
+
+type TFD_objsform = record
+	objsform : PFL_Form;
+	vdata : Pointer;
+	ldata : longint;
+	bitbutton,
+	pixbutton,
+	bit,
+	pix,
+	chart,
+	quit,
+	menu,
+	choice,
+	browser,
+	xyplot : PFL_Object;
+	button,group :  array [0..4] of PFL_OBJECT;
+end;
+PFD_objsform = ^TFD_objsform;
+
+var fd_objsform : PFD_objsform;
+
+{ callbacks for form objsform }
+procedure show_group(ob : PFL_OBJECT;data:  longint);export;
+
+var  i : longint;
+
+begin
+  for i := 0 to NGROUP do
+    if i=data then
+      fl_show_object(fd_objsform^.group[i])
+    else
+      fl_hide_object(fd_objsform^.group[i]);
+end;
+
+procedure init_gui(fd : PFD_objsform);
+
+const
+    x : array[0..5] of real = ( 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 );
+    y : array[0..5] of real = ( 5.5, 4.0, 4.5, 3.8, 4.0, 5.0 );
+    labels: array[0..5] of pchar = ('Mon','Tue','Wed', 'Thur','Fri','Sat');
+
+var
+    i : integer;
+
+begin
+    fl_addto_menu(fd^.menu,'One'#8'F1|Two'#8'F2|Three'#8'F3|Four'#8'F4');
+    fl_addto_choice(fd^.choice,'Option1|Option2|Option3');
+
+    fl_set_pixmapbutton_data(fd^.pixbutton,porsche);
+    fl_set_pixmap_data(fd^.pix, porsche);
+    fl_set_bitmapbutton_data(fd^.bitbutton, bm1_width, bm1_height,pchar(@bm1_bits));
+    fl_set_bitmap_data(fd^.bit, nomail_width, nomail_height, pchar(@nomail_bits));
+
+    fl_set_browser_fontsize(fd^.browser,FL_NORMAL_SIZE);
+    fl_addto_browser(fd^.browser,'browser line 1'#10'browser line 2');
+    fl_addto_browser(fd^.browser,'browser line 3'#10'browser line 4');
+    fl_addto_browser(fd^.browser,'browser line 5'#10'browser line 6');
+    fl_addto_browser(fd^.browser,'browser line 7'#10'browser line 8');
+    fl_addto_browser(fd^.browser,'browser line 9'#10'browser line 10');
+    fl_addto_browser(fd^.browser,'browser line 11'#10'browser line 12');
+    fl_addto_browser(fd^.browser,'browser line 13'#10'browser line 14');
+    fl_addto_browser(fd^.browser,'browser line 15'#10'browser line 16');
+    fl_addto_browser(fd^.browser,'browser line 17'#10'browser line 18');
+
+    for i := 0 to 6 do
+      fl_add_chart_value(fd^.chart,y[i],labels[i],i+1);
+
+    fl_set_xyplot_data(fd^.xyplot,x,y,6,'','','');
+    fl_add_xyplot_overlay(fd^.xyplot,1, x, y, 6, FL_RED);
+    fl_add_xyplot_text(fd^.xyplot,2.5,5.2,'Weekly Summary', 
+                       FL_ALIGN_CENTER,FL_BLUE);
+    fl_add_xyplot_text(fd^.xyplot, 3, 3.85, '@-22^.', FL_ALIGN_TOP, FL_RED);
+
+    fl_set_xyplot_overlay_type(fd^.xyplot,1,FL_NORMAL_XYPLOT);
+    fl_set_xyplot_alphaxtics(fd^.xyplot,'Mon|Tue|Wed|Thu|Fri|Sat', nil);
+    fl_set_xyplot_ytics(fd^.xyplot,-1,-1);
+    fl_set_xyplot_linewidth(fd^.xyplot,0, 3);
+end;
+
+function create_form_objsform : PFD_objsform;
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_objsform;
+  old_bw : Longint;
+  
+begin
+  new(fdui);
+  old_bw := fl_get_border_width;
+
+  fl_set_border_width(-3);
+  fdui^.objsform := fl_bgn_form(FL_NO_BOX, 456, 361);
+  obj := fl_add_box(FL_FLAT_BOX,0,0,456,361,'');
+  obj := fl_add_box(FL_UP_BOX,0,0,455,360,'');
+  obj := fl_add_box(FL_UP_BOX,0,0,456,70,'');
+  obj := fl_add_button(FL_RADIO_BUTTON,15,20,75,30,'Static');
+    fdui^.button[0] := obj; 
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),0);
+  obj := fl_add_button(FL_RADIO_BUTTON,90,20,75,30,'Button');
+    fdui^.button[1] := obj; 
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),1);
+  obj := fl_add_button(FL_RADIO_BUTTON,165,20,70,30,'Valuator');
+    fdui^.button[2] := obj; 
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),2);
+  obj := fl_add_button(FL_RADIO_BUTTON,235,20,70,30,'Input');
+    fdui^.button[3] := obj; 
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),3);
+  obj := fl_add_button(FL_RADIO_BUTTON,305,20,70,30,'Other');
+    fdui^.button[4] := obj; 
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@show_group),4);
+  obj := fl_add_box(FL_UP_BOX,0,70,456,291,'');
+  obj := fl_add_box(FL_DOWN_BOX,9,90,435,260,'');
+
+  fdui^.group[2] := fl_bgn_group();
+  obj := fl_add_text(FL_NORMAL_TEXT,260,140,80,30,'Text');
+    fl_set_object_lalign(obj,FL_ALIGN_LEFT or FL_ALIGN_INSIDE);
+  obj := fl_add_slider(FL_HOR_BROWSER_SLIDER,60,120,170,25,'');
+  obj := fl_add_slider(FL_HOR_FILL_SLIDER,60,160,170,30,'');
+    fl_set_slider_value(obj, 0.54);
+  obj := fl_add_slider(FL_VERT_SLIDER,390,110,30,170,'');
+    fl_set_slider_value(obj, 0.48);
+  obj := fl_add_valslider(FL_VERT_SLIDER,350,110,30,170,'');
+  obj := fl_add_dial(FL_FILL_DIAL,50,220,90,70,'');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_positioner(FL_NORMAL_POSITIONER,150,210,120,100,'');
+  obj := fl_add_counter(FL_NORMAL_COUNTER,300,300,130,30,'');
+  fl_end_group();
+
+
+  fdui^.group[1] := fl_bgn_group();
+  obj := fl_add_bitmapbutton(FL_NORMAL_BUTTON,60,250,50,40,'');
+    fdui^.bitbutton := obj; 
+  obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,85,120,80,80,'');
+    fdui^.pixbutton := obj; 
+  obj := fl_add_button(FL_NORMAL_BUTTON,290,270,90,35,'Button');
+  obj := fl_add_round3dbutton(FL_PUSH_BUTTON,260,95,60,40,'Round3DButton');
+    fl_set_object_color(obj, FL_COL1, FL_MAGENTA);
+  obj := fl_add_roundbutton(FL_PUSH_BUTTON,220,140,60,40,'RoundButton');
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,190,230,50,40,'CheckButton');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_lightbutton(FL_PUSH_BUTTON,290,200,100,30,'LightButton');
+  obj := fl_add_button(FL_PUSH_BUTTON, 120, 290, 100, 35 ,'Button');
+   fl_set_object_boxtype(obj, FL_ROUNDED3D_UPBOX);
+  fl_end_group();
+
+
+  fdui^.group[0] := fl_bgn_group();
+  obj := fl_add_box(FL_UP_BOX,40,120,70,70,'A Box');
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
+  obj := fl_add_bitmap(FL_NORMAL_BITMAP,30,220,80,70,'bitmap');
+    fdui^.bit := obj; 
+  obj := fl_add_clock(FL_ANALOG_CLOCK,330,240,90,80,'');
+  obj := fl_add_frame(FL_ENGRAVED_FRAME,130,120,80,70,'A Frame');
+    fl_set_object_lsize(obj,FL_NORMAL_SIZE);
+    fl_set_object_lstyle(obj,FL_TIMESBOLD_STYLE);
+  obj := fl_add_pixmap(FL_NORMAL_PIXMAP,340,110,90,70,'pixmap');
+    fdui^.pix := obj; 
+  obj := fl_add_chart(FL_PIE_CHART,160,210,130,110,'chart');
+    fdui^.chart := obj; 
+  obj := fl_add_text(FL_NORMAL_TEXT,240,130,100,30,'Text stuff\nand more stuff');
+    fl_set_object_lalign(obj,FL_ALIGN_CENTER or FL_ALIGN_INSIDE);
+  fl_end_group();
+
+
+  fdui^.group[3] := fl_bgn_group();
+  obj := fl_add_input(FL_NORMAL_INPUT,140,120,150,30,'Input');
+  obj := fl_add_input(FL_MULTILINE_INPUT,60,170,320,130,'');
+  fl_end_group();
+
+  obj := fl_add_button(FL_NORMAL_BUTTON,385,20,60,30,'Quit');
+    fdui^.quit := obj; 
+
+  fdui^.group[4] := fl_bgn_group();
+  obj := fl_add_menu(FL_PULLDOWN_MENU,190,110,40,19,'Menu');
+    fdui^.menu := obj; 
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+  obj := fl_add_choice(FL_NORMAL_CHOICE,290,110,120,30,'');
+    fdui^.choice := obj; 
+  obj := fl_add_browser(FL_NORMAL_BROWSER,30,140,140,150,'');
+    fdui^.browser := obj; 
+  obj := fl_add_xyplot(FL_IMPULSE_XYPLOT,190,150,240,180,'');
+    fdui^.xyplot := obj; 
+    fl_set_object_lsize(obj,FL_DEFAULT_SIZE);
+  fl_end_group();
+
+  fl_end_form();
+  fdui^.objsform^.fdui:=fdui;
+  fl_set_border_width(old_bw);
+
+  create_form_objsform := fdui;
+end;
+
+begin
+   fl_initialize(@argc, argv, '', nil, 0);
+   fd_objsform := create_form_objsform;
+   init_gui(fd_objsform);
+
+   { fill-in form initialization code }
+   fl_set_button(fd_objsform^.button[0], 1);
+   show_group(nil, 0); 
+
+   { show the first form }
+   fl_show_form(fd_objsform^.objsform,FL_PLACE_CENTER,FL_FULLBORDER,'objsform');
+   while (fl_do_forms() <> fd_objsform^.quit) do 
+     begin
+     end;
+end.

+ 37 - 0
packages/forms/demo/iconify.pp

@@ -0,0 +1,37 @@
+Program iconify;
+
+Uses x,forms;
+
+{$i crab.xpm}
+
+
+function create_form_form : PFL_FORM;
+
+var 
+  obj : PFL_OBJECT;
+  form : PFL_FORM;
+  
+begin
+  new(form);
+  form := fl_bgn_form(FL_NO_BOX,151,111);
+  obj := fl_add_pixmapbutton(FL_NORMAL_BUTTON,0,0,151,111,
+                             'Iconify Me\nvia Window Manager');
+  fl_set_object_lalign(obj, FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE);
+  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+  fl_set_pixmapbutton_data(obj, crab45);
+  fl_end_form;
+  create_form_form:=form;
+end;
+
+Var form0 : PFL_FORM;
+    mask,p : TPixmap;
+    H,W : word;
+    
+begin
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   form0 := create_form_form;
+   p := fl_read_pixmapfile(fl_root, 'crab.xpm', Pword(@w), pword(@h), PPixmap(@mask), nil, nil, 0);
+   fl_set_form_icon(form0, p, mask);
+   fl_show_form(form0,FL_PLACE_CENTER,FL_FULLBORDER, 'IconTest');
+   fl_do_forms();
+end.

+ 98 - 0
packages/forms/demo/inputall.pp

@@ -0,0 +1,98 @@
+program inputall;
+
+uses forms;
+
+type TFD_INPUT = record
+	input : PFL_FORM;
+	vdata : pointer;
+	norminput,multiinput,report : PFL_OBJECT;
+   end;
+PFD_INPUT = ^TFD_input;
+
+procedure done_cb( ob : PFL_OBJECT; data : longint);export;
+
+begin
+   halt(0);
+end;
+
+procedure input_cb( ob : PFL_OBJECT; data : longint);export;
+
+var 
+   cx, cy, pos : Longint;
+   buf,temp : string[128];
+
+begin
+   pos := fl_get_input_cursorpos(ob, @cx,@cy);
+   str (pos,temp); buf:='P = '+temp+' ';
+   str (cx,temp); buf:=buf+'x= '+temp+' ';
+   str (cy,temp); buf:=buf+'y= '+temp+#0;
+   fl_set_object_label( PFD_input(ob^.form^.fdui)^.report,@buf[1]);
+end;
+
+procedure hide_show_cb(ob : PFL_OBJECT; data : longint);export;
+
+var  fd: PFD_input;
+
+begin  
+    fd := ob^.form^.fdui;
+    if (fd^.multiinput^.visible<>0) then
+       fl_hide_object(fd^.multiinput)
+    else
+       fl_show_object(fd^.multiinput);
+end;
+
+
+function create_form_input : PFD_input;
+
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_input;
+
+begin
+  new(fdui);
+  fdui^.input := fl_bgn_form(FL_NO_BOX, 441, 441);
+  obj := fl_add_box(FL_UP_BOX,0,0,441,441,'');
+  obj := fl_add_input(FL_NORMAL_INPUT,40,40,340,30,'NormalInput');
+  fdui^.norminput := obj;    
+  fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@input_cb),0);
+  obj := fl_add_input(FL_INT_INPUT,40,100,160,30,'IntInput');
+    fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT);
+  obj := fl_add_input(FL_FLOAT_INPUT,230,100,160,30,'FloatInput');
+    fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT);
+  obj := fl_add_input(FL_DATE_INPUT,40,150,160,30,'DateInput');
+    fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT);
+  obj := fl_add_input(FL_SECRET_INPUT,230,150,160,30,'Secretinput');
+    fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT);
+  obj:= fl_add_input(FL_MULTILINE_INPUT,40,210,360,180,'MMM');
+  fdui^.multiinput := obj;    
+  fl_set_object_callback(obj,PFL_CALLBACKPTR(@input_cb),0);
+  obj := fl_add_text(FL_NORMAL_TEXT,30,400,210,30,'');
+  fdui^.report := obj;
+    fl_set_object_lalign(obj,FL_ALIGN_LEFT or FL_ALIGN_INSIDE);
+  obj := fl_add_button(FL_NORMAL_BUTTON,330,400,70,30,'Done');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,250,400,70,30,'Hide/Show');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@hide_show_cb),0);
+  fl_end_form();
+  fdui^.input^.fdui := fdui;
+  create_form_input:=fdui;
+end;
+
+
+var fd_input : PFD_input;
+
+begin
+   fl_initialize(@argc, argv, '', nil, 0);
+   fd_input := create_form_input();
+
+   { fill-in form initialization code }
+   fl_set_object_dblbuffer(fd_input^.report,1);
+   fl_set_object_return(fd_input^.multiinput,FL_RETURN_ALWAYS);
+   fl_set_object_return(fd_input^.norminput,FL_RETURN_ALWAYS);
+
+   { show the first form }
+   fl_show_form(fd_input^.input,FL_PLACE_CENTERFREE,FL_FULLBORDER,'input');
+   while (fl_do_forms<>nil) do;
+end.
+

+ 469 - 0
packages/forms/demo/inputall.s

@@ -0,0 +1,469 @@
+	.file "inputall.pp"
+
+.text
+	.align 4
+.globl	_DONE_CB$PFL_OBJECT$LONGINT
+	.type	_DONE_CB$PFL_OBJECT$LONGINT,@function
+_DONE_CB$PFL_OBJECT$LONGINT:
+.globl	done_cb
+	.type	done_cb,@function
+done_cb:
+	pushl	%ebp
+	movl	%esp,%ebp
+	pushl	$0
+	call	_SYSLINUX$$_HALT$BYTE
+	leave
+	ret	$8
+	.align 4
+.globl	_INPUT_CB$PFL_OBJECT$LONGINT
+	.type	_INPUT_CB$PFL_OBJECT$LONGINT,@function
+_INPUT_CB$PFL_OBJECT$LONGINT:
+.globl	input_cb
+	.type	input_cb,@function
+input_cb:
+	pushl	%ebp
+	movl	%esp,%ebp
+	subl	$532,%esp
+	leal	-8(%ebp),%eax
+	pushl	%eax
+	leal	-4(%ebp),%eax
+	pushl	%eax
+	pushl	8(%ebp)
+	call	fl_get_input_cursorpos
+	addl	$12,%esp
+	movl	%eax,-12(%ebp)
+	pushl	$128
+	leal	-273(%ebp),%edi
+	pushl	%edi
+	pushl	$-1
+	pushl	-12(%ebp)
+	call	FPC_SHORTSTR_LONGINT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$.L23
+	pushl	$255
+	call	FPC_SHORTSTR_COPY
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	leal	-273(%ebp),%edi
+	pushl	%edi
+	call	FPC_SHORTSTR_CONCAT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$.L24
+	call	FPC_SHORTSTR_CONCAT
+	leal	-141(%ebp),%edi
+	pushl	%edi
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$128
+	call	FPC_SHORTSTR_COPY
+	pushl	$128
+	leal	-273(%ebp),%edi
+	pushl	%edi
+	pushl	$-1
+	pushl	-4(%ebp)
+	call	FPC_SHORTSTR_LONGINT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	leal	-141(%ebp),%edi
+	pushl	%edi
+	pushl	$255
+	call	FPC_SHORTSTR_COPY
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$.L31
+	call	FPC_SHORTSTR_CONCAT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	leal	-273(%ebp),%edi
+	pushl	%edi
+	call	FPC_SHORTSTR_CONCAT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$.L24
+	call	FPC_SHORTSTR_CONCAT
+	leal	-141(%ebp),%edi
+	pushl	%edi
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$128
+	call	FPC_SHORTSTR_COPY
+	pushl	$128
+	leal	-273(%ebp),%edi
+	pushl	%edi
+	pushl	$-1
+	pushl	-8(%ebp)
+	call	FPC_SHORTSTR_LONGINT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	leal	-141(%ebp),%edi
+	pushl	%edi
+	pushl	$255
+	call	FPC_SHORTSTR_COPY
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$.L38
+	call	FPC_SHORTSTR_CONCAT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	leal	-273(%ebp),%edi
+	pushl	%edi
+	call	FPC_SHORTSTR_CONCAT
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$.L39
+	call	FPC_SHORTSTR_CONCAT
+	leal	-141(%ebp),%edi
+	pushl	%edi
+	leal	-530(%ebp),%edi
+	pushl	%edi
+	pushl	$128
+	call	FPC_SHORTSTR_COPY
+	leal	-140(%ebp),%eax
+	pushl	%eax
+	movl	8(%ebp),%eax
+	movl	(%eax),%eax
+	movl	(%eax),%eax
+	pushl	16(%eax)
+	call	fl_set_object_label
+	addl	$8,%esp
+	leave
+	ret	$8
+	.align 4
+.globl	_HIDE_SHOW_CB$PFL_OBJECT$LONGINT
+	.type	_HIDE_SHOW_CB$PFL_OBJECT$LONGINT,@function
+_HIDE_SHOW_CB$PFL_OBJECT$LONGINT:
+.globl	hide_show_cb
+	.type	hide_show_cb,@function
+hide_show_cb:
+	pushl	%ebp
+	movl	%esp,%ebp
+	subl	$4,%esp
+	movl	8(%ebp),%eax
+	movl	(%eax),%eax
+	movl	(%eax),%edi
+	movl	%edi,-4(%ebp)
+	movl	-4(%ebp),%eax
+	movl	12(%eax),%eax
+	movl	188(%eax),%eax
+	testl	%eax,%eax
+	jne	.L48
+	jmp	.L49
+.L48:
+	movl	-4(%ebp),%eax
+	pushl	12(%eax)
+	call	fl_hide_object
+	popl	%edi
+	jmp	.L52
+.L49:
+	movl	-4(%ebp),%eax
+	pushl	12(%eax)
+	call	fl_show_object
+	popl	%edi
+.L52:
+	leave
+	ret	$8
+	.align 4
+.globl	_CREATE_FORM_INPUT
+	.type	_CREATE_FORM_INPUT,@function
+_CREATE_FORM_INPUT:
+	pushl	%ebp
+	movl	%esp,%ebp
+	subl	$12,%esp
+	pushl	$20
+	leal	-12(%ebp),%edi
+	pushl	%edi
+	call	FPC_GETMEM
+	movl	-12(%ebp),%eax
+	pushl	%eax
+	pushl	$441
+	pushl	$441
+	pushl	$0
+	call	fl_bgn_form
+	addl	$12,%esp
+	movl	%eax,%edx
+	popl	%eax
+	movl	%edx,(%eax)
+	leal	.L69+1,%eax
+	pushl	%eax
+	pushl	$441
+	pushl	$441
+	pushl	$0
+	pushl	$0
+	pushl	$1
+	call	fl_add_box
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	leal	.L84+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$340
+	pushl	$40
+	pushl	$40
+	pushl	$0
+	call	fl_add_input
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	movl	-12(%ebp),%eax
+	movl	-8(%ebp),%edi
+	movl	%edi,8(%eax)
+	pushl	$5
+	pushl	-8(%ebp)
+	call	fl_set_object_lalign
+	addl	$8,%esp
+	pushl	$0
+	leal	_INPUT_CB$PFL_OBJECT$LONGINT,%eax
+	pushl	%eax
+	pushl	-8(%ebp)
+	call	fl_set_object_callback
+	addl	$12,%esp
+	leal	.L111+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$160
+	pushl	$100
+	pushl	$40
+	pushl	$2
+	call	fl_add_input
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	pushl	$5
+	pushl	-8(%ebp)
+	call	fl_set_object_lalign
+	addl	$8,%esp
+	leal	.L130+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$160
+	pushl	$100
+	pushl	$230
+	pushl	$1
+	call	fl_add_input
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	pushl	$5
+	pushl	-8(%ebp)
+	call	fl_set_object_lalign
+	addl	$8,%esp
+	leal	.L149+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$160
+	pushl	$150
+	pushl	$40
+	pushl	$3
+	call	fl_add_input
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	pushl	$5
+	pushl	-8(%ebp)
+	call	fl_set_object_lalign
+	addl	$8,%esp
+	leal	.L168+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$160
+	pushl	$150
+	pushl	$230
+	pushl	$6
+	call	fl_add_input
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	pushl	$5
+	pushl	-8(%ebp)
+	call	fl_set_object_lalign
+	addl	$8,%esp
+	leal	.L187+1,%eax
+	pushl	%eax
+	pushl	$180
+	pushl	$360
+	pushl	$210
+	pushl	$40
+	pushl	$4
+	call	fl_add_input
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	movl	-12(%ebp),%eax
+	movl	-8(%ebp),%edi
+	movl	%edi,12(%eax)
+	pushl	$0
+	leal	_INPUT_CB$PFL_OBJECT$LONGINT,%eax
+	pushl	%eax
+	pushl	-8(%ebp)
+	call	fl_set_object_callback
+	addl	$12,%esp
+	leal	.L69+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$210
+	pushl	$400
+	pushl	$30
+	pushl	$0
+	call	fl_add_text
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	movl	-12(%ebp),%eax
+	movl	-8(%ebp),%edi
+	movl	%edi,16(%eax)
+	pushl	$8196
+	pushl	-8(%ebp)
+	call	fl_set_object_lalign
+	addl	$8,%esp
+	leal	.L230+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$70
+	pushl	$400
+	pushl	$330
+	pushl	$0
+	call	fl_add_button
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	pushl	$0
+	leal	_DONE_CB$PFL_OBJECT$LONGINT,%eax
+	pushl	%eax
+	pushl	-8(%ebp)
+	call	fl_set_object_callback
+	addl	$12,%esp
+	leal	.L251+1,%eax
+	pushl	%eax
+	pushl	$30
+	pushl	$70
+	pushl	$400
+	pushl	$250
+	pushl	$0
+	call	fl_add_button
+	addl	$24,%esp
+	movl	%eax,-8(%ebp)
+	pushl	$0
+	leal	_HIDE_SHOW_CB$PFL_OBJECT$LONGINT,%eax
+	pushl	%eax
+	pushl	-8(%ebp)
+	call	fl_set_object_callback
+	addl	$12,%esp
+	call	fl_end_form
+	movl	-12(%ebp),%eax
+	movl	(%eax),%eax
+	movl	-12(%ebp),%edi
+	movl	%edi,(%eax)
+	movl	-12(%ebp),%edi
+	movl	%edi,-4(%ebp)
+	movl	-4(%ebp),%eax
+	leave
+	ret
+	.align 4
+.globl	main
+	.type	main,@function
+main:
+.globl	PASCALMAIN
+	.type	PASCALMAIN,@function
+PASCALMAIN:
+.globl	program_init
+	.type	program_init,@function
+program_init:
+	pushl	%ebp
+	movl	%esp,%ebp
+	call	FPC_INITIALIZEUNITS
+	pushl	$0
+	pushl	$0
+	leal	.L69+1,%eax
+	pushl	%eax
+	pushl	U_SYSLINUX_ARGV
+	leal	U_SYSLINUX_ARGC,%eax
+	pushl	%eax
+	call	fl_initialize
+	addl	$20,%esp
+	call	_CREATE_FORM_INPUT
+	movl	%eax,_FD_INPUT
+	pushl	$1
+	movl	_FD_INPUT,%eax
+	pushl	16(%eax)
+	call	fl_set_object_dblbuffer
+	addl	$8,%esp
+	pushl	$3
+	movl	_FD_INPUT,%eax
+	pushl	12(%eax)
+	call	fl_set_object_return
+	addl	$8,%esp
+	pushl	$3
+	movl	_FD_INPUT,%eax
+	pushl	8(%eax)
+	call	fl_set_object_return
+	addl	$8,%esp
+	leal	.L298+1,%eax
+	pushl	%eax
+	pushl	$1
+	pushl	$16386
+	movl	_FD_INPUT,%eax
+	pushl	(%eax)
+	call	fl_show_form
+	addl	$16,%esp
+	jmp	.L306
+.L305:
+.L306:
+	call	fl_do_forms
+	cmpl	$0,%eax
+	jne	.L305
+	jmp	.L307
+.L307:
+	call	FPC_DO_EXIT
+	leave
+	ret
+
+.data
+	.ascii	"FPC 0.99.11 for i386 - LINUX"
+	.align 4
+.globl	INITFINAL
+	.type	INITFINAL,@object
+INITFINAL:
+	.long	3,0
+	.long	INIT$$SYSLINUX
+	.long	0
+	.long	INIT$$OBJPAS
+	.long	0
+	.long	INIT$$XLIB
+	.long	0
+.globl	HEAPSIZE
+	.type	HEAPSIZE,@object
+HEAPSIZE:
+	.long	2097152
+
+.data
+.L23:
+	.ascii	"\004P = \000"
+.L24:
+	.ascii	"\001 \000"
+.L31:
+	.ascii	"\003x= \000"
+.L38:
+	.ascii	"\003y= \000"
+.L39:
+	.ascii	"\001\000\000"
+.L69:
+	.ascii	"\000\000"
+.L84:
+	.ascii	"\013NormalInput\000"
+.L111:
+	.ascii	"\010IntInput\000"
+.L130:
+	.ascii	"\012FloatInput\000"
+.L149:
+	.ascii	"\011DateInput\000"
+.L168:
+	.ascii	"\013Secretinput\000"
+.L187:
+	.ascii	"\003MMM\000"
+.L230:
+	.ascii	"\004Done\000"
+.L251:
+	.ascii	"\011Hide/Show\000"
+.L298:
+	.ascii	"\005input\000"
+
+.data
+
+.bss
+	.lcomm	_FD_INPUT,4
+	.comm	HEAP,2097152
+

+ 67 - 0
packages/forms/demo/invslider.pp

@@ -0,0 +1,67 @@
+program invslider;
+
+uses forms;
+
+type 
+TFD_inv = record
+	inv : PFL_FORM;
+        sl : array[0..2] of PFL_OBJECT;
+	done : PFL_OBJECT;
+	vdata : pointer;
+	ldata : longint;
+	end;
+PFD_inv=^TFD_inv;
+
+var ui : PFD_INV;
+
+procedure invert_it(ob : PFL_OBJECT; data : longint);export;
+
+begin
+   if (fl_get_button(ob)<>0) then
+     begin
+      fl_set_slider_bounds(ui^.sl[0], 1.0, 0.0);
+      fl_set_slider_bounds(ui^.sl[1], 1.0, 0.0);
+      fl_set_slider_bounds(ui^.sl[2], 1.0, 0.0);
+     end
+   else
+     begin
+      fl_set_slider_bounds(ui^.sl[0], 0.0, 1.0);
+      fl_set_slider_bounds(ui^.sl[1], 0.0, 1.0);
+      fl_set_slider_bounds(ui^.sl[2], 0.0, 1.0);
+    end;
+end;
+
+function create_form_inv : PFD_inv; 
+var 
+  obj : PFL_OBJECT ;
+  fdui : PFD_inv;
+
+begin
+  new(fdui);
+  fdui^.inv := fl_bgn_form(FL_NO_BOX, 245, 280);
+  obj := fl_add_box(FL_UP_BOX,0,0,245,280,'');
+  obj := fl_add_valslider(FL_VERT_SLIDER,20,30,35,230,'');
+  fdui^.sl[0] := obj;
+  obj := fl_add_valslider(FL_VERT_FILL_SLIDER,65,30,35,230,'');
+  fdui^.sl[1] := obj;
+  obj := fl_add_valslider(FL_VERT_NICE_SLIDER,115,30,35,230,'');
+  fdui^.sl[2] := obj;
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_button(FL_RETURN_BUTTON,160,235,75,30,'Exit');
+  fdui^.done := obj ;
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,165,30,75,35,'Invert');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@invert_it),0);
+  fl_end_form;
+
+  create_form_inv:=fdui;
+end;
+
+
+begin
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   ui := create_form_inv;
+
+   fl_show_form(ui^.inv,FL_PLACE_CENTER,FL_TRANSIENT,'inv');
+   while fl_do_forms <> ui^.done do;
+end.

+ 103 - 0
packages/forms/demo/lalign.pp

@@ -0,0 +1,103 @@
+program lalign;
+
+{ different label alignments }
+uses forms;
+
+type
+TFD_Form0 = record
+	form0 : PFL_FORM;
+	box,inside,center : PFL_Object;
+	vdata : pointer;
+	ldata  : longint;
+end;
+PFD_Form0 = ^TFD_Form0;
+
+var fd_form0 : PFD_form0;
+
+    align :integer;
+
+
+Procedure align_cb(ob : PFL_OBJECT; n : longint);export;
+begin
+    if fl_get_button(fd_form0^.inside)<>0 then 
+       n:=n or FL_ALIGN_INSIDE;
+    fl_set_object_lalign(fd_form0^.box, n);
+end;
+
+Procedure inside_cb(Ob : PFL_OBJECT; data : longint);export;
+
+begin
+   if fl_get_button(ob)<>0 then
+      fd_form0^.box^.align := fd_form0^.box^.align or FL_ALIGN_INSIDE
+   else
+      fd_form0^.box^.align := fd_form0^.box^.align and not FL_ALIGN_INSIDE;
+   fl_redraw_form(fd_form0^.form0);
+end;
+
+function create_form_form0 : PFD_form0;
+
+Var
+  obj : PFL_OBJECT;
+  fdui : PFD_form0;
+begin
+  new(fdui);
+  fdui^.form0 := fl_bgn_form(FL_NO_BOX, 351, 170);
+  obj := fl_add_box(FL_UP_BOX,0,0,351,170,'');
+  obj := fl_add_box(FL_UP_BOX,190,45,90,45,'abcdefg'#10'hijklmno');
+  fdui^.box := obj ;
+  {  fl_set_object_clip(obj, 1); }
+  obj := fl_add_lightbutton(FL_PUSH_BUTTON,20,120,90,30,'Inside');
+  fdui^.inside := obj;
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@inside_cb),0);
+ fl_bgn_group();
+  obj := fl_add_button(FL_RADIO_BUTTON,20,20,30,30,'@#7->');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_LEFT_TOP);
+  obj := fl_add_button(FL_RADIO_BUTTON,50,20,30,30,'@#8->');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_TOP);
+  obj := fl_add_button(FL_RADIO_BUTTON,80,20,30,30,'@#9->');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_RIGHT_TOP);
+  obj := fl_add_button(FL_RADIO_BUTTON,80,50,30,30,'@#->');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_RIGHT);
+  obj := fl_add_button(FL_RADIO_BUTTON,50,50,30,30,'@circle');
+  fdui^.center := obj;
+    fl_set_object_lcol(obj,FL_RED);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_CENTER);
+  obj := fl_add_button(FL_RADIO_BUTTON,20,50,30,30,'@#<-');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_LEFT);
+  obj := fl_add_button(FL_RADIO_BUTTON,20,80,30,30,'@#1->');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_LEFT_BOTTOM);
+  obj := fl_add_button(FL_RADIO_BUTTON,50,80,30,30,'@#2->');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_BOTTOM);
+  obj := fl_add_button(FL_RADIO_BUTTON,80,80,30,30,'@#3->');
+    fl_set_object_lcol(obj,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@align_cb),FL_ALIGN_RIGHT_BOTTOM);
+  fl_end_group();
+
+  obj := fl_add_button(FL_NORMAL_BUTTON,140,120,70,30,'Done');
+  fl_end_form();
+
+  create_form_form0 := fdui;
+end;
+
+begin
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   fd_form0 := create_form_form0();
+
+   { fill-in form initialization code }
+   fl_set_form_dblbuffer(fd_form0^.form0, 1);
+   align := fd_form0^.box^.align or FL_ALIGN_INSIDE;
+   if align <> fd_form0^.box^.align then
+     fl_set_button(fd_form0^.inside, 1);
+
+   { show the first form }
+   fl_show_form(fd_form0^.form0,FL_PLACE_FREE,FL_FULLBORDER,'form0');
+   fl_do_forms();
+end.
+

+ 64 - 0
packages/forms/demo/ldial.pp

@@ -0,0 +1,64 @@
+{ This is an example of the use of dials.
+}
+Program ldial;
+
+uses forms;
+
+
+var 
+form : PFL_FORM ;
+button, red, green, blue, redtext, greentext, bluetext, theresult : PFL_OBJECT;
+
+procedure makeform;
+begin
+  form := fl_bgn_form(FL_UP_BOX,300,330);
+    button := fl_add_button(FL_NORMAL_BUTTON,45,15,210,45,'A Color Editor');
+    fl_set_object_lsize(button,FL_LARGE_SIZE);
+
+    red := fl_add_dial(FL_LINE_DIAL,30,240,60,60,'Red');
+    fl_set_dial_bounds(red,0.0,255.0);
+    fl_set_dial_value(red,128.0);
+    fl_set_object_color(red,FL_RED,FL_DIAL_COL2);
+    redtext := fl_add_box(FL_DOWN_BOX,105,255,50,25,'');
+
+    green := fl_add_dial(FL_LINE_DIAL,30,155,60,60,'Green');
+    fl_set_dial_bounds(green,0.0,255.0);
+    fl_set_dial_value(green,128.0);
+    fl_set_dial_angles(green, 45.0, (360-45.0)); 
+    fl_set_object_color(green,FL_GREEN,FL_DIAL_COL2);
+    greentext := fl_add_box(FL_DOWN_BOX,105,170,50,25,'');
+
+    blue := fl_add_dial(FL_LINE_DIAL,30,70,60,60,'Blue');
+    fl_set_dial_bounds(blue,0.0,255.0);
+    fl_set_dial_value(blue,128.0);
+    fl_set_object_color(blue,FL_BLUE,FL_DIAL_COL2);
+    bluetext := fl_add_box(FL_DOWN_BOX,105,90,50,25,'');
+
+    theresult := fl_add_box(FL_DOWN_BOX,180,70,90,245,'');
+    fl_set_object_color(theresult,FL_FREE_COL1,FL_FREE_COL1);
+    fl_set_object_dblbuffer(theresult,1);
+  fl_end_form;
+end;
+
+var
+  ret : PFL_OBJECT ;
+  r,g,b : Longint;
+  st : string[100];
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  makeform;
+  fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'A Form');
+  repeat
+    r :=  round(fl_get_dial_value(red)+0.001);
+    g :=  round(fl_get_dial_value(green)+0.001);
+    b :=  round(fl_get_dial_value(blue)+0.001);
+    fl_mapcolor(FL_FREE_COL1,r,g,b);
+    fl_redraw_object(theresult);
+    str(r,st);st:=st+#0; fl_set_object_label(redtext,@st[1]);
+    str(g,st);st:=st+#0; fl_set_object_label(greentext,@st[1]);
+    str(b,st);st:=st+#0; fl_set_object_label(bluetext,@st[1]);
+    ret := fl_do_forms;
+  until (ret = button);
+  fl_hide_form(form);
+end.

+ 141 - 0
packages/forms/demo/ll.pp

@@ -0,0 +1,141 @@
+program ll;
+
+uses forms;
+
+{*** Forms and Objects ***}
+
+Type
+TFD_axypform = record
+	axypform : PFL_FORM;
+	xyplot : PFL_OBJECT;
+	status : PFL_OBJECT;
+	vdata : pointer;
+	ldata : longint;
+end;
+PFD_axypform = ^TFD_axypform;
+
+
+var
+xypui : PFD_axypform;
+
+{ callbacks for form axypform }
+Procedure xyplot_cb(ob : PFL_OBJECT; data : longint);export;
+
+
+var
+    x, y : double;
+    i : Longint;
+    temp,buf : string[64];
+    
+begin
+    fl_get_xyplot(ob, @x, @y, @i);
+    if (i < 0) then exit;
+    str (x,buf);
+    str (y,temp);
+    Buf:='X= '+Buf+' Y= '+temp+#0;
+    fl_set_object_label(xypui^.status, @buf[1]);
+end;
+
+
+Procedure alwaysreturn_cb(ob : PFL_OBJECT; data : longint); export;
+
+begin
+   fl_set_xyplot_return(xypui^.xyplot, fl_get_button(ob));
+end;
+
+procedure interpolate_cb(ob : PFL_OBJECT; data : longint);export;
+
+begin
+   if fl_get_button(ob)=0 then
+     fl_set_xyplot_interpolate(xypui^.xyplot, 0,2,0.2)
+   else 
+     fl_set_xyplot_interpolate(xypui^.xyplot, 0,0,0.2);
+end;
+
+Procedure inspect_cb(ob : PFL_OBJECT; data :longint); export; 
+
+begin
+   fl_set_xyplot_inspect(xypui^.xyplot, fl_get_button(ob));
+end;
+
+
+procedure notic_cb(ob : PFL_OBJECT; data :longint); export;
+
+var notic : Longint;
+
+begin
+   notic := fl_get_button(ob);
+
+   if (notic)<>0 then
+     begin
+     fl_set_xyplot_xtics(xypui^.xyplot, -1, -1);
+     fl_set_xyplot_ytics(xypui^.xyplot, -1, -1);
+     end
+   else
+     begin
+     fl_set_xyplot_xtics(xypui^.xyplot, 0, 0);
+     fl_set_xyplot_ytics(xypui^.xyplot, 0, 0);
+     end;
+end;
+
+
+Function create_form_axypform : PFD_axypform;
+
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_axypform;
+  
+begin
+  new(fdui);
+
+  fdui^.axypform := fl_bgn_form(FL_NO_BOX, 431, 301);
+  obj := fl_add_box(FL_UP_BOX,0,0,431,301,'');
+  obj := fl_add_xyplot(FL_ACTIVE_XYPLOT,20,50,285,235,'');
+  fdui^.xyplot :=  obj;
+    fl_set_object_boxtype(obj,FL_DOWN_BOX);
+    fl_set_object_color(obj, FL_BLACK, FL_GREEN);
+    fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@xyplot_cb),0);
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,40,80,25,'AlwaysReturn');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@alwaysreturn_cb),0);
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,65,80,25,'Interpolate');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@interpolate_cb),0);
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,90,85,25,'InspectOnly');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@inspect_cb),0);
+  obj := fl_add_text(FL_NORMAL_TEXT,45,15,170,25,'');
+  fdui^.status := obj;
+    fl_set_object_boxtype(obj, FL_DOWN_BOX);
+  obj := fl_add_button(FL_NORMAL_BUTTON,325,250,90,30,'Done');
+  obj := fl_add_checkbutton(FL_PUSH_BUTTON,315,120,85,25,'NoTics');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@notic_cb),0);
+  fl_end_form();
+
+  create_form_axypform:=fdui;
+end;
+
+
+var
+   x,y : array[0..24] of double;
+   i : longint;
+
+begin
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+   xypui := create_form_axypform;
+
+   { fill-in form initialization code }
+   fl_set_object_dblbuffer(xypui^.status, 1);
+   for i  := 0 to 10 do
+      begin
+      x[i] := i;
+      y[i] := i;
+      end;
+   fl_set_xyplot_data(xypui^.xyplot, x, y, 11, '','','');
+
+   { show the first form }
+   fl_show_form(xypui^.axypform,FL_PLACE_MOUSE,FL_TRANSIENT,'axypform');
+   fl_do_forms();
+end.

+ 58 - 0
packages/forms/demo/longlabel.pp

@@ -0,0 +1,58 @@
+{ Demo of the Use of a very long label }
+program longlabel;
+
+uses forms;
+
+Const
+label1 : pchar = 'This demo shows the use of some very'#10+
+              'long labels. The dynamic storage allocation'#10+
+              'for such long labels should guarantee that'#10+
+              'all of this works without any problem.';
+{ This shows a funny bug in FPK 0.9.1 :) MVC.}
+
+label2 : pchar ='This is the second string that should again'#10+
+             'be a bit larger such that a new, larger amount'#10+
+             'of storage has to be allocated for the label.'#10+
+             'This is of course no problem. By the way,'#10+
+             'dynamic allocation of storage saves a lot'#10+
+             'of memory because for most objects the label'#10+
+             'is much shorter than the 64 bytes that were'#10+
+             'allocated for it in the previous version of'#10+
+             'the Forms Library';
+
+label3 : pchar ='And now back to the first one:'#10#10+
+             'This demo shows the use of some very'#10+
+             'long labels. The dynamic storage allocation'#10+
+             'for such long labels should guarantee that'#10+
+             'all of this works without any problem.';
+
+var
+   form : PFL_FORM;
+   strobj, but : PFL_OBJECT;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+  form := fl_bgn_form(FL_UP_BOX,400,300);
+    strobj := fl_add_box(FL_DOWN_BOX,10,10,380,240,'Press Next');
+    fl_set_object_lsize(strobj,FL_NORMAL_SIZE);
+    but := fl_add_button(FL_NORMAL_BUTTON,160,260,80,30,'Next');
+  fl_end_form();
+
+  fl_set_form_hotobject(form, but);
+  fl_show_form(form,FL_PLACE_HOTSPOT,FL_TRANSIENT,nil);
+
+  fl_do_forms();
+  fl_set_object_label(strobj,label1);
+
+  fl_do_forms();
+  fl_set_object_label(strobj,label2);
+
+  fl_do_forms();
+  fl_set_object_label(strobj, 'Now we turn to a short label');
+  fl_do_forms();
+  fl_set_object_label(strobj,label3);
+
+  fl_set_object_label(but,'Quit');
+  fl_do_forms();
+end.

+ 61 - 0
packages/forms/demo/makefile.org

@@ -0,0 +1,61 @@
+#
+# Makefile for forms library.
+#
+# 1997 Michael Van Canneyt ([email protected])
+#
+# DO NOT try to 'Make' anything here. 
+# Everything that is needed comes from the top Makefile.
+# do a 'make demo' in that directory.
+###########################################################################
+
+
+ifndef PP 
+PP=ppc386
+endif
+
+ifndef XLIB
+XLIB=/usr/X11/lib
+endif
+
+# Stupid bug converts .. to . ????  Hence ... ??? Should be fixed !!
+ifndef PPOPTS
+PPOPTS:= -Up.. -Fl$(XLIB) -FL/lib/ld-linux.so.1
+else
+override PPOPTS:=$(PPOPTS) -Up.. -Fl$(XLIB)
+endif
+
+ifdef FORMLIB
+override PPOPTS:=$(PPOPTS) -Fl$(FORMLIB)
+endif
+
+compiler = $(PP) $(PPOPTS)
+
+
+.SUFFIXES: .pp .ppu
+
+.pp.ppu:
+	$(compiler) $<
+
+OBJECTS= pushme yesno pushbutton touchbutton minput inputall choice butttypes\
+         colsel colsel1 buttonall chartall positioner secretinput cursor fdial\
+         ldial ndial invslider sliderall borderwidth boxtype xyplotover\
+         arrowbutton browserop browserall chartstrip colbrowser counter\
+         fbrowse1 fbrowse flclock fonts goodies lalign ll longlabel menu\
+         objinactive objpos newbutton multilabel objreturn
+# These cannot be made for some reason or don't run.
+#        pup canvas free1 group iconify
+
+help :
+	@echo 'Please run "make" in the top-level directory.'
+	@echo 'You need to edit the Makefile there to specify some needed'
+	@echo 'settings.'
+
+all : $(OBJECTS)
+
+install : all
+
+$(OBJECTS) : %: %.pp
+	-$(compiler) [email protected]
+
+clean :
+	-rm -f link.res *.o *.s *.PPS $(OBJECTS) 

+ 121 - 0
packages/forms/demo/menu.pp

@@ -0,0 +1,121 @@
+{ This demo shows the use of menu's. 
+ * The first two are PUSH_MENUs (pop-up).
+ * The third one is PULLDOWN_MENU
+ * and the last one is TOUCH_MENU
+ *
+ * a confusing demo, but a good testing program ..
+ }
+program menudemo;
+
+uses forms;
+
+Var menu,abox : array[0..3] of PFL_OBJECT;
+    isset : array[0..3] of longint;
+
+   form : PFL_FORM;
+   i, j : longint;
+   
+
+procedure menu_cb(ob : PFL_OBJECT; m : longint);export;
+
+var i,item : longint;
+
+begin
+    item := fl_get_menu(ob);
+
+    if (item <= 0) or (isset[m] = item) then 
+       exit;
+
+    for i := 0 to 3 do
+       if ( i <> m) then
+         begin
+         { enable the old selected color for other menus}
+	 fl_set_menu_item_mode(menu[i], isset[m], Cardinal(FL_PUP_RADIO));
+	 { disable the currently selected color for other menus }
+	 fl_set_menu_item_mode(menu[i], item, Cardinal(FL_PUP_GRAY or FL_PUP_RADIO));
+         end;
+    
+    isset[m] := item;
+    fl_set_object_color(abox[m], FL_BLACK+item, FL_BLACK);
+end; 
+
+procedure done_cb(ob : PFL_OBJECT; data : longint) ; export;
+
+begin
+    halt;
+end;
+
+Function create_form : PFL_Form;
+
+var form : PFL_FORM;
+   obj : PFL_OBJECT;
+
+begin
+   form := fl_bgn_form(FL_NO_BOX,440,380);
+   obj := fl_add_box(FL_BORDER_BOX,0,0,440,380,'');
+     fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1);
+
+   obj := fl_add_menu(FL_PUSH_MENU,0,0,110,30,'Color 1');
+   menu[0] := obj;
+    fl_set_object_shortcut(obj, '1#1', 1);
+    fl_set_object_boxtype(obj, FL_UP_BOX);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 0);
+   obj := fl_add_menu(FL_PUSH_MENU,110,0,110,30,'Color 2');
+   menu[1] := obj;
+    fl_set_object_shortcut(obj, '2#2', 1);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 1);
+   obj := fl_add_menu(FL_PULLDOWN_MENU,220,0,110,30,'Color 3');
+   menu[2] := obj;
+    fl_set_object_shortcut(obj, '3#3', 1);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 2);
+   obj := fl_add_menu(FL_TOUCH_MENU,330,0,110,30,'Color 4');
+   menu[3] := obj;
+    fl_set_object_shortcut(obj, '4#4', 1);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@menu_cb), 3);
+
+   abox[0] := fl_add_box(FL_SHADOW_BOX,20,80,70,230,'');
+   abox[1] := fl_add_box(FL_SHADOW_BOX,130,80,70,230,'');
+   abox[2] := fl_add_box(FL_SHADOW_BOX,240,80,70,230,'');
+   abox[3] := fl_add_box(FL_SHADOW_BOX,350,80,70,230,'');
+   obj := fl_add_button(FL_NORMAL_BUTTON,310,330,110,30,'Exit');
+     fl_set_object_callback(obj, PFL_CALLBACKPTR(@done_cb), 0);
+   fl_end_form();
+   {fl_scale_form(form, 0.9, 0.9);}
+   create_form:=form;
+end;
+
+begin
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+   form := create_form();
+
+  {fl_setpup_color(FL_SLATEBLUE, FL_BLACK); }
+
+   for i:=0 to 3 do
+      begin
+      fl_show_menu_symbol(menu[i], 1);
+      fl_set_menu(menu[i], 
+              'Red%r1|Green%r1|Yellow%r1|Blue%r1|Purple%r1|Cyran%r1|White%r1');
+      fl_set_menu_item_shortcut(menu[i], 1, 'Rr#R#r');
+      fl_set_menu_item_shortcut(menu[i], 2, 'Gg#G#g');
+      fl_set_menu_item_shortcut(menu[i], 3, 'Yy#Y#y');
+      fl_set_menu_item_shortcut(menu[i], 4, 'Bb#B#b');
+      fl_set_menu_item_shortcut(menu[i], 5, 'Pp#P#p');
+      fl_set_menu_item_shortcut(menu[i], 6, 'Cc#C#c');
+      fl_set_menu_item_shortcut(menu[i], 7, 'Ww#W#w');
+
+      { initially the last three entries are enabled }
+      for j:=5 to 7 do
+         fl_set_menu_item_mode(menu[i], j, Cardinal(FL_PUP_RADIO));
+      { the first four are disabled except the item (i+1) }
+      for j:=1 to 4 do
+         fl_set_menu_item_mode(menu[i], j, Cardinal(FL_PUP_GREY or FL_PUP_RADIO));
+      isset[i] := i + 1;
+      fl_set_object_color(abox[i], FL_BLACK+isset[i], FL_BLACK);
+      fl_set_menu_item_mode(menu[i], isset[i], Cardinal(FL_PUP_CHECK or FL_PUP_RADIO));
+      end;
+   
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,Nil);
+  fl_do_forms();
+  fl_hide_form(form);
+end.

+ 29 - 0
packages/forms/demo/minput.pp

@@ -0,0 +1,29 @@
+program minput;
+
+uses forms;
+
+procedure input_cb( ob : PFL_OBJECT; data : Longint);export;
+
+var 
+    x, y : Longint;
+begin
+    fl_get_input_cursorpos(ob, @x , @y);
+    writeln ('x= ',x,' y= ',y);
+end;
+
+
+var 
+  form : PFL_FORM;
+  but, obj : PFL_OBJECT;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  form := fl_bgn_form(FL_UP_BOX,400,450);
+    obj := fl_add_input(FL_MULTILINE_INPUT,30,270,340,150,'');
+    obj := fl_add_input(FL_MULTILINE_INPUT,30,90,340,150,'');
+    fl_set_object_lsize(obj, FL_NORMAL_SIZE);
+  but := fl_add_button(FL_NORMAL_BUTTON,160,30,80,30,'Exit');
+  fl_end_form();
+  fl_show_form(form,FL_PLACE_CENTERFREE,FL_FULLBORDER,'MultiLineInput');
+  while (obj <> but) do obj:=fl_do_forms;
+end.

+ 52 - 0
packages/forms/demo/multilabel.pp

@@ -0,0 +1,52 @@
+{ Multiline labels. }
+program multilabel;
+
+uses forms;
+
+var
+form : PFL_FORM;
+readyobj : PFL_OBJECT;
+
+Procedure create_form;
+
+var obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_NO_BOX,400,470);
+  obj := fl_add_box(FL_UP_BOX,0,0,400,470,'');
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1);
+  obj := fl_add_text(FL_NORMAL_TEXT,140,40,120,120,'This is'#10'a multi-line'#10'labelT');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_lalign(obj,FL_ALIGN_TOP);
+  obj := fl_add_text(FL_NORMAL_TEXT,140,160,120,120,'This is'#10'a multi-line'#10'labelC');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_color(obj,FL_PALEGREEN,FL_COL1);
+    fl_set_object_lsize(obj,FL_LARGE_SIZE);
+    fl_set_object_lalign(obj,FL_ALIGN_CENTER);
+  obj := fl_add_button(FL_NORMAL_BUTTON,280,400,100,50,'I am sure'#10'that I am'#10'Ready');
+  readyobj :=obj; 
+    fl_set_object_lsize(obj,FL_SMALL_SIZE);
+  obj := fl_add_text(FL_NORMAL_TEXT,260,160,120,120,'This is'#10'a multi-line'#10'labelR');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_lalign(obj,FL_ALIGN_RIGHT);
+  obj := fl_add_text(FL_NORMAL_TEXT,140,280,120,120,'This is'#10'a multi-line'#10'labelB');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+    fl_set_object_lalign(obj,FL_ALIGN_BOTTOM);
+  obj := fl_add_text(FL_NORMAL_TEXT,20,160,120,120,'This is'#10'a multi-line'#10'label');
+    fl_set_object_boxtype(obj,FL_BORDER_BOX);
+  fl_end_form();
+end;
+
+var
+  obj : PFL_OBJECT;
+ 
+begin
+
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form;
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Labels');
+  repeat 
+    obj := fl_do_forms; 
+  until (obj = readyobj);
+  fl_hide_form(form);
+end.

+ 63 - 0
packages/forms/demo/ndial.pp

@@ -0,0 +1,63 @@
+{ This is an example of the use of dials.  }
+
+uses forms;
+
+var 
+form : PFL_FORM;
+button, red, green, blue, redtext, greentext, bluetext, theresult : PFL_OBJECT;
+
+procedure  makeform;
+
+begin
+  form := fl_bgn_form(FL_UP_BOX,300,330);
+    button := fl_add_button(FL_NORMAL_BUTTON,45,15,210,45,'A Color Editor');
+    fl_set_object_lsize(button,FL_LARGE_SIZE);
+
+    red := fl_add_dial(FL_NORMAL_DIAL,30,240,60,60,'Red');
+    fl_set_dial_bounds(red,0.0,255.0);
+    fl_set_dial_value(red,128.0);
+    fl_set_object_color(red,FL_RED,FL_DIAL_COL2);
+    redtext := fl_add_box(FL_DOWN_BOX,105,255,50,25,'');
+
+    green := fl_add_dial(FL_NORMAL_DIAL,30,155,60,60,'Green');
+    fl_set_dial_bounds(green,0.0,255.0);
+    fl_set_dial_value(green,128.0);
+    fl_set_object_color(green,FL_GREEN,FL_DIAL_COL2);
+    greentext := fl_add_box(FL_DOWN_BOX,105,170,50,25,'');
+
+    blue := fl_add_dial(FL_NORMAL_DIAL,30,70,60,60,'Blue');
+    fl_set_dial_bounds(blue,0.0,255.0);
+    fl_set_dial_value(blue,128);
+    fl_set_object_color(blue,FL_BLUE,FL_DIAL_COL2);
+    bluetext := fl_add_box(FL_DOWN_BOX,105,90,50,25,'');
+
+    theresult := fl_add_box(FL_DOWN_BOX,180,70,90,245,'');
+    fl_set_object_color(theresult,FL_FREE_COL1,FL_FREE_COL1);
+    fl_set_object_dblbuffer(theresult, 1); 
+  fl_end_form;
+end;
+
+
+var
+  ret : PFL_OBJECT;
+  r,g,b : Longint;
+  st : string[100];
+
+begin
+
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  makeform;
+  fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'A Form');
+  repeat
+    r := round( fl_get_dial_value(red));
+    g := round(fl_get_dial_value(green));
+    b := round(fl_get_dial_value(blue));
+    fl_mapcolor(FL_FREE_COL1,r,g,b);
+    fl_redraw_object(theresult);
+    str(r,st);st:=st+#0; fl_set_object_label(redtext,@st[1]);
+    str(g,st);st:=st+#0; fl_set_object_label(greentext,@st[1]);
+    str(b,st);st:=st+#0; fl_set_object_label(bluetext,@st[1]);
+    ret := fl_do_forms;
+  until (ret = button);
+  fl_hide_form(form);
+end.

+ 152 - 0
packages/forms/demo/newbutton.pp

@@ -0,0 +1,152 @@
+{
+ * Demo showing the use of user defined object class: CROSSBUTTON
+ *
+ * Form definition file generated with fdesign. 
+ * changed stub button to crossbutton
+ }
+
+uses forms;
+
+Const FL_CROSSBUTTON=2000;
+      FL_CROSSBUTTON_BW = 2;
+
+{ How to draw it }
+type TSPEC = TFL_BUTTON_STRUCT;
+     PSPEC = ^TSPEC;
+     
+Procedure draw_crossbutton(ob : PFL_OBJECT);export;
+
+var temp : longint;
+    xx, yy, ww, hh ,tt : TFL_Coord;
+    
+begin 
+   temp:=0;
+   { if redraw is demanded by FL_ENTER, ignore it }
+
+   if PSPEC(ob^.spec)^.event = FL_ENTER then exit;
+
+   { draw the bounding box first }
+   fl_drw_box(ob^.boxtype, ob^.x, ob^.y, ob^.w, ob^.h, ob^.col1, ob^.bw);
+
+   { draw the box that contains the cross }
+   if ob^.w>ob^.h then tt:=ob^.h else tt:=ob^.w;
+
+    ww := tt div 2 - 1;
+    hh:=ww;
+    xx := ob^.x + FL_BOUND_WIDTH;
+    yy := ob^.y + (ob^.h - hh) div 2;
+
+
+   { if pushed, draw a down box with the cross }
+   if PSPEC(ob^.spec)^.val<>0 then
+      begin
+      fl_drw_box(FL_DOWN_BOX, xx, yy, ww, hh, ob^.col1, ob^.bw);
+      fl_drw_text(FL_ALIGN_CENTER, xx-2, yy-2, ww+4, hh+4, ob^.col2, 0, 0, '@9plus');
+      end
+   else
+     begin
+      fl_drw_box(FL_UP_BOX, xx, yy, ww, hh, ob^.col1, ob^.bw);
+     end;
+
+    { label }
+    if (ob^.align = FL_ALIGN_CENTER) then
+	fl_drw_text(FL_ALIGN_LEFT, xx + ww + 3, ob^.y, 0, ob^.h,
+		    ob^.lcol, ob^.lstyle, ob^.lsize, ob^.thelabel)
+    else
+        fl_draw_object_label_outside(ob);
+
+    if (ob^.thetype = FL_RETURN_BUTTON) then
+	fl_drw_text(FL_ALIGN_CENTER,
+		    TFL_Coord (ob^.x + ob^.w - round(0.8 * ob^.h)),
+		    TFL_Coord (ob^.y + round(0.2 * ob^.h)),
+		    TFL_Coord (round(0.6 * ob^.h)),
+                    TFL_Coord (round(0.6 * ob^.h)), ob^.lcol, 0, 0, '@returnarrow');
+
+end;
+
+
+{ creation }
+function fl_create_crossbutton(Thetype : Longint; x,y,w,h : TFL_Coord; thelabel : Pchar) : PFL_OBJECT;
+
+var ob : PFL_OBJECT;
+
+begin
+     fl_add_button_class(FL_CROSSBUTTON, PFL_Drawbutton(@draw_crossbutton), nil); 
+     ob := fl_create_generic_button(FL_CROSSBUTTON, thetype, x, y,w, h, thelabel);
+     ob^.boxtype := FL_NO_BOX;
+     ob^.col2 := FL_BLACK;   { cross color }
+     { ob^.bw := FL_CROSSBUTTON_BW; }
+     fl_create_crossbutton:=ob;
+end;
+
+function fl_add_crossbutton(Thetype : longint; x,y,w,h : TFL_COORD; thelabel : pchar): PFL_OBJECT;
+
+var ob : PFL_OBJECT;
+    theform : PFL_FORM;
+    
+begin
+    ob := fl_create_crossbutton(thetype, x, y, w, h, thelabel);
+    theform:=fl_current_form;
+    fl_add_object(theform, ob);
+    fl_add_crossbutton:=ob;
+end;
+
+{*** Forms and Objects ***}
+type TFD_NEwBut = record
+	newbut : PFL_FORM;
+	bexit : PFL_object;
+	vdata : pointer;
+	ldata : Longint;
+end;
+PFD_NewBut= ^TFD_NewBut;
+
+function create_form_newbut : PFD_Newbut;
+
+var
+  obj : PFL_OBJECT;
+  fdui  : PFD_newbut;
+  oldbw : longint;
+  
+begin
+  new (fdui);
+  oldbw := fl_get_border_width;
+
+  fl_set_border_width(-2);
+  fdui^.newbut := fl_bgn_form(FL_NO_BOX, 310, 190);
+  obj := fl_add_box(FL_UP_BOX,0,0,310,190,'');
+  obj := fl_add_labelframe(FL_ENGRAVED_FRAME,40,45,100,120,'CrossB');
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+  obj := fl_add_crossbutton(FL_RADIO_BUTTON,50,115,80,30,'cross1');
+    fl_set_object_color(obj,FL_COL1,FL_RED);
+  obj := fl_add_crossbutton(FL_RADIO_BUTTON,50,85,80,30,'Button');
+    fl_set_object_color(obj,FL_COL1,FL_GREEN);
+  obj := fl_add_crossbutton(FL_RADIO_BUTTON,50,55,80,30,'Button');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_labelframe(FL_ENGRAVED_FRAME,180,45,100,120,'CrossB');
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+  obj := fl_add_crossbutton(FL_PUSH_BUTTON,190,115,80,30,'Button');
+    fl_set_object_color(obj,FL_COL1,FL_RED);
+  obj := fl_add_crossbutton(FL_PUSH_BUTTON,190,85,90,30,'Button');
+    fl_set_object_color(obj,FL_COL1,FL_GREEN);
+  obj := fl_add_crossbutton(FL_PUSH_BUTTON,190,55,80,30,'Button');
+    fl_set_object_color(obj,FL_COL1,FL_BLUE);
+  obj := fl_add_button(FL_NORMAL_BUTTON,125,10,65,25,'Exit');
+  fdui^.bexit :=obj;
+  fl_end_form;
+  fl_set_border_width(oldbw);
+
+  create_form_newbut:=fdui;
+end;
+
+
+var cbform : PFD_newbut;
+
+begin
+      fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+      cbform := create_form_newbut();
+      fl_show_form(cbform^.newbut, FL_PLACE_CENTER, 0, nil);
+      while(fl_do_forms <> cbform^.bexit) do ;
+end.
+

+ 58 - 0
packages/forms/demo/nomail.xbm

@@ -0,0 +1,58 @@
+Const 
+
+nomail_width = 64;
+nomail_height = 64;
+
+nomail_bits : array[0..511] of byte =
+(
+    $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $01, $00, $00, $00,
+    $00, $00, $00, $80, $01, $00, $00, $00, $00, $00, $00, $80,
+    $01, $00, $00, $00, $00, $00, $00, $80, $01, $00, $00, $80,
+    $07, $00, $00, $80, $01, $00, $00, $70, $38, $00, $00, $80,
+    $01, $00, $00, $0e, $c0, $00, $00, $80, $01, $00, $c0, $01,
+
+    $00, $01, $00, $80, $01, $00, $38, $00, $00, $02, $00, $80,
+    $01, $00, $06, $00, $00, $04, $00, $80, $01, $c0, $1f, $00,
+    $00, $04, $00, $80, $01, $30, $60, $00, $00, $08, $00, $80,
+    $01, $08, $80, $00, $00, $08, $00, $80, $01, $04, $07, $01,
+    $00, $10, $00, $80, $01, $82, $0f, $02, $00, $10, $00, $80,
+
+    $01, $82, $0f, $02, $00, $10, $00, $80, $01, $01, $07, $04,
+    $00, $20, $00, $80, $01, $01, $00, $04, $00, $20, $00, $80,
+    $81, $00, $00, $08, $00, $26, $00, $80, $81, $00, $00, $08,
+    $80, $27, $00, $80, $81, $00, $00, $08, $e0, $27, $00, $80,
+    $81, $22, $a2, $08, $d8, $27, $00, $80, $41, $36, $a5, $10,
+
+    $c6, $27, $00, $80, $41, $aa, $a8, $90, $c1, $27, $00, $80,
+    $41, $aa, $af, $90, $c1, $27, $00, $80, $41, $a2, $a8, $10,
+    $c0, $27, $00, $80, $41, $a2, $a8, $17, $c0, $21, $00, $80,
+    $41, $00, $00, $10, $40, $20, $00, $80, $41, $00, $00, $10,
+    $00, $20, $00, $80, $41, $fe, $ff, $17, $00, $20, $00, $80,
+
+    $41, $00, $00, $10, $00, $30, $00, $80, $41, $fe, $ff, $17,
+    $00, $3c, $0e, $80, $41, $00, $00, $10, $00, $0f, $11, $80,
+    $41, $00, $00, $10, $c0, $1b, $11, $80, $41, $00, $00, $10,
+    $f0, $e4, $10, $80, $41, $00, $00, $10, $3c, $84, $08, $80,
+    $41, $00, $00, $10, $0f, $88, $3c, $80, $41, $00, $00, $d0,
+
+    $03, $f0, $43, $80, $41, $00, $00, $f0, $01, $8c, $43, $80,
+    $c1, $ff, $ff, $3f, $01, $82, $24, $80, $c1, $ff, $ff, $1f,
+    $01, $82, $18, $80, $01, $00, $02, $02, $01, $fc, $08, $80,
+    $01, $00, $02, $02, $01, $20, $09, $80, $01, $00, $02, $02,
+    $01, $10, $06, $80, $01, $00, $02, $02, $01, $10, $00, $80,
+
+    $01, $00, $02, $02, $01, $08, $00, $80, $01, $00, $02, $02,
+    $01, $08, $00, $80, $01, $00, $02, $02, $01, $b4, $3f, $80,
+    $01, $00, $02, $02, $01, $0e, $28, $80, $01, $00, $02, $02,
+    $01, $03, $16, $80, $01, $00, $02, $02, $81, $c0, $11, $80,
+    $01, $00, $02, $02, $41, $38, $08, $80, $01, $00, $02, $02,
+
+    $21, $04, $04, $80, $01, $00, $02, $02, $11, $03, $02, $80,
+    $01, $00, $02, $02, $c9, $80, $01, $80, $01, $00, $02, $02,
+    $25, $60, $00, $80, $01, $00, $02, $02, $13, $18, $00, $80,
+    $01, $00, $02, $02, $01, $07, $00, $80, $01, $00, $02, $c2,
+    $fe, $00, $00, $80, $01, $00, $02, $32, $00, $00, $00, $80,
+
+    $01, $00, $02, $0e, $00, $00, $00, $80, $01, $00, $fe, $03,
+    $00, $00, $00, $80, $01, $00, $00, $00, $00, $00, $00, $80,
+    $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff );

+ 112 - 0
packages/forms/demo/objinactive.pp

@@ -0,0 +1,112 @@
+{ Demo showing activating and deactivating objects
+}
+program objin;
+
+uses forms;
+
+var 
+form : PFL_FORM;
+
+        button1,
+        button2,
+        button3,
+        button4,
+        group,
+        firstbut : PFL_OBJECT;
+
+procedure  exit_cb(obj : PFL_OBJECT; arg : longint); export;
+begin
+ halt;
+end;
+
+
+
+Procedure setit(obj : PFL_OBJECT; val : longint); 
+begin
+  if (val<>0) then
+    begin
+    fl_set_object_lcol(obj,FL_BLACK);
+    fl_activate_object(obj);
+    end
+  else
+    begin
+    fl_set_object_lcol(obj,FL_INACTIVE);
+    fl_deactivate_object(obj);
+    end
+end;
+
+Procedure setit_cb(obj : PFL_OBJECT; val : longint); export;
+
+begin
+  setit (obj,val)
+end;
+
+Procedure doit(b1,b2,b3,b4 : longint);
+
+begin
+  setit(button1,b1);
+  setit(button2,b2);
+  setit(button3,b3);
+  setit(button4,b4);
+end;
+
+Procedure set_active(obj : PFL_OBJECT; arg : longint); export;
+
+begin
+  case arg of 
+    0: doit(1,1,1,1);
+    1: doit(0,0,0,0);
+    2: doit(0,1,0,1);
+    3: doit(1,0,1,0);
+  end;
+end;
+
+Procedure create_form;
+
+var obj : PFL_OBJECT;
+
+begin
+  form := fl_bgn_form(FL_NO_BOX,420,230);
+  obj := fl_add_box(FL_UP_BOX,0,0,420,230,'');
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1);
+  obj := fl_add_button(FL_NORMAL_BUTTON,20,170,150,40,'Button 1');
+  button1 := obj;
+    fl_set_object_lsize(obj,FL_LARGE_SIZE);
+    fl_set_button_shortcut(obj, '1 ', 1);
+  obj := fl_add_button(FL_NORMAL_BUTTON,20,120,150,40,'Button 2');
+  button2 := obj;
+    fl_set_object_lsize(obj,FL_LARGE_SIZE);
+    fl_set_button_shortcut(obj, '2 ', 1);
+  obj := fl_add_button(FL_NORMAL_BUTTON,20,70,150,40,'Button 3');
+  button3 := obj;
+    fl_set_object_lsize(obj,FL_LARGE_SIZE);
+    fl_set_button_shortcut(obj, '3 ', 1);
+  obj := fl_add_button(FL_NORMAL_BUTTON,20,20,150,40,'Button 4');
+  button4 := obj;
+    fl_set_button_shortcut(obj, '4 ', 1);
+    fl_set_object_lsize(obj,FL_LARGE_SIZE);
+  group := fl_bgn_group();
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,180,140,30,'All active');
+  firstbut := obj;
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),0);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,150,140,30,'Non active');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),1);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,120,140,30,'Even active');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),2);
+  obj := fl_add_lightbutton(FL_RADIO_BUTTON,260,90,140,30,'Odd active');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@set_active),3);
+  fl_end_group();
+  obj := fl_add_button(FL_NORMAL_BUTTON,270,20,130,30,'Quit');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@exit_cb),0);
+  fl_end_form();
+end;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form;
+
+  fl_set_button(firstbut,1);
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,NiL);
+  while (fl_do_forms()<>nil) do 
+    begin end;
+end.

+ 46 - 0
packages/forms/demo/objpos.pp

@@ -0,0 +1,46 @@
+program objpos;
+
+uses forms;
+
+const
+  dx : TFL_Coord = 11 ;
+  dy : TFL_Coord = 7 ;
+
+procedure move_cb(ob : PFL_OBJECT; data : longint);export;
+
+var
+   but : PFL_OBJECT;
+   x,y,w,h : TFL_COORD; 
+
+begin
+   but := PFL_OBJECT (data);
+   fl_get_object_geometry(but,@x,@y, @w, @h);
+
+   if ( (x + dx) < 0) or ( (x+w+dx) >= but^.form^.w) then
+       dx := -dx;
+   if ( (y + dy) < 0) or ( (y+h+dy) >= but^.form^.h) then
+       dy := -dy;
+    x := x+dx;
+    y := y+dy;
+
+    fl_set_object_position(but,x,y);
+end;
+
+var
+  form : PFL_FORM;
+  but, obj : PFL_OBJECT ;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+  form := fl_bgn_form(FL_DOWN_BOX,400,200);
+    but := fl_add_button(FL_NORMAL_BUTTON,140,160,70,35,'Exit');
+    obj := fl_add_button(FL_TOUCH_BUTTON,330,150,50,30,'Move');
+     fl_set_object_callback(obj,PFL_CALLBACKPTR(@move_cb),longint(but));
+  fl_end_form();
+
+  fl_show_form(form,FL_PLACE_MOUSE,FL_NOBORDER,'ObjPos');
+
+  fl_do_forms();
+
+end.

+ 122 - 0
packages/forms/demo/objreturn.pp

@@ -0,0 +1,122 @@
+{ demo showing the choices when to return object. Note this program,
+ * strictly speaking, is illegal in the usage of user data parameter
+ * in the callback function.
+ }
+program objreturn;
+
+uses forms;
+
+
+{*** Forms and Objects ***}
+type
+TFD_FORM = record
+    form0 : PFL_FORM;
+    obj : array [0..3] of PFL_OBJECT;
+    br : PFL_OBJECT;
+    when : PFL_OBJECT;
+    vdata : pointer;
+    ldata : longint;
+end;
+PFD_FORM = ^TFD_FORM;
+
+var
+fd_form0 : PFD_form;
+
+{ callbacks for form form0 }
+procedure return_cb(ob : PFL_OBJECT; data : longint); export;
+
+begin
+    fl_addto_browser(fd_form0^.br, pchar(data));
+end;
+
+procedure set_when( n : longint);
+
+begin
+    fl_set_object_return(fd_form0^.obj[0], n);
+    fl_set_object_return(fd_form0^.obj[1], n);
+    fl_set_object_return(fd_form0^.obj[2], n);
+    fl_set_object_return(fd_form0^.obj[3], n);
+end;
+
+procedure when_cb(ob : PFL_OBJECT; data : longint); export;
+
+var n : longint;
+
+begin
+    n := fl_get_choice(ob) - 1;
+    if (n >= 0) then
+	set_when(n);
+end;
+
+procedure resetlog_cb(ob : PFL_OBJECT; data : longint);export;
+
+begin
+    fl_clear_browser(fd_form0^.br);
+end;
+
+Function create_form_form0 : PFD_FORM;
+
+Const Preturn : pchar = 'slider returned';
+      Pcounter : pchar = 'counter returned';
+      Pinput : pchar = 'input2 returned';
+      Pinput1 : Pchar =  'input1 returned';
+
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_form;
+  old_bw : longint;
+
+begin  
+  new(fdui);
+  old_bw := fl_get_border_width();
+
+  fl_set_border_width(-2);
+  fdui^.form0 := fl_bgn_form(FL_NO_BOX, 321, 276);
+  obj := fl_add_box(FL_UP_BOX,0,0,321,276,'');
+  obj := fl_add_valslider(FL_HOR_SLIDER,12,55,138,22,'');
+  fdui^.obj[0] := obj;
+    fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(Preturn));
+     fl_set_slider_return(obj, FL_RETURN_CHANGED);
+  obj := fl_add_counter(FL_NORMAL_COUNTER,12,85,138,22,'');
+  fdui^.obj[1] := obj;
+    fl_set_object_lalign(obj,FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(PCounter));
+  obj := fl_add_input(FL_NORMAL_INPUT,12,187,138,25,'');
+  fdui^.obj[3] := obj;
+    fl_set_object_lalign(obj,FL_ALIGN_LEFT or FL_ALIGN_INSIDE);
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(Pinput));
+  obj := fl_add_input(FL_NORMAL_INPUT,12,150,138,25,'');
+  fdui^.obj[2] := obj;
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@return_cb),longint(Pinput1));
+  obj := fl_add_browser(FL_NORMAL_BROWSER,170,55,140,160,'');
+  fdui^.br := obj;
+  obj := fl_add_choice(FL_NORMAL_CHOICE,80,12,168,27,'');
+  fdui^.when := obj;
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@when_cb),0);
+  obj := fl_add_button(FL_NORMAL_BUTTON,170,239,80,25,'Done');
+  obj := fl_add_button(FL_NORMAL_BUTTON,70,239,80,25,'ResetLog');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@resetlog_cb),0);
+  fl_end_form();
+  fl_set_border_width(old_bw);
+
+  create_form_form0:= fdui;
+end;
+
+
+begin
+    fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+    fd_form0 := create_form_form0;
+
+    { fill-in form initialization code }
+    set_when(0);
+    fl_set_object_dblbuffer(fd_form0^.br, 1);
+    fl_addto_choice(fd_form0^.when,
+	      'RETURN_END_CHANGED|RETURN_CHANGED|RETURN_END|RETURN_ALWAYS');
+
+    { show the first form }
+    fl_show_form(fd_form0^.form0, FL_PLACE_CENTER, FL_FULLBORDER, 'form0');
+    fl_do_forms();
+end.
+
+

+ 72 - 0
packages/forms/demo/porsche.xpm

@@ -0,0 +1,72 @@
+{ XPM }
+const porsche : array[0..68] of pchar = (
+'64 64 4 1 ',
+'  c None 	 m None   s s_slateblue ',
+'. c yellow 	 m white  s s_yellow ',
+'r c red	 m white  s s_red ',
+'b c black 	 m black  s s_black ',
+'                                                                ',
+'                                                                ',
+'        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb............................................bb        ',
+'        bb..bbbb..bbbb..bbbb..bbbb..bbbb..b..b..bbbb..bb        ',
+'        bb..b..b..b..b..b..b..b..b..b..b..b..b..b.....bb        ',
+'        bb..b..b..b..b..b..b..b.....b.....b..b..b.....bb        ',
+'        bb..bbbb..b..b..bbb...bbbb..b.....bbbb..bbbb..bb        ',
+'        bb..b.....b..b..b..b.....b..b.....b..b..b.....bb        ',
+'        bb..b.....b..b..b..b..b..b..b..b..b..b..b.....bb        ',
+'        bb..b.....bbbb..b..b..bbbb..bbbb..b..b..bbbb..bb        ',
+'        bb............................................bb        ',
+'        bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb.....................bbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb......b...b...bb.....bbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb.....b...b...b....b..bbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb....bb..bb.bbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb...bbbbbbbb......bb..bbrrrrrrrrrrrrrrrrrrrrrbb        ',
+'        bb..bbbb...............bbrrrrrrrrrrrrrrrrrrrrrbb        ',
+'        bb.bbb.................bbrrrrrrrrrrrrrrrrrrrrrbb        ',
+'        bb..........b..b.......bbrrrrrrrrrrrrrrrrrrrrrbb        ',
+'        bb.....b...b..b........bbrrrrrrrrrrrrrrrrrrrrrbb        ',
+'        bb....b...b..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb....b.bbbbbbbbb..............bbbbbbbbbbbbbbbbb        ',
+'        bb...bbbb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        ',
+'        bb..bbb.........b..............bbbbbbbbbbbbbbbbb        ',
+'        bb.bbb..........b...bbb........bbbbbbbbbbbbbbbbb        ',
+'        bb.........b..b.b..bbbbb.......bbbbbbbbbbbbbbbbb        ',
+'        bb.....b..b..b..b..b.bbb.....b.brrrrrrrrrrrrrrbb        ',
+'        bb....b..b..b..bb....bbb....bb.brrrrrrrrrrrrrrbb        ',
+'        bb...bb.bbbbbbb.b....bbb....bb.brrrrrrrrrrrrrrbb        ',
+'        bb..bbbbb......bb...bbbbb...b..brrrrrrrrrrrrrrbb        ',
+'        bb.bbb..........b.bbbbbbbbbbb..brrrrrrrrrrrrrrbb        ',
+'        bb..............b.b.bbbbbbbbb..brrrrrrrrrrrrrrbb        ',
+'        bbbbbbbbbbbbbbbbb.b.b....bbbb..bbbbbbbbbbbbbbbbb        ',
+'        bbbbbbbbbbbbbbbbb...b.....b.b..b..............bb        ',
+'        bbbbbbbbbbbbbbbbb........bb.bb.b...b..b.......bb        ',
+'         bbbbbbbbbbbbbbbb........b..b..b..b..b...b...bb         ',
+'         bbbbbbbbbbbbbbbb.......b..b...b.b..b...b....bb         ',
+'         bbbbbbbbbbbbbbbbb............b.bbbbbbbbbb...bb         ',
+'          bbrrrrrrrrrrrrrrb..........bbbb........bb.bb          ',
+'          bbrrrrrrrrrrrrrrrb........bbbb............bb          ',
+'           bbrrrrrrrrrrrrrrrbbbbbbbb.......b..b....bb           ',
+'           bbrrrrrrrrrrrrrrrrrrbb.....b...b..b..b..bb           ',
+'            bbrrrrrrrrrrrrrrrrrbb....b...b..b..b..bb            ',
+'            bbrrrrrrrrrrrrrrrrrbb...bb.bbbbbbbb...bb            ',
+'             bbbbbbbbbbbbbbbbbbbb...bbbb......bb.bb             ',
+'              bbbbbbbbbbbbbbbbbbb..bbb...........b              ',
+'              bbbbbbbbbbbbbbbbbbb.bbb...........bb              ',
+'               bbbbbbbbbbbbbbbbbb..............bb               ',
+'                bbbbbbbbbbbbbbbbb...b.b.b.....bb                ',
+'                 bbbbbbbbbbbbbbbb..b.b.b..b..bb                 ',
+'                  bbrrrrrrrrrrrbb..bbbbbbb..bb                  ',
+'                   bbrrrrrrrrrrbb.bbb....b.bb                   ',
+'                    bbrrrrrrrrrbb.bb......bb                    ',
+'                     bbbrrrrrrrbb.......bbb                     ',
+'                      bbbbrrrrrbb.....bbbb                      ',
+'                        bbbbrrrbb...bbbb                        ',
+'                          bbbbrbb.bbbb                          ',
+'                            bbbbbbbb                            ',
+'                              bbbb                              ',
+'                               bb                               ',
+'                                                                '
+);

+ 56 - 0
packages/forms/demo/positioner.pp

@@ -0,0 +1,56 @@
+{ This demo shows the use of a positioner.  }
+program positioner;
+
+uses forms;
+
+var
+ xval, yval : PFL_Object;
+
+{ callback routine }
+
+Procedure Do_position (ob :PFL_OBJECT; q : longint);
+
+var
+    st : string [30];
+    
+begin
+    
+    str(fl_get_positioner_xvalue(ob),st);st:=st+#0;
+    fl_set_object_label(xval,@st[1]);
+    str(fl_get_positioner_yvalue(ob),st);st:=st+#0;
+    fl_set_object_label(yval,@st[1]);
+end;
+
+procedure positioner_cb(ob :PFL_OBJECT; q : longint);export;
+
+begin
+  Do_Position (ob,q);
+end;
+
+var 
+  form : PFL_FORM;
+  thepos, button : PFL_OBJECT;
+
+
+begin
+
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+  form := fl_bgn_form(FL_UP_BOX,400,280);
+     thepos := fl_add_positioner(FL_NORMAL_POSITIONER,40,40,200,200,'');
+     fl_set_positioner_xbounds(thepos,0,1);
+     fl_set_positioner_ybounds(thepos,0,1);
+     fl_set_object_callback(thepos,PFL_CALLBACKPTR(@positioner_cb),0);
+     xval := fl_add_box(FL_DOWN_BOX,270,40,100,30,'');
+     yval := fl_add_box(FL_DOWN_BOX,270,90,100,30,'');
+     fl_set_object_color(xval,FL_COL1,FL_COL1);
+     fl_set_object_color(yval,FL_COL1,FL_COL1);
+     button := fl_add_button(FL_NORMAL_BUTTON,270,210,100,30,'Exit');
+  fl_end_form();
+
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,NiL);
+  Do_position(thepos,0);
+  fl_do_forms;
+  fl_hide_form(form);
+end.
+

+ 236 - 0
packages/forms/demo/pup.pp

@@ -0,0 +1,236 @@
+{ Demo: complete pop-ups. 
+ * test font/cursor change
+ * test attaching pup to menu 
+ }
+program popup;
+
+uses forms,strings;
+
+var 
+pup : PFL_FORM;
+done, pret, b1, b2, b3, menu : PFL_OBJECT;
+
+var
+    aa : TFL_IOPT;
+    mask : cardinal;
+     
+
+const 
+   subm : longint = -1; 
+    m : longint = -1;
+    ssm : longint = 0; 
+    n1 : longint = -1;
+    n2 : longint = -1;
+    n : longint = 0;
+    
+{ post-handler }
+function  post(ob : PFL_OBJECT; ev : Longint; mx,y : TFL_Coord; key  : longint; xev : pointer) : Longint;
+
+begin
+    if (n1 = -1) then
+     begin    
+      n1 := fl_defpup(FL_ObjWin(ob),'line1|line2');
+      fl_setpup_shadow(n1,0);
+      fl_setpup_bw(n1,0);
+      fl_setpup_pad(n1,3,0);
+
+      n2 := fl_defpup(FL_ObjWin(ob),'button1|button2');
+      fl_setpup_shadow(n2,0);
+      fl_setpup_bw(n2,-1);
+      fl_setpup_pad(n2,3,0);
+    end;
+
+    if (ev = FL_ENTER) then
+      begin
+       if (ob=b3) then
+         fl_show_oneliner('button3',ob^.form^.x+ob^.x,
+                         ob^.form^.y+ob^.y + ob^.h + 5)
+       else
+        begin
+          fl_setpup_position(ob^.form^.x+ob^.x, ob^.form^.y+ob^.y+ob^.h + 5);
+          if ob=b1 then
+            fl_showpup(n1)
+          else
+            fl_showpup(n2);
+        end
+      end
+    else if(ev <> FL_MOTION) then
+      begin
+       if (ob=b3) then
+         fl_hide_oneliner
+       else
+         if ob=b1 then
+           fl_hidepup(n1)
+         else 
+           fl_hidepup(n2);
+      end;
+end;
+
+
+procedure show_return_val(i :  longint);
+
+var
+    buf : string[128];
+
+begin
+      str(i,buf);
+      buf:= 'Returned '+buf;
+     if i>0 then
+       buf:=buf+'('++strpas(fl_getpup_text(m,i))+')'#0;
+
+    fl_set_object_label(pret, @buf[1]);
+end;
+
+function ssm_cb(a : longint) : longint;
+begin
+   show_return_val(a);
+   ssm_cb:=a;
+end;
+
+procedure do_pup(ob : PFL_OBJECT; q : longint);
+
+begin
+   if (subm = -1) then
+   begin
+      ssm  := fl_newpup(FL_ObjWin(ob));
+      subm := fl_newpup(FL_ObjWin(ob));
+      m    := fl_newpup(FL_ObjWin(ob));
+      
+      { Problem, variable nr. of arguments in c code !!!!}
+      { fl_addtopup(ssm,'SubSubM%F%t',ssm_cb); }
+      fl_addtopup(ssm,'SSMItem20%x20%R1');
+      fl_addtopup(ssm,'SSMItem21%x21%r1');
+      fl_addtopup(ssm,'SSMItem22%x22%r1%l');
+      fl_addtopup(ssm,'SSMitem30%x30%R2');
+      fl_addtopup(ssm,'SSMItem31%x31%r2');
+      fl_addtopup(ssm,'SSMItem32%x32%r2');
+
+      fl_addtopup(subm,'SubMenu%t');
+      fl_addtopup(subm,'SMItemA\tAlt-A%x10%h','#a'); 
+      fl_addtopup(subm,'SMItemB\tAlt-B%x11%h','#b');
+      fl_addtopup(subm,'SMItemC\tAlt-C%x12%h','#c');
+      fl_addtopup(subm,'SMItemD\tAlt-F5%x13%h%m','#&5',ssm);
+      fl_addtopup(subm,'SMItemE\tAlt-E%x14','#E');
+
+      fl_setpup_mode(subm, 14, FL_PUP_GREY);
+
+      fl_addtopup(m,'PopUP%t');
+      fl_addtopup(m,'MenuItem1%h','1#1');
+
+      fl_addtopup(m,'MenuItem2%h','2#2');
+      fl_setpup_submenu(m, 2, subm);
+      fl_addtopup(m,'MenuItem3%h','3#3');
+      fl_addtopup(m,'MenuItem4%h','4#4');
+   end;
+
+
+   if (fl_get_button_numb(ob) >= FL_SHORTCUT) then
+      fl_setpup_position(ob^.form^.x + ob^.x, 
+                      ob^.form^.y + ob^.y + ob^.h); 
+
+   show_return_val(fl_dopup(m));
+
+   { test if changing size/style ok }
+   n := not(n);
+   if n<>0 then
+    begin
+    fl_setpup_fontsize(14);
+    fl_setpup_fontstyle(FL_TIMES_STYLE);
+    fl_setpup_cursor(m, XC_hand2);
+    end
+   else
+     begin
+     fl_setpup_fontsize(12);
+     fl_setpup_fontstyle(FL_BOLDITALIC_STYLE);
+     fl_setpup_cursor(m,XC_sb_right_arrow);
+     end;
+end;
+
+procedure init_menu;
+var
+    mm,smm : longint;
+
+begin
+    mm := fl_newpup(fl_default_win);
+    fl_setpup_bw(mm, -2);
+    fl_setpup_shadow(mm, 0);
+    smm := fl_newpup(0);
+    fl_setpup_shadow(smm, 0);
+
+    fl_addtopup(mm,'MenuItem1|MenuItem2%m|MenuItem3',smm);
+    fl_addtopup(smm,'SubItem1%x11|SubItem2%x12|SubItem3%x13');
+
+
+    { attach pup to menu }
+    
+    fl_set_menu_popup(menu, mm);
+end;
+
+
+procedure do_menu(ob  : PFL_OBJECT; data : longint);
+var
+    buf : string[128];
+    
+begin
+    str(fl_get_menu(ob),buf);
+    if (fl_get_menu(ob) >= 0) then
+       buf:=buf+strpas(fl_get_menu_text(ob));
+    buf:=buf+#0;
+
+    fl_set_object_label(pret, @buf[1]);
+end;
+
+procdure done_cb(ob : PFL_OBJECT; data : longint);
+
+begin
+  halt(0)
+end;
+
+procedure create_form_pup;
+
+var
+  obj : PFL_OBJECT ;
+
+begin
+  if (pup<>nil) then
+     exit;
+  pup := fl_bgn_form(FL_UP_BOX,260,210);
+  obj := fl_add_button(FL_NORMAL_BUTTON,150,150,90,35,'Done');
+    fl_set_object_callback(obj,PFL_CALLBACKPTR(@done_cb), 0);
+  done := obj;
+  obj := fl_add_button(FL_MENU_BUTTON,30,90,100,30,'PopUp');
+    fl_set_button_shortcut(obj,'Pp#p',1);
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@do_pup), 0);
+  obj := fl_add_menu(FL_PULLDOWN_MENU,160,95,60,25,'Menu');
+    fl_set_object_callback(obj, PFL_CALLBACKPTR(@do_menu), 0);
+  menu := obj;
+  obj := fl_add_text(FL_NORMAL_TEXT,20,60,220,30,'');
+    fl_set_object_lalign(obj,FL_ALIGN_CENTER);
+  pret := obj; 
+  b1 := fl_add_button(FL_NORMAL_BUTTON, 20, 10, 60, 30,'Button1');
+  b2 := fl_add_button(FL_NORMAL_BUTTON, 90, 10, 60, 30,'Button2');
+  b3 := fl_add_button(FL_NORMAL_BUTTON, 160, 10, 60, 30,'Button3');
+  fl_end_form();
+end;
+
+
+begin
+    mask := FL_PDVisual;
+    aa.vclass := FL_DefaultVisual;
+    fl_set_defaults(mask, @aa);
+
+    fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+    create_form_pup();
+
+    { initialize }
+
+    fl_set_object_posthandler(b1, @post);
+    fl_set_object_posthandler(b2, @post);
+    fl_set_object_posthandler(b3, @post);
+
+    fl_show_form(pup, FL_PLACE_MOUSE, FL_TRANSIENT,'PupDemo');
+    init_menu;
+
+    fl_do_forms;
+end.

+ 45 - 0
packages/forms/demo/pushbutton.pp

@@ -0,0 +1,45 @@
+Program pushButtons;
+{ A demo that shows the use of push buttons.  }
+
+uses forms;
+
+var form : PFL_FORM;
+    Abox : array[0..8] of PFL_OBJECT;
+
+procedure push_cb( ob : PFL_OBJECT; n : longint);export;
+
+begin
+   if (fl_get_button(ob)<>0) then
+      fl_show_object(abox[n])
+   else 
+      fl_hide_object(abox[n]);
+end;
+
+
+Procedure makeform;
+
+Var i : Integer;
+    obj : PFL_OBJECT;
+    
+begin
+  form := fl_bgn_form(FL_UP_BOX,400,400);
+  for i:=0 to 7 do
+    begin
+    obj := fl_add_button(FL_PUSH_BUTTON,40,310-40*i,80,30,'');
+    fl_set_object_color(obj,FL_BLACK+i+1,FL_BLACK+i+1);
+      fl_set_object_callback(obj,PFL_CALLBACKPTR(@push_cb),i);
+    abox[i] := fl_add_box(FL_DOWN_BOX,150+30*i,40,25,320,'');
+      fl_set_object_color(abox[i],FL_BLACK+i+1,FL_BLACK+i+1);
+      fl_hide_object(abox[i]);
+    end;
+  fl_add_button(FL_NORMAL_BUTTON,40,350,80,30,'Exit');
+  fl_end_form;
+end;
+
+Begin
+  fl_initialize(@argc, argv, 'FormDemo', nil,0);
+  makeform;
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Push Buttons');
+  { fl_do_forms will return only when Exit is pressed }
+  fl_do_forms;
+end.

+ 17 - 0
packages/forms/demo/pushme.pp

@@ -0,0 +1,17 @@
+Program pushme;
+
+uses forms;
+
+var simpleform : PFL_FORM;
+{    formname,buttonname : string;
+}
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  simpleform := fl_bgn_form(FL_UP_BOX,230,160);
+   fl_add_button(FL_NORMAL_BUTTON,40,50,150,60,'Pushme');
+  fl_end_form;
+  fl_show_form(simpleform, FL_PLACE_MOUSE, FL_NOBORDER, 'Push me');
+  fl_do_forms;
+  fl_hide_form(simpleform);
+end.
+

+ 29 - 0
packages/forms/demo/secretinput.pp

@@ -0,0 +1,29 @@
+program secretinput;
+{ Demo showing secret input fields }
+
+uses forms,strings;
+
+var form : PFL_FORM;
+   but, password1, password2, info, ret : PFL_OBJECT;
+   str : string;
+
+begin
+
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+  form := fl_bgn_form( FL_FLAT_BOX,400,300);
+    password1 := fl_add_input(FL_SECRET_INPUT,140,40,160,40,'Password 1:');
+    password2 := fl_add_input(FL_SECRET_INPUT,140,100,160,40,'Password 2:');
+    info := fl_add_box(FL_SHADOW_BOX,20,160,360,40,'');
+    but := fl_add_button( FL_NORMAL_BUTTON,280,240,100,40,'Quit');
+  fl_end_form;
+
+  fl_show_form(form, FL_PLACE_MOUSE,FL_NOBORDER,nil);
+  repeat
+    ret := fl_do_forms;
+    str:='Password 1 is: '+strpas(fl_get_input(password1));
+    str:=str+' , Password 2 is: '+strpas(fl_get_input(password2))+#0;
+    fl_set_object_label(info,@str[1]);
+  until (ret = but);
+  fl_hide_form(form);
+end. 

+ 75 - 0
packages/forms/demo/sliderall.pp

@@ -0,0 +1,75 @@
+{ This demo shows the different types of sliders }
+
+program sliderall;
+
+uses forms;
+
+var
+form : PFL_FORM;
+exitobj : PFL_OBJECT;
+
+procedure create_form_form;
+var 
+  obj : PFL_OBJECT;
+begin
+  form := fl_bgn_form(FL_NO_BOX,780,320);
+  obj := fl_add_box(FL_UP_BOX,0,0,780,320,'');
+    fl_set_object_color(obj,FL_PALEGREEN,FL_COL1);
+  obj := fl_add_box(FL_SHADOW_BOX,20,30,360,270,'SLIDER');
+    fl_set_object_color(obj,FL_SLATEBLUE,47);
+    fl_set_object_lalign(obj,FL_ALIGN_TOP);
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+  obj := fl_add_box(FL_SHADOW_BOX,390,30,370,270,'VALSLIDER');
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_COL1);
+    fl_set_object_lalign(obj,FL_ALIGN_TOP);
+    fl_set_object_lstyle(obj,FL_BOLD_STYLE);
+  obj := fl_add_slider(FL_VERT_SLIDER,30,50,40,220,'vert');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+  obj := fl_add_slider(FL_VERT_FILL_SLIDER,80,50,40,220,'vert_fill');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+  obj := fl_add_slider(FL_HOR_SLIDER,180,50,190,40,'hor');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+  obj := fl_add_slider(FL_HOR_FILL_SLIDER,180,110,190,40,'hor_fill');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+  obj := fl_add_valslider(FL_VERT_NICE_SLIDER,610,50,30,220,'vert_nice');
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED);
+  obj := fl_add_valslider(FL_VERT_FILL_SLIDER,660,50,40,220,'vert_fill');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+
+  obj := fl_add_valslider(FL_HOR_SLIDER,400,50,190,40,'hor');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+  obj := fl_add_valslider(FL_HOR_FILL_SLIDER,400,110,190,40,'hor_fill');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+  obj := fl_add_valslider(FL_HOR_BROWSER_SLIDER,400,220,190,25,'hor_browser');
+  obj := fl_add_button(FL_NORMAL_BUTTON,450,260,100,30,'Exit');
+    fl_set_object_color(obj,FL_INDIANRED,FL_RED);
+  exitobj:=obj;
+  obj := fl_add_slider(FL_VERT_NICE_SLIDER,130,50,30,220,'vert_nice');
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED);
+  obj := fl_add_slider(FL_HOR_NICE_SLIDER,180,170,190,30,'hor_nice');
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED);
+  obj := fl_add_slider(FL_HOR_BROWSER_SLIDER,180,220,190,25,'hor_browser');
+  obj := fl_add_valslider(FL_HOR_NICE_SLIDER,400,170,190,30,'hor_nice');
+    fl_set_object_boxtype(obj,FL_FLAT_BOX);
+    fl_set_object_color(obj,FL_SLATEBLUE,FL_INDIANRED);
+  obj := fl_add_valslider(FL_VERT_SLIDER,710,50,40,220,'vert');
+    fl_set_object_color(obj,FL_INDIANRED,FL_PALEGREEN);
+  fl_end_form;
+end;
+
+
+var obj : PFL_OBJECT;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  create_form_form;
+
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'All Sliders');
+  repeat
+   obj := fl_do_forms; 
+  until  (obj = exitobj);
+  fl_hide_form(form);
+end.

+ 68 - 0
packages/forms/demo/srs.xbm

@@ -0,0 +1,68 @@
+Const 
+sorceress_width = 75;
+sorceress_height = 75;
+sorceress_bits : array[1..750] of byte =
+(
+  $fc, $7e, $40, $20, $90, $00, $07, $80, $23, $00, $00, $c6,
+  $c1, $41, $98, $b8, $01, $07, $66, $00, $15, $9f, $03, $47,
+  $8c, $c6, $dc, $7b, $cc, $00, $b0, $71, $0e, $4d, $06, $66,
+  $73, $8e, $8f, $01, $18, $c4, $39, $4b, $02, $23, $0c, $04,
+  $1e, $03, $0c, $08, $c7, $ef, $08, $30, $06, $07, $1c, $02,
+  $06, $30, $18, $ae, $c8, $98, $3f, $78, $20, $06, $02, $20,
+  $60, $a0, $c4, $1d, $c0, $ff, $41, $04, $fa, $63, $80, $a1,
+  $a4, $3d, $00, $84, $bf, $04, $0f, $06, $fc, $a1, $34, $6b,
+  $01, $1c, $c9, $05, $06, $c7, $06, $be, $11, $1e, $43, $30,
+  $91, $05, $c3, $61, $02, $30, $1b, $30, $cc, $20, $11, $00,
+  $c1, $3c, $03, $20, $0a, $00, $e8, $60, $21, $00, $61, $1b,
+  $c1, $63, $08, $f0, $c6, $c7, $21, $03, $f8, $08, $e1, $cf,
+  $0a, $fc, $4d, $99, $43, $07, $3c, $0c, $f1, $9f, $0b, $fc,
+  $5b, $81, $47, $02, $16, $04, $31, $1c, $0b, $1f, $17, $89,
+  $4d, $06, $1a, $04, $31, $38, $02, $07, $56, $89, $49, $04,
+  $0b, $04, $b1, $72, $82, $a1, $54, $9a, $49, $04, $1d, $66,
+  $50, $e7, $c2, $f0, $54, $9a, $58, $04, $0d, $62, $c1, $1f,
+  $44, $fc, $51, $90, $90, $04, $86, $63, $e0, $74, $04, $ef,
+  $31, $1a, $91, $00, $02, $e2, $c1, $fd, $84, $f9, $30, $0a,
+  $91, $00, $82, $a9, $c0, $b9, $84, $f9, $31, $16, $81, $00,
+  $42, $a9, $db, $7f, $0c, $ff, $1c, $16, $11, $00, $02, $28,
+  $0b, $07, $08, $60, $1c, $02, $91, $00, $46, $29, $0e, $00,
+  $00, $00, $10, $16, $11, $02, $06, $29, $04, $00, $00, $00,
+  $10, $16, $91, $06, $a6, $2a, $04, $00, $00, $00, $18, $24,
+  $91, $04, $86, $2a, $04, $00, $00, $00, $18, $27, $93, $04,
+  $96, $4a, $04, $00, $00, $00, $04, $02, $91, $04, $86, $4a,
+  $0c, $00, $00, $00, $1e, $23, $93, $04, $56, $88, $08, $00,
+  $00, $00, $90, $21, $93, $04, $52, $0a, $09, $80, $01, $00,
+  $d0, $21, $95, $04, $57, $0a, $0f, $80, $27, $00, $d8, $20,
+  $9d, $04, $5d, $08, $1c, $80, $67, $00, $e4, $01, $85, $04,
+  $79, $8a, $3f, $00, $00, $00, $f4, $11, $85, $06, $39, $08,
+  $7d, $00, $00, $18, $b7, $10, $81, $03, $29, $12, $cb, $00,
+  $7e, $30, $28, $00, $85, $03, $29, $10, $be, $81, $ff, $27,
+  $0c, $10, $85, $03, $29, $32, $fa, $c1, $ff, $27, $94, $11,
+  $85, $03, $28, $20, $6c, $e1, $ff, $07, $0c, $01, $85, $01,
+  $28, $62, $5c, $e3, $8f, $03, $4e, $91, $80, $05, $39, $40,
+  $f4, $c2, $ff, $00, $9f, $91, $84, $05, $31, $c6, $e8, $07,
+  $7f, $80, $cd, $00, $c4, $04, $31, $06, $c9, $0e, $00, $c0,
+  $48, $88, $e0, $04, $79, $04, $db, $12, $00, $30, $0c, $c8,
+  $e4, $04, $6d, $06, $b6, $23, $00, $18, $1c, $c0, $84, $04,
+  $25, $0c, $ff, $c2, $00, $4e, $06, $b0, $80, $04, $3f, $8a,
+  $b3, $83, $ff, $c3, $03, $91, $84, $04, $2e, $d8, $0f, $3f,
+  $00, $00, $5f, $83, $84, $04, $2a, $70, $fd, $7f, $00, $00,
+  $c8, $c0, $84, $04, $4b, $e2, $2f, $01, $00, $08, $58, $60,
+  $80, $04, $5b, $82, $ff, $01, $00, $08, $d0, $a0, $84, $04,
+  $72, $80, $e5, $00, $00, $08, $d2, $20, $44, $04, $ca, $02,
+  $ff, $00, $00, $08, $de, $a0, $44, $04, $82, $02, $6d, $00,
+  $00, $08, $f6, $b0, $40, $02, $82, $07, $3f, $00, $00, $08,
+  $44, $58, $44, $02, $93, $3f, $1f, $00, $00, $30, $88, $4f,
+  $44, $03, $83, $23, $3e, $00, $00, $00, $18, $60, $e0, $07,
+  $e3, $0f, $fe, $00, $00, $00, $70, $70, $e4, $07, $c7, $1b,
+  $fe, $01, $00, $00, $e0, $3c, $e4, $07, $c7, $e3, $fe, $1f,
+  $00, $00, $ff, $1f, $fc, $07, $c7, $03, $f8, $33, $00, $c0,
+  $f0, $07, $ff, $07, $87, $02, $fc, $43, $00, $60, $f0, $ff,
+  $ff, $07, $8f, $06, $be, $87, $00, $30, $f8, $ff, $ff, $07,
+  $8f, $14, $9c, $8f, $00, $00, $fc, $ff, $ff, $07, $9f, $8d,
+  $8a, $0f, $00, $00, $fe, $ff, $ff, $07, $bf, $0b, $80, $1f,
+  $00, $00, $ff, $ff, $ff, $07, $7f, $3a, $80, $3f, $00, $80,
+  $ff, $ff, $ff, $07, $ff, $20, $c0, $3f, $00, $80, $ff, $ff,
+  $ff, $07, $ff, $01, $e0, $7f, $00, $c0, $ff, $ff, $ff, $07,
+  $ff, $0f, $f8, $ff, $40, $e0, $ff, $ff, $ff, $07, $ff, $ff,
+  $ff, $ff, $40, $f0, $ff, $ff, $ff, $07, $ff, $ff, $ff, $ff,
+  $41, $f0, $ff, $ff, $ff, $07);

+ 54 - 0
packages/forms/demo/touchbutton.pp

@@ -0,0 +1,54 @@
+{  This demo shows the use of a touch buttons. }
+program touchbutton;
+
+uses strings,forms;
+
+var form : PFL_FORM;
+    valobj,obj : PFL_OBJECT;
+    value : LongInt;
+
+
+Procedure show_val(ob : PFL_OBJECT;delta : Longint);export;
+
+var     st : string[32];
+
+begin
+   value:=value+delta;
+   str(value,st);
+   st:=st+#0;
+   fl_set_object_label(valobj, @st[1]);
+end;
+
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  form := fl_bgn_form(FL_UP_BOX,360,140);
+    obj := fl_add_button(FL_TOUCH_BUTTON,50,30,40,30,'@<<');
+     fl_set_object_boxtype(obj,FL_FRAME_BOX);
+     fl_set_object_color(obj, FL_COL1, FL_INDIANRED); 
+     fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),-5);
+     fl_set_button_shortcut(obj,'1'#0, 0);
+    obj := fl_add_button(FL_TOUCH_BUTTON,90,30,40,30,'@<');
+     fl_set_object_boxtype(obj,FL_FRAME_BOX);
+     fl_set_object_color(obj, FL_COL1, FL_INDIANRED); 
+     fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),-1);
+     fl_set_button_shortcut(obj,'2'#0, 0);
+    obj := fl_add_box(FL_BORDER_BOX,130,30,100,30,'');
+    valobj:=obj;
+     fl_set_object_color(obj,FL_LEFT_BCOL,FL_LEFT_BCOL);
+    obj := fl_add_button(FL_TOUCH_BUTTON,230,30,40,30,'@>');
+     fl_set_object_boxtype(obj,FL_FRAME_BOX);
+     fl_set_object_color(obj, FL_COL1, FL_INDIANRED); 
+     fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),1);
+     fl_set_button_shortcut(obj,'3'#0, 0);
+    obj := fl_add_button(FL_TOUCH_BUTTON,270,30,40,30,'@>>');
+     fl_set_object_boxtype(obj,FL_FRAME_BOX);
+     fl_set_object_callback(obj, PFL_CALLBACKPTR(@show_val),5);
+     fl_set_object_color(obj, FL_COL1, FL_INDIANRED); 
+     fl_set_button_shortcut(obj,'4'#0, 0);
+    obj := fl_add_button(FL_NORMAL_BUTTON,220,90,100,30,'Exit');
+  fl_end_form;
+  fl_show_form(form,FL_PLACE_CENTER,FL_NOBORDER,'Touch Buttons');
+  fl_do_forms();
+end.
+

+ 71 - 0
packages/forms/demo/xyplotover.pp

@@ -0,0 +1,71 @@
+{ Demo showing the use of xyplot overlay. }
+program xyplotover;
+
+uses forms;
+
+{*** Forms and Objects ***}
+
+type
+TFD_fff = record
+	fff : PFL_FORM;
+	xyplot : PFL_OBJECT;
+	vdata : pointer;
+	ldata : longint;
+end;
+PFD_FFF = ^TFD_fff;
+
+function create_form_fff : PFD_fff;
+
+var
+  obj : PFL_OBJECT;
+  fdui : PFD_fff;
+
+begin
+  new(fdui);
+  fdui^.fff := fl_bgn_form(FL_NO_BOX, 370, 310);
+  obj := fl_add_box(FL_UP_BOX,0,0,370,310,'');
+  obj  := fl_add_xyplot(FL_IMPULSE_XYPLOT,10,20,350,260,'');
+  fdui^.xyplot := obj;
+    fl_set_object_lalign(obj,(FL_ALIGN_BOTTOM or FL_ALIGN_INSIDE));
+  obj := fl_add_button(FL_HIDDEN_BUTTON,10,10,350,290,'');
+  fl_end_form;
+
+  create_form_fff:=fdui;
+end;
+
+
+var
+  i : integer;
+  xx,yy : array[0..69] of real;
+  fd_fff : PFD_fff;
+  
+begin
+   fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+
+   { fill-in form initialization code }
+   for i := 0 to 69 do
+     begin
+        xx[i] := 3.1415 * i / 8.0;
+        yy[i] := sin(2 * xx[i]) + cos(xx[i]);
+     end;
+
+   fd_fff := create_form_fff;
+
+   fl_set_xyplot_data(fd_fff^.xyplot, xx, yy, 35, '', '','');
+   fl_add_xyplot_overlay(fd_fff^.xyplot, 1, xx, yy, 70, FL_BLUE);
+   fl_set_xyplot_overlay_type(fd_fff^.xyplot, 1, FL_NORMAL_XYPLOT);
+   fl_set_xyplot_xbounds(fd_fff^.xyplot, 0, 3.142 * 69/8.0);
+   fl_set_xyplot_interpolate(fd_fff^.xyplot, 1, 2, 0.1);
+   { add inset text }
+   fl_add_xyplot_text(fd_fff^.xyplot, 2.2, 1.2, 'Original: Impulse',
+                      FL_ALIGN_LEFT , FL_BLACK);
+   fl_add_xyplot_text(fd_fff^.xyplot, 2.2, 1.0, 'Overlay: Solid', 
+                      FL_ALIGN_LEFT, FL_BLUE);
+
+
+   { show the first form }
+   fl_show_form(fd_fff^.fff,FL_PLACE_MOUSE,FL_TRANSIENT,'XYPlot Overlay');
+   fl_do_forms();
+end.
+
+

+ 25 - 0
packages/forms/demo/yesno.pp

@@ -0,0 +1,25 @@
+Program yesno;
+{
+  A box with two buttons and a string. Simple boxes like this
+   are very usefull for asking questions
+}
+
+Uses forms;
+
+var
+    form   : PFL_FORM;
+    yes,no : PFL_OBJECT;
+
+begin
+  fl_initialize(@argc, argv, 'FormDemo', nil, 0);
+  form := fl_bgn_form(FL_UP_BOX,320,120);
+    fl_add_box(FL_NO_BOX,160,40,0,0,'Do you want to quit ?');
+    yes := fl_add_button(FL_NORMAL_BUTTON,40,70,80,30,'Yes');
+    no  := fl_add_button(FL_NORMAL_BUTTON,200,70,80,30,'No');
+  fl_end_form;
+  fl_show_form(form,FL_PLACE_MOUSE,FL_TRANSIENT,'Question : ');
+  while (fl_do_forms <> yes) do;
+  fl_hide_form(form);
+end.
+
+

+ 1133 - 0
packages/forms/fd2pascal.pp

@@ -0,0 +1,1133 @@
+Program fd2pascal;
+
+{ ---------------------------------------------------------------------------
+    Program to convert forms fdesign file to pascal code
+    Copyright (C) 1997	Michael Van Canneyt
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 1, or (at your option)
+    any later version.
+
+    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.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+  --------------------------------------------------------------------------- }
+
+{ $Id$ }
+
+Uses linux;
+
+Const RevString = '$Revision$';
+  NrOptions = 4;
+  Options   : Array[0..NrOptions] Of String[20] = 
+              ('v','callback','main','altformat','compensate');
+
+Type
+  { Properties of an object }
+  ContProps=(CPclass,CPtype,CPbox,CPBoxtype,CPColors,CPalignment,CPstyle,CPsize,
+             CPlcol,CPlabel,CPShortcut,CPresize,CPgravity,CPname,CPCallback,
+             CPargument,
+             CPinvalid);
+  { Properties of an object for which defaults must be set }           
+  AdjProps=(APClass,APBoxtype,ApColors,APAlignment,APSize,APLcol,APstyle,APgravity);
+  { List of all object classes }
+  ObjClasses=(FL_INVALID,FL_BUTTON, FL_LIGHTBUTTON,FL_ROUNDBUTTON, FL_ROUND3DBUTTON,
+              FL_CHECKBUTTON, FL_BITMAPBUTTON, FL_PIXMAPBUTTON,FL_BITMAP, FL_PIXMAP,
+              FL_BOX, FL_TEXT, FL_MENU, FL_CHART, FL_CHOICE, FL_COUNTER, FL_SLIDER, FL_VALSLIDER, FL_INPUT,
+              FL_BROWSER,FL_DIAL,FL_TIMER,FL_CLOCK, FL_POSITIONER, FL_FREE,
+              FL_XYPLOT,FL_FRAME, FL_LABELFRAME, FL_CANVAS, FL_GLCANVAS,
+              FL_IMAGECANVAS, FL_FOLDER);
+  { Properties in preamble }
+  PreProps=(PPmagic,PPNrforms,PPUnitofMeasure,PPinvalid);
+  { Properties of a form }
+  FormProps=(FPName,FPWidth,FPHeight,FPnumObjs,FPinvalid);
+   
+Const
+  { Names of all object properties }
+  ContPropNames : Array[ContProps] of string[20] =
+            ('class','type','box','boxtype','colors','alignment','style','size',
+             'lcol','label','shortcut','resize','gravity','name','callback',
+             'argument',
+             'invalid');
+  { Names of all object properties which must be checked.}           
+  AdjPropsNames : Array[AdjProps] of string[20] =
+          ('class','boxtype','colors','alignment','size','lcol','style','gravity');
+  { Names of all preamble properties }        
+  PrePropNames : Array[PreProps] of string[20] = 
+            ('Magic','Number of forms','Unit of measure','Invalid');
+  { Names of all form properties }          
+  FormPropNames : Array[FormProps] of string[20] =
+            ('Name','Width','Height','Number of Objects','Invalid');
+  { Names of all object classes }          
+  FObjClassNames : Array[ObjClasses] of string[20]=          
+             ('FL_INVALID','BUTTON', 'LIGHTBUTTON','ROUNDBUTTON', 'ROUND3DBUTTON',
+              'CHECKBUTTON', 'BITMAPBUTTON', 'PIXMAPBUTTON','BITMAP', 'PIXMAP',
+              'BOX', 'TEXT', 'MENU', 'CHART', 'CHOICE', 'COUNTER', 'SLIDER', 'VALSLIDER', 'INPUT',
+              'BROWSER','DIAL','TIMER','CLOCK', 'POSITIONER', 'FREE',
+              'XYPLOT','FRAME', 'LABELFRAME', 'CANVAS', 'GLCANVAS',
+              'IMAGECANVAS', 'FOLDER');
+
+ { Default properties. If empty a property is ignored.
+   To force setting of a property, put 'FL_FORCE' as a string.
+   Mind : Case sensitive }
+     
+  DefProps : array[ObjClasses,AdjProps] of string[25] =
+             (('FL_INVALID','','','','','','FL_NORMAL_STYLE','FL_FORCE'),
+              ('BUTTON','FL_UP_BOX','FL_COL1 FL_COL1','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('LIGHTBUTTON','FL_UP_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('ROUNDBUTTON','FL_NO_BOX','FL_MCOL FL_YELLOW','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('ROUND3DBUTTON','FL_NO_BOX','FL_COL1 FL_BLACK','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('CHECKBUTTON','FL_NO_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('BITMAPBUTTON','FL_UP_BOX','FL_COL1 FL_BLUE','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('PIXMAPBUTTON','FL_UP_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('BITMAP','FL_NO_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('PIXMAP','FL_NO_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('BOX','','','','','','FL_NORMAL_STYLE','FL_FORCE'),
+              ('TEXT','FL_FLAT_BOX','FL_COL1 FL_MCOL','FL_ALIGN_LEFT','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('MENU','FL_BORDER_BOX','FL_COL1 FL_MCOL','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('CHART','FL_BORDER_BOX','FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('CHOICE','FL_ROUNDED_BOX','FL_COL1 FL_LCOL','FL_ALIGN_LEFT','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('COUNTER','FL_UP_BOX','FL_COL1 FL_BLUE','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('SLIDER','FL_DOWN_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('VALSLIDER','FL_DOWN_BOX','FL_COL1 FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('INPUT','FL_DOWN_BOX','FL_COL1 FL_MCOL','FL_ALIGN_LEFT','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('BROWSER','FL_DOWN_BOX','FL_COL1 FL_YELLOW','FL_ALIGN_BOTTOM','FL_SMALL_FONT','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('DIAL','FL_FLAT_BOX','FL_COL1 FL_RIGHT_BCOL','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('TIMER','FL_DOWN_BOX','FL_COL1 FL_RED','FL_ALIGN_CENTER','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('CLOCK','FL_UP_BOX','FL_INACTIVE_COL FL_BOTTOM_BCOL','FL_ALIGN_BOTTOM','','FL_BLACK','FL_NORMAL_STYLE','FL_FORCE'),
+              ('POSITIONER','FL_DOWN_BOX','FL_COL1 FL_RED','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('FREE','','','','','','FL_NORMAL_STYLE','FL_FORCE'),
+              ('XYPLOT','FL_FLAT_BOX','FL_COL1','FL_ALIGN_BOTTOM','','FL_LCOL','FL_NORMAL_STYLE','FL_FORCE'),
+              ('FRAME','','FL_BLACK FL_COL1','','','FL_BLACK','FL_NORMAL_STYLE','FL_FORCE'),
+              ('LABELFRAME','','','','','','FL_NORMAL_STYLE','FL_FORCE'),
+              ('CANVAS','FL_NO_BOX','','FL_ALIGN_TOP','','','FL_NORMAL_STYLE','FL_FORCE'),
+              ('GLCANVAS','','','','','','FL_NORMAL_STYLE','FL_FORCE'),
+              ('IMAGECANVAS','','','','','','FL_NORMAL_STYLE','FL_FORCE'),
+              ('FOLDER','','','','','','FL_NORMAL_STYLE','FL_FORCE'));
+     
+Type
+  { object data type }
+  PControl = ^TControl;
+  TControl = Record
+    Props : array[ContProps] of string;
+    NextControl : PControl;
+    end;
+    
+  { Form data type}
+  PFormRec = ^TFormRec;
+  TFormRec = Record
+    Name : String;
+    Width,Height : String[5];
+    Controls : PControl;
+    NextForm : PFormRec;    
+    end;
+  { Callback data type }
+  PCBrec = ^TCBrec;
+  TCBrec = record
+    name : string;
+    next : PCBrec;
+    end;
+  { Property emitting procedures }  
+  EmitProp = Procedure (Data : PControl;ObjClass : ObjClasses);
+  
+Var
+  OptionsSet : Array[1..NrOptions] Of Boolean;
+  FileName : String;
+  Infile,outfile : Text;
+  Magic : String[20];
+  LineNr : Longint;
+  NrForms,NrControls : Longint;
+  UnitOfMeasure : string;
+  FormRoot : PFormRec;
+  cbroot : pcbrec;
+  { Default properties emitters }
+  EmitProcs : array [AdjProps] of EmitProp;
+  { Class specific property emitters. Nil pointers are ignored.}
+  ClassEmitters : Array[ObjClasses] of EmitProp;
+
+{ ------------------------------------------------------------------------
+  Utilities Code 
+  ------------------------------------------------------------------------ }
+
+
+Function IntTostr (s : Longint) : String;
+
+var temp : String;
+
+begin
+  str(s,temp);
+  IntToStr:=Temp;
+end;
+
+     
+Procedure EmitError (Const s : String);
+
+begin
+  writeln (stderr,'Error: ',s);
+  flush(stderr)
+end;
+
+Procedure EmitLineError (Const s : string);
+
+begin
+  EmitError('Line '+IntToStr(LineNr)+': '+s)
+end;
+
+
+{ ------------------------------------------------------------------------
+  Option handling Code 
+  ------------------------------------------------------------------------ }
+
+
+Procedure DoOptions;
+
+Var i,j,k : byte;
+    os : string;
+    
+Procedure ShowVersion;
+
+begin
+  Writeln ('fd2pascal : ',RevString);
+  Halt(0);
+end;
+
+Procedure ShowUsage;
+
+begin
+  Writeln ('fd2pascal : usage :');
+  writeln (' fd2pascal [options] filename');
+  writeln (' Where [options] may be zero or more of :');
+  writeln ('  -compensate    Emit size-compensation code.');
+  writeln ('  -altformat     Emit code in alternate format.');
+  writeln ('  -main          Emit program instead of unit.');
+  writeln ('  -callback      Emit callback stubs.');
+  writeln;
+  halt(0);
+end;
+
+begin
+  if paramcount=0 then
+     ShowUsage;
+  FileName:='';
+  for i:=1 to paramcount do
+    begin
+    if paramstr(i)[1]<>'-' then
+      If FileName<>'' then
+        EmitError('Only one filename supported. Ignoring :'+paramstr(i))
+      else
+        Filename:=Paramstr(i)
+    else
+      begin
+      os:=copy(paramstr(i),2,length(paramstr(i))-1);
+      k:=NrOptions+1;
+      for j:=0 to NrOptions do 
+        if os=options[j] then k:=j;
+      if k=NrOptions+1 then
+        EmitError('Option not recognised : '+paramstr(i))
+      else
+        if k=0 then ShowVersion else OptionsSet[k]:=True; 
+      end
+    end; {for}
+  if FileName='' then
+    begin
+    EmitError('No filename supplied. Exiting.');
+    halt(1);
+    end;
+end;
+
+{ ------------------------------------------------------------------------
+  Code for reading the input file. 
+  ------------------------------------------------------------------------ }
+
+
+Procedure OpenFile;
+begin
+  if pos('.fd',FileName)=0 then
+    FileName:=FileName+'.fd';
+  assign(infile,Filename);
+{$i-} 
+  reset (infile);
+{$i+}
+  if ioresult<>0 then
+    begin
+    EmitError('Can''t open : '+filename);
+    halt(1);
+    end;
+  LineNr:=0; 
+end;
+
+Procedure CloseFile;
+
+begin
+  Close(infile);
+end;
+
+Procedure GetLine(Var S : String);
+
+begin
+  inc(LineNr);
+  Readln(infile,s);
+{$ifdef debug}  
+  writeln ('Reading line : ',linenr)
+{$endif}
+end;
+
+Procedure ProcessPreAmbleLine (Const s: String);
+
+var key,value : string;
+    ppos : Longint; 
+    i,k : PreProps;
+    code : Word;
+    
+begin
+  if s='' then exit;
+  ppos:=pos(':',s);
+  if ppos=0 then
+    exit;
+  Key:=Copy(s,1,ppos-1);
+  Value:=Copy(s,ppos+2,length(s)-ppos-1); 
+  k:=PPinvalid;
+  for i:=PPmagic to PPinvalid do
+    if key=PrePropNames[i] then k:=i;
+  if k=PPinvalid then
+    EmitLineError('Unknown keyword : '+Key)
+  else
+    Case K of
+      PPMagic : Magic:=key;
+      PPnrforms: begin
+               val(value,NrForms,code);
+               if code<>0 then EmitLineError('Invalid number of forms');
+               end;
+      PPunitofmeasure: UnitOfMeasure:=Value;
+    end;           
+end;
+
+{ ------------------------------------------------------------------------
+  Code for reading preamble. 
+  ------------------------------------------------------------------------ }
+
+
+Procedure DoPreamble;
+
+var line : String;
+
+begin
+{$ifdef debug}
+  writeln ('Starting preamble');
+{$endif}
+  Getline (line);
+  while pos('= FORM =',line)=0 do
+    begin
+    ProcessPreAmbleLine(line);
+    GetLine(Line)
+    end;
+end;
+
+{ ------------------------------------------------------------------------
+  Code for reading 1 object. 
+  ------------------------------------------------------------------------ }
+
+
+Procedure ProcessControlLine (PC : PControl; const S : String);
+
+Var Key,Value : String;
+    i,k : ContProps;
+    ppos,code : word;
+    
+begin
+  if s='' then exit;
+  ppos:=pos(':',s);
+  if ppos=0 then
+    exit;
+  Key:=Copy(s,1,ppos-1);
+  Value:=Copy(s,ppos+2,length(s)-ppos-1); 
+  K:=CPInvalid;
+  For i:=CPclass to CPInvalid do
+    if ContPropNames[i]=Key then k:=i;
+  if K=CPinvalid then
+     begin
+     EmitLineError('Unknown keyword'+key);
+     exit
+     end;
+  PC^.props[k]:=value;
+end;
+
+Procedure ProcessControl (PC : PControl);
+
+var line : String;
+
+begin
+{$ifdef debug}
+  Writeln ('Starting Control');
+{$endif}
+  Getline(Line);
+  while Line<>'' do
+    begin
+    ProcessControlLine (PC,line);
+    Getline(Line);
+    end;
+  Getline(Line)
+end;
+
+{ ------------------------------------------------------------------------
+  Code for reading 1 form. 
+  ------------------------------------------------------------------------ }
+
+Procedure ProcessFormLine (PF : PFormRec; const S : String);
+
+Var Key,Value : String;
+    i,k : FormProps;
+    ppos,code : word;
+    
+begin
+  if s='' then exit;
+  ppos:=pos(':',s);
+  if ppos=0 then
+    exit;
+  Key:=Copy(s,1,ppos-1);
+  Value:=Copy(s,ppos+2,length(s)-ppos-1); 
+  K:=FPInvalid;
+  For i:=FPName to FPInvalid do
+    if FormPropNames[i]=Key then k:=i;
+  if K=FPinvalid then
+     begin
+     EmitLineError('Unknown keyword'+key);
+     exit
+     end;
+  case k of
+    FPname    : PF^.name:=value;
+    FPWidth   : PF^.width:=value;
+    FPHeight  : PF^.height:=value;
+    FPNumObjs : begin
+                val(value,Nrcontrols,code);
+                If Code<>0 then EmitLineError('Invalid number of objects : '+value)
+                end;
+    end;
+end;
+
+Procedure ProcessForm (PF : PFormRec);
+
+Var line : String;
+    CurrentControl : PControl;
+    I : Integer;
+    
+begin
+{$ifdef debug}
+  writeln('Starting form');
+{$endif}
+  NrControls:=0;
+  with PF^ do
+    begin
+    name:='';
+    Width:='';
+    Height:='';
+    Controls:=nil;
+    GetLine(Line);
+    while line<>'' do
+      begin
+      ProcessFormLine(PF,Line);
+      GetLine(Line);
+      end;
+    Getline(Line);
+    If NrControls=0 then
+      Controls:=nil
+    else
+      begin
+      New (Controls);
+      CurrentControl:=Controls;
+      for i:=1 to nrcontrols do
+        begin
+        ProcessControl(CurrentControl);
+        if i<NrControls then
+          New(CurrentControl^.NextControl)
+        else
+          CurrentControl^.NextControl:=nil;
+        CurrentControl:=CurrentControl^.NextControl
+        end; { for }
+      end; { Else }
+    end; { With }
+end;
+
+{ ------------------------------------------------------------------------
+  Code for reading the forms. 
+  ------------------------------------------------------------------------ }
+
+
+Procedure DoForms;
+
+Var Line : String;
+    i : Longint;
+    CurrentForm: PformRec;
+    
+begin
+  FormRoot:=Nil;
+  if NrForms=0 then exit;
+  new(FormRoot);
+  Currentform:=FormRoot;
+  for i:=1 to nrforms do
+     begin
+     ProcessForm (CurrentForm);
+     If i=nrforms then 
+       Currentform^.NextForm:=nil
+     else
+       New(CurrentForm^.NextForm);
+     CurrentForm:=CurrentForm^.NextForm;
+     end;
+end;
+
+{ ------------------------------------------------------------------------
+  Code for reading the postamble. 
+  ------------------------------------------------------------------------ }
+
+
+Procedure DoPostamble;
+
+begin
+end;
+
+{ ------------------------------------------------------------------------
+  Code for writing the output file. 
+  ------------------------------------------------------------------------ }
+
+Procedure OpenOutFile;
+
+var info : stat;
+
+begin
+  FileName:=Copy(Filename,1,Length(Filename)-3)+'.pp';
+  fstat(FileName,info);
+  if linuxerror=0 then
+    begin
+    { File exists, move to .bak}
+    link (FileName,FileName+'.bak');
+    unlink (FileName);
+    end;
+  assign(outfile,filename);
+{$i-}
+  rewrite(outfile);
+{$i+}
+  if ioresult<>0 then 
+    begin
+    EmitError('Couldn''t open output file : '+filename);
+    halt(1)
+    end;
+end;
+
+Procedure CloseOutFile;
+
+begin
+ Close(OutFile);
+end;
+
+{ ------------------------------------------------------------------------
+  Code to emit Header/variable/type declarations 
+  ------------------------------------------------------------------------ }
+
+
+Procedure EmitType (fp : Pformrec);
+
+var cp : PControl;
+
+begin
+  writeln (OutFile,'  TFD_',fp^.name,' = record');
+  writeln (OutFile,'    ',fp^.name,' : PFL_FORM;');
+  writeln (OutFile,'    vdata : Pointer;');
+  writeln (OutFile,'    ldata : Longint;');
+  cp:=fp^.controls;
+  {Skip first control, is formbackground } 
+  if cp<>nil then cp:=cp^.nextcontrol;
+  while cp<>nil do
+    begin
+    if cp^.props[CPclass]<>'FL_END_GROUP' then
+      begin
+      write (Outfile,'    ',cp^.props[CPname]);
+      if cp^.nextcontrol<>nil then
+        writeln (OutFile,',')
+      else
+        writeln (OutFile,' : PFL_OBJECT;');
+      end;
+    cp:=cp^.nextcontrol;
+    end;
+  writeln (OutFile,'    end;');
+  writeln (OutFile,'  PFD_',fp^.name,' = ^TFD_',fp^.name,';');
+  writeln (OutFile);
+end;
+
+Procedure EmitVar (fp : Pformrec);
+
+var cp : PControl;
+
+begin
+  writeln (OutFile,'  ',fp^.name,' : PFL_FORM;');
+  cp:=fp^.controls;
+  {Skip first control, is formbackground } 
+  if cp<>nil then cp:=cp^.nextcontrol;
+  while cp<>nil do
+    begin
+    if cp^.props[CPclass]<>'FL_END_GROUP' then
+      begin
+      write (Outfile,'  ',cp^.props[CPname]);
+      if cp^.nextcontrol<>nil then
+        writeln (OutFile,',')
+      else
+        writeln (OutFile,' : PFL_OBJECT;');
+      end;
+    cp:=cp^.nextcontrol;
+    end;
+  writeln (OutFile);
+end;
+
+Procedure EmitHeader;
+
+var fp : PFormRec;
+    cp : PControl;
+
+begin
+  if OptionsSet[2] then
+    write   (OutFile,'Program ')
+  else
+    write   (OutFile,'Unit ');
+  writeln (OutFile,basename(filename,'.pp'),';');
+  writeln (OutFile);
+  writeln (OutFile,'{ Form definition file generated by fd2pascal }');
+  writeln (Outfile);
+  if not OptionsSet[2] then
+     begin
+     writeln (OutFile,'Interface');
+     writeln (OutFile);
+     end;
+  writeln (OutFile,'Uses forms;');
+  writeln (OutFile);
+  writeln (OutFile,'  { Variable / Type definitions. }');
+  if Optionsset[3] then
+    writeln (OutFile,'Var')
+  else
+    writeln (OutFile,'Type');
+  fp:=FormRoot;
+  While fp<>nil do
+    begin
+    if not optionsset[3] then
+      EmitType(fp) { Emit Type definitions }
+    else
+      EmitVar(fp); { Emit Variable declaration}
+    fp:=fp^.nextform;
+    end;
+  if not optionsset[2] then  
+    begin
+    { No program, we must emit interface stuff }
+    if not (optionsset[3]) then
+      begin
+      { Emit normal interface declarations 
+        -> functions }
+      fp:=formroot;
+      while fp<>nil do
+        begin
+        with fp^ do
+          writeln (OutFile,'Function create_form_',name,' : PFD_',name,';');
+        fp:=fp^.nextform;
+        end;
+      end
+    else
+      begin
+      { Emit alternate interface declaration 
+        -> 1 function to create all forms.}
+      writeln (OutFile,'Procedure Create_The_Forms;');
+      end;
+    writeln (OutFile);
+    writeln (OutFile,'Implementation');
+    end
+  else
+    begin
+    { We must make a program. }
+    if not(optionsset[3]) then
+      begin
+      { Normal format, so we need to emit variables for the forms.}
+      writeln (OutFile,'Var');
+      fp:=formroot;
+      while fp<>nil do
+        begin
+        writeln (OutFile,'  ',fp^.name,' : PFD_',fp^.name,';');
+        fp:=fp^.nextform;
+        end;
+      writeln (OutFile);
+      end;
+    end;
+  writeln (OutFile);
+end;
+
+{ ------------------------------------------------------------------------
+  Code to emit footer/main program
+  ------------------------------------------------------------------------ }
+
+
+Procedure EmitCreateforms;
+
+var fp : PFormRec;
+
+begin
+  writeln (OutFile,'Procedure Create_The_Forms;');
+  writeln (OutFile);
+  writeln (OutFile,'begin');
+  fp:=FormRoot;
+  while fp<>nil do
+    begin
+    writeln(OutFile,'create_form_',fp^.name,';');
+    fp:=fp^.nextform;
+    end;
+  writeln (outFile,'End;');
+  writeln (OutFile); 
+end;
+
+Procedure EmitAlternateMain;
+
+var fp : PFormRec;
+
+begin
+  { Alternate format, we just call creatallforms to create all forms}
+  writeln (OutFile,'Create_The_Forms;');
+  writeln (OutFile,'  fl_show_form(',formroot^.name,
+                   ',FL_PLACE_CENTER,FL_FULLBORDER,''',
+                   FormRoot^.name,''');');
+end;
+
+Procedure EmitMain;
+
+var fp : PFormRec;
+
+begin
+  { variables are emitted in the header }
+  fp:=formroot;
+  { Create all forms }
+  while fp<>nil do
+    begin
+    writeln (OutFile,'  ',fp^.name,' :=Create_Form_',fp^.name,';');
+    fp:=fp^.nextform;
+    end;
+  { Show the first form }  
+  writeln (OutFile,'  fl_show_form(',formroot^.name,'^.',Formroot^.name,
+                   ',FL_PLACE_CENTER,FL_FULLBORDER,''',
+                   FormRoot^.name,''');');
+end;
+
+Procedure EmitFooter;
+
+var fp : PFormRec;
+
+begin
+  if OptionsSet[3] then {Alternate format.}
+     EmitCreateForms;
+  if Optionsset[2] then
+    begin
+    {Emit Main Program}
+    writeln (OutFile);
+    writeln (OutFile,'Begin');
+    writeln (OutFile,'  fl_initialize (@argc,argv,''',
+                     BaseName(Filename,'.pp'),''',nil,0);');
+    if Not(OptionsSet[3]) then
+      EmitMain
+    else
+      EmitAlternateMain;
+    writeln (OutFile,'  fl_do_forms;');
+    end
+  else
+    writeln (OutFile,'begin');
+  writeln (OutFile,'end.')
+end;
+
+
+
+
+{ ------------------------------------------------------------------------
+  Code to emit properties
+  ------------------------------------------------------------------------ }
+
+
+Function EmitString(S : string) : String;
+
+var temp : String;
+    i : longint;
+
+begin
+  temp:='''';
+  for i:=1 to length(s) do
+    if s[i]<>'''' then temp:=temp+s[i] else temp:=temp+'''''';
+  Temp:=temp+'''';
+  EmitString:=temp;
+end;
+
+Procedure EmitBoxtype (cp : PControl;ObjClass : ObjClasses);
+
+begin
+{$ifdef debug}
+  writeln ('EmitBoxType called with args:');
+  writeln (cp^.props[cpboxtype]);
+  writeln (defprops[objclass,APboxtype]);
+  writeln ('for object : ',defprops[objclass,apclass]);
+  writeln ('With object : ',cp^.props[cpclass]);
+{$endif}
+  if cp^.props[cpboxtype]<>defprops[objclass,APboxtype] then
+    writeln (OutFile,'    fl_set_object_boxtype(obj,',
+                    cp^.props[cpboxtype],');')
+end;
+
+Procedure EmitColors (cp : PControl;ObjClass : ObjClasses);
+
+var temp : string; 
+
+begin
+  if cp^.props[cpcolors]<>defprops[objclass,APcolors] then
+    begin
+    temp:=cp^.props[cpcolors];
+    if pos(' ',temp)=0 then exit;
+    temp[pos(' ',temp)]:=',';
+    writeln (OutFile,'    fl_set_object_color(obj,',temp,');');
+    end;
+end;
+
+Procedure EmitAlignment (cp : PControl;ObjClass : ObjClasses);
+
+begin
+ if cp^.props[cpalignment]<>defprops[objclass,APalignment] then
+    writeln (OutFile,'    fl_set_object_alignment(obj,',
+                     cp^.props[cpalignment],');');
+end;
+
+Procedure EmitLcol (cp : PControl;ObjClass : ObjClasses);
+
+begin
+ if cp^.props[cplcol]<>defprops[objclass,APlcol] then
+    writeln (OutFile,'    fl_set_object_lcol(obj,',
+                     cp^.props[cplcol],');');
+end;
+
+
+Procedure EmitSize (cp : PControl;ObjClass : ObjClasses);
+
+begin
+ if cp^.props[cpsize]<>defprops[objclass,APsize] then
+    writeln (OutFile,'    fl_set_object_lsize(obj,',
+                     cp^.props[cpsize],');');
+end;
+
+Procedure EmitStyle (cp : PControl;ObjClass : ObjClasses);
+
+begin
+ if cp^.props[cpstyle]<>defprops[objclass,APstyle] then
+    writeln (OutFile,'    fl_set_object_lstyle(obj,',
+                     cp^.props[cpstyle],');');
+end;
+
+Procedure EmitGravity (cp : PControl;ObjClass : ObjClasses);
+
+var temp: string;
+
+begin
+ if cp^.props[cpstyle]<>'FL_NoGravity FL_NoGravity' then
+    begin
+    temp:=cp^.props[cpstyle];
+    if pos(' ',temp)=0 then exit;
+    temp[pos(' ',temp)]:=',';
+    writeln (OutFile,'    fl_set_object_gravity(obj,',
+                     temp,');');
+    end;
+end;
+
+
+Procedure EmitProperties (Cp : PControl; Objclass : ObjClasses);
+
+Var i : AdjProps;
+
+begin
+  for i:=APboxtype to APgravity do
+    if DefProps[ObjClass,i]<>'' then
+       EmitProcs[i](cp,objclass);
+end;
+
+{ ------------------------------------------------------------------------
+  Code to emit objects
+  ------------------------------------------------------------------------ }
+
+Procedure EmitObject(cp : PControl);
+
+var temp : string;
+    Corners : array[1..4] of string[5];
+    I : Longint;  
+    j,k : ObjClasses;
+
+begin
+with cp^ do
+  begin  
+  temp:=lowercase(props[CPclass]);
+  delete(temp,1,3);
+  if temp='begin_group' then
+    begin
+    writeln (OutFile);
+    write (OutFile,'  ');
+    if not (Optionsset[3]) then Write (OutFile,'fdui^.');
+    writeln (OutFile,props[cpname],':=fl_bgn_group;');
+    exit;
+    end
+  else if temp='end_group' then
+    begin
+    writeln (OutFile,'  fl_end_group;');
+    writeln (OutFile);
+    exit;
+    end;
+  { Normal object. Emit creation code. }
+  write (OutFile,'  obj:=fl_add_',temp,' (FL_',props[Cptype],',');
+  temp:=props[cpbox];
+  for i:=1 to 3 do
+    begin
+    write (OutFile,copy(temp,1,pos(' ',temp)-1),',');
+    delete (temp,1,pos(' ',temp));
+  end;
+  writeln (OutFile,temp,',',EmitString(props[cplabel]),');');
+  { Emit Callback code if needed }
+  if props[cpcallback]<>'' then
+    begin
+    write (OutFile,'    fl_set_object_callback(obj,PFL_CALLBACKPTR(@');
+    write (OutFile,props[CPcallback],'),');
+    if props[CPargument]<>'' then
+       writeln (OutFile,props[CPargument],');')
+    else
+       writeln (OutFile,'0);');
+    end;
+  { If known object, start emitting properties }
+  temp:=props[CPclass];
+  delete(temp,1,3);
+  k:=FL_INVALID;
+  for j:=FL_BUTTON to FL_FOLDER do
+    if temp=DefProps[j,apclass] then k:=j;
+  if k<>FL_INVALID then 
+     begin
+     { Emit defaults }
+     EmitProperties (cp,k);
+     { If A class-specific emitter exists, call it.}
+     if Assigned(ClassEmitters[k]) then
+       ClassEmitters[k] (cp,k);
+     end;
+  { Assign to needed object. }  
+  if Optionsset[3] then
+    Writeln (OutFile,'  ',props[cpname],':=obj;')
+  else   
+    Writeln (OutFile,'  fdui^.',props[cpname],':=obj;');
+  end; 
+end;
+
+{ ------------------------------------------------------------------------
+  Code to emit forms
+  ------------------------------------------------------------------------ }
+
+Procedure EmitForm(fp : PFormRec);
+
+Var
+cp : PControl;
+
+begin
+with fp^ do
+  begin
+  if Optionsset[3] then
+    begin
+    writeln (OutFile,'Procedure create_form_',name,';');
+    writeln (OutFile);
+    writeln (OutFile,'Var obj : PFL_OBJECT;');
+    writeln (OutFile);
+    writeln (OutFile,'Begin');
+    writeln (OutFile,'  If ',name,'<>nil then exit;');
+    write   (OutFile,'  ',name);
+    end
+  else
+    begin
+    writeln (OutFile,'Function create_form_',name,' : PFD_',name,';');
+    writeln (OutFile);
+    writeln (OutFile,'Var obj : PFL_OBJECT;');
+    writeln (OutFile,'    fdui : PFD_',name,';');
+    writeln (OutFile);
+    writeln (OutFile,'Begin');
+    writeln (OutFile,'  New(fdui);');
+    write (OutFile,'  fdui^.',name);
+    end;
+  writeln (OutFile,':=fl_bgn_form(FL_NO_BOX,'
+                                                  ,width,','
+                                                  ,height,');');
+  cp:=controls;
+  writeln (OutFile,'  obj:=fl_add_box(',cp^.props[CPboxtype],',0,0,',
+                                      width,',',
+                                      height,',',
+                                      EmitString (cp^.props[CPname]),');');
+  cp:=cp^.nextcontrol;
+  { Emit all objects }
+  while cp<>nil do 
+    begin
+    EmitObject(cp);
+    cp:=cp^.nextcontrol;
+    end;
+  writeln (OutFile,'  fl_end_form;');
+  if Optionsset[4] then
+    begin
+    { Emit Compensation code }
+    write (OutFile,'  fl_adjust_form_size(');
+    if not(OptionsSet[3]) then write (OutFile,'fdui^.');
+    writeln(OutFile,fp^.name,');');
+    end;
+  if not(OptionsSet[3]) then
+    begin
+    writeln (OutFile,'  fdui^.',fp^.name,'^.fdui:=fdui;');
+    writeln (OutFile,'  create_form_',fp^.name,':=fdui;');
+    end;
+  writeln (OutFile,'end;');
+  writeln (OutFile);
+  end;  
+end;
+
+Procedure EmitForms;
+
+var
+
+fp : PformRec;
+cp : PControl;
+
+begin
+  { Start emitting forms } 
+  fp:=Formroot;
+  while fp<>nil do
+    begin
+    EmitForm(fp);
+    fp:=fp^.nextform;
+    end;
+end;
+
+{ ------------------------------------------------------------------------
+  Code to emit callbacks
+  ------------------------------------------------------------------------ }
+
+Procedure CollectCallbacks;
+
+Var CurrentCb,CBwalk : PCBrec;
+    fp : PformRec;
+    cp : PControl;
+    
+begin
+  CbRoot:=nil;
+  CurrentCB:=cbroot;
+  fp:=formroot;
+  while fp<>nil do
+    begin
+    cp:=fp^.controls;
+    while cp<>nil do
+      begin
+      if cp^.props[CPcallback]<>'' then
+        if cbroot<>nil then
+          begin
+          cbwalk:=cbroot;
+          while cbwalk<>nil do
+            if upcase(cbwalk^.name)=upcase(cp^.props[CPcallback]) then
+              break
+            else
+              cbwalk:=cbwalk^.next;
+          if cbwalk=nil then
+            begin
+            new(currentcb^.next);
+            currentcb:=currentcb^.next;
+            currentcb^.name:=cp^.props[CPcallback];
+            currentcb^.next:=nil;
+            end;
+          end
+        else
+          begin
+          new(cbroot);
+          currentcb:=cbroot;
+          cbroot^.name:=cp^.props[CPcallback];
+          cbroot^.next:=nil;
+          end;
+      cp:=cp^.nextcontrol;
+      end;
+    fp:=fp^.nextform;
+    end;        
+end;
+
+Procedure EmitCallback (Const s : string);
+
+begin
+  writeln (OutFile,'Procedure ',s,' (Sender: PFL_OBJECT; Data : Longint); export;');
+  writeln (OutFile);
+  writeln (OutFile,'begin');
+  writeln (OutFile,'  { Place your code here }');
+  writeln (OutFile,'end;');
+  writeln (OutFile);
+end; 
+
+Procedure EmitCallBacks;
+
+var cb : pcbrec;
+
+begin
+  { See if we must emit callback stubs }
+  If Optionsset[1] then
+    begin
+    cb:=cbroot;
+    while cb<>nil do
+      begin
+      EmitCallBack(cb^.Name);
+      cb:=cb^.next;
+      end; 
+    end;
+end;
+
+
+{ ------------------------------------------------------------------------
+  EmitterTable initialization Code 
+  ------------------------------------------------------------------------ }
+
+Procedure EmitDummy (cp : PControl;ObjClass : ObjClasses);
+
+begin
+end;
+
+Procedure InitEmitters;
+
+var i : objclasses;
+
+begin
+  EmitProcs[APClass]:=@EmitDummy;
+  EmitProcs[APBoxtype]:=@EmitBoxType;
+  EmitProcs[APColors]:=@EmitColors;
+  EmitProcs[APAlignment]:=@EmitAlignment;
+  EmitProcs[APlcol]:=@EmitLcol;
+  EmitProcs[APsize]:=@EmitSize;
+  EmitProcs[APStyle]:=@EmitStyle;
+  EmitProcs[APgravity]:=@EmitGravity;
+  for i:=FL_INVALID to FL_FOLDER do 
+    ClassEmitters[i]:=EmitProp(Nil);
+end;
+
+{ ------------------------------------------------------------------------
+  Main program Code 
+  ------------------------------------------------------------------------ }
+
+
+begin
+  { Process options }
+  DoOptions;
+  { Read input file }
+  OpenFile;
+  DoPreamble;
+  DoForms;
+  DoPostamble;
+  CloseFile;
+  { Write output file }
+  OpenOutfile;
+  InitEmitters;
+  CollectCallbacks;
+  EmitHeader;
+  EmitCallbacks;
+  EmitForms;
+  EmitFooter;
+  CloseOutFile;
+end.

+ 3452 - 0
packages/forms/forms-86.pp

@@ -0,0 +1,3452 @@
+
+Unit forms;
+
+Interface
+
+{$LinkLib forms}
+
+uses x,xlib,xutil,xresource;
+
+const 
+  FL_VERSION=0;
+  FL_REVISION=88;
+  FL_FIXLEVEL=1;
+  FL_INCLUDE_VERSION=FL_VERSION * 1000 + FL_REVISION;
+
+{ some general constants }
+    FL_ON = 1;
+    FL_OK = 1;
+    FL_VALID = 1;
+    FL_PREEMPT = 1;
+    FL_AUTO = 2;
+    FL_WHEN_NEEDED = FL_AUTO;
+
+    FL_OFF = 0;
+    FL_NONE = 0;
+    FL_CANCEL = 0;
+    FL_INVALID = 0;
+
+    FL_IGNORE = -1;
+    FL_CLOSE = -2;
+{
+ * The screen coordinate unit, FL_Coord, must be of signed type. Without
+ * prototype support, a type other than integer might not work right.
+ * If FL_Coord is float, FL_CoordIsFloat must be defined to be 1 so that
+ * round-off error can be checked. **TODO Float not tested ***
+ }
+Type PWord   = ^Word;
+     PDouble = ^Double;
+     PFloat  = ^Real;
+     PLongint = ^Longint;
+          
+type TFL_Coord = Longint {was int};
+     PFL_Coord = ^TFL_Coord;
+{ #define FL_CoordIsFloat 0	 define this if FL_Coord is of type float }
+   TFL_COLOR = longint; { Was cardinal }
+   PFL_COLOR = ^TFL_COLOR;
+
+{
+ * Coordinates can be in pixels, milli-meters or points (1/72inch)
+ }
+  TFL_COORD_UNIT=Longint {was int};
+  { POssible values }
+Const 
+    FL_COORD_PIXEL=0;		{ default, Pixel           }
+    FL_COORD_MM=1;		{ milli-meter              }
+    FL_COORD_POINT=2;		{ point                    }
+    FL_COORD_centiMM=3;		{ one hundredth of a mm    }
+    FL_COORD_centiPOINT=4;	{ one hundredth of a point }
+
+{
+ * All object classes.
+ }
+
+type TFL_Class = Longint;
+
+Const { Possible values }
+    FL_INVALID_CLASS=0;
+    FL_BUTTON=1;
+    FL_LIGHTBUTTON=2;
+    FL_ROUNDBUTTON=3;
+    FL_ROUND_3DBUTTON=4;
+    FL_CHECKBUTTON=5;
+    FL_BITMAPBUTTON=6;
+    FL_PIXMAPBUTTON=7;
+    FL_BITMAP=8;
+    FL_PIXMAP=9;
+    FL_BOX=10;
+    FL_TEXT=11;
+    FL_MENU=12;
+    FL_CHART=13;
+    FL_CHOICE=14;
+    FL_COUNTER=15;
+    FL_SLIDER=16;
+    FL_VALSLIDER=17;
+    FL_INPUT=18;
+    FL_BROWSER=19;
+    FL_DIAL=21;
+    FL_TIMER=21;
+    FL_CLOCK=22;
+    FL_POSITIONER=23;
+    FL_FREE=24;
+    FL_XYPLOT=25;
+    FL_FRAME=26;
+    FL_LABELFRAME=27;
+    FL_CANVAS=28;
+    FL_GLCANVAS=29;
+    FL_IMAGECANVAS=30;
+    FL_FOLDER=31;
+    FL_TEXTBOX=32;
+
+{ how to display a form onto screen }
+
+Type
+    TFL_PLace = Longint;
+
+Const
+    FL_PLACE_FREE = 0;		{ size remain resizable      }
+    FL_PLACE_MOUSE = 1;		{ mouse centered on form     }
+    FL_PLACE_CENTER = 2;	{ center of the screen       }
+    FL_PLACE_POSITION = 4;	{ specific size              }
+    FL_PLACE_SIZE = 8;		{ specific size              }
+    FL_PLACE_GEOMETRY = 16;	{ specific position          }
+    FL_PLACE_ASPECT = 32;	{ keep aspect ratio          }
+    FL_PLACE_FULLSCREEN = 64;	{ scale to fit screen        }
+    FL_PLACE_HOTSPOT = 128;	{ so mouse fall on (x,y)     }
+    FL_PLACE_ICONIC = 256;
+    { modifier }
+    FL_FREE_SIZE = 1 shl 14;
+    FL_FIX_SIZE = 1 shl 15;
+
+    FL_PLACE_FREE_CENTER =  FL_PLACE_CENTER or FL_FREE_SIZE;
+    FL_PLACE_CENTERFREE = FL_PLACE_CENTER or FL_FREE_SIZE;
+
+{ Window manager decoration request }
+
+type 
+    TFL_DECORATION = Longint;
+  
+Const { Possible values for FL_DECORATION }
+    FL_FULLBORDER = 1;		{ normal }
+    FL_TRANSIENT = 2;		{ set TRANSIENT_FOR property              }
+    FL_NOBORDER = 3;		{ use override_redirect to supress decor. }
+    FL_MODAL = 1 << 8;
+type
+ { All box types }
+    TFL_BOX_TYPE = Longint;
+Const { Possible values }
+    FL_NO_BOX=0;
+    FL_UP_BOX=1;
+    FL_DOWN_BOX=2;
+    FL_BORDER_BOX=3;
+    FL_SHADOW_BOX=4;
+    FL_FRAME_BOX=5;
+    FL_ROUNDED_BOX=6;
+    FL_EMBOSSED_BOX=7;
+    FL_FLAT_BOX=8;
+    FL_RFLAT_BOX=9;
+    FL_RSHADOW_BOX=10;
+    FL_OVAL_BOX=11;
+    FL_ROUNDED3D_UPBOX=12;
+    FL_ROUNDED3D_DOWNBOX=13;
+    FL_OVAL3D_UPBOX=14;
+    FL_OVAL3D_DOWNBOX=15;
+    FL_OSHADOW_BOX=16;
+
+{ How to place text relative to a box }
+Type
+    TFL_ALIGN = Longint;
+
+Const { Possible values for FL_ALIGN } 
+    FL_ALIGN_CENTER = 0;
+    FL_ALIGN_TOP = 1;
+    FL_ALIGN_BOTTOM = 2;
+    FL_ALIGN_LEFT = 4;
+    FL_ALIGN_RIGHT = 8;
+    FL_ALIGN_TOP_LEFT = FL_ALIGN_TOP or FL_ALIGN_LEFT;
+    FL_ALIGN_TOP_RIGHT = FL_ALIGN_TOP or FL_ALIGN_RIGHT;
+    FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_BOTTOM or FL_ALIGN_LEFT;
+    FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_BOTTOM or FL_ALIGN_RIGHT;
+    FL_ALIGN_INSIDE = (1 shl 13);
+    FL_ALIGN_VERT = (1 shl 14);	{ not functional yet  }
+
+    FL_ALIGN_LEFT_TOP = FL_ALIGN_TOP_LEFT;
+    FL_ALIGN_RIGHT_TOP = FL_ALIGN_TOP_RIGHT;
+    FL_ALIGN_LEFT_BOTTOM = FL_ALIGN_BOTTOM_LEFT;
+    FL_ALIGN_RIGHT_BOTTOM = FL_ALIGN_BOTTOM_RIGHT;
+
+{ Mouse buttons }
+
+FL_MBUTTON1=1; FL_LEFT_MOUSE=FL_MBUTTON1;
+FL_MBUTTON2=2; FL_MIDDLE_MOUSE=FL_MBUTTON2;
+FL_MBUTTON3=3; FL_RIGHT_MOUSE=FL_MBUTTON3;
+FL_MBUTTON4=4;
+FL_MBUTTON5=5;
+
+
+{ control when to reutrn input, slider and dial object. }
+
+    FL_RETURN_END_CHANGED = 0;
+    FL_RETURN_CHANGED = 1;
+    FL_RETURN_END = 2;
+    FL_RETURN_ALWAYS = 3;
+    FL_RETURN_DBLCLICK = 4;
+
+{
+ *  Some special color indeces for FL private colormap. It does not matter
+ *  what the value of each enum is, but it must start from 0 and be
+ *  consecutive.
+ }
+ 
+ 
+ 
+Type
+    TFL_DP_COL = Longint;
+Const
+    FL_BLACK		= 0;
+    FL_RED		= 1;
+    FL_GREEN		= 2;
+    FL_YELLOW		= 3;
+    FL_BLUE		= 4;
+    FL_MAGENTA		= 5;
+    FL_CYAN		= 6;
+    FL_WHITE		= 7;
+
+    FL_TOMATO		= 8;
+    FL_INDIANRED	= 9;
+    FL_SLATEBLUE	= 10;
+
+    FL_COL1		= 11;
+    FL_RIGHT_BCOL	= 12;
+    FL_BOTTOM_BCOL	= 13;
+    FL_TOP_BCOL		= 14;
+    FL_LEFT_BCOL	= 15;
+    FL_MCOL		= 16;
+
+    FL_INACTIVE		= 17;
+    FL_PALEGREEN	= 18;
+    FL_DARKGOLD		= 19;
+
+    FL_ORCHID		= 20;
+    FL_DARKCYAN		= 21;
+    FL_DARKTOMATO	= 22;
+    FL_WHEAT		= 23;
+    FL_DARKORANGE	= 24;
+    FL_DEEPPINK		= 25;
+    FL_CHARTREUSE	= 26;
+    FL_DARKVIOLET	= 27;
+    FL_SPRINGGREEN	= 28;
+    FL_DOGERBLUE	= 29;
+
+    FL_FREE_COL1 = 256; 
+    FL_FREE_COL2 = 257;
+    FL_FREE_COL3 = 258; 
+    FL_FREE_COL4 = 259;
+    FL_FREE_COL5 = 260; 
+    FL_FREE_COL6 = 261;
+    FL_FREE_COL7 = 262;
+    FL_FREE_COL8 = 263;
+    FL_FREE_COL9 = 264;
+    FL_FREE_COL10 = 265;
+    FL_FREE_COL11 = 266;
+    FL_FREE_COL12 = 267;
+    FL_FREE_COL13 = 268;
+    FL_FREE_COL14 = 269;
+    FL_FREE_COL15 = 270;
+    FL_FREE_COL16 = 271;
+
+FL_BUILT_IN_COLS  = FL_DOGERBLUE+1;
+FL_INACTIVE_COL =  FL_INACTIVE;
+
+{ Some aliases for the color. This is actually backwards ... }
+
+Const
+FL_GRAY16=FL_RIGHT_BCOL;
+FL_GRAY35      =     FL_BOTTOM_BCOL;
+FL_GRAY80      =     FL_TOP_BCOL;
+FL_GRAY90      =     FL_LEFT_BCOL;
+FL_GRAY63      =     FL_COL1;
+FL_GRAY75      =     FL_MCOL;
+FL_LCOL        =     FL_BLACK;
+
+{
+ *  Pop-up menu item attributes. NOTE if more than 8, need to change
+ *  choice and menu class where mode is kept by a single byte
+ }
+    FL_PUP_NONE = 0;
+    FL_PUP_GREY = 1;
+    FL_PUP_BOX = 2;
+    FL_PUP_CHECK = 4;
+    FL_PUP_RADIO = 8;
+
+FL_PUP_GRAY     = FL_PUP_GREY;
+FL_PUP_TOGGLE   = FL_PUP_BOX;
+FL_PUP_INACTIVE = FL_PUP_GREY;
+
+
+{ Events that a form reacts to.  }
+type TFL_EVENT = Longint;
+Const { Possible values }
+    FL_NOEVENT		= 0;
+    FL_DRAW		= 1;
+    FL_PUSH		= 2;
+    FL_RELEASE		= 3;
+    FL_ENTER		= 4;
+    FL_LEAVE		= 5;
+    FL_MOUSE		= 6;
+    FL_FOCUS		= 7;
+    FL_UNFOCUS		= 8;
+    FL_KEYBOARD		= 9;
+    FL_MOTION		= 10;
+    FL_STEP		= 11;
+    FL_SHORTCUT		= 12;
+    FL_FREEMEM		= 13;
+    FL_OTHER		= 14;		{ property, selection etc }
+    FL_DRAWLABEL	= 15;
+    FL_DBLCLICK		= 16;		{ double click            }
+    FL_TRPLCLICK	= 17;		{ triple click            }
+    FL_PS		= 18;		{ dump a form into EPS    }
+
+const 
+FL_MOVE=FL_MOTION;	{ for compatibility }
+
+{ Resize policies }
+type TFL_RESIZE_T = Longint;
+
+const
+    FL_RESIZE_NONE = 0;
+    FL_RESIZE_X    = 1;
+    FL_RESIZE_Y    = 2;
+
+const
+    FL_RESIZE_ALL = FL_RESIZE_X or FL_RESIZE_Y;
+
+{ Keyboard focus control }
+type
+    TFL_KEY = Longint;
+
+Const { Possible values for FL_KEY_Normal }
+    FL_KEY_NORMAL = 1;		{ normal keys(0-255) - tab +left/right }
+    FL_KEY_TAB = 2;		{ normal keys + 4 direction cursor     }
+    FL_KEY_SPECIAL = 4;		{ only needs special keys(>255)        }
+    FL_KEY_ALL = 7;		{ all keys                             }
+
+    FL_ALT_VAL = (1 shl 17);	{ alt + Key --> FL_ALT_VAL + key }
+
+{ Internal use }
+Type
+    TFL_FIND = Longint;
+Const
+    FL_FIND_INPUT	=0;
+    FL_FIND_AUTOMATIC	=1;
+    FL_FIND_MOUSE	=2;
+    FL_FIND_CANVAS	=3;
+    FL_FIND_KEYSPECIAL	=4;
+
+{******************************************************************
+ * FONTS
+ *****************************************************************}
+
+Const FL_MAXFONTS=32;	{ max number of fonts }
+
+type TFL_TEXT_STYLE = Longint;
+Const
+    FL_INVALID_STYLE		= -1;
+    FL_NORMAL_STYLE		= 0;
+    FL_BOLD_STYLE		= 1;
+    FL_ITALIC_STYLE		= 2;
+    FL_BOLDITALIC_STYLE 	= 3;
+
+    FL_FIXED_STYLE		= 4;
+    FL_FIXEDBOLD_STYLE 		= 5;
+    FL_FIXEDITALIC_STYLE	= 6;
+    FL_FIXEDBOLDITALIC_STYLE	= 7;
+
+    FL_TIMES_STYLE		= 8;
+    FL_TIMESBOLD_STYLE		= 9;
+    FL_TIMESITALIC_STYLE	= 10;
+    FL_TIMESBOLDITALIC_STYLE	= 11;
+
+    { The following are derived and must differ by multiples of SHADOW,
+       i.e., (FL_ENGRAVED%SHADOW) == 0. All being 2^n has the benefit that
+       (lstyle | FL_SHADOW) == (lstyle + FL_SHADOW). }
+
+Const
+    FL_SHADOW_STYLE = (1 shl 9);
+    FL_ENGRAVED_STYLE = (1 shl 10);
+    FL_EMBOSSED_STYLE = (1 shl 11);
+
+
+Type TFL_FONT_STYLE= TFL_TEXT_STYLE;
+
+{ Standard sizes in XForms }
+Const
+FL_TINY_SIZE     =  8;
+FL_SMALL_SIZE    =  10;
+FL_NORMAL_SIZE   =  12;
+FL_MEDIUM_SIZE   =  14;
+FL_LARGE_SIZE    =  18;
+FL_HUGE_SIZE     =  24;
+
+FL_DEFAULT_SIZE = FL_SMALL_SIZE;
+
+{ Defines for compatibility }
+
+FL_TINY_FONT  = FL_TINY_SIZE;
+FL_SMALL_FONT =  FL_SMALL_SIZE;
+FL_NORMAL_FONT=  FL_NORMAL_SIZE;
+FL_MEDIUM_FONT=  FL_MEDIUM_SIZE;
+FL_LARGE_FONT =  FL_LARGE_SIZE;
+FL_HUGE_FONT  =  FL_HUGE_SIZE;
+
+FL_NORMAL_FONT1 =  FL_SMALL_FONT;
+FL_NORMAL_FONT2 =  FL_NORMAL_FONT;
+FL_DEFAULT_FONT =  FL_SMALL_FONT;
+
+
+const  
+FL_BOUND_WIDTH = 3;	{ Border width of boxes }
+
+cFL_BEGIN_GROUP  =  10000;
+cFL_END_GROUP    =  20000;
+{
+ *  Definition of basic struct that holds an object
+ }
+
+FL_CLICK_TIMEOUT = 350;	{ double click interval }
+
+Type
+
+TFL_pixmap = record
+    thepixmap : Tpixmap;
+    Thewin    : TWindow;
+    TheVisual : TVisual;
+    x,y       : TFL_Coord;
+    w, h      : word;
+    depth     : Longint;
+end;
+
+Pform     = ^TForm;
+
+{Pfl_pixmap = ^fl_pixmap;
+}
+
+Pflobjs    = ^Tflobjs;
+
+THandle = Function (p1 : Pflobjs; p2 : Longint {was int}; p3 : TFL_Coord; p4 : TFL_Coord;p5 :  Longint {was int}; p6 : pointer) : Longint;
+PHandle = ^THandle;
+TObject_Callback = Procedure  (P1 : Pflobjs;p2 :  longint);
+PObject_Callback = ^TObject_Callback;
+
+Tflobjs = record
+    form : PForm;		{ the form this object belong        }
+    u_vdata : Pointer;
+    u_ldata : longint;
+    
+    objclass : Longint {was int};		{ class of object, button, slider etc }
+    thetype : Longint;		{ type within the class              }
+    boxtype : Longint {was int};		{ what kind of box type              }
+    x, y, w, h : TFL_Coord;	{ obj. location and size             }
+    bw : TFL_Coord;
+    col1, col2 : TFL_color;	{ colors of obj                      }
+    thelabel : pchar;		{ object label                       }
+    lcol : TFL_COLOR;		{ label color                        }
+    align : Longint;
+    lsize, lstyle : Longint;	{ label size and style               }
+
+    shortcut : ^Longint;
+
+    handle     : PHandle;
+    object_callback : PObject_Callback;
+    argument : Longint;
+
+    spec          : pointer;	{ instantiation                      }
+
+    prehandle  : PHandle;
+    posthandle : PHandle;
+
+
+    { re-configure preference }
+    resize    : cardinal;	{ what to do if WM resizes the FORM     }
+    nwgravity : cardinal;	{ how to re-position top-left corner    }
+    segravity : cardinal;	{ how to re-position lower-right corner }
+
+    parent,child,nc : Pflobjs;
+    ischild : longint;
+
+    prev : pflobjs;		{ prev. obj in form                  }
+    next : pflobjs;		{ next. obj in form                  }
+
+    flpixmap      : Pointer;	{ pixmap double buffering stateinfo  }
+    use_pixmap    : Longint;	{ true to use pixmap double buffering }
+
+    double_buffer : Longint;	{ only used by mesa/gl canvas        }
+
+    { some interaction flags }
+    pushed: Longint {was int};
+    focus: Longint {was int};
+    belowmouse: Longint {was int};
+    active: Longint {was int};			{ if accept event }
+    input: Longint {was int};
+    wantkey: Longint {was int};
+    radio: Longint {was int};
+    automatic: Longint {was int};
+    redraw: Longint {was int};
+    visible: Longint {was int};
+    clip: Longint {was int};
+    click_timeout : cardinal;
+    c_vdata : pointer;		{ for class use }
+    c_ldata : longint;		{ for class use }
+    cspec_size : cardinal;
+    
+    reserved : array[0..5] of cardinal;
+    { the following are for application programs }
+end;
+
+TFL_OBJECT = TFlobjs;
+PFL_OBJECT = ^TFL_OBJECT;
+
+TCallback = Procedure (P1 : pflobjs; P2 : pointer);
+PCallback = ^TCallback;
+{ callback function for an entire form }
+PFL_FORMCALLBACKPTR = PCallback;
+
+{ object callback function      }
+PFL_CALLBACKPTR = PCallBack;
+
+{ preemptive callback function  }
+PFL_RAW_CALLBACK = PCallback;
+
+{ at close (WM menu delete/close etc.) }
+PFL_FORM_ATCLOSE = PCallback;
+
+{ deactivate/activate callback }
+PFL_FORM_ATDEACTIVATE = PCallback; 
+
+PFL_FORM_ATACTIVATE = PCallback;
+
+THandlePtr = Procedure ( p1 : PFL_Object; p2 : Longint; p3,p4 : TFL_COORD; p5 : Longint; p6 : pointer);
+PHandlePTR = ^THandlePTR;
+
+PFL_HANDLEPTR = PHandlePTR;
+
+{
+extern FL_OBJECT *FL_EVENT;
+}
+{** FORM ***}
+
+
+Tform = record
+    fdui : Pointer;
+    u_vdata : pointer;		{ for application         }
+    u_ldata : longint;
+    
+    thelabel : pchar;		{ window title            }
+    window : cardinal;	{ X resource ID for window }
+    x, y, w, h : TFL_COORD;	{ current geometry info   }
+    hotx, hoty : TFL_COORD;	{ hot-spot of the form    }
+
+    first,last,focusobj : pflobjs;
+
+    form_callback     : PFL_FORMCALLBACKPTR;
+    activate_callback : PFL_FORM_ATACTIVATE;
+    deactivate_callback: PFL_FORM_ATDEACTIVATE ;
+    form_cb_data, activate_data, deactivate_data : pointer;
+
+    key_callback, 
+    push_callback, 
+    crossing_callback,
+    motion_callback,
+    all_callback: PFL_RAW_CALLBACK ;
+
+    compress_mask : cardinal;
+    evmask : cardinal;
+
+    { WM_DELETE_WINDOW message handler }
+    close_callback : PFL_FORM_ATCLOSE ;
+    close_data : pointer;
+
+
+    flpixmap : pointer;		{ back buffer             }
+
+    icon_pixmap : cardinal;
+    icon_mask : cardinal;
+
+    { interaction and other flags }
+    vmode : Longint {was int};			{ current X visual class  }
+    deactivated : Longint {was int};		{ true if sensitive       }
+    use_pixmap : Longint {was int};		{ true if dbl buffering   }
+    frozen : Longint {was int};			{ true if sync change     }
+    visible : Longint {was int};		{ true if mapped          }
+    wm_border : Longint {was int};		{ window manager info     }
+    prop : cardinal;		{ other attributes        }
+    has_auto : Longint {was int};
+    top : Longint {was int};
+    sort_of_modal : Longint;
+    reserved : array[0..9] of Longint;
+end;
+TFL_FORM = Tform;
+PFL_FORM = ^TFL_FORM;
+
+{
+ * Async IO stuff
+ }
+
+const
+    FL_READ = 1;
+    FL_WRITE = 2;
+    FL_EXCEPT = 4;
+
+{ IO other than XEvent Q }
+Type
+
+TFL_IO_CALLBACK = Procedure (p1 :Longint {was int};p2 : pointer);
+PFL_IO_CALLBACK = ^TFL_IO_CALLBACK;
+{ function definitions }
+procedure fl_add_io_callback(p1 : Longint {was int} ; p2 : word; p3 : PFL_IO_CALLBACK; p4 : pointer);
+procedure fl_remove_io_callback(p1 : Longint {was int};p2 :  word; p3 : PFL_IO_CALLBACK);
+
+{ signals }
+type 
+
+TFL_SIGNAL_HANDLER = Procedure (p1 : Longint {was int}; p2 : pointer);
+PFL_SIGNAL_HANDLER = ^TFL_SIGNAL_HANDLER ;
+
+procedure fl_add_signal_callback(p1 : LongInt;p2 : PFL_SIGNAL_HANDLER;p3 : pointer);
+procedure fl_remove_signal_callback(p1 : Longint {was int});
+procedure fl_signal_caught(p1 :Longint {was int});
+procedure fl_app_signal_direct(p1 : Longint {was int});
+
+function fl_add_timeout (p1 : longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer) : longint;
+procedure fl_remove_timeout(p1 : Longint);
+
+{  Some utility stuff }
+type 
+
+TFL_VN_PAIR = record
+    val : Longint;
+    name : Pchar;
+end;
+
+PFL_VN_PAIR = ^TFL_VN_PAIR;
+
+function fl_get_vn_value (p1 : PFL_VN_PAIR; p2 : pchar) : Longint;
+function fl_get_vn_name (p1 : PFL_VN_PAIR; p2 : Longint {was int}) : Pchar;
+function fl_msleep (p1 : cardinal) : cardinal;
+
+{
+ *  Basic public routine prototypes
+ }
+
+procedure fl_library_version(p1,p2 : pointer );
+
+{* Generic routines that deal with FORMS *}
+
+function fl_bgn_form(P1 : Longint {was int}; P2,p3 : TFL_Coord) : PFL_Form;
+Procedure fl_end_form;
+function fl_do_forms : PFL_OBJECT ;
+function fl_check_forms : PFL_OBJECT;
+Function fl_do_only_forms : PFL_OBJECT;
+function fl_check_only_forms : PFL_OBJECT;
+procedure fl_freeze_form(P1 : PFL_FORM);
+
+procedure fl_set_focus_object( P1 : PFL_FORM;p2 : PFL_OBJECT);
+procedure fl_reset_focus_object( p1 : PFL_OBJECT);
+
+{
+#define fl_set_object_focus   fl_set_focus_object
+}
+Function fl_set_form_atclose(p1 : PFL_FORM; p2 : PFL_FORM_ATCLOSE; p3 : pointer) : PFL_FORM_ATCLOSE ;
+Function fl_set_atclose(p1 : PFL_FORM_ATCLOSE; p2:  pointer) : PFL_FORM_ATCLOSE ;
+
+Function fl_set_form_atactivate(p1 : PFL_FORM; P2 : PFL_FORM_ATACTIVATE; P3 : pointer) : PFL_FORM_ATACTIVATE ;
+Function fl_set_form_atdeactivate(p1 : PFL_FORM;p2 : PFL_FORM_ATDEACTIVATE;p3 : pointer) : PFL_FORM_ATDEACTIVATE ;
+
+Procedure fl_unfreeze_form (p1 : PFL_FORM);
+Procedure fl_deactivate_form(p1 : PFL_FORM);
+Procedure fl_activate_form(p1 : PFL_FORM);
+Procedure fl_deactivate_all_forms;
+Procedure fl_activate_all_forms;
+Procedure fl_freeze_all_forms;
+Procedure fl_unfreeze_all_forms;
+Procedure fl_scale_form(p1 : PFL_FORM;p2,p3 : double);
+Procedure fl_set_form_position(p1 : PFL_FORM; p2,p3 : TFL_Coord);
+Procedure fl_set_form_title(p1 : PFL_FORM; p2 : pchar);
+
+procedure fl_set_form_property(p1 : PFL_FORM; p2 : word);
+procedure fl_set_app_mainform( p1 : PFL_FORM);
+function fl_get_app_mainform : PFL_FORM;
+procedure fl_set_app_nomainform(P1 : Longint {was int});
+
+procedure fl_set_form_callback(p1 : PFL_FORM; P2 : PFL_FORMCALLBACKPTR; P3 : pointer);
+{
+#define  fl_set_form_call_back    fl_set_form_callback
+}
+
+procedure fl_set_form_size(p1 : PFL_FORM; p2,p3 : TFL_Coord);
+procedure fl_set_form_hotspot(p1 : PFL_FORM; p2,p3 : TFL_Coord);
+procedure fl_set_form_hotobject(p1 : PFL_FORM; p2 : PFL_OBJECT);
+procedure fl_set_form_minsize(p1 : PFL_FORM ; p2,p3 :TFL_Coord);
+procedure fl_set_form_maxsize(p1 : PFL_FORM; p2,p3 :TFL_Coord);
+procedure fl_set_form_event_cmask(p1 : PFL_FORM; p2 : cardinal);
+function fl_get_form_event_cmask(p1 : PFL_FORM) : cardinal;
+
+procedure fl_set_form_geometry(p1 : PFL_FORM; p2,p3,p4,p5 : TFL_Coord);
+
+{
+#define fl_set_initial_placement fl_set_form_geometry
+}
+
+function fl_show_form (p1 : PFL_FORM; p2,p3 : Longint {was int}; p4 : pchar) : Longint;
+procedure fl_hide_form(p1 : PFL_FORM);
+procedure fl_free_form(p1 : PFL_FORM);
+procedure fl_redraw_form(p1 : PFL_FORM);
+procedure fl_set_form_dblbuffer(p1 : PFL_FORM; p2 : Longint {was int});
+procedure fl_prepare_form_window(p1 : PFL_FORM; p2,p3 :  Longint {was int}; p4 : pchar);
+procedure fl_show_form_window(p1 : PFL_FORM);
+function fl_adjust_form_size(p1 : PFL_FORM) : double;
+function fl_form_is_visibe (p1 : PFL_FORM) : Longint;
+
+function  fl_register_raw_callback(p1 : PFL_FORM; p2 : cardinal; P3 : PFL_RAW_CALLBACK): PFL_RAW_CALLBACK;
+
+{
+#define fl_register_call_back fl_register_raw_callback
+}
+function fl_bgn_group : PFL_OBJECT;
+function fl_end_group : PFL_OBJECT;
+procedure fl_addto_group (p1 : PFL_OBJECT);
+
+{***** Routines that deal with FL_OBJECTS *******}
+
+procedure fl_set_object_boxtype(p1 : PFL_OBJECT; p2 : Longint {was int});
+procedure fl_set_object_bw(p1 : PFL_OBJECT; p2 : Longint {was int});
+procedure fl_set_object_resize(p1 : PFL_OBJECT; p2 : word);
+procedure fl_set_object_gravity(p1 : PFL_OBJECT; p2,p3 : word );
+procedure fl_set_object_lsize(p1 : PFL_OBJECT; p2 : Longint {was int});
+procedure fl_set_object_lstyle(p1 : PFL_OBJECT; p2 : Longint {was int});
+procedure fl_set_object_lcol(p1 : PFL_OBJECT; p2 : TFL_COLOR);
+procedure fl_set_object_return(p1 : PFL_OBJECT; p2 : Longint {was int});
+procedure fl_set_object_lalign(p1 : PFL_OBJECT; p2 : Longint {was int});	{ to be removed }
+procedure fl_set_object_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int});
+procedure fl_set_object_shortcutkey(p1 : PFL_OBJECT; p2 :  word);
+procedure fl_set_object_dblbuffer(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_object_color(p1 : PFL_OBJECT; p2 : TFL_COLOR;p3 : TFL_COLOR);
+procedure fl_set_object_label(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_set_object_position(p1 : PFL_OBJECT; p2,p3 :TFL_Coord);
+procedure fl_set_object_size(p1 : PFL_OBJECT; p2,p3 :TFL_Coord);
+procedure fl_set_object_automatic(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_draw_object_label(p1 : PFL_OBJECT); 
+procedure fl_draw_object_label_outside(p1 : PFL_OBJECT); 
+
+{
+#define  fl_set_object_dblclick(p1 : ob; p2 : timeout)  (p1 : ob)->click_timeout = (p1 : timeout); p3 :p2 : 
+}
+procedure fl_set_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 :TFL_Coord);
+
+
+procedure fl_fit_object_label(p1 : PFL_OBJECT; p2,p3 :TFL_Coord);
+
+{ no much get (p1 : yet ?) }
+
+procedure fl_get_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord );
+procedure fl_get_object_position(p1 : PFL_OBJECT; p2,p3 :PFL_COORD);
+
+{ this one takes into account the label }
+procedure fl_get_object_bbox (p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD);
+
+procedure fl_call_object_callback(p1 : PFL_OBJECT); 
+function fl_set_object_prehandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR) : PFL_HANDLEPTR ;
+function fl_set_object_posthandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR): PFL_HANDLEPTR ;
+function fl_set_object_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint) : PFL_CALLBACKPTR ;
+{
+#define fl_set_object_align   fl_set_object_lalign
+#define fl_set_call_back      fl_set_object_callback
+}
+procedure fl_redraw_object(p1 : PFL_OBJECT);
+procedure fl_scale_object(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_show_object(p1 : PFL_OBJECT); 
+procedure fl_hide_object(p1 : PFL_OBJECT);
+procedure fl_free_object(p1 : PFL_OBJECT);  
+procedure fl_delete_object(p1 : PFL_OBJECT);  
+procedure fl_trigger_object(p1 : PFL_OBJECT);  
+procedure fl_activate_object(p1 : PFL_OBJECT);  
+procedure fl_deactivate_object(p1 : PFL_OBJECT);
+
+Type TFL_ENUMERATEPTR = procedure (p : pchar); 
+     PFL_ENUMERATEPTR = ^TFL_ENUMERATEPTR;
+
+procedure fl_enumerate_fonts (p1 : PFL_ENUMERATEPTR; p2 :  longint);
+
+function  fl_set_font_name(p1 : Longint {was int}; p2 :  pchar) : longint;
+procedure fl_set_font(p1 : Longint {was int}; p2 :  Longint {was int});
+
+{ routines that facilitate free object }
+
+function fl_get_char_height(p1,p2 : Longint {was int}; p3,p4 : pointer) : Longint {was int};
+function fl_get_char_width(p1,p2 :  Longint {was int}) : Longint;
+function fl_get_string_height(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int};
+function fl_get_string_width(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int};
+function fl_get_string_widthTAB(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int};
+function fl_get_string_dimension(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int};
+{
+#define fl_get_string_size  fl_get_string_dimension
+}
+procedure fl_get_align_xy(p1,p2,p3,p4,p5,p6,p7,p8,p9 : Longint {was int}; p10,p11 : pointer);
+
+procedure fl_drw_text(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar);
+
+procedure fl_drw_text_beside(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar);
+{
+#define fl_draw_text(p1 : a; p2 : x;y;w;h;c;st;sz;s)    \
+      (p1 : (p1 : (p1 : a) & FL_ALIGN_INSIDE) ? fl_drw_text:fl_drw_text_beside)\
+      (p1 : a; p2 : x;y;w;h;c;st;sz;s)
+}
+
+procedure fl_drw_text_cursor(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7,p8: Longint {was int}; p9 : Pchar; p10,p11: Longint {was int});
+
+procedure fl_drw_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7 : Longint {was int});
+
+type
+
+FL_DRAWPTR = Procedure (p1,p2,p3,p4 : TFL_Coord; p5 : Longint {was int};p6: TFL_COLOR);
+PFL_DRAWPTR = ^FL_DRAWPTR;
+
+function fl_add_symbol(p1 : pchar; p2 : PFL_DRAWPTR; p3 :Longint {was int}) : Longint {was int};
+function fl_draw_symbol(p1 : pchar; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR) : Longint {was int};
+
+const
+  FL_SLIDER_NONE = 0;
+  FL_SLIDER_BOX = 1;
+  FL_SLIDER_KNOB = 2;
+  FL_SLIDER_UP = 4;
+  FL_SLIDER_DOWN = 8;
+  FL_SLIDER_ALL = 15;
+  
+procedure fl_drw_slider (p1 :longint; p2,p3,P4,p5 : TFL_COORD; p6,p7 : TFL_COLOR;
+                         p8 : Longint; p9,p10 : double; P11 : pchar; p12,p13,p14 : Longint);
+                         
+
+function fl_mapcolor(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}) : cardinal;
+function fl_mapcolorname(p1 : TFL_COLOR; p2 :  pchar) : longint;
+{
+#define fl_mapcolor_name  fl_mapcolorname
+}
+function fl_getmcolor(p1 : TFL_COLOR; p2,p3,p4 : pointer) : cardinal;
+procedure fl_free_colors(p1 : PFL_COLOR; p2 :  Longint {was int});
+procedure fl_free_pixels(p1 : pcardinal; p2 :  Longint {was int});
+procedure fl_set_color_leak(p1 : Longint {was int}); 
+function fl_get_pixel(p1 : TFL_COLOR): cardinal; 
+{
+#define fl_get_flcolor   fl_get_pixel
+}
+procedure fl_get_icm_color(p1 : TFL_COLOR; p2,p3,p4 : pointer);
+procedure fl_set_icm_color(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int});
+
+procedure fl_color(p1 : TFL_COLOR);
+procedure fl_bk_color(p1 : TFL_COLOR); 
+procedure fl_textcolor(p1 : TFL_COLOR); 
+procedure fl_bk_textcolor(p1 : TFL_COLOR); 
+procedure fl_set_gamma(p1,p2,p3 :double);
+
+procedure fl_show_errors(p1 : Longint {was int}); 
+
+{ Some macros }
+{
+#define FL_max(p1 : a; p2 : b)      (p1 :  (p1 : a) > (p1 : b) ? (p1 : a):(p1 : b) )
+#define FL_min(p1 : a; p2 : b)      (p1 :  (p1 : a) < (p1 : b) ? (p1 : a):(p1 : b) )
+#define FL_abs(p1 : a)        (p1 :  (p1 : a) > 0 ? (p1 : a):(p1 : -(p1 : a)))
+#define FL_nint(p1 : a)       (p1 :  (p1 : a) > 0 ? (p1 : (p1 : a) + 0.5):(p1 : (p1 : a) - 0.5))
+}
+type TFL_FSCB = function (p1 : pchar; p2 : pointer) : Longint;
+PFL_FSCB = ^TFL_FSCB;
+
+{ utilities for new objects }
+function fl_current_form : PFL_FORM;
+procedure fl_add_object(p1 : PFL_FORM; p2 : PFL_OBJECT);
+procedure fl_addto_form(p1 : PFL_FORM); 
+function fl_make_object(p1 : Longint {was int}; p2,p3,p4,p5,p6 : TFL_Coord; p7 : pchar; P8 : PFL_HANDLEPTR) : PFL_OBJECT;
+
+procedure fl_set_coordunit(p1 : Longint {was int});
+function fl_get_coordunit : Longint {was int}; 
+procedure fl_set_border_width(p1 : Longint {was int}); 
+function fl_get_border_width : Longint {was int};  
+procedure fl_flip_yorigin; 
+
+procedure fl_ringbell ( p1 : longint);
+procedure fl_gettime (p1,p2 : Plongint);
+function fl_mouse_button : longint;
+
+
+{ this gives more flexibility for future changes }
+
+{
+#define fl_free       free
+#define fl_malloc     malloc
+#define fl_calloc     calloc
+#define fl_realloc    realloc
+}
+{
+ * $Id$
+ *
+ *  X Window dependent stuff
+ *
+ }
+
+{
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/keysym.h>
+#include <X11/Xresource.h>
+}
+Const
+ FL_MINDEPTH = 1;
+
+
+{ FL_xxx does not do anything anymore; but kept for compatibility }
+    FL_illegalVisual = -1;
+    FL_StaticGray = StaticGray;
+    FL_GrayScale = GrayScale;
+    FL_StaticColor = StaticColor;
+    FL_PseudoColor = PseudoColor;
+    FL_TrueColor = TrueColor;
+    FL_DirectColor = DirectColor;
+    FL_DefaultVisual = 10;	{ special request }
+
+    FL_North = NorthGravity;
+    FL_NorthEast = NorthEastGravity;
+    FL_NorthWest = NorthWestGravity;
+    FL_South = SouthGravity;
+    FL_SouthEast = SouthEastGravity;
+    FL_SouthWest = SouthWestGravity;
+    FL_East = EastGravity;
+    FL_West = WestGravity;
+    FL_NoGravity = ForgetGravity;
+    FL_ForgetGravity = ForgetGravity;
+
+{
+#define FL_is_gray(p1 : v)  (p1 : v==GrayScale || v==StaticGray)
+#define FL_is_rgb(p1 : v)   (p1 : v==TrueColor || v==DirectColor)
+}
+
+{
+ * Internal colormap size. Not really very meaningful as fl_mapcolor
+ * and company allow color "leakage"; that is; although only FL_MAX_COLS
+ * are kept in the internal colormap; the server might have substantially
+ * more colors allocated
+ }
+
+FL_MAX_COLS =  1024;
+
+{
+ * FL graphics state information. Some are redundant.
+ }
+
+type
+TFL_STATE = record
+    xvinfo : PXVisualInfo;
+    cur_fnt : PXFontStruct;	{ current font in default GC       }
+    colormap : TColormap ;		{ colormap valid for xvinfo        }
+    trailblazer : TWindow ;		{ a valid window for xvinfo        }
+    vclass, depth,		{ visual class and color depth     }
+    rgb_bits,		{ primary color resolution         }
+    dithered,		{ true if dithered color           }
+    pcm : Longint;			{ true if colormap is not shared   }
+    gc : Array [0..16] of TGC;			{ working GC                       }
+    textgc : array [0..16] of TGC;		{ GC used exclusively for text     }
+    dimmedGC : TGC;		{ A GC having a checkboard stipple }
+    lut :array [0..FL_MAX_COLS] of cardinal;	{ secondary lookup table         }
+    rshift : word; 
+    rmask, rbits : Longint;
+    gshift : word;
+    gmask,gbits : Longint {was int};
+    bshift : word; 
+    bmask, bbits : Longint {was int};
+end;
+PFL_State = ^TFL_State;
+
+{
+#define FL_State FL_STATE	{ for compatibility }
+}
+
+{**** Global variables *****}
+
+Var
+
+fl_display : PDisplay;
+fl_screen : Longint;
+fl_root : TWindow;		{ root window                }
+fl_vroot : TWindow;		{ virtual root window        }
+fl_scrh : Longint; 
+fl_scrw : Longint;	{ screen dimension in pixels }
+fl_vmode : Longint {was int};
+
+{ current version only runs in single visual mode }
+{
+#define  fl_get_vclass(p1 : )        fl_vmode
+#define  fl_get_form_vclass(p1 : a)  fl_vmode
+}
+{
+fl_state[] : PFL_State ;
+fl_ul_magic_char : pchar;
+}
+
+function fl_mode_capable(p1,p2 : longint ) : longint;
+
+{
+#define fl_default_win(p1 : )       (p1 : fl_state[fl_vmode].trailblazer)
+#define fl_default_window(p1 : )    (p1 : fl_state[fl_vmode].trailblazer)
+}
+{
+ * All pixmaps used by FL_OBJECT to simulate double buffering have the
+ * following entries in the structure. TFL_Coord x;y are used to shift
+ * the origin of the drawing routines
+ }
+
+
+{ fonts related }
+Const
+FL_MAX_FONTSIZES=10;
+
+type
+ FL_FONT = record
+    fs : array[0..FL_MAX_FONTSIZES] of PXFontStruct;	{ cached fontstruct }
+    size : array [0..FL_MAX_FONTSIZES] of byte;	{ cached sizes      }
+    nsize : byte;		{ cached so far     }
+    fname : Array[1..80] of char;		{ without size info     }
+end;
+
+{
+ * Some basic drawing routines
+ }
+
+type TFL_POINT = TXPoint;
+     PFL_Point = ^TFL_Point;
+     TFL_RECT = TXRECTANGLE;
+     PFL_RECT = ^TFL_RECT;     
+     
+{ rectangles }
+procedure fl_rectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR);
+procedure fl_rectbound(p1,p2,p3,p4 : TFL_Coord;p5 : TFL_COLOR);
+
+procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR);
+procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR);
+
+
+{ rectangle with rounded-corners }
+procedure fl_roundrectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 :TFL_COLOR);
+
+{
+#define fl_roundrectf(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 1; p2 : x;y;w;h;c)
+#define fl_roundrect(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 0; p2 : x;y;w;h;c)
+}
+{ general polygon and polylines }
+procedure fl_polygon(p1 : Longint {was int}; p2 : PFL_POINT; p3 : Longint {was int}; p4 : TFL_COLOR);
+
+{
+#define fl_polyf(p1 : p; p2 : n;c)  fl_polygon(p1 : 1; p2 : p; p3 : n; p4 : c)
+#define fl_polyl(p1 : p; p2 : n;c)  fl_polygon(p1 : 0; p2 : p; p3 : n; p4 : c)
+#define fl_polybound(p1 : p; p2 : n;c) do {fl_polyf(p1 : p; p2 : n;c);fl_polyl(p1 : p; p2 : n;FL_BLACK);}while(p1 : 0)
+}
+
+procedure fl_lines(p1 : TFL_POINT; p2 : Longint {was int}; p3 :TFL_COLOR);
+procedure fl_line(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR);
+{
+#define fl_simple_line fl_line
+}
+procedure fl_dashedlinestyle(p1 : pchar; p2 :  Longint {was int});
+procedure fl_drawmode(p1 : Longint {was int}); 
+
+{
+#define fl_diagline(p1 : x; p2 : y;w;h;c) fl_line(p1 : x; p2 : y;(p1 : x)+(p1 : w)-1; p2 : (p1 : y)+(p1 : h)-1; p2 : c)
+}
+{ line attributes }
+procedure fl_linewidth(p1 : Longint {was int}); 
+procedure fl_linestyle(p1 : Longint {was int}); 
+
+function fl_get_linewidth : longint;
+function fl_get_linestyle : longint;
+
+
+{* ellipses *}
+procedure fl_oval(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR);
+procedure fl_ovalbound(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR);
+procedure fl_ovalarc(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6,p7 : Longint; p8 : TFL_COLOR);
+
+{
+#define fl_ovalf(p1 : x; p2 : y;w;h;c)     fl_oval(p1 : 1; p2 : x;y;w;h;c)
+#define fl_ovall(p1 : x; p2 : y;w;h;c)     fl_oval(p1 : 0; p2 : x;y;w;h;c)
+#define fl_oval_bound           fl_ovalbound
+
+#define fl_circf(p1 : x; p2 : y;r;col)  fl_oval(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col)
+#define fl_circ(p1 : x; p2 : y;r;col)   fl_oval(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col)
+}
+
+{ arcs }
+procedure fl_pieslice(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7 :Longint {was int}; p8 : TFL_COLOR);
+{
+#define fl_arcf(p1 : x; p2 : y;r;a1;a2;c)  fl_pieslice(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : \
+                                (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 :  a1;a2;c)
+
+#define fl_arc(p1 : x; p2 : y;r;a1;a2;c)  fl_pieslice(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 :  \
+                               (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 :  a1;a2;c)
+}
+{ misc. stuff }
+procedure fl_add_vertex(p1,p2 :  TFL_Coord);
+procedure fl_add_float_vertex(p1,p2 :  real);
+procedure fl_reset_vertex; 
+procedure fl_endline;
+procedure fl_endpolygon;
+procedure fl_endclosedline; 
+
+{
+#define fl_bgnline       fl_reset_vertex
+#define fl_bgnclosedline fl_reset_vertex
+#define fl_bgnpolygon    fl_reset_vertex
+#define fl_v2s(p1 : v)        fl_add_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2i(p1 : v)        fl_add_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2f(p1 : v)        fl_add_float_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2d(p1 : v)        fl_add_float_vertex(p1 : v[0]; p2 :  v[1])
+}
+
+{ high level drawing routines }
+procedure fl_drw_frame(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR; p7 : Longint {was int});
+procedure fl_drw_checkbox(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR;p7 : Longint {was int});
+
+{
+ * Interfaces
+ }
+function fl_get_fontstruct(p1,p2 :  Longint {was int}) : PXFontStruct;
+{
+#define fl_get_font_struct fl_get_fontstruct
+#define fl_get_fntstruct fl_get_font_struct
+}
+
+function fl_get_mouse(p1,p2 : PFL_COORD; p3 : pword) : TWindow;
+procedure fl_set_mouse(p1,p2 :  TFL_Coord);
+function fl_get_win_mouse(p1 : TWindow; p2,p3 : PFL_COORD; p4 : pword) : TWindow;
+function fl_get_form_mouse(p1 : PFL_FORM; p2,p3 : PFL_COORD; p4 : pWord) : TWindow;
+function fl_win_to_form(p1 : TWindow) : PFL_form; 
+procedure fl_set_form_icon(p1 : PFL_FORM; p2 : TPixmap; p3 :TPixmap);
+
+{
+#define fl_raise_form(p1 : f) if(p1 : f->window) XRaiseWindow(p1 : fl_display; p2 : f->window)
+#define fl_lower_form(p1 : f) if(p1 : f->window) XLowerWindow(p1 : fl_display; p2 : f->window)
+}
+{
+#define fl_set_foreground(p1 : gc; p2 : c) XSetForeground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c))
+#define fl_set_background(p1 : gc; p2 : c) XSetBackground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c))
+}
+{ General windowing support }
+
+function fl_wincreate(p1 : pchar) : TWindow; 
+function fl_winshow(p1 : TWindow) : TWindow; 
+function fl_winopen(p1 : pchar) : TWindow; 
+procedure fl_winhide(p1 : TWindow); 
+procedure fl_winclose(p1 : TWindow);  
+procedure fl_winset(p1 : TWindow); 
+function fl_winget : Twindow; 
+
+procedure fl_winresize(p1 : TWindow; p2,p3 :TFL_Coord);
+procedure fl_winmove(p1 : TWindow; p2,p3 :TFL_Coord);
+procedure fl_winreshape(p1 : TWindow; p2,p3,p4,p5 : TFL_Coord);
+procedure fl_winicon(p1 : TWindow; p2 : TPixmap; p3 :TPixmap);
+procedure fl_winbackground(p1 : TWindow; p2 :  cardinal);
+procedure fl_winstepunit(p1 : TWindow; p2,p3 :TFL_Coord);
+procedure fl_winisvalid(p1 : TWindow); 
+procedure fl_wintitle(p1 : TWindow; p2 :  pchar);
+procedure fl_winposition(p1,p2 :  TFL_Coord);
+
+{
+#define fl_pref_winposition fl_winposition
+#define fl_win_background     fl_winbackground
+#define fl_set_winstepunit    fl_winstepunit
+}
+
+
+procedure fl_winminsize(p1 : TWindow; p2,p3 :TFL_Coord);
+procedure fl_winmaxsize(p1 : TWindow; p2,p3 :TFL_Coord);
+procedure fl_winaspect(p1 : TWindow; p2,p3 :TFL_Coord);
+procedure fl_reset_winconstraints(p1 : TWindow); 
+
+procedure fl_winsize(p1,p2 :  TFL_Coord);
+procedure fl_initial_winsize(p1,p2 :  TFL_Coord);
+{
+#define fl_pref_winsize  fl_winsize
+}
+procedure fl_initial_winstate(p1 : Longint {was int}); 
+
+function fl_create_colormap(p1 : PXVisualInfo; p2 :  Longint {was int}) : TColormap;
+
+
+procedure fl_wingeometry(p1,p2,p3,p4 : TFL_Coord);
+{
+#define fl_pref_wingeometry  fl_wingeometry
+}
+procedure fl_initial_wingeometry(p1,p2,p3,p4 : TFL_Coord);
+
+{
+procedure fl_noborder;
+procedure fl_transient;
+}
+
+procedure fl_get_winsize(p1 : TWindow; p2,p3 :PFL_COORD);
+procedure fl_get_winorigin(p1 : TWindow; p2,p3 :PFL_COORD);
+procedure fl_get_wingeometry(p1 : TWindow; p2,p3,p4,p5 : PFL_COORD);
+
+{ for compatibility }
+{
+#define fl_get_win_size          fl_get_winsize
+#define fl_get_win_origin        fl_get_winorigin
+#define fl_get_win_geometry      fl_get_wingeometry
+#define fl_initial_winposition   fl_pref_winposition
+
+#define fl_get_display(p1 : )           fl_display
+#define FL_FormDisplay(p1 : form)       fl_display
+#define FL_ObjectDisplay(p1 : object)   fl_display
+}
+
+{ the window an object belongints }
+
+Function FL_ObjWin ( P : PFL_Object) : TWindow;
+
+{
+#define FL_OBJECT_WID  FL_ObjWin
+}
+
+{  all registerable events; including Client Message }
+const FL_ALL_EVENT = (KeyPressMask or KeyReleaseMask or
+                      ButtonPressMask or ButtonReleaseMask or
+                      EnterWindowMask or LeaveWindowMask or
+                      ButtonMotionMask or PointerMotionMask);
+
+{ Timer related }
+
+ FL_TIMER_EVENT = $40000000;
+
+
+function fl_XNextEvent(p1 : PXEvent) : Longint; 
+function fl_XPeekEvent(p1 : PXEvent) : Longint; 
+function fl_XEventsQueued(p1 : Longint {was int}) : Longint; 
+procedure fl_XPutBackEvent(p1 : PXEvent);  
+function fl_last_event : PXEvent ; 
+
+type
+TFL_APPEVENT_CB = procedure (p1 : PXEvent; p2 : pointer);
+PFL_APPEVENT_CB = ^TFL_APPEVENT_CB;
+
+function fl_set_event_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ;
+function fl_set_idle_callback(p1 : PFL_APPEVENT_CB; p2 :  pointer) : PFL_APPEVENT_CB ;
+function fl_addto_selected_xevent(p1 : TWindow; p2 :  longint) : Cardinal;
+function fl_remove_selected_xevent(p1 : TWindow; p2 :  longint) : cardinal;
+{
+#define fl_add_selected_xevent  fl_addto_selected_xevent
+}
+{
+ * Group some WM stuff into a structure for easy maintainance
+ }
+const
+    FL_WM_SHIFT = 1;
+    FL_WM_NORMAL = 2;
+
+type TFL_WM_STUFF = record
+    rpx, rpy,		{ reparenting offset for full border }
+    trpx, trpy,		{ reparenting offset for transient   }
+    bw,			{ additional border                  }
+    rep_method : Longint;		{ 1 for shifting; 2 for normal       }
+    pos_request : word;	{ USPOSITION or PPOSITION            }
+end;
+PFL_WM_STUFF = ^TFL_WM_STUFF;
+
+
+function fl_add_event_callback(p1 : TWindow; p2 :  Longint {was int}; p3 : PFL_APPEVENT_CB; p4 : pointer) : PFL_APPEVENT_CB ;
+
+procedure fl_remove_event_callback(p1 : TWindow; p2 :  Longint {was int});
+procedure fl_activate_event_callbacks(p1 : TWindow); 
+
+function fl_print_xevent_name(p1 : pchar; p2 : PXEvent) : PXEvent;
+
+{
+#define metakey_down(p1 : mask)     (p1 : (p1 : mask) & Mod1Mask)
+#define shiftkey_down(p1 : mask)    (p1 : (p1 : mask) & ShiftMask)
+#define controlkey_down(p1 : mask)  (p1 : (p1 : mask) & ControlMask)
+#define button_down(p1 : mask)      (p1 : (p1 : (p1 : mask) & Button1Mask) || \
+                               (p1 : (p1 : mask) & Button2Mask) || \
+			       (p1 : (p1 : mask) & Button3Mask))
+#define fl_keypressed          fl_keysym_pressed
+}
+{***************** Resources **************}
+
+
+{ bool is Longint {was int}. FL_NONE is defined elsewhere }
+const
+    FL_SHORT  = 10; 
+    FL_BOOL   = 11; 
+    FL_INT    = 12;
+    FL_LONG   = 13; 
+    FL_FLOAT  = 14; 
+    FL_STRING = 15;
+    
+Type  TFL_RTYPE = Longint;
+
+TFL_RESOURCE = record
+    res_name,			{ resource name                        }
+    res_class : Pchar;		{ resource class                       }
+    rtype : TFL_RTYPE;		{ FL_INT; FL_FLOAT; FL_BOOL;FL_STRING  }
+    thevar : pointer;		{ address for the variable             }
+    defval : pchar;		{ default setting in string form       }
+    bytes : Longint {was int}		{ used only for strings                }
+end;
+PFL_RESOURCE = ^TFL_RESOURCE;
+
+Type
+ TFL_CMD_OPT = TXrmOptionDescRec;
+ PFL_CMD_OPT = ^TFL_CMD_OPT;
+ 
+function fl_initialize(p1 : pointer; p2 : ppchar; p3 :pchar; p4 : PFL_CMD_OPT; p5 : Longint {was int}) : Pdisplay;
+procedure fl_finish;  
+
+{ addfromhere }
+
+function fl_get_resource(p1 : pchar; p2 :  pchar; p3 : TFL_RTYPE; p4 : pchar; p5 : pointer; p6 :Longint {was int}) : pchar;
+procedure fl_set_resource(p1 : pchar; p2 :  pchar);
+
+procedure fl_get_app_resources(p1 : PFL_resource; p2 : Longint {was int});
+procedure fl_set_graphics_mode(p1 : Longint {was int}; p2 :  Longint {was int});
+procedure fl_set_visualID(p1 : longint);  
+function fl_keysym_pressed(p1 : TKeySym) : Longint; 
+
+{
+#define buttonLabelSize  buttonFontSize
+#define sliderLabelSize  sliderFontSize
+#define inputLabelSize   inputFontSize
+}
+{ All Form control variables. Named closely as its resource name }
+Type TFL_IOPT =  record
+    rgamma, ggamma, bgamma : Real;
+    debug, sync,
+    depth, vclass, doubleBuffer,
+    ulPropWidth, ulThickness,	{ underline stuff       }
+    buttonFontSize,
+    sliderFontSize,
+    inputFontSize,
+    browserFontSize,
+    menuFontSize,
+    choiceFontSize,
+    labelFontSize,		{ all other labels fonts }
+    pupFontSize, pupFontStyle,	{ font for pop-up menus  }
+    privateColormap,
+    sharedColormap,
+    standardColormap,
+    leftScrollBar,
+    backingStore,
+    coordUnit,
+    borderWidth,
+    safe,
+    xFirst : Longint {was int};
+    rgbfile : pchar;		{ where RGB file is     }
+    vname : array [0..24] of char;
+end;
+PFL_IOPT = ^TFL_IOPT; 
+
+
+Const
+
+{ program default masks }
+
+    FL_PDDepth = 1 shl 1 ; 
+    FL_PDClass = 1 shl 2 ; 
+    FL_PDDouble = 1 shl 3 ; 
+    FL_PDSync = 1 shl 4 ; 
+    FL_PDPrivateMap = 1 shl 5 ; 
+    FL_PDLeftScrollBar = 1 shl 6 ; 
+    FL_PDPupFontSize = 1 shl 7 ; 
+    FL_PDButtonFontSize = 1 shl 8 ; 
+    FL_PDInputFontSize = 1 shl 9 ; 
+    FL_PDSliderFontSize = 1 shl 10 ; 
+    FL_PDVisual = 1 shl 11 ; 
+    FL_PDULThickness = 1 shl 12 ; 
+    FL_PDULPropWidth = 1 shl 13 ; 
+    FL_PDBS = 1 shl 14 ; 
+    FL_PDCoordUnit = 1 shl 15 ; 
+    FL_PDDebug = 1 shl 16 ; 
+    FL_PDSharedMap = 1 shl 17 ; 
+    FL_PDStandardMap = 1 shl 18 ; 
+    FL_PDBorderWidth = 1 shl 19 ; 
+    FL_PDSafe = 1 shl 20 ; 
+    FL_PDMenuFontSize = 1 shl 21 ; 
+    FL_PDBrowserFontSize = 1 shl 22 ; 
+    FL_PDChoiceFontSize = 1 shl 23 ; 
+    FL_PDLabelFontSize = 1 shl 24;
+    FL_PDButtonLabelSize = FL_PDButtonFontSize;
+    FL_PDSliderLabelSize = FL_PDSliderFontSize;
+    FL_PDInputLabelSize  = FL_PDInputFontSize;
+    FL_PDButtonLabel  = FL_PDButtonLabelSize;
+ 
+procedure fl_set_defaults(p1 : cardinal; p2 :  PFL_IOPT);
+procedure fl_set_tabstop(p1 : pchar); 
+procedure fl_get_defaults(p1 : PFL_IOPT); 
+function fl_get_visual_depth : Longint; 
+function fl_vclass_name(p1 : Longint {was int}) : pchar; 
+function fl_vclass_val(p1 : pchar) : Longint {was int}; 
+procedure fl_set_ul_property(p1 : Longint {was int}; p2 :  Longint {was int});
+procedure fl_set_clipping(p1 : TFL_Coord; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord);
+procedure fl_set_gc_clipping(p1 : TGC; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord);
+procedure fl_unset_gc_clipping(p1 : TGC); 
+procedure fl_set_clippings(p1 : PFL_RECT; p2 :  Longint {was int});
+procedure fl_unset_clipping; 
+
+function fl_textgc : TGC;
+{
+#define fl_set_text_clipping(p1 : a; p2 : b;c;d)   fl_set_gc_clipping(p1 : fl_textgc; p2 : a;b;c;d)
+#define fl_unset_text_clipping(p1 : ) fl_unset_gc_clipping(p1 : fl_textgc)
+}
+
+Const
+ FL_NORMAL_BITMAP = 0;
+
+{**** Defaults ****}
+FL_BITMAP_BOXTYPE	=FL_NO_BOX;
+FL_BITMAP_COL1		=FL_COL1;	{ background of bitmap }
+FL_BITMAP_COL2		=FL_COL1;	{ not used currently   }
+FL_BITMAP_LCOL		=FL_LCOL;	{ foreground of bitmap }
+FL_BITMAP_ALIGN		=FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+{FL_BITMAP_MAXSIZE	= 128*128;}
+
+{**** Routines ****}
+function fl_create_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+function fl_add_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+procedure fl_set_bitmap_data(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : pointer);
+procedure fl_set_bitmap_file(p1 : PFL_OBJECT; p2 :  pchar);
+function fl_read_bitmapfile(p1 : TWindow; p2 :  pchar; p3,p4 : pword; p5,p6 : pointer) : TPixmap ;
+
+{
+#define fl_create_from_bitmapdata(p1 : win; p2 : data; p3 : w; p4 : h)\
+                   XCreateBitmapFromData(p1 : fl_get_display(p1 : ); p2 : win; p3 :\
+                   (p1 : char *)data; p2 : w; p3 :h)
+
+{ for compatibility }
+#define fl_set_bitmap_datafile fl_set_bitmap_file
+}
+
+{ PIXMAP stuff }
+
+Const
+FL_NORMAL_PIXMAP   = 0;
+
+function fl_create_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6  :pchar) : PFL_OBJECT;
+function fl_add_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+procedure fl_set_pixmap_data(p1 : PFL_OBJECT; p2 :  ppchar);
+procedure fl_set_pixmap_file(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_set_pixmap_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});
+procedure fl_set_pixmap_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);
+procedure fl_set_pixmap_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_free_pixmap_pixmap(p1 : PFL_OBJECT); 
+function fl_get_pixmap_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;
+
+function fl_read_pixmapfile(p1 : TWindow; p2 :  pchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR)  : TPixmap ;
+function fl_create_from_pixmapdata(p1 : TWindow; p2 :  ppchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ;
+{
+#define fl_free_pixmap(p1 : id)  if(p1 : id != None) XFreePixmap(p1 : fl_display; p2 :  id);
+}
+
+function fl_create_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+function fl_add_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+Type TFL_BROWSER_TYPE = Longint;
+
+Const
+    FL_NORMAL_BROWSER = 0;
+    FL_SELECT_BROWSER = 1;
+    FL_HOLD_BROWSER   = 2;
+    FL_MULTI_BROWSER  = 3;
+
+{**** Defaults ****}
+
+ FL_BROWSER_BOXTYPE	= FL_DOWN_BOX;
+ FL_BROWSER_COL1	= FL_COL1;
+ FL_BROWSER_COL2	= FL_YELLOW;
+ FL_BROWSER_LCOL	= FL_LCOL;
+ FL_BROWSER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_BROWSER_SLCOL	= FL_COL1;
+ FL_BROWSER_LINELENGTH	= 1024;
+ FL_BROWSER_FONTSIZE    = FL_SMALL_FONT;
+
+{ as of .86
+ FL_SCROLLBAR_OFF = 0;
+ FL_SCROLLBAR_ON = 1;
+ FL_SCROLLBAR_ALWAYS_ON = 2;
+}
+
+{**** Routines ****}
+
+function fl_create_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_add_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6:  pchar) : PFL_OBJECT;
+procedure fl_clear_browser(p1 : PFL_OBJECT);
+procedure fl_add_browser_line(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_addto_browser(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_addto_browserchars(p1 : PFL_OBJECT; p2 :  pchar);
+
+procedure fl_insert_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);
+procedure fl_delete_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_replace_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);
+function fl_get_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar;
+function fl_load_browser(p1 : PFL_OBJECT; p2 :  pchar ) : Longint ;
+
+procedure fl_select_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_deselect_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_deselect_browser(p1 : PFL_OBJECT); 
+function fl_isselected_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ;
+
+function fl_get_browser_topline(p1 : PFL_OBJECT ) : Longint ; 
+function fl_get_browser(p1 : PFL_OBJECT ) : Longint ;
+function fl_get_browser_maxline(p1 : PFL_OBJECT ) : Longint ; 
+function fl_get_browser_screenlines(p1 : PFL_OBJECT ) : Longint ;
+
+procedure fl_set_browser_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_browser_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_browser_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_browser_specialkey(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_browser_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_browser_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_browser_leftslider(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_browser_line_selectable(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_get_browser_dimension(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD);
+procedure fl_set_browser_dblclick_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint);
+{
+#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
+}
+procedure fl_set_browser_xoffset(p1 : PFL_OBJECT; p2 :  TFL_Coord);
+procedure fl_set_browser_scrollbarsize (p1 : PFL_OBJECT;p2,p3 : longint);
+
+type
+ TFL_BUTTON_TYPE= Longint;
+
+Const
+    FL_NORMAL_BUTTON	= 0;
+    FL_PUSH_BUTTON	= 1;
+    FL_RADIO_BUTTON	= 2;
+    FL_HIDDEN_BUTTON	= 3;
+    FL_TOUCH_BUTTON	= 4;
+    FL_INOUT_BUTTON	= 5;
+    FL_RETURN_BUTTON	= 6;
+    FL_HIDDEN_RET_BUTTON= 7;
+    FL_MENU_BUTTON	= 8;
+
+type TFL_BUTTON_SPEC = record
+    pixmap,mask :  TPixmap;
+    bits_w, bits_h : Cardinal;
+    val,			{ whether on }
+    mousebut,		{ mouse button that caused the push     }
+    timdel,			{ time since last touch (p1 : TOUCH buttons) }
+    event : Longint;			{ what event triggers redraw            }
+    cspecl : longint;		{ reserved for class specfic stuff      }
+    cspecv : pointer;		{ misc. things                          }
+    filename : pchar;
+end;
+TFL_BUTTON_STRUCT = TFL_BUTTON_SPEC;
+PFL_BUTTON_STRUCT = ^TFL_BUTTON_STRUCT;
+
+TFL_DrawButton = procedure  (p1 : PFL_OBJECT); 
+PFL_DrawButton  = ^TFL_DrawButton;
+TFL_CleanupButton = procedure (p1 : PFL_BUTTON_STRUCT); 
+PFL_CleanupButton= ^TFL_CleanupButton;
+
+Const
+FL_BUTTON_BOXTYPE	= FL_UP_BOX;
+FL_BUTTON_COL1		= FL_COL1;
+FL_BUTTON_COL2		= FL_COL1;
+FL_BUTTON_LCOL		= FL_LCOL;
+FL_BUTTON_ALIGN		= FL_ALIGN_CENTER;
+
+FL_BUTTON_MCOL1		= FL_MCOL;
+FL_BUTTON_MCOL2		= FL_MCOL;
+
+FL_BUTTON_BW		= FL_BOUND_WIDTH;
+
+{
+ *  light button defaults
+ }
+FL_LIGHTBUTTON_BOXTYPE	= FL_UP_BOX;
+FL_LIGHTBUTTON_COL1	= FL_COL1;
+FL_LIGHTBUTTON_COL2	= FL_YELLOW;
+FL_LIGHTBUTTON_LCOL	= FL_LCOL;
+FL_LIGHTBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+FL_LIGHTBUTTON_TOPCOL	= FL_COL1;
+FL_LIGHTBUTTON_MCOL	= FL_MCOL;
+FL_LIGHTBUTTON_MINSIZE	= 12;
+
+{* round button defaults **}
+
+  FL_ROUNDBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_ROUNDBUTTON_COL1	= FL_MCOL;
+  FL_ROUNDBUTTON_COL2	= FL_YELLOW;
+  FL_ROUNDBUTTON_LCOL	= FL_LCOL;
+  FL_ROUNDBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_ROUNDBUTTON_TOPCOL	= FL_COL1;
+  FL_ROUNDBUTTON_MCOL	= FL_MCOL;
+
+{* round3d button defaults **}
+
+  FL_ROUND3DBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_ROUND3DBUTTON3D_COL1	= FL_MCOL;
+  FL_ROUND3DBUTTON_COL2	= FL_YELLOW;
+  FL_ROUND3DBUTTON_LCOL	= FL_LCOL;
+  FL_ROUND3DBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_ROUND3DBUTTON_TOPCOL	= FL_COL1;
+  FL_ROUND3DBUTTON_MCOL	= FL_MCOL;
+
+{* check button defaults **}
+
+  FL_CHECKBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_CHECKBUTTON_COL1	= FL_COL1;
+  FL_CHECKBUTTON_COL2	= FL_YELLOW;
+  FL_CHECKBUTTON_LCOL	= FL_LCOL;
+  FL_CHECKBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_CHECKBUTTON_TOPCOL	= FL_COL1;
+  FL_CHECKBUTTON_MCOL	= FL_MCOL;
+
+{* bitmap button defaults *}
+  FL_BITMAPBUTTON_BOXTYPE	= FL_UP_BOX;
+  FL_BITMAPBUTTON_COL1	= FL_COL1;	{ bitmap background  }
+  FL_BITMAPBUTTON_COL2	= FL_BLUE;	{ "focus" color       }
+  FL_BITMAPBUTTON_LCOL	= FL_LCOL;	{ bitmap foreground   }
+  FL_BITMAPBUTTON_ALIGN	= FL_ALIGN_BOTTOM;
+
+{* bitmap button defaults *}
+  FL_PIXMAPBUTTON_BOXTYPE	= FL_UP_BOX;
+  FL_PIXMAPBUTTON_COL1	= FL_COL1;	{ box col    }
+  FL_PIXMAPBUTTON_COL2	= FL_YELLOW;	{ bound rect }
+  FL_PIXMAPBUTTON_LCOL	= FL_LCOL;
+  FL_PIXMAPBUTTON_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Routines ****}
+
+function fl_create_button(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_create_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_create_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_create_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_create_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_create_bitmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_create_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;
+
+function fl_add_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;
+function fl_add_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;
+
+function fl_add_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;
+function fl_add_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;
+function fl_add_button(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;
+
+
+procedure fl_set_bitmapbutton_data (p1 : PFL_OBJECT; p2,p3 : Longint {was int};   p4 : pchar);
+procedure fl_set_bitmapbutton_file (p1 : PFL_OBJECT; p2: pchar);
+function  fl_add_bitmapbutton (p1 : longint; p2,p3,p4,p5: TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+{
+#define fl_set_bitmapbutton_datafile  fl_set_bitmapbutton_file
+}
+
+function fl_add_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 :  ppchar);
+procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});
+procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);
+procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT); 
+function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;
+
+function fl_get_button(p1 : PFL_OBJECT ) : Longint ;  
+procedure fl_set_button(p1 : PFL_OBJECT; p2 :  Longint {was int});
+function fl_get_button_numb(p1 : PFL_OBJECT ) : Longint ;
+
+procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int});
+
+function fl_create_generic_button(p1,p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord;p7 : pchar) : PFL_OBJECT;
+procedure fl_add_button_class(p1 : Longint {was int}; p2 : PFL_DRAWBUTTON; p3 : PFL_CLEANUPBUTTON);
+
+
+{
+ * $Id$
+ *
+ * Header for FL_CANVAS
+ *
+ }
+
+
+
+type TFL_CANVAS_TYPE = Longint;
+
+const 
+    FL_NORMAL_CANVAS = 0;
+    FL_SCROLLED_CANVAS = 1;
+
+Type
+TFL_HANDLE_CANVAS = Procedure (PFL_OBJECT; TWindow; Longint {was int}; Longint {was int};
+				 PXEvent; pointer);
+PFL_HANDLE_CANVAS = ^TFL_HANDLE_CANVAS;
+
+TFL_MODIFY_CANVAS_PROP = Procedure (p1 : PFL_OBJECT);
+PFL_MODIFY_CANVAS_PROP = ^TFL_MODIFY_CANVAS_PROP;
+
+{******************* Default ********************}
+
+Const   FL_CANVAS_BOXTYPE  =  FL_NO_BOX;
+        FL_CANVAS_ALIGN    =  FL_ALIGN_TOP;
+
+
+{*********** Interfaces    ***********************}
+
+
+function fl_create_generic_canvas(p1 : Longint; p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord; p7 : pchar) : PFL_OBJECT;
+
+function fl_add_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT;
+
+function fl_create_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+
+function fl_create_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;
+
+function fl_add_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+
+
+procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap);
+procedure fl_set_canvas_visual(p1 : PFL_OBJECT; p2 :  PVisual);
+procedure fl_set_canvas_depth(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_canvas_attributes(p1 : PFL_OBJECT; p2 : word;  p3 : PXSetWindowAttributes);
+
+function fl_add_canvas_handler(p1 : PFL_OBJECT; p2 :  Longint {was int}; p3 : PFL_HANDLE_CANVAS; p4 : pointer) : PFL_HANDLE_CANVAS ;
+
+function fl_get_canvas_id(p1 : PFL_OBJECT ) : TWindow ;
+function fl_get_canvas_colormap(p1 : PFL_OBJECT ) : TColormap; 
+function fl_get_canvas_depth(p1 : PFL_OBJECT ) : Longint ; 
+procedure fl_remove_canvas_handler(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : PFL_HANDLE_CANVAS);
+procedure fl_hide_canvas(p1 : PFL_OBJECT); 	{ internal use only }
+procedure fl_canvas_yield_to_shortcut(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_modify_canvas_prop(p1 : PFL_OBJECT; 
+				  P2 : PFL_MODIFY_CANVAS_PROP;
+				  p3 : PFL_MODIFY_CANVAS_PROP;
+				  p4 : PFL_MODIFY_CANVAS_PROP);
+
+{ OpenGL canvases }
+function fl_create_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+function fl_add_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+
+procedure fl_set_glcanvas_defaults(p1 : pointer); 
+procedure fl_get_glcanvas_defaults(p1 : pointer); 
+procedure fl_set_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);
+procedure fl_get_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);
+procedure fl_set_glcanvas_direct(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_activate_glcanvas(p1 : PFL_OBJECT);
+
+function fl_get_glcanvas_xvisualinfo(p1 : PFL_OBJECT ) : PXVisualInfo; 
+
+{
+# if defined(p1 : __GLX_glx_h__) || defined(p1 : GLX_H)
+function fl_get_glcanvas_context(p1 : PFL_OBJECT ob ) : GLXContext ; 
+function fl_glwincreate(p1 : *; p2 : GLXContext *; p3 : Longint {was int}; p4 : Longint {was int} ) : TWindow ;
+function fl_glwinopen(p1 : *; p2 : GLXContext *; p3 : Longint {was int}; p4 : Longint {was int} ) : TWindow ;
+}
+
+
+
+{
+ * $Id$
+ *
+ * Object Class: Chart
+ *
+ }
+
+
+const
+    FL_BAR_CHART	= 0;
+    FL_HORBAR_CHART	= 1;
+    FL_LINE_CHART	= 2;
+    FL_FILL_CHART	= 3;
+    FL_SPIKE_CHART	= 4;
+    FL_PIE_CHART	= 5;
+    FL_SPECIALPIE_CHART	= 6;
+     
+Type  TFL_CHART_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const  
+  FL_CHART_BOXTYPE	= FL_BORDER_BOX;
+  FL_CHART_COL1		= FL_COL1;
+  FL_CHART_LCOL		= FL_LCOL;
+  FL_CHART_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+  FL_CHART_MAX		= 512;
+
+{**** Routines ****}
+
+function fl_create_chart(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 :  pchar) : PFL_OBJECT;
+function fl_add_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+
+procedure fl_clear_chart(p1 : PFL_OBJECT);
+procedure fl_add_chart_value(p1 : PFL_OBJECT; p2 : double; p3 : pchar; p4 : Longint {was int});
+procedure fl_insert_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int});
+procedure fl_replace_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int});
+procedure fl_set_chart_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_set_chart_maxnumb(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_chart_autosize(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_chart_lstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_chart_lsize(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_chart_lcolor(p1 : PFL_OBJECT; p2 :  TFL_COLOR);
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+const
+  FL_NORMAL_CHOICE	= 0;
+  FL_NORMAL_CHOICE2     = 1;
+  FL_DROPLIST_CHOICE	= 2;
+
+Type
+ TFL_CHOICE_TYPE = Longint;
+
+Const
+  FL_SIMPLE_CHOICE  	= FL_NORMAL_CHOICE;
+
+{**** Defaults ****}
+
+ FL_CHOICE_BOXTYPE	= FL_ROUNDED_BOX;
+ FL_CHOICE_COL1		= FL_COL1;
+ FL_CHOICE_COL2		= FL_LCOL;
+ FL_CHOICE_LCOL		= FL_LCOL;
+ FL_CHOICE_ALIGN	= FL_ALIGN_LEFT;
+
+{**** Others   ****}
+
+ FL_CHOICE_MCOL		= FL_MCOL;
+ FL_CHOICE_MAXITEMS	= 63;
+
+{**** Routines ****}
+
+function fl_create_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) :  PFL_OBJECT;
+
+function fl_add_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar ) : PFL_OBJECT;
+procedure fl_clear_choice(p1 : PFL_OBJECT);  
+procedure fl_addto_choice(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_replace_choice(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);
+procedure fl_delete_choice(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_choice(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_choice_text(p1 : PFL_OBJECT; p2 :  pchar);
+function fl_get_choice(p1 : PFL_OBJECT ) : Longint ;
+function fl_get_choice_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar;
+function fl_get_choice_maxitems(p1 : PFL_OBJECT ) : Longint ; 
+function fl_get_choice_text(p1 : PFL_OBJECT ) : pchar;
+procedure fl_set_choice_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_choice_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_choice_align(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_choice_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : word);
+procedure fl_set_choice_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+Const
+    FL_ANALOG_CLOCK	= 0;
+    FL_DIGITAL_CLOCK	= 1;
+
+ FL_CLOCK_BOXTYPE   = FL_UP_BOX;
+ FL_CLOCK_COL1      = FL_INACTIVE_COL;
+ FL_CLOCK_COL2      = FL_BOTTOM_BCOL;
+ FL_CLOCK_LCOL      = FL_BLACK;
+ FL_CLOCK_ALIGN     = FL_ALIGN_BOTTOM;
+
+ FL_CLOCK_TOPCOL    = FL_COL1;
+
+function fl_create_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+
+function fl_add_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+procedure fl_get_clock(p1 : PFL_OBJECT; p2,p3,p4 : pointer);
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+Const
+    FL_NORMAL_COUNTER = 0;
+    FL_SIMPLE_COUNTER = 1;
+    
+type TFL_COUNTER_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+ FL_COUNTER_BOXTYPE	= FL_UP_BOX;
+ FL_COUNTER_COL1	= FL_COL1;
+ FL_COUNTER_COL2	= FL_BLUE;	{ ct label     }
+ FL_COUNTER_LCOL	= FL_LCOL;	{ ct reporting }
+ FL_COUNTER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_COUNTER_BW		= FL_BOUND_WIDTH-1;
+
+{**** Routines ****}
+
+function fl_create_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+function fl_add_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT;
+
+procedure fl_set_counter_value(p1 : PFL_OBJECT; p2 :  double);
+procedure fl_set_counter_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_set_counter_step(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_set_counter_precision(p1 : PFL_OBJECT; p2 :  Longint {was int});
+function fl_get_counter_value(p1 : PFL_OBJECT ) : double ; 
+procedure fl_get_counter_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble);
+procedure fl_set_counter_return(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_counter_filter(p1 : PFL_OBJECT;p2 : pointer); {!!!!}
+{
+				  pchar(p1 : *)(p1 : PFL_OBJECT; p2 : double; p3 :Longint {was int}));
+}
+
+{
+ * $Id$
+ *
+ * Cursor defs and prototypes
+ *
+ }
+
+
+{$i cursorfont.inc}
+
+const FL_DEFAULT_CURSOR = -1;
+      FL_INVISIBLE_CURSOR = -2;
+
+procedure fl_set_cursor(p1 : TWindow; p2 :  Longint {was int});
+procedure fl_set_cursor_color(p1 : longint; p2 : TFL_COLOR; p3 :TFL_COLOR);
+function fl_create_bitmap_cursor(p1 : pchar; p2 :  pchar; p3,p4,p5,p6 : Longint {was int}) : TCursor;
+function fl_get_cursor_byname(p1 : longint ) : TCursor; 
+{
+#define fl_reset_cursor(p1 : win) fl_set_cursor(p1 : win; p2 :  -1);
+}
+
+
+
+{
+ * $Id$
+ }
+
+
+Const
+    FL_NORMAL_DIAL = 0;
+    FL_LINE_DIAL   = 1;
+    FL_FILL_DIAL   = 2;
+    
+    FL_DIAL_CW  = 0;
+    FL_DIAL_CCW = 1;
+
+Type
+  TFL_DIAL_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+
+ FL_DIAL_BOXTYPE	= FL_FLAT_BOX;
+ FL_DIAL_COL1		= FL_COL1;
+ FL_DIAL_COL2		= FL_RIGHT_BCOL;
+ FL_DIAL_LCOL		= FL_LCOL;
+ FL_DIAL_ALIGN		= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_DIAL_TOPCOL		= FL_COL1;
+
+{**** Routines ****}
+
+function fl_create_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 :pchar) : PFL_OBJECT;
+function fl_add_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT;
+
+procedure fl_set_dial_value(p1 : PFL_OBJECT; p2 :  double);
+function fl_get_dial_value(p1 : PFL_OBJECT ) : double ; 
+procedure fl_set_dial_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_get_dial_bounds(p1 : PFL_OBJECT; p2 : pdouble; p3 :pdouble);
+
+procedure fl_set_dial_step(p1 : PFL_OBJECT; p2 :  double);
+procedure fl_set_dial_return(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_dial_angles(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_set_dial_cross(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_dial_direction (p1 : PFL_OBJECT; p2 : Longint);
+
+{
+ * $Id$
+ *
+ *  Convenience functions to read a directory
+ }
+
+
+{  File types }
+
+Const
+    FT_FILE  = 0; 
+    FT_DIR   = 1; 
+    FT_LINK  = 2; 
+    FT_SOCK  = 3;
+    FT_FIFO  = 4; 
+    FT_BLK   = 5;
+    FT_CHR   = 6; 
+    FT_OTHER = 7;
+
+type TFL_Dirlist = record
+    name : pchar;			{ entry name }
+    ftype : longint;			{ FILE_TYPE  }
+    dl_mtime : longint;
+    dl_size : cardinal;
+    filler : array[0..2] of longint;
+    end;
+    PFL_Dirlist = ^TFL_Dirlist;
+
+    
+TFL_DIRLIST_FILTER = procedure (p1 : pchar; p2 :  Longint {was int});
+PFL_DIRLIST_FILTER = ^TFL_DIRLIST_FILTER;
+
+Const
+  FL_ALPHASORT  = 1;
+  FL_RALPHASORT = 2;
+  FL_MTIMESORT  = 3;
+  FL_RMTIMESORT = 4;
+  FL_SIZESORT  = 5;
+  FL_RSIZESORT = 6;
+  
+
+{ read dir with pattern filtering. All dirs read might be cached.
+ * must not change dirlist in anyway.
+ }
+function fl_get_dirlist(p1 : pchar; p2 : pchar;	p3 : pointer;p4	:longint) : PFL_Dirlist;	{ rescan }
+
+
+function fl_set_dirlist_filter (p1 : PFL_DIRLIST_FILTER ) : PFL_DIRLIST_FILTER ;
+procedure fl_set_dirlist_sort ( p1 : longint);
+
+procedure fl_free_dirlist(p1 : PFL_Dirlist); 
+
+{ Free all directory caches }
+procedure fl_free_all_dirlist; 
+
+function fl_is_valid_dir(p1 : pchar ) : Longint;
+function fl_fmtime(p1 : pchar ) : cardinal ; 
+function fl_fix_dirname(p1 : pchar) : pchar; 
+
+
+{
+ * $Id$
+ *
+ }
+
+
+{ types of frames }
+Const
+    FL_NO_FRAME		= 0;
+    FL_UP_FRAME		= 1;
+    FL_DOWN_FRAME	= 2;
+    FL_BORDER_FRAME	= 3;
+    FL_SHADOW_FRAME	= 4;
+    FL_ENGRAVED_FRAME	= 5;
+    FL_ROUNDED_FRAME	= 6;
+    FL_EMBOSSED_FRAME	= 7;
+    FL_OVAL_FRAME	= 8;
+
+    FL_FRAME_COL1 = FL_BLACK;
+    FL_FRAME_COL2 = FL_COL1;
+    FL_FRAME_LCOL = FL_BLACK;
+
+function fl_create_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+function fl_add_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+function fl_create_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+function fl_add_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+
+{
+ * $Id$
+ *
+ *  Object Class: Free
+ }
+
+Const
+    FL_NORMAL_FREE	= 0;
+    FL_INACTIVE_FREE	= 1;
+    FL_INPUT_FREE	= 2;
+    FL_CONTINUOUS_FREE	= 3;
+    FL_ALL_FREE		= 4;
+Type
+   TFL_FREE_TYPE = Longint;
+   PFL_FREE_TYPE = ^TFL_FREE_TYPE;
+
+Const FL_SLEEPING_FREE =  FL_INACTIVE_FREE;
+
+
+function fl_create_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar; p7 : PFL_HANDLEPTR) : PFL_OBJECT;
+function fl_add_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar; P7 : PFL_HANDLEPTR) : PFL_OBJECT;
+
+{
+ * $Id$
+ }
+
+Const
+ FLAlertDismissLabel = 'flAlert.dismiss.label';
+ FLQuestionYesLabel  = 'flQuestion.yes.label';
+ FLQuestionNoLabel   = 'flQuestion.no.label';
+ FLOKLabel           = 'flInput.ok.label';
+ FLInputClearLabel   = 'flInput.clear.label';
+ FLInputCancelLabel   = 'flInput.cancel.label';
+
+{ from goodies.c }
+procedure fl_set_goodies_font(p1 : LongInt; p2 :  Longint {was int});
+procedure fl_show_message(p1 : pchar; p2 : pchar; p3 :pchar);
+procedure fl_show_messages(p1 : pchar);
+procedure fl_show_alert(p1 : pchar; p2 : pchar; p3 : pchar; p4 : Longint {was int});
+function fl_show_question(p1 : pchar; p2 : longint) : Longint ;
+function fl_show_input(p1 : pchar; p2 :  pchar ) : pchar;
+function fl_show_simple_input(p1 : pchar; p2 :  pchar ) : pchar;
+function fl_show_colormap(p1 : Longint ) : Longint ;  
+function fl_show_choice(p1,p2,p3 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;
+function fl_show_choices(p1 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;
+procedure fl_set_choices_shortcut(p1,p2,p3 :pchar);
+
+procedure fl_show_oneliner(p1 : pchar; p2 : TFL_Coord; p3 :TFL_Coord);
+procedure fl_hide_oneliner; 
+procedure fl_set_oneliner_font(p1 : LongInt; p2 :  Longint {was int});
+procedure fl_set_oneliner_color(p1 : TFL_COLOR; p2 :  TFL_COLOR);
+
+type TFD_CMDLOG = record
+    form : PFL_FORM;
+    browser,close_browser,clear_browser : PFL_OBJECT;
+end;
+PFD_CMDLOG = ^TFD_CMDLOG;
+
+function fl_exe_command(p1 : pchar; p2 : Longint) : Longint;
+function fl_end_command(p1 : longint) : Longint;
+Function fl_end_all_command : Longint;
+procedure fl_show_command_log(p1 : Longint);
+procedure fl_hide_command_log;
+procedure fl_clear_command_log;
+procedure fl_addto_command_log(p1 : pchar);
+procedure fl_set_command_log_position(p1,p2 :longint);
+Function fl_get_command_log_fdstruct : PFD_CMDLOG;
+
+{ aliases }
+{
+#define fl_open_command    fl_exe_command
+#define fl_close_command   fl_end_command
+}
+
+{****** from file selector ****************}
+
+Const  FL_MAX_FSELECTOR =  6;
+
+type TFD_FSELECTOR = record
+    fselect : PFL_FORM;
+    browser, theinput, prompt, resbutt,
+    patbutt,dirbutt, cancel, ready : PFL_OBJECT;
+    dirlabel,patlabel : PFL_OBJECT;
+    appbut : array[0..2] of PFL_OBJECT;
+end;
+
+PFD_FSELECTOR = ^TFD_FSELECTOR;
+
+function fl_use_fselector(p1 : LongInt ) : LongInt; 
+function fl_show_fselector(p1,p2,p3,p4 :  pchar) : pchar;
+
+procedure fl_set_fselector_fontsize (p1 : Longint);
+procedure fl_set_fselector_fontstyle (p1 : longint);
+procedure fl_set_fselector_placement(p1 : LongInt); 
+procedure fl_set_fselector_border(p1 : LongInt); 
+
+{
+#define fl_set_fselector_transient(p1 : b)   \
+                     fl_set_fselector_border(p1 : (p1 : b)?FL_TRANSIENT:FL_FULLBORDER)
+}
+
+Type TFSelector_Callback = Function (P1 : Pchar; P2 : Pointer) : Longint; 
+     PFSelector_Callback = ^TFSelector_Callback;
+     TFL_Procedure = Procedure;
+     PFL_Procedure = ^TFL_Procedure;
+
+procedure fl_set_fselector_callback( p1 : PFSelector_Callback; p2 : pointer);
+function fl_get_filename : pchar;
+function fl_get_directory : pchar; 
+function fl_get_pattern : pchar;  
+function fl_set_directory (p1 : pchar ) : LongInt; 
+procedure fl_set_pattern (p1 : pchar);
+procedure fl_refresh_fselector; 
+procedure fl_add_fselector_appbutton(p1 : pchar; p2 : PFL_Procedure; p3 : pointer);
+procedure fl_remove_fselector_appbutton(p1 : pchar);
+procedure fl_disable_fselector_cache(p1 : LongInt); 
+procedure fl_invalidate_fselector_cache; 
+function fl_get_fselector_form : PFL_FORM; 
+function fl_get_fselector_fdstruct  : PFD_FSELECTOR; 
+procedure fl_hide_fselector; 
+
+
+procedure fl_set_fselector_filetype_marker(p1,p2,p3,p4,p5 : Longint);
+
+{
+#define fl_show_file_selector     fl_show_fselector
+#define fl_set_fselector_cb       fl_set_fselector_callback
+#define fl_set_fselector_title(p1 : s) fl_set_form_title(p1 : fl_get_fselector_form(p1 : ); p2 : s)
+}
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+{**** Types    ****}
+
+Const 
+    FL_NORMAL_INPUT	= 0;
+    FL_FLOAT_INPUT	= 1;
+    FL_INT_INPUT	= 2;
+    FL_DATE_INPUT	= 3;
+    FL_MULTILINE_INPUT	= 4;
+    FL_HIDDEN_INPUT	= 5;
+    FL_SECRET_INPUT	= 6;
+    
+    FL_INPUT_MMDD       = 0;
+    FL_INPUT_DDMM	= 1;
+    
+Type TFL_INPUT_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const
+   FL_INPUT_BOXTYPE		= FL_DOWN_BOX;
+   FL_INPUT_COL1		= FL_COL1;
+   FL_INPUT_COL2		= FL_MCOL;
+   FL_INPUT_LCOL		= FL_LCOL;
+   FL_INPUT_ALIGN		= FL_ALIGN_LEFT;
+
+{**** Others   ****}
+
+   FL_INPUT_TCOL		= FL_LCOL;
+   FL_INPUT_CCOL		= FL_BLUE;
+
+   cFL_RINGBELL             = (1 shl 4);
+
+{**** Routines ****}
+
+function fl_create_input(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT;
+
+function fl_add_input(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT;
+
+procedure fl_set_input(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_set_input_color(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_set_input_return(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_scroll(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_cursorpos(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_set_input_selected(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_set_input_maxchars(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_format(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});
+procedure fl_set_input_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_xoffset(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_input_scrollbarsize(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});
+
+function fl_get_input(p1 : PFL_OBJECT ) : pchar;  
+function fl_get_input_cursorpos(p1 : PFL_OBJECT; p2,p3 : Pointer ) : LongInt;
+function fl_get_input_topline(p1 : PFL_OBJECT;p2,p3 : PLongint) : Longint;
+function fl_get_input_screenlines(p1 : PFL_OBJECT) : Longint;
+function fl_get_input_numberoflines(p1 : PFL_OBJECT) : Longint;
+procedure fl_get_input_format(p1 : PFL_OBJECT;p2,p3 : PLongint);
+
+
+
+type
+ TFL_INPUTVALIDATOR = Procedure (p1 : PFL_OBJECT; p2,p3 : pchar; p4 : Longint {was int});
+ PFL_INPUTVALIDATOR= ^TFL_INPUTVALIDATOR;
+
+function fl_set_input_filter(p1 : PFL_OBJECT; p2 :  PFL_INPUTVALIDATOR ) : PFL_INPUTVALIDATOR ;
+
+{
+#define fl_set_input_shortcut fl_set_object_shortcut
+#define ringbell(p1 : )  XBell(p1 : fl_display; p2 :  0)
+}
+
+type TFL_EditKeymap = record
+    { basic editing }
+    del_prev_char : Longint;		{ delete previous char    }
+    del_next_char : Longint;		{ delete next char        }
+    del_prev_word : Longint;		{ delete previous word    }
+    del_next_word : Longint;		{ delete next word        }
+
+    { movement }
+    moveto_prev_line : Longint;	{ one line  up             }
+    moveto_next_line : Longint;	{ one line down            }
+    moveto_prev_char : Longint;	{ one char left            }
+    moveto_next_char : Longint;	{ one char right           }
+    moveto_prev_word : Longint;	{ one word left            }
+    moveto_next_word : Longint;	{ one word right           }
+    moveto_prev_page : Longint;	{ one page up              }
+    moveto_next_page : Longint;	{ one page down            }
+    moveto_bol : Longint;		{ move to begining of line }
+    moveto_eol : Longint;		{ move to end of line      }
+    moveto_bof : Longint;		{ move to begin of file    }
+    moveto_eof : Longint;		{ move to end of file      }
+
+    { misc. stuff }
+    transpose : Longint;		{ switch two char positions }
+    paste : Longint;			{ paste the edit buffer    }
+    backspace : Longint;		{ another  del_prev_char   }
+    del_to_bol : Longint;		{ cut to begining of line  }
+    del_to_eol : Longint;		{ cut to end of line       }
+    clear_field : Longint;		{ delete everything        }
+    del_to_eos : Longint;		{ not implemented          }
+    reserverd : array[0..3] of Longint;		{ fillter                  }
+end;
+PFL_EditKeymap = ^TFL_EditKeymap;
+
+procedure fl_set_input_editkeymap(PFL_EditKeymap);
+
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+{***********   Object Class: Menu         ***********}
+
+Const
+    FL_TOUCH_MENU	= 0;
+    FL_PUSH_MENU	= 1;
+    FL_PULLDOWN_MENU	= 2;
+    
+Type TFL_MENU_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const
+  FL_MENU_BOXTYPE	= FL_BORDER_BOX;
+  FL_MENU_COL1		= FL_COL1;
+  FL_MENU_COL2		= FL_MCOL;
+  FL_MENU_LCOL		= FL_LCOL;
+  FL_MENU_ALIGN		= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+  FL_MENU_MAXITEMS	= 128;
+  FL_MENU_MAXSTR	= 64;
+
+{**** Routines ****}
+
+function fl_create_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT;
+
+function fl_add_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT;
+
+procedure fl_clear_menu(p1 : PFL_OBJECT); 
+procedure fl_set_menu(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_addto_menu(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_replace_menu_item(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);
+procedure fl_delete_menu_item(p1 : PFL_OBJECT; p2 :  Longint {was int});
+
+procedure fl_set_menu_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);
+procedure fl_set_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Cardinal);
+procedure fl_show_menu_symbol(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_menu_popup(p1 : PFL_OBJECT; p2 :  Longint {was int});
+
+function fl_get_menu(p1 : PFL_OBJECT ) : Longint ; 
+function fl_get_menu_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar;
+function fl_get_menu_maxitems(p1 : PFL_OBJECT ) : Longint ; 
+function fl_get_menu_item_mode(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Cardinal ;
+function fl_get_menu_text(p1 : PFL_OBJECT ) : pchar;
+
+
+
+{
+ *  $Id$
+ *
+ }
+{
+ * $Id$
+ *
+ *  Prototypes for pop-up menus
+ }
+
+
+Const
+ FL_MAXPUPI   = 64;	{ max item each pup        }
+ FL_PUP_PADH  =  4;	{ space between each items }
+
+type
+ TFL_PUP_CB = Procedure  (p1 : Longint);  	{ call back prototype  }
+ PFL_PUP_CB = ^TFL_PUP_CB;
+
+function fl_newpup(p1 : TWindow ) : LongInt; 
+
+function fl_defpup(p1 : TWindow; p2 :  pchar) : LongInt;
+function fl_addtopup(p1 : longint; p2 :  pchar) : LongInt;
+
+function fl_setpup_mode(p1 : Longint; p2 : Longint {was int}; p3 : Cardinal) : Longint;
+procedure fl_freepup(p1 : Longint); 
+function fl_dopup(p1 : Longint ) : LongInt; 
+
+procedure fl_setpup_shortcut(p1 : Longint; p2 : Longint {was int}; p3 :pchar);
+procedure fl_setpup_position(p1 : Longint; p2 :  Longint {was int});
+procedure fl_setpup_selection(p1 : Longint; p2 :  Longint {was int});
+function fl_setpup_fontsize(p1 : LongInt) : Longint; 
+function fl_setpup_fontstyle(p1 : LongInt) : Longint;  
+procedure fl_setpup_shadow(p1 : LongInt; p2 :  Longint {was LongInt});
+procedure fl_setpup_softedge(p1 : LongInt; p2 :  Longint {was int});
+procedure fl_setpup_color(p1 : TFL_COLOR; p2 :  TFL_COLOR);
+procedure fl_setpup_checkcolor(p1 : TFL_COLOR); 
+procedure fl_setpup_title(p1 : LongInt; p2 :  pchar);
+procedure fl_setpup_bw(p1 : LongInt; p2 :  Longint {was int});
+procedure fl_setpup_pad(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int});
+function fl_setpup_cursor(p1 : LongInt; p2 :  Longint {was int} ) : TCursor ;
+function fl_setpup_default_cursor(p1 : LongInt ) : TCursor ; 
+function fl_setpup_maxpup(p1 : LongInt ) : LongInt; 
+function fl_getpup_mode(p1 : LongInt; p2 :  Longint {was int} ) : Cardinal;
+function fl_getpup_text(p1 : LongInt; p2 :  Longint {was int} ) : pchar;
+procedure fl_showpup(p1 : LongInt); 
+procedure fl_hidepup(p1 : LongInt);
+
+{
+#define fl_setpup_hotkey    fl_setpup_shortcut
+}
+
+function fl_setpup_itemcb(p1 : LongInt; p2 : Longint {was int}; p3 :PFL_PUP_CB ) : PFL_PUP_CB ;
+function fl_setpup_menucb(p1 : LongInt; p2 :  PFL_PUP_CB ) : PFL_PUP_CB ;
+procedure fl_setpup_submenu(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int});
+
+{
+#define fl_setpup    fl_setpup_mode
+}
+
+
+
+{
+ * $Id$
+ *
+ }
+
+Const
+ FL_NORMAL_POSITIONER	= 0;
+
+{**** Defaults ****}
+
+ FL_POSITIONER_BOXTYPE	= FL_DOWN_BOX;
+ FL_POSITIONER_COL1	= FL_COL1;
+ FL_POSITIONER_COL2	= FL_RED;
+ FL_POSITIONER_LCOL	= FL_LCOL;
+ FL_POSITIONER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+
+{**** Routines ****}
+
+function fl_create_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+function fl_add_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+
+procedure fl_set_positioner_xvalue(p1 : PFL_OBJECT; p2 :  double);
+function fl_get_positioner_xvalue(p1 : PFL_OBJECT ) : double ;
+procedure fl_set_positioner_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_get_positioner_xbounds(p1 : PFL_OBJECT; p2 : pdouble ; p3 : pdouble);
+procedure fl_set_positioner_yvalue(p1 : PFL_OBJECT; p2 :  double);
+function fl_get_positioner_yvalue(p1 : PFL_OBJECT ) : double ;
+procedure fl_set_positioner_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_get_positioner_ybounds(p1 : PFL_OBJECT; p2 ,p3 :pdouble);
+procedure fl_set_positioner_xstep(p1 : PFL_OBJECT; p2 :  double);
+procedure fl_set_positioner_ystep(p1 : PFL_OBJECT; p2 :  double);
+procedure fl_set_positioner_return(p1 : PFL_OBJECT; p2 :  Longint {was int});
+
+
+{
+ * $Id$
+ *
+ * Object Class: Slider
+ *
+ }
+
+
+Const
+    FL_VERT_SLIDER	= 0;
+    FL_HOR_SLIDER	= 1;
+    FL_VERT_FILL_SLIDER	= 2;
+    FL_HOR_FILL_SLIDER	= 3;
+    FL_VERT_NICE_SLIDER	= 4;
+    FL_HOR_NICE_SLIDER	= 5;
+    FL_HOR_BROWSER_SLIDER = 6;
+    FL_VERT_BROWSER_SLIDER = 7;
+    FL_HOR_BROWSER_SLIDER2	= 8;	{ for Longint {was int}ernal use only }
+    FL_VERT_BROWSER_SLIDER2	= 9;	{ for Longint {was int}ernal use only }
+
+Type
+ TFL_SLIDER_TYPE = Longint;
+ PFL_SLIDER_TYPE = ^TFL_SLIDER_TYPE; 
+
+
+{**** Defaults ****}
+Const
+  FL_SLIDER_BW1         = FL_BOUND_WIDTH;
+  FL_SLIDER_BW2         = FL_BOUND_WIDTH-1;
+
+  FL_SLIDER_BOXTYPE	= FL_DOWN_BOX;
+  FL_SLIDER_COL1	= FL_COL1;
+  FL_SLIDER_COL2	= FL_COL1;
+  FL_SLIDER_LCOL	= FL_LCOL;
+  FL_SLIDER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+  FL_SLIDER_FINE		= 0.05;
+  FL_SLIDER_WIDTH		= 0.10;
+
+
+{**** Routines ****}
+
+function fl_create_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT;
+function fl_add_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT;
+
+function fl_create_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar): PFL_OBJECT;
+function fl_add_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;P6: pchar) : PFL_OBJECT;
+
+procedure fl_set_slider_value(p1 : PFL_OBJECT; p2 :  double);
+function fl_get_slider_value(p1 : PFL_OBJECT ) : double ; 
+procedure fl_set_slider_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_get_slider_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble);
+
+procedure fl_set_slider_return(p1 : PFL_OBJECT; p2 :  Longint {was int});
+
+procedure fl_set_slider_step(p1 : PFL_OBJECT; p2 :  double);
+procedure fl_set_slider_increment(p1 : PFL_OBJECT; p2,p3 :  double);
+procedure fl_set_slider_size(p1 : PFL_OBJECT; p2 :  double);
+procedure fl_set_slider_precision(p1 : PFL_OBJECT; p2 :  Longint {was int});
+
+Type
+  TFL_SLIDER_FILTER = procedure (p1 : PFL_OBJECT; p2 : double; p3 :Longint {was int});
+  PTFL_SLIDER_FILTER= ^TFL_SLIDER_FILTER  ;
+  
+procedure fl_set_slider_filter(p1 : PFL_OBJECT; p2 : PTFL_SLIDER_FILTER);
+
+
+{
+ * $Id$
+ *
+ }
+
+Const
+    FL_NORMAL_TEXT = 0;
+
+ FL_TEXT_BOXTYPE    = FL_FLAT_BOX;
+ FL_TEXT_COL1       = FL_COL1;
+ FL_TEXT_COL2       = FL_MCOL;
+ FL_TEXT_LCOL       = FL_LCOL;
+ FL_TEXT_ALIGN      = FL_ALIGN_LEFT;
+
+function fl_create_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;
+function fl_add_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT;
+
+
+
+{
+ * $Id$
+ *
+ *  Object Class: Timer
+ *
+ }
+
+
+Const 
+    FL_NORMAL_TIMER = 0;
+    FL_VALUE_TIMER  = 1;
+    FL_HIDDEN_TIMER = 2;
+    
+Type TFL_TIMER_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+
+FL_TIMER_BOXTYPE	= FL_DOWN_BOX;
+FL_TIMER_COL1		= FL_COL1;
+FL_TIMER_COL2		= FL_RED;
+FL_TIMER_LCOL		= FL_LCOL;
+FL_TIMER_ALIGN		= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+  FL_TIMER_BLINKRATE	= 0.2;
+  
+Type TFL_TIMER_FILTER = Function (P1 : PFL_OBJECT;p2 : double) : pchar;
+     PFL_TIMER_FILTER = ^TFL_TIMER_FILTER;  
+
+{**** Routines ****}
+
+function fl_create_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;
+
+function fl_add_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT;
+
+procedure fl_set_timer(p1 : PFL_OBJECT; p2 :  double);
+function fl_get_timer(p1 : PFL_OBJECT ) : double ; 
+procedure fl_set_timer_countup(p1 : PFL_OBJECT; p2 :  Longint);
+function fl_set_timer_filter (p1 : PFL_OBJECT; p2 : PFL_TIMER_FILTER) : PFL_TIMER_FILTER;
+procedure fl_suspend_timer(p1 : PFL_OBJECT);
+procedure fl_resume_timer(p1 : PFL_OBJECT);
+
+{
+ * $Id$
+ *
+ }
+
+
+{
+ * Class FL_XYPLOT
+ }
+
+Const
+    FL_NORMAL_XYPLOT	= 0;		{ solid line                        }
+    FL_SQUARE_XYPLOT	= 1;		{ with added square                 }
+    FL_CIRCLE_XYPLOT	= 2;		{ with added circle                 }
+    FL_FILL_XYPLOT	= 3;		{ fill completely                   }
+    FL_POINTS_XYPLOT	= 4;		{ only data points                  }
+    FL_DASHED_XYPLOT	= 5;		{ dashed line                       }
+    FL_IMPULSE_XYPLOT	= 6;
+    FL_ACTIVE_XYPLOT	= 7;		{ accepts Longint {was int}eractive manipulations }
+    FL_EMPTY_XYPLOT	= 8;
+Type 
+    TFL_XYPLOT_TYPE = Longint;
+
+Const
+    FL_LINEAR = 0;
+    FL_LOG    = 1;
+
+Const
+    FL_GRID_NONE  = 0;
+    FL_GRID_MAJOR = 1;
+    FL_GRID_MINOR = 2;
+ 
+{**** Defaults ****}
+
+ FL_XYPLOT_BOXTYPE       = FL_FLAT_BOX;
+ FL_XYPLOT_COL1          = FL_COL1;
+ FL_XYPLOT_LCOL          = FL_LCOL;
+ FL_XYPLOT_ALIGN         = FL_ALIGN_BOTTOM;
+ FL_MAX_XYPLOTOVERLAY    = 32;
+
+{**** Others   ****}
+
+function fl_create_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT;
+function fl_add_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT;
+procedure fl_set_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : Longint {was int}; p5,p6,p7 : pchar);
+procedure fl_set_xyplot_file(p1 : PFL_OBJECT; p2,p3,p4,p5 :pchar);
+
+procedure fl_set_xyplot_return(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_xyplot_xtics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_set_xyplot_ytics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});
+procedure fl_set_xyplot_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+procedure fl_set_xyplot_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double);
+function  fl_set_xyplot_maxoverlays(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ;
+procedure fl_set_xyplot_overlay_type(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int});
+procedure fl_set_xyplot_interpolate(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : double);
+procedure fl_set_xyplot_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_xyplot_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_xyplot_inspect(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_xyplot_symbolsize(p1 : PFL_OBJECT; p2 :  Longint {was int});
+procedure fl_set_xyplot_xscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double);
+procedure fl_set_xyplot_yscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double);
+
+procedure fl_set_xyplot_linewidth(p1 : PFL_OBJECT; p2,p3 : Longint);
+procedure fl_set_xyplot_xgrid(p1 : PFL_OBJECT; p2 : Longint);
+procedure fl_set_xyplot_ygrid(p1 : PFL_OBJECT; p2 : Longint);
+procedure fl_set_xyplot_alphaxtics(p1 : PFL_OBJECT; p2,p3 : pchar);
+procedure fl_set_xyplot_alphaytics(p1 : PFL_OBJECT; p2,p3 : pchar);
+procedure fl_set_xyplot_fixed_xaxis(p1 : PFL_OBJECT; p2,p3 : pchar);
+procedure fl_set_xyplot_fixed_yaxis(p1 : PFL_OBJECT; p2,p3 : pchar);
+
+
+procedure fl_get_xyplot_xbounds(p1 : PFL_OBJECT; p2,p3 : pfloat );
+procedure fl_get_xyplot_ybounds(p1 : PFL_OBJECT; p2,p3 : pfloat );
+procedure fl_get_xyplot(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer);
+procedure fl_get_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer);
+procedure fl_get_xyplot_xmapping(p1 : PFL_OBJECT; p2,p3 : pfloat);
+procedure fl_get_xyplot_ymapping(p1 : PFL_OBJECT; p2,p3 : pfloat);
+
+{
+#define fl_set_xyplot_datafile fl_set_xyplot_file
+}
+procedure fl_add_xyplot_text(p1 : PFL_OBJECT; p2,p3 : double; p4 : pchar;p5 : Longint {was int}; p6 :TFL_COLOR);
+procedure fl_add_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint {was int}; p3,p4 : pfloat; p5 : Longint {was int}; p6 :TFL_COLOR);
+procedure fl_delete_xyplot_text(p1 : PFL_OBJECT; p2 :  pchar);
+procedure fl_delete_xyplot_overlay(p1 : PFL_OBJECT; p2 :  Longint {was int});
+
+procedure fl_replace_xyplot_point(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : double);
+function  fl_interpolate(p1,p2 : pfloat; p3 :Longint {was int};p4,p5 : pfloat; p6 : double; p7 : Longint {was int}) : Longint;
+procedure fl_xyplot_s2w(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat);
+procedure fl_xyplot_w2s(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat);
+
+implementation
+
+procedure fl_add_io_callback(p1 : Longint {was int} ; p2 : word; p3 : PFL_IO_CALLBACK; p4 : pointer); [ C ];
+procedure fl_remove_io_callback(p1 : Longint {was int};p2 :  word; p3 : PFL_IO_CALLBACK); [ C ];
+procedure fl_add_signal_callback(p1 : Longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer); [ C ];
+procedure fl_remove_signal_callback(p1 : Longint {was int}); [ C ];
+procedure fl_signal_caught(p1 :Longint {was int}); [ C ];
+procedure fl_app_signal_direct(p1 : Longint {was int}); [ C ];
+function fl_add_timeout (p1 : longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer) : longint;[ C ];
+procedure fl_remove_timeout(p1 : Longint);[ C ];
+
+function fl_get_vn_value (p1 : PFL_VN_PAIR; p2 : pchar) : Longint; [ C ];
+function fl_get_vn_name (p1 : PFL_VN_PAIR; p2 : Longint {was int}) : Pchar; [ C ];
+function fl_msleep (p1 : cardinal) : cardinal; [ C ];
+procedure fl_library_version(p1,p2 : pointer ); [ C ];
+function fl_bgn_form(P1 : Longint {was int}; P2,p3 : TFL_Coord) : PFL_Form; [ C ];
+Procedure fl_end_form; [ C ];
+function fl_do_forms : PFL_OBJECT ; [ C ];
+function fl_check_forms : PFL_OBJECT; [ C ];
+Function fl_do_only_forms : PFL_OBJECT; [ C ];
+function fl_check_only_forms : PFL_OBJECT; [ C ];
+procedure fl_freeze_form(P1 : PFL_FORM); [ C ];
+procedure fl_set_focus_object( P1 : PFL_FORM;p2 : PFL_OBJECT); [ C ];
+procedure fl_reset_focus_object( p1 : PFL_OBJECT);[ C ];
+
+Function fl_set_form_atclose(p1 : PFL_FORM; p2 : PFL_FORM_ATCLOSE; p3 : pointer) : PFL_FORM_ATCLOSE ; [ C ];
+Function fl_set_atclose(p1 : PFL_FORM_ATCLOSE; p2:  pointer) : PFL_FORM_ATCLOSE ; [ C ];
+Function fl_set_form_atactivate(p1 : PFL_FORM; P2 : PFL_FORM_ATACTIVATE; P3 : pointer) : PFL_FORM_ATACTIVATE ; [ C ];
+Function fl_set_form_atdeactivate(p1 : PFL_FORM;p2 : PFL_FORM_ATDEACTIVATE;p3 : pointer) : PFL_FORM_ATDEACTIVATE ; [ C ];
+Procedure fl_unfreeze_form (p1 : PFL_FORM); [ C ];
+Procedure fl_deactivate_form(p1 : PFL_FORM); [ C ];
+Procedure fl_activate_form(p1 : PFL_FORM); [ C ];
+Procedure fl_deactivate_all_forms; [ C ];
+Procedure fl_activate_all_forms; [ C ];
+Procedure fl_freeze_all_forms; [ C ];
+Procedure fl_unfreeze_all_forms; [ C ];
+Procedure fl_scale_form(p1 : PFL_FORM;p2,p3 : double); [ C ];
+Procedure fl_set_form_position(p1 : PFL_FORM; p2,p3 : TFL_Coord); [ C ];
+Procedure fl_set_form_title(p1 : PFL_FORM; p2 : pchar); [ C ];
+procedure fl_set_form_property(p1 : PFL_FORM; p2 : word); [ C ];
+procedure fl_set_app_mainform( p1 : PFL_FORM); [ C ];
+function fl_get_app_mainform : PFL_FORM; [ C ];
+procedure fl_set_app_nomainform(P1 : Longint {was int}); [ C ];
+procedure fl_set_form_callback(p1 : PFL_FORM; P2 : PFL_FORMCALLBACKPTR; P3 : pointer); [ C ];
+procedure fl_set_form_size(p1 : PFL_FORM; p2,p3 : TFL_Coord); [ C ];
+procedure fl_set_form_hotspot(p1 : PFL_FORM; p2,p3 : TFL_Coord); [ C ];
+procedure fl_set_form_hotobject(p1 : PFL_FORM; p2 : PFL_OBJECT); [ C ];
+procedure fl_set_form_minsize(p1 : PFL_FORM ; p2,p3 :TFL_Coord); [ C ];
+procedure fl_set_form_maxsize(p1 : PFL_FORM; p2,p3 :TFL_Coord); [ C ];
+procedure fl_set_form_event_cmask(p1 : PFL_FORM; p2 : cardinal); [ C ];
+function fl_get_form_event_cmask(p1 : PFL_FORM) : cardinal; [ C ];
+procedure fl_set_form_geometry(p1 : PFL_FORM; p2,p3,p4,p5 : TFL_Coord); [ C ];
+function fl_show_form (p1 : PFL_FORM; p2,p3 : Longint {was int}; p4 : pchar) : longint; [ C ];
+procedure fl_hide_form(p1 : PFL_FORM); [ C ];
+procedure fl_free_form(p1 : PFL_FORM); [ C ];
+procedure fl_redraw_form(p1 : PFL_FORM); [ C ];
+procedure fl_set_form_dblbuffer(p1 : PFL_FORM; p2 : Longint {was int}); [ C ];
+procedure fl_prepare_form_window(p1 : PFL_FORM; p2,p3 :  Longint {was int}; p4 : pchar); [ C ];
+procedure fl_show_form_window(p1 : PFL_FORM); [ C ];
+function fl_adjust_form_size(p1 : PFL_FORM) : double; [ C ];
+function fl_form_is_visibe (p1 : PFL_FORM) : Longint; [ C ];
+
+function  fl_register_raw_callback(p1 : PFL_FORM; p2 : cardinal; P3 : PFL_RAW_CALLBACK): PFL_RAW_CALLBACK; [ C ];
+function fl_bgn_group : PFL_OBJECT; [ C ];
+function fl_end_group : PFL_OBJECT; [ C ];
+procedure fl_addto_group (p1 : PFL_OBJECT); [ C ];
+procedure fl_set_object_boxtype(p1 : PFL_OBJECT; p2 : Longint {was int}); [ C ];
+procedure fl_set_object_bw(p1 : PFL_OBJECT; p2 : Longint {was int}); [ C ];
+procedure fl_set_object_resize(p1 : PFL_OBJECT; p2 : word); [ C ];
+procedure fl_set_object_gravity(p1 : PFL_OBJECT; p2,p3 : word ); [ C ];
+procedure fl_set_object_lsize(p1 : PFL_OBJECT; p2 : Longint {was int}); [ C ];
+procedure fl_set_object_lstyle(p1 : PFL_OBJECT; p2 : Longint {was int}); [ C ];
+procedure fl_set_object_lcol(p1 : PFL_OBJECT; p2 : TFL_COLOR); [ C ];
+procedure fl_set_object_return(p1 : PFL_OBJECT; p2 : Longint {was int}); [ C ];
+procedure fl_set_object_lalign(p1 : PFL_OBJECT; p2 : Longint {was int}); [ C ];
+procedure fl_set_object_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int}); [ C ];
+procedure fl_set_object_shortcutkey(p1 : PFL_OBJECT; p2 :  word); [ C ];
+procedure fl_set_object_dblbuffer(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_object_color(p1 : PFL_OBJECT; p2 : TFL_COLOR;p3 : TFL_COLOR); [ C ];
+procedure fl_set_object_label(p1 : PFL_OBJECT; p2 :  pchar); [ C ];
+procedure fl_set_object_position(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); [ C ];
+procedure fl_set_object_size(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); [ C ];
+procedure fl_set_object_automatic(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_draw_object_label(p1 : PFL_OBJECT); [ C ];
+procedure fl_draw_object_label_outside(p1 : PFL_OBJECT); [ C ];
+
+ procedure fl_set_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 :TFL_Coord); [ C ];
+procedure fl_fit_object_label(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); [ C ];
+procedure fl_get_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord ); [ C ];
+procedure fl_get_object_position(p1 : PFL_OBJECT; p2,p3 :PFL_COORD); [ C ];
+procedure fl_get_object_bbox(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); [ C ];
+procedure fl_call_object_callback(p1 : PFL_OBJECT); [ C ];
+function fl_set_object_prehandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR) : PFL_HANDLEPTR ; [ C ];
+function fl_set_object_posthandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR): PFL_HANDLEPTR ; [ C ];
+function fl_set_object_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint) : PFL_CALLBACKPTR ; [ C ];
+procedure fl_redraw_object(p1 : PFL_OBJECT); [ C ];
+procedure fl_scale_object(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_show_object(p1 : PFL_OBJECT); [ C ];
+procedure fl_hide_object(p1 : PFL_OBJECT); [ C ];
+procedure fl_free_object(p1 : PFL_OBJECT); [ C ];
+procedure fl_delete_object(p1 : PFL_OBJECT); [ C ];
+procedure fl_trigger_object(p1 : PFL_OBJECT); [ C ];
+procedure fl_activate_object(p1 : PFL_OBJECT); [ C ];
+procedure fl_deactivate_object(p1 : PFL_OBJECT); [ C ];
+function fl_set_font_name(p1 : Longint {was int}; p2 :  pchar) : longint; [ C ];
+procedure fl_set_font(p1 : Longint {was int}; p2 :  Longint {was int}); [ C ];
+function fl_get_char_height(p1,p2 : Longint {was int}; p3,p4 : pointer) : Longint {was int}; [ C ];
+function fl_get_char_width(p1,p2 :  Longint {was int}) : Longint; [ C ];
+function fl_get_string_height(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; [ C ];
+function fl_get_string_width(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; [ C ];
+function fl_get_string_widthTAB(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; [ C ];
+function fl_get_string_dimension(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; [ C ];
+procedure fl_get_align_xy(p1,p2,p3,p4,p5,p6,p7,p8,p9 : Longint {was int}; p10,p11 : pointer); [ C ];
+procedure fl_drw_text(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); [ C ];
+procedure fl_drw_text_beside(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); [ C ];
+procedure fl_drw_text_cursor(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7,p8: Longint {was int}; p9 : Pchar; p10,p11: Longint {was int}); [ C ];
+procedure fl_drw_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7 : Longint {was int}); [ C ];
+function fl_add_symbol(p1 : pchar; p2 : PFL_DRAWPTR; p3 :Longint {was int}) : Longint {was int}; [ C ];
+function fl_draw_symbol(p1 : pchar; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR) : Longint {was int}; [ C ];
+procedure fl_drw_slider (p1 :longint; p2,p3,P4,p5 : TFL_COORD; p6,p7 : TFL_COLOR;
+                         p8 : Longint; p9,p10 : double; P11 : pchar; p12,p13,p14 : Longint); [ C ];
+
+function fl_mapcolor(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}) : cardinal; [ C ];
+function fl_mapcolorname(p1 : TFL_COLOR; p2 :  pchar) : longint; [ C ];
+function fl_getmcolor(p1 : TFL_COLOR; p2,p3,p4 : pointer) : cardinal; [ C ];
+procedure fl_free_colors(p1 : PFL_COLOR; p2 :  Longint {was int}); [ C ];
+procedure fl_free_pixels(p1 : pcardinal; p2 :  Longint {was int}); [ C ];
+procedure fl_set_color_leak(p1 : Longint {was int}); [ C ];
+function fl_get_pixel(p1 : TFL_COLOR): cardinal; [ C ];
+procedure fl_get_icm_color(p1 : TFL_COLOR; p2,p3,p4 : pointer); [ C ];
+procedure fl_set_icm_color(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}); [ C ];
+procedure fl_color(p1 : TFL_COLOR); [ C ];
+procedure fl_bk_color(p1 : TFL_COLOR); [ C ];
+procedure fl_textcolor(p1 : TFL_COLOR); [ C ];
+procedure fl_bk_textcolor(p1 : TFL_COLOR); [ C ];
+procedure fl_set_gamma(p1,p2,p3 :double); [ C ];
+procedure fl_show_errors(p1 : Longint {was int}); [ C ];
+procedure fl_add_object(p1 : PFL_FORM; p2 : PFL_OBJECT); [ C ];
+procedure fl_addto_form(p1 : PFL_FORM); [ C ];
+function fl_make_object(p1 : Longint {was int}; p2,p3,p4,p5,p6 : TFL_Coord; p7 : pchar; P8 : PFL_HANDLEPTR) : PFL_OBJECT; [ C ];
+procedure fl_set_coordunit(p1 : Longint {was int}); [ C ];
+function fl_get_coordunit : Longint {was int}; [ C ];
+procedure fl_set_border_width(p1 : Longint {was int}); [ C ];
+function fl_get_border_width : Longint {was int}; [ C ];
+procedure fl_flip_yorigin; [ C ];
+procedure fl_ringbell ( p1 : longint);[ C ];
+procedure fl_gettime (p1,p2 : Plongint);[ C ];
+function fl_mouse_button : longint; [ C ];
+
+procedure fl_rectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); [ C ];
+procedure fl_rectbound(p1,p2,p3,p4 : TFL_Coord;p5 : TFL_COLOR); [ C ];
+procedure fl_roundrectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); [ C ];
+procedure fl_polygon(p1 : Longint {was int}; p2 : PFL_POINT; p3 : Longint {was int}; p4 : TFL_COLOR); [ C ];
+procedure fl_lines(p1 : TFL_POINT; p2 : Longint {was int}; p3 :TFL_COLOR); [ C ];
+procedure fl_line(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); [ C ];
+procedure fl_dashedlinestyle(p1 : pchar; p2 :  Longint {was int}); [ C ];
+procedure fl_drawmode(p1 : Longint {was int}); [ C ];
+procedure fl_linewidth(p1 : Longint {was int}); [ C ];
+procedure fl_linestyle(p1 : Longint {was int}); [ C ];
+function fl_get_linewidth : longint; [ C ];
+function fl_get_linestyle : longint; [ C ];
+
+procedure fl_oval(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); [ C ];
+procedure fl_ovalbound(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); [ C ];
+procedure fl_ovalarc(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6,p7 : Longint; p8 : TFL_COLOR);[ C ];
+
+procedure fl_pieslice(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7 :Longint {was int}; p8 : TFL_COLOR); [ C ];
+procedure fl_add_vertex(p1,p2 :  TFL_Coord); [ C ];
+procedure fl_add_float_vertex(p1,p2 :  real); [ C ];
+procedure fl_reset_vertex; [ C ];
+procedure fl_endline; [ C ];
+procedure fl_endpolygon; [ C ];
+procedure fl_endclosedline; [ C ];
+procedure fl_drw_frame(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR; p7 : Longint {was int}); [ C ];
+procedure fl_drw_checkbox(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR;p7 : Longint {was int}); [ C ];
+function fl_get_fontstruct(p1,p2 :  Longint {was int}) : PXFontStruct; [ C ];
+function fl_get_mouse(p1,p2 : PFL_COORD; p3 : pword) : TWindow; [ C ];
+procedure fl_set_mouse(p1,p2 :  TFL_Coord); [ C ];
+function fl_get_win_mouse(p1 : TWindow; p2,p3 : PFL_COORD; p4 : pword) : TWindow; [ C ];
+function fl_get_form_mouse(p1 : PFL_FORM; p2,p3 : PFL_COORD; p4 : pWord) : TWindow; [ C ];
+function fl_win_to_form(p1 : TWindow) : PFL_form; [ C ];
+ procedure fl_set_form_icon(p1 : PFL_FORM; p2 : TPixmap; p3 :TPixmap); [ C ];
+function fl_wincreate(p1 : pchar) : TWindow; [ C ];
+ function fl_winshow(p1 : TWindow) : TWindow; [ C ];
+ function fl_winopen(p1 : pchar) : TWindow; [ C ];
+ procedure fl_winhide(p1 : TWindow); [ C ];
+ procedure fl_winclose(p1 : TWindow); [ C ];
+ procedure fl_winset(p1 : TWindow); [ C ];
+ function fl_winget : Twindow; [ C ];
+ procedure fl_winresize(p1 : TWindow; p2,p3 :TFL_Coord); [ C ];
+procedure fl_winmove(p1 : TWindow; p2,p3 :TFL_Coord); [ C ];
+procedure fl_winreshape(p1 : TWindow; p2,p3,p4,p5 : TFL_Coord); [ C ];
+procedure fl_winicon(p1 : TWindow; p2 : TPixmap; p3 :TPixmap); [ C ];
+procedure fl_winbackground(p1 : TWindow; p2 :  cardinal); [ C ];
+procedure fl_winstepunit(p1 : TWindow; p2,p3 :TFL_Coord); [ C ];
+procedure fl_winisvalid(p1 : TWindow); [ C ];
+ procedure fl_wintitle(p1 : TWindow; p2 :  pchar); [ C ];
+procedure fl_winposition(p1,p2 :  TFL_Coord); [ C ];
+procedure fl_winminsize(p1 : TWindow; p2,p3 :TFL_Coord); [ C ];
+procedure fl_winmaxsize(p1 : TWindow; p2,p3 :TFL_Coord); [ C ];
+procedure fl_winaspect(p1 : TWindow; p2,p3 :TFL_Coord); [ C ];
+procedure fl_reset_winconstraints(p1 : TWindow); [ C ];
+ procedure fl_winsize(p1,p2 :  TFL_Coord); [ C ];
+procedure fl_initial_winsize(p1,p2 :  TFL_Coord); [ C ];
+procedure fl_initial_winstate(p1 : Longint {was int}); [ C ];
+ function fl_create_colormap(p1 : PXVisualInfo; p2 :  Longint {was int}) : TColormap; [ C ];
+procedure fl_wingeometry(p1,p2,p3,p4 : TFL_Coord); [ C ];
+procedure fl_initial_wingeometry(p1,p2,p3,p4 : TFL_Coord); [ C ];
+procedure fl_get_winsize(p1 : TWindow; p2,p3 :PFL_COORD); [ C ];
+procedure fl_get_winorigin(p1 : TWindow; p2,p3 :PFL_COORD); [ C ];
+procedure fl_get_wingeometry(p1 : TWindow; p2,p3,p4,p5 : PFL_COORD); [ C ];
+function fl_XNextEvent(p1 : PXEvent) : Longint; [ C ];
+function fl_XPeekEvent(p1 : PXEvent) : Longint; [ C ];
+function fl_XEventsQueued(p1 : Longint {was int}) : Longint; [ C ];
+procedure fl_XPutBackEvent(p1 : PXEvent); [ C ];
+function fl_last_event : PXEvent ; [ C ];
+function fl_set_event_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ; [ C ];
+function fl_set_idle_callback(p1 : PFL_APPEVENT_CB; p2 :  pointer) : PFL_APPEVENT_CB ; [ C ];
+function fl_addto_selected_xevent(p1 : TWindow; p2 :  longint) : Cardinal; [ C ];
+function fl_remove_selected_xevent(p1 : TWindow; p2 :  longint) : cardinal; [ C ];
+function fl_add_event_callback(p1 : TWindow; p2 :  Longint {was int}; p3 : PFL_APPEVENT_CB; p4 : pointer) : PFL_APPEVENT_CB ; [ C ];
+procedure fl_remove_event_callback(p1 : TWindow; p2 :  Longint {was int}); [ C ];
+procedure fl_activate_event_callbacks(p1 : TWindow); [ C ];
+function fl_print_xevent_name(p1 : pchar; p2 : PXEvent) : PXEvent; [ C ];
+function fl_initialize(p1 : pointer; p2 : ppchar; p3 : pchar; p4 : PFL_CMD_OPT; p5 : Longint {was int}) : Pdisplay; [ C ];
+procedure fl_finish; [ C ];
+
+function fl_get_resource(p1 : pchar; p2 :  pchar; p3 : TFL_RTYPE; p4 : pchar; p5 : pointer; p6 :Longint {was int}) : pchar;[ C ];
+procedure fl_set_resource(p1 : pchar; p2 :  pchar);[ C ];
+procedure fl_get_app_resources(p1 : PFL_resource; p2 : Longint {was int});[ C ];
+procedure fl_set_graphics_mode(p1 : Longint {was int}; p2 :  Longint {was int});[ C ];
+procedure fl_set_visualID(p1 : longint);  [ C ];
+function fl_keysym_pressed(p1 : TKeySym) : Longint; [ C ];
+procedure fl_set_defaults(p1 : cardinal; p2 :  PFL_IOPT);[ C ];
+procedure fl_set_tabstop(p1 : pchar); [ C ];
+procedure fl_get_defaults(p1 : PFL_IOPT); [ C ];
+function fl_get_visual_depth : Longint; [ C ];
+function fl_vclass_name(p1 : Longint {was int}) : pchar; [ C ];
+function fl_vclass_val(p1 : pchar) : Longint {was int}; [ C ];
+procedure fl_set_ul_property(p1 : Longint {was int}; p2 :  Longint {was int});[ C ];
+procedure fl_set_clipping(p1 : TFL_Coord; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord);[ C ];
+procedure fl_set_gc_clipping(p1 : TGC; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord);[ C ];
+procedure fl_unset_gc_clipping(p1 : TGC); [ C ];
+procedure fl_set_clippings(p1 : PXRectangle; p2 :  Longint {was int});[ C ];
+procedure fl_unset_clipping; [ C ];
+function fl_textgc : TGC;[ C ];
+function fl_create_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_add_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;[ C ];
+procedure fl_set_bitmap_data(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : pointer);[ C ];
+procedure fl_set_bitmap_file(p1 : PFL_OBJECT; p2 :  pchar);[ C ];
+function fl_read_bitmapfile(p1 : TWindow; p2 :  pchar; p3,p4 : pword; p5,p6 : pointer) : TPixmap ;[ C ];
+function fl_create_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6  :pchar) : PFL_OBJECT;[ C ];
+function fl_add_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+procedure fl_set_pixmap_data(p1 : PFL_OBJECT; p2 :  ppchar);[ C ];
+procedure fl_set_pixmap_file(p1 : PFL_OBJECT; p2 :  pchar);[ C ];
+procedure fl_set_pixmap_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});[ C ];
+procedure fl_set_pixmap_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);[ C ];
+procedure fl_set_pixmap_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});[ C ];
+procedure fl_free_pixmap_pixmap(p1 : PFL_OBJECT); [ C ];
+function fl_get_pixmap_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;[ C ];
+function fl_read_pixmapfile(p1 : TWindow; p2 :  pchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR)  : TPixmap ;[ C ];
+function fl_create_from_pixmapdata(p1 : TWindow; p2 :  ppchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ;[ C ];
+function fl_create_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_add_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_create_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_add_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6:  pchar) : PFL_OBJECT;[ C ];
+procedure fl_clear_browser(p1 : PFL_OBJECT);[ C ];
+procedure fl_add_browser_line(p1 : PFL_OBJECT; p2 :  pchar);[ C ];
+procedure fl_addto_browser(p1 : PFL_OBJECT; p2 :  pchar);[ C ];
+procedure fl_addto_browserchars(p1 : PFL_OBJECT; p2 :  pchar);[ C ];
+
+procedure fl_insert_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);[ C ];
+procedure fl_delete_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_replace_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);[ C ];
+function fl_get_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar;[ C ];
+function fl_load_browser(p1 : PFL_OBJECT; p2 :  pchar ) : Longint ;[ C ];
+procedure fl_select_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_deselect_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_deselect_browser(p1 : PFL_OBJECT); [ C ];
+function fl_isselected_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ;[ C ];
+function fl_get_browser_topline(p1 : PFL_OBJECT ) : Longint ; [ C ];
+function fl_get_browser(p1 : PFL_OBJECT ) : Longint ;[ C ];
+function fl_get_browser_maxline(p1 : PFL_OBJECT ) : Longint ; [ C ];
+function fl_get_browser_screenlines(p1 : PFL_OBJECT ) : Longint ;[ C ];
+procedure fl_set_browser_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_browser_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_browser_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_browser_specialkey(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_browser_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_browser_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+
+procedure fl_set_browser_leftslider(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_browser_line_selectable(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});[ C ];
+procedure fl_get_browser_dimension(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD);[ C ];
+procedure fl_set_browser_dblclick_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint);[ C ];
+procedure fl_set_browser_xoffset(p1 : PFL_OBJECT; p2 :  TFL_Coord);[ C ];
+procedure fl_set_browser_scrollbarsize (p1 : PFL_OBJECT;p2,p3 : longint);[ C ];
+
+
+function fl_create_button(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_create_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_create_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+
+function fl_create_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_create_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_create_bitmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+function fl_create_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;[ C ];
+function fl_add_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;[ C ];
+function fl_add_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;[ C ];
+function fl_add_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;[ C ];
+function fl_add_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;[ C ];
+function fl_add_button(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;[ C ];
+procedure fl_set_bitmapbutton_data (p1 : PFL_OBJECT; p2,p3 : Longint {was int};   p4 : pchar);[ C ];
+procedure fl_set_bitmapbutton_file (p1 : PFL_OBJECT; p2: pchar);[ C ];
+function  fl_add_bitmapbutton (p1 : longint; p2,p3,p4,p5: TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+
+function fl_add_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ];
+
+function fl_get_button(p1 : PFL_OBJECT ) : Longint ;  [ C ];
+procedure fl_set_button(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+function fl_get_button_numb(p1 : PFL_OBJECT ) : Longint ;[ C ];
+function fl_create_generic_button(p1,p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord;p7 : pchar) : PFL_OBJECT;[ C ];
+procedure fl_add_button_class(p1 : Longint {was int}; p2 : PFL_DRAWBUTTON; p3 : PFL_CLEANUPBUTTON);[ C ];
+
+function fl_create_generic_canvas(p1 : Longint; p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord; p7 : pchar) : PFL_OBJECT;[ C ] ;
+function fl_add_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT;[ C ] ;
+function fl_create_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;[ C ] ;
+function fl_create_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;[ C ] ;
+function fl_add_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ] ;
+procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ] ;
+procedure fl_set_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap);[ C ] ;
+procedure fl_set_canvas_visual(p1 : PFL_OBJECT; p2 :  PVisual);[ C ] ;
+procedure fl_set_canvas_depth(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ] ;
+procedure fl_set_canvas_attributes(p1 : PFL_OBJECT; p2 : word;  p3 : PXSetWindowAttributes);[ C ] ;
+function fl_add_canvas_handler(p1 : PFL_OBJECT; p2 :  Longint {was int}; p3 : PFL_HANDLE_CANVAS; p4 : pointer) : PFL_HANDLE_CANVAS ;[ C ] ;
+function fl_get_canvas_id(p1 : PFL_OBJECT ) : TWindow ;[ C ] ;
+function fl_get_canvas_colormap(p1 : PFL_OBJECT ) : TColormap;[ C ] ; 
+function fl_get_canvas_depth(p1 : PFL_OBJECT ) : Longint ; [ C ] ;
+procedure fl_remove_canvas_handler(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : PFL_HANDLE_CANVAS);[ C ] ;
+procedure fl_hide_canvas(p1 : PFL_OBJECT); 	{ internal use only }[ C ] ;
+procedure fl_canvas_yield_to_shortcut(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ] ;
+procedure fl_modify_canvas_prop(p1 : PFL_OBJECT; 
+				  P2 : PFL_MODIFY_CANVAS_PROP;
+				  p3 : PFL_MODIFY_CANVAS_PROP;
+				  p4 : PFL_MODIFY_CANVAS_PROP);[ C ] ;
+function fl_create_glcanvas(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;[ C ] ;
+function fl_add_glcanvas(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;[ C ] ;
+procedure fl_set_glcanvas_defaults(p1 : pointer); [ C ] ;
+procedure fl_get_glcanvas_defaults(p1 : pointer); [ C ] ;
+procedure fl_set_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);[ C ] ;
+procedure fl_get_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);[ C ] ;
+procedure fl_set_glcanvas_direct(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ] ;
+procedure fl_activate_glcanvas(p1 : PFL_OBJECT);[ C ];
+
+function fl_get_glcanvas_xvisualinfo(p1 : PFL_OBJECT ) : PXVisualInfo; [ C ] ;
+
+function fl_create_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 :  pchar) : PFL_OBJECT; [ C ];
+function fl_add_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+procedure fl_clear_chart(p1 : PFL_OBJECT); [ C ];
+procedure fl_add_chart_value(p1 : PFL_OBJECT; p2 : double; p3 : pchar; p4 : Longint {was int}); [ C ];
+procedure fl_insert_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); [ C ];
+procedure fl_replace_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); [ C ];
+procedure fl_set_chart_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_set_chart_maxnumb(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_chart_autosize(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_chart_lstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_chart_lsize(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_chart_lcolor(p1 : PFL_OBJECT; p2 :  TFL_COLOR);[ C ];
+
+
+function fl_create_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) :  PFL_OBJECT; [ C ];
+function fl_add_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar ) : PFL_OBJECT; [ C ];
+procedure fl_clear_choice(p1 : PFL_OBJECT); [ C ];
+procedure fl_addto_choice(p1 : PFL_OBJECT; p2 :  pchar); [ C ];
+procedure fl_replace_choice(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); [ C ];
+procedure fl_delete_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_choice_text(p1 : PFL_OBJECT; p2 :  pchar); [ C ];
+function fl_get_choice(p1 : PFL_OBJECT ) : Longint ; [ C ];
+function fl_get_choice_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; [ C ];
+function fl_get_choice_maxitems(p1 : PFL_OBJECT ) : Longint ; [ C ];
+function fl_get_choice_text(p1 : PFL_OBJECT ) : pchar; [ C ];
+procedure fl_set_choice_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_choice_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_choice_align(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_choice_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : word); [ C ];
+procedure fl_set_choice_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); [ C ];
+
+
+function fl_create_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_add_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+procedure fl_get_clock(p1 : PFL_OBJECT; p2,p3,p4 : pointer); [ C ];
+
+function fl_create_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_add_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; [ C ];
+procedure fl_set_counter_value(p1 : PFL_OBJECT; p2 :  double); [ C ];
+procedure fl_set_counter_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_set_counter_step(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_set_counter_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+function fl_get_counter_value(p1 : PFL_OBJECT ) : double ; [ C ];
+procedure fl_get_counter_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble);[ C ];
+
+procedure fl_set_counter_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_counter_filter(p1 : PFL_OBJECT;p2 : pointer); [ C ];
+
+procedure fl_set_cursor(p1 : TWindow; p2 :  Longint {was int}); [ C ];
+procedure fl_set_cursor_color(p1 : longint; p2 : TFL_COLOR; p3 :TFL_COLOR); [ C ];
+function fl_create_bitmap_cursor(p1 : pchar; p2 :  pchar; p3,p4,p5,p6 : Longint {was int}) : TCursor; [ C ];
+function fl_get_cursor_byname(p1 : longint ) : TCursor; [ C ];
+
+function fl_create_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 :pchar) : PFL_OBJECT; [ C ];
+function fl_add_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; [ C ];
+procedure fl_set_dial_value(p1 : PFL_OBJECT; p2 :  double); [ C ];
+function fl_get_dial_value(p1 : PFL_OBJECT ) : double ; [ C ];
+procedure fl_set_dial_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_get_dial_bounds(p1 : PFL_OBJECT; p2 : pdouble; p3 :pdouble); [ C ];
+procedure fl_set_dial_step(p1 : PFL_OBJECT; p2 :  double); [ C ];
+procedure fl_set_dial_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_dial_angles(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_set_dial_cross(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_dial_direction (p1 : PFL_OBJECT; p2 : Longint);[ C ];
+
+function fl_get_dirlist(p1 : pchar; p2 : pchar;	p3 : pointer;p4	:longint) : PFL_Dirlist; [ C ];
+function fl_set_dirlist_filter (p1 : PFL_DIRLIST_FILTER ) : PFL_DIRLIST_FILTER ; [ C ];
+procedure fl_set_dirlist_sort ( p1 : longint);[ C ];
+
+procedure fl_free_dirlist(p1 : PFL_Dirlist); [ C ];
+procedure fl_free_all_dirlist; [ C ];
+
+function fl_is_valid_dir(p1 : pchar ) : Longint; [ C ];
+function fl_fmtime(p1 : pchar ) : cardinal ; [ C ];
+function fl_fix_dirname(p1 : pchar) : pchar; [ C ];
+
+function fl_create_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_add_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_create_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_add_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; [ C ];
+
+function fl_create_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar; p7 : PFL_HANDLEPTR) : PFL_OBJECT; [ C ];
+function fl_add_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar; P7 : PFL_HANDLEPTR) : PFL_OBJECT; [ C ];
+
+procedure fl_set_goodies_font(p1 : LongInt; p2 :  Longint {was int}); [ C ];
+procedure fl_show_message(p1 : pchar; p2 : pchar; p3 :pchar); [ C ];
+procedure fl_show_messages(p1 : pchar);[ C ];
+
+procedure fl_show_alert(p1 : pchar; p2 : pchar; p3 : pchar; p4 : Longint {was int}); [ C ];
+function fl_show_question(p1 : pchar; p2 : longint) : Longint ; [ C ];
+function fl_show_input(p1 : pchar; p2 :  pchar ) : pchar; [ C ];
+function fl_show_simple_input(p1 : pchar; p2 :  pchar ) : pchar; [ C ];
+function fl_show_colormap(p1 : Longint ) : Longint ; [ C ];
+function fl_show_choice(p1,p2,p3 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;[ C ];
+function fl_show_choices(p1 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;[ C ];
+procedure fl_set_choices_shortcut(p1,p2,p3 :pchar); [ C ];
+
+procedure fl_show_oneliner(p1 : pchar; p2 : TFL_Coord; p3 :TFL_Coord); [ C ];
+procedure fl_hide_oneliner; [ C ];
+procedure fl_set_oneliner_font(p1 : LongInt; p2 :  Longint {was int}); [ C ];
+procedure fl_set_oneliner_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); [ C ];
+
+function fl_exe_command(p1 : pchar; p2 : Longint) : Longint; [ C ];
+function fl_end_command(p1 : longint) : Longint; [ C ];
+Function fl_end_all_command : Longint; [ C ];
+procedure fl_show_command_log(p1 : Longint); [ C ];
+procedure fl_hide_command_log; [ C ];
+procedure fl_clear_command_log; [ C ];
+procedure fl_addto_command_log(p1 : pchar);[ C ];
+procedure fl_set_command_log_position(p1,p2 :longint);[ C ];
+Function fl_get_command_log_fdstruct : PFD_CMDLOG; [ C ];
+
+function fl_use_fselector(p1 : LongInt ) : LongInt; [ C ];
+function fl_show_fselector(p1,p2,p3,p4 :  pchar) : pchar; [ C ];
+procedure fl_set_fselector_fontsize (p1 : Longint); [ C ];
+procedure fl_set_fselector_fontstyle (p1 : longint); [ C ];
+
+procedure fl_set_fselector_placement(p1 : LongInt); [ C ];
+procedure fl_set_fselector_border(p1 : LongInt); [ C ];
+procedure fl_set_fselector_callback( p1 : PFSelector_Callback; p2 : pointer); [ C ];
+function fl_get_filename : pchar; [ C ];
+function fl_get_directory : pchar; [ C ];
+function fl_get_pattern : pchar; [ C ];
+function fl_set_directory (p1 : pchar ) : LongInt; [ C ];
+procedure fl_set_pattern (p1 : pchar); [ C ];
+procedure fl_refresh_fselector; [ C ];
+procedure fl_add_fselector_appbutton(p1 : pchar; p2 : PFL_Procedure; p3 : pointer); [ C ];
+procedure fl_remove_fselector_appbutton(p1 : pchar); [ C ];
+procedure fl_disable_fselector_cache(p1 : LongInt); [ C ];
+procedure fl_invalidate_fselector_cache; [ C ]; 
+function fl_get_fselector_form : PFL_FORM; [ C ];
+function fl_get_fselector_fdstruct  : PFD_FSELECTOR; [ C ]; 
+procedure fl_hide_fselector;  [ C ];
+procedure fl_set_fselector_filetype_marker(p1,p2,p3,p4,p5 : Longint); [ C ];
+
+function fl_create_input(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6: pchar)  : PFL_OBJECT ; [ C ];
+function fl_add_input(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar )  : PFL_OBJECT ; [ C ];
+procedure fl_set_input(p1 : PFL_OBJECT; p2 :  pchar)  ; [ C ];
+procedure fl_set_input_color(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; [ C ];
+function fl_get_input(p1 : PFL_OBJECT )  : pchar ; [ C ];
+procedure fl_set_input_return(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_input_scroll(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_input_cursorpos(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; [ C ];
+function fl_get_input_cursorpos(p1 : PFL_OBJECT; p2,p3 : Pointer )  : LongInt ; [ C ];
+procedure fl_set_input_selected(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; [ C ];
+procedure fl_set_input_maxchars(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_input_format(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});[ C ];
+procedure fl_set_input_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_input_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_input_xoffset(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_input_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});[ C ];
+procedure fl_set_input_scrollbarsize(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});[ C ];
+function fl_get_input_topline(p1 : PFL_OBJECT;p2,p3 : PLongint) : Longint;[ C ];
+function fl_get_input_screenlines(p1 : PFL_OBJECT) : Longint;[ C ];
+function fl_get_input_numberoflines(p1 : PFL_OBJECT) : Longint;[ C ];
+procedure fl_get_input_format(p1 : PFL_OBJECT;p2,p3 : PLongint);[ C ];
+function fl_set_input_filter(p1 : PFL_OBJECT; p2 :  PFL_INPUTVALIDATOR )  : PFL_INPUTVALIDATOR  ; [ C ];
+procedure fl_set_input_editkeymap(PFL_EditKeymap);[ C ];
+
+function fl_create_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; [ C ] ;
+function fl_add_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; [ C ] ;
+procedure fl_clear_menu(p1 : PFL_OBJECT); [ C ] ;
+procedure fl_set_menu(p1 : PFL_OBJECT; p2 :  pchar); [ C ] ;
+procedure fl_addto_menu(p1 : PFL_OBJECT; p2 :  pchar); [ C ] ;
+procedure fl_replace_menu_item(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); [ C ] ;
+procedure fl_delete_menu_item(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ] ;
+procedure fl_set_menu_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); [ C ] ;
+procedure fl_set_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Cardinal); [ C ] ;
+procedure fl_show_menu_symbol(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ] ;
+procedure fl_set_menu_popup(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ] ;
+function fl_get_menu(p1 : PFL_OBJECT ) : Longint ; [ C ] ;
+function fl_get_menu_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; [ C ] ;
+function fl_get_menu_maxitems(p1 : PFL_OBJECT ) : Longint ; [ C ] ;
+function fl_get_menu_item_mode(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Cardinal ; [ C ] ;
+function fl_get_menu_text(p1 : PFL_OBJECT ) : pchar; [ C ] ;
+
+function fl_newpup(p1 : TWindow ) : LongInt; [ C ];
+function fl_defpup(p1 : TWindow; p2 :  pchar) : LongInt; [ C ] ;
+function fl_addtopup(p1 : longint; p2 :  pchar) : LongInt; [ C ] ;
+
+function fl_setpup_mode(p1 : Longint; p2 : Longint {was int}; p3 : Cardinal) : Longint; [ C ];
+procedure fl_freepup(p1 : Longint); [ C ];
+function fl_dopup(p1 : Longint ) : LongInt; [ C ];
+procedure fl_setpup_shortcut(p1 : Longint; p2 : Longint {was int}; p3 :pchar); [ C ];
+procedure fl_setpup_position(p1 : Longint; p2 :  Longint {was int}); [ C ];
+procedure fl_setpup_selection(p1 : Longint; p2 :  Longint {was int}); [ C ];
+function fl_setpup_fontsize(p1 : LongInt): Longint; [ C ];
+function fl_setpup_fontstyle(p1 : LongInt): longint; [ C ];
+procedure fl_setpup_shadow(p1 : LongInt; p2 :  Longint {was LongInt}); [ C ];
+procedure fl_setpup_softedge(p1 : LongInt; p2 :  Longint {was int}); [ C ];
+procedure fl_setpup_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); [ C ];
+procedure fl_setpup_checkcolor(p1 : TFL_COLOR); [ C ];
+procedure fl_setpup_title(p1 : LongInt; p2 :  pchar); [ C ];
+procedure fl_setpup_bw(p1 : LongInt; p2 :  Longint {was int}); [ C ];
+procedure fl_setpup_pad(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); [ C ];
+function fl_setpup_cursor(p1 : LongInt; p2 :  Longint {was int} ) : TCursor ; [ C ];
+function fl_setpup_default_cursor(p1 : LongInt ) : TCursor ; [ C ];
+function fl_setpup_maxpup(p1 : LongInt ) : LongInt; [ C ];
+function fl_getpup_mode(p1 : LongInt; p2 :  Longint {was int} ) : Cardinal; [ C ];
+function fl_getpup_text(p1 : LongInt; p2 :  Longint {was int} ) : pchar; [ C ];
+procedure fl_showpup(p1 : LongInt); [ C ];
+procedure fl_hidepup(p1 : LongInt); [ C ];
+function fl_setpup_itemcb(p1 : LongInt; p2 : Longint {was int}; p3 :PFL_PUP_CB ) : PFL_PUP_CB ; [ C ];
+function fl_setpup_menucb(p1 : LongInt; p2 :  PFL_PUP_CB ) : PFL_PUP_CB ; [ C ];
+procedure fl_setpup_submenu(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); [ C ];
+
+function fl_create_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_add_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+procedure fl_set_positioner_xvalue(p1 : PFL_OBJECT; p2 :  double); [ C ];
+function fl_get_positioner_xvalue(p1 : PFL_OBJECT ) : double ; [ C ];
+procedure fl_set_positioner_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_get_positioner_xbounds(p1 : PFL_OBJECT; p2 : pdouble ; p3 : pdouble); [ C ];
+procedure fl_set_positioner_yvalue(p1 : PFL_OBJECT; p2 :  double); [ C ];
+function fl_get_positioner_yvalue(p1 : PFL_OBJECT ) : double ; [ C ];
+procedure fl_set_positioner_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_get_positioner_ybounds(p1 : PFL_OBJECT; p2 ,p3 :pdouble); [ C ];
+procedure fl_set_positioner_xstep(p1 : PFL_OBJECT; p2 :  double); [ C ];
+procedure fl_set_positioner_ystep(p1 : PFL_OBJECT; p2 :  double); [ C ];
+procedure fl_set_positioner_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+
+function fl_create_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; [ C ];
+function fl_add_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; [ C ];
+function fl_create_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar): PFL_OBJECT; [ C ];
+function fl_add_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;P6: pchar) : PFL_OBJECT; [ C ];
+procedure fl_set_slider_value(p1 : PFL_OBJECT; p2 :  double); [ C ];
+function fl_get_slider_value(p1 : PFL_OBJECT ) : double ; [ C ];
+procedure fl_set_slider_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); [ C ];
+procedure fl_get_slider_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); [ C ];
+procedure fl_set_slider_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_slider_step(p1 : PFL_OBJECT; p2 :  double); [ C ];
+procedure fl_set_slider_increment(p1 : PFL_OBJECT; p2,p3 :  double);[ C ];
+procedure fl_set_slider_size(p1 : PFL_OBJECT; p2 :  double); [ C ];
+procedure fl_set_slider_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); [ C ];
+procedure fl_set_slider_filter(p1 : PFL_OBJECT; p2 : PTFL_SLIDER_FILTER); [ C ];
+
+function fl_create_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_add_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; [ C ];
+
+function fl_create_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; [ C ];
+function fl_add_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; [C ];
+procedure fl_set_timer(p1 : PFL_OBJECT; p2 :  double); [ C ];
+function fl_get_timer(p1 : PFL_OBJECT ) : double ; [ C ];
+procedure fl_set_timer_countup(p1 : PFL_OBJECT; p2 :  Longint); [ C ];
+function fl_set_timer_filter (p1 : PFL_OBJECT; p2 : PFL_TIMER_FILTER) : PFL_TIMER_FILTER; [ C ];
+procedure fl_suspend_timer(p1 : PFL_OBJECT); [ C ];
+procedure fl_resume_timer(p1 : PFL_OBJECT); [ C ];
+
+
+procedure fl_set_xyplot_return(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_xyplot_xtics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; [ C ];
+procedure fl_set_xyplot_ytics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; [ C ];
+procedure fl_set_xyplot_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double)  ; [ C ];
+procedure fl_set_xyplot_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double)  ; [ C ];
+procedure fl_get_xyplot_xbounds(p1 : PFL_OBJECT; p2,p3 : pfloat )  ; [ C ];
+procedure fl_get_xyplot_ybounds(p1 : PFL_OBJECT; p2,p3 : pfloat )  ; [ C ];
+procedure fl_get_xyplot(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer)  ; [ C ];
+procedure fl_get_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer)  ; [ C ];
+
+function fl_create_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6: pchar)  : PFL_OBJECT ; [ C ];
+
+function fl_add_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar )  : PFL_OBJECT ; [ C ];
+
+procedure fl_set_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : Longint {was int}; p5,p6,p7 : pchar)  ; [ C ];
+procedure fl_set_xyplot_file(p1 : PFL_OBJECT; p2,p3,p4,p5 :pchar)  ; [ C ];
+
+{
+#define fl_set_xyplot_datafile fl_set_xyplot_file
+}
+procedure fl_add_xyplot_text(p1 : PFL_OBJECT; p2,p3 : double; p4 : pchar;p5 : Longint {was int}; p6 :TFL_COLOR)  ; [ C ];
+
+procedure fl_delete_xyplot_text(p1 : PFL_OBJECT; p2 :  pchar)  ; [ C ];
+
+function fl_set_xyplot_maxoverlays(p1 : PFL_OBJECT; p2 :  Longint {was int} )  : Longint  ; [ C ];
+procedure fl_add_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint {was int}; p3,p4 : pfloat; p5 : Longint {was int}; p6 :TFL_COLOR)  ; [ C ];
+procedure fl_set_xyplot_overlay_type(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int})  ; [ C ];
+procedure fl_delete_xyplot_overlay(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_xyplot_interpolate(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : double)  ; [ C ];
+procedure fl_set_xyplot_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_xyplot_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_xyplot_inspect(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_set_xyplot_symbolsize(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; [ C ];
+procedure fl_replace_xyplot_point(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : double)  ; [ C ];
+procedure fl_get_xyplot_xmapping(p1 : PFL_OBJECT; p2,p3 : pfloat)  ; [ C ];
+procedure fl_get_xyplot_ymapping(p1 : PFL_OBJECT; p2,p3 : pfloat)  ; [ C ];
+function fl_interpolate(p1,p2 : pfloat; p3 :Longint {was int};p4,p5 : pfloat; p6 : double; p7 : Longint {was int})  : Longint ; [ C ];
+
+procedure fl_xyplot_s2w(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat)  ; [ C ];
+procedure fl_xyplot_w2s(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat)  ; [ C ];
+procedure fl_set_xyplot_xscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double)  ; [ C ];
+procedure fl_set_xyplot_yscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double)  ; [ C ];
+
+procedure fl_set_xyplot_linewidth(p1 : PFL_OBJECT; p2,p3 : Longint);[ C ];
+procedure fl_set_xyplot_xgrid(p1 : PFL_OBJECT; p2 : Longint);[ C ];
+procedure fl_set_xyplot_ygrid(p1 : PFL_OBJECT; p2 : Longint);[ C ];
+procedure fl_set_xyplot_alphaxtics(p1 : PFL_OBJECT; p2,p3 : pchar);[ C ];
+procedure fl_set_xyplot_alphaytics(p1 : PFL_OBJECT; p2,p3 : pchar);[ C ];
+procedure fl_set_xyplot_fixed_xaxis(p1 : PFL_OBJECT; p2,p3 : pchar);[ C ];
+procedure fl_set_xyplot_fixed_yaxis(p1 : PFL_OBJECT; p2,p3 : pchar);[ C ];
+
+{ Added later : }
+function fl_mode_capable(p1,p2 : longint ) : longint;[ C ];
+procedure fl_enumerate_fonts(p1 : PFL_ENUMERATEPTR; p2 :  longint);[ C ];
+
+
+{ From here we implement function aliases which were #defined }
+
+procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int});
+
+begin
+  fl_set_object_shortcut (p1,p2,p3);
+end;
+
+procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 :  ppchar);
+
+begin
+ fl_set_pixmap_data(p1,p2);
+end;
+
+procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 :  pchar);
+
+begin
+  fl_set_pixmap_file(p1,p2);
+end;
+
+procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});
+begin
+  fl_set_pixmap_align(p1,p2,p3,p4);
+end;
+
+procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);
+begin
+ fl_set_pixmap_pixmap(p1,p2,p3);
+end;
+
+procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});
+begin
+fl_set_pixmap_colorcloseness(p1,p2,p3);
+end;
+
+procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT); 
+begin
+  fl_free_pixmap_pixmap(p1); 
+end;
+
+function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;
+
+begin
+ fl_get_pixmapbutton_pixmap:=fl_get_pixmap_pixmap(p1,p2,p3);
+end;
+
+Function FL_ObjWin ( P : PFL_Object) : TWindow;
+
+begin
+if P^.objclass <> FL_CANVAS then
+    FL_ObjWin :=P^.form^.window
+else
+    FL_objWin := fl_get_canvas_id (p)
+end;
+
+procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR);
+begin
+   fl_rectangle(1,x,y,w,h,c)
+end;
+
+procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR);
+begin
+    fl_rectangle(0,x,y,w,h,c)
+end;
+
+function fl_current_form : PFL_FORM;
+
+begin
+  asm
+  movl fl_current_form,%eax
+  movl %eax,__RESULT
+  end
+end;
+
+end.

+ 3716 - 0
packages/forms/forms-88.pp

@@ -0,0 +1,3716 @@
+
+Unit forms;
+
+Interface
+
+{$linklib forms}
+{$linklib c}
+{$linklib m}
+
+uses x,xlib,xutil,xresource;
+
+const 
+  FL_VERSION=0;
+  FL_REVISION=88;
+  FL_FIXLEVEL=0;
+  FL_INCLUDE_VERSION=FL_VERSION * 1000 + FL_REVISION;
+
+{ some general constants }
+    FL_ON = 1;
+    FL_OK = 1;
+    FL_VALID = 1;
+    FL_PREEMPT = 1;
+    FL_AUTO = 2;
+    FL_WHEN_NEEDED = FL_AUTO;
+
+    FL_OFF = 0;
+    {FL_NONE = 0;}
+    FL_CANCEL = 0;
+    FL_INVALID = 0;
+
+    FL_IGNORE = -1;
+    FL_CLOSE = -2;
+{
+ * The screen coordinate unit, FL_Coord, must be of signed type. Without
+ * prototype support, a type other than integer might not work right.
+ * If FL_Coord is float, FL_CoordIsFloat must be defined to be 1 so that
+ * round-off error can be checked. **TODO Float not tested ***
+ }
+Type PWord   = ^Word;
+     PDouble = ^Double;
+     PFloat  = ^Real;
+     PLongint = ^Longint;
+          
+type TFL_Coord = Longint {was int};
+     PFL_Coord = ^TFL_Coord;
+{ #define FL_CoordIsFloat 0	 define this if FL_Coord is of type float }
+   TFL_COLOR = longint; { Was cardinal }
+   PFL_COLOR = ^TFL_COLOR;
+
+{
+ * Coordinates can be in pixels, milli-meters or points (1/72inch)
+ }
+  TFL_COORD_UNIT=Longint {was int};
+  { POssible values }
+Const 
+    FL_COORD_PIXEL=0;		{ default, Pixel           }
+    FL_COORD_MM=1;		{ milli-meter              }
+    FL_COORD_POINT=2;		{ point                    }
+    FL_COORD_centiMM=3;		{ one hundredth of a mm    }
+    FL_COORD_centiPOINT=4;	{ one hundredth of a point }
+
+{
+ * All object classes.
+ }
+
+type TFL_Class = Longint;
+
+Const { Possible values }
+    FL_INVALID_CLASS=0;
+    FL_BUTTON=1;
+    FL_LIGHTBUTTON=2;
+    FL_ROUNDBUTTON=3;
+    FL_ROUND_3DBUTTON=4;
+    FL_CHECKBUTTON=5;
+    FL_BITMAPBUTTON=6;
+    FL_PIXMAPBUTTON=7;
+    FL_BITMAP=8;
+    FL_PIXMAP=9;
+    FL_BOX=10;
+    FL_TEXT=11;
+    FL_MENU=12;
+    FL_CHART=13;
+    FL_CHOICE=14;
+    FL_COUNTER=15;
+    FL_SLIDER=16;
+    FL_VALSLIDER=17;
+    FL_INPUT=18;
+    FL_BROWSER=19;
+    FL_DIAL=21;
+    FL_TIMER=21;
+    FL_CLOCK=22;
+    FL_POSITIONER=23;
+    FL_FREE=24;
+    FL_XYPLOT=25;
+    FL_FRAME=26;
+    FL_LABELFRAME=27;
+    FL_CANVAS=28;
+    FL_GLCANVAS=29;
+    FL_TABFOLDER=30;
+    FL_SCROLLBAR=31;
+    FL_SCROLLBUTTON=32;
+    FL_MENUBAR=33;
+    FL_IMAGECANVAS=34;
+    FL_TEXTBOX=35;
+
+{ how to display a form onto screen }
+
+Type
+    TFL_PLace = Longint;
+
+Const
+    FL_PLACE_FREE = 0;		{ size remain resizable      }
+    FL_PLACE_MOUSE = 1;		{ mouse centered on form     }
+    FL_PLACE_CENTER = 2;	{ center of the screen       }
+    FL_PLACE_POSITION = 4;	{ specific size              }
+    FL_PLACE_SIZE = 8;		{ specific size              }
+    FL_PLACE_GEOMETRY = 16;	{ specific position          }
+    FL_PLACE_ASPECT = 32;	{ keep aspect ratio          }
+    FL_PLACE_FULLSCREEN = 64;	{ scale to fit screen        }
+    FL_PLACE_HOTSPOT = 128;	{ so mouse fall on (x,y)     }
+    FL_PLACE_ICONIC = 256;
+    { modifier }
+    FL_FREE_SIZE = 1 shl 14;
+    FL_FIX_SIZE = 1 shl 15;
+
+    FL_PLACE_FREE_CENTER =  FL_PLACE_CENTER or FL_FREE_SIZE;
+    FL_PLACE_CENTERFREE = FL_PLACE_CENTER or FL_FREE_SIZE;
+
+{ Window manager decoration request }
+
+type 
+    TFL_DECORATION = Longint;
+  
+Const { Possible values for FL_DECORATION }
+    FL_FULLBORDER = 1;		{ normal }
+    FL_TRANSIENT = 2;		{ set TRANSIENT_FOR property              }
+    FL_NOBORDER = 3;		{ use override_redirect to supress decor. }
+    FL_MODAL = 1 << 8;
+type
+ { All box types }
+    TFL_BOX_TYPE = Longint;
+Const { Possible values }
+    FL_NO_BOX=0;
+    FL_UP_BOX=1;
+    FL_DOWN_BOX=2;
+    FL_BORDER_BOX=3;
+    FL_SHADOW_BOX=4;
+    FL_FRAME_BOX=5;
+    FL_ROUNDED_BOX=6;
+    FL_EMBOSSED_BOX=7;
+    FL_FLAT_BOX=8;
+    FL_RFLAT_BOX=9;
+    FL_RSHADOW_BOX=10;
+    FL_OVAL_BOX=11;
+    FL_ROUNDED3D_UPBOX=12;
+    FL_ROUNDED3D_DOWNBOX=13;
+    FL_OVAL3D_UPBOX=14;
+    FL_OVAL3D_DOWNBOX=15;
+    FL_OVAL3D_FRAMEBOX=16;
+    FL_OVAL3D_EMBOSSEDBOX=17;
+    { Internal use only }
+    FL_TOPTAB_UPBOX=18;
+    FL_SELECTED_TOPTAB_UPBOX=19;
+    FL_BOTTOMTAB_UPBOX=20;
+    FL_SELECTED_BOTTOMTAB_UPBOX=21;
+    FL_OSHADOW_BOX=22;
+
+{ How to place text relative to a box }
+Type
+    TFL_ALIGN = Longint;
+
+Const { Possible values for FL_ALIGN } 
+    FL_ALIGN_CENTER = 0;
+    FL_ALIGN_TOP = 1;
+    FL_ALIGN_BOTTOM = 2;
+    FL_ALIGN_LEFT = 4;
+    FL_ALIGN_RIGHT = 8;
+    FL_ALIGN_TOP_LEFT = FL_ALIGN_TOP or FL_ALIGN_LEFT;
+    FL_ALIGN_TOP_RIGHT = FL_ALIGN_TOP or FL_ALIGN_RIGHT;
+    FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_BOTTOM or FL_ALIGN_LEFT;
+    FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_BOTTOM or FL_ALIGN_RIGHT;
+    FL_ALIGN_INSIDE = (1 shl 13);
+    FL_ALIGN_VERT = (1 shl 14);	{ not functional yet  }
+
+    FL_ALIGN_LEFT_TOP = FL_ALIGN_TOP_LEFT;
+    FL_ALIGN_RIGHT_TOP = FL_ALIGN_TOP_RIGHT;
+    FL_ALIGN_LEFT_BOTTOM = FL_ALIGN_BOTTOM_LEFT;
+    FL_ALIGN_RIGHT_BOTTOM = FL_ALIGN_BOTTOM_RIGHT;
+
+{ Mouse buttons }
+
+FL_MBUTTON1=1; FL_LEFT_MOUSE=FL_MBUTTON1;
+FL_MBUTTON2=2; FL_MIDDLE_MOUSE=FL_MBUTTON2;
+FL_MBUTTON3=3; FL_RIGHT_MOUSE=FL_MBUTTON3;
+FL_MBUTTON4=4;
+FL_MBUTTON5=5;
+
+
+{ control when to reutrn input, slider and dial object. }
+
+    FL_RETURN_END_CHANGED = 0;
+    FL_RETURN_CHANGED = 1;
+    FL_RETURN_END = 2;
+    FL_RETURN_ALWAYS = 3;
+    FL_RETURN_DBLCLICK = 4;
+
+{
+ *  Some special color indeces for FL private colormap. It does not matter
+ *  what the value of each enum is, but it must start from 0 and be
+ *  consecutive.
+ }
+ 
+ 
+ 
+Type
+    TFL_DP_COL = Longint;
+Const
+    FL_BLACK		= 0;
+    FL_RED		= 1;
+    FL_GREEN		= 2;
+    FL_YELLOW		= 3;
+    FL_BLUE		= 4;
+    FL_MAGENTA		= 5;
+    FL_CYAN		= 6;
+    FL_WHITE		= 7;
+
+    FL_TOMATO		= 8;
+    FL_INDIANRED	= 9;
+    FL_SLATEBLUE	= 10;
+
+    FL_COL1		= 11;
+    FL_RIGHT_BCOL	= 12;
+    FL_BOTTOM_BCOL	= 13;
+    FL_TOP_BCOL		= 14;
+    FL_LEFT_BCOL	= 15;
+    FL_MCOL		= 16;
+
+    FL_INACTIVE		= 17;
+    FL_PALEGREEN	= 18;
+    FL_DARKGOLD		= 19;
+
+    FL_ORCHID		= 20;
+    FL_DARKCYAN		= 21;
+    FL_DARKTOMATO	= 22;
+    FL_WHEAT		= 23;
+    FL_DARKORANGE	= 24;
+    FL_DEEPPINK		= 25;
+    FL_CHARTREUSE	= 26;
+    FL_DARKVIOLET	= 27;
+    FL_SPRINGGREEN	= 28;
+    FL_DOGERBLUE	= 29;
+
+    FL_FREE_COL1 = 256; 
+    FL_FREE_COL2 = 257;
+    FL_FREE_COL3 = 258; 
+    FL_FREE_COL4 = 259;
+    FL_FREE_COL5 = 260; 
+    FL_FREE_COL6 = 261;
+    FL_FREE_COL7 = 262;
+    FL_FREE_COL8 = 263;
+    FL_FREE_COL9 = 264;
+    FL_FREE_COL10 = 265;
+    FL_FREE_COL11 = 266;
+    FL_FREE_COL12 = 267;
+    FL_FREE_COL13 = 268;
+    FL_FREE_COL14 = 269;
+    FL_FREE_COL15 = 270;
+    FL_FREE_COL16 = 271;
+
+FL_BUILT_IN_COLS  = FL_DOGERBLUE+1;
+FL_INACTIVE_COL =  FL_INACTIVE;
+
+{ Some aliases for the color. This is actually backwards ... }
+
+Const
+FL_GRAY16=FL_RIGHT_BCOL;
+FL_GRAY35      =     FL_BOTTOM_BCOL;
+FL_GRAY80      =     FL_TOP_BCOL;
+FL_GRAY90      =     FL_LEFT_BCOL;
+FL_GRAY63      =     FL_COL1;
+FL_GRAY75      =     FL_MCOL;
+FL_LCOL        =     FL_BLACK;
+
+{
+ *  Pop-up menu item attributes. NOTE if more than 8, need to change
+ *  choice and menu class where mode is kept by a single byte
+ }
+    FL_PUP_NONE = 0;
+    FL_PUP_GREY = 1;
+    FL_PUP_BOX = 2;
+    FL_PUP_CHECK = 4;
+    FL_PUP_RADIO = 8;
+
+FL_PUP_GRAY     = FL_PUP_GREY;
+FL_PUP_TOGGLE   = FL_PUP_BOX;
+FL_PUP_INACTIVE = FL_PUP_GREY;
+
+type
+ TFL_PUP_CB = Procedure  (p1 : Longint);  	{ call back prototype  } cdecl;
+ PFL_PUP_CB = ^TFL_PUP_CB;
+
+ TFL_PUP_ENTRY = record
+      TheText : pchar;		{ label of a popup/menu item    }
+      CallBack : PFL_PUP_CB;		{ the callback function         }
+      shortcut : pchar;	            { hotkeys                       }
+      mode : longint;			{ FL_PUP_GRAY, FL_PUP_CHECK etc }
+ end;
+ PFL_PUP_ENTRY = ^TFL_PUP_ENTRY;
+ 
+ TFL_MENU_ENTRY = TFL_PUP_ENTRY;
+ PFL_MENU_ENTRY = ^TFL_MENU_ENTRY;
+
+{ Events that a form reacts to.  }
+type TFL_EVENT = Longint;
+Const { Possible values }
+    FL_NOEVENT		= 0;
+    FL_DRAW		= 1;
+    FL_PUSH		= 2;
+    FL_RELEASE		= 3;
+    FL_ENTER		= 4;
+    FL_LEAVE		= 5;
+    FL_MOUSE		= 6;
+    FL_FOCUS		= 7;
+    FL_UNFOCUS		= 8;
+    FL_KEYBOARD		= 9;
+    FL_MOTION		= 10;
+    FL_STEP		= 11;
+    FL_SHORTCUT		= 12;
+    FL_FREEMEM		= 13;
+    FL_OTHER		= 14;		{ property, selection etc }
+    FL_DRAWLABEL	= 15;
+    FL_DBLCLICK		= 16;		{ double click            }
+    FL_TRPLCLICK	= 17;		{ triple click            }
+    FL_PS		= 18;		{ dump a form into EPS    }
+
+const 
+FL_MOVE=FL_MOTION;	{ for compatibility }
+
+{ Resize policies }
+type TFL_RESIZE_T = Longint;
+
+const
+    FL_RESIZE_NONE = 0;
+    FL_RESIZE_X    = 1;
+    FL_RESIZE_Y    = 2;
+
+const
+    FL_RESIZE_ALL = FL_RESIZE_X or FL_RESIZE_Y;
+
+{ Keyboard focus control }
+type
+    TFL_KEY = Longint;
+
+Const { Possible values for FL_KEY_Normal }
+    FL_KEY_NORMAL = 1;		{ normal keys(0-255) - tab +left/right }
+    FL_KEY_TAB = 2;		{ normal keys + 4 direction cursor     }
+    FL_KEY_SPECIAL = 4;		{ only needs special keys(>255)        }
+    FL_KEY_ALL = 7;		{ all keys                             }
+
+    FL_ALT_VAL = (1 shl 17);	{ alt + Key --> FL_ALT_VAL + key }
+
+{ Internal use }
+Type
+    TFL_FIND = Longint;
+Const
+    FL_FIND_INPUT	=0;
+    FL_FIND_AUTOMATIC	=1;
+    FL_FIND_MOUSE	=2;
+    FL_FIND_CANVAS	=3;
+    FL_FIND_KEYSPECIAL	=4;
+
+{******************************************************************
+ * FONTS
+ *****************************************************************}
+
+Const FL_MAXFONTS=32;	{ max number of fonts }
+
+type TFL_TEXT_STYLE = Longint;
+Const
+    FL_INVALID_STYLE		= -1;
+    FL_NORMAL_STYLE		= 0;
+    FL_BOLD_STYLE		= 1;
+    FL_ITALIC_STYLE		= 2;
+    FL_BOLDITALIC_STYLE 	= 3;
+
+    FL_FIXED_STYLE		= 4;
+    FL_FIXEDBOLD_STYLE 		= 5;
+    FL_FIXEDITALIC_STYLE	= 6;
+    FL_FIXEDBOLDITALIC_STYLE	= 7;
+
+    FL_TIMES_STYLE		= 8;
+    FL_TIMESBOLD_STYLE		= 9;
+    FL_TIMESITALIC_STYLE	= 10;
+    FL_TIMESBOLDITALIC_STYLE	= 11;
+
+    { The following are derived and must differ by multiples of SHADOW,
+       i.e., (FL_ENGRAVED%SHADOW) == 0. All being 2^n has the benefit that
+       (lstyle | FL_SHADOW) == (lstyle + FL_SHADOW). }
+
+Const
+    FL_SHADOW_STYLE = (1 shl 9);
+    FL_ENGRAVED_STYLE = (1 shl 10);
+    FL_EMBOSSED_STYLE = (1 shl 11);
+
+
+Type TFL_FONT_STYLE= TFL_TEXT_STYLE;
+
+{ Standard sizes in XForms }
+Const
+FL_TINY_SIZE     =  8;
+FL_SMALL_SIZE    =  10;
+FL_NORMAL_SIZE   =  12;
+FL_MEDIUM_SIZE   =  14;
+FL_LARGE_SIZE    =  18;
+FL_HUGE_SIZE     =  24;
+
+FL_DEFAULT_SIZE = FL_SMALL_SIZE;
+
+{ Defines for compatibility }
+
+FL_TINY_FONT  = FL_TINY_SIZE;
+FL_SMALL_FONT =  FL_SMALL_SIZE;
+FL_NORMAL_FONT=  FL_NORMAL_SIZE;
+FL_MEDIUM_FONT=  FL_MEDIUM_SIZE;
+FL_LARGE_FONT =  FL_LARGE_SIZE;
+FL_HUGE_FONT  =  FL_HUGE_SIZE;
+
+FL_NORMAL_FONT1 =  FL_SMALL_FONT;
+FL_NORMAL_FONT2 =  FL_NORMAL_FONT;
+FL_DEFAULT_FONT =  FL_SMALL_FONT;
+
+
+const  
+FL_BOUND_WIDTH = 3;	{ Border width of boxes }
+
+cFL_BEGIN_GROUP  =  10000;
+cFL_END_GROUP    =  20000;
+{
+ *  Definition of basic struct that holds an object
+ }
+
+FL_CLICK_TIMEOUT = 350;	{ double click interval }
+
+Type
+
+TFL_pixmap = record
+    thepixmap : Tpixmap;
+    Thewin    : TWindow;
+    TheVisual : TVisual;
+    x,y       : TFL_Coord;
+    w, h      : word;
+    depth     : Longint;
+    dbl_background : TFL_COLOR;
+    pixel : TFL_COLOR;
+end;
+
+Pform     = ^TForm;
+
+{Pfl_pixmap = ^fl_pixmap;
+}
+
+Pflobjs    = ^Tflobjs;
+
+THandle = Function (p1 : Pflobjs; p2 : Longint {was int}; p3 : TFL_Coord; p4 : TFL_Coord;p5 :  Longint {was int}; p6 : pointer) : Longint; cdecl;
+PHandle = ^THandle;
+TObject_Callback = Procedure  (P1 : Pflobjs;p2 :  longint); cdecl;
+PObject_Callback = ^TObject_Callback;
+
+Tflobjs = record
+    form : PForm;		{ the form this object belong        }
+    u_vdata : Pointer;
+    u_cdata : Pchar;
+    u_ldata : longint;
+    
+    objclass : Longint {was int};		{ class of object, button, slider etc }
+    thetype : Longint;		{ type within the class              }
+    boxtype : Longint {was int};		{ what kind of box type              }
+    x, y, w, h : TFL_Coord;	{ obj. location and size             }
+    bw : TFL_Coord;
+    col1, col2 : TFL_color;	{ colors of obj                      }
+    thelabel : pchar;		{ object label                       }
+    lcol : TFL_COLOR;		{ label color                        }
+    align : Longint;
+    lsize, lstyle : Longint;	{ label size and style               }
+
+    shortcut : ^Longint;
+
+    handle     : PHandle;
+    object_callback : PObject_Callback;
+    argument : Longint;
+
+    spec          : pointer;	{ instantiation                      }
+
+    prehandle  : PHandle;
+    posthandle : PHandle;
+
+
+    { re-configure preference }
+    resize    : cardinal;	{ what to do if WM resizes the FORM     }
+    nwgravity : cardinal;	{ how to re-position top-left corner    }
+    segravity : cardinal;	{ how to re-position lower-right corner }
+
+    parent,child,nc : Pflobjs;
+    ischild : longint;
+
+    prev : pflobjs;		{ prev. obj in form                  }
+    next : pflobjs;		{ next. obj in form                  }
+
+    flpixmap      : Pointer;	{ pixmap double buffering stateinfo  }
+    use_pixmap    : Longint;	{ true to use pixmap double buffering }
+
+    double_buffer : Longint;	{ only used by mesa/gl canvas        }
+
+    { some interaction flags }
+    pushed: Longint {was int};
+    focus: Longint {was int};
+    belowmouse: Longint {was int};
+    active: Longint {was int};			{ if accept event }
+    input: Longint {was int};
+    wantkey: Longint {was int};
+    radio: Longint {was int};
+    automatic: Longint {was int};
+    redraw: Longint {was int};
+    visible: Longint {was int};
+    clip: Longint {was int};
+    click_timeout : cardinal;
+    c_vdata : pointer;		{ for class use }
+    c_cdata : pchar;            { For class use }
+    c_ldata : longint;		{ for class use }
+    cspec_size : cardinal;
+    aux_col1, aux_col2 : TFL_COLOR;
+    dbl_background : TFL_COLOR;
+    how_return : longint;
+    reserved : array[0..5] of cardinal;
+    { the following are for application programs }
+end;
+
+TFL_OBJECT = TFlobjs;
+PFL_OBJECT = ^TFL_OBJECT;
+
+TCallback = Procedure (P1 : pflobjs; P2 : pointer); cdecl;
+PCallback = ^TCallback;
+{ callback function for an entire form }
+PFL_FORMCALLBACKPTR = PCallback;
+
+{ object callback function      }
+PFL_CALLBACKPTR = PCallBack;
+
+{ preemptive callback function  }
+PFL_RAW_CALLBACK = PCallback;
+
+{ at close (WM menu delete/close etc.) }
+PFL_FORM_ATCLOSE = PCallback;
+
+{ deactivate/activate callback }
+PFL_FORM_ATDEACTIVATE = PCallback; 
+
+PFL_FORM_ATACTIVATE = PCallback;
+
+THandlePtr = Procedure ( p1 : PFL_Object; p2 : Longint; p3,p4 : TFL_COORD; p5 : Longint; p6 : pointer); cdecl;
+PHandlePTR = ^THandlePTR;
+
+PFL_HANDLEPTR = PHandlePTR;
+
+{
+extern FL_OBJECT *FL_EVENT;
+}
+{** FORM ***}
+
+PFL_FORM = ^TFL_FORM;
+
+Tform = record
+    fdui : Pointer;
+    u_vdata : pointer;		{ for application         }
+    u_cdata : pchar;
+    u_ldata : longint;
+    
+    thelabel : pchar;		{ window title            }
+    window : cardinal;	{ X resource ID for window }
+    x, y, w, h : TFL_COORD;	{ current geometry info   }
+    hotx, hoty : TFL_COORD;	{ hot-spot of the form    }
+
+    first,last,focusobj : pflobjs;
+
+    form_callback     : PFL_FORMCALLBACKPTR;
+    activate_callback : PFL_FORM_ATACTIVATE;
+    deactivate_callback: PFL_FORM_ATDEACTIVATE ;
+    form_cb_data, activate_data, deactivate_data : pointer;
+
+    key_callback, 
+    push_callback, 
+    crossing_callback,
+    motion_callback,
+    all_callback: PFL_RAW_CALLBACK ;
+
+    compress_mask : cardinal;
+    evmask : cardinal;
+
+    { WM_DELETE_WINDOW message handler }
+    close_callback : PFL_FORM_ATCLOSE ;
+    close_data : pointer;
+
+
+    flpixmap : pointer;		{ back buffer             }
+
+    icon_pixmap : cardinal;
+    icon_mask : cardinal;
+
+    { interaction and other flags }
+    vmode : Longint {was int};			{ current X visual class  }
+    deactivated : Longint {was int};		{ true if sensitive       }
+    use_pixmap : Longint {was int};		{ true if dbl buffering   }
+    frozen : Longint {was int};			{ true if sync change     }
+    visible : Longint {was int};		{ true if mapped          }
+    wm_border : Longint {was int};		{ window manager info     }
+    prop : cardinal;		{ other attributes        }
+    has_auto : Longint {was int};
+    top : Longint {was int};
+    sort_of_modal : Longint;
+    parent, child : PFL_FORM;
+    parent_obj : PFL_OBJECT; 
+    reserved : array[0..9] of Longint;
+end;
+TFL_FORM = Tform;
+
+TFD_Any = record
+  form : PFL_FORM;
+  vdata : Pointer;
+  cdata : pchar;
+  ldata : longint;
+  end;
+
+PFD_ANY = ^TFD_ANY;
+  
+
+{
+ * Async IO stuff
+ }
+
+const
+    FL_READ = 1;
+    FL_WRITE = 2;
+    FL_EXCEPT = 4;
+
+{ IO other than XEvent Q }
+Type
+
+TFL_IO_CALLBACK = Procedure (p1 :Longint {was int};p2 : pointer); cdecl;
+PFL_IO_CALLBACK = ^TFL_IO_CALLBACK;
+{ function definitions }
+Procedure fl_add_io_callback(p1 : Longint {was int} ; p2 : word; p3 : PFL_IO_CALLBACK; p4 : pointer); cdecl;
+Procedure fl_remove_io_callback(p1 : Longint {was int};p2 :  word; p3 : PFL_IO_CALLBACK); cdecl;
+
+{ signals }
+type 
+
+TFL_SIGNAL_HANDLER = Procedure (p1 : Longint {was int}; p2 : pointer); cdecl;
+PFL_SIGNAL_HANDLER = ^TFL_SIGNAL_HANDLER ;
+
+Procedure fl_add_signal_callback(p1 : LongInt;p2 : PFL_SIGNAL_HANDLER;p3 : pointer); cdecl;
+Procedure fl_remove_signal_callback(p1 : Longint {was int}); cdecl;
+Procedure fl_signal_caught(p1 :Longint {was int}); cdecl;
+Procedure fl_app_signal_direct(p1 : Longint {was int}); cdecl;
+
+Function fl_add_timeout (p1 : longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer) : longint; cdecl;
+Procedure fl_remove_timeout(p1 : Longint); cdecl;
+
+{  Some utility stuff }
+type 
+
+TFL_VN_PAIR = record
+    val : Longint;
+    name : Pchar;
+end;
+
+PFL_VN_PAIR = ^TFL_VN_PAIR;
+
+Function fl_get_vn_value (p1 : PFL_VN_PAIR; p2 : pchar) : Longint; cdecl;
+Function fl_get_vn_name (p1 : PFL_VN_PAIR; p2 : Longint {was int}) : Pchar; cdecl;
+Function fl_msleep (p1 : cardinal) : cardinal; cdecl;
+
+{
+ *  Basic public routine prototypes
+ }
+
+Procedure fl_library_version(p1,p2 : pointer ); cdecl;
+
+{* Generic routines that deal with FORMS *}
+
+Function fl_bgn_form(P1 : Longint {was int}; P2,p3 : TFL_Coord) : PFL_Form; cdecl;
+Procedure fl_end_form; cdecl;
+Function fl_do_forms : PFL_OBJECT ; cdecl;
+Function fl_check_forms : PFL_OBJECT; cdecl;
+Function fl_do_only_forms : PFL_OBJECT; cdecl;
+Function fl_check_only_forms : PFL_OBJECT; cdecl;
+Procedure fl_freeze_form(P1 : PFL_FORM); cdecl;
+
+Procedure fl_set_focus_object( P1 : PFL_FORM;p2 : PFL_OBJECT); cdecl;
+Procedure fl_reset_focus_object( p1 : PFL_OBJECT); cdecl;
+
+{
+#define fl_set_object_focus   fl_set_focus_object
+}
+Function fl_set_form_atclose(p1 : PFL_FORM; p2 : PFL_FORM_ATCLOSE; p3 : pointer) : PFL_FORM_ATCLOSE ; cdecl;
+Function fl_set_atclose(p1 : PFL_FORM_ATCLOSE; p2:  pointer) : PFL_FORM_ATCLOSE ; cdecl;
+
+Function fl_set_form_atactivate(p1 : PFL_FORM; P2 : PFL_FORM_ATACTIVATE; P3 : pointer) : PFL_FORM_ATACTIVATE ; cdecl;
+Function fl_set_form_atdeactivate(p1 : PFL_FORM;p2 : PFL_FORM_ATDEACTIVATE;p3 : pointer) : PFL_FORM_ATDEACTIVATE ; cdecl;
+
+Procedure fl_unfreeze_form (p1 : PFL_FORM); cdecl;
+Procedure fl_deactivate_form(p1 : PFL_FORM); cdecl;
+Procedure fl_activate_form(p1 : PFL_FORM); cdecl;
+Procedure fl_deactivate_all_forms; cdecl;
+Procedure fl_activate_all_forms; cdecl;
+Procedure fl_freeze_all_forms; cdecl;
+Procedure fl_unfreeze_all_forms; cdecl;
+Procedure fl_scale_form(p1 : PFL_FORM;p2,p3 : double); cdecl;
+Procedure fl_set_form_position(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;
+Procedure fl_set_form_title(p1 : PFL_FORM; p2 : pchar); cdecl;
+
+Procedure fl_set_form_property(p1 : PFL_FORM; p2 : word); cdecl;
+Procedure fl_set_app_mainform( p1 : PFL_FORM); cdecl;
+Function fl_get_app_mainform : PFL_FORM; cdecl;
+Procedure fl_set_app_nomainform(P1 : Longint {was int}); cdecl;
+
+Procedure fl_set_form_callback(p1 : PFL_FORM; P2 : PFL_FORMCALLBACKPTR; P3 : pointer); cdecl;
+{
+#define  fl_set_form_call_back    fl_set_form_callback
+}
+
+Procedure fl_set_form_size(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;
+Procedure fl_set_form_hotspot(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;
+Procedure fl_set_form_hotobject(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl;
+Procedure fl_set_form_minsize(p1 : PFL_FORM ; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_form_maxsize(p1 : PFL_FORM; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_form_event_cmask(p1 : PFL_FORM; p2 : cardinal); cdecl;
+Function fl_get_form_event_cmask(p1 : PFL_FORM) : cardinal; cdecl;
+
+Procedure fl_set_form_geometry(p1 : PFL_FORM; p2,p3,p4,p5 : TFL_Coord); cdecl;
+
+{
+#define fl_set_initial_placement fl_set_form_geometry
+}
+
+Function fl_show_form (p1 : PFL_FORM; p2,p3 : Longint {was int}; p4 : pchar) : Longint; cdecl;
+Procedure fl_hide_form(p1 : PFL_FORM); cdecl;
+Procedure fl_free_form(p1 : PFL_FORM); cdecl;
+Procedure fl_redraw_form(p1 : PFL_FORM); cdecl;
+Procedure fl_set_form_dblbuffer(p1 : PFL_FORM; p2 : Longint {was int}); cdecl;
+Procedure fl_prepare_form_window(p1 : PFL_FORM; p2,p3 :  Longint {was int}; p4 : pchar); cdecl;
+Procedure fl_show_form_window(p1 : PFL_FORM); cdecl;
+Function fl_adjust_form_size(p1 : PFL_FORM) : double; cdecl;
+Function fl_form_is_visibe (p1 : PFL_FORM) : Longint; cdecl;
+
+Function  fl_register_raw_callback(p1 : PFL_FORM; p2 : cardinal; P3 : PFL_RAW_CALLBACK): PFL_RAW_CALLBACK; cdecl;
+
+{
+#define fl_register_call_back fl_register_raw_callback
+}
+Function fl_bgn_group : PFL_OBJECT; cdecl;
+Function fl_end_group : PFL_OBJECT; cdecl;
+Procedure fl_addto_group (p1 : PFL_OBJECT); cdecl;
+
+{***** Routines that deal with FL_OBJECTS *******}
+
+Procedure fl_set_object_boxtype(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_bw(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_resize(p1 : PFL_OBJECT; p2 : word); cdecl;
+Procedure fl_set_object_gravity(p1 : PFL_OBJECT; p2,p3 : word ); cdecl;
+Procedure fl_set_object_lsize(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_lstyle(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_lcol(p1 : PFL_OBJECT; p2 : TFL_COLOR); cdecl;
+Procedure fl_set_object_return(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_lalign(p1 : PFL_OBJECT; p2 : Longint {was int});	{ to be removed } cdecl;
+Procedure fl_set_object_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int}); cdecl;
+Procedure fl_set_object_shortcutkey(p1 : PFL_OBJECT; p2 :  word); cdecl;
+Procedure fl_set_object_dblbuffer(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_object_color(p1 : PFL_OBJECT; p2 : TFL_COLOR;p3 : TFL_COLOR); cdecl;
+Procedure fl_set_object_label(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_object_position(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_object_size(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_object_automatic(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_draw_object_label(p1 : PFL_OBJECT);  cdecl;
+Procedure fl_draw_object_label_outside(p1 : PFL_OBJECT);  cdecl;
+Function fl_get_object_component(p1 : PFL_OBJECT; p2,p3,p4 : Longint): PFL_OBJECT; cdecl;
+
+{
+#define  fl_set_object_dblclick(p1 : ob; p2 : timeout)  (p1 : ob)->click_timeout = (p1 : timeout); p3 :p2 : 
+}
+Procedure fl_set_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 :TFL_Coord); cdecl;
+
+
+Procedure fl_fit_object_label(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;
+
+{ no much get (p1 : yet ?) }
+
+Procedure fl_get_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord ); cdecl;
+Procedure fl_get_object_position(p1 : PFL_OBJECT; p2,p3 :PFL_COORD); cdecl;
+
+{ this one takes into account the label }
+Procedure fl_get_object_bbox (p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl;
+
+Procedure fl_call_object_callback(p1 : PFL_OBJECT);  cdecl;
+Function fl_set_object_prehandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR) : PFL_HANDLEPTR ; cdecl;
+Function fl_set_object_posthandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR): PFL_HANDLEPTR ; cdecl;
+Function fl_set_object_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint) : PFL_CALLBACKPTR ; cdecl;
+{
+#define fl_set_object_align   fl_set_object_lalign
+#define fl_set_call_back      fl_set_object_callback
+}
+Procedure fl_redraw_object(p1 : PFL_OBJECT); cdecl;
+Procedure fl_scale_object(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_show_object(p1 : PFL_OBJECT);  cdecl;
+Procedure fl_hide_object(p1 : PFL_OBJECT); cdecl;
+Procedure fl_free_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_delete_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_trigger_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_activate_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_deactivate_object(p1 : PFL_OBJECT); cdecl;
+
+Type TFL_ENUMERATEPTR = Procedure (p : pchar);  cdecl;
+     PFL_ENUMERATEPTR = ^TFL_ENUMERATEPTR;
+
+Procedure fl_enumerate_fonts (p1 : PFL_ENUMERATEPTR; p2 :  longint); cdecl;
+
+Function  fl_set_font_name(p1 : Longint {was int}; p2 :  pchar) : longint; cdecl;
+Procedure fl_set_font(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl;
+
+{ routines that facilitate free object }
+
+Function fl_get_char_height(p1,p2 : Longint {was int}; p3,p4 : pointer) : Longint {was int}; cdecl;
+Function fl_get_char_width(p1,p2 :  Longint {was int}) : Longint; cdecl;
+Function fl_get_string_height(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl;
+Function fl_get_string_width(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl;
+Function fl_get_string_widthTAB(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl;
+Function fl_get_string_dimension(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl;
+{
+#define fl_get_string_size  fl_get_string_dimension
+}
+Procedure fl_get_align_xy(p1,p2,p3,p4,p5,p6,p7,p8,p9 : Longint {was int}; p10,p11 : pointer); cdecl;
+
+Procedure fl_drw_text(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl;
+
+Procedure fl_drw_text_beside(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl;
+{
+#define fl_draw_text(p1 : a; p2 : x;y;w;h;c;st;sz;s)    \
+      (p1 : (p1 : (p1 : a) & FL_ALIGN_INSIDE) ? fl_drw_text:fl_drw_text_beside)\
+      (p1 : a; p2 : x;y;w;h;c;st;sz;s)
+}
+
+Procedure fl_drw_text_cursor(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7,p8: Longint {was int}; p9 : Pchar; p10,p11: Longint {was int}); cdecl;
+
+Procedure fl_drw_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7 : Longint {was int}); cdecl;
+
+type
+
+FL_DRAWPTR = Procedure (p1,p2,p3,p4 : TFL_Coord; p5 : Longint {was int};p6: TFL_COLOR); cdecl;
+PFL_DRAWPTR = ^FL_DRAWPTR;
+
+Function fl_add_symbol(p1 : pchar; p2 : PFL_DRAWPTR; p3 :Longint {was int}) : Longint {was int}; cdecl;
+Function fl_draw_symbol(p1 : pchar; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR) : Longint {was int}; cdecl;
+
+const
+  FL_SLIDER_NONE = 0;
+  FL_SLIDER_BOX = 1;
+  FL_SLIDER_KNOB = 2;
+  FL_SLIDER_UP = 4;
+  FL_SLIDER_DOWN = 8;
+  FL_SLIDER_ALL = 15;
+  
+Procedure fl_drw_slider (p1 :longint; p2,p3,P4,p5 : TFL_COORD; p6,p7 : TFL_COLOR; 
+                         p8 : Longint; p9,p10 : double; P11 : pchar; p12,p13,p14 : Longint);cdecl;
+                         
+
+Function fl_mapcolor(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}) : cardinal; cdecl;
+Function fl_mapcolorname(p1 : TFL_COLOR; p2 :  pchar) : longint; cdecl;
+{
+#define fl_mapcolor_name  fl_mapcolorname
+}
+Function fl_getmcolor(p1 : TFL_COLOR; p2,p3,p4 : pointer) : cardinal; cdecl;
+Procedure fl_free_colors(p1 : PFL_COLOR; p2 :  Longint {was int}); cdecl;
+Procedure fl_free_pixels(p1 : pcardinal; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_color_leak(p1 : Longint {was int});  cdecl;
+Function fl_get_pixel(p1 : TFL_COLOR): cardinal;  cdecl;
+{
+#define fl_get_flcolor   fl_get_pixel
+}
+Procedure fl_get_icm_color(p1 : TFL_COLOR; p2,p3,p4 : pointer); cdecl;
+Procedure fl_set_icm_color(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}); cdecl;
+
+Procedure fl_color(p1 : TFL_COLOR); cdecl;
+Procedure fl_bk_color(p1 : TFL_COLOR);  cdecl;
+Procedure fl_textcolor(p1 : TFL_COLOR);  cdecl;
+Procedure fl_bk_textcolor(p1 : TFL_COLOR);  cdecl;
+Procedure fl_set_gamma(p1,p2,p3 :double); cdecl;
+
+Procedure fl_show_errors(p1 : Longint {was int});  cdecl;
+
+{ Some macros }
+{
+#define FL_max(p1 : a; p2 : b)      (p1 :  (p1 : a) > (p1 : b) ? (p1 : a):(p1 : b) )
+#define FL_min(p1 : a; p2 : b)      (p1 :  (p1 : a) < (p1 : b) ? (p1 : a):(p1 : b) )
+#define FL_abs(p1 : a)        (p1 :  (p1 : a) > 0 ? (p1 : a):(p1 : -(p1 : a)))
+#define FL_nint(p1 : a)       (p1 :  (p1 : a) > 0 ? (p1 : (p1 : a) + 0.5):(p1 : (p1 : a) - 0.5))
+}
+type TFL_FSCB = Function (p1 : pchar; p2 : pointer) : Longint; cdecl;
+PFL_FSCB = ^TFL_FSCB;
+
+{ utilities for new objects }
+var fl_current_form : PFL_FORM; cvar;external;
+Procedure fl_add_object(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl;
+Procedure fl_addto_form(p1 : PFL_FORM);  cdecl;
+Function fl_make_object(p1 : Longint {was int}; p2,p3,p4,p5,p6 : TFL_Coord; p7 : pchar; P8 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_coordunit(p1 : Longint {was int}); cdecl;
+Function fl_get_coordunit : Longint {was int};  cdecl;
+Procedure fl_set_border_width(p1 : Longint {was int});  cdecl;
+Function fl_get_border_width : Longint {was int};   cdecl;
+Procedure fl_set_scrollbar_type (p1 :longint); cdecl;
+
+Procedure fl_flip_yorigin;  cdecl;
+
+Procedure fl_ringbell ( p1 : longint); cdecl;
+Procedure fl_gettime (p1,p2 : Plongint); cdecl;
+Function fl_whoami : pchar; cdecl;
+Function fl_now : pchar; cdecl;
+Function fl_mouse_button : longint; cdecl;
+
+
+{ this gives more flexibility for future changes }
+
+{
+#define fl_free       free
+#define fl_malloc     malloc
+#define fl_calloc     calloc
+#define fl_realloc    realloc
+}
+Const  FL_MAX_MENU_CHOICE_ITEMS = 128;
+
+{
+ * $Id$
+ *
+ *  X Window dependent stuff
+ *
+ }
+
+{ Still need conversion !! }
+{
+#include <X11/Xatom.h>
+#include <X11/keysym.h>
+}
+Const
+ 
+ FL_MINDEPTH = 1;
+
+
+{ FL_xxx does not do anything anymore; but kept for compatibility }
+    FL_illegalVisual = -1;
+    FL_StaticGray = StaticGray;
+    FL_GrayScale = GrayScale;
+    FL_StaticColor = StaticColor;
+    FL_PseudoColor = PseudoColor;
+    FL_TrueColor = TrueColor;
+    FL_DirectColor = DirectColor;
+    FL_DefaultVisual = 10;	{ special request }
+
+    FL_North = NorthGravity;
+    FL_NorthEast = NorthEastGravity;
+    FL_NorthWest = NorthWestGravity;
+    FL_South = SouthGravity;
+    FL_SouthEast = SouthEastGravity;
+    FL_SouthWest = SouthWestGravity;
+    FL_East = EastGravity;
+    FL_West = WestGravity;
+    FL_NoGravity = ForgetGravity;
+    FL_ForgetGravity = ForgetGravity;
+
+{
+#define FL_is_gray(p1 : v)  (p1 : v==GrayScale || v==StaticGray)
+#define FL_is_rgb(p1 : v)   (p1 : v==TrueColor || v==DirectColor)
+}
+
+{
+ * Internal colormap size. Not really very meaningful as fl_mapcolor
+ * and company allow color "leakage"; that is; although only FL_MAX_COLS
+ * are kept in the internal colormap; the server might have substantially
+ * more colors allocated
+ }
+
+FL_MAX_COLS =  1024;
+
+{
+ * FL graphics state information. Some are redundant.
+ }
+
+type
+TFL_STATE = record
+    xvinfo : PXVisualInfo;
+    cur_fnt : PXFontStruct;	{ current font in default GC       }
+    colormap : TColormap ;		{ colormap valid for xvinfo        }
+    trailblazer : TWindow ;		{ a valid window for xvinfo        }
+    vclass, depth,		{ visual class and color depth     }
+    rgb_bits,		{ primary color resolution         }
+    dithered,		{ true if dithered color           }
+    pcm : Longint;			{ true if colormap is not shared   }
+    gc : Array [0..16] of TGC;			{ working GC                       }
+    textgc : array [0..16] of TGC;		{ GC used exclusively for text     }
+    dimmedGC : TGC;		{ A GC having a checkboard stipple }
+    lut :array [0..FL_MAX_COLS] of cardinal;	{ secondary lookup table         }
+    rshift : word; 
+    rmask, rbits : Longint;
+    gshift : word;
+    gmask,gbits : Longint {was int};
+    bshift : word; 
+    bmask, bbits : Longint {was int};
+end;
+PFL_State = ^TFL_State;
+
+{
+#define FL_State FL_STATE	{ for compatibility }
+}
+
+{**** Global variables *****}
+
+Var
+
+fl_display : PDisplay;
+fl_screen : Longint;
+fl_root : TWindow;		{ root window                }
+fl_vroot : TWindow;		{ virtual root window        }
+fl_scrh : Longint; 
+fl_scrw : Longint;	{ screen dimension in pixels }
+fl_vmode : Longint {was int};
+
+{ current version only runs in single visual mode }
+{
+#define  fl_get_vclass(p1 : )        fl_vmode
+#define  fl_get_form_vclass(p1 : a)  fl_vmode
+}
+{
+fl_state[] : PFL_State ;
+fl_ul_magic_char : pchar;
+}
+
+Function fl_mode_capable(p1,p2 : longint ) : longint; cdecl;
+
+{
+#define fl_default_win(p1 : )       (p1 : fl_state[fl_vmode].trailblazer)
+#define fl_default_window(p1 : )    (p1 : fl_state[fl_vmode].trailblazer)
+}
+{
+ * All pixmaps used by FL_OBJECT to simulate double buffering have the
+ * following entries in the structure. TFL_Coord x;y are used to shift
+ * the origin of the drawing routines
+ }
+
+
+{ fonts related }
+Const
+FL_MAX_FONTSIZES=10;
+
+type
+ FL_FONT = record
+    fs : array[0..FL_MAX_FONTSIZES] of PXFontStruct;	{ cached fontstruct }
+    size : array [0..FL_MAX_FONTSIZES] of byte;	{ cached sizes      }
+    nsize : byte;		{ cached so far     }
+    fname : Array[1..80] of char;		{ without size info     }
+end;
+
+{
+ * Some basic drawing routines
+ }
+
+type TFL_POINT = TXPoint;
+     PFL_Point = ^TFL_Point;
+     TFL_RECT = TXRECTANGLE;
+     PFL_RECT = ^TFL_RECT;     
+     
+{ rectangles }
+Procedure fl_rectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl;
+Procedure fl_rectbound(p1,p2,p3,p4 : TFL_Coord;p5 : TFL_COLOR); cdecl;
+
+Procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR); cdecl;
+Procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR); cdecl;
+
+
+{ rectangle with rounded-corners }
+Procedure fl_roundrectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 :TFL_COLOR); cdecl;
+
+{
+#define fl_roundrectf(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 1; p2 : x;y;w;h;c)
+#define fl_roundrect(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 0; p2 : x;y;w;h;c)
+}
+{ general polygon and polylines }
+Procedure fl_polygon(p1 : Longint {was int}; p2 : PFL_POINT; p3 : Longint {was int}; p4 : TFL_COLOR); cdecl;
+
+{
+#define fl_polyf(p1 : p; p2 : n;c)  fl_polygon(p1 : 1; p2 : p; p3 : n; p4 : c)
+#define fl_polyl(p1 : p; p2 : n;c)  fl_polygon(p1 : 0; p2 : p; p3 : n; p4 : c)
+#define fl_polybound(p1 : p; p2 : n;c) do {fl_polyf(p1 : p; p2 : n;c);fl_polyl(p1 : p; p2 : n;FL_BLACK);}while(p1 : 0)
+}
+
+Procedure fl_lines(p1 : TFL_POINT; p2 : Longint {was int}; p3 :TFL_COLOR); cdecl;
+Procedure fl_line(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl;
+Procedure fl_point(p1,p2 : TFL_Coord; p3: TFL_COLOR); cdecl;
+Procedure fl_points(p1 : PFL_POINT; p2 : Longint; p3: TFL_COLOR); cdecl;
+
+{
+#define fl_simple_line fl_line
+}
+Procedure fl_dashedlinestyle(p1 : pchar; p2 :  Longint {was int}); cdecl;
+Procedure fl_drawmode(p1 : Longint {was int});  cdecl;
+
+{
+#define fl_diagline(p1 : x; p2 : y;w;h;c) fl_line(p1 : x; p2 : y;(p1 : x)+(p1 : w)-1; p2 : (p1 : y)+(p1 : h)-1; p2 : c)
+}
+{ line attributes }
+Const 
+  FL_SOLID = 0;
+  FL_USERDASH = 1;
+  FL_USERDOUBLEDASH = 2;
+  FL_DOT = 3;
+  FL_DOTDASH = 4;
+  FL_DASH = 5;
+  FL_LONGDASH = 6;
+
+Procedure fl_linewidth(p1 : Longint {was int});  cdecl;
+Procedure fl_linestyle(p1 : Longint {was int});  cdecl;
+
+Function fl_get_linewidth : longint; cdecl;
+Function fl_get_linestyle : longint; cdecl;
+
+
+{* ellipses *}
+Procedure fl_oval(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl;
+Procedure fl_ovalbound(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl;
+Procedure fl_ovalarc(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6,p7 : Longint; p8 : TFL_COLOR); cdecl;
+
+{
+#define fl_ovalf(p1 : x; p2 : y;w;h;c)     fl_oval(p1 : 1; p2 : x;y;w;h;c)
+#define fl_ovall(p1 : x; p2 : y;w;h;c)     fl_oval(p1 : 0; p2 : x;y;w;h;c)
+#define fl_oval_bound           fl_ovalbound
+
+#define fl_circf(p1 : x; p2 : y;r;col)  fl_oval(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col)
+#define fl_circ(p1 : x; p2 : y;r;col)   fl_oval(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col)
+}
+
+{ arcs }
+Procedure fl_pieslice(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7 :Longint {was int}; p8 : TFL_COLOR); cdecl;
+{
+#define fl_arcf(p1 : x; p2 : y;r;a1;a2;c)  fl_pieslice(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : \
+                                (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 :  a1;a2;c)
+
+#define fl_arc(p1 : x; p2 : y;r;a1;a2;c)  fl_pieslice(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 :  \
+                               (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 :  a1;a2;c)
+}
+{ misc. stuff }
+Procedure fl_add_vertex(p1,p2 :  TFL_Coord); cdecl;
+Procedure fl_add_float_vertex(p1,p2 :  real); cdecl;
+Procedure fl_reset_vertex;  cdecl;
+Procedure fl_endline; cdecl;
+Procedure fl_endpolygon; cdecl;
+Procedure fl_endclosedline;  cdecl;
+
+{
+#define fl_bgnline       fl_reset_vertex
+#define fl_bgnclosedline fl_reset_vertex
+#define fl_bgnpolygon    fl_reset_vertex
+#define fl_v2s(p1 : v)        fl_add_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2i(p1 : v)        fl_add_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2f(p1 : v)        fl_add_float_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2d(p1 : v)        fl_add_float_vertex(p1 : v[0]; p2 :  v[1])
+}
+
+{ high level drawing routines }
+Procedure fl_drw_frame(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR; p7 : Longint {was int}); cdecl;
+Procedure fl_drw_checkbox(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR;p7 : Longint {was int}); cdecl;
+
+{
+ * Interfaces
+ }
+Function fl_get_fontstruct(p1,p2 :  Longint {was int}) : PXFontStruct; cdecl;
+{
+#define fl_get_font_struct fl_get_fontstruct
+#define fl_get_fntstruct fl_get_font_struct
+}
+
+Function fl_get_mouse(p1,p2 : PFL_COORD; p3 : pword) : TWindow; cdecl;
+Procedure fl_set_mouse(p1,p2 :  TFL_Coord); cdecl;
+Function fl_get_win_mouse(p1 : TWindow; p2,p3 : PFL_COORD; p4 : pword) : TWindow; cdecl;
+Function fl_get_form_mouse(p1 : PFL_FORM; p2,p3 : PFL_COORD; p4 : pWord) : TWindow; cdecl;
+Function fl_win_to_form(p1 : TWindow) : PFL_form;  cdecl;
+Procedure fl_set_form_icon(p1 : PFL_FORM; p2 : TPixmap; p3 :TPixmap); cdecl;
+
+{
+#define fl_raise_form(p1 : f) if(p1 : f->window) XRaiseWindow(p1 : fl_display; p2 : f->window)
+#define fl_lower_form(p1 : f) if(p1 : f->window) XLowerWindow(p1 : fl_display; p2 : f->window)
+}
+{
+#define fl_set_foreground(p1 : gc; p2 : c) XSetForeground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c))
+#define fl_set_background(p1 : gc; p2 : c) XSetBackground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c))
+}
+{ General windowing support }
+
+Function fl_wincreate(p1 : pchar) : TWindow;  cdecl;
+Function fl_winshow(p1 : TWindow) : TWindow;  cdecl;
+Function fl_winopen(p1 : pchar) : TWindow;  cdecl;
+Procedure fl_winhide(p1 : TWindow);  cdecl;
+Procedure fl_winclose(p1 : TWindow);   cdecl;
+Procedure fl_winset(p1 : TWindow);  cdecl;
+Function fl_winget : Twindow;  cdecl;
+
+Procedure fl_winresize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winmove(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winreshape(p1 : TWindow; p2,p3,p4,p5 : TFL_Coord); cdecl;
+Procedure fl_winicon(p1 : TWindow; p2 : TPixmap; p3 :TPixmap); cdecl;
+Procedure fl_winbackground(p1 : TWindow; p2 :  cardinal); cdecl;
+Procedure fl_winstepunit(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winisvalid(p1 : TWindow);  cdecl;
+Procedure fl_wintitle(p1 : TWindow; p2 :  pchar); cdecl;
+Procedure fl_winposition(p1,p2 :  TFL_Coord); cdecl;
+
+{
+#define fl_pref_winposition fl_winposition
+#define fl_win_background     fl_winbackground
+#define fl_set_winstepunit    fl_winstepunit
+}
+
+
+Procedure fl_winminsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winmaxsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winaspect(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_reset_winconstraints(p1 : TWindow);  cdecl;
+
+Procedure fl_winsize(p1,p2 :  TFL_Coord); cdecl;
+Procedure fl_initial_winsize(p1,p2 :  TFL_Coord); cdecl;
+{
+#define fl_pref_winsize  fl_winsize
+}
+Procedure fl_initial_winstate(p1 : Longint {was int});  cdecl;
+
+Function fl_create_colormap(p1 : PXVisualInfo; p2 :  Longint {was int}) : TColormap; cdecl;
+
+
+Procedure fl_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl;
+{
+#define fl_pref_wingeometry  fl_wingeometry
+}
+Procedure fl_initial_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl;
+
+{
+Procedure fl_noborder; cdecl;
+Procedure fl_transient; cdecl;
+}
+
+Procedure fl_get_winsize(p1 : TWindow; p2,p3 :PFL_COORD); cdecl;
+Procedure fl_get_winorigin(p1 : TWindow; p2,p3 :PFL_COORD); cdecl;
+Procedure fl_get_wingeometry(p1 : TWindow; p2,p3,p4,p5 : PFL_COORD); cdecl;
+
+{ for compatibility }
+{
+#define fl_get_win_size          fl_get_winsize
+#define fl_get_win_origin        fl_get_winorigin
+#define fl_get_win_geometry      fl_get_wingeometry
+#define fl_initial_winposition   fl_pref_winposition
+
+#define fl_get_display(p1 : )           fl_display
+#define FL_FormDisplay(p1 : form)       fl_display
+#define FL_ObjectDisplay(p1 : object)   fl_display
+}
+
+{ the window an object belongints }
+
+Function FL_ObjWin ( P : PFL_Object) : TWindow; cdecl;
+
+{
+#define FL_OBJECT_WID  FL_ObjWin
+}
+
+{  all registerable events; including Client Message }
+const FL_ALL_EVENT = (KeyPressMask or KeyReleaseMask or
+                      ButtonPressMask or ButtonReleaseMask or
+                      EnterWindowMask or LeaveWindowMask or
+                      ButtonMotionMask or PointerMotionMask);
+
+{ Timer related }
+
+ FL_TIMER_EVENT = $40000000;
+
+
+Function fl_XNextEvent(p1 : PXEvent) : Longint;  cdecl;
+Function fl_XPeekEvent(p1 : PXEvent) : Longint;  cdecl;
+Function fl_XEventsQueued(p1 : Longint {was int}) : Longint;  cdecl;
+Procedure fl_XPutBackEvent(p1 : PXEvent);   cdecl;
+Function fl_last_event : PXEvent ;  cdecl;
+
+type
+TFL_APPEVENT_CB = Procedure (p1 : PXEvent; p2 : pointer); cdecl;
+PFL_APPEVENT_CB = ^TFL_APPEVENT_CB;
+
+Function fl_set_event_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ; cdecl;
+Function fl_set_idle_callback(p1 : PFL_APPEVENT_CB; p2 :  pointer) : PFL_APPEVENT_CB ; cdecl;
+Function fl_addto_selected_xevent(p1 : TWindow; p2 :  longint) : Cardinal; cdecl;
+Function fl_remove_selected_xevent(p1 : TWindow; p2 :  longint) : cardinal; cdecl;
+{
+#define fl_add_selected_xevent  fl_addto_selected_xevent
+}
+{
+ * Group some WM stuff into a structure for easy maintainance
+ }
+const
+    FL_WM_SHIFT = 1;
+    FL_WM_NORMAL = 2;
+
+type TFL_WM_STUFF = record
+    rpx, rpy,		{ reparenting offset for full border }
+    trpx, trpy,		{ reparenting offset for transient   }
+    bw,			{ additional border                  }
+    rep_method : Longint;		{ 1 for shifting; 2 for normal       }
+    pos_request : word;	{ USPOSITION or PPOSITION            }
+end;
+PFL_WM_STUFF = ^TFL_WM_STUFF;
+
+
+Function fl_add_event_callback(p1 : TWindow; p2 :  Longint {was int}; p3 : PFL_APPEVENT_CB; p4 : pointer) : PFL_APPEVENT_CB ; cdecl;
+
+Procedure fl_remove_event_callback(p1 : TWindow; p2 :  Longint {was int}); cdecl;
+Procedure fl_activate_event_callbacks(p1 : TWindow);  cdecl;
+
+Function fl_print_xevent_name(p1 : pchar; p2 : PXEvent) : PXEvent; cdecl;
+
+{
+#define metakey_down(p1 : mask)     (p1 : (p1 : mask) & Mod1Mask)
+#define shiftkey_down(p1 : mask)    (p1 : (p1 : mask) & ShiftMask)
+#define controlkey_down(p1 : mask)  (p1 : (p1 : mask) & ControlMask)
+#define button_down(p1 : mask)      (p1 : (p1 : (p1 : mask) & Button1Mask) || \
+                               (p1 : (p1 : mask) & Button2Mask) || \
+			       (p1 : (p1 : mask) & Button3Mask))
+#define fl_keypressed          fl_keysym_pressed
+}
+{***************** Resources **************}
+
+
+{ bool is Longint {was int}. FL_NONE is defined elsewhere }
+const
+    FL_NONE   = 0;
+    FL_SHORT  = 10; 
+    FL_BOOL   = 11; 
+    FL_INT    = 12;
+    FL_LONG   = 13; 
+    FL_FLOAT  = 14; 
+    FL_STRING = 15;
+    
+Type  TFL_RTYPE = Longint;
+
+TFL_RESOURCE = record
+    res_name,			{ resource name                        }
+    res_class : Pchar;		{ resource class                       }
+    rtype : TFL_RTYPE;		{ FL_INT; FL_FLOAT; FL_BOOL;FL_STRING  }
+    thevar : pointer;		{ address for the variable             }
+    defval : pchar;		{ default setting in string form       }
+    bytes : Longint {was int}		{ used only for strings                }
+end;
+PFL_RESOURCE = ^TFL_RESOURCE;
+
+Type
+ TFL_CMD_OPT = TXrmOptionDescRec;
+ PFL_CMD_OPT = ^TFL_CMD_OPT;
+ 
+Function fl_initialize(p1 : pointer; p2 : ppchar; p3 :pchar; p4 : PFL_CMD_OPT; p5 : Longint {was int}) : Pdisplay; cdecl;
+Procedure fl_finish;   cdecl;
+
+{ addfromhere }
+
+Function fl_get_resource(p1 : pchar; p2 :  pchar; p3 : TFL_RTYPE; p4 : pchar; p5 : pointer; p6 :Longint {was int}) : pchar; cdecl;
+Procedure fl_set_resource(p1 : pchar; p2 :  pchar); cdecl;
+
+Procedure fl_get_app_resources(p1 : PFL_resource; p2 : Longint {was int}); cdecl;
+Procedure fl_set_graphics_mode(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_visualID(p1 : longint);   cdecl;
+Function fl_keysym_pressed(p1 : TKeySym) : Longint;  cdecl;
+
+{
+#define buttonLabelSize  buttonFontSize
+#define sliderLabelSize  sliderFontSize
+#define inputLabelSize   inputFontSize
+}
+{ All Form control variables. Named closely as its resource name }
+Type TFL_IOPT =  record
+    rgamma, ggamma, bgamma : longint; { MUST BE FLOAT(single) !!! }
+    debug, sync,
+    depth, vclass, doubleBuffer,
+    ulPropWidth, ulThickness,	{ underline stuff       }
+    buttonFontSize,
+    sliderFontSize,
+    inputFontSize,
+    browserFontSize,
+    menuFontSize,
+    choiceFontSize,
+    labelFontSize,		{ all other labels fonts }
+    pupFontSize, pupFontStyle,	{ font for pop-up menus  }
+    privateColormap,
+    sharedColormap,
+    standardColormap,
+    ScrollBarType,
+    backingStore,
+    coordUnit,
+    borderWidth,
+    safe : Longint {was int};
+    rgbfile : pchar;		{ where RGB file is     }
+    vname : array [0..23] of char;
+end;
+PFL_IOPT = ^TFL_IOPT; 
+
+
+Const
+
+{ program default masks }
+
+    FL_PDDepth = 1 shl 1 ; 
+    FL_PDClass = 1 shl 2 ; 
+    FL_PDDouble = 1 shl 3 ; 
+    FL_PDSync = 1 shl 4 ; 
+    FL_PDPrivateMap = 1 shl 5 ; 
+    FL_PDLeftScrollBar = 1 shl 6 ; 
+    FL_PDPupFontSize = 1 shl 7 ; 
+    FL_PDButtonFontSize = 1 shl 8 ; 
+    FL_PDInputFontSize = 1 shl 9 ; 
+    FL_PDSliderFontSize = 1 shl 10 ; 
+    FL_PDVisual = 1 shl 11 ; 
+    FL_PDULThickness = 1 shl 12 ; 
+    FL_PDULPropWidth = 1 shl 13 ; 
+    FL_PDBS = 1 shl 14 ; 
+    FL_PDCoordUnit = 1 shl 15 ; 
+    FL_PDDebug = 1 shl 16 ; 
+    FL_PDSharedMap = 1 shl 17 ; 
+    FL_PDStandardMap = 1 shl 18 ; 
+    FL_PDBorderWidth = 1 shl 19 ; 
+    FL_PDSafe = 1 shl 20 ; 
+    FL_PDMenuFontSize = 1 shl 21 ; 
+    FL_PDBrowserFontSize = 1 shl 22 ; 
+    FL_PDChoiceFontSize = 1 shl 23 ; 
+    FL_PDLabelFontSize = 1 shl 24;
+    FL_PDButtonLabelSize = FL_PDButtonFontSize;
+    FL_PDSliderLabelSize = FL_PDSliderFontSize;
+    FL_PDInputLabelSize  = FL_PDInputFontSize;
+    FL_PDButtonLabel  = FL_PDButtonLabelSize;
+ 
+Procedure fl_set_defaults(p1 : cardinal; p2 :  PFL_IOPT); cdecl;
+Procedure fl_set_tabstop(p1 : pchar);  cdecl;
+Procedure fl_get_defaults(p1 : PFL_IOPT);  cdecl;
+Function fl_get_visual_depth : Longint;  cdecl;
+Function fl_vclass_name(p1 : Longint {was int}) : pchar;  cdecl;
+Function fl_vclass_val(p1 : pchar) : Longint {was int};  cdecl;
+Procedure fl_set_ul_property(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_clipping(p1 : TFL_Coord; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord); cdecl;
+Procedure fl_set_gc_clipping(p1 : TGC; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord); cdecl;
+Procedure fl_unset_gc_clipping(p1 : TGC);  cdecl;
+Procedure fl_set_clippings(p1 : PFL_RECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_unset_clipping;  cdecl;
+
+Function fl_textgc : TGC; cdecl;
+{
+#define fl_set_text_clipping(p1 : a; p2 : b;c;d)   fl_set_gc_clipping(p1 : fl_textgc; p2 : a;b;c;d)
+#define fl_unset_text_clipping(p1 : ) fl_unset_gc_clipping(p1 : fl_textgc)
+}
+
+Const
+ FL_NORMAL_BITMAP = 0;
+
+{**** Defaults ****}
+FL_BITMAP_BOXTYPE	=FL_NO_BOX;
+FL_BITMAP_COL1		=FL_COL1;	{ background of bitmap }
+FL_BITMAP_COL2		=FL_COL1;	{ not used currently   }
+FL_BITMAP_LCOL		=FL_LCOL;	{ foreground of bitmap }
+FL_BITMAP_ALIGN		=FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+{FL_BITMAP_MAXSIZE	= 128*128;}
+
+{**** Routines ****}
+Function fl_create_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_set_bitmap_data(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : pointer); cdecl;
+Procedure fl_set_bitmap_file(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Function fl_read_bitmapfile(p1 : TWindow; p2 :  pchar; p3,p4 : pword; p5,p6 : pointer) : TPixmap ; cdecl;
+
+{
+#define fl_create_from_bitmapdata(p1 : win; p2 : data; p3 : w; p4 : h)\
+                   XCreateBitmapFromData(p1 : fl_get_display(p1 : ); p2 : win; p3 :\
+                   (p1 : char *)data; p2 : w; p3 :h)
+
+{ for compatibility }
+#define fl_set_bitmap_datafile fl_set_bitmap_file
+}
+
+{ PIXMAP stuff }
+
+Const
+FL_NORMAL_PIXMAP   = 0;
+
+Function fl_create_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6  :pchar) : PFL_OBJECT; cdecl;
+Function fl_add_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_pixmap_data(p1 : PFL_OBJECT; p2 :  ppchar); cdecl;
+Procedure fl_set_pixmap_file(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_pixmap_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int}); cdecl;
+Procedure fl_set_pixmap_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap); cdecl;
+Procedure fl_set_pixmap_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_free_pixmap_pixmap(p1 : PFL_OBJECT);  cdecl;
+Function fl_get_pixmap_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ; cdecl;
+
+Function fl_read_pixmapfile(p1 : TWindow; p2 :  pchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR)  : TPixmap ; cdecl;
+Function fl_create_from_pixmapdata(p1 : TWindow; p2 :  ppchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ; cdecl;
+{
+#define fl_free_pixmap(p1 : id)  if(p1 : id != None) XFreePixmap(p1 : fl_display; p2 :  id);
+}
+
+Function fl_create_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Type TFL_BROWSER_TYPE = Longint;
+
+Const
+    FL_NORMAL_BROWSER = 0;
+    FL_SELECT_BROWSER = 1;
+    FL_HOLD_BROWSER   = 2;
+    FL_MULTI_BROWSER  = 3;
+
+{**** Defaults ****}
+
+ FL_BROWSER_BOXTYPE	= FL_DOWN_BOX;
+ FL_BROWSER_COL1	= FL_COL1;
+ FL_BROWSER_COL2	= FL_YELLOW;
+ FL_BROWSER_LCOL	= FL_LCOL;
+ FL_BROWSER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_BROWSER_SLCOL	= FL_COL1;
+ FL_BROWSER_LINELENGTH	= 1024;
+ FL_BROWSER_FONTSIZE    = FL_SMALL_FONT;
+
+{ as of .86
+ FL_SCROLLBAR_OFF = 0;
+ FL_SCROLLBAR_ON = 1;
+ FL_SCROLLBAR_ALWAYS_ON = 2;
+}
+
+{**** Routines ****}
+
+Function fl_create_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6:  pchar) : PFL_OBJECT; cdecl;
+Procedure fl_clear_browser(p1 : PFL_OBJECT); cdecl;
+Procedure fl_add_browser_line(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_addto_browser(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_addto_browserchars(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+
+Procedure fl_insert_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_delete_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_replace_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Function fl_get_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl;
+Function fl_load_browser(p1 : PFL_OBJECT; p2 :  pchar ) : Longint ; cdecl;
+
+Procedure fl_select_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_deselect_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_deselect_browser(p1 : PFL_OBJECT);  cdecl;
+Function fl_isselected_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ; cdecl;
+
+Function fl_get_browser_topline(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_browser(p1 : PFL_OBJECT ) : Longint ; cdecl;
+Function fl_get_browser_maxline(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_browser_screenlines(p1 : PFL_OBJECT ) : Longint ; cdecl;
+
+Procedure fl_set_browser_topline(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_specialkey(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_leftslider(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_line_selectable(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_get_browser_dimension(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl;
+Procedure fl_set_browser_dblclick_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint); cdecl;
+{
+#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
+}
+Procedure fl_set_browser_xoffset(p1 : PFL_OBJECT; p2 :  TFL_Coord); cdecl;
+Procedure fl_set_browser_scrollbarsize (p1 : PFL_OBJECT;p2,p3 : longint); cdecl;
+Procedure fl_show_browser_line(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Function fl_get_browser_xoffset(p1 : PFL_OBJECT) : TFL_Coord ; cdecl;
+
+type
+ TFL_BUTTON_TYPE= Longint;
+
+Const
+    FL_NORMAL_BUTTON	= 0;
+    FL_PUSH_BUTTON	= 1;
+    FL_RADIO_BUTTON	= 2;
+    FL_HIDDEN_BUTTON	= 3;
+    FL_TOUCH_BUTTON	= 4;
+    FL_INOUT_BUTTON	= 5;
+    FL_RETURN_BUTTON	= 6;
+    FL_HIDDEN_RET_BUTTON= 7;
+    FL_MENU_BUTTON	= 8;
+
+type TFL_BUTTON_SPEC = record
+    pixmap,mask :  TPixmap;
+    bits_w, bits_h : Cardinal;
+    val,			{ whether on }
+    mousebut,		{ mouse button that caused the push     }
+    timdel,			{ time since last touch (p1 : TOUCH buttons) }
+    event : Longint;			{ what event triggers redraw            }
+    cspecl : longint;		{ reserved for class specfic stuff      }
+    cspecv : pointer;		{ misc. things                          }
+    filename : pchar;
+end;
+TFL_BUTTON_STRUCT = TFL_BUTTON_SPEC;
+PFL_BUTTON_STRUCT = ^TFL_BUTTON_STRUCT;
+
+TFL_DrawButton = Procedure  (p1 : PFL_OBJECT);  cdecl;
+PFL_DrawButton  = ^TFL_DrawButton;
+TFL_CleanupButton = Procedure (p1 : PFL_BUTTON_STRUCT);  cdecl;
+PFL_CleanupButton= ^TFL_CleanupButton;
+
+Const
+FL_BUTTON_BOXTYPE	= FL_UP_BOX;
+FL_BUTTON_COL1		= FL_COL1;
+FL_BUTTON_COL2		= FL_COL1;
+FL_BUTTON_LCOL		= FL_LCOL;
+FL_BUTTON_ALIGN		= FL_ALIGN_CENTER;
+
+FL_BUTTON_MCOL1		= FL_MCOL;
+FL_BUTTON_MCOL2		= FL_MCOL;
+
+FL_BUTTON_BW		= FL_BOUND_WIDTH;
+
+{
+ *  light button defaults
+ }
+FL_LIGHTBUTTON_BOXTYPE	= FL_UP_BOX;
+FL_LIGHTBUTTON_COL1	= FL_COL1;
+FL_LIGHTBUTTON_COL2	= FL_YELLOW;
+FL_LIGHTBUTTON_LCOL	= FL_LCOL;
+FL_LIGHTBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+FL_LIGHTBUTTON_TOPCOL	= FL_COL1;
+FL_LIGHTBUTTON_MCOL	= FL_MCOL;
+FL_LIGHTBUTTON_MINSIZE	= 12;
+
+{* round button defaults **}
+
+  FL_ROUNDBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_ROUNDBUTTON_COL1	= FL_MCOL;
+  FL_ROUNDBUTTON_COL2	= FL_YELLOW;
+  FL_ROUNDBUTTON_LCOL	= FL_LCOL;
+  FL_ROUNDBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_ROUNDBUTTON_TOPCOL	= FL_COL1;
+  FL_ROUNDBUTTON_MCOL	= FL_MCOL;
+
+{* round3d button defaults **}
+
+  FL_ROUND3DBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_ROUND3DBUTTON3D_COL1	= FL_MCOL;
+  FL_ROUND3DBUTTON_COL2	= FL_YELLOW;
+  FL_ROUND3DBUTTON_LCOL	= FL_LCOL;
+  FL_ROUND3DBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_ROUND3DBUTTON_TOPCOL	= FL_COL1;
+  FL_ROUND3DBUTTON_MCOL	= FL_MCOL;
+
+{* check button defaults **}
+
+  FL_CHECKBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_CHECKBUTTON_COL1	= FL_COL1;
+  FL_CHECKBUTTON_COL2	= FL_YELLOW;
+  FL_CHECKBUTTON_LCOL	= FL_LCOL;
+  FL_CHECKBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_CHECKBUTTON_TOPCOL	= FL_COL1;
+  FL_CHECKBUTTON_MCOL	= FL_MCOL;
+
+{* bitmap button defaults *}
+  FL_BITMAPBUTTON_BOXTYPE	= FL_UP_BOX;
+  FL_BITMAPBUTTON_COL1	= FL_COL1;	{ bitmap background  }
+  FL_BITMAPBUTTON_COL2	= FL_BLUE;	{ "focus" color       }
+  FL_BITMAPBUTTON_LCOL	= FL_LCOL;	{ bitmap foreground   }
+  FL_BITMAPBUTTON_ALIGN	= FL_ALIGN_BOTTOM;
+
+{* bitmap button defaults *}
+  FL_PIXMAPBUTTON_BOXTYPE	= FL_UP_BOX;
+  FL_PIXMAPBUTTON_COL1	= FL_COL1;	{ box col    }
+  FL_PIXMAPBUTTON_COL2	= FL_YELLOW;	{ bound rect }
+  FL_PIXMAPBUTTON_LCOL	= FL_LCOL;
+  FL_PIXMAPBUTTON_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Routines ****}
+
+Function fl_create_button(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_bitmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_button(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+
+
+Procedure fl_set_bitmapbutton_data (p1 : PFL_OBJECT; p2,p3 : Longint {was int};   p4 : pchar); cdecl;
+Procedure fl_set_bitmapbutton_file (p1 : PFL_OBJECT; p2: pchar); cdecl;
+Function  fl_add_bitmapbutton (p1 : longint; p2,p3,p4,p5: TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+{
+#define fl_set_bitmapbutton_datafile  fl_set_bitmapbutton_file
+}
+
+Function fl_add_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 :  ppchar); cdecl;
+Procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int}); cdecl;
+Procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap); cdecl;
+Procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT);  cdecl;
+Function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ; cdecl;
+
+Function fl_get_button(p1 : PFL_OBJECT ) : Longint ;   cdecl;
+Procedure fl_set_button(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Function fl_get_button_numb(p1 : PFL_OBJECT ) : Longint ; cdecl;
+
+Procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int}); cdecl;
+
+Function fl_create_generic_button(p1,p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord;p7 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_add_button_class(p1 : Longint {was int}; p2 : PFL_DRAWBUTTON; p3 : PFL_CLEANUPBUTTON); cdecl;
+
+
+{
+ * $Id$
+ *
+ * Header for FL_CANVAS
+ *
+ }
+
+
+
+type TFL_CANVAS_TYPE = Longint;
+
+const 
+    FL_NORMAL_CANVAS = 0;
+    FL_SCROLLED_CANVAS = 1;
+
+Type
+TFL_HANDLE_CANVAS = Procedure (P1 : PFL_OBJECT; P2 : TWindow; P3 : Longint {was int}; P4 : Longint {was int};
+				 P5 : PXEvent; P6 : pointer);cdecl;
+PFL_HANDLE_CANVAS = ^TFL_HANDLE_CANVAS;
+
+TFL_MODIFY_CANVAS_PROP = Procedure (p1 : PFL_OBJECT); cdecl;
+PFL_MODIFY_CANVAS_PROP = ^TFL_MODIFY_CANVAS_PROP;
+
+{******************* Default ********************}
+
+Const   FL_CANVAS_BOXTYPE  =  FL_DOWN_BOX;
+        FL_CANVAS_ALIGN    =  FL_ALIGN_TOP;
+
+
+{*********** Interfaces    ***********************}
+
+
+Function fl_create_generic_canvas(p1 : Longint; p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord; p7 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl;
+
+Function fl_create_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_create_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+
+
+Procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap); cdecl;
+Procedure fl_set_canvas_visual(p1 : PFL_OBJECT; p2 :  PVisual); cdecl;
+Procedure fl_set_canvas_depth(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_canvas_attributes(p1 : PFL_OBJECT; p2 : word;  p3 : PXSetWindowAttributes); cdecl;
+
+Function fl_add_canvas_handler(p1 : PFL_OBJECT; p2 :  Longint {was int}; p3 : PFL_HANDLE_CANVAS; p4 : pointer) : PFL_HANDLE_CANVAS ; cdecl;
+
+Function fl_get_canvas_id(p1 : PFL_OBJECT ) : TWindow ; cdecl;
+Function fl_get_canvas_colormap(p1 : PFL_OBJECT ) : TColormap;  cdecl;
+Function fl_get_canvas_depth(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Procedure fl_remove_canvas_handler(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : PFL_HANDLE_CANVAS); cdecl;
+Procedure fl_hide_canvas(p1 : PFL_OBJECT); 	{ internal use only } cdecl;
+Procedure fl_canvas_yield_to_shortcut(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_share_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap); cdecl;
+Procedure fl_modify_canvas_prop(p1 : PFL_OBJECT; 
+				  P2 : PFL_MODIFY_CANVAS_PROP;
+				  p3 : PFL_MODIFY_CANVAS_PROP;
+				  p4 : PFL_MODIFY_CANVAS_PROP);cdecl;
+
+{ OpenGL canvases }
+Function fl_create_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_glcanvas_defaults(p1 : pointer);  cdecl;
+Procedure fl_get_glcanvas_defaults(p1 : pointer);  cdecl;
+Procedure fl_set_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer); cdecl;
+Procedure fl_get_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer); cdecl;
+Procedure fl_set_glcanvas_direct(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_activate_glcanvas(p1 : PFL_OBJECT); cdecl;
+
+Function fl_get_glcanvas_xvisualinfo(p1 : PFL_OBJECT ) : PXVisualInfo;  cdecl;
+
+{
+# if defined(p1 : __GLX_glx_h__) || defined(p1 : GLX_H)
+Function fl_get_glcanvas_context(p1 : PFL_OBJECT ob ) : GLXContext ;  cdecl;
+Function fl_glwincreate(p1 : *; p2 : GLXContext *; p3 : Longint {was int}; p4 : Longint {was int} ) : TWindow ; cdecl;
+Function fl_glwinopen(p1 : *; p2 : GLXContext *; p3 : Longint {was int}; p4 : Longint {was int} ) : TWindow ; cdecl;
+}
+
+
+
+{
+ * $Id$
+ *
+ * Object Class: Chart
+ *
+ }
+
+
+const
+    FL_BAR_CHART	= 0;
+    FL_HORBAR_CHART	= 1;
+    FL_LINE_CHART	= 2;
+    FL_FILL_CHART	= 3;
+    FL_SPIKE_CHART	= 4;
+    FL_PIE_CHART	= 5;
+    FL_SPECIALPIE_CHART	= 6;
+     
+Type  TFL_CHART_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const  
+  FL_CHART_BOXTYPE	= FL_BORDER_BOX;
+  FL_CHART_COL1		= FL_COL1;
+  FL_CHART_LCOL		= FL_LCOL;
+  FL_CHART_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+  FL_CHART_MAX		= 512;
+
+{**** Routines ****}
+
+Function fl_create_chart(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 :  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_clear_chart(p1 : PFL_OBJECT); cdecl;
+Procedure fl_add_chart_value(p1 : PFL_OBJECT; p2 : double; p3 : pchar; p4 : Longint {was int}); cdecl;
+Procedure fl_insert_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl;
+Procedure fl_replace_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl;
+Procedure fl_set_chart_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_chart_maxnumb(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_autosize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_lstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_lsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_lcolor(p1 : PFL_OBJECT; p2 :  TFL_COLOR); cdecl;
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+const
+  FL_NORMAL_CHOICE	= 0;
+  FL_NORMAL_CHOICE2     = 1;
+  FL_DROPLIST_CHOICE	= 2;
+
+Type
+ TFL_CHOICE_TYPE = Longint;
+
+Const
+  FL_SIMPLE_CHOICE  	= FL_NORMAL_CHOICE;
+
+{**** Defaults ****}
+
+ FL_CHOICE_BOXTYPE	= FL_ROUNDED_BOX;
+ FL_CHOICE_COL1		= FL_COL1;
+ FL_CHOICE_COL2		= FL_LCOL;
+ FL_CHOICE_LCOL		= FL_LCOL;
+ FL_CHOICE_ALIGN	= FL_ALIGN_LEFT;
+
+{**** Others   ****}
+
+ FL_CHOICE_MCOL		= FL_MCOL;
+ FL_CHOICE_MAXITEMS	= 63;
+
+{**** Routines ****}
+
+Function fl_create_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) :  PFL_OBJECT; cdecl;
+
+Function fl_add_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar ) : PFL_OBJECT; cdecl;
+Procedure fl_clear_choice(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_addto_choice(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_replace_choice(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_delete_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_text(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Function fl_get_choice(p1 : PFL_OBJECT ) : Longint ; cdecl;
+Function fl_get_choice_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl;
+Function fl_get_choice_maxitems(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_choice_text(p1 : PFL_OBJECT ) : pchar; cdecl;
+Procedure fl_set_choice_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_align(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : word); cdecl;
+Procedure fl_set_choice_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Function fl_set_choice_entries(p1 : PFL_OBJECT ; p2 : PFL_PUP_ENTRY) : longint; cdecl;
+
+
+{
+ * $Id$
+ *
+ }
+
+
+Const
+    FL_ANALOG_CLOCK	= 0;
+    FL_DIGITAL_CLOCK	= 1;
+
+ FL_CLOCK_BOXTYPE   = FL_UP_BOX;
+ FL_CLOCK_COL1      = FL_INACTIVE_COL;
+ FL_CLOCK_COL2      = FL_BOTTOM_BCOL;
+ FL_CLOCK_LCOL      = FL_BLACK;
+ FL_CLOCK_ALIGN     = FL_ALIGN_BOTTOM;
+
+ FL_CLOCK_TOPCOL    = FL_COL1;
+
+Function fl_create_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_get_clock(p1 : PFL_OBJECT; p2,p3,p4 : pointer); cdecl;
+Function fl_set_clock_adjustment ( p1 : PFL_OBJECT; p2 : longint) : longint; cdecl;
+Procedure fl_set_clock_ampm(p1 : PFL_OBJECT; p2 : Longint); cdecl;
+
+
+{
+ * $Id$
+ *
+ }
+
+
+Const
+    FL_NORMAL_COUNTER = 0;
+    FL_SIMPLE_COUNTER = 1;
+    
+type TFL_COUNTER_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+ FL_COUNTER_BOXTYPE	= FL_UP_BOX;
+ FL_COUNTER_COL1	= FL_COL1;
+ FL_COUNTER_COL2	= FL_BLUE;	{ ct label     }
+ FL_COUNTER_LCOL	= FL_LCOL;	{ ct reporting }
+ FL_COUNTER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_COUNTER_BW		= FL_BOUND_WIDTH-1;
+
+{**** Routines ****}
+
+Function fl_create_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_counter_value(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_counter_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_counter_step(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_counter_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Function  fl_get_counter_value(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_get_counter_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;
+Procedure fl_get_counter_step(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;
+Procedure fl_set_counter_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_counter_filter(p1 : PFL_OBJECT;p2 : pointer); {!!!!} cdecl;
+{
+				  pchar(p1 : *)(p1 : PFL_OBJECT; p2 : double; p3 :Longint {was int}));
+}
+
+{
+ * $Id$
+ *
+ * Cursor defs and prototypes
+ *
+ }
+
+
+{$i cursorfont.inc}
+
+const FL_DEFAULT_CURSOR = -1;
+      FL_INVISIBLE_CURSOR = -2;
+
+Procedure fl_set_cursor(p1 : TWindow; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_cursor_color(p1 : longint; p2 : TFL_COLOR; p3 :TFL_COLOR); cdecl;
+Function fl_create_bitmap_cursor(p1 : pchar; p2 :  pchar; p3,p4,p5,p6 : Longint {was int}) : TCursor; cdecl;
+Function fl_get_cursor_byname(p1 : longint ) : TCursor;  cdecl;
+Function fl_create_animated_cursor(p1 : Plongint;p2 : longint): Longint; cdecl;
+
+{
+#define fl_reset_cursor(p1 : win) fl_set_cursor(p1 : win; p2 :  -1);
+}
+
+
+
+{
+ * $Id$
+ }
+
+
+Const
+    FL_NORMAL_DIAL = 0;
+    FL_LINE_DIAL   = 1;
+    FL_FILL_DIAL   = 2;
+    
+    FL_DIAL_CW  = 0;
+    FL_DIAL_CCW = 1;
+
+Type
+  TFL_DIAL_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+
+ FL_DIAL_BOXTYPE	= FL_FLAT_BOX;
+ FL_DIAL_COL1		= FL_COL1;
+ FL_DIAL_COL2		= FL_RIGHT_BCOL;
+ FL_DIAL_LCOL		= FL_LCOL;
+ FL_DIAL_ALIGN		= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_DIAL_TOPCOL		= FL_COL1;
+
+{**** Routines ****}
+
+Function fl_create_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 :pchar) : PFL_OBJECT; cdecl;
+Function fl_add_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_dial_value(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_dial_value(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_set_dial_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_dial_bounds(p1 : PFL_OBJECT; p2 : pdouble; p3 :pdouble); cdecl;
+
+Procedure fl_set_dial_step(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_dial_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_dial_angles(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_dial_cross(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_dial_direction (p1 : PFL_OBJECT; p2 : Longint); cdecl;
+
+{
+ * $Id$
+ *
+ *  Convenience Functions to read a directory cdecl;
+ }
+
+
+{  File types }
+
+Const
+    FT_FILE  = 0; 
+    FT_DIR   = 1; 
+    FT_LINK  = 2; 
+    FT_SOCK  = 3;
+    FT_FIFO  = 4; 
+    FT_BLK   = 5;
+    FT_CHR   = 6; 
+    FT_OTHER = 7;
+
+type TFL_Dirlist = record
+    name : pchar;			{ entry name }
+    ftype : longint;			{ FILE_TYPE  }
+    dl_mtime : longint;
+    dl_size : cardinal;
+    filler : array[0..2] of longint;
+    end;
+    PFL_Dirlist = ^TFL_Dirlist;
+
+    
+TFL_DIRLIST_FILTER = Procedure (p1 : pchar; p2 :  Longint {was int}); cdecl;
+PFL_DIRLIST_FILTER = ^TFL_DIRLIST_FILTER;
+
+Const
+  FL_ALPHASORT  = 1;
+  FL_RALPHASORT = 2;
+  FL_MTIMESORT  = 3;
+  FL_RMTIMESORT = 4;
+  FL_SIZESORT  = 5;
+  FL_RSIZESORT = 6;
+  
+
+{ read dir with pattern filtering. All dirs read might be cached.
+ * must not change dirlist in anyway.
+ }
+Function fl_get_dirlist(p1 : pchar; p2 : pchar;	p3 : pointer;p4	:longint) : PFL_Dirlist;	{ rescan } cdecl;
+
+
+Function fl_set_dirlist_filter (p1 : PFL_DIRLIST_FILTER ) : PFL_DIRLIST_FILTER ; cdecl;
+Procedure fl_set_dirlist_sort ( p1 : longint); cdecl;
+
+Procedure fl_free_dirlist(p1 : PFL_Dirlist);  cdecl;
+
+{ Free all directory caches }
+Procedure fl_free_all_dirlist;  cdecl;
+
+Function fl_is_valid_dir(p1 : pchar ) : Longint; cdecl;
+Function fl_fmtime(p1 : pchar ) : cardinal ;  cdecl;
+Function fl_fix_dirname(p1 : pchar) : pchar;  cdecl;
+
+Const 
+ FLPS_AUTO = 0;
+ FLPS_LANDSCAPE = 1;
+ FLPS_PORTRAIT = 2;
+ 
+
+ FLPS_BW = -1;
+ FLPS_GRAYSCALE=0;
+ 
+ type
+   TFLPS_CONTROL = record
+    ps_color,orientation,auto_fit,drawbox,eps : longint;
+    xdpi,ydpi,paper_w,paper_h, gamma : real; { Must be float }
+   end;
+   PFLPS_CONTROL = ^TFLPS_CONTROL;
+   
+Function flps_init : PFLPS_CONTROL; cdecl;
+Function fl_object_ps_dump (p1 : PFL_OBJECT; p2 : pchar) : longint; cdecl;
+   
+{
+ * $Id$
+ *
+ }
+
+
+{ types of frames }
+Const
+    FL_NO_FRAME		= 0;
+    FL_UP_FRAME		= 1;
+    FL_DOWN_FRAME	= 2;
+    FL_BORDER_FRAME	= 3;
+    FL_SHADOW_FRAME	= 4;
+    FL_ENGRAVED_FRAME	= 5;
+    FL_ROUNDED_FRAME	= 6;
+    FL_EMBOSSED_FRAME	= 7;
+    FL_OVAL_FRAME	= 8;
+
+    FL_FRAME_COL1 = FL_BLACK;
+    FL_FRAME_COL2 = FL_COL1;
+    FL_FRAME_LCOL = FL_BLACK;
+
+Function fl_create_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+
+{
+ * $Id$
+ *
+ *  Object Class: Free
+ }
+
+Const
+    FL_NORMAL_FREE	= 0;
+    FL_INACTIVE_FREE	= 1;
+    FL_INPUT_FREE	= 2;
+    FL_CONTINUOUS_FREE	= 3;
+    FL_ALL_FREE		= 4;
+Type
+   TFL_FREE_TYPE = Longint;
+   PFL_FREE_TYPE = ^TFL_FREE_TYPE;
+
+Const FL_SLEEPING_FREE =  FL_INACTIVE_FREE;
+
+
+Function fl_create_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar; p7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;
+Function fl_add_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar; P7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;
+
+{
+ * $Id$
+ }
+
+Const
+ FLAlertDismissLabel = 'flAlert.dismiss.label';
+ FLQuestionYesLabel  = 'flQuestion.yes.label';
+ FLQuestionNoLabel   = 'flQuestion.no.label';
+ FLOKLabel           = 'flInput.ok.label';
+ FLInputClearLabel   = 'flInput.clear.label';
+ FLInputCancelLabel   = 'flInput.cancel.label';
+
+{ from goodies.c }
+Procedure fl_set_goodies_font(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Procedure fl_show_message(p1 : pchar; p2 : pchar; p3 :pchar); cdecl;
+Procedure fl_show_messages(p1 : pchar); cdecl;
+Procedure fl_show_alert(p1 : pchar; p2 : pchar; p3 : pchar; p4 : Longint {was int}); cdecl;
+Function fl_show_question(p1 : pchar; p2 : longint) : Longint ; cdecl;
+Function fl_show_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl;
+Function fl_show_simple_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl;
+Function fl_show_colormap(p1 : Longint ) : Longint ;   cdecl;
+Function fl_show_choice(p1,p2,p3 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint; cdecl;
+Function fl_show_choices(p1 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint; cdecl;
+Procedure fl_set_choices_shortcut(p1,p2,p3 :pchar); cdecl;
+
+Procedure fl_show_oneliner(p1 : pchar; p2 : TFL_Coord; p3 :TFL_Coord); cdecl;
+Procedure fl_hide_oneliner;  cdecl;
+Procedure fl_set_oneliner_font(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_oneliner_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl;
+
+type TFD_CMDLOG = record
+    form : PFL_FORM;
+    browser,close_browser,clear_browser : PFL_OBJECT;
+end;
+PFD_CMDLOG = ^TFD_CMDLOG;
+
+Function fl_exe_command(p1 : pchar; p2 : Longint) : Longint; cdecl;
+Function fl_end_command(p1 : longint) : Longint; cdecl;
+Function fl_check_command(p1 : longint) : longint; cdecl;
+Function fl_end_all_command : Longint; cdecl;
+Procedure fl_show_command_log(p1 : Longint); cdecl;
+Procedure fl_hide_command_log; cdecl;
+Procedure fl_clear_command_log; cdecl;
+Procedure fl_addto_command_log(p1 : pchar); cdecl;
+Procedure fl_set_command_log_position(p1,p2 :longint); cdecl;
+Function fl_get_command_log_fdstruct : PFD_CMDLOG; cdecl;
+
+{ aliases }
+{
+#define fl_open_command    fl_exe_command
+#define fl_close_command   fl_end_command
+}
+
+{****** from file selector ****************}
+
+Const  FL_MAX_FSELECTOR =  6;
+
+type TFD_FSELECTOR = record
+    fselect : PFL_FORM;
+    browser, theinput, prompt, resbutt,
+    patbutt,dirbutt, cancel, ready : PFL_OBJECT;
+    dirlabel,patlabel : PFL_OBJECT;
+    appbut : array[0..2] of PFL_OBJECT;
+end;
+
+PFD_FSELECTOR = ^TFD_FSELECTOR;
+
+Function fl_use_fselector(p1 : LongInt ) : LongInt;  cdecl;
+Function fl_show_fselector(p1,p2,p3,p4 :  pchar) : pchar; cdecl;
+
+Procedure fl_set_fselector_fontsize (p1 : Longint); cdecl;
+Procedure fl_set_fselector_fontstyle (p1 : longint); cdecl;
+Procedure fl_set_fselector_placement(p1 : LongInt);  cdecl;
+Procedure fl_set_fselector_border(p1 : LongInt);  cdecl;
+
+{
+#define fl_set_fselector_transient(p1 : b)   \
+                     fl_set_fselector_border(p1 : (p1 : b)?FL_TRANSIENT:FL_FULLBORDER)
+}
+
+Type TFSelector_Callback = Function (P1 : Pchar; P2 : Pointer) : Longint;  cdecl;
+     PFSelector_Callback = ^TFSelector_Callback;
+     TFL_Procedure = Procedure; cdecl;
+     PFL_Procedure = ^TFL_Procedure;
+
+Procedure fl_set_fselector_callback( p1 : PFSelector_Callback; p2 : pointer); cdecl;
+Function fl_get_filename : pchar; cdecl;
+Function fl_get_directory : pchar;  cdecl;
+Function fl_get_pattern : pchar;   cdecl;
+Function fl_set_directory (p1 : pchar ) : LongInt;  cdecl;
+Procedure fl_set_pattern (p1 : pchar); cdecl;
+Procedure fl_refresh_fselector;  cdecl;
+Procedure fl_add_fselector_appbutton(p1 : pchar; p2 : PFL_Procedure; p3 : pointer); cdecl;
+Procedure fl_remove_fselector_appbutton(p1 : pchar); cdecl;
+Procedure fl_disable_fselector_cache(p1 : LongInt);  cdecl;
+Procedure fl_invalidate_fselector_cache;  cdecl;
+Function fl_get_fselector_form : PFL_FORM;  cdecl;
+Function fl_get_fselector_fdstruct  : PFD_FSELECTOR;  cdecl;
+Procedure fl_hide_fselector;  cdecl;
+
+
+Procedure fl_set_fselector_filetype_marker(p1,p2,p3,p4,p5 : Longint); cdecl;
+
+{
+#define fl_show_file_selector     fl_show_fselector
+#define fl_set_fselector_cb       fl_set_fselector_callback
+#define fl_set_fselector_title(p1 : s) fl_set_form_title(p1 : fl_get_fselector_form(p1 : ); p2 : s)
+}
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+{**** Types    ****}
+
+Const 
+    FL_NORMAL_INPUT	= 0;
+    FL_FLOAT_INPUT	= 1;
+    FL_INT_INPUT	= 2;
+    FL_DATE_INPUT	= 3;
+    FL_MULTILINE_INPUT	= 4;
+    FL_HIDDEN_INPUT	= 5;
+    FL_SECRET_INPUT	= 6;
+    
+    FL_INPUT_MMDD       = 0;
+    FL_INPUT_DDMM	= 1;
+    
+Type TFL_INPUT_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const
+   FL_INPUT_BOXTYPE		= FL_DOWN_BOX;
+   FL_INPUT_COL1		= FL_COL1;
+   FL_INPUT_COL2		= FL_MCOL;
+   FL_INPUT_LCOL		= FL_LCOL;
+   FL_INPUT_ALIGN		= FL_ALIGN_LEFT;
+
+{**** Others   ****}
+
+   FL_INPUT_TCOL		= FL_LCOL;
+   FL_INPUT_CCOL		= FL_BLUE;
+
+   cFL_RINGBELL             = (1 shl 4);
+
+{**** Routines ****}
+
+Function fl_create_input(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_input(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_input(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_input_color(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_input_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_scroll(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_cursorpos(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_input_selected(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_input_maxchars(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_format(p1 : PFL_OBJECT; p2,p3 :  Longint {was int}); cdecl;
+Procedure fl_set_input_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_xoffset(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_topline(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_scrollbarsize(p1 : PFL_OBJECT; p2,p3 :  Longint {was int}); cdecl;
+
+Function fl_get_input(p1 : PFL_OBJECT ) : pchar;   cdecl;
+Function fl_get_input_cursorpos(p1 : PFL_OBJECT; p2,p3 : Pointer ) : LongInt; cdecl;
+Function fl_get_input_topline(p1 : PFL_OBJECT;p2,p3 : PLongint) : Longint; cdecl;
+Function fl_get_input_screenlines(p1 : PFL_OBJECT) : Longint; cdecl;
+Function fl_get_input_numberoflines(p1 : PFL_OBJECT) : Longint; cdecl;
+Procedure fl_get_input_format(p1 : PFL_OBJECT;p2,p3 : PLongint); cdecl;
+Function fl_get_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}) : pchar ;  cdecl;
+
+
+
+type
+ TFL_INPUTVALIDATOR = Procedure (p1 : PFL_OBJECT; p2,p3 : pchar; p4 : Longint {was int}); cdecl;
+ PFL_INPUTVALIDATOR= ^TFL_INPUTVALIDATOR;
+
+Function fl_set_input_filter(p1 : PFL_OBJECT; p2 :  PFL_INPUTVALIDATOR ) : PFL_INPUTVALIDATOR ; cdecl;
+
+{
+#define fl_set_input_shortcut fl_set_object_shortcut
+#define ringbell(p1 : )  XBell(p1 : fl_display; p2 :  0)
+}
+
+type TFL_EditKeymap = record
+    { basic editing }
+    del_prev_char : Longint;		{ delete previous char    }
+    del_next_char : Longint;		{ delete next char        }
+    del_prev_word : Longint;		{ delete previous word    }
+    del_next_word : Longint;		{ delete next word        }
+
+    { movement }
+    moveto_prev_line : Longint;	{ one line  up             }
+    moveto_next_line : Longint;	{ one line down            }
+    moveto_prev_char : Longint;	{ one char left            }
+    moveto_next_char : Longint;	{ one char right           }
+    moveto_prev_word : Longint;	{ one word left            }
+    moveto_next_word : Longint;	{ one word right           }
+    moveto_prev_page : Longint;	{ one page up              }
+    moveto_next_page : Longint;	{ one page down            }
+    moveto_bol : Longint;		{ move to begining of line }
+    moveto_eol : Longint;		{ move to end of line      }
+    moveto_bof : Longint;		{ move to begin of file    }
+    moveto_eof : Longint;		{ move to end of file      }
+
+    { misc. stuff }
+    transpose : Longint;		{ switch two char positions }
+    paste : Longint;			{ paste the edit buffer    }
+    backspace : Longint;		{ another  del_prev_char   }
+    del_to_bol : Longint;		{ cut to begining of line  }
+    del_to_eol : Longint;		{ cut to end of line       }
+    clear_field : Longint;		{ delete everything        }
+    del_to_eos : Longint;		{ not implemented          }
+    reserverd : array[0..3] of Longint;		{ fillter                  }
+end;
+PFL_EditKeymap = ^TFL_EditKeymap;
+
+Procedure fl_set_input_editkeymap(a: PFL_EditKeymap); cdecl;
+
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+{***********   Object Class: Menu         ***********}
+
+Const
+    FL_TOUCH_MENU	= 0;
+    FL_PUSH_MENU	= 1;
+    FL_PULLDOWN_MENU	= 2;
+    
+Type TFL_MENU_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const
+  FL_MENU_BOXTYPE	= FL_BORDER_BOX;
+  FL_MENU_COL1		= FL_COL1;
+  FL_MENU_COL2		= FL_MCOL;
+  FL_MENU_LCOL		= FL_LCOL;
+  FL_MENU_ALIGN		= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+  FL_MENU_MAXITEMS	= 128;
+  FL_MENU_MAXSTR	= 64;
+
+{**** Routines ****}
+
+Function fl_create_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_clear_menu(p1 : PFL_OBJECT);  cdecl;
+Procedure fl_set_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_addto_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_replace_menu_item(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_delete_menu_item(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Procedure fl_set_menu_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_set_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Cardinal); cdecl;
+Procedure fl_show_menu_symbol(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_menu_popup(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Function fl_get_menu_popup(p1 : pfl_object): longint; cdecl;
+
+Function fl_get_menu(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_menu_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl;
+Function fl_get_menu_maxitems(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_menu_item_mode(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Cardinal ; cdecl;
+Function fl_get_menu_text(p1 : PFL_OBJECT ) : pchar; cdecl;
+
+
+
+Const   
+    FL_NORMAL_MENUBAR = 0;
+
+    FL_MENUBAR_BOXTYPE	=FL_UP_BOX;
+    FL_MENUBAR_COL1	=FL_COL1;
+    FL_MENUBAR_COL2	=FL_MCOL;
+    FL_MENUBAR_LCOL	=FL_LCOL;
+    
+Function fl_create_menubar(p1 : longint; p2,p3,p4,p5 : TFL_COORD;p6 : Pchar): PFL_OBJECT; cdecl;
+Function fl_add_menubar(p1 : longint;p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+   
+Procedure fl_clear_menubar(p1 : PFL_OBJECT); cdecl;
+Procedure fl_set_menubar(p1 : PFL_OBJECT; p2 : pchar); cdecl;
+Procedure fl_set_menubar_entries(p1 : PFL_OBJECT; p2 : pchar;p3 : PFL_PUP_ENTRY); cdecl;
+
+   
+{
+ * $Id$
+ *
+ *  Prototypes for pop-up menus
+ }
+
+
+Const
+ FL_MAXPUPI   = 80;	{ max item each pup        }
+ FL_PUP_PADH  =  4;	{ space between each items }
+
+ type
+  TFL_PUP_ENTERCB = Procedure (p1 : longint; p2: pointer); cdecl;
+  PFL_PUP_ENTERCB = ^TFL_PUP_ENTERCB;
+
+  TFL_PUP_LEAVECB =Procedure (p1 : longint; p2: pointer); cdecl;
+  PFL_PUP_LEAVECB = ^TFL_PUP_LEAVECB;
+
+Function fl_setpup_entries(p1 : Longint; p2 : PFL_PUP_ENTRY) : Longint; cdecl;
+Function fl_newpup(p1 : TWindow ) : LongInt;  cdecl;
+
+Function fl_defpup(p1 : TWindow; p2 :  pchar) : LongInt; cdecl;
+Function fl_addtopup(p1 : longint; p2 :  pchar) : LongInt; cdecl;
+
+Function fl_setpup_mode(p1 : Longint; p2 : Longint {was int}; p3 : Cardinal) : Longint; cdecl;
+Procedure fl_freepup(p1 : Longint);  cdecl;
+Function fl_dopup(p1 : Longint ) : LongInt;  cdecl;
+
+Procedure fl_setpup_shortcut(p1 : Longint; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_setpup_position(p1 : Longint; p2 :  Longint {was int}); cdecl;
+Procedure fl_setpup_selection(p1 : Longint; p2 :  Longint {was int}); cdecl;
+Procedure fl_setpup_shadow(p1 : LongInt; p2 :  Longint {was LongInt}); cdecl;
+Procedure fl_setpup_softedge(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Function fl_setpup_fontsize(p1 : LongInt) : Longint;  cdecl;
+Function fl_setpup_fontstyle(p1 : LongInt) : Longint;   cdecl;
+Procedure fl_setpup_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl;
+Procedure fl_setpup_checkcolor(p1 : TFL_COLOR);  cdecl;
+Function fl_setpup_default_fontsize(p1 : LongInt) : Longint;  cdecl;
+Function fl_setpup_default_fontstyle(p1 : LongInt) : Longint;   cdecl;
+Procedure fl_setpup_default_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl;
+Procedure fl_setpup_default_checkcolor(p1 : TFL_COLOR);  cdecl;
+Procedure fl_setpup_title(p1 : LongInt; p2 :  pchar); cdecl;
+Procedure fl_setpup_bw(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Procedure fl_setpup_pad(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Function fl_setpup_cursor(p1 : LongInt; p2 :  Longint {was int} ) : TCursor ; cdecl;
+Function fl_setpup_default_cursor(p1 : LongInt ) : TCursor ;  cdecl;
+Function fl_setpup_maxpup(p1 : LongInt ) : LongInt;  cdecl;
+Function fl_getpup_mode(p1 : LongInt; p2 :  Longint {was int} ) : Cardinal; cdecl;
+Function fl_getpup_text(p1 : LongInt; p2 :  Longint {was int} ) : pchar; cdecl;
+Procedure fl_showpup(p1 : LongInt);  cdecl;
+Procedure fl_hidepup(p1 : LongInt); cdecl;
+
+{
+#define fl_setpup_hotkey    fl_setpup_shortcut
+}
+
+Function fl_setpup_itemcb(p1 : LongInt; p2 : Longint {was int}; p3 :PFL_PUP_CB ) : PFL_PUP_CB ; cdecl;
+Function fl_setpup_menucb(p1 : LongInt; p2 :  PFL_PUP_CB ) : PFL_PUP_CB ; cdecl;
+Procedure fl_setpup_submenu(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+
+{
+#define fl_setpup    fl_setpup_mode
+}
+
+
+
+{
+ * $Id$
+ *
+ }
+
+Const
+ FL_NORMAL_POSITIONER	= 0;
+
+{**** Defaults ****}
+
+ FL_POSITIONER_BOXTYPE	= FL_DOWN_BOX;
+ FL_POSITIONER_COL1	= FL_COL1;
+ FL_POSITIONER_COL2	= FL_RED;
+ FL_POSITIONER_LCOL	= FL_LCOL;
+ FL_POSITIONER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+
+{**** Routines ****}
+
+Function fl_create_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_positioner_xvalue(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_positioner_xvalue(p1 : PFL_OBJECT ) : double ; cdecl;
+Procedure fl_set_positioner_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_positioner_xbounds(p1 : PFL_OBJECT; p2 : pdouble ; p3 : pdouble); cdecl;
+Procedure fl_set_positioner_yvalue(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_positioner_yvalue(p1 : PFL_OBJECT ) : double ; cdecl;
+Procedure fl_set_positioner_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_positioner_ybounds(p1 : PFL_OBJECT; p2 ,p3 :pdouble); cdecl;
+Procedure fl_set_positioner_xstep(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_positioner_ystep(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_positioner_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Const 
+     FL_HOR_SCROLLBAR = 0;
+     FL_VERT_SCROLLBAR = 1;
+     FL_HOR_THIN_SCROLLBAR = 2;
+     FL_VERT_THIN_SCROLLBAR = 3;
+     FL_HOR_NICE_SCROLLBAR = 4;
+     FL_VERT_NICE_SCROLLBAR = 5;
+     FL_HOR_PLAIN_SCROLLBAR = 6;
+     FL_VERT_PLAIN_SCROLLBAR = 7;
+
+     FL_HOR_BASIC_SCROLLBAR = FL_HOR_PLAIN_SCROLLBAR;
+     FL_VERT_BASIC_SCROLLBAR =    FL_VERT_PLAIN_SCROLLBAR;
+
+     FL_THIN_SCROLLBAR = 0;
+     FL_PLAIN_SCROLLBAR = 1;
+     FL_NORMAL_SCROLLBAR = 2;
+     FL_NICE_SCROLLBAR = 3;
+     
+Function  fl_create_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+Function  fl_add_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+ 
+Function  fl_get_scrollbar_value(p1 : PFL_OBJECT) : double ; cdecl;
+Procedure fl_set_scrollbar_value(p1 : PFL_OBJECT; p2: double); cdecl;
+Procedure fl_set_scrollbar_size(p1 : PFL_OBJECT; p2 : double); cdecl;
+Procedure fl_set_scrollbar_increment(p1 : PFL_OBJECT;p2,p3: double); cdecl;
+Procedure fl_get_scrollbar_increment(p1 : PFL_OBJECT; p2,p3 : real {float !!}); cdecl;
+Procedure fl_set_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : double); cdecl;
+Procedure fl_get_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : real {float !!!}); cdecl;
+Procedure fl_set_scrollbar_return(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Procedure fl_set_scrollbar_step(P1 : PFL_OBJECT;p2 : double); cdecl;
+
+
+
+{
+ * $Id$
+ *
+ * Object Class: Slider
+ *
+ }
+
+
+Const
+    FL_VERT_SLIDER	= 0;
+    FL_HOR_SLIDER	= 1;
+    FL_VERT_FILL_SLIDER	= 2;
+    FL_HOR_FILL_SLIDER	= 3;
+    FL_VERT_NICE_SLIDER	= 4;
+    FL_HOR_NICE_SLIDER	= 5;
+    FL_HOR_BROWSER_SLIDER = 6;
+    FL_VERT_BROWSER_SLIDER = 7;
+    FL_HOR_BROWSER_SLIDER2	= 8;	{ for Longint {was int}ernal use only }
+    FL_VERT_BROWSER_SLIDER2	= 9;	{ for Longint {was int}ernal use only }
+    FL_HOR_THIN_SLIDER = 10;		{ internal use          }
+    FL_VERT_THIN_SLIDER = 11;	{ internal use          }
+    FL_HOR_BASIC_SLIDER = 12;	{ internal use          }
+    FL_VERT_BASIC_SLIDER = 13;	{ internal use          }
+ 
+Type
+ TFL_SLIDER_TYPE = Longint;
+ PFL_SLIDER_TYPE = ^TFL_SLIDER_TYPE; 
+
+
+{**** Defaults ****}
+Const
+  FL_SLIDER_BW1         = FL_BOUND_WIDTH;
+  FL_SLIDER_BW2         = FL_BOUND_WIDTH-1;
+
+  FL_SLIDER_BOXTYPE	= FL_DOWN_BOX;
+  FL_SLIDER_COL1	= FL_COL1;
+  FL_SLIDER_COL2	= FL_COL1;
+  FL_SLIDER_LCOL	= FL_LCOL;
+  FL_SLIDER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+  FL_SLIDER_FINE		= 0.05;
+  FL_SLIDER_WIDTH		= 0.10;
+
+
+{**** Routines ****}
+
+Function fl_create_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+Function fl_add_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Function fl_create_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar): PFL_OBJECT; cdecl;
+Function fl_add_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;P6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_slider_value(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_slider_value(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_set_slider_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_slider_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;
+
+Procedure fl_set_slider_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Procedure fl_set_slider_step(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_slider_increment(p1 : PFL_OBJECT; p2,p3 :  double); cdecl;
+Procedure fl_set_slider_size(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_slider_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Type
+  TFL_SLIDER_FILTER = Procedure (p1 : PFL_OBJECT; p2 : double; p3 :Longint {was int}); cdecl;
+  PTFL_SLIDER_FILTER= ^TFL_SLIDER_FILTER  ;
+  
+Procedure fl_set_slider_filter(p1 : PFL_OBJECT; p2 : PTFL_SLIDER_FILTER); cdecl;
+
+{
+ * $Id$
+ *
+}
+const
+FL_TOP_TABFOLDER = 0;
+FL_BOTTOM_TABFOLDER = 1;
+FL_LEFT_TABFOLDER = 2;
+FL_RIGHT_TABFOLDER = 3;
+
+FL_NORMAL_TABFOLDER = FL_TOP_TABFOLDER;
+
+Function fl_create_tabfolder (p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+Function fl_add_tabfolder(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+Function fl_addto_tabfolder(p1 : PFL_OBJECT; p2 : pchar; p3 : PFL_FORM) : PFL_OBJECT; cdecl;
+Procedure fl_delete_folder(p1 : PFL_OBJECT; p2 : PFL_FORM); cdecl;
+Procedure fl_delete_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Procedure fl_delete_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl;
+
+Procedure fl_set_folder(p1 : PFL_OBJECT; P2 : PFL_FORM); cdecl;
+Procedure fl_set_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl;
+Procedure fl_set_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Function fl_get_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl;
+Function fl_get_folder_number(p1 : PFL_OBJECT) : longint; cdecl;
+Function fl_get_folder_name(p1 : PFL_OBJECT) : pchar; cdecl;
+Function fl_get_active_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl;
+Function fl_get_active_folder_number(P1 : PFL_OBJECT) : longint; cdecl;
+Function fl_get_active_folder_name(p1 : PFL_OBJECT) : Pchar; cdecl;
+Procedure fl_get_folder_area(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord); cdecl;
+ 
+Procedure fl_replace_folder_bynumber(p1 : PFL_OBJECT;p2 : longint;p3 : PFL_FORM); cdecl;
+
+{
+ * $Id$
+ *
+ }
+
+Const
+    FL_NORMAL_TEXT = 0;
+
+ FL_TEXT_BOXTYPE    = FL_FLAT_BOX;
+ FL_TEXT_COL1       = FL_COL1;
+ FL_TEXT_COL2       = FL_MCOL;
+ FL_TEXT_LCOL       = FL_LCOL;
+ FL_TEXT_ALIGN      = FL_ALIGN_LEFT;
+
+Function fl_create_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl;
+
+
+
+{
+ * $Id$
+ *
+ *  Object Class: Timer
+ *
+ }
+
+
+Const 
+    FL_NORMAL_TIMER = 0;
+    FL_VALUE_TIMER  = 1;
+    FL_HIDDEN_TIMER = 2;
+    
+Type TFL_TIMER_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+
+FL_TIMER_BOXTYPE	= FL_DOWN_BOX;
+FL_TIMER_COL1		= FL_COL1;
+FL_TIMER_COL2		= FL_RED;
+FL_TIMER_LCOL		= FL_LCOL;
+FL_TIMER_ALIGN		= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+  FL_TIMER_BLINKRATE	= 0.2;
+  
+Type TFL_TIMER_FILTER = Function (P1 : PFL_OBJECT;p2 : double) : pchar; cdecl;
+     PFL_TIMER_FILTER = ^TFL_TIMER_FILTER;  
+
+{**** Routines ****}
+
+Function fl_create_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_timer(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_timer(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_set_timer_countup(p1 : PFL_OBJECT; p2 :  Longint); cdecl;
+Function fl_set_timer_filter (p1 : PFL_OBJECT; p2 : PFL_TIMER_FILTER) : PFL_TIMER_FILTER; cdecl;
+Procedure fl_suspend_timer(p1 : PFL_OBJECT); cdecl;
+Procedure fl_resume_timer(p1 : PFL_OBJECT); cdecl;
+
+{
+ * $Id$
+ *
+ }
+
+
+{
+ * Class FL_XYPLOT
+ }
+
+Const
+    FL_NORMAL_XYPLOT	= 0;		{ solid line                        }
+    FL_SQUARE_XYPLOT	= 1;		{ with added square                 }
+    FL_CIRCLE_XYPLOT	= 2;		{ with added circle                 }
+    FL_FILL_XYPLOT	= 3;		{ fill completely                   }
+    FL_POINTS_XYPLOT	= 4;		{ only data points                  }
+    FL_DASHED_XYPLOT	= 5;		{ dashed line                       }
+    FL_IMPULSE_XYPLOT	= 6;
+    FL_ACTIVE_XYPLOT	= 7;		{ accepts Longint {was int}eractive manipulations }
+    FL_EMPTY_XYPLOT	= 8;
+Type 
+    TFL_XYPLOT_TYPE = Longint;
+
+Const
+    FL_LINEAR = 0;
+    FL_LOG    = 1;
+
+Const
+    FL_GRID_NONE  = 0;
+    FL_GRID_MAJOR = 1;
+    FL_GRID_MINOR = 2;
+ 
+{**** Defaults ****}
+
+ FL_XYPLOT_BOXTYPE       = FL_FLAT_BOX;
+ FL_XYPLOT_COL1          = FL_COL1;
+ FL_XYPLOT_LCOL          = FL_LCOL;
+ FL_XYPLOT_ALIGN         = FL_ALIGN_BOTTOM;
+ FL_MAX_XYPLOTOVERLAY    = 32;
+
+{**** Others   ****}
+
+Function fl_create_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;
+Function fl_add_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT; cdecl;
+Procedure fl_set_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : Longint {was int}; p5,p6,p7 : pchar); cdecl;
+Procedure fl_set_xyplot_file(p1 : PFL_OBJECT; p2,p3,p4,p5 :pchar); cdecl;
+
+Procedure fl_set_xyplot_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_xtics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_xyplot_ytics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_xyplot_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_xyplot_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Function  fl_set_xyplot_maxoverlays(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ; cdecl;
+Procedure fl_set_xyplot_overlay_type(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}); cdecl;
+Procedure fl_set_xyplot_interpolate(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : double); cdecl;
+Procedure fl_set_xyplot_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_inspect(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_symbolsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_xscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double); cdecl;
+Procedure fl_set_xyplot_yscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double); cdecl;
+
+Procedure fl_set_xyplot_linewidth(p1 : PFL_OBJECT; p2,p3 : Longint); cdecl;
+Procedure fl_set_xyplot_xgrid(p1 : PFL_OBJECT; p2 : Longint); cdecl;
+Procedure fl_set_xyplot_ygrid(p1 : PFL_OBJECT; p2 : Longint); cdecl;
+Procedure fl_set_xyplot_alphaxtics(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+Procedure fl_set_xyplot_alphaytics(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+Procedure fl_set_xyplot_fixed_xaxis(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+Procedure fl_set_xyplot_fixed_yaxis(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+
+
+Procedure fl_get_xyplot_xbounds(p1 : PFL_OBJECT; p2,p3 : pfloat ); cdecl;
+Procedure fl_get_xyplot_ybounds(p1 : PFL_OBJECT; p2,p3 : pfloat ); cdecl;
+Procedure fl_get_xyplot(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer); cdecl;
+Procedure fl_get_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer); cdecl;
+Procedure fl_get_xyplot_xmapping(p1 : PFL_OBJECT; p2,p3 : pfloat); cdecl;
+Procedure fl_get_xyplot_ymapping(p1 : PFL_OBJECT; p2,p3 : pfloat); cdecl;
+
+{
+#define fl_set_xyplot_datafile fl_set_xyplot_file
+}
+Procedure fl_add_xyplot_text(p1 : PFL_OBJECT; p2,p3 : double; p4 : pchar;p5 : Longint {was int}; p6 :TFL_COLOR); cdecl;
+Procedure fl_add_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint {was int}; p3,p4 : pfloat; p5 : Longint {was int}; p6 :TFL_COLOR); cdecl;
+Procedure fl_delete_xyplot_text(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_delete_xyplot_overlay(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Procedure fl_replace_xyplot_point(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : double); cdecl;
+Function  fl_interpolate(p1,p2 : pfloat; p3 :Longint {was int};p4,p5 : pfloat; p6 : double; p7 : Longint {was int}) : Longint; cdecl;
+Procedure fl_xyplot_s2w(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat); cdecl;
+Procedure fl_xyplot_w2s(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat); cdecl;
+
+implementation
+
+procedure fl_add_io_callback(p1 : Longint {was int} ; p2 : word; p3 : PFL_IO_CALLBACK; p4 : pointer); cdecl; external;
+procedure fl_remove_io_callback(p1 : Longint {was int};p2 :  word; p3 : PFL_IO_CALLBACK); cdecl; external;
+procedure fl_add_signal_callback(p1 : Longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer); cdecl; external;
+procedure fl_remove_signal_callback(p1 : Longint {was int}); cdecl; external;
+procedure fl_signal_caught(p1 :Longint {was int}); cdecl; external;
+procedure fl_app_signal_direct(p1 : Longint {was int}); cdecl; external;
+function fl_add_timeout (p1 : longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer) : longint;cdecl; external;
+procedure fl_remove_timeout(p1 : Longint);cdecl; external;
+
+function fl_get_vn_value (p1 : PFL_VN_PAIR; p2 : pchar) : Longint; cdecl; external;
+function fl_get_vn_name (p1 : PFL_VN_PAIR; p2 : Longint {was int}) : Pchar; cdecl; external;
+function fl_msleep (p1 : cardinal) : cardinal; cdecl; external;
+procedure fl_library_version(p1,p2 : pointer ); cdecl; external;
+function fl_bgn_form(P1 : Longint {was int}; P2,p3 : TFL_Coord) : PFL_Form; cdecl; external;
+Procedure fl_end_form; cdecl; external;
+function fl_do_forms : PFL_OBJECT ; cdecl; external;
+function fl_check_forms : PFL_OBJECT; cdecl; external;
+Function fl_do_only_forms : PFL_OBJECT; cdecl; external;
+function fl_check_only_forms : PFL_OBJECT; cdecl; external;
+procedure fl_freeze_form(P1 : PFL_FORM); cdecl; external;
+procedure fl_set_focus_object( P1 : PFL_FORM;p2 : PFL_OBJECT); cdecl; external;
+procedure fl_reset_focus_object( p1 : PFL_OBJECT);cdecl; external;
+
+Function fl_set_form_atclose(p1 : PFL_FORM; p2 : PFL_FORM_ATCLOSE; p3 : pointer) : PFL_FORM_ATCLOSE ; cdecl; external;
+Function fl_set_atclose(p1 : PFL_FORM_ATCLOSE; p2:  pointer) : PFL_FORM_ATCLOSE ; cdecl; external;
+Function fl_set_form_atactivate(p1 : PFL_FORM; P2 : PFL_FORM_ATACTIVATE; P3 : pointer) : PFL_FORM_ATACTIVATE ; cdecl; external;
+Function fl_set_form_atdeactivate(p1 : PFL_FORM;p2 : PFL_FORM_ATDEACTIVATE;p3 : pointer) : PFL_FORM_ATDEACTIVATE ; cdecl; external;
+Procedure fl_unfreeze_form (p1 : PFL_FORM); cdecl; external;
+Procedure fl_deactivate_form(p1 : PFL_FORM); cdecl; external;
+Procedure fl_activate_form(p1 : PFL_FORM); cdecl; external;
+Procedure fl_deactivate_all_forms; cdecl; external;
+Procedure fl_activate_all_forms; cdecl; external;
+Procedure fl_freeze_all_forms; cdecl; external;
+Procedure fl_unfreeze_all_forms; cdecl; external;
+Procedure fl_scale_form(p1 : PFL_FORM;p2,p3 : double); cdecl; external;
+Procedure fl_set_form_position(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl; external;
+Procedure fl_set_form_title(p1 : PFL_FORM; p2 : pchar); cdecl; external;
+procedure fl_set_form_property(p1 : PFL_FORM; p2 : word); cdecl; external;
+procedure fl_set_app_mainform( p1 : PFL_FORM); cdecl; external;
+function fl_get_app_mainform : PFL_FORM; cdecl; external;
+procedure fl_set_app_nomainform(P1 : Longint {was int}); cdecl; external;
+procedure fl_set_form_callback(p1 : PFL_FORM; P2 : PFL_FORMCALLBACKPTR; P3 : pointer); cdecl; external;
+procedure fl_set_form_size(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl; external;
+procedure fl_set_form_hotspot(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl; external;
+procedure fl_set_form_hotobject(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl; external;
+procedure fl_set_form_minsize(p1 : PFL_FORM ; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_form_maxsize(p1 : PFL_FORM; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_form_event_cmask(p1 : PFL_FORM; p2 : cardinal); cdecl; external;
+function fl_get_form_event_cmask(p1 : PFL_FORM) : cardinal; cdecl; external;
+procedure fl_set_form_geometry(p1 : PFL_FORM; p2,p3,p4,p5 : TFL_Coord); cdecl; external;
+function fl_show_form (p1 : PFL_FORM; p2,p3 : Longint {was int}; p4 : pchar) : longint; cdecl; external;
+procedure fl_hide_form(p1 : PFL_FORM); cdecl; external;
+procedure fl_free_form(p1 : PFL_FORM); cdecl; external;
+procedure fl_redraw_form(p1 : PFL_FORM); cdecl; external;
+procedure fl_set_form_dblbuffer(p1 : PFL_FORM; p2 : Longint {was int}); cdecl; external;
+procedure fl_prepare_form_window(p1 : PFL_FORM; p2,p3 :  Longint {was int}; p4 : pchar); cdecl; external;
+procedure fl_show_form_window(p1 : PFL_FORM); cdecl; external;
+function fl_adjust_form_size(p1 : PFL_FORM) : double; cdecl; external;
+function fl_form_is_visibe (p1 : PFL_FORM) : Longint; cdecl; external;
+
+function  fl_register_raw_callback(p1 : PFL_FORM; p2 : cardinal; P3 : PFL_RAW_CALLBACK): PFL_RAW_CALLBACK; cdecl; external;
+function fl_bgn_group : PFL_OBJECT; cdecl; external;
+function fl_end_group : PFL_OBJECT; cdecl; external;
+procedure fl_addto_group (p1 : PFL_OBJECT); cdecl; external;
+procedure fl_set_object_boxtype(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_bw(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_resize(p1 : PFL_OBJECT; p2 : word); cdecl; external;
+procedure fl_set_object_gravity(p1 : PFL_OBJECT; p2,p3 : word ); cdecl; external;
+procedure fl_set_object_lsize(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_lstyle(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_lcol(p1 : PFL_OBJECT; p2 : TFL_COLOR); cdecl; external;
+procedure fl_set_object_return(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_lalign(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int}); cdecl; external;
+procedure fl_set_object_shortcutkey(p1 : PFL_OBJECT; p2 :  word); cdecl; external;
+procedure fl_set_object_dblbuffer(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_object_color(p1 : PFL_OBJECT; p2 : TFL_COLOR;p3 : TFL_COLOR); cdecl; external;
+procedure fl_set_object_label(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external;
+procedure fl_set_object_position(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_object_size(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_object_automatic(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_draw_object_label(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_draw_object_label_outside(p1 : PFL_OBJECT); cdecl; external;
+function fl_get_object_component(p1 : PFL_OBJECT; p2,p3,p4 : Longint): PFL_OBJECT; cdecl; external;
+
+ procedure fl_set_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 :TFL_Coord); cdecl; external;
+procedure fl_fit_object_label(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_get_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord ); cdecl; external;
+procedure fl_get_object_position(p1 : PFL_OBJECT; p2,p3 :PFL_COORD); cdecl; external;
+procedure fl_get_object_bbox(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl; external;
+procedure fl_call_object_callback(p1 : PFL_OBJECT); cdecl; external;
+function fl_set_object_prehandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR) : PFL_HANDLEPTR ; cdecl; external;
+function fl_set_object_posthandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR): PFL_HANDLEPTR ; cdecl; external;
+function fl_set_object_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint) : PFL_CALLBACKPTR ; cdecl; external;
+procedure fl_redraw_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_scale_object(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_show_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_hide_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_free_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_delete_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_trigger_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_activate_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_deactivate_object(p1 : PFL_OBJECT); cdecl; external;
+function fl_set_font_name(p1 : Longint {was int}; p2 :  pchar) : longint; cdecl; external;
+procedure fl_set_font(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl; external;
+function fl_get_char_height(p1,p2 : Longint {was int}; p3,p4 : pointer) : Longint {was int}; cdecl; external;
+function fl_get_char_width(p1,p2 :  Longint {was int}) : Longint; cdecl; external;
+function fl_get_string_height(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl; external;
+function fl_get_string_width(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl; external;
+function fl_get_string_widthTAB(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl; external;
+function fl_get_string_dimension(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl; external;
+procedure fl_get_align_xy(p1,p2,p3,p4,p5,p6,p7,p8,p9 : Longint {was int}; p10,p11 : pointer); cdecl; external;
+procedure fl_drw_text(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl; external;
+procedure fl_drw_text_beside(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl; external;
+procedure fl_drw_text_cursor(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7,p8: Longint {was int}; p9 : Pchar; p10,p11: Longint {was int}); cdecl; external;
+procedure fl_drw_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7 : Longint {was int}); cdecl; external;
+function fl_add_symbol(p1 : pchar; p2 : PFL_DRAWPTR; p3 :Longint {was int}) : Longint {was int}; cdecl; external;
+function fl_draw_symbol(p1 : pchar; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR) : Longint {was int}; cdecl; external;
+procedure fl_drw_slider (p1 :longint; p2,p3,P4,p5 : TFL_COORD; p6,p7 : TFL_COLOR;
+                         p8 : Longint; p9,p10 : double; P11 : pchar; p12,p13,p14 : Longint); cdecl; external;
+
+function fl_mapcolor(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}) : cardinal; cdecl; external;
+function fl_mapcolorname(p1 : TFL_COLOR; p2 :  pchar) : longint; cdecl; external;
+function fl_getmcolor(p1 : TFL_COLOR; p2,p3,p4 : pointer) : cardinal; cdecl; external;
+procedure fl_free_colors(p1 : PFL_COLOR; p2 :  Longint {was int}); cdecl; external;
+procedure fl_free_pixels(p1 : pcardinal; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_color_leak(p1 : Longint {was int}); cdecl; external;
+function fl_get_pixel(p1 : TFL_COLOR): cardinal; cdecl; external;
+procedure fl_get_icm_color(p1 : TFL_COLOR; p2,p3,p4 : pointer); cdecl; external;
+procedure fl_set_icm_color(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}); cdecl; external;
+procedure fl_color(p1 : TFL_COLOR); cdecl; external;
+procedure fl_bk_color(p1 : TFL_COLOR); cdecl; external;
+procedure fl_textcolor(p1 : TFL_COLOR); cdecl; external;
+procedure fl_bk_textcolor(p1 : TFL_COLOR); cdecl; external;
+procedure fl_set_gamma(p1,p2,p3 :double); cdecl; external;
+procedure fl_show_errors(p1 : Longint {was int}); cdecl; external;
+procedure fl_add_object(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl; external;
+procedure fl_addto_form(p1 : PFL_FORM); cdecl; external;
+function fl_make_object(p1 : Longint {was int}; p2,p3,p4,p5,p6 : TFL_Coord; p7 : pchar; P8 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl; external;
+procedure fl_set_coordunit(p1 : Longint {was int}); cdecl; external;
+function fl_get_coordunit : Longint {was int}; cdecl; external;
+procedure fl_set_border_width(p1 : Longint {was int}); cdecl; external;
+function fl_get_border_width : Longint {was int}; cdecl; external;
+procedure fl_set_scrollbar_type (p1 :longint); cdecl; external;
+procedure fl_flip_yorigin; cdecl; external;
+procedure fl_ringbell ( p1 : longint);cdecl; external;
+procedure fl_gettime (p1,p2 : Plongint);cdecl; external;
+function fl_whoami : pchar; cdecl; external;
+function fl_now : pchar; cdecl; external;
+function fl_mouse_button : longint; cdecl; external;
+
+procedure fl_rectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl; external;
+procedure fl_rectbound(p1,p2,p3,p4 : TFL_Coord;p5 : TFL_COLOR); cdecl; external;
+procedure fl_roundrectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl; external;
+procedure fl_polygon(p1 : Longint {was int}; p2 : PFL_POINT; p3 : Longint {was int}; p4 : TFL_COLOR); cdecl; external;
+procedure fl_lines(p1 : TFL_POINT; p2 : Longint {was int}; p3 :TFL_COLOR); cdecl; external;
+procedure fl_line(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl; external;
+Procedure fl_point(p1,p2 : TFL_Coord; p3: TFL_COLOR); cdecl; external;
+Procedure fl_points(p1 : PFL_POINT; p2 : Longint; p3: TFL_COLOR); cdecl; external;
+procedure fl_dashedlinestyle(p1 : pchar; p2 :  Longint {was int}); cdecl; external;
+procedure fl_drawmode(p1 : Longint {was int}); cdecl; external;
+procedure fl_linewidth(p1 : Longint {was int}); cdecl; external;
+procedure fl_linestyle(p1 : Longint {was int}); cdecl; external;
+function fl_get_linewidth : longint; cdecl; external;
+function fl_get_linestyle : longint; cdecl; external;
+
+procedure fl_oval(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl; external;
+procedure fl_ovalbound(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl; external;
+procedure fl_ovalarc(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6,p7 : Longint; p8 : TFL_COLOR);cdecl; external;
+
+procedure fl_pieslice(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7 :Longint {was int}; p8 : TFL_COLOR); cdecl; external;
+procedure fl_add_vertex(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_add_float_vertex(p1,p2 :  real); cdecl; external;
+procedure fl_reset_vertex; cdecl; external;
+procedure fl_endline; cdecl; external;
+procedure fl_endpolygon; cdecl; external;
+procedure fl_endclosedline; cdecl; external;
+procedure fl_drw_frame(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR; p7 : Longint {was int}); cdecl; external;
+procedure fl_drw_checkbox(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR;p7 : Longint {was int}); cdecl; external;
+function fl_get_fontstruct(p1,p2 :  Longint {was int}) : PXFontStruct; cdecl; external;
+function fl_get_mouse(p1,p2 : PFL_COORD; p3 : pword) : TWindow; cdecl; external;
+procedure fl_set_mouse(p1,p2 :  TFL_Coord); cdecl; external;
+function fl_get_win_mouse(p1 : TWindow; p2,p3 : PFL_COORD; p4 : pword) : TWindow; cdecl; external;
+function fl_get_form_mouse(p1 : PFL_FORM; p2,p3 : PFL_COORD; p4 : pWord) : TWindow; cdecl; external;
+function fl_win_to_form(p1 : TWindow) : PFL_form; cdecl; external;
+ procedure fl_set_form_icon(p1 : PFL_FORM; p2 : TPixmap; p3 :TPixmap); cdecl; external;
+function fl_wincreate(p1 : pchar) : TWindow; cdecl; external;
+ function fl_winshow(p1 : TWindow) : TWindow; cdecl; external;
+ function fl_winopen(p1 : pchar) : TWindow; cdecl; external;
+ procedure fl_winhide(p1 : TWindow); cdecl; external;
+ procedure fl_winclose(p1 : TWindow); cdecl; external;
+ procedure fl_winset(p1 : TWindow); cdecl; external;
+ function fl_winget : Twindow; cdecl; external;
+ procedure fl_winresize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winmove(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winreshape(p1 : TWindow; p2,p3,p4,p5 : TFL_Coord); cdecl; external;
+procedure fl_winicon(p1 : TWindow; p2 : TPixmap; p3 :TPixmap); cdecl; external;
+procedure fl_winbackground(p1 : TWindow; p2 :  cardinal); cdecl; external;
+procedure fl_winstepunit(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winisvalid(p1 : TWindow); cdecl; external;
+ procedure fl_wintitle(p1 : TWindow; p2 :  pchar); cdecl; external;
+procedure fl_winposition(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_winminsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winmaxsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winaspect(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_reset_winconstraints(p1 : TWindow); cdecl; external;
+ procedure fl_winsize(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_initial_winsize(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_initial_winstate(p1 : Longint {was int}); cdecl; external;
+ function fl_create_colormap(p1 : PXVisualInfo; p2 :  Longint {was int}) : TColormap; cdecl; external;
+procedure fl_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl; external;
+procedure fl_initial_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl; external;
+procedure fl_get_winsize(p1 : TWindow; p2,p3 :PFL_COORD); cdecl; external;
+procedure fl_get_winorigin(p1 : TWindow; p2,p3 :PFL_COORD); cdecl; external;
+procedure fl_get_wingeometry(p1 : TWindow; p2,p3,p4,p5 : PFL_COORD); cdecl; external;
+function fl_XNextEvent(p1 : PXEvent) : Longint; cdecl; external;
+function fl_XPeekEvent(p1 : PXEvent) : Longint; cdecl; external;
+function fl_XEventsQueued(p1 : Longint {was int}) : Longint; cdecl; external;
+procedure fl_XPutBackEvent(p1 : PXEvent); cdecl; external;
+function fl_last_event : PXEvent ; cdecl; external;
+function fl_set_event_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ; cdecl; external;
+function fl_set_idle_callback(p1 : PFL_APPEVENT_CB; p2 :  pointer) : PFL_APPEVENT_CB ; cdecl; external;
+function fl_addto_selected_xevent(p1 : TWindow; p2 :  longint) : Cardinal; cdecl; external;
+function fl_remove_selected_xevent(p1 : TWindow; p2 :  longint) : cardinal; cdecl; external;
+function fl_add_event_callback(p1 : TWindow; p2 :  Longint {was int}; p3 : PFL_APPEVENT_CB; p4 : pointer) : PFL_APPEVENT_CB ; cdecl; external;
+procedure fl_remove_event_callback(p1 : TWindow; p2 :  Longint {was int}); cdecl; external;
+procedure fl_activate_event_callbacks(p1 : TWindow); cdecl; external;
+function fl_print_xevent_name(p1 : pchar; p2 : PXEvent) : PXEvent; cdecl; external;
+function fl_initialize(p1 : pointer; p2 : ppchar; p3 : pchar; p4 : PFL_CMD_OPT; p5 : Longint {was int}) : Pdisplay; cdecl; external;
+procedure fl_finish; cdecl; external;
+
+function fl_get_resource(p1 : pchar; p2 :  pchar; p3 : TFL_RTYPE; p4 : pchar; p5 : pointer; p6 :Longint {was int}) : pchar;cdecl; external;
+procedure fl_set_resource(p1 : pchar; p2 :  pchar);cdecl; external;
+procedure fl_get_app_resources(p1 : PFL_resource; p2 : Longint {was int});cdecl; external;
+procedure fl_set_graphics_mode(p1 : Longint {was int}; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_visualID(p1 : longint);  cdecl; external;
+function fl_keysym_pressed(p1 : TKeySym) : Longint; cdecl; external;
+procedure fl_set_defaults(p1 : cardinal; p2 :  PFL_IOPT);cdecl; external;
+procedure fl_set_tabstop(p1 : pchar); cdecl; external;
+procedure fl_get_defaults(p1 : PFL_IOPT); cdecl; external;
+function fl_get_visual_depth : Longint; cdecl; external;
+function fl_vclass_name(p1 : Longint {was int}) : pchar; cdecl; external;
+function fl_vclass_val(p1 : pchar) : Longint {was int}; cdecl; external;
+procedure fl_set_ul_property(p1 : Longint {was int}; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_clipping(p1 : TFL_Coord; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord);cdecl; external;
+procedure fl_set_gc_clipping(p1 : TGC; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord);cdecl; external;
+procedure fl_unset_gc_clipping(p1 : TGC); cdecl; external;
+procedure fl_set_clippings(p1 : PXRectangle; p2 :  Longint {was int});cdecl; external;
+procedure fl_unset_clipping; cdecl; external;
+function fl_textgc : TGC;cdecl; external;
+function fl_create_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_set_bitmap_data(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : pointer);cdecl; external;
+procedure fl_set_bitmap_file(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+function fl_read_bitmapfile(p1 : TWindow; p2 :  pchar; p3,p4 : pword; p5,p6 : pointer) : TPixmap ;cdecl; external;
+function fl_create_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6  :pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_set_pixmap_data(p1 : PFL_OBJECT; p2 :  ppchar);cdecl; external;
+procedure fl_set_pixmap_file(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+procedure fl_set_pixmap_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});cdecl; external;
+procedure fl_set_pixmap_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);cdecl; external;
+procedure fl_set_pixmap_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});cdecl; external;
+procedure fl_free_pixmap_pixmap(p1 : PFL_OBJECT); cdecl; external;
+function fl_get_pixmap_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;cdecl; external;
+function fl_read_pixmapfile(p1 : TWindow; p2 :  pchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR)  : TPixmap ;cdecl; external;
+function fl_create_from_pixmapdata(p1 : TWindow; p2 :  ppchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ;cdecl; external;
+function fl_create_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6:  pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_clear_browser(p1 : PFL_OBJECT);cdecl; external;
+procedure fl_add_browser_line(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+procedure fl_addto_browser(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+procedure fl_addto_browserchars(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+
+procedure fl_insert_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);cdecl; external;
+procedure fl_delete_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_replace_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);cdecl; external;
+function fl_get_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar;cdecl; external;
+function fl_load_browser(p1 : PFL_OBJECT; p2 :  pchar ) : Longint ;cdecl; external;
+procedure fl_select_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_deselect_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_deselect_browser(p1 : PFL_OBJECT); cdecl; external;
+function fl_isselected_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ;cdecl; external;
+function fl_get_browser_topline(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_browser(p1 : PFL_OBJECT ) : Longint ;cdecl; external;
+function fl_get_browser_maxline(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_browser_screenlines(p1 : PFL_OBJECT ) : Longint ;cdecl; external;
+procedure fl_set_browser_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_specialkey(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+
+procedure fl_set_browser_leftslider(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_line_selectable(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});cdecl; external;
+procedure fl_get_browser_dimension(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD);cdecl; external;
+procedure fl_set_browser_dblclick_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint);cdecl; external;
+procedure fl_set_browser_xoffset(p1 : PFL_OBJECT; p2 :  TFL_Coord);cdecl; external;
+procedure fl_set_browser_scrollbarsize (p1 : PFL_OBJECT;p2,p3 : longint);cdecl; external;
+procedure fl_show_browser_line(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+function fl_get_browser_xoffset(p1 : PFL_OBJECT) : TFL_Coord ; cdecl; external;
+
+
+function fl_create_button(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+
+function fl_create_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_bitmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_button(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_set_bitmapbutton_data (p1 : PFL_OBJECT; p2,p3 : Longint {was int};   p4 : pchar);cdecl; external;
+procedure fl_set_bitmapbutton_file (p1 : PFL_OBJECT; p2: pchar);cdecl; external;
+function  fl_add_bitmapbutton (p1 : longint; p2,p3,p4,p5: TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+
+function fl_add_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+
+function fl_get_button(p1 : PFL_OBJECT ) : Longint ;  cdecl; external;
+procedure fl_set_button(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+function fl_get_button_numb(p1 : PFL_OBJECT ) : Longint ;cdecl; external;
+function fl_create_generic_button(p1,p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord;p7 : pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_add_button_class(p1 : Longint {was int}; p2 : PFL_DRAWBUTTON; p3 : PFL_CLEANUPBUTTON);cdecl; external;
+
+function fl_create_generic_canvas(p1 : Longint; p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord; p7 : pchar) : PFL_OBJECT;cdecl; external ;
+function fl_add_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT;cdecl; external ;
+function fl_create_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external ;
+function fl_create_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;cdecl; external ;
+function fl_add_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external ;
+procedure fl_set_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap);cdecl; external ;
+procedure fl_set_canvas_visual(p1 : PFL_OBJECT; p2 :  PVisual);cdecl; external ;
+procedure fl_set_canvas_depth(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external ;
+procedure fl_set_canvas_attributes(p1 : PFL_OBJECT; p2 : word;  p3 : PXSetWindowAttributes);cdecl; external ;
+function fl_add_canvas_handler(p1 : PFL_OBJECT; p2 :  Longint {was int}; p3 : PFL_HANDLE_CANVAS; p4 : pointer) : PFL_HANDLE_CANVAS ;cdecl; external ;
+function fl_get_canvas_id(p1 : PFL_OBJECT ) : TWindow ;cdecl; external ;
+function fl_get_canvas_colormap(p1 : PFL_OBJECT ) : TColormap;cdecl; external ; 
+function fl_get_canvas_depth(p1 : PFL_OBJECT ) : Longint ; cdecl; external ;
+procedure fl_remove_canvas_handler(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : PFL_HANDLE_CANVAS);cdecl; external ;
+procedure fl_hide_canvas(p1 : PFL_OBJECT); 	{ internal use only }cdecl; external ;
+procedure fl_canvas_yield_to_shortcut(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external ;
+procedure fl_share_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap); cdecl; external ;
+procedure fl_modify_canvas_prop(p1 : PFL_OBJECT; 
+				  P2 : PFL_MODIFY_CANVAS_PROP;
+				  p3 : PFL_MODIFY_CANVAS_PROP;
+				  p4 : PFL_MODIFY_CANVAS_PROP);cdecl; external ;
+function fl_create_glcanvas(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external ;
+function fl_add_glcanvas(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external ;
+procedure fl_set_glcanvas_defaults(p1 : pointer); cdecl; external ;
+procedure fl_get_glcanvas_defaults(p1 : pointer); cdecl; external ;
+procedure fl_set_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);cdecl; external ;
+procedure fl_get_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);cdecl; external ;
+procedure fl_set_glcanvas_direct(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external ;
+procedure fl_activate_glcanvas(p1 : PFL_OBJECT);cdecl; external;
+
+function fl_get_glcanvas_xvisualinfo(p1 : PFL_OBJECT ) : PXVisualInfo; cdecl; external ;
+
+function fl_create_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 :  pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_clear_chart(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_add_chart_value(p1 : PFL_OBJECT; p2 : double; p3 : pchar; p4 : Longint {was int}); cdecl; external;
+procedure fl_insert_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl; external;
+procedure fl_replace_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl; external;
+procedure fl_set_chart_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_chart_maxnumb(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_chart_autosize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_chart_lstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_chart_lsize(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_chart_lcolor(p1 : PFL_OBJECT; p2 :  TFL_COLOR);cdecl; external;
+
+
+function fl_create_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) :  PFL_OBJECT; cdecl; external;
+function fl_add_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar ) : PFL_OBJECT; cdecl; external;
+procedure fl_clear_choice(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_addto_choice(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external;
+procedure fl_replace_choice(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external;
+procedure fl_delete_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_text(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external;
+function fl_get_choice(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_choice_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl; external;
+function fl_get_choice_maxitems(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_choice_text(p1 : PFL_OBJECT ) : pchar; cdecl; external;
+procedure fl_set_choice_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_align(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : word); cdecl; external;
+procedure fl_set_choice_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external;
+function fl_set_choice_entries(p1 : PFL_OBJECT ; p2 : PFL_PUP_ENTRY) : longint; cdecl; external;
+
+
+function fl_create_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_get_clock(p1 : PFL_OBJECT; p2,p3,p4 : pointer); cdecl; external;
+function fl_set_clock_adjustment ( p1 : PFL_OBJECT; p2 : longint) : longint; cdecl; external;
+procedure fl_set_clock_ampm(p1 : PFL_OBJECT; p2 : Longint); cdecl; external;
+
+function fl_create_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_counter_value(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_counter_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_counter_step(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_counter_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+function fl_get_counter_value(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_get_counter_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble);cdecl; external;
+procedure fl_get_counter_step(p1 : PFL_OBJECT; p2,p3 : pdouble);cdecl; external;
+
+procedure fl_set_counter_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_counter_filter(p1 : PFL_OBJECT;p2 : pointer); cdecl; external;
+
+procedure fl_set_cursor(p1 : TWindow; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_cursor_color(p1 : longint; p2 : TFL_COLOR; p3 :TFL_COLOR); cdecl; external;
+function fl_create_bitmap_cursor(p1 : pchar; p2 :  pchar; p3,p4,p5,p6 : Longint {was int}) : TCursor; cdecl; external;
+function fl_get_cursor_byname(p1 : longint ) : TCursor; cdecl; external;
+function fl_create_animated_cursor(p1 : Plongint;p2 : longint): Longint; cdecl; external;
+
+function fl_create_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 :pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_dial_value(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_dial_value(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_dial_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_dial_bounds(p1 : PFL_OBJECT; p2 : pdouble; p3 :pdouble); cdecl; external;
+procedure fl_set_dial_step(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_dial_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_dial_angles(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_dial_cross(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_dial_direction (p1 : PFL_OBJECT; p2 : Longint);cdecl; external;
+
+function fl_get_dirlist(p1 : pchar; p2 : pchar;	p3 : pointer;p4	:longint) : PFL_Dirlist; cdecl; external;
+function fl_set_dirlist_filter (p1 : PFL_DIRLIST_FILTER ) : PFL_DIRLIST_FILTER ; cdecl; external;
+procedure fl_set_dirlist_sort ( p1 : longint);cdecl; external;
+
+procedure fl_free_dirlist(p1 : PFL_Dirlist); cdecl; external;
+procedure fl_free_all_dirlist; cdecl; external;
+
+function fl_is_valid_dir(p1 : pchar ) : Longint; cdecl; external;
+function fl_fmtime(p1 : pchar ) : cardinal ; cdecl; external;
+function fl_fix_dirname(p1 : pchar) : pchar; cdecl; external;
+
+function flps_init : PFLPS_CONTROL; cdecl; external;
+function fl_object_ps_dump (p1 : PFL_OBJECT; p2 : pchar) : longint; cdecl; external;
+
+
+function fl_create_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_create_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+
+function fl_create_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar; p7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl; external;
+function fl_add_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar; P7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl; external;
+
+procedure fl_set_goodies_font(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_show_message(p1 : pchar; p2 : pchar; p3 :pchar); cdecl; external;
+procedure fl_show_messages(p1 : pchar);cdecl; external;
+
+procedure fl_show_alert(p1 : pchar; p2 : pchar; p3 : pchar; p4 : Longint {was int}); cdecl; external;
+function fl_show_question(p1 : pchar; p2 : longint) : Longint ; cdecl; external;
+function fl_show_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl; external;
+function fl_show_simple_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl; external;
+function fl_show_colormap(p1 : Longint ) : Longint ; cdecl; external;
+function fl_show_choice(p1,p2,p3 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;cdecl; external;
+function fl_show_choices(p1 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;cdecl; external;
+procedure fl_set_choices_shortcut(p1,p2,p3 :pchar); cdecl; external;
+
+procedure fl_show_oneliner(p1 : pchar; p2 : TFL_Coord; p3 :TFL_Coord); cdecl; external;
+procedure fl_hide_oneliner; cdecl; external;
+procedure fl_set_oneliner_font(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_oneliner_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl; external;
+
+function fl_exe_command(p1 : pchar; p2 : Longint) : Longint; cdecl; external;
+function fl_end_command(p1 : longint) : Longint; cdecl; external;
+function fl_check_command(p1 : longint) : longint; cdecl; external;
+Function fl_end_all_command : Longint; cdecl; external;
+procedure fl_show_command_log(p1 : Longint); cdecl; external;
+procedure fl_hide_command_log; cdecl; external;
+procedure fl_clear_command_log; cdecl; external;
+procedure fl_addto_command_log(p1 : pchar);cdecl; external;
+procedure fl_set_command_log_position(p1,p2 :longint);cdecl; external;
+Function fl_get_command_log_fdstruct : PFD_CMDLOG; cdecl; external;
+
+function fl_use_fselector(p1 : LongInt ) : LongInt; cdecl; external;
+function fl_show_fselector(p1,p2,p3,p4 :  pchar) : pchar; cdecl; external;
+procedure fl_set_fselector_fontsize (p1 : Longint); cdecl; external;
+procedure fl_set_fselector_fontstyle (p1 : longint); cdecl; external;
+
+procedure fl_set_fselector_placement(p1 : LongInt); cdecl; external;
+procedure fl_set_fselector_border(p1 : LongInt); cdecl; external;
+procedure fl_set_fselector_callback( p1 : PFSelector_Callback; p2 : pointer); cdecl; external;
+function fl_get_filename : pchar; cdecl; external;
+function fl_get_directory : pchar; cdecl; external;
+function fl_get_pattern : pchar; cdecl; external;
+function fl_set_directory (p1 : pchar ) : LongInt; cdecl; external;
+procedure fl_set_pattern (p1 : pchar); cdecl; external;
+procedure fl_refresh_fselector; cdecl; external;
+procedure fl_add_fselector_appbutton(p1 : pchar; p2 : PFL_Procedure; p3 : pointer); cdecl; external;
+procedure fl_remove_fselector_appbutton(p1 : pchar); cdecl; external;
+procedure fl_disable_fselector_cache(p1 : LongInt); cdecl; external;
+procedure fl_invalidate_fselector_cache; cdecl; external; 
+function fl_get_fselector_form : PFL_FORM; cdecl; external;
+function fl_get_fselector_fdstruct  : PFD_FSELECTOR; cdecl; external; 
+procedure fl_hide_fselector;  cdecl; external;
+procedure fl_set_fselector_filetype_marker(p1,p2,p3,p4,p5 : Longint); cdecl; external;
+
+function fl_create_input(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6: pchar)  : PFL_OBJECT ; cdecl; external;
+function fl_add_input(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar )  : PFL_OBJECT ; cdecl; external;
+procedure fl_set_input(p1 : PFL_OBJECT; p2 :  pchar)  ; cdecl; external;
+procedure fl_set_input_color(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+function fl_get_input(p1 : PFL_OBJECT )  : pchar ; cdecl; external;
+procedure fl_set_input_return(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_scroll(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_cursorpos(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+function fl_get_input_cursorpos(p1 : PFL_OBJECT; p2,p3 : Pointer )  : LongInt ; cdecl; external;
+procedure fl_set_input_selected(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+function fl_get_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}) : pchar  ; cdecl; external;
+procedure fl_set_input_maxchars(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_format(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});cdecl; external;
+procedure fl_set_input_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_xoffset(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_scrollbarsize(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});cdecl; external;
+function fl_get_input_topline(p1 : PFL_OBJECT;p2,p3 : PLongint) : Longint;cdecl; external;
+function fl_get_input_screenlines(p1 : PFL_OBJECT) : Longint;cdecl; external;
+function fl_get_input_numberoflines(p1 : PFL_OBJECT) : Longint;cdecl; external;
+procedure fl_get_input_format(p1 : PFL_OBJECT;p2,p3 : PLongint);cdecl; external;
+function fl_set_input_filter(p1 : PFL_OBJECT; p2 :  PFL_INPUTVALIDATOR )  : PFL_INPUTVALIDATOR  ; cdecl; external;
+procedure fl_set_input_editkeymap(a : PFL_EditKeymap);cdecl; external;
+
+function fl_create_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl; external ;
+function fl_add_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl; external ;
+procedure fl_clear_menu(p1 : PFL_OBJECT); cdecl; external ;
+procedure fl_set_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external ;
+procedure fl_addto_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external ;
+procedure fl_replace_menu_item(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external ;
+procedure fl_delete_menu_item(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external ;
+procedure fl_set_menu_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external ;
+procedure fl_set_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Cardinal); cdecl; external ;
+procedure fl_show_menu_symbol(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external ;
+procedure fl_set_menu_popup(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external ;
+function fl_get_menu_popup(p1 : pfl_object): longint; cdecl; external;
+
+function fl_get_menu(p1 : PFL_OBJECT ) : Longint ; cdecl; external ;
+function fl_get_menu_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl; external ;
+function fl_get_menu_maxitems(p1 : PFL_OBJECT ) : Longint ; cdecl; external ;
+function fl_get_menu_item_mode(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Cardinal ; cdecl; external ;
+function fl_get_menu_text(p1 : PFL_OBJECT ) : pchar; cdecl; external ;
+
+function fl_create_menubar(p1 : longint; p2,p3,p4,p5 : TFL_COORD;p6 : Pchar): PFL_OBJECT; cdecl; external;
+function fl_add_menubar(p1 : longint;p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+   
+Procedure fl_clear_menubar(p1 : PFL_OBJECT); cdecl; external;
+Procedure fl_set_menubar(p1 : PFL_OBJECT; p2 : pchar); cdecl; external;
+Procedure fl_set_menubar_entries(p1 : PFL_OBJECT; p2 : pchar;p3 : PFL_PUP_ENTRY); cdecl; external;
+
+function fl_setpup_entries(p1 : Longint; p2 : PFL_PUP_ENTRY) : Longint; cdecl; external;
+function fl_newpup(p1 : TWindow ) : LongInt; cdecl; external;
+function fl_defpup(p1 : TWindow; p2 :  pchar) : LongInt; cdecl; external ;
+function fl_addtopup(p1 : longint; p2 :  pchar) : LongInt; cdecl; external ;
+
+function fl_setpup_mode(p1 : Longint; p2 : Longint {was int}; p3 : Cardinal) : Longint; cdecl; external;
+procedure fl_freepup(p1 : Longint); cdecl; external;
+function fl_dopup(p1 : Longint ) : LongInt; cdecl; external;
+procedure fl_setpup_shortcut(p1 : Longint; p2 : Longint {was int}; p3 :pchar); cdecl; external;
+procedure fl_setpup_position(p1 : Longint; p2 :  Longint {was int}); cdecl; external;
+procedure fl_setpup_selection(p1 : Longint; p2 :  Longint {was int}); cdecl; external;
+function fl_setpup_fontsize(p1 : LongInt): Longint; cdecl; external;
+function fl_setpup_fontstyle(p1 : LongInt): longint; cdecl; external;
+procedure fl_setpup_shadow(p1 : LongInt; p2 :  Longint {was LongInt}); cdecl; external;
+procedure fl_setpup_softedge(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_setpup_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl; external;
+procedure fl_setpup_checkcolor(p1 : TFL_COLOR); cdecl; external;
+procedure fl_setpup_title(p1 : LongInt; p2 :  pchar); cdecl; external;
+procedure fl_setpup_bw(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_setpup_pad(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl; external;
+function fl_setpup_cursor(p1 : LongInt; p2 :  Longint {was int} ) : TCursor ; cdecl; external;
+function fl_setpup_default_cursor(p1 : LongInt ) : TCursor ; cdecl; external;
+function fl_setpup_maxpup(p1 : LongInt ) : LongInt; cdecl; external;
+function fl_getpup_mode(p1 : LongInt; p2 :  Longint {was int} ) : Cardinal; cdecl; external;
+function fl_getpup_text(p1 : LongInt; p2 :  Longint {was int} ) : pchar; cdecl; external;
+procedure fl_showpup(p1 : LongInt); cdecl; external;
+procedure fl_hidepup(p1 : LongInt); cdecl; external;
+function fl_setpup_itemcb(p1 : LongInt; p2 : Longint {was int}; p3 :PFL_PUP_CB ) : PFL_PUP_CB ; cdecl; external;
+function fl_setpup_menucb(p1 : LongInt; p2 :  PFL_PUP_CB ) : PFL_PUP_CB ; cdecl; external;
+procedure fl_setpup_submenu(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl; external;
+
+function fl_create_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_positioner_xvalue(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_positioner_xvalue(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_positioner_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_positioner_xbounds(p1 : PFL_OBJECT; p2 : pdouble ; p3 : pdouble); cdecl; external;
+procedure fl_set_positioner_yvalue(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_positioner_yvalue(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_positioner_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_positioner_ybounds(p1 : PFL_OBJECT; p2 ,p3 :pdouble); cdecl; external;
+procedure fl_set_positioner_xstep(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_positioner_ystep(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_positioner_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+
+function  fl_create_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+function  fl_add_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+ 
+function  fl_get_scrollbar_value(p1 : PFL_OBJECT) : double ; cdecl; external;
+procedure fl_set_scrollbar_value(p1 : PFL_OBJECT; p2: double); cdecl; external;
+procedure fl_set_scrollbar_size(p1 : PFL_OBJECT; p2 : double); cdecl; external;
+procedure fl_set_scrollbar_increment(p1 : PFL_OBJECT;p2,p3: double); cdecl; external;
+procedure fl_get_scrollbar_increment(p1 : PFL_OBJECT; p2,p3 : real {float !!}); cdecl; external;
+procedure fl_set_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : double); cdecl; external;
+procedure fl_get_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : real {float !!!}); cdecl; external;
+procedure fl_set_scrollbar_return(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+procedure fl_set_scrollbar_step(P1 : PFL_OBJECT;p2 : double); cdecl; external;
+
+
+function fl_create_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+function fl_create_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar): PFL_OBJECT; cdecl; external;
+function fl_add_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;P6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_slider_value(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_slider_value(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_slider_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_slider_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl; external;
+procedure fl_set_slider_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_slider_step(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_slider_increment(p1 : PFL_OBJECT; p2,p3 :  double);cdecl; external;
+procedure fl_set_slider_size(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_slider_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_slider_filter(p1 : PFL_OBJECT; p2 : PTFL_SLIDER_FILTER); cdecl; external;
+
+function fl_create_tabfolder (p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+function fl_add_tabfolder(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+function fl_addto_tabfolder(p1 : PFL_OBJECT; p2 : pchar; p3 : PFL_FORM) : PFL_OBJECT; cdecl; external;
+procedure fl_delete_folder(p1 : PFL_OBJECT; p2 : PFL_FORM); cdecl; external;
+procedure fl_delete_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+procedure fl_delete_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl; external;
+
+procedure fl_set_folder(p1 : PFL_OBJECT; P2 : PFL_FORM); cdecl; external;
+procedure fl_set_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl; external;
+procedure fl_set_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+function fl_get_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl; external;
+function fl_get_folder_number(p1 : PFL_OBJECT) : longint; cdecl; external;
+function fl_get_folder_name(p1 : PFL_OBJECT) : pchar; cdecl; external;
+function fl_get_active_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl; external;
+function fl_get_active_folder_number(P1 : PFL_OBJECT) : longint; cdecl; external;
+function fl_get_active_folder_name(p1 : PFL_OBJECT) : Pchar; cdecl; external;
+procedure fl_get_folder_area(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord); cdecl; external;
+ 
+procedure fl_replace_folder_bynumber(p1 : PFL_OBJECT;p2 : longint;p3 : PFL_FORM); cdecl; external;
+
+
+function fl_create_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl; external;
+
+function fl_create_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_timer(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_timer(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_timer_countup(p1 : PFL_OBJECT; p2 :  Longint); cdecl; external;
+function fl_set_timer_filter (p1 : PFL_OBJECT; p2 : PFL_TIMER_FILTER) : PFL_TIMER_FILTER; cdecl; external;
+procedure fl_suspend_timer(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_resume_timer(p1 : PFL_OBJECT); cdecl; external;
+
+
+procedure fl_set_xyplot_return(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_xtics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_ytics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double)  ; cdecl; external;
+procedure fl_set_xyplot_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double)  ; cdecl; external;
+procedure fl_get_xyplot_xbounds(p1 : PFL_OBJECT; p2,p3 : pfloat )  ; cdecl; external;
+procedure fl_get_xyplot_ybounds(p1 : PFL_OBJECT; p2,p3 : pfloat )  ; cdecl; external;
+procedure fl_get_xyplot(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer)  ; cdecl; external;
+procedure fl_get_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer)  ; cdecl; external;
+
+function fl_create_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6: pchar)  : PFL_OBJECT ; cdecl; external;
+
+function fl_add_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar )  : PFL_OBJECT ; cdecl; external;
+
+procedure fl_set_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : Longint {was int}; p5,p6,p7 : pchar)  ; cdecl; external;
+procedure fl_set_xyplot_file(p1 : PFL_OBJECT; p2,p3,p4,p5 :pchar)  ; cdecl; external;
+
+{
+#define fl_set_xyplot_datafile fl_set_xyplot_file
+}
+procedure fl_add_xyplot_text(p1 : PFL_OBJECT; p2,p3 : double; p4 : pchar;p5 : Longint {was int}; p6 :TFL_COLOR)  ; cdecl; external;
+
+procedure fl_delete_xyplot_text(p1 : PFL_OBJECT; p2 :  pchar)  ; cdecl; external;
+
+function fl_set_xyplot_maxoverlays(p1 : PFL_OBJECT; p2 :  Longint {was int} )  : Longint  ; cdecl; external;
+procedure fl_add_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint {was int}; p3,p4 : pfloat; p5 : Longint {was int}; p6 :TFL_COLOR)  ; cdecl; external;
+procedure fl_set_xyplot_overlay_type(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int})  ; cdecl; external;
+procedure fl_delete_xyplot_overlay(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_interpolate(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : double)  ; cdecl; external;
+procedure fl_set_xyplot_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_inspect(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_symbolsize(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_replace_xyplot_point(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : double)  ; cdecl; external;
+procedure fl_get_xyplot_xmapping(p1 : PFL_OBJECT; p2,p3 : pfloat)  ; cdecl; external;
+procedure fl_get_xyplot_ymapping(p1 : PFL_OBJECT; p2,p3 : pfloat)  ; cdecl; external;
+function fl_interpolate(p1,p2 : pfloat; p3 :Longint {was int};p4,p5 : pfloat; p6 : double; p7 : Longint {was int})  : Longint ; cdecl; external;
+
+procedure fl_xyplot_s2w(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat)  ; cdecl; external;
+procedure fl_xyplot_w2s(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat)  ; cdecl; external;
+procedure fl_set_xyplot_xscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double)  ; cdecl; external;
+procedure fl_set_xyplot_yscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double)  ; cdecl; external;
+
+procedure fl_set_xyplot_linewidth(p1 : PFL_OBJECT; p2,p3 : Longint);cdecl; external;
+procedure fl_set_xyplot_xgrid(p1 : PFL_OBJECT; p2 : Longint);cdecl; external;
+procedure fl_set_xyplot_ygrid(p1 : PFL_OBJECT; p2 : Longint);cdecl; external;
+procedure fl_set_xyplot_alphaxtics(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+procedure fl_set_xyplot_alphaytics(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+procedure fl_set_xyplot_fixed_xaxis(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+procedure fl_set_xyplot_fixed_yaxis(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+
+{ Added later : }
+function fl_mode_capable(p1,p2 : longint ) : longint;cdecl; external;
+procedure fl_enumerate_fonts(p1 : PFL_ENUMERATEPTR; p2 :  longint);cdecl; external;
+
+
+{ From here we implement function aliases which were #defined }
+
+procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int});cdecl;
+
+begin
+  fl_set_object_shortcut (p1,p2,p3);
+end;
+
+procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 :  ppchar);cdecl;
+
+begin
+ fl_set_pixmap_data(p1,p2);
+end;
+
+procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 :  pchar);cdecl;
+
+begin
+  fl_set_pixmap_file(p1,p2);
+end;
+
+procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});cdecl;
+begin
+  fl_set_pixmap_align(p1,p2,p3,p4);
+end;
+
+procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);cdecl;
+begin
+ fl_set_pixmap_pixmap(p1,p2,p3);
+end;
+
+procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});cdecl;
+begin
+fl_set_pixmap_colorcloseness(p1,p2,p3);
+end;
+
+procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT); cdecl;
+begin
+  fl_free_pixmap_pixmap(p1); 
+end;
+
+function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;cdecl;
+
+begin
+ fl_get_pixmapbutton_pixmap:=fl_get_pixmap_pixmap(p1,p2,p3);
+end;
+
+Function FL_ObjWin ( P : PFL_Object) : TWindow;cdecl;
+
+begin
+if P^.objclass <> FL_CANVAS then
+    FL_ObjWin :=P^.form^.window
+else
+    FL_objWin := fl_get_canvas_id (p)
+end;
+
+procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR);cdecl;
+begin
+   fl_rectangle(1,x,y,w,h,c)
+end;
+
+procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR);cdecl;
+begin
+    fl_rectangle(0,x,y,w,h,c)
+end;
+
+
+procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl;
+
+begin
+fl_set_object_boxtype (p1,p2);
+end;
+
+function fl_setpup_default_fontsize(p1 : LongInt) : Longint; cdecl;
+
+begin
+ fl_setpup_default_fontsize:=fl_setpup_fontsize(p1)
+end;
+
+function fl_setpup_default_fontstyle(p1 : LongInt) : Longint;cdecl;
+
+begin
+ fl_setpup_default_fontstyle:=fl_setpup_fontstyle(p1);
+end;
+
+procedure fl_setpup_default_color(p1 : TFL_COLOR; p2 :  TFL_COLOR);cdecl;
+
+begin
+ fl_setpup_color(p1,p2);
+end;
+
+procedure fl_setpup_default_checkcolor(p1 : TFL_COLOR); cdecl;
+
+begin
+fl_setpup_default_checkcolor(p1);
+end;
+
+end.

+ 3716 - 0
packages/forms/forms.pp

@@ -0,0 +1,3716 @@
+
+Unit forms;
+
+Interface
+
+{$linklib forms}
+{$linklib c}
+{$linklib m}
+
+uses x,xlib,xutil,xresource;
+
+const 
+  FL_VERSION=0;
+  FL_REVISION=88;
+  FL_FIXLEVEL=0;
+  FL_INCLUDE_VERSION=FL_VERSION * 1000 + FL_REVISION;
+
+{ some general constants }
+    FL_ON = 1;
+    FL_OK = 1;
+    FL_VALID = 1;
+    FL_PREEMPT = 1;
+    FL_AUTO = 2;
+    FL_WHEN_NEEDED = FL_AUTO;
+
+    FL_OFF = 0;
+    {FL_NONE = 0;}
+    FL_CANCEL = 0;
+    FL_INVALID = 0;
+
+    FL_IGNORE = -1;
+    FL_CLOSE = -2;
+{
+ * The screen coordinate unit, FL_Coord, must be of signed type. Without
+ * prototype support, a type other than integer might not work right.
+ * If FL_Coord is float, FL_CoordIsFloat must be defined to be 1 so that
+ * round-off error can be checked. **TODO Float not tested ***
+ }
+Type PWord   = ^Word;
+     PDouble = ^Double;
+     PFloat  = ^Real;
+     PLongint = ^Longint;
+          
+type TFL_Coord = Longint {was int};
+     PFL_Coord = ^TFL_Coord;
+{ #define FL_CoordIsFloat 0	 define this if FL_Coord is of type float }
+   TFL_COLOR = longint; { Was cardinal }
+   PFL_COLOR = ^TFL_COLOR;
+
+{
+ * Coordinates can be in pixels, milli-meters or points (1/72inch)
+ }
+  TFL_COORD_UNIT=Longint {was int};
+  { POssible values }
+Const 
+    FL_COORD_PIXEL=0;		{ default, Pixel           }
+    FL_COORD_MM=1;		{ milli-meter              }
+    FL_COORD_POINT=2;		{ point                    }
+    FL_COORD_centiMM=3;		{ one hundredth of a mm    }
+    FL_COORD_centiPOINT=4;	{ one hundredth of a point }
+
+{
+ * All object classes.
+ }
+
+type TFL_Class = Longint;
+
+Const { Possible values }
+    FL_INVALID_CLASS=0;
+    FL_BUTTON=1;
+    FL_LIGHTBUTTON=2;
+    FL_ROUNDBUTTON=3;
+    FL_ROUND_3DBUTTON=4;
+    FL_CHECKBUTTON=5;
+    FL_BITMAPBUTTON=6;
+    FL_PIXMAPBUTTON=7;
+    FL_BITMAP=8;
+    FL_PIXMAP=9;
+    FL_BOX=10;
+    FL_TEXT=11;
+    FL_MENU=12;
+    FL_CHART=13;
+    FL_CHOICE=14;
+    FL_COUNTER=15;
+    FL_SLIDER=16;
+    FL_VALSLIDER=17;
+    FL_INPUT=18;
+    FL_BROWSER=19;
+    FL_DIAL=21;
+    FL_TIMER=21;
+    FL_CLOCK=22;
+    FL_POSITIONER=23;
+    FL_FREE=24;
+    FL_XYPLOT=25;
+    FL_FRAME=26;
+    FL_LABELFRAME=27;
+    FL_CANVAS=28;
+    FL_GLCANVAS=29;
+    FL_TABFOLDER=30;
+    FL_SCROLLBAR=31;
+    FL_SCROLLBUTTON=32;
+    FL_MENUBAR=33;
+    FL_IMAGECANVAS=34;
+    FL_TEXTBOX=35;
+
+{ how to display a form onto screen }
+
+Type
+    TFL_PLace = Longint;
+
+Const
+    FL_PLACE_FREE = 0;		{ size remain resizable      }
+    FL_PLACE_MOUSE = 1;		{ mouse centered on form     }
+    FL_PLACE_CENTER = 2;	{ center of the screen       }
+    FL_PLACE_POSITION = 4;	{ specific size              }
+    FL_PLACE_SIZE = 8;		{ specific size              }
+    FL_PLACE_GEOMETRY = 16;	{ specific position          }
+    FL_PLACE_ASPECT = 32;	{ keep aspect ratio          }
+    FL_PLACE_FULLSCREEN = 64;	{ scale to fit screen        }
+    FL_PLACE_HOTSPOT = 128;	{ so mouse fall on (x,y)     }
+    FL_PLACE_ICONIC = 256;
+    { modifier }
+    FL_FREE_SIZE = 1 shl 14;
+    FL_FIX_SIZE = 1 shl 15;
+
+    FL_PLACE_FREE_CENTER =  FL_PLACE_CENTER or FL_FREE_SIZE;
+    FL_PLACE_CENTERFREE = FL_PLACE_CENTER or FL_FREE_SIZE;
+
+{ Window manager decoration request }
+
+type 
+    TFL_DECORATION = Longint;
+  
+Const { Possible values for FL_DECORATION }
+    FL_FULLBORDER = 1;		{ normal }
+    FL_TRANSIENT = 2;		{ set TRANSIENT_FOR property              }
+    FL_NOBORDER = 3;		{ use override_redirect to supress decor. }
+    FL_MODAL = 1 << 8;
+type
+ { All box types }
+    TFL_BOX_TYPE = Longint;
+Const { Possible values }
+    FL_NO_BOX=0;
+    FL_UP_BOX=1;
+    FL_DOWN_BOX=2;
+    FL_BORDER_BOX=3;
+    FL_SHADOW_BOX=4;
+    FL_FRAME_BOX=5;
+    FL_ROUNDED_BOX=6;
+    FL_EMBOSSED_BOX=7;
+    FL_FLAT_BOX=8;
+    FL_RFLAT_BOX=9;
+    FL_RSHADOW_BOX=10;
+    FL_OVAL_BOX=11;
+    FL_ROUNDED3D_UPBOX=12;
+    FL_ROUNDED3D_DOWNBOX=13;
+    FL_OVAL3D_UPBOX=14;
+    FL_OVAL3D_DOWNBOX=15;
+    FL_OVAL3D_FRAMEBOX=16;
+    FL_OVAL3D_EMBOSSEDBOX=17;
+    { Internal use only }
+    FL_TOPTAB_UPBOX=18;
+    FL_SELECTED_TOPTAB_UPBOX=19;
+    FL_BOTTOMTAB_UPBOX=20;
+    FL_SELECTED_BOTTOMTAB_UPBOX=21;
+    FL_OSHADOW_BOX=22;
+
+{ How to place text relative to a box }
+Type
+    TFL_ALIGN = Longint;
+
+Const { Possible values for FL_ALIGN } 
+    FL_ALIGN_CENTER = 0;
+    FL_ALIGN_TOP = 1;
+    FL_ALIGN_BOTTOM = 2;
+    FL_ALIGN_LEFT = 4;
+    FL_ALIGN_RIGHT = 8;
+    FL_ALIGN_TOP_LEFT = FL_ALIGN_TOP or FL_ALIGN_LEFT;
+    FL_ALIGN_TOP_RIGHT = FL_ALIGN_TOP or FL_ALIGN_RIGHT;
+    FL_ALIGN_BOTTOM_LEFT = FL_ALIGN_BOTTOM or FL_ALIGN_LEFT;
+    FL_ALIGN_BOTTOM_RIGHT = FL_ALIGN_BOTTOM or FL_ALIGN_RIGHT;
+    FL_ALIGN_INSIDE = (1 shl 13);
+    FL_ALIGN_VERT = (1 shl 14);	{ not functional yet  }
+
+    FL_ALIGN_LEFT_TOP = FL_ALIGN_TOP_LEFT;
+    FL_ALIGN_RIGHT_TOP = FL_ALIGN_TOP_RIGHT;
+    FL_ALIGN_LEFT_BOTTOM = FL_ALIGN_BOTTOM_LEFT;
+    FL_ALIGN_RIGHT_BOTTOM = FL_ALIGN_BOTTOM_RIGHT;
+
+{ Mouse buttons }
+
+FL_MBUTTON1=1; FL_LEFT_MOUSE=FL_MBUTTON1;
+FL_MBUTTON2=2; FL_MIDDLE_MOUSE=FL_MBUTTON2;
+FL_MBUTTON3=3; FL_RIGHT_MOUSE=FL_MBUTTON3;
+FL_MBUTTON4=4;
+FL_MBUTTON5=5;
+
+
+{ control when to reutrn input, slider and dial object. }
+
+    FL_RETURN_END_CHANGED = 0;
+    FL_RETURN_CHANGED = 1;
+    FL_RETURN_END = 2;
+    FL_RETURN_ALWAYS = 3;
+    FL_RETURN_DBLCLICK = 4;
+
+{
+ *  Some special color indeces for FL private colormap. It does not matter
+ *  what the value of each enum is, but it must start from 0 and be
+ *  consecutive.
+ }
+ 
+ 
+ 
+Type
+    TFL_DP_COL = Longint;
+Const
+    FL_BLACK		= 0;
+    FL_RED		= 1;
+    FL_GREEN		= 2;
+    FL_YELLOW		= 3;
+    FL_BLUE		= 4;
+    FL_MAGENTA		= 5;
+    FL_CYAN		= 6;
+    FL_WHITE		= 7;
+
+    FL_TOMATO		= 8;
+    FL_INDIANRED	= 9;
+    FL_SLATEBLUE	= 10;
+
+    FL_COL1		= 11;
+    FL_RIGHT_BCOL	= 12;
+    FL_BOTTOM_BCOL	= 13;
+    FL_TOP_BCOL		= 14;
+    FL_LEFT_BCOL	= 15;
+    FL_MCOL		= 16;
+
+    FL_INACTIVE		= 17;
+    FL_PALEGREEN	= 18;
+    FL_DARKGOLD		= 19;
+
+    FL_ORCHID		= 20;
+    FL_DARKCYAN		= 21;
+    FL_DARKTOMATO	= 22;
+    FL_WHEAT		= 23;
+    FL_DARKORANGE	= 24;
+    FL_DEEPPINK		= 25;
+    FL_CHARTREUSE	= 26;
+    FL_DARKVIOLET	= 27;
+    FL_SPRINGGREEN	= 28;
+    FL_DOGERBLUE	= 29;
+
+    FL_FREE_COL1 = 256; 
+    FL_FREE_COL2 = 257;
+    FL_FREE_COL3 = 258; 
+    FL_FREE_COL4 = 259;
+    FL_FREE_COL5 = 260; 
+    FL_FREE_COL6 = 261;
+    FL_FREE_COL7 = 262;
+    FL_FREE_COL8 = 263;
+    FL_FREE_COL9 = 264;
+    FL_FREE_COL10 = 265;
+    FL_FREE_COL11 = 266;
+    FL_FREE_COL12 = 267;
+    FL_FREE_COL13 = 268;
+    FL_FREE_COL14 = 269;
+    FL_FREE_COL15 = 270;
+    FL_FREE_COL16 = 271;
+
+FL_BUILT_IN_COLS  = FL_DOGERBLUE+1;
+FL_INACTIVE_COL =  FL_INACTIVE;
+
+{ Some aliases for the color. This is actually backwards ... }
+
+Const
+FL_GRAY16=FL_RIGHT_BCOL;
+FL_GRAY35      =     FL_BOTTOM_BCOL;
+FL_GRAY80      =     FL_TOP_BCOL;
+FL_GRAY90      =     FL_LEFT_BCOL;
+FL_GRAY63      =     FL_COL1;
+FL_GRAY75      =     FL_MCOL;
+FL_LCOL        =     FL_BLACK;
+
+{
+ *  Pop-up menu item attributes. NOTE if more than 8, need to change
+ *  choice and menu class where mode is kept by a single byte
+ }
+    FL_PUP_NONE = 0;
+    FL_PUP_GREY = 1;
+    FL_PUP_BOX = 2;
+    FL_PUP_CHECK = 4;
+    FL_PUP_RADIO = 8;
+
+FL_PUP_GRAY     = FL_PUP_GREY;
+FL_PUP_TOGGLE   = FL_PUP_BOX;
+FL_PUP_INACTIVE = FL_PUP_GREY;
+
+type
+ TFL_PUP_CB = Procedure  (p1 : Longint);  	{ call back prototype  } cdecl;
+ PFL_PUP_CB = ^TFL_PUP_CB;
+
+ TFL_PUP_ENTRY = record
+      TheText : pchar;		{ label of a popup/menu item    }
+      CallBack : PFL_PUP_CB;		{ the callback function         }
+      shortcut : pchar;	            { hotkeys                       }
+      mode : longint;			{ FL_PUP_GRAY, FL_PUP_CHECK etc }
+ end;
+ PFL_PUP_ENTRY = ^TFL_PUP_ENTRY;
+ 
+ TFL_MENU_ENTRY = TFL_PUP_ENTRY;
+ PFL_MENU_ENTRY = ^TFL_MENU_ENTRY;
+
+{ Events that a form reacts to.  }
+type TFL_EVENT = Longint;
+Const { Possible values }
+    FL_NOEVENT		= 0;
+    FL_DRAW		= 1;
+    FL_PUSH		= 2;
+    FL_RELEASE		= 3;
+    FL_ENTER		= 4;
+    FL_LEAVE		= 5;
+    FL_MOUSE		= 6;
+    FL_FOCUS		= 7;
+    FL_UNFOCUS		= 8;
+    FL_KEYBOARD		= 9;
+    FL_MOTION		= 10;
+    FL_STEP		= 11;
+    FL_SHORTCUT		= 12;
+    FL_FREEMEM		= 13;
+    FL_OTHER		= 14;		{ property, selection etc }
+    FL_DRAWLABEL	= 15;
+    FL_DBLCLICK		= 16;		{ double click            }
+    FL_TRPLCLICK	= 17;		{ triple click            }
+    FL_PS		= 18;		{ dump a form into EPS    }
+
+const 
+FL_MOVE=FL_MOTION;	{ for compatibility }
+
+{ Resize policies }
+type TFL_RESIZE_T = Longint;
+
+const
+    FL_RESIZE_NONE = 0;
+    FL_RESIZE_X    = 1;
+    FL_RESIZE_Y    = 2;
+
+const
+    FL_RESIZE_ALL = FL_RESIZE_X or FL_RESIZE_Y;
+
+{ Keyboard focus control }
+type
+    TFL_KEY = Longint;
+
+Const { Possible values for FL_KEY_Normal }
+    FL_KEY_NORMAL = 1;		{ normal keys(0-255) - tab +left/right }
+    FL_KEY_TAB = 2;		{ normal keys + 4 direction cursor     }
+    FL_KEY_SPECIAL = 4;		{ only needs special keys(>255)        }
+    FL_KEY_ALL = 7;		{ all keys                             }
+
+    FL_ALT_VAL = (1 shl 17);	{ alt + Key --> FL_ALT_VAL + key }
+
+{ Internal use }
+Type
+    TFL_FIND = Longint;
+Const
+    FL_FIND_INPUT	=0;
+    FL_FIND_AUTOMATIC	=1;
+    FL_FIND_MOUSE	=2;
+    FL_FIND_CANVAS	=3;
+    FL_FIND_KEYSPECIAL	=4;
+
+{******************************************************************
+ * FONTS
+ *****************************************************************}
+
+Const FL_MAXFONTS=32;	{ max number of fonts }
+
+type TFL_TEXT_STYLE = Longint;
+Const
+    FL_INVALID_STYLE		= -1;
+    FL_NORMAL_STYLE		= 0;
+    FL_BOLD_STYLE		= 1;
+    FL_ITALIC_STYLE		= 2;
+    FL_BOLDITALIC_STYLE 	= 3;
+
+    FL_FIXED_STYLE		= 4;
+    FL_FIXEDBOLD_STYLE 		= 5;
+    FL_FIXEDITALIC_STYLE	= 6;
+    FL_FIXEDBOLDITALIC_STYLE	= 7;
+
+    FL_TIMES_STYLE		= 8;
+    FL_TIMESBOLD_STYLE		= 9;
+    FL_TIMESITALIC_STYLE	= 10;
+    FL_TIMESBOLDITALIC_STYLE	= 11;
+
+    { The following are derived and must differ by multiples of SHADOW,
+       i.e., (FL_ENGRAVED%SHADOW) == 0. All being 2^n has the benefit that
+       (lstyle | FL_SHADOW) == (lstyle + FL_SHADOW). }
+
+Const
+    FL_SHADOW_STYLE = (1 shl 9);
+    FL_ENGRAVED_STYLE = (1 shl 10);
+    FL_EMBOSSED_STYLE = (1 shl 11);
+
+
+Type TFL_FONT_STYLE= TFL_TEXT_STYLE;
+
+{ Standard sizes in XForms }
+Const
+FL_TINY_SIZE     =  8;
+FL_SMALL_SIZE    =  10;
+FL_NORMAL_SIZE   =  12;
+FL_MEDIUM_SIZE   =  14;
+FL_LARGE_SIZE    =  18;
+FL_HUGE_SIZE     =  24;
+
+FL_DEFAULT_SIZE = FL_SMALL_SIZE;
+
+{ Defines for compatibility }
+
+FL_TINY_FONT  = FL_TINY_SIZE;
+FL_SMALL_FONT =  FL_SMALL_SIZE;
+FL_NORMAL_FONT=  FL_NORMAL_SIZE;
+FL_MEDIUM_FONT=  FL_MEDIUM_SIZE;
+FL_LARGE_FONT =  FL_LARGE_SIZE;
+FL_HUGE_FONT  =  FL_HUGE_SIZE;
+
+FL_NORMAL_FONT1 =  FL_SMALL_FONT;
+FL_NORMAL_FONT2 =  FL_NORMAL_FONT;
+FL_DEFAULT_FONT =  FL_SMALL_FONT;
+
+
+const  
+FL_BOUND_WIDTH = 3;	{ Border width of boxes }
+
+cFL_BEGIN_GROUP  =  10000;
+cFL_END_GROUP    =  20000;
+{
+ *  Definition of basic struct that holds an object
+ }
+
+FL_CLICK_TIMEOUT = 350;	{ double click interval }
+
+Type
+
+TFL_pixmap = record
+    thepixmap : Tpixmap;
+    Thewin    : TWindow;
+    TheVisual : TVisual;
+    x,y       : TFL_Coord;
+    w, h      : word;
+    depth     : Longint;
+    dbl_background : TFL_COLOR;
+    pixel : TFL_COLOR;
+end;
+
+Pform     = ^TForm;
+
+{Pfl_pixmap = ^fl_pixmap;
+}
+
+Pflobjs    = ^Tflobjs;
+
+THandle = Function (p1 : Pflobjs; p2 : Longint {was int}; p3 : TFL_Coord; p4 : TFL_Coord;p5 :  Longint {was int}; p6 : pointer) : Longint; cdecl;
+PHandle = ^THandle;
+TObject_Callback = Procedure  (P1 : Pflobjs;p2 :  longint); cdecl;
+PObject_Callback = ^TObject_Callback;
+
+Tflobjs = record
+    form : PForm;		{ the form this object belong        }
+    u_vdata : Pointer;
+    u_cdata : Pchar;
+    u_ldata : longint;
+    
+    objclass : Longint {was int};		{ class of object, button, slider etc }
+    thetype : Longint;		{ type within the class              }
+    boxtype : Longint {was int};		{ what kind of box type              }
+    x, y, w, h : TFL_Coord;	{ obj. location and size             }
+    bw : TFL_Coord;
+    col1, col2 : TFL_color;	{ colors of obj                      }
+    thelabel : pchar;		{ object label                       }
+    lcol : TFL_COLOR;		{ label color                        }
+    align : Longint;
+    lsize, lstyle : Longint;	{ label size and style               }
+
+    shortcut : ^Longint;
+
+    handle     : PHandle;
+    object_callback : PObject_Callback;
+    argument : Longint;
+
+    spec          : pointer;	{ instantiation                      }
+
+    prehandle  : PHandle;
+    posthandle : PHandle;
+
+
+    { re-configure preference }
+    resize    : cardinal;	{ what to do if WM resizes the FORM     }
+    nwgravity : cardinal;	{ how to re-position top-left corner    }
+    segravity : cardinal;	{ how to re-position lower-right corner }
+
+    parent,child,nc : Pflobjs;
+    ischild : longint;
+
+    prev : pflobjs;		{ prev. obj in form                  }
+    next : pflobjs;		{ next. obj in form                  }
+
+    flpixmap      : Pointer;	{ pixmap double buffering stateinfo  }
+    use_pixmap    : Longint;	{ true to use pixmap double buffering }
+
+    double_buffer : Longint;	{ only used by mesa/gl canvas        }
+
+    { some interaction flags }
+    pushed: Longint {was int};
+    focus: Longint {was int};
+    belowmouse: Longint {was int};
+    active: Longint {was int};			{ if accept event }
+    input: Longint {was int};
+    wantkey: Longint {was int};
+    radio: Longint {was int};
+    automatic: Longint {was int};
+    redraw: Longint {was int};
+    visible: Longint {was int};
+    clip: Longint {was int};
+    click_timeout : cardinal;
+    c_vdata : pointer;		{ for class use }
+    c_cdata : pchar;            { For class use }
+    c_ldata : longint;		{ for class use }
+    cspec_size : cardinal;
+    aux_col1, aux_col2 : TFL_COLOR;
+    dbl_background : TFL_COLOR;
+    how_return : longint;
+    reserved : array[0..5] of cardinal;
+    { the following are for application programs }
+end;
+
+TFL_OBJECT = TFlobjs;
+PFL_OBJECT = ^TFL_OBJECT;
+
+TCallback = Procedure (P1 : pflobjs; P2 : pointer); cdecl;
+PCallback = ^TCallback;
+{ callback function for an entire form }
+PFL_FORMCALLBACKPTR = PCallback;
+
+{ object callback function      }
+PFL_CALLBACKPTR = PCallBack;
+
+{ preemptive callback function  }
+PFL_RAW_CALLBACK = PCallback;
+
+{ at close (WM menu delete/close etc.) }
+PFL_FORM_ATCLOSE = PCallback;
+
+{ deactivate/activate callback }
+PFL_FORM_ATDEACTIVATE = PCallback; 
+
+PFL_FORM_ATACTIVATE = PCallback;
+
+THandlePtr = Procedure ( p1 : PFL_Object; p2 : Longint; p3,p4 : TFL_COORD; p5 : Longint; p6 : pointer); cdecl;
+PHandlePTR = ^THandlePTR;
+
+PFL_HANDLEPTR = PHandlePTR;
+
+{
+extern FL_OBJECT *FL_EVENT;
+}
+{** FORM ***}
+
+PFL_FORM = ^TFL_FORM;
+
+Tform = record
+    fdui : Pointer;
+    u_vdata : pointer;		{ for application         }
+    u_cdata : pchar;
+    u_ldata : longint;
+    
+    thelabel : pchar;		{ window title            }
+    window : cardinal;	{ X resource ID for window }
+    x, y, w, h : TFL_COORD;	{ current geometry info   }
+    hotx, hoty : TFL_COORD;	{ hot-spot of the form    }
+
+    first,last,focusobj : pflobjs;
+
+    form_callback     : PFL_FORMCALLBACKPTR;
+    activate_callback : PFL_FORM_ATACTIVATE;
+    deactivate_callback: PFL_FORM_ATDEACTIVATE ;
+    form_cb_data, activate_data, deactivate_data : pointer;
+
+    key_callback, 
+    push_callback, 
+    crossing_callback,
+    motion_callback,
+    all_callback: PFL_RAW_CALLBACK ;
+
+    compress_mask : cardinal;
+    evmask : cardinal;
+
+    { WM_DELETE_WINDOW message handler }
+    close_callback : PFL_FORM_ATCLOSE ;
+    close_data : pointer;
+
+
+    flpixmap : pointer;		{ back buffer             }
+
+    icon_pixmap : cardinal;
+    icon_mask : cardinal;
+
+    { interaction and other flags }
+    vmode : Longint {was int};			{ current X visual class  }
+    deactivated : Longint {was int};		{ true if sensitive       }
+    use_pixmap : Longint {was int};		{ true if dbl buffering   }
+    frozen : Longint {was int};			{ true if sync change     }
+    visible : Longint {was int};		{ true if mapped          }
+    wm_border : Longint {was int};		{ window manager info     }
+    prop : cardinal;		{ other attributes        }
+    has_auto : Longint {was int};
+    top : Longint {was int};
+    sort_of_modal : Longint;
+    parent, child : PFL_FORM;
+    parent_obj : PFL_OBJECT; 
+    reserved : array[0..9] of Longint;
+end;
+TFL_FORM = Tform;
+
+TFD_Any = record
+  form : PFL_FORM;
+  vdata : Pointer;
+  cdata : pchar;
+  ldata : longint;
+  end;
+
+PFD_ANY = ^TFD_ANY;
+  
+
+{
+ * Async IO stuff
+ }
+
+const
+    FL_READ = 1;
+    FL_WRITE = 2;
+    FL_EXCEPT = 4;
+
+{ IO other than XEvent Q }
+Type
+
+TFL_IO_CALLBACK = Procedure (p1 :Longint {was int};p2 : pointer); cdecl;
+PFL_IO_CALLBACK = ^TFL_IO_CALLBACK;
+{ function definitions }
+Procedure fl_add_io_callback(p1 : Longint {was int} ; p2 : word; p3 : PFL_IO_CALLBACK; p4 : pointer); cdecl;
+Procedure fl_remove_io_callback(p1 : Longint {was int};p2 :  word; p3 : PFL_IO_CALLBACK); cdecl;
+
+{ signals }
+type 
+
+TFL_SIGNAL_HANDLER = Procedure (p1 : Longint {was int}; p2 : pointer); cdecl;
+PFL_SIGNAL_HANDLER = ^TFL_SIGNAL_HANDLER ;
+
+Procedure fl_add_signal_callback(p1 : LongInt;p2 : PFL_SIGNAL_HANDLER;p3 : pointer); cdecl;
+Procedure fl_remove_signal_callback(p1 : Longint {was int}); cdecl;
+Procedure fl_signal_caught(p1 :Longint {was int}); cdecl;
+Procedure fl_app_signal_direct(p1 : Longint {was int}); cdecl;
+
+Function fl_add_timeout (p1 : longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer) : longint; cdecl;
+Procedure fl_remove_timeout(p1 : Longint); cdecl;
+
+{  Some utility stuff }
+type 
+
+TFL_VN_PAIR = record
+    val : Longint;
+    name : Pchar;
+end;
+
+PFL_VN_PAIR = ^TFL_VN_PAIR;
+
+Function fl_get_vn_value (p1 : PFL_VN_PAIR; p2 : pchar) : Longint; cdecl;
+Function fl_get_vn_name (p1 : PFL_VN_PAIR; p2 : Longint {was int}) : Pchar; cdecl;
+Function fl_msleep (p1 : cardinal) : cardinal; cdecl;
+
+{
+ *  Basic public routine prototypes
+ }
+
+Procedure fl_library_version(p1,p2 : pointer ); cdecl;
+
+{* Generic routines that deal with FORMS *}
+
+Function fl_bgn_form(P1 : Longint {was int}; P2,p3 : TFL_Coord) : PFL_Form; cdecl;
+Procedure fl_end_form; cdecl;
+Function fl_do_forms : PFL_OBJECT ; cdecl;
+Function fl_check_forms : PFL_OBJECT; cdecl;
+Function fl_do_only_forms : PFL_OBJECT; cdecl;
+Function fl_check_only_forms : PFL_OBJECT; cdecl;
+Procedure fl_freeze_form(P1 : PFL_FORM); cdecl;
+
+Procedure fl_set_focus_object( P1 : PFL_FORM;p2 : PFL_OBJECT); cdecl;
+Procedure fl_reset_focus_object( p1 : PFL_OBJECT); cdecl;
+
+{
+#define fl_set_object_focus   fl_set_focus_object
+}
+Function fl_set_form_atclose(p1 : PFL_FORM; p2 : PFL_FORM_ATCLOSE; p3 : pointer) : PFL_FORM_ATCLOSE ; cdecl;
+Function fl_set_atclose(p1 : PFL_FORM_ATCLOSE; p2:  pointer) : PFL_FORM_ATCLOSE ; cdecl;
+
+Function fl_set_form_atactivate(p1 : PFL_FORM; P2 : PFL_FORM_ATACTIVATE; P3 : pointer) : PFL_FORM_ATACTIVATE ; cdecl;
+Function fl_set_form_atdeactivate(p1 : PFL_FORM;p2 : PFL_FORM_ATDEACTIVATE;p3 : pointer) : PFL_FORM_ATDEACTIVATE ; cdecl;
+
+Procedure fl_unfreeze_form (p1 : PFL_FORM); cdecl;
+Procedure fl_deactivate_form(p1 : PFL_FORM); cdecl;
+Procedure fl_activate_form(p1 : PFL_FORM); cdecl;
+Procedure fl_deactivate_all_forms; cdecl;
+Procedure fl_activate_all_forms; cdecl;
+Procedure fl_freeze_all_forms; cdecl;
+Procedure fl_unfreeze_all_forms; cdecl;
+Procedure fl_scale_form(p1 : PFL_FORM;p2,p3 : double); cdecl;
+Procedure fl_set_form_position(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;
+Procedure fl_set_form_title(p1 : PFL_FORM; p2 : pchar); cdecl;
+
+Procedure fl_set_form_property(p1 : PFL_FORM; p2 : word); cdecl;
+Procedure fl_set_app_mainform( p1 : PFL_FORM); cdecl;
+Function fl_get_app_mainform : PFL_FORM; cdecl;
+Procedure fl_set_app_nomainform(P1 : Longint {was int}); cdecl;
+
+Procedure fl_set_form_callback(p1 : PFL_FORM; P2 : PFL_FORMCALLBACKPTR; P3 : pointer); cdecl;
+{
+#define  fl_set_form_call_back    fl_set_form_callback
+}
+
+Procedure fl_set_form_size(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;
+Procedure fl_set_form_hotspot(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl;
+Procedure fl_set_form_hotobject(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl;
+Procedure fl_set_form_minsize(p1 : PFL_FORM ; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_form_maxsize(p1 : PFL_FORM; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_form_event_cmask(p1 : PFL_FORM; p2 : cardinal); cdecl;
+Function fl_get_form_event_cmask(p1 : PFL_FORM) : cardinal; cdecl;
+
+Procedure fl_set_form_geometry(p1 : PFL_FORM; p2,p3,p4,p5 : TFL_Coord); cdecl;
+
+{
+#define fl_set_initial_placement fl_set_form_geometry
+}
+
+Function fl_show_form (p1 : PFL_FORM; p2,p3 : Longint {was int}; p4 : pchar) : Longint; cdecl;
+Procedure fl_hide_form(p1 : PFL_FORM); cdecl;
+Procedure fl_free_form(p1 : PFL_FORM); cdecl;
+Procedure fl_redraw_form(p1 : PFL_FORM); cdecl;
+Procedure fl_set_form_dblbuffer(p1 : PFL_FORM; p2 : Longint {was int}); cdecl;
+Procedure fl_prepare_form_window(p1 : PFL_FORM; p2,p3 :  Longint {was int}; p4 : pchar); cdecl;
+Procedure fl_show_form_window(p1 : PFL_FORM); cdecl;
+Function fl_adjust_form_size(p1 : PFL_FORM) : double; cdecl;
+Function fl_form_is_visibe (p1 : PFL_FORM) : Longint; cdecl;
+
+Function  fl_register_raw_callback(p1 : PFL_FORM; p2 : cardinal; P3 : PFL_RAW_CALLBACK): PFL_RAW_CALLBACK; cdecl;
+
+{
+#define fl_register_call_back fl_register_raw_callback
+}
+Function fl_bgn_group : PFL_OBJECT; cdecl;
+Function fl_end_group : PFL_OBJECT; cdecl;
+Procedure fl_addto_group (p1 : PFL_OBJECT); cdecl;
+
+{***** Routines that deal with FL_OBJECTS *******}
+
+Procedure fl_set_object_boxtype(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_bw(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_resize(p1 : PFL_OBJECT; p2 : word); cdecl;
+Procedure fl_set_object_gravity(p1 : PFL_OBJECT; p2,p3 : word ); cdecl;
+Procedure fl_set_object_lsize(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_lstyle(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_lcol(p1 : PFL_OBJECT; p2 : TFL_COLOR); cdecl;
+Procedure fl_set_object_return(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl;
+Procedure fl_set_object_lalign(p1 : PFL_OBJECT; p2 : Longint {was int});	{ to be removed } cdecl;
+Procedure fl_set_object_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int}); cdecl;
+Procedure fl_set_object_shortcutkey(p1 : PFL_OBJECT; p2 :  word); cdecl;
+Procedure fl_set_object_dblbuffer(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_object_color(p1 : PFL_OBJECT; p2 : TFL_COLOR;p3 : TFL_COLOR); cdecl;
+Procedure fl_set_object_label(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_object_position(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_object_size(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_set_object_automatic(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_draw_object_label(p1 : PFL_OBJECT);  cdecl;
+Procedure fl_draw_object_label_outside(p1 : PFL_OBJECT);  cdecl;
+Function fl_get_object_component(p1 : PFL_OBJECT; p2,p3,p4 : Longint): PFL_OBJECT; cdecl;
+
+{
+#define  fl_set_object_dblclick(p1 : ob; p2 : timeout)  (p1 : ob)->click_timeout = (p1 : timeout); p3 :p2 : 
+}
+Procedure fl_set_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 :TFL_Coord); cdecl;
+
+
+Procedure fl_fit_object_label(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl;
+
+{ no much get (p1 : yet ?) }
+
+Procedure fl_get_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord ); cdecl;
+Procedure fl_get_object_position(p1 : PFL_OBJECT; p2,p3 :PFL_COORD); cdecl;
+
+{ this one takes into account the label }
+Procedure fl_get_object_bbox (p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl;
+
+Procedure fl_call_object_callback(p1 : PFL_OBJECT);  cdecl;
+Function fl_set_object_prehandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR) : PFL_HANDLEPTR ; cdecl;
+Function fl_set_object_posthandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR): PFL_HANDLEPTR ; cdecl;
+Function fl_set_object_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint) : PFL_CALLBACKPTR ; cdecl;
+{
+#define fl_set_object_align   fl_set_object_lalign
+#define fl_set_call_back      fl_set_object_callback
+}
+Procedure fl_redraw_object(p1 : PFL_OBJECT); cdecl;
+Procedure fl_scale_object(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_show_object(p1 : PFL_OBJECT);  cdecl;
+Procedure fl_hide_object(p1 : PFL_OBJECT); cdecl;
+Procedure fl_free_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_delete_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_trigger_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_activate_object(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_deactivate_object(p1 : PFL_OBJECT); cdecl;
+
+Type TFL_ENUMERATEPTR = Procedure (p : pchar);  cdecl;
+     PFL_ENUMERATEPTR = ^TFL_ENUMERATEPTR;
+
+Procedure fl_enumerate_fonts (p1 : PFL_ENUMERATEPTR; p2 :  longint); cdecl;
+
+Function  fl_set_font_name(p1 : Longint {was int}; p2 :  pchar) : longint; cdecl;
+Procedure fl_set_font(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl;
+
+{ routines that facilitate free object }
+
+Function fl_get_char_height(p1,p2 : Longint {was int}; p3,p4 : pointer) : Longint {was int}; cdecl;
+Function fl_get_char_width(p1,p2 :  Longint {was int}) : Longint; cdecl;
+Function fl_get_string_height(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl;
+Function fl_get_string_width(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl;
+Function fl_get_string_widthTAB(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl;
+Function fl_get_string_dimension(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl;
+{
+#define fl_get_string_size  fl_get_string_dimension
+}
+Procedure fl_get_align_xy(p1,p2,p3,p4,p5,p6,p7,p8,p9 : Longint {was int}; p10,p11 : pointer); cdecl;
+
+Procedure fl_drw_text(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl;
+
+Procedure fl_drw_text_beside(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl;
+{
+#define fl_draw_text(p1 : a; p2 : x;y;w;h;c;st;sz;s)    \
+      (p1 : (p1 : (p1 : a) & FL_ALIGN_INSIDE) ? fl_drw_text:fl_drw_text_beside)\
+      (p1 : a; p2 : x;y;w;h;c;st;sz;s)
+}
+
+Procedure fl_drw_text_cursor(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7,p8: Longint {was int}; p9 : Pchar; p10,p11: Longint {was int}); cdecl;
+
+Procedure fl_drw_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7 : Longint {was int}); cdecl;
+
+type
+
+FL_DRAWPTR = Procedure (p1,p2,p3,p4 : TFL_Coord; p5 : Longint {was int};p6: TFL_COLOR); cdecl;
+PFL_DRAWPTR = ^FL_DRAWPTR;
+
+Function fl_add_symbol(p1 : pchar; p2 : PFL_DRAWPTR; p3 :Longint {was int}) : Longint {was int}; cdecl;
+Function fl_draw_symbol(p1 : pchar; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR) : Longint {was int}; cdecl;
+
+const
+  FL_SLIDER_NONE = 0;
+  FL_SLIDER_BOX = 1;
+  FL_SLIDER_KNOB = 2;
+  FL_SLIDER_UP = 4;
+  FL_SLIDER_DOWN = 8;
+  FL_SLIDER_ALL = 15;
+  
+Procedure fl_drw_slider (p1 :longint; p2,p3,P4,p5 : TFL_COORD; p6,p7 : TFL_COLOR; 
+                         p8 : Longint; p9,p10 : double; P11 : pchar; p12,p13,p14 : Longint);cdecl;
+                         
+
+Function fl_mapcolor(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}) : cardinal; cdecl;
+Function fl_mapcolorname(p1 : TFL_COLOR; p2 :  pchar) : longint; cdecl;
+{
+#define fl_mapcolor_name  fl_mapcolorname
+}
+Function fl_getmcolor(p1 : TFL_COLOR; p2,p3,p4 : pointer) : cardinal; cdecl;
+Procedure fl_free_colors(p1 : PFL_COLOR; p2 :  Longint {was int}); cdecl;
+Procedure fl_free_pixels(p1 : pcardinal; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_color_leak(p1 : Longint {was int});  cdecl;
+Function fl_get_pixel(p1 : TFL_COLOR): cardinal;  cdecl;
+{
+#define fl_get_flcolor   fl_get_pixel
+}
+Procedure fl_get_icm_color(p1 : TFL_COLOR; p2,p3,p4 : pointer); cdecl;
+Procedure fl_set_icm_color(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}); cdecl;
+
+Procedure fl_color(p1 : TFL_COLOR); cdecl;
+Procedure fl_bk_color(p1 : TFL_COLOR);  cdecl;
+Procedure fl_textcolor(p1 : TFL_COLOR);  cdecl;
+Procedure fl_bk_textcolor(p1 : TFL_COLOR);  cdecl;
+Procedure fl_set_gamma(p1,p2,p3 :double); cdecl;
+
+Procedure fl_show_errors(p1 : Longint {was int});  cdecl;
+
+{ Some macros }
+{
+#define FL_max(p1 : a; p2 : b)      (p1 :  (p1 : a) > (p1 : b) ? (p1 : a):(p1 : b) )
+#define FL_min(p1 : a; p2 : b)      (p1 :  (p1 : a) < (p1 : b) ? (p1 : a):(p1 : b) )
+#define FL_abs(p1 : a)        (p1 :  (p1 : a) > 0 ? (p1 : a):(p1 : -(p1 : a)))
+#define FL_nint(p1 : a)       (p1 :  (p1 : a) > 0 ? (p1 : (p1 : a) + 0.5):(p1 : (p1 : a) - 0.5))
+}
+type TFL_FSCB = Function (p1 : pchar; p2 : pointer) : Longint; cdecl;
+PFL_FSCB = ^TFL_FSCB;
+
+{ utilities for new objects }
+var fl_current_form : PFL_FORM; cvar;external;
+Procedure fl_add_object(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl;
+Procedure fl_addto_form(p1 : PFL_FORM);  cdecl;
+Function fl_make_object(p1 : Longint {was int}; p2,p3,p4,p5,p6 : TFL_Coord; p7 : pchar; P8 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_coordunit(p1 : Longint {was int}); cdecl;
+Function fl_get_coordunit : Longint {was int};  cdecl;
+Procedure fl_set_border_width(p1 : Longint {was int});  cdecl;
+Function fl_get_border_width : Longint {was int};   cdecl;
+Procedure fl_set_scrollbar_type (p1 :longint); cdecl;
+
+Procedure fl_flip_yorigin;  cdecl;
+
+Procedure fl_ringbell ( p1 : longint); cdecl;
+Procedure fl_gettime (p1,p2 : Plongint); cdecl;
+Function fl_whoami : pchar; cdecl;
+Function fl_now : pchar; cdecl;
+Function fl_mouse_button : longint; cdecl;
+
+
+{ this gives more flexibility for future changes }
+
+{
+#define fl_free       free
+#define fl_malloc     malloc
+#define fl_calloc     calloc
+#define fl_realloc    realloc
+}
+Const  FL_MAX_MENU_CHOICE_ITEMS = 128;
+
+{
+ * $Id$
+ *
+ *  X Window dependent stuff
+ *
+ }
+
+{ Still need conversion !! }
+{
+#include <X11/Xatom.h>
+#include <X11/keysym.h>
+}
+Const
+ 
+ FL_MINDEPTH = 1;
+
+
+{ FL_xxx does not do anything anymore; but kept for compatibility }
+    FL_illegalVisual = -1;
+    FL_StaticGray = StaticGray;
+    FL_GrayScale = GrayScale;
+    FL_StaticColor = StaticColor;
+    FL_PseudoColor = PseudoColor;
+    FL_TrueColor = TrueColor;
+    FL_DirectColor = DirectColor;
+    FL_DefaultVisual = 10;	{ special request }
+
+    FL_North = NorthGravity;
+    FL_NorthEast = NorthEastGravity;
+    FL_NorthWest = NorthWestGravity;
+    FL_South = SouthGravity;
+    FL_SouthEast = SouthEastGravity;
+    FL_SouthWest = SouthWestGravity;
+    FL_East = EastGravity;
+    FL_West = WestGravity;
+    FL_NoGravity = ForgetGravity;
+    FL_ForgetGravity = ForgetGravity;
+
+{
+#define FL_is_gray(p1 : v)  (p1 : v==GrayScale || v==StaticGray)
+#define FL_is_rgb(p1 : v)   (p1 : v==TrueColor || v==DirectColor)
+}
+
+{
+ * Internal colormap size. Not really very meaningful as fl_mapcolor
+ * and company allow color "leakage"; that is; although only FL_MAX_COLS
+ * are kept in the internal colormap; the server might have substantially
+ * more colors allocated
+ }
+
+FL_MAX_COLS =  1024;
+
+{
+ * FL graphics state information. Some are redundant.
+ }
+
+type
+TFL_STATE = record
+    xvinfo : PXVisualInfo;
+    cur_fnt : PXFontStruct;	{ current font in default GC       }
+    colormap : TColormap ;		{ colormap valid for xvinfo        }
+    trailblazer : TWindow ;		{ a valid window for xvinfo        }
+    vclass, depth,		{ visual class and color depth     }
+    rgb_bits,		{ primary color resolution         }
+    dithered,		{ true if dithered color           }
+    pcm : Longint;			{ true if colormap is not shared   }
+    gc : Array [0..16] of TGC;			{ working GC                       }
+    textgc : array [0..16] of TGC;		{ GC used exclusively for text     }
+    dimmedGC : TGC;		{ A GC having a checkboard stipple }
+    lut :array [0..FL_MAX_COLS] of cardinal;	{ secondary lookup table         }
+    rshift : word; 
+    rmask, rbits : Longint;
+    gshift : word;
+    gmask,gbits : Longint {was int};
+    bshift : word; 
+    bmask, bbits : Longint {was int};
+end;
+PFL_State = ^TFL_State;
+
+{
+#define FL_State FL_STATE	{ for compatibility }
+}
+
+{**** Global variables *****}
+
+Var
+
+fl_display : PDisplay;
+fl_screen : Longint;
+fl_root : TWindow;		{ root window                }
+fl_vroot : TWindow;		{ virtual root window        }
+fl_scrh : Longint; 
+fl_scrw : Longint;	{ screen dimension in pixels }
+fl_vmode : Longint {was int};
+
+{ current version only runs in single visual mode }
+{
+#define  fl_get_vclass(p1 : )        fl_vmode
+#define  fl_get_form_vclass(p1 : a)  fl_vmode
+}
+{
+fl_state[] : PFL_State ;
+fl_ul_magic_char : pchar;
+}
+
+Function fl_mode_capable(p1,p2 : longint ) : longint; cdecl;
+
+{
+#define fl_default_win(p1 : )       (p1 : fl_state[fl_vmode].trailblazer)
+#define fl_default_window(p1 : )    (p1 : fl_state[fl_vmode].trailblazer)
+}
+{
+ * All pixmaps used by FL_OBJECT to simulate double buffering have the
+ * following entries in the structure. TFL_Coord x;y are used to shift
+ * the origin of the drawing routines
+ }
+
+
+{ fonts related }
+Const
+FL_MAX_FONTSIZES=10;
+
+type
+ FL_FONT = record
+    fs : array[0..FL_MAX_FONTSIZES] of PXFontStruct;	{ cached fontstruct }
+    size : array [0..FL_MAX_FONTSIZES] of byte;	{ cached sizes      }
+    nsize : byte;		{ cached so far     }
+    fname : Array[1..80] of char;		{ without size info     }
+end;
+
+{
+ * Some basic drawing routines
+ }
+
+type TFL_POINT = TXPoint;
+     PFL_Point = ^TFL_Point;
+     TFL_RECT = TXRECTANGLE;
+     PFL_RECT = ^TFL_RECT;     
+     
+{ rectangles }
+Procedure fl_rectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl;
+Procedure fl_rectbound(p1,p2,p3,p4 : TFL_Coord;p5 : TFL_COLOR); cdecl;
+
+Procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR); cdecl;
+Procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR); cdecl;
+
+
+{ rectangle with rounded-corners }
+Procedure fl_roundrectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 :TFL_COLOR); cdecl;
+
+{
+#define fl_roundrectf(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 1; p2 : x;y;w;h;c)
+#define fl_roundrect(p1 : x; p2 : y;w;h;c) fl_roundrectangle(p1 : 0; p2 : x;y;w;h;c)
+}
+{ general polygon and polylines }
+Procedure fl_polygon(p1 : Longint {was int}; p2 : PFL_POINT; p3 : Longint {was int}; p4 : TFL_COLOR); cdecl;
+
+{
+#define fl_polyf(p1 : p; p2 : n;c)  fl_polygon(p1 : 1; p2 : p; p3 : n; p4 : c)
+#define fl_polyl(p1 : p; p2 : n;c)  fl_polygon(p1 : 0; p2 : p; p3 : n; p4 : c)
+#define fl_polybound(p1 : p; p2 : n;c) do {fl_polyf(p1 : p; p2 : n;c);fl_polyl(p1 : p; p2 : n;FL_BLACK);}while(p1 : 0)
+}
+
+Procedure fl_lines(p1 : TFL_POINT; p2 : Longint {was int}; p3 :TFL_COLOR); cdecl;
+Procedure fl_line(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl;
+Procedure fl_point(p1,p2 : TFL_Coord; p3: TFL_COLOR); cdecl;
+Procedure fl_points(p1 : PFL_POINT; p2 : Longint; p3: TFL_COLOR); cdecl;
+
+{
+#define fl_simple_line fl_line
+}
+Procedure fl_dashedlinestyle(p1 : pchar; p2 :  Longint {was int}); cdecl;
+Procedure fl_drawmode(p1 : Longint {was int});  cdecl;
+
+{
+#define fl_diagline(p1 : x; p2 : y;w;h;c) fl_line(p1 : x; p2 : y;(p1 : x)+(p1 : w)-1; p2 : (p1 : y)+(p1 : h)-1; p2 : c)
+}
+{ line attributes }
+Const 
+  FL_SOLID = 0;
+  FL_USERDASH = 1;
+  FL_USERDOUBLEDASH = 2;
+  FL_DOT = 3;
+  FL_DOTDASH = 4;
+  FL_DASH = 5;
+  FL_LONGDASH = 6;
+
+Procedure fl_linewidth(p1 : Longint {was int});  cdecl;
+Procedure fl_linestyle(p1 : Longint {was int});  cdecl;
+
+Function fl_get_linewidth : longint; cdecl;
+Function fl_get_linestyle : longint; cdecl;
+
+
+{* ellipses *}
+Procedure fl_oval(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl;
+Procedure fl_ovalbound(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl;
+Procedure fl_ovalarc(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6,p7 : Longint; p8 : TFL_COLOR); cdecl;
+
+{
+#define fl_ovalf(p1 : x; p2 : y;w;h;c)     fl_oval(p1 : 1; p2 : x;y;w;h;c)
+#define fl_ovall(p1 : x; p2 : y;w;h;c)     fl_oval(p1 : 0; p2 : x;y;w;h;c)
+#define fl_oval_bound           fl_ovalbound
+
+#define fl_circf(p1 : x; p2 : y;r;col)  fl_oval(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col)
+#define fl_circ(p1 : x; p2 : y;r;col)   fl_oval(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : 2*(p1 : r); p2 : 2*(p1 : r); p2 : col)
+}
+
+{ arcs }
+Procedure fl_pieslice(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7 :Longint {was int}; p8 : TFL_COLOR); cdecl;
+{
+#define fl_arcf(p1 : x; p2 : y;r;a1;a2;c)  fl_pieslice(p1 : 1; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 : \
+                                (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 :  a1;a2;c)
+
+#define fl_arc(p1 : x; p2 : y;r;a1;a2;c)  fl_pieslice(p1 : 0; p2 : (p1 : x)-(p1 : r); p2 : (p1 : y)-(p1 : r); p2 :  \
+                               (p1 : 2*(p1 : r)); p2 : (p1 : 2*(p1 : r)); p2 :  a1;a2;c)
+}
+{ misc. stuff }
+Procedure fl_add_vertex(p1,p2 :  TFL_Coord); cdecl;
+Procedure fl_add_float_vertex(p1,p2 :  real); cdecl;
+Procedure fl_reset_vertex;  cdecl;
+Procedure fl_endline; cdecl;
+Procedure fl_endpolygon; cdecl;
+Procedure fl_endclosedline;  cdecl;
+
+{
+#define fl_bgnline       fl_reset_vertex
+#define fl_bgnclosedline fl_reset_vertex
+#define fl_bgnpolygon    fl_reset_vertex
+#define fl_v2s(p1 : v)        fl_add_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2i(p1 : v)        fl_add_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2f(p1 : v)        fl_add_float_vertex(p1 : v[0]; p2 :  v[1])
+#define fl_v2d(p1 : v)        fl_add_float_vertex(p1 : v[0]; p2 :  v[1])
+}
+
+{ high level drawing routines }
+Procedure fl_drw_frame(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR; p7 : Longint {was int}); cdecl;
+Procedure fl_drw_checkbox(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR;p7 : Longint {was int}); cdecl;
+
+{
+ * Interfaces
+ }
+Function fl_get_fontstruct(p1,p2 :  Longint {was int}) : PXFontStruct; cdecl;
+{
+#define fl_get_font_struct fl_get_fontstruct
+#define fl_get_fntstruct fl_get_font_struct
+}
+
+Function fl_get_mouse(p1,p2 : PFL_COORD; p3 : pword) : TWindow; cdecl;
+Procedure fl_set_mouse(p1,p2 :  TFL_Coord); cdecl;
+Function fl_get_win_mouse(p1 : TWindow; p2,p3 : PFL_COORD; p4 : pword) : TWindow; cdecl;
+Function fl_get_form_mouse(p1 : PFL_FORM; p2,p3 : PFL_COORD; p4 : pWord) : TWindow; cdecl;
+Function fl_win_to_form(p1 : TWindow) : PFL_form;  cdecl;
+Procedure fl_set_form_icon(p1 : PFL_FORM; p2 : TPixmap; p3 :TPixmap); cdecl;
+
+{
+#define fl_raise_form(p1 : f) if(p1 : f->window) XRaiseWindow(p1 : fl_display; p2 : f->window)
+#define fl_lower_form(p1 : f) if(p1 : f->window) XLowerWindow(p1 : fl_display; p2 : f->window)
+}
+{
+#define fl_set_foreground(p1 : gc; p2 : c) XSetForeground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c))
+#define fl_set_background(p1 : gc; p2 : c) XSetBackground(p1 : fl_display; p2 : gc;fl_get_pixel(p1 : c))
+}
+{ General windowing support }
+
+Function fl_wincreate(p1 : pchar) : TWindow;  cdecl;
+Function fl_winshow(p1 : TWindow) : TWindow;  cdecl;
+Function fl_winopen(p1 : pchar) : TWindow;  cdecl;
+Procedure fl_winhide(p1 : TWindow);  cdecl;
+Procedure fl_winclose(p1 : TWindow);   cdecl;
+Procedure fl_winset(p1 : TWindow);  cdecl;
+Function fl_winget : Twindow;  cdecl;
+
+Procedure fl_winresize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winmove(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winreshape(p1 : TWindow; p2,p3,p4,p5 : TFL_Coord); cdecl;
+Procedure fl_winicon(p1 : TWindow; p2 : TPixmap; p3 :TPixmap); cdecl;
+Procedure fl_winbackground(p1 : TWindow; p2 :  cardinal); cdecl;
+Procedure fl_winstepunit(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winisvalid(p1 : TWindow);  cdecl;
+Procedure fl_wintitle(p1 : TWindow; p2 :  pchar); cdecl;
+Procedure fl_winposition(p1,p2 :  TFL_Coord); cdecl;
+
+{
+#define fl_pref_winposition fl_winposition
+#define fl_win_background     fl_winbackground
+#define fl_set_winstepunit    fl_winstepunit
+}
+
+
+Procedure fl_winminsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winmaxsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_winaspect(p1 : TWindow; p2,p3 :TFL_Coord); cdecl;
+Procedure fl_reset_winconstraints(p1 : TWindow);  cdecl;
+
+Procedure fl_winsize(p1,p2 :  TFL_Coord); cdecl;
+Procedure fl_initial_winsize(p1,p2 :  TFL_Coord); cdecl;
+{
+#define fl_pref_winsize  fl_winsize
+}
+Procedure fl_initial_winstate(p1 : Longint {was int});  cdecl;
+
+Function fl_create_colormap(p1 : PXVisualInfo; p2 :  Longint {was int}) : TColormap; cdecl;
+
+
+Procedure fl_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl;
+{
+#define fl_pref_wingeometry  fl_wingeometry
+}
+Procedure fl_initial_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl;
+
+{
+Procedure fl_noborder; cdecl;
+Procedure fl_transient; cdecl;
+}
+
+Procedure fl_get_winsize(p1 : TWindow; p2,p3 :PFL_COORD); cdecl;
+Procedure fl_get_winorigin(p1 : TWindow; p2,p3 :PFL_COORD); cdecl;
+Procedure fl_get_wingeometry(p1 : TWindow; p2,p3,p4,p5 : PFL_COORD); cdecl;
+
+{ for compatibility }
+{
+#define fl_get_win_size          fl_get_winsize
+#define fl_get_win_origin        fl_get_winorigin
+#define fl_get_win_geometry      fl_get_wingeometry
+#define fl_initial_winposition   fl_pref_winposition
+
+#define fl_get_display(p1 : )           fl_display
+#define FL_FormDisplay(p1 : form)       fl_display
+#define FL_ObjectDisplay(p1 : object)   fl_display
+}
+
+{ the window an object belongints }
+
+Function FL_ObjWin ( P : PFL_Object) : TWindow; cdecl;
+
+{
+#define FL_OBJECT_WID  FL_ObjWin
+}
+
+{  all registerable events; including Client Message }
+const FL_ALL_EVENT = (KeyPressMask or KeyReleaseMask or
+                      ButtonPressMask or ButtonReleaseMask or
+                      EnterWindowMask or LeaveWindowMask or
+                      ButtonMotionMask or PointerMotionMask);
+
+{ Timer related }
+
+ FL_TIMER_EVENT = $40000000;
+
+
+Function fl_XNextEvent(p1 : PXEvent) : Longint;  cdecl;
+Function fl_XPeekEvent(p1 : PXEvent) : Longint;  cdecl;
+Function fl_XEventsQueued(p1 : Longint {was int}) : Longint;  cdecl;
+Procedure fl_XPutBackEvent(p1 : PXEvent);   cdecl;
+Function fl_last_event : PXEvent ;  cdecl;
+
+type
+TFL_APPEVENT_CB = Procedure (p1 : PXEvent; p2 : pointer); cdecl;
+PFL_APPEVENT_CB = ^TFL_APPEVENT_CB;
+
+Function fl_set_event_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ; cdecl;
+Function fl_set_idle_callback(p1 : PFL_APPEVENT_CB; p2 :  pointer) : PFL_APPEVENT_CB ; cdecl;
+Function fl_addto_selected_xevent(p1 : TWindow; p2 :  longint) : Cardinal; cdecl;
+Function fl_remove_selected_xevent(p1 : TWindow; p2 :  longint) : cardinal; cdecl;
+{
+#define fl_add_selected_xevent  fl_addto_selected_xevent
+}
+{
+ * Group some WM stuff into a structure for easy maintainance
+ }
+const
+    FL_WM_SHIFT = 1;
+    FL_WM_NORMAL = 2;
+
+type TFL_WM_STUFF = record
+    rpx, rpy,		{ reparenting offset for full border }
+    trpx, trpy,		{ reparenting offset for transient   }
+    bw,			{ additional border                  }
+    rep_method : Longint;		{ 1 for shifting; 2 for normal       }
+    pos_request : word;	{ USPOSITION or PPOSITION            }
+end;
+PFL_WM_STUFF = ^TFL_WM_STUFF;
+
+
+Function fl_add_event_callback(p1 : TWindow; p2 :  Longint {was int}; p3 : PFL_APPEVENT_CB; p4 : pointer) : PFL_APPEVENT_CB ; cdecl;
+
+Procedure fl_remove_event_callback(p1 : TWindow; p2 :  Longint {was int}); cdecl;
+Procedure fl_activate_event_callbacks(p1 : TWindow);  cdecl;
+
+Function fl_print_xevent_name(p1 : pchar; p2 : PXEvent) : PXEvent; cdecl;
+
+{
+#define metakey_down(p1 : mask)     (p1 : (p1 : mask) & Mod1Mask)
+#define shiftkey_down(p1 : mask)    (p1 : (p1 : mask) & ShiftMask)
+#define controlkey_down(p1 : mask)  (p1 : (p1 : mask) & ControlMask)
+#define button_down(p1 : mask)      (p1 : (p1 : (p1 : mask) & Button1Mask) || \
+                               (p1 : (p1 : mask) & Button2Mask) || \
+			       (p1 : (p1 : mask) & Button3Mask))
+#define fl_keypressed          fl_keysym_pressed
+}
+{***************** Resources **************}
+
+
+{ bool is Longint {was int}. FL_NONE is defined elsewhere }
+const
+    FL_NONE   = 0;
+    FL_SHORT  = 10; 
+    FL_BOOL   = 11; 
+    FL_INT    = 12;
+    FL_LONG   = 13; 
+    FL_FLOAT  = 14; 
+    FL_STRING = 15;
+    
+Type  TFL_RTYPE = Longint;
+
+TFL_RESOURCE = record
+    res_name,			{ resource name                        }
+    res_class : Pchar;		{ resource class                       }
+    rtype : TFL_RTYPE;		{ FL_INT; FL_FLOAT; FL_BOOL;FL_STRING  }
+    thevar : pointer;		{ address for the variable             }
+    defval : pchar;		{ default setting in string form       }
+    bytes : Longint {was int}		{ used only for strings                }
+end;
+PFL_RESOURCE = ^TFL_RESOURCE;
+
+Type
+ TFL_CMD_OPT = TXrmOptionDescRec;
+ PFL_CMD_OPT = ^TFL_CMD_OPT;
+ 
+Function fl_initialize(p1 : pointer; p2 : ppchar; p3 :pchar; p4 : PFL_CMD_OPT; p5 : Longint {was int}) : Pdisplay; cdecl;
+Procedure fl_finish;   cdecl;
+
+{ addfromhere }
+
+Function fl_get_resource(p1 : pchar; p2 :  pchar; p3 : TFL_RTYPE; p4 : pchar; p5 : pointer; p6 :Longint {was int}) : pchar; cdecl;
+Procedure fl_set_resource(p1 : pchar; p2 :  pchar); cdecl;
+
+Procedure fl_get_app_resources(p1 : PFL_resource; p2 : Longint {was int}); cdecl;
+Procedure fl_set_graphics_mode(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_visualID(p1 : longint);   cdecl;
+Function fl_keysym_pressed(p1 : TKeySym) : Longint;  cdecl;
+
+{
+#define buttonLabelSize  buttonFontSize
+#define sliderLabelSize  sliderFontSize
+#define inputLabelSize   inputFontSize
+}
+{ All Form control variables. Named closely as its resource name }
+Type TFL_IOPT =  record
+    rgamma, ggamma, bgamma : longint; { MUST BE FLOAT(single) !!! }
+    debug, sync,
+    depth, vclass, doubleBuffer,
+    ulPropWidth, ulThickness,	{ underline stuff       }
+    buttonFontSize,
+    sliderFontSize,
+    inputFontSize,
+    browserFontSize,
+    menuFontSize,
+    choiceFontSize,
+    labelFontSize,		{ all other labels fonts }
+    pupFontSize, pupFontStyle,	{ font for pop-up menus  }
+    privateColormap,
+    sharedColormap,
+    standardColormap,
+    ScrollBarType,
+    backingStore,
+    coordUnit,
+    borderWidth,
+    safe : Longint {was int};
+    rgbfile : pchar;		{ where RGB file is     }
+    vname : array [0..23] of char;
+end;
+PFL_IOPT = ^TFL_IOPT; 
+
+
+Const
+
+{ program default masks }
+
+    FL_PDDepth = 1 shl 1 ; 
+    FL_PDClass = 1 shl 2 ; 
+    FL_PDDouble = 1 shl 3 ; 
+    FL_PDSync = 1 shl 4 ; 
+    FL_PDPrivateMap = 1 shl 5 ; 
+    FL_PDLeftScrollBar = 1 shl 6 ; 
+    FL_PDPupFontSize = 1 shl 7 ; 
+    FL_PDButtonFontSize = 1 shl 8 ; 
+    FL_PDInputFontSize = 1 shl 9 ; 
+    FL_PDSliderFontSize = 1 shl 10 ; 
+    FL_PDVisual = 1 shl 11 ; 
+    FL_PDULThickness = 1 shl 12 ; 
+    FL_PDULPropWidth = 1 shl 13 ; 
+    FL_PDBS = 1 shl 14 ; 
+    FL_PDCoordUnit = 1 shl 15 ; 
+    FL_PDDebug = 1 shl 16 ; 
+    FL_PDSharedMap = 1 shl 17 ; 
+    FL_PDStandardMap = 1 shl 18 ; 
+    FL_PDBorderWidth = 1 shl 19 ; 
+    FL_PDSafe = 1 shl 20 ; 
+    FL_PDMenuFontSize = 1 shl 21 ; 
+    FL_PDBrowserFontSize = 1 shl 22 ; 
+    FL_PDChoiceFontSize = 1 shl 23 ; 
+    FL_PDLabelFontSize = 1 shl 24;
+    FL_PDButtonLabelSize = FL_PDButtonFontSize;
+    FL_PDSliderLabelSize = FL_PDSliderFontSize;
+    FL_PDInputLabelSize  = FL_PDInputFontSize;
+    FL_PDButtonLabel  = FL_PDButtonLabelSize;
+ 
+Procedure fl_set_defaults(p1 : cardinal; p2 :  PFL_IOPT); cdecl;
+Procedure fl_set_tabstop(p1 : pchar);  cdecl;
+Procedure fl_get_defaults(p1 : PFL_IOPT);  cdecl;
+Function fl_get_visual_depth : Longint;  cdecl;
+Function fl_vclass_name(p1 : Longint {was int}) : pchar;  cdecl;
+Function fl_vclass_val(p1 : pchar) : Longint {was int};  cdecl;
+Procedure fl_set_ul_property(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_clipping(p1 : TFL_Coord; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord); cdecl;
+Procedure fl_set_gc_clipping(p1 : TGC; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord); cdecl;
+Procedure fl_unset_gc_clipping(p1 : TGC);  cdecl;
+Procedure fl_set_clippings(p1 : PFL_RECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_unset_clipping;  cdecl;
+
+Function fl_textgc : TGC; cdecl;
+{
+#define fl_set_text_clipping(p1 : a; p2 : b;c;d)   fl_set_gc_clipping(p1 : fl_textgc; p2 : a;b;c;d)
+#define fl_unset_text_clipping(p1 : ) fl_unset_gc_clipping(p1 : fl_textgc)
+}
+
+Const
+ FL_NORMAL_BITMAP = 0;
+
+{**** Defaults ****}
+FL_BITMAP_BOXTYPE	=FL_NO_BOX;
+FL_BITMAP_COL1		=FL_COL1;	{ background of bitmap }
+FL_BITMAP_COL2		=FL_COL1;	{ not used currently   }
+FL_BITMAP_LCOL		=FL_LCOL;	{ foreground of bitmap }
+FL_BITMAP_ALIGN		=FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+{FL_BITMAP_MAXSIZE	= 128*128;}
+
+{**** Routines ****}
+Function fl_create_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_set_bitmap_data(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : pointer); cdecl;
+Procedure fl_set_bitmap_file(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Function fl_read_bitmapfile(p1 : TWindow; p2 :  pchar; p3,p4 : pword; p5,p6 : pointer) : TPixmap ; cdecl;
+
+{
+#define fl_create_from_bitmapdata(p1 : win; p2 : data; p3 : w; p4 : h)\
+                   XCreateBitmapFromData(p1 : fl_get_display(p1 : ); p2 : win; p3 :\
+                   (p1 : char *)data; p2 : w; p3 :h)
+
+{ for compatibility }
+#define fl_set_bitmap_datafile fl_set_bitmap_file
+}
+
+{ PIXMAP stuff }
+
+Const
+FL_NORMAL_PIXMAP   = 0;
+
+Function fl_create_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6  :pchar) : PFL_OBJECT; cdecl;
+Function fl_add_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_pixmap_data(p1 : PFL_OBJECT; p2 :  ppchar); cdecl;
+Procedure fl_set_pixmap_file(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_pixmap_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int}); cdecl;
+Procedure fl_set_pixmap_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap); cdecl;
+Procedure fl_set_pixmap_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_free_pixmap_pixmap(p1 : PFL_OBJECT);  cdecl;
+Function fl_get_pixmap_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ; cdecl;
+
+Function fl_read_pixmapfile(p1 : TWindow; p2 :  pchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR)  : TPixmap ; cdecl;
+Function fl_create_from_pixmapdata(p1 : TWindow; p2 :  ppchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ; cdecl;
+{
+#define fl_free_pixmap(p1 : id)  if(p1 : id != None) XFreePixmap(p1 : fl_display; p2 :  id);
+}
+
+Function fl_create_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Type TFL_BROWSER_TYPE = Longint;
+
+Const
+    FL_NORMAL_BROWSER = 0;
+    FL_SELECT_BROWSER = 1;
+    FL_HOLD_BROWSER   = 2;
+    FL_MULTI_BROWSER  = 3;
+
+{**** Defaults ****}
+
+ FL_BROWSER_BOXTYPE	= FL_DOWN_BOX;
+ FL_BROWSER_COL1	= FL_COL1;
+ FL_BROWSER_COL2	= FL_YELLOW;
+ FL_BROWSER_LCOL	= FL_LCOL;
+ FL_BROWSER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_BROWSER_SLCOL	= FL_COL1;
+ FL_BROWSER_LINELENGTH	= 1024;
+ FL_BROWSER_FONTSIZE    = FL_SMALL_FONT;
+
+{ as of .86
+ FL_SCROLLBAR_OFF = 0;
+ FL_SCROLLBAR_ON = 1;
+ FL_SCROLLBAR_ALWAYS_ON = 2;
+}
+
+{**** Routines ****}
+
+Function fl_create_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6:  pchar) : PFL_OBJECT; cdecl;
+Procedure fl_clear_browser(p1 : PFL_OBJECT); cdecl;
+Procedure fl_add_browser_line(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_addto_browser(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_addto_browserchars(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+
+Procedure fl_insert_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_delete_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_replace_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Function fl_get_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl;
+Function fl_load_browser(p1 : PFL_OBJECT; p2 :  pchar ) : Longint ; cdecl;
+
+Procedure fl_select_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_deselect_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_deselect_browser(p1 : PFL_OBJECT);  cdecl;
+Function fl_isselected_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ; cdecl;
+
+Function fl_get_browser_topline(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_browser(p1 : PFL_OBJECT ) : Longint ; cdecl;
+Function fl_get_browser_maxline(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_browser_screenlines(p1 : PFL_OBJECT ) : Longint ; cdecl;
+
+Procedure fl_set_browser_topline(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_specialkey(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_leftslider(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_browser_line_selectable(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_get_browser_dimension(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl;
+Procedure fl_set_browser_dblclick_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint); cdecl;
+{
+#define fl_set_browser_leftscrollbar fl_set_browser_leftslider
+}
+Procedure fl_set_browser_xoffset(p1 : PFL_OBJECT; p2 :  TFL_Coord); cdecl;
+Procedure fl_set_browser_scrollbarsize (p1 : PFL_OBJECT;p2,p3 : longint); cdecl;
+Procedure fl_show_browser_line(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Function fl_get_browser_xoffset(p1 : PFL_OBJECT) : TFL_Coord ; cdecl;
+
+type
+ TFL_BUTTON_TYPE= Longint;
+
+Const
+    FL_NORMAL_BUTTON	= 0;
+    FL_PUSH_BUTTON	= 1;
+    FL_RADIO_BUTTON	= 2;
+    FL_HIDDEN_BUTTON	= 3;
+    FL_TOUCH_BUTTON	= 4;
+    FL_INOUT_BUTTON	= 5;
+    FL_RETURN_BUTTON	= 6;
+    FL_HIDDEN_RET_BUTTON= 7;
+    FL_MENU_BUTTON	= 8;
+
+type TFL_BUTTON_SPEC = record
+    pixmap,mask :  TPixmap;
+    bits_w, bits_h : Cardinal;
+    val,			{ whether on }
+    mousebut,		{ mouse button that caused the push     }
+    timdel,			{ time since last touch (p1 : TOUCH buttons) }
+    event : Longint;			{ what event triggers redraw            }
+    cspecl : longint;		{ reserved for class specfic stuff      }
+    cspecv : pointer;		{ misc. things                          }
+    filename : pchar;
+end;
+TFL_BUTTON_STRUCT = TFL_BUTTON_SPEC;
+PFL_BUTTON_STRUCT = ^TFL_BUTTON_STRUCT;
+
+TFL_DrawButton = Procedure  (p1 : PFL_OBJECT);  cdecl;
+PFL_DrawButton  = ^TFL_DrawButton;
+TFL_CleanupButton = Procedure (p1 : PFL_BUTTON_STRUCT);  cdecl;
+PFL_CleanupButton= ^TFL_CleanupButton;
+
+Const
+FL_BUTTON_BOXTYPE	= FL_UP_BOX;
+FL_BUTTON_COL1		= FL_COL1;
+FL_BUTTON_COL2		= FL_COL1;
+FL_BUTTON_LCOL		= FL_LCOL;
+FL_BUTTON_ALIGN		= FL_ALIGN_CENTER;
+
+FL_BUTTON_MCOL1		= FL_MCOL;
+FL_BUTTON_MCOL2		= FL_MCOL;
+
+FL_BUTTON_BW		= FL_BOUND_WIDTH;
+
+{
+ *  light button defaults
+ }
+FL_LIGHTBUTTON_BOXTYPE	= FL_UP_BOX;
+FL_LIGHTBUTTON_COL1	= FL_COL1;
+FL_LIGHTBUTTON_COL2	= FL_YELLOW;
+FL_LIGHTBUTTON_LCOL	= FL_LCOL;
+FL_LIGHTBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+FL_LIGHTBUTTON_TOPCOL	= FL_COL1;
+FL_LIGHTBUTTON_MCOL	= FL_MCOL;
+FL_LIGHTBUTTON_MINSIZE	= 12;
+
+{* round button defaults **}
+
+  FL_ROUNDBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_ROUNDBUTTON_COL1	= FL_MCOL;
+  FL_ROUNDBUTTON_COL2	= FL_YELLOW;
+  FL_ROUNDBUTTON_LCOL	= FL_LCOL;
+  FL_ROUNDBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_ROUNDBUTTON_TOPCOL	= FL_COL1;
+  FL_ROUNDBUTTON_MCOL	= FL_MCOL;
+
+{* round3d button defaults **}
+
+  FL_ROUND3DBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_ROUND3DBUTTON3D_COL1	= FL_MCOL;
+  FL_ROUND3DBUTTON_COL2	= FL_YELLOW;
+  FL_ROUND3DBUTTON_LCOL	= FL_LCOL;
+  FL_ROUND3DBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_ROUND3DBUTTON_TOPCOL	= FL_COL1;
+  FL_ROUND3DBUTTON_MCOL	= FL_MCOL;
+
+{* check button defaults **}
+
+  FL_CHECKBUTTON_BOXTYPE	= FL_NO_BOX;
+  FL_CHECKBUTTON_COL1	= FL_COL1;
+  FL_CHECKBUTTON_COL2	= FL_YELLOW;
+  FL_CHECKBUTTON_LCOL	= FL_LCOL;
+  FL_CHECKBUTTON_ALIGN	= FL_ALIGN_CENTER;
+
+  FL_CHECKBUTTON_TOPCOL	= FL_COL1;
+  FL_CHECKBUTTON_MCOL	= FL_MCOL;
+
+{* bitmap button defaults *}
+  FL_BITMAPBUTTON_BOXTYPE	= FL_UP_BOX;
+  FL_BITMAPBUTTON_COL1	= FL_COL1;	{ bitmap background  }
+  FL_BITMAPBUTTON_COL2	= FL_BLUE;	{ "focus" color       }
+  FL_BITMAPBUTTON_LCOL	= FL_LCOL;	{ bitmap foreground   }
+  FL_BITMAPBUTTON_ALIGN	= FL_ALIGN_BOTTOM;
+
+{* bitmap button defaults *}
+  FL_PIXMAPBUTTON_BOXTYPE	= FL_UP_BOX;
+  FL_PIXMAPBUTTON_COL1	= FL_COL1;	{ box col    }
+  FL_PIXMAPBUTTON_COL2	= FL_YELLOW;	{ bound rect }
+  FL_PIXMAPBUTTON_LCOL	= FL_LCOL;
+  FL_PIXMAPBUTTON_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Routines ****}
+
+Function fl_create_button(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_bitmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_button(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT; cdecl;
+
+
+Procedure fl_set_bitmapbutton_data (p1 : PFL_OBJECT; p2,p3 : Longint {was int};   p4 : pchar); cdecl;
+Procedure fl_set_bitmapbutton_file (p1 : PFL_OBJECT; p2: pchar); cdecl;
+Function  fl_add_bitmapbutton (p1 : longint; p2,p3,p4,p5: TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+{
+#define fl_set_bitmapbutton_datafile  fl_set_bitmapbutton_file
+}
+
+Function fl_add_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 :  ppchar); cdecl;
+Procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int}); cdecl;
+Procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap); cdecl;
+Procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT);  cdecl;
+Function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ; cdecl;
+
+Function fl_get_button(p1 : PFL_OBJECT ) : Longint ;   cdecl;
+Procedure fl_set_button(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Function fl_get_button_numb(p1 : PFL_OBJECT ) : Longint ; cdecl;
+
+Procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int}); cdecl;
+
+Function fl_create_generic_button(p1,p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord;p7 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_add_button_class(p1 : Longint {was int}; p2 : PFL_DRAWBUTTON; p3 : PFL_CLEANUPBUTTON); cdecl;
+
+
+{
+ * $Id$
+ *
+ * Header for FL_CANVAS
+ *
+ }
+
+
+
+type TFL_CANVAS_TYPE = Longint;
+
+const 
+    FL_NORMAL_CANVAS = 0;
+    FL_SCROLLED_CANVAS = 1;
+
+Type
+TFL_HANDLE_CANVAS = Procedure (P1 : PFL_OBJECT; P2 : TWindow; P3 : Longint {was int}; P4 : Longint {was int};
+				 P5 : PXEvent; P6 : pointer);cdecl;
+PFL_HANDLE_CANVAS = ^TFL_HANDLE_CANVAS;
+
+TFL_MODIFY_CANVAS_PROP = Procedure (p1 : PFL_OBJECT); cdecl;
+PFL_MODIFY_CANVAS_PROP = ^TFL_MODIFY_CANVAS_PROP;
+
+{******************* Default ********************}
+
+Const   FL_CANVAS_BOXTYPE  =  FL_DOWN_BOX;
+        FL_CANVAS_ALIGN    =  FL_ALIGN_TOP;
+
+
+{*********** Interfaces    ***********************}
+
+
+Function fl_create_generic_canvas(p1 : Longint; p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord; p7 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl;
+
+Function fl_create_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_create_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+
+
+Procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap); cdecl;
+Procedure fl_set_canvas_visual(p1 : PFL_OBJECT; p2 :  PVisual); cdecl;
+Procedure fl_set_canvas_depth(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_canvas_attributes(p1 : PFL_OBJECT; p2 : word;  p3 : PXSetWindowAttributes); cdecl;
+
+Function fl_add_canvas_handler(p1 : PFL_OBJECT; p2 :  Longint {was int}; p3 : PFL_HANDLE_CANVAS; p4 : pointer) : PFL_HANDLE_CANVAS ; cdecl;
+
+Function fl_get_canvas_id(p1 : PFL_OBJECT ) : TWindow ; cdecl;
+Function fl_get_canvas_colormap(p1 : PFL_OBJECT ) : TColormap;  cdecl;
+Function fl_get_canvas_depth(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Procedure fl_remove_canvas_handler(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : PFL_HANDLE_CANVAS); cdecl;
+Procedure fl_hide_canvas(p1 : PFL_OBJECT); 	{ internal use only } cdecl;
+Procedure fl_canvas_yield_to_shortcut(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_share_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap); cdecl;
+Procedure fl_modify_canvas_prop(p1 : PFL_OBJECT; 
+				  P2 : PFL_MODIFY_CANVAS_PROP;
+				  p3 : PFL_MODIFY_CANVAS_PROP;
+				  p4 : PFL_MODIFY_CANVAS_PROP);cdecl;
+
+{ OpenGL canvases }
+Function fl_create_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_glcanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_glcanvas_defaults(p1 : pointer);  cdecl;
+Procedure fl_get_glcanvas_defaults(p1 : pointer);  cdecl;
+Procedure fl_set_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer); cdecl;
+Procedure fl_get_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer); cdecl;
+Procedure fl_set_glcanvas_direct(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_activate_glcanvas(p1 : PFL_OBJECT); cdecl;
+
+Function fl_get_glcanvas_xvisualinfo(p1 : PFL_OBJECT ) : PXVisualInfo;  cdecl;
+
+{
+# if defined(p1 : __GLX_glx_h__) || defined(p1 : GLX_H)
+Function fl_get_glcanvas_context(p1 : PFL_OBJECT ob ) : GLXContext ;  cdecl;
+Function fl_glwincreate(p1 : *; p2 : GLXContext *; p3 : Longint {was int}; p4 : Longint {was int} ) : TWindow ; cdecl;
+Function fl_glwinopen(p1 : *; p2 : GLXContext *; p3 : Longint {was int}; p4 : Longint {was int} ) : TWindow ; cdecl;
+}
+
+
+
+{
+ * $Id$
+ *
+ * Object Class: Chart
+ *
+ }
+
+
+const
+    FL_BAR_CHART	= 0;
+    FL_HORBAR_CHART	= 1;
+    FL_LINE_CHART	= 2;
+    FL_FILL_CHART	= 3;
+    FL_SPIKE_CHART	= 4;
+    FL_PIE_CHART	= 5;
+    FL_SPECIALPIE_CHART	= 6;
+     
+Type  TFL_CHART_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const  
+  FL_CHART_BOXTYPE	= FL_BORDER_BOX;
+  FL_CHART_COL1		= FL_COL1;
+  FL_CHART_LCOL		= FL_LCOL;
+  FL_CHART_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+  FL_CHART_MAX		= 512;
+
+{**** Routines ****}
+
+Function fl_create_chart(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 :  pchar) : PFL_OBJECT; cdecl;
+Function fl_add_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_clear_chart(p1 : PFL_OBJECT); cdecl;
+Procedure fl_add_chart_value(p1 : PFL_OBJECT; p2 : double; p3 : pchar; p4 : Longint {was int}); cdecl;
+Procedure fl_insert_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl;
+Procedure fl_replace_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl;
+Procedure fl_set_chart_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_chart_maxnumb(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_autosize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_lstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_lsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_chart_lcolor(p1 : PFL_OBJECT; p2 :  TFL_COLOR); cdecl;
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+const
+  FL_NORMAL_CHOICE	= 0;
+  FL_NORMAL_CHOICE2     = 1;
+  FL_DROPLIST_CHOICE	= 2;
+
+Type
+ TFL_CHOICE_TYPE = Longint;
+
+Const
+  FL_SIMPLE_CHOICE  	= FL_NORMAL_CHOICE;
+
+{**** Defaults ****}
+
+ FL_CHOICE_BOXTYPE	= FL_ROUNDED_BOX;
+ FL_CHOICE_COL1		= FL_COL1;
+ FL_CHOICE_COL2		= FL_LCOL;
+ FL_CHOICE_LCOL		= FL_LCOL;
+ FL_CHOICE_ALIGN	= FL_ALIGN_LEFT;
+
+{**** Others   ****}
+
+ FL_CHOICE_MCOL		= FL_MCOL;
+ FL_CHOICE_MAXITEMS	= 63;
+
+{**** Routines ****}
+
+Function fl_create_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) :  PFL_OBJECT; cdecl;
+
+Function fl_add_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar ) : PFL_OBJECT; cdecl;
+Procedure fl_clear_choice(p1 : PFL_OBJECT);   cdecl;
+Procedure fl_addto_choice(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_replace_choice(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_delete_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_text(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Function fl_get_choice(p1 : PFL_OBJECT ) : Longint ; cdecl;
+Function fl_get_choice_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl;
+Function fl_get_choice_maxitems(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_choice_text(p1 : PFL_OBJECT ) : pchar; cdecl;
+Procedure fl_set_choice_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_align(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_choice_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : word); cdecl;
+Procedure fl_set_choice_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Function fl_set_choice_entries(p1 : PFL_OBJECT ; p2 : PFL_PUP_ENTRY) : longint; cdecl;
+
+
+{
+ * $Id$
+ *
+ }
+
+
+Const
+    FL_ANALOG_CLOCK	= 0;
+    FL_DIGITAL_CLOCK	= 1;
+
+ FL_CLOCK_BOXTYPE   = FL_UP_BOX;
+ FL_CLOCK_COL1      = FL_INACTIVE_COL;
+ FL_CLOCK_COL2      = FL_BOTTOM_BCOL;
+ FL_CLOCK_LCOL      = FL_BLACK;
+ FL_CLOCK_ALIGN     = FL_ALIGN_BOTTOM;
+
+ FL_CLOCK_TOPCOL    = FL_COL1;
+
+Function fl_create_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Procedure fl_get_clock(p1 : PFL_OBJECT; p2,p3,p4 : pointer); cdecl;
+Function fl_set_clock_adjustment ( p1 : PFL_OBJECT; p2 : longint) : longint; cdecl;
+Procedure fl_set_clock_ampm(p1 : PFL_OBJECT; p2 : Longint); cdecl;
+
+
+{
+ * $Id$
+ *
+ }
+
+
+Const
+    FL_NORMAL_COUNTER = 0;
+    FL_SIMPLE_COUNTER = 1;
+    
+type TFL_COUNTER_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+ FL_COUNTER_BOXTYPE	= FL_UP_BOX;
+ FL_COUNTER_COL1	= FL_COL1;
+ FL_COUNTER_COL2	= FL_BLUE;	{ ct label     }
+ FL_COUNTER_LCOL	= FL_LCOL;	{ ct reporting }
+ FL_COUNTER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_COUNTER_BW		= FL_BOUND_WIDTH-1;
+
+{**** Routines ****}
+
+Function fl_create_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_counter_value(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_counter_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_counter_step(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_counter_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Function  fl_get_counter_value(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_get_counter_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;
+Procedure fl_get_counter_step(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;
+Procedure fl_set_counter_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_counter_filter(p1 : PFL_OBJECT;p2 : pointer); {!!!!} cdecl;
+{
+				  pchar(p1 : *)(p1 : PFL_OBJECT; p2 : double; p3 :Longint {was int}));
+}
+
+{
+ * $Id$
+ *
+ * Cursor defs and prototypes
+ *
+ }
+
+
+{$i cursorfont.inc}
+
+const FL_DEFAULT_CURSOR = -1;
+      FL_INVISIBLE_CURSOR = -2;
+
+Procedure fl_set_cursor(p1 : TWindow; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_cursor_color(p1 : longint; p2 : TFL_COLOR; p3 :TFL_COLOR); cdecl;
+Function fl_create_bitmap_cursor(p1 : pchar; p2 :  pchar; p3,p4,p5,p6 : Longint {was int}) : TCursor; cdecl;
+Function fl_get_cursor_byname(p1 : longint ) : TCursor;  cdecl;
+Function fl_create_animated_cursor(p1 : Plongint;p2 : longint): Longint; cdecl;
+
+{
+#define fl_reset_cursor(p1 : win) fl_set_cursor(p1 : win; p2 :  -1);
+}
+
+
+
+{
+ * $Id$
+ }
+
+
+Const
+    FL_NORMAL_DIAL = 0;
+    FL_LINE_DIAL   = 1;
+    FL_FILL_DIAL   = 2;
+    
+    FL_DIAL_CW  = 0;
+    FL_DIAL_CCW = 1;
+
+Type
+  TFL_DIAL_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+
+ FL_DIAL_BOXTYPE	= FL_FLAT_BOX;
+ FL_DIAL_COL1		= FL_COL1;
+ FL_DIAL_COL2		= FL_RIGHT_BCOL;
+ FL_DIAL_LCOL		= FL_LCOL;
+ FL_DIAL_ALIGN		= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+ FL_DIAL_TOPCOL		= FL_COL1;
+
+{**** Routines ****}
+
+Function fl_create_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 :pchar) : PFL_OBJECT; cdecl;
+Function fl_add_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_dial_value(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_dial_value(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_set_dial_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_dial_bounds(p1 : PFL_OBJECT; p2 : pdouble; p3 :pdouble); cdecl;
+
+Procedure fl_set_dial_step(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_dial_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_dial_angles(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_dial_cross(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_dial_direction (p1 : PFL_OBJECT; p2 : Longint); cdecl;
+
+{
+ * $Id$
+ *
+ *  Convenience Functions to read a directory cdecl;
+ }
+
+
+{  File types }
+
+Const
+    FT_FILE  = 0; 
+    FT_DIR   = 1; 
+    FT_LINK  = 2; 
+    FT_SOCK  = 3;
+    FT_FIFO  = 4; 
+    FT_BLK   = 5;
+    FT_CHR   = 6; 
+    FT_OTHER = 7;
+
+type TFL_Dirlist = record
+    name : pchar;			{ entry name }
+    ftype : longint;			{ FILE_TYPE  }
+    dl_mtime : longint;
+    dl_size : cardinal;
+    filler : array[0..2] of longint;
+    end;
+    PFL_Dirlist = ^TFL_Dirlist;
+
+    
+TFL_DIRLIST_FILTER = Procedure (p1 : pchar; p2 :  Longint {was int}); cdecl;
+PFL_DIRLIST_FILTER = ^TFL_DIRLIST_FILTER;
+
+Const
+  FL_ALPHASORT  = 1;
+  FL_RALPHASORT = 2;
+  FL_MTIMESORT  = 3;
+  FL_RMTIMESORT = 4;
+  FL_SIZESORT  = 5;
+  FL_RSIZESORT = 6;
+  
+
+{ read dir with pattern filtering. All dirs read might be cached.
+ * must not change dirlist in anyway.
+ }
+Function fl_get_dirlist(p1 : pchar; p2 : pchar;	p3 : pointer;p4	:longint) : PFL_Dirlist;	{ rescan } cdecl;
+
+
+Function fl_set_dirlist_filter (p1 : PFL_DIRLIST_FILTER ) : PFL_DIRLIST_FILTER ; cdecl;
+Procedure fl_set_dirlist_sort ( p1 : longint); cdecl;
+
+Procedure fl_free_dirlist(p1 : PFL_Dirlist);  cdecl;
+
+{ Free all directory caches }
+Procedure fl_free_all_dirlist;  cdecl;
+
+Function fl_is_valid_dir(p1 : pchar ) : Longint; cdecl;
+Function fl_fmtime(p1 : pchar ) : cardinal ;  cdecl;
+Function fl_fix_dirname(p1 : pchar) : pchar;  cdecl;
+
+Const 
+ FLPS_AUTO = 0;
+ FLPS_LANDSCAPE = 1;
+ FLPS_PORTRAIT = 2;
+ 
+
+ FLPS_BW = -1;
+ FLPS_GRAYSCALE=0;
+ 
+ type
+   TFLPS_CONTROL = record
+    ps_color,orientation,auto_fit,drawbox,eps : longint;
+    xdpi,ydpi,paper_w,paper_h, gamma : real; { Must be float }
+   end;
+   PFLPS_CONTROL = ^TFLPS_CONTROL;
+   
+Function flps_init : PFLPS_CONTROL; cdecl;
+Function fl_object_ps_dump (p1 : PFL_OBJECT; p2 : pchar) : longint; cdecl;
+   
+{
+ * $Id$
+ *
+ }
+
+
+{ types of frames }
+Const
+    FL_NO_FRAME		= 0;
+    FL_UP_FRAME		= 1;
+    FL_DOWN_FRAME	= 2;
+    FL_BORDER_FRAME	= 3;
+    FL_SHADOW_FRAME	= 4;
+    FL_ENGRAVED_FRAME	= 5;
+    FL_ROUNDED_FRAME	= 6;
+    FL_EMBOSSED_FRAME	= 7;
+    FL_OVAL_FRAME	= 8;
+
+    FL_FRAME_COL1 = FL_BLACK;
+    FL_FRAME_COL2 = FL_COL1;
+    FL_FRAME_LCOL = FL_BLACK;
+
+Function fl_create_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_create_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+
+{
+ * $Id$
+ *
+ *  Object Class: Free
+ }
+
+Const
+    FL_NORMAL_FREE	= 0;
+    FL_INACTIVE_FREE	= 1;
+    FL_INPUT_FREE	= 2;
+    FL_CONTINUOUS_FREE	= 3;
+    FL_ALL_FREE		= 4;
+Type
+   TFL_FREE_TYPE = Longint;
+   PFL_FREE_TYPE = ^TFL_FREE_TYPE;
+
+Const FL_SLEEPING_FREE =  FL_INACTIVE_FREE;
+
+
+Function fl_create_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar; p7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;
+Function fl_add_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar; P7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl;
+
+{
+ * $Id$
+ }
+
+Const
+ FLAlertDismissLabel = 'flAlert.dismiss.label';
+ FLQuestionYesLabel  = 'flQuestion.yes.label';
+ FLQuestionNoLabel   = 'flQuestion.no.label';
+ FLOKLabel           = 'flInput.ok.label';
+ FLInputClearLabel   = 'flInput.clear.label';
+ FLInputCancelLabel   = 'flInput.cancel.label';
+
+{ from goodies.c }
+Procedure fl_set_goodies_font(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Procedure fl_show_message(p1 : pchar; p2 : pchar; p3 :pchar); cdecl;
+Procedure fl_show_messages(p1 : pchar); cdecl;
+Procedure fl_show_alert(p1 : pchar; p2 : pchar; p3 : pchar; p4 : Longint {was int}); cdecl;
+Function fl_show_question(p1 : pchar; p2 : longint) : Longint ; cdecl;
+Function fl_show_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl;
+Function fl_show_simple_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl;
+Function fl_show_colormap(p1 : Longint ) : Longint ;   cdecl;
+Function fl_show_choice(p1,p2,p3 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint; cdecl;
+Function fl_show_choices(p1 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint; cdecl;
+Procedure fl_set_choices_shortcut(p1,p2,p3 :pchar); cdecl;
+
+Procedure fl_show_oneliner(p1 : pchar; p2 : TFL_Coord; p3 :TFL_Coord); cdecl;
+Procedure fl_hide_oneliner;  cdecl;
+Procedure fl_set_oneliner_font(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_oneliner_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl;
+
+type TFD_CMDLOG = record
+    form : PFL_FORM;
+    browser,close_browser,clear_browser : PFL_OBJECT;
+end;
+PFD_CMDLOG = ^TFD_CMDLOG;
+
+Function fl_exe_command(p1 : pchar; p2 : Longint) : Longint; cdecl;
+Function fl_end_command(p1 : longint) : Longint; cdecl;
+Function fl_check_command(p1 : longint) : longint; cdecl;
+Function fl_end_all_command : Longint; cdecl;
+Procedure fl_show_command_log(p1 : Longint); cdecl;
+Procedure fl_hide_command_log; cdecl;
+Procedure fl_clear_command_log; cdecl;
+Procedure fl_addto_command_log(p1 : pchar); cdecl;
+Procedure fl_set_command_log_position(p1,p2 :longint); cdecl;
+Function fl_get_command_log_fdstruct : PFD_CMDLOG; cdecl;
+
+{ aliases }
+{
+#define fl_open_command    fl_exe_command
+#define fl_close_command   fl_end_command
+}
+
+{****** from file selector ****************}
+
+Const  FL_MAX_FSELECTOR =  6;
+
+type TFD_FSELECTOR = record
+    fselect : PFL_FORM;
+    browser, theinput, prompt, resbutt,
+    patbutt,dirbutt, cancel, ready : PFL_OBJECT;
+    dirlabel,patlabel : PFL_OBJECT;
+    appbut : array[0..2] of PFL_OBJECT;
+end;
+
+PFD_FSELECTOR = ^TFD_FSELECTOR;
+
+Function fl_use_fselector(p1 : LongInt ) : LongInt;  cdecl;
+Function fl_show_fselector(p1,p2,p3,p4 :  pchar) : pchar; cdecl;
+
+Procedure fl_set_fselector_fontsize (p1 : Longint); cdecl;
+Procedure fl_set_fselector_fontstyle (p1 : longint); cdecl;
+Procedure fl_set_fselector_placement(p1 : LongInt);  cdecl;
+Procedure fl_set_fselector_border(p1 : LongInt);  cdecl;
+
+{
+#define fl_set_fselector_transient(p1 : b)   \
+                     fl_set_fselector_border(p1 : (p1 : b)?FL_TRANSIENT:FL_FULLBORDER)
+}
+
+Type TFSelector_Callback = Function (P1 : Pchar; P2 : Pointer) : Longint;  cdecl;
+     PFSelector_Callback = ^TFSelector_Callback;
+     TFL_Procedure = Procedure; cdecl;
+     PFL_Procedure = ^TFL_Procedure;
+
+Procedure fl_set_fselector_callback( p1 : PFSelector_Callback; p2 : pointer); cdecl;
+Function fl_get_filename : pchar; cdecl;
+Function fl_get_directory : pchar;  cdecl;
+Function fl_get_pattern : pchar;   cdecl;
+Function fl_set_directory (p1 : pchar ) : LongInt;  cdecl;
+Procedure fl_set_pattern (p1 : pchar); cdecl;
+Procedure fl_refresh_fselector;  cdecl;
+Procedure fl_add_fselector_appbutton(p1 : pchar; p2 : PFL_Procedure; p3 : pointer); cdecl;
+Procedure fl_remove_fselector_appbutton(p1 : pchar); cdecl;
+Procedure fl_disable_fselector_cache(p1 : LongInt);  cdecl;
+Procedure fl_invalidate_fselector_cache;  cdecl;
+Function fl_get_fselector_form : PFL_FORM;  cdecl;
+Function fl_get_fselector_fdstruct  : PFD_FSELECTOR;  cdecl;
+Procedure fl_hide_fselector;  cdecl;
+
+
+Procedure fl_set_fselector_filetype_marker(p1,p2,p3,p4,p5 : Longint); cdecl;
+
+{
+#define fl_show_file_selector     fl_show_fselector
+#define fl_set_fselector_cb       fl_set_fselector_callback
+#define fl_set_fselector_title(p1 : s) fl_set_form_title(p1 : fl_get_fselector_form(p1 : ); p2 : s)
+}
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+{**** Types    ****}
+
+Const 
+    FL_NORMAL_INPUT	= 0;
+    FL_FLOAT_INPUT	= 1;
+    FL_INT_INPUT	= 2;
+    FL_DATE_INPUT	= 3;
+    FL_MULTILINE_INPUT	= 4;
+    FL_HIDDEN_INPUT	= 5;
+    FL_SECRET_INPUT	= 6;
+    
+    FL_INPUT_MMDD       = 0;
+    FL_INPUT_DDMM	= 1;
+    
+Type TFL_INPUT_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const
+   FL_INPUT_BOXTYPE		= FL_DOWN_BOX;
+   FL_INPUT_COL1		= FL_COL1;
+   FL_INPUT_COL2		= FL_MCOL;
+   FL_INPUT_LCOL		= FL_LCOL;
+   FL_INPUT_ALIGN		= FL_ALIGN_LEFT;
+
+{**** Others   ****}
+
+   FL_INPUT_TCOL		= FL_LCOL;
+   FL_INPUT_CCOL		= FL_BLUE;
+
+   cFL_RINGBELL             = (1 shl 4);
+
+{**** Routines ****}
+
+Function fl_create_input(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_input(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_input(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_set_input_color(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_input_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_scroll(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_cursorpos(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_input_selected(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_input_maxchars(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_format(p1 : PFL_OBJECT; p2,p3 :  Longint {was int}); cdecl;
+Procedure fl_set_input_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_xoffset(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_topline(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_input_scrollbarsize(p1 : PFL_OBJECT; p2,p3 :  Longint {was int}); cdecl;
+
+Function fl_get_input(p1 : PFL_OBJECT ) : pchar;   cdecl;
+Function fl_get_input_cursorpos(p1 : PFL_OBJECT; p2,p3 : Pointer ) : LongInt; cdecl;
+Function fl_get_input_topline(p1 : PFL_OBJECT;p2,p3 : PLongint) : Longint; cdecl;
+Function fl_get_input_screenlines(p1 : PFL_OBJECT) : Longint; cdecl;
+Function fl_get_input_numberoflines(p1 : PFL_OBJECT) : Longint; cdecl;
+Procedure fl_get_input_format(p1 : PFL_OBJECT;p2,p3 : PLongint); cdecl;
+Function fl_get_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}) : pchar ;  cdecl;
+
+
+
+type
+ TFL_INPUTVALIDATOR = Procedure (p1 : PFL_OBJECT; p2,p3 : pchar; p4 : Longint {was int}); cdecl;
+ PFL_INPUTVALIDATOR= ^TFL_INPUTVALIDATOR;
+
+Function fl_set_input_filter(p1 : PFL_OBJECT; p2 :  PFL_INPUTVALIDATOR ) : PFL_INPUTVALIDATOR ; cdecl;
+
+{
+#define fl_set_input_shortcut fl_set_object_shortcut
+#define ringbell(p1 : )  XBell(p1 : fl_display; p2 :  0)
+}
+
+type TFL_EditKeymap = record
+    { basic editing }
+    del_prev_char : Longint;		{ delete previous char    }
+    del_next_char : Longint;		{ delete next char        }
+    del_prev_word : Longint;		{ delete previous word    }
+    del_next_word : Longint;		{ delete next word        }
+
+    { movement }
+    moveto_prev_line : Longint;	{ one line  up             }
+    moveto_next_line : Longint;	{ one line down            }
+    moveto_prev_char : Longint;	{ one char left            }
+    moveto_next_char : Longint;	{ one char right           }
+    moveto_prev_word : Longint;	{ one word left            }
+    moveto_next_word : Longint;	{ one word right           }
+    moveto_prev_page : Longint;	{ one page up              }
+    moveto_next_page : Longint;	{ one page down            }
+    moveto_bol : Longint;		{ move to begining of line }
+    moveto_eol : Longint;		{ move to end of line      }
+    moveto_bof : Longint;		{ move to begin of file    }
+    moveto_eof : Longint;		{ move to end of file      }
+
+    { misc. stuff }
+    transpose : Longint;		{ switch two char positions }
+    paste : Longint;			{ paste the edit buffer    }
+    backspace : Longint;		{ another  del_prev_char   }
+    del_to_bol : Longint;		{ cut to begining of line  }
+    del_to_eol : Longint;		{ cut to end of line       }
+    clear_field : Longint;		{ delete everything        }
+    del_to_eos : Longint;		{ not implemented          }
+    reserverd : array[0..3] of Longint;		{ fillter                  }
+end;
+PFL_EditKeymap = ^TFL_EditKeymap;
+
+Procedure fl_set_input_editkeymap(a: PFL_EditKeymap); cdecl;
+
+
+
+
+{
+ * $Id$
+ *
+ }
+
+
+{***********   Object Class: Menu         ***********}
+
+Const
+    FL_TOUCH_MENU	= 0;
+    FL_PUSH_MENU	= 1;
+    FL_PULLDOWN_MENU	= 2;
+    
+Type TFL_MENU_TYPE = Longint;
+
+{**** Defaults ****}
+
+Const
+  FL_MENU_BOXTYPE	= FL_BORDER_BOX;
+  FL_MENU_COL1		= FL_COL1;
+  FL_MENU_COL2		= FL_MCOL;
+  FL_MENU_LCOL		= FL_LCOL;
+  FL_MENU_ALIGN		= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+  FL_MENU_MAXITEMS	= 128;
+  FL_MENU_MAXSTR	= 64;
+
+{**** Routines ****}
+
+Function fl_create_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_clear_menu(p1 : PFL_OBJECT);  cdecl;
+Procedure fl_set_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_addto_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_replace_menu_item(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_delete_menu_item(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Procedure fl_set_menu_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_set_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Cardinal); cdecl;
+Procedure fl_show_menu_symbol(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_menu_popup(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Function fl_get_menu_popup(p1 : pfl_object): longint; cdecl;
+
+Function fl_get_menu(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_menu_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl;
+Function fl_get_menu_maxitems(p1 : PFL_OBJECT ) : Longint ;  cdecl;
+Function fl_get_menu_item_mode(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Cardinal ; cdecl;
+Function fl_get_menu_text(p1 : PFL_OBJECT ) : pchar; cdecl;
+
+
+
+Const   
+    FL_NORMAL_MENUBAR = 0;
+
+    FL_MENUBAR_BOXTYPE	=FL_UP_BOX;
+    FL_MENUBAR_COL1	=FL_COL1;
+    FL_MENUBAR_COL2	=FL_MCOL;
+    FL_MENUBAR_LCOL	=FL_LCOL;
+    
+Function fl_create_menubar(p1 : longint; p2,p3,p4,p5 : TFL_COORD;p6 : Pchar): PFL_OBJECT; cdecl;
+Function fl_add_menubar(p1 : longint;p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+   
+Procedure fl_clear_menubar(p1 : PFL_OBJECT); cdecl;
+Procedure fl_set_menubar(p1 : PFL_OBJECT; p2 : pchar); cdecl;
+Procedure fl_set_menubar_entries(p1 : PFL_OBJECT; p2 : pchar;p3 : PFL_PUP_ENTRY); cdecl;
+
+   
+{
+ * $Id$
+ *
+ *  Prototypes for pop-up menus
+ }
+
+
+Const
+ FL_MAXPUPI   = 80;	{ max item each pup        }
+ FL_PUP_PADH  =  4;	{ space between each items }
+
+ type
+  TFL_PUP_ENTERCB = Procedure (p1 : longint; p2: pointer); cdecl;
+  PFL_PUP_ENTERCB = ^TFL_PUP_ENTERCB;
+
+  TFL_PUP_LEAVECB =Procedure (p1 : longint; p2: pointer); cdecl;
+  PFL_PUP_LEAVECB = ^TFL_PUP_LEAVECB;
+
+Function fl_setpup_entries(p1 : Longint; p2 : PFL_PUP_ENTRY) : Longint; cdecl;
+Function fl_newpup(p1 : TWindow ) : LongInt;  cdecl;
+
+Function fl_defpup(p1 : TWindow; p2 :  pchar) : LongInt; cdecl;
+Function fl_addtopup(p1 : longint; p2 :  pchar) : LongInt; cdecl;
+
+Function fl_setpup_mode(p1 : Longint; p2 : Longint {was int}; p3 : Cardinal) : Longint; cdecl;
+Procedure fl_freepup(p1 : Longint);  cdecl;
+Function fl_dopup(p1 : Longint ) : LongInt;  cdecl;
+
+Procedure fl_setpup_shortcut(p1 : Longint; p2 : Longint {was int}; p3 :pchar); cdecl;
+Procedure fl_setpup_position(p1 : Longint; p2 :  Longint {was int}); cdecl;
+Procedure fl_setpup_selection(p1 : Longint; p2 :  Longint {was int}); cdecl;
+Procedure fl_setpup_shadow(p1 : LongInt; p2 :  Longint {was LongInt}); cdecl;
+Procedure fl_setpup_softedge(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Function fl_setpup_fontsize(p1 : LongInt) : Longint;  cdecl;
+Function fl_setpup_fontstyle(p1 : LongInt) : Longint;   cdecl;
+Procedure fl_setpup_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl;
+Procedure fl_setpup_checkcolor(p1 : TFL_COLOR);  cdecl;
+Function fl_setpup_default_fontsize(p1 : LongInt) : Longint;  cdecl;
+Function fl_setpup_default_fontstyle(p1 : LongInt) : Longint;   cdecl;
+Procedure fl_setpup_default_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl;
+Procedure fl_setpup_default_checkcolor(p1 : TFL_COLOR);  cdecl;
+Procedure fl_setpup_title(p1 : LongInt; p2 :  pchar); cdecl;
+Procedure fl_setpup_bw(p1 : LongInt; p2 :  Longint {was int}); cdecl;
+Procedure fl_setpup_pad(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Function fl_setpup_cursor(p1 : LongInt; p2 :  Longint {was int} ) : TCursor ; cdecl;
+Function fl_setpup_default_cursor(p1 : LongInt ) : TCursor ;  cdecl;
+Function fl_setpup_maxpup(p1 : LongInt ) : LongInt;  cdecl;
+Function fl_getpup_mode(p1 : LongInt; p2 :  Longint {was int} ) : Cardinal; cdecl;
+Function fl_getpup_text(p1 : LongInt; p2 :  Longint {was int} ) : pchar; cdecl;
+Procedure fl_showpup(p1 : LongInt);  cdecl;
+Procedure fl_hidepup(p1 : LongInt); cdecl;
+
+{
+#define fl_setpup_hotkey    fl_setpup_shortcut
+}
+
+Function fl_setpup_itemcb(p1 : LongInt; p2 : Longint {was int}; p3 :PFL_PUP_CB ) : PFL_PUP_CB ; cdecl;
+Function fl_setpup_menucb(p1 : LongInt; p2 :  PFL_PUP_CB ) : PFL_PUP_CB ; cdecl;
+Procedure fl_setpup_submenu(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+
+{
+#define fl_setpup    fl_setpup_mode
+}
+
+
+
+{
+ * $Id$
+ *
+ }
+
+Const
+ FL_NORMAL_POSITIONER	= 0;
+
+{**** Defaults ****}
+
+ FL_POSITIONER_BOXTYPE	= FL_DOWN_BOX;
+ FL_POSITIONER_COL1	= FL_COL1;
+ FL_POSITIONER_COL2	= FL_RED;
+ FL_POSITIONER_LCOL	= FL_LCOL;
+ FL_POSITIONER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+
+{**** Routines ****}
+
+Function fl_create_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_positioner_xvalue(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_positioner_xvalue(p1 : PFL_OBJECT ) : double ; cdecl;
+Procedure fl_set_positioner_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_positioner_xbounds(p1 : PFL_OBJECT; p2 : pdouble ; p3 : pdouble); cdecl;
+Procedure fl_set_positioner_yvalue(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_positioner_yvalue(p1 : PFL_OBJECT ) : double ; cdecl;
+Procedure fl_set_positioner_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_positioner_ybounds(p1 : PFL_OBJECT; p2 ,p3 :pdouble); cdecl;
+Procedure fl_set_positioner_xstep(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_positioner_ystep(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_positioner_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Const 
+     FL_HOR_SCROLLBAR = 0;
+     FL_VERT_SCROLLBAR = 1;
+     FL_HOR_THIN_SCROLLBAR = 2;
+     FL_VERT_THIN_SCROLLBAR = 3;
+     FL_HOR_NICE_SCROLLBAR = 4;
+     FL_VERT_NICE_SCROLLBAR = 5;
+     FL_HOR_PLAIN_SCROLLBAR = 6;
+     FL_VERT_PLAIN_SCROLLBAR = 7;
+
+     FL_HOR_BASIC_SCROLLBAR = FL_HOR_PLAIN_SCROLLBAR;
+     FL_VERT_BASIC_SCROLLBAR =    FL_VERT_PLAIN_SCROLLBAR;
+
+     FL_THIN_SCROLLBAR = 0;
+     FL_PLAIN_SCROLLBAR = 1;
+     FL_NORMAL_SCROLLBAR = 2;
+     FL_NICE_SCROLLBAR = 3;
+     
+Function  fl_create_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+Function  fl_add_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+ 
+Function  fl_get_scrollbar_value(p1 : PFL_OBJECT) : double ; cdecl;
+Procedure fl_set_scrollbar_value(p1 : PFL_OBJECT; p2: double); cdecl;
+Procedure fl_set_scrollbar_size(p1 : PFL_OBJECT; p2 : double); cdecl;
+Procedure fl_set_scrollbar_increment(p1 : PFL_OBJECT;p2,p3: double); cdecl;
+Procedure fl_get_scrollbar_increment(p1 : PFL_OBJECT; p2,p3 : real {float !!}); cdecl;
+Procedure fl_set_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : double); cdecl;
+Procedure fl_get_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : real {float !!!}); cdecl;
+Procedure fl_set_scrollbar_return(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Procedure fl_set_scrollbar_step(P1 : PFL_OBJECT;p2 : double); cdecl;
+
+
+
+{
+ * $Id$
+ *
+ * Object Class: Slider
+ *
+ }
+
+
+Const
+    FL_VERT_SLIDER	= 0;
+    FL_HOR_SLIDER	= 1;
+    FL_VERT_FILL_SLIDER	= 2;
+    FL_HOR_FILL_SLIDER	= 3;
+    FL_VERT_NICE_SLIDER	= 4;
+    FL_HOR_NICE_SLIDER	= 5;
+    FL_HOR_BROWSER_SLIDER = 6;
+    FL_VERT_BROWSER_SLIDER = 7;
+    FL_HOR_BROWSER_SLIDER2	= 8;	{ for Longint {was int}ernal use only }
+    FL_VERT_BROWSER_SLIDER2	= 9;	{ for Longint {was int}ernal use only }
+    FL_HOR_THIN_SLIDER = 10;		{ internal use          }
+    FL_VERT_THIN_SLIDER = 11;	{ internal use          }
+    FL_HOR_BASIC_SLIDER = 12;	{ internal use          }
+    FL_VERT_BASIC_SLIDER = 13;	{ internal use          }
+ 
+Type
+ TFL_SLIDER_TYPE = Longint;
+ PFL_SLIDER_TYPE = ^TFL_SLIDER_TYPE; 
+
+
+{**** Defaults ****}
+Const
+  FL_SLIDER_BW1         = FL_BOUND_WIDTH;
+  FL_SLIDER_BW2         = FL_BOUND_WIDTH-1;
+
+  FL_SLIDER_BOXTYPE	= FL_DOWN_BOX;
+  FL_SLIDER_COL1	= FL_COL1;
+  FL_SLIDER_COL2	= FL_COL1;
+  FL_SLIDER_LCOL	= FL_LCOL;
+  FL_SLIDER_ALIGN	= FL_ALIGN_BOTTOM;
+
+{**** Others   ****}
+
+  FL_SLIDER_FINE		= 0.05;
+  FL_SLIDER_WIDTH		= 0.10;
+
+
+{**** Routines ****}
+
+Function fl_create_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+Function fl_add_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Function fl_create_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar): PFL_OBJECT; cdecl;
+Function fl_add_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;P6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_slider_value(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_slider_value(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_set_slider_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_get_slider_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl;
+
+Procedure fl_set_slider_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Procedure fl_set_slider_step(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_slider_increment(p1 : PFL_OBJECT; p2,p3 :  double); cdecl;
+Procedure fl_set_slider_size(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Procedure fl_set_slider_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Type
+  TFL_SLIDER_FILTER = Procedure (p1 : PFL_OBJECT; p2 : double; p3 :Longint {was int}); cdecl;
+  PTFL_SLIDER_FILTER= ^TFL_SLIDER_FILTER  ;
+  
+Procedure fl_set_slider_filter(p1 : PFL_OBJECT; p2 : PTFL_SLIDER_FILTER); cdecl;
+
+{
+ * $Id$
+ *
+}
+const
+FL_TOP_TABFOLDER = 0;
+FL_BOTTOM_TABFOLDER = 1;
+FL_LEFT_TABFOLDER = 2;
+FL_RIGHT_TABFOLDER = 3;
+
+FL_NORMAL_TABFOLDER = FL_TOP_TABFOLDER;
+
+Function fl_create_tabfolder (p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+Function fl_add_tabfolder(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl;
+Function fl_addto_tabfolder(p1 : PFL_OBJECT; p2 : pchar; p3 : PFL_FORM) : PFL_OBJECT; cdecl;
+Procedure fl_delete_folder(p1 : PFL_OBJECT; p2 : PFL_FORM); cdecl;
+Procedure fl_delete_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Procedure fl_delete_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl;
+
+Procedure fl_set_folder(p1 : PFL_OBJECT; P2 : PFL_FORM); cdecl;
+Procedure fl_set_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl;
+Procedure fl_set_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl;
+Function fl_get_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl;
+Function fl_get_folder_number(p1 : PFL_OBJECT) : longint; cdecl;
+Function fl_get_folder_name(p1 : PFL_OBJECT) : pchar; cdecl;
+Function fl_get_active_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl;
+Function fl_get_active_folder_number(P1 : PFL_OBJECT) : longint; cdecl;
+Function fl_get_active_folder_name(p1 : PFL_OBJECT) : Pchar; cdecl;
+Procedure fl_get_folder_area(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord); cdecl;
+ 
+Procedure fl_replace_folder_bynumber(p1 : PFL_OBJECT;p2 : longint;p3 : PFL_FORM); cdecl;
+
+{
+ * $Id$
+ *
+ }
+
+Const
+    FL_NORMAL_TEXT = 0;
+
+ FL_TEXT_BOXTYPE    = FL_FLAT_BOX;
+ FL_TEXT_COL1       = FL_COL1;
+ FL_TEXT_COL2       = FL_MCOL;
+ FL_TEXT_LCOL       = FL_LCOL;
+ FL_TEXT_ALIGN      = FL_ALIGN_LEFT;
+
+Function fl_create_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl;
+Function fl_add_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl;
+
+
+
+{
+ * $Id$
+ *
+ *  Object Class: Timer
+ *
+ }
+
+
+Const 
+    FL_NORMAL_TIMER = 0;
+    FL_VALUE_TIMER  = 1;
+    FL_HIDDEN_TIMER = 2;
+    
+Type TFL_TIMER_TYPE = Longint;
+
+{**** Defaults ****}
+Const
+
+FL_TIMER_BOXTYPE	= FL_DOWN_BOX;
+FL_TIMER_COL1		= FL_COL1;
+FL_TIMER_COL2		= FL_RED;
+FL_TIMER_LCOL		= FL_LCOL;
+FL_TIMER_ALIGN		= FL_ALIGN_CENTER;
+
+{**** Others   ****}
+
+  FL_TIMER_BLINKRATE	= 0.2;
+  
+Type TFL_TIMER_FILTER = Function (P1 : PFL_OBJECT;p2 : double) : pchar; cdecl;
+     PFL_TIMER_FILTER = ^TFL_TIMER_FILTER;  
+
+{**** Routines ****}
+
+Function fl_create_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl;
+
+Function fl_add_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl;
+
+Procedure fl_set_timer(p1 : PFL_OBJECT; p2 :  double); cdecl;
+Function fl_get_timer(p1 : PFL_OBJECT ) : double ;  cdecl;
+Procedure fl_set_timer_countup(p1 : PFL_OBJECT; p2 :  Longint); cdecl;
+Function fl_set_timer_filter (p1 : PFL_OBJECT; p2 : PFL_TIMER_FILTER) : PFL_TIMER_FILTER; cdecl;
+Procedure fl_suspend_timer(p1 : PFL_OBJECT); cdecl;
+Procedure fl_resume_timer(p1 : PFL_OBJECT); cdecl;
+
+{
+ * $Id$
+ *
+ }
+
+
+{
+ * Class FL_XYPLOT
+ }
+
+Const
+    FL_NORMAL_XYPLOT	= 0;		{ solid line                        }
+    FL_SQUARE_XYPLOT	= 1;		{ with added square                 }
+    FL_CIRCLE_XYPLOT	= 2;		{ with added circle                 }
+    FL_FILL_XYPLOT	= 3;		{ fill completely                   }
+    FL_POINTS_XYPLOT	= 4;		{ only data points                  }
+    FL_DASHED_XYPLOT	= 5;		{ dashed line                       }
+    FL_IMPULSE_XYPLOT	= 6;
+    FL_ACTIVE_XYPLOT	= 7;		{ accepts Longint {was int}eractive manipulations }
+    FL_EMPTY_XYPLOT	= 8;
+Type 
+    TFL_XYPLOT_TYPE = Longint;
+
+Const
+    FL_LINEAR = 0;
+    FL_LOG    = 1;
+
+Const
+    FL_GRID_NONE  = 0;
+    FL_GRID_MAJOR = 1;
+    FL_GRID_MINOR = 2;
+ 
+{**** Defaults ****}
+
+ FL_XYPLOT_BOXTYPE       = FL_FLAT_BOX;
+ FL_XYPLOT_COL1          = FL_COL1;
+ FL_XYPLOT_LCOL          = FL_LCOL;
+ FL_XYPLOT_ALIGN         = FL_ALIGN_BOTTOM;
+ FL_MAX_XYPLOTOVERLAY    = 32;
+
+{**** Others   ****}
+
+Function fl_create_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6: pchar) : PFL_OBJECT; cdecl;
+Function fl_add_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar ) : PFL_OBJECT; cdecl;
+Procedure fl_set_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : Longint {was int}; p5,p6,p7 : pchar); cdecl;
+Procedure fl_set_xyplot_file(p1 : PFL_OBJECT; p2,p3,p4,p5 :pchar); cdecl;
+
+Procedure fl_set_xyplot_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_xtics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_xyplot_ytics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}); cdecl;
+Procedure fl_set_xyplot_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Procedure fl_set_xyplot_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl;
+Function  fl_set_xyplot_maxoverlays(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ; cdecl;
+Procedure fl_set_xyplot_overlay_type(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}); cdecl;
+Procedure fl_set_xyplot_interpolate(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : double); cdecl;
+Procedure fl_set_xyplot_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_inspect(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_symbolsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+Procedure fl_set_xyplot_xscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double); cdecl;
+Procedure fl_set_xyplot_yscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double); cdecl;
+
+Procedure fl_set_xyplot_linewidth(p1 : PFL_OBJECT; p2,p3 : Longint); cdecl;
+Procedure fl_set_xyplot_xgrid(p1 : PFL_OBJECT; p2 : Longint); cdecl;
+Procedure fl_set_xyplot_ygrid(p1 : PFL_OBJECT; p2 : Longint); cdecl;
+Procedure fl_set_xyplot_alphaxtics(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+Procedure fl_set_xyplot_alphaytics(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+Procedure fl_set_xyplot_fixed_xaxis(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+Procedure fl_set_xyplot_fixed_yaxis(p1 : PFL_OBJECT; p2,p3 : pchar); cdecl;
+
+
+Procedure fl_get_xyplot_xbounds(p1 : PFL_OBJECT; p2,p3 : pfloat ); cdecl;
+Procedure fl_get_xyplot_ybounds(p1 : PFL_OBJECT; p2,p3 : pfloat ); cdecl;
+Procedure fl_get_xyplot(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer); cdecl;
+Procedure fl_get_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer); cdecl;
+Procedure fl_get_xyplot_xmapping(p1 : PFL_OBJECT; p2,p3 : pfloat); cdecl;
+Procedure fl_get_xyplot_ymapping(p1 : PFL_OBJECT; p2,p3 : pfloat); cdecl;
+
+{
+#define fl_set_xyplot_datafile fl_set_xyplot_file
+}
+Procedure fl_add_xyplot_text(p1 : PFL_OBJECT; p2,p3 : double; p4 : pchar;p5 : Longint {was int}; p6 :TFL_COLOR); cdecl;
+Procedure fl_add_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint {was int}; p3,p4 : pfloat; p5 : Longint {was int}; p6 :TFL_COLOR); cdecl;
+Procedure fl_delete_xyplot_text(p1 : PFL_OBJECT; p2 :  pchar); cdecl;
+Procedure fl_delete_xyplot_overlay(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl;
+
+Procedure fl_replace_xyplot_point(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : double); cdecl;
+Function  fl_interpolate(p1,p2 : pfloat; p3 :Longint {was int};p4,p5 : pfloat; p6 : double; p7 : Longint {was int}) : Longint; cdecl;
+Procedure fl_xyplot_s2w(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat); cdecl;
+Procedure fl_xyplot_w2s(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat); cdecl;
+
+implementation
+
+procedure fl_add_io_callback(p1 : Longint {was int} ; p2 : word; p3 : PFL_IO_CALLBACK; p4 : pointer); cdecl; external;
+procedure fl_remove_io_callback(p1 : Longint {was int};p2 :  word; p3 : PFL_IO_CALLBACK); cdecl; external;
+procedure fl_add_signal_callback(p1 : Longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer); cdecl; external;
+procedure fl_remove_signal_callback(p1 : Longint {was int}); cdecl; external;
+procedure fl_signal_caught(p1 :Longint {was int}); cdecl; external;
+procedure fl_app_signal_direct(p1 : Longint {was int}); cdecl; external;
+function fl_add_timeout (p1 : longint;p2 : PFL_SIGNAL_HANDLER;p3 : pointer) : longint;cdecl; external;
+procedure fl_remove_timeout(p1 : Longint);cdecl; external;
+
+function fl_get_vn_value (p1 : PFL_VN_PAIR; p2 : pchar) : Longint; cdecl; external;
+function fl_get_vn_name (p1 : PFL_VN_PAIR; p2 : Longint {was int}) : Pchar; cdecl; external;
+function fl_msleep (p1 : cardinal) : cardinal; cdecl; external;
+procedure fl_library_version(p1,p2 : pointer ); cdecl; external;
+function fl_bgn_form(P1 : Longint {was int}; P2,p3 : TFL_Coord) : PFL_Form; cdecl; external;
+Procedure fl_end_form; cdecl; external;
+function fl_do_forms : PFL_OBJECT ; cdecl; external;
+function fl_check_forms : PFL_OBJECT; cdecl; external;
+Function fl_do_only_forms : PFL_OBJECT; cdecl; external;
+function fl_check_only_forms : PFL_OBJECT; cdecl; external;
+procedure fl_freeze_form(P1 : PFL_FORM); cdecl; external;
+procedure fl_set_focus_object( P1 : PFL_FORM;p2 : PFL_OBJECT); cdecl; external;
+procedure fl_reset_focus_object( p1 : PFL_OBJECT);cdecl; external;
+
+Function fl_set_form_atclose(p1 : PFL_FORM; p2 : PFL_FORM_ATCLOSE; p3 : pointer) : PFL_FORM_ATCLOSE ; cdecl; external;
+Function fl_set_atclose(p1 : PFL_FORM_ATCLOSE; p2:  pointer) : PFL_FORM_ATCLOSE ; cdecl; external;
+Function fl_set_form_atactivate(p1 : PFL_FORM; P2 : PFL_FORM_ATACTIVATE; P3 : pointer) : PFL_FORM_ATACTIVATE ; cdecl; external;
+Function fl_set_form_atdeactivate(p1 : PFL_FORM;p2 : PFL_FORM_ATDEACTIVATE;p3 : pointer) : PFL_FORM_ATDEACTIVATE ; cdecl; external;
+Procedure fl_unfreeze_form (p1 : PFL_FORM); cdecl; external;
+Procedure fl_deactivate_form(p1 : PFL_FORM); cdecl; external;
+Procedure fl_activate_form(p1 : PFL_FORM); cdecl; external;
+Procedure fl_deactivate_all_forms; cdecl; external;
+Procedure fl_activate_all_forms; cdecl; external;
+Procedure fl_freeze_all_forms; cdecl; external;
+Procedure fl_unfreeze_all_forms; cdecl; external;
+Procedure fl_scale_form(p1 : PFL_FORM;p2,p3 : double); cdecl; external;
+Procedure fl_set_form_position(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl; external;
+Procedure fl_set_form_title(p1 : PFL_FORM; p2 : pchar); cdecl; external;
+procedure fl_set_form_property(p1 : PFL_FORM; p2 : word); cdecl; external;
+procedure fl_set_app_mainform( p1 : PFL_FORM); cdecl; external;
+function fl_get_app_mainform : PFL_FORM; cdecl; external;
+procedure fl_set_app_nomainform(P1 : Longint {was int}); cdecl; external;
+procedure fl_set_form_callback(p1 : PFL_FORM; P2 : PFL_FORMCALLBACKPTR; P3 : pointer); cdecl; external;
+procedure fl_set_form_size(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl; external;
+procedure fl_set_form_hotspot(p1 : PFL_FORM; p2,p3 : TFL_Coord); cdecl; external;
+procedure fl_set_form_hotobject(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl; external;
+procedure fl_set_form_minsize(p1 : PFL_FORM ; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_form_maxsize(p1 : PFL_FORM; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_form_event_cmask(p1 : PFL_FORM; p2 : cardinal); cdecl; external;
+function fl_get_form_event_cmask(p1 : PFL_FORM) : cardinal; cdecl; external;
+procedure fl_set_form_geometry(p1 : PFL_FORM; p2,p3,p4,p5 : TFL_Coord); cdecl; external;
+function fl_show_form (p1 : PFL_FORM; p2,p3 : Longint {was int}; p4 : pchar) : longint; cdecl; external;
+procedure fl_hide_form(p1 : PFL_FORM); cdecl; external;
+procedure fl_free_form(p1 : PFL_FORM); cdecl; external;
+procedure fl_redraw_form(p1 : PFL_FORM); cdecl; external;
+procedure fl_set_form_dblbuffer(p1 : PFL_FORM; p2 : Longint {was int}); cdecl; external;
+procedure fl_prepare_form_window(p1 : PFL_FORM; p2,p3 :  Longint {was int}; p4 : pchar); cdecl; external;
+procedure fl_show_form_window(p1 : PFL_FORM); cdecl; external;
+function fl_adjust_form_size(p1 : PFL_FORM) : double; cdecl; external;
+function fl_form_is_visibe (p1 : PFL_FORM) : Longint; cdecl; external;
+
+function  fl_register_raw_callback(p1 : PFL_FORM; p2 : cardinal; P3 : PFL_RAW_CALLBACK): PFL_RAW_CALLBACK; cdecl; external;
+function fl_bgn_group : PFL_OBJECT; cdecl; external;
+function fl_end_group : PFL_OBJECT; cdecl; external;
+procedure fl_addto_group (p1 : PFL_OBJECT); cdecl; external;
+procedure fl_set_object_boxtype(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_bw(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_resize(p1 : PFL_OBJECT; p2 : word); cdecl; external;
+procedure fl_set_object_gravity(p1 : PFL_OBJECT; p2,p3 : word ); cdecl; external;
+procedure fl_set_object_lsize(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_lstyle(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_lcol(p1 : PFL_OBJECT; p2 : TFL_COLOR); cdecl; external;
+procedure fl_set_object_return(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_lalign(p1 : PFL_OBJECT; p2 : Longint {was int}); cdecl; external;
+procedure fl_set_object_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int}); cdecl; external;
+procedure fl_set_object_shortcutkey(p1 : PFL_OBJECT; p2 :  word); cdecl; external;
+procedure fl_set_object_dblbuffer(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_object_color(p1 : PFL_OBJECT; p2 : TFL_COLOR;p3 : TFL_COLOR); cdecl; external;
+procedure fl_set_object_label(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external;
+procedure fl_set_object_position(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_object_size(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_set_object_automatic(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_draw_object_label(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_draw_object_label_outside(p1 : PFL_OBJECT); cdecl; external;
+function fl_get_object_component(p1 : PFL_OBJECT; p2,p3,p4 : Longint): PFL_OBJECT; cdecl; external;
+
+ procedure fl_set_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 :TFL_Coord); cdecl; external;
+procedure fl_fit_object_label(p1 : PFL_OBJECT; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_get_object_geometry(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord ); cdecl; external;
+procedure fl_get_object_position(p1 : PFL_OBJECT; p2,p3 :PFL_COORD); cdecl; external;
+procedure fl_get_object_bbox(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD); cdecl; external;
+procedure fl_call_object_callback(p1 : PFL_OBJECT); cdecl; external;
+function fl_set_object_prehandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR) : PFL_HANDLEPTR ; cdecl; external;
+function fl_set_object_posthandler(p1 : PFL_OBJECT; p2 : PFL_HANDLEPTR): PFL_HANDLEPTR ; cdecl; external;
+function fl_set_object_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint) : PFL_CALLBACKPTR ; cdecl; external;
+procedure fl_redraw_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_scale_object(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_show_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_hide_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_free_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_delete_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_trigger_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_activate_object(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_deactivate_object(p1 : PFL_OBJECT); cdecl; external;
+function fl_set_font_name(p1 : Longint {was int}; p2 :  pchar) : longint; cdecl; external;
+procedure fl_set_font(p1 : Longint {was int}; p2 :  Longint {was int}); cdecl; external;
+function fl_get_char_height(p1,p2 : Longint {was int}; p3,p4 : pointer) : Longint {was int}; cdecl; external;
+function fl_get_char_width(p1,p2 :  Longint {was int}) : Longint; cdecl; external;
+function fl_get_string_height(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl; external;
+function fl_get_string_width(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl; external;
+function fl_get_string_widthTAB(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}) : Longint {was int}; cdecl; external;
+function fl_get_string_dimension(p1 : Longint {was int}; p2 : Longint {was int}; p3 : pchar; p4 : Longint {was int}; p5,p6 : pointer) : Longint {was int}; cdecl; external;
+procedure fl_get_align_xy(p1,p2,p3,p4,p5,p6,p7,p8,p9 : Longint {was int}; p10,p11 : pointer); cdecl; external;
+procedure fl_drw_text(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl; external;
+procedure fl_drw_text_beside(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7,p8 : Longint {was int}; p9 : pchar); cdecl; external;
+procedure fl_drw_text_cursor(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7,p8: Longint {was int}; p9 : Pchar; p10,p11: Longint {was int}); cdecl; external;
+procedure fl_drw_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR; p7 : Longint {was int}); cdecl; external;
+function fl_add_symbol(p1 : pchar; p2 : PFL_DRAWPTR; p3 :Longint {was int}) : Longint {was int}; cdecl; external;
+function fl_draw_symbol(p1 : pchar; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR) : Longint {was int}; cdecl; external;
+procedure fl_drw_slider (p1 :longint; p2,p3,P4,p5 : TFL_COORD; p6,p7 : TFL_COLOR;
+                         p8 : Longint; p9,p10 : double; P11 : pchar; p12,p13,p14 : Longint); cdecl; external;
+
+function fl_mapcolor(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}) : cardinal; cdecl; external;
+function fl_mapcolorname(p1 : TFL_COLOR; p2 :  pchar) : longint; cdecl; external;
+function fl_getmcolor(p1 : TFL_COLOR; p2,p3,p4 : pointer) : cardinal; cdecl; external;
+procedure fl_free_colors(p1 : PFL_COLOR; p2 :  Longint {was int}); cdecl; external;
+procedure fl_free_pixels(p1 : pcardinal; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_color_leak(p1 : Longint {was int}); cdecl; external;
+function fl_get_pixel(p1 : TFL_COLOR): cardinal; cdecl; external;
+procedure fl_get_icm_color(p1 : TFL_COLOR; p2,p3,p4 : pointer); cdecl; external;
+procedure fl_set_icm_color(p1 : TFL_COLOR; p2,p3,p4 : Longint {was int}); cdecl; external;
+procedure fl_color(p1 : TFL_COLOR); cdecl; external;
+procedure fl_bk_color(p1 : TFL_COLOR); cdecl; external;
+procedure fl_textcolor(p1 : TFL_COLOR); cdecl; external;
+procedure fl_bk_textcolor(p1 : TFL_COLOR); cdecl; external;
+procedure fl_set_gamma(p1,p2,p3 :double); cdecl; external;
+procedure fl_show_errors(p1 : Longint {was int}); cdecl; external;
+procedure fl_add_object(p1 : PFL_FORM; p2 : PFL_OBJECT); cdecl; external;
+procedure fl_addto_form(p1 : PFL_FORM); cdecl; external;
+function fl_make_object(p1 : Longint {was int}; p2,p3,p4,p5,p6 : TFL_Coord; p7 : pchar; P8 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl; external;
+procedure fl_set_coordunit(p1 : Longint {was int}); cdecl; external;
+function fl_get_coordunit : Longint {was int}; cdecl; external;
+procedure fl_set_border_width(p1 : Longint {was int}); cdecl; external;
+function fl_get_border_width : Longint {was int}; cdecl; external;
+procedure fl_set_scrollbar_type (p1 :longint); cdecl; external;
+procedure fl_flip_yorigin; cdecl; external;
+procedure fl_ringbell ( p1 : longint);cdecl; external;
+procedure fl_gettime (p1,p2 : Plongint);cdecl; external;
+function fl_whoami : pchar; cdecl; external;
+function fl_now : pchar; cdecl; external;
+function fl_mouse_button : longint; cdecl; external;
+
+procedure fl_rectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl; external;
+procedure fl_rectbound(p1,p2,p3,p4 : TFL_Coord;p5 : TFL_COLOR); cdecl; external;
+procedure fl_roundrectangle(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl; external;
+procedure fl_polygon(p1 : Longint {was int}; p2 : PFL_POINT; p3 : Longint {was int}; p4 : TFL_COLOR); cdecl; external;
+procedure fl_lines(p1 : TFL_POINT; p2 : Longint {was int}; p3 :TFL_COLOR); cdecl; external;
+procedure fl_line(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl; external;
+Procedure fl_point(p1,p2 : TFL_Coord; p3: TFL_COLOR); cdecl; external;
+Procedure fl_points(p1 : PFL_POINT; p2 : Longint; p3: TFL_COLOR); cdecl; external;
+procedure fl_dashedlinestyle(p1 : pchar; p2 :  Longint {was int}); cdecl; external;
+procedure fl_drawmode(p1 : Longint {was int}); cdecl; external;
+procedure fl_linewidth(p1 : Longint {was int}); cdecl; external;
+procedure fl_linestyle(p1 : Longint {was int}); cdecl; external;
+function fl_get_linewidth : longint; cdecl; external;
+function fl_get_linestyle : longint; cdecl; external;
+
+procedure fl_oval(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : TFL_COLOR); cdecl; external;
+procedure fl_ovalbound(p1,p2,p3,p4 : TFL_Coord; p5 : TFL_COLOR); cdecl; external;
+procedure fl_ovalarc(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6,p7 : Longint; p8 : TFL_COLOR);cdecl; external;
+
+procedure fl_pieslice(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6,p7 :Longint {was int}; p8 : TFL_COLOR); cdecl; external;
+procedure fl_add_vertex(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_add_float_vertex(p1,p2 :  real); cdecl; external;
+procedure fl_reset_vertex; cdecl; external;
+procedure fl_endline; cdecl; external;
+procedure fl_endpolygon; cdecl; external;
+procedure fl_endclosedline; cdecl; external;
+procedure fl_drw_frame(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR; p7 : Longint {was int}); cdecl; external;
+procedure fl_drw_checkbox(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : TFL_COLOR;p7 : Longint {was int}); cdecl; external;
+function fl_get_fontstruct(p1,p2 :  Longint {was int}) : PXFontStruct; cdecl; external;
+function fl_get_mouse(p1,p2 : PFL_COORD; p3 : pword) : TWindow; cdecl; external;
+procedure fl_set_mouse(p1,p2 :  TFL_Coord); cdecl; external;
+function fl_get_win_mouse(p1 : TWindow; p2,p3 : PFL_COORD; p4 : pword) : TWindow; cdecl; external;
+function fl_get_form_mouse(p1 : PFL_FORM; p2,p3 : PFL_COORD; p4 : pWord) : TWindow; cdecl; external;
+function fl_win_to_form(p1 : TWindow) : PFL_form; cdecl; external;
+ procedure fl_set_form_icon(p1 : PFL_FORM; p2 : TPixmap; p3 :TPixmap); cdecl; external;
+function fl_wincreate(p1 : pchar) : TWindow; cdecl; external;
+ function fl_winshow(p1 : TWindow) : TWindow; cdecl; external;
+ function fl_winopen(p1 : pchar) : TWindow; cdecl; external;
+ procedure fl_winhide(p1 : TWindow); cdecl; external;
+ procedure fl_winclose(p1 : TWindow); cdecl; external;
+ procedure fl_winset(p1 : TWindow); cdecl; external;
+ function fl_winget : Twindow; cdecl; external;
+ procedure fl_winresize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winmove(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winreshape(p1 : TWindow; p2,p3,p4,p5 : TFL_Coord); cdecl; external;
+procedure fl_winicon(p1 : TWindow; p2 : TPixmap; p3 :TPixmap); cdecl; external;
+procedure fl_winbackground(p1 : TWindow; p2 :  cardinal); cdecl; external;
+procedure fl_winstepunit(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winisvalid(p1 : TWindow); cdecl; external;
+ procedure fl_wintitle(p1 : TWindow; p2 :  pchar); cdecl; external;
+procedure fl_winposition(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_winminsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winmaxsize(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_winaspect(p1 : TWindow; p2,p3 :TFL_Coord); cdecl; external;
+procedure fl_reset_winconstraints(p1 : TWindow); cdecl; external;
+ procedure fl_winsize(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_initial_winsize(p1,p2 :  TFL_Coord); cdecl; external;
+procedure fl_initial_winstate(p1 : Longint {was int}); cdecl; external;
+ function fl_create_colormap(p1 : PXVisualInfo; p2 :  Longint {was int}) : TColormap; cdecl; external;
+procedure fl_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl; external;
+procedure fl_initial_wingeometry(p1,p2,p3,p4 : TFL_Coord); cdecl; external;
+procedure fl_get_winsize(p1 : TWindow; p2,p3 :PFL_COORD); cdecl; external;
+procedure fl_get_winorigin(p1 : TWindow; p2,p3 :PFL_COORD); cdecl; external;
+procedure fl_get_wingeometry(p1 : TWindow; p2,p3,p4,p5 : PFL_COORD); cdecl; external;
+function fl_XNextEvent(p1 : PXEvent) : Longint; cdecl; external;
+function fl_XPeekEvent(p1 : PXEvent) : Longint; cdecl; external;
+function fl_XEventsQueued(p1 : Longint {was int}) : Longint; cdecl; external;
+procedure fl_XPutBackEvent(p1 : PXEvent); cdecl; external;
+function fl_last_event : PXEvent ; cdecl; external;
+function fl_set_event_callback(p1 : PFL_APPEVENT_CB; p2 : pointer) : PFL_APPEVENT_CB ; cdecl; external;
+function fl_set_idle_callback(p1 : PFL_APPEVENT_CB; p2 :  pointer) : PFL_APPEVENT_CB ; cdecl; external;
+function fl_addto_selected_xevent(p1 : TWindow; p2 :  longint) : Cardinal; cdecl; external;
+function fl_remove_selected_xevent(p1 : TWindow; p2 :  longint) : cardinal; cdecl; external;
+function fl_add_event_callback(p1 : TWindow; p2 :  Longint {was int}; p3 : PFL_APPEVENT_CB; p4 : pointer) : PFL_APPEVENT_CB ; cdecl; external;
+procedure fl_remove_event_callback(p1 : TWindow; p2 :  Longint {was int}); cdecl; external;
+procedure fl_activate_event_callbacks(p1 : TWindow); cdecl; external;
+function fl_print_xevent_name(p1 : pchar; p2 : PXEvent) : PXEvent; cdecl; external;
+function fl_initialize(p1 : pointer; p2 : ppchar; p3 : pchar; p4 : PFL_CMD_OPT; p5 : Longint {was int}) : Pdisplay; cdecl; external;
+procedure fl_finish; cdecl; external;
+
+function fl_get_resource(p1 : pchar; p2 :  pchar; p3 : TFL_RTYPE; p4 : pchar; p5 : pointer; p6 :Longint {was int}) : pchar;cdecl; external;
+procedure fl_set_resource(p1 : pchar; p2 :  pchar);cdecl; external;
+procedure fl_get_app_resources(p1 : PFL_resource; p2 : Longint {was int});cdecl; external;
+procedure fl_set_graphics_mode(p1 : Longint {was int}; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_visualID(p1 : longint);  cdecl; external;
+function fl_keysym_pressed(p1 : TKeySym) : Longint; cdecl; external;
+procedure fl_set_defaults(p1 : cardinal; p2 :  PFL_IOPT);cdecl; external;
+procedure fl_set_tabstop(p1 : pchar); cdecl; external;
+procedure fl_get_defaults(p1 : PFL_IOPT); cdecl; external;
+function fl_get_visual_depth : Longint; cdecl; external;
+function fl_vclass_name(p1 : Longint {was int}) : pchar; cdecl; external;
+function fl_vclass_val(p1 : pchar) : Longint {was int}; cdecl; external;
+procedure fl_set_ul_property(p1 : Longint {was int}; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_clipping(p1 : TFL_Coord; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord);cdecl; external;
+procedure fl_set_gc_clipping(p1 : TGC; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord);cdecl; external;
+procedure fl_unset_gc_clipping(p1 : TGC); cdecl; external;
+procedure fl_set_clippings(p1 : PXRectangle; p2 :  Longint {was int});cdecl; external;
+procedure fl_unset_clipping; cdecl; external;
+function fl_textgc : TGC;cdecl; external;
+function fl_create_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_bitmap(p1 : Longint {was int}; p2 : TFL_Coord; p3 : TFL_Coord; p4 : TFL_Coord; p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_set_bitmap_data(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : pointer);cdecl; external;
+procedure fl_set_bitmap_file(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+function fl_read_bitmapfile(p1 : TWindow; p2 :  pchar; p3,p4 : pword; p5,p6 : pointer) : TPixmap ;cdecl; external;
+function fl_create_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6  :pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_pixmap(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_set_pixmap_data(p1 : PFL_OBJECT; p2 :  ppchar);cdecl; external;
+procedure fl_set_pixmap_file(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+procedure fl_set_pixmap_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});cdecl; external;
+procedure fl_set_pixmap_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);cdecl; external;
+procedure fl_set_pixmap_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});cdecl; external;
+procedure fl_free_pixmap_pixmap(p1 : PFL_OBJECT); cdecl; external;
+function fl_get_pixmap_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;cdecl; external;
+function fl_read_pixmapfile(p1 : TWindow; p2 :  pchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR)  : TPixmap ;cdecl; external;
+function fl_create_from_pixmapdata(p1 : TWindow; p2 :  ppchar;p3,p4 : pword; p5 : PPixmap;p6,p7 : pointer; p8 : TFL_COLOR) : TPixmap ;cdecl; external;
+function fl_create_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_box(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_browser(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6:  pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_clear_browser(p1 : PFL_OBJECT);cdecl; external;
+procedure fl_add_browser_line(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+procedure fl_addto_browser(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+procedure fl_addto_browserchars(p1 : PFL_OBJECT; p2 :  pchar);cdecl; external;
+
+procedure fl_insert_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);cdecl; external;
+procedure fl_delete_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_replace_browser_line(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar);cdecl; external;
+function fl_get_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar;cdecl; external;
+function fl_load_browser(p1 : PFL_OBJECT; p2 :  pchar ) : Longint ;cdecl; external;
+procedure fl_select_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_deselect_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_deselect_browser(p1 : PFL_OBJECT); cdecl; external;
+function fl_isselected_browser_line(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Longint ;cdecl; external;
+function fl_get_browser_topline(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_browser(p1 : PFL_OBJECT ) : Longint ;cdecl; external;
+function fl_get_browser_maxline(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_browser_screenlines(p1 : PFL_OBJECT ) : Longint ;cdecl; external;
+procedure fl_set_browser_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_specialkey(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+
+procedure fl_set_browser_leftslider(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_browser_line_selectable(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int});cdecl; external;
+procedure fl_get_browser_dimension(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_COORD);cdecl; external;
+procedure fl_set_browser_dblclick_callback(p1 : PFL_OBJECT; p2 : PFL_CALLBACKPTR; p3 :longint);cdecl; external;
+procedure fl_set_browser_xoffset(p1 : PFL_OBJECT; p2 :  TFL_Coord);cdecl; external;
+procedure fl_set_browser_scrollbarsize (p1 : PFL_OBJECT;p2,p3 : longint);cdecl; external;
+procedure fl_show_browser_line(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+function fl_get_browser_xoffset(p1 : PFL_OBJECT) : TFL_Coord ; cdecl; external;
+
+
+function fl_create_button(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+
+function fl_create_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_bitmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+function fl_create_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_roundbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_round3dbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_lightbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_checkbutton(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+function fl_add_button(p1 : Longint {was int}; p2,p3,p4,p5 :TFL_Coord; p6:  pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_set_bitmapbutton_data (p1 : PFL_OBJECT; p2,p3 : Longint {was int};   p4 : pchar);cdecl; external;
+procedure fl_set_bitmapbutton_file (p1 : PFL_OBJECT; p2: pchar);cdecl; external;
+function  fl_add_bitmapbutton (p1 : longint; p2,p3,p4,p5: TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+
+function fl_add_pixmapbutton(p1 : Longint {was int}; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external;
+
+function fl_get_button(p1 : PFL_OBJECT ) : Longint ;  cdecl; external;
+procedure fl_set_button(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+function fl_get_button_numb(p1 : PFL_OBJECT ) : Longint ;cdecl; external;
+function fl_create_generic_button(p1,p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord;p7 : pchar) : PFL_OBJECT;cdecl; external;
+procedure fl_add_button_class(p1 : Longint {was int}; p2 : PFL_DRAWBUTTON; p3 : PFL_CLEANUPBUTTON);cdecl; external;
+
+function fl_create_generic_canvas(p1 : Longint; p2 : Longint {was int}; p3,p4,p5,p6 : TFL_Coord; p7 : pchar) : PFL_OBJECT;cdecl; external ;
+function fl_add_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT;cdecl; external ;
+function fl_create_canvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external ;
+function fl_create_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 :  pchar) : PFL_OBJECT;cdecl; external ;
+function fl_add_mesacanvas(p1 : Longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external ;
+procedure fl_set_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap);cdecl; external ;
+procedure fl_set_canvas_visual(p1 : PFL_OBJECT; p2 :  PVisual);cdecl; external ;
+procedure fl_set_canvas_depth(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external ;
+procedure fl_set_canvas_attributes(p1 : PFL_OBJECT; p2 : word;  p3 : PXSetWindowAttributes);cdecl; external ;
+function fl_add_canvas_handler(p1 : PFL_OBJECT; p2 :  Longint {was int}; p3 : PFL_HANDLE_CANVAS; p4 : pointer) : PFL_HANDLE_CANVAS ;cdecl; external ;
+function fl_get_canvas_id(p1 : PFL_OBJECT ) : TWindow ;cdecl; external ;
+function fl_get_canvas_colormap(p1 : PFL_OBJECT ) : TColormap;cdecl; external ; 
+function fl_get_canvas_depth(p1 : PFL_OBJECT ) : Longint ; cdecl; external ;
+procedure fl_remove_canvas_handler(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : PFL_HANDLE_CANVAS);cdecl; external ;
+procedure fl_hide_canvas(p1 : PFL_OBJECT); 	{ internal use only }cdecl; external ;
+procedure fl_canvas_yield_to_shortcut(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external ;
+procedure fl_share_canvas_colormap(p1 : PFL_OBJECT; p2 :  TColormap); cdecl; external ;
+procedure fl_modify_canvas_prop(p1 : PFL_OBJECT; 
+				  P2 : PFL_MODIFY_CANVAS_PROP;
+				  p3 : PFL_MODIFY_CANVAS_PROP;
+				  p4 : PFL_MODIFY_CANVAS_PROP);cdecl; external ;
+function fl_create_glcanvas(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT;cdecl; external ;
+function fl_add_glcanvas(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT;cdecl; external ;
+procedure fl_set_glcanvas_defaults(p1 : pointer); cdecl; external ;
+procedure fl_get_glcanvas_defaults(p1 : pointer); cdecl; external ;
+procedure fl_set_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);cdecl; external ;
+procedure fl_get_glcanvas_attributes(p1 : PFL_OBJECT; p2 : pointer);cdecl; external ;
+procedure fl_set_glcanvas_direct(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external ;
+procedure fl_activate_glcanvas(p1 : PFL_OBJECT);cdecl; external;
+
+function fl_get_glcanvas_xvisualinfo(p1 : PFL_OBJECT ) : PXVisualInfo; cdecl; external ;
+
+function fl_create_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 :  pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_chart(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_clear_chart(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_add_chart_value(p1 : PFL_OBJECT; p2 : double; p3 : pchar; p4 : Longint {was int}); cdecl; external;
+procedure fl_insert_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl; external;
+procedure fl_replace_chart_value(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : pchar; p5 : Longint {was int}); cdecl; external;
+procedure fl_set_chart_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_chart_maxnumb(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_chart_autosize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_chart_lstyle(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_chart_lsize(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_chart_lcolor(p1 : PFL_OBJECT; p2 :  TFL_COLOR);cdecl; external;
+
+
+function fl_create_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) :  PFL_OBJECT; cdecl; external;
+function fl_add_choice(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar ) : PFL_OBJECT; cdecl; external;
+procedure fl_clear_choice(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_addto_choice(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external;
+procedure fl_replace_choice(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external;
+procedure fl_delete_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_text(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external;
+function fl_get_choice(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_choice_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl; external;
+function fl_get_choice_maxitems(p1 : PFL_OBJECT ) : Longint ; cdecl; external;
+function fl_get_choice_text(p1 : PFL_OBJECT ) : pchar; cdecl; external;
+procedure fl_set_choice_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_align(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_choice_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : word); cdecl; external;
+procedure fl_set_choice_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external;
+function fl_set_choice_entries(p1 : PFL_OBJECT ; p2 : PFL_PUP_ENTRY) : longint; cdecl; external;
+
+
+function fl_create_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_clock(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_get_clock(p1 : PFL_OBJECT; p2,p3,p4 : pointer); cdecl; external;
+function fl_set_clock_adjustment ( p1 : PFL_OBJECT; p2 : longint) : longint; cdecl; external;
+procedure fl_set_clock_ampm(p1 : PFL_OBJECT; p2 : Longint); cdecl; external;
+
+function fl_create_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_counter(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_counter_value(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_counter_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_counter_step(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_counter_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+function fl_get_counter_value(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_get_counter_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble);cdecl; external;
+procedure fl_get_counter_step(p1 : PFL_OBJECT; p2,p3 : pdouble);cdecl; external;
+
+procedure fl_set_counter_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_counter_filter(p1 : PFL_OBJECT;p2 : pointer); cdecl; external;
+
+procedure fl_set_cursor(p1 : TWindow; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_cursor_color(p1 : longint; p2 : TFL_COLOR; p3 :TFL_COLOR); cdecl; external;
+function fl_create_bitmap_cursor(p1 : pchar; p2 :  pchar; p3,p4,p5,p6 : Longint {was int}) : TCursor; cdecl; external;
+function fl_get_cursor_byname(p1 : longint ) : TCursor; cdecl; external;
+function fl_create_animated_cursor(p1 : Plongint;p2 : longint): Longint; cdecl; external;
+
+function fl_create_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 :pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_dial(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_dial_value(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_dial_value(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_dial_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_dial_bounds(p1 : PFL_OBJECT; p2 : pdouble; p3 :pdouble); cdecl; external;
+procedure fl_set_dial_step(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_dial_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_dial_angles(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_set_dial_cross(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_dial_direction (p1 : PFL_OBJECT; p2 : Longint);cdecl; external;
+
+function fl_get_dirlist(p1 : pchar; p2 : pchar;	p3 : pointer;p4	:longint) : PFL_Dirlist; cdecl; external;
+function fl_set_dirlist_filter (p1 : PFL_DIRLIST_FILTER ) : PFL_DIRLIST_FILTER ; cdecl; external;
+procedure fl_set_dirlist_sort ( p1 : longint);cdecl; external;
+
+procedure fl_free_dirlist(p1 : PFL_Dirlist); cdecl; external;
+procedure fl_free_all_dirlist; cdecl; external;
+
+function fl_is_valid_dir(p1 : pchar ) : Longint; cdecl; external;
+function fl_fmtime(p1 : pchar ) : cardinal ; cdecl; external;
+function fl_fix_dirname(p1 : pchar) : pchar; cdecl; external;
+
+function flps_init : PFLPS_CONTROL; cdecl; external;
+function fl_object_ps_dump (p1 : PFL_OBJECT; p2 : pchar) : longint; cdecl; external;
+
+
+function fl_create_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_frame(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_create_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_labelframe(p1 : longint; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+
+function fl_create_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar; p7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl; external;
+function fl_add_free(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar; P7 : PFL_HANDLEPTR) : PFL_OBJECT; cdecl; external;
+
+procedure fl_set_goodies_font(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_show_message(p1 : pchar; p2 : pchar; p3 :pchar); cdecl; external;
+procedure fl_show_messages(p1 : pchar);cdecl; external;
+
+procedure fl_show_alert(p1 : pchar; p2 : pchar; p3 : pchar; p4 : Longint {was int}); cdecl; external;
+function fl_show_question(p1 : pchar; p2 : longint) : Longint ; cdecl; external;
+function fl_show_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl; external;
+function fl_show_simple_input(p1 : pchar; p2 :  pchar ) : pchar; cdecl; external;
+function fl_show_colormap(p1 : Longint ) : Longint ; cdecl; external;
+function fl_show_choice(p1,p2,p3 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;cdecl; external;
+function fl_show_choices(p1 : pchar; p4 : Longint {was int}; p5,p6,p7 : pchar; p8 : Longint) : Longint;cdecl; external;
+procedure fl_set_choices_shortcut(p1,p2,p3 :pchar); cdecl; external;
+
+procedure fl_show_oneliner(p1 : pchar; p2 : TFL_Coord; p3 :TFL_Coord); cdecl; external;
+procedure fl_hide_oneliner; cdecl; external;
+procedure fl_set_oneliner_font(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_oneliner_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl; external;
+
+function fl_exe_command(p1 : pchar; p2 : Longint) : Longint; cdecl; external;
+function fl_end_command(p1 : longint) : Longint; cdecl; external;
+function fl_check_command(p1 : longint) : longint; cdecl; external;
+Function fl_end_all_command : Longint; cdecl; external;
+procedure fl_show_command_log(p1 : Longint); cdecl; external;
+procedure fl_hide_command_log; cdecl; external;
+procedure fl_clear_command_log; cdecl; external;
+procedure fl_addto_command_log(p1 : pchar);cdecl; external;
+procedure fl_set_command_log_position(p1,p2 :longint);cdecl; external;
+Function fl_get_command_log_fdstruct : PFD_CMDLOG; cdecl; external;
+
+function fl_use_fselector(p1 : LongInt ) : LongInt; cdecl; external;
+function fl_show_fselector(p1,p2,p3,p4 :  pchar) : pchar; cdecl; external;
+procedure fl_set_fselector_fontsize (p1 : Longint); cdecl; external;
+procedure fl_set_fselector_fontstyle (p1 : longint); cdecl; external;
+
+procedure fl_set_fselector_placement(p1 : LongInt); cdecl; external;
+procedure fl_set_fselector_border(p1 : LongInt); cdecl; external;
+procedure fl_set_fselector_callback( p1 : PFSelector_Callback; p2 : pointer); cdecl; external;
+function fl_get_filename : pchar; cdecl; external;
+function fl_get_directory : pchar; cdecl; external;
+function fl_get_pattern : pchar; cdecl; external;
+function fl_set_directory (p1 : pchar ) : LongInt; cdecl; external;
+procedure fl_set_pattern (p1 : pchar); cdecl; external;
+procedure fl_refresh_fselector; cdecl; external;
+procedure fl_add_fselector_appbutton(p1 : pchar; p2 : PFL_Procedure; p3 : pointer); cdecl; external;
+procedure fl_remove_fselector_appbutton(p1 : pchar); cdecl; external;
+procedure fl_disable_fselector_cache(p1 : LongInt); cdecl; external;
+procedure fl_invalidate_fselector_cache; cdecl; external; 
+function fl_get_fselector_form : PFL_FORM; cdecl; external;
+function fl_get_fselector_fdstruct  : PFD_FSELECTOR; cdecl; external; 
+procedure fl_hide_fselector;  cdecl; external;
+procedure fl_set_fselector_filetype_marker(p1,p2,p3,p4,p5 : Longint); cdecl; external;
+
+function fl_create_input(p1 : Longint; p2,p3,p4,p5 : TFL_Coord; p6: pchar)  : PFL_OBJECT ; cdecl; external;
+function fl_add_input(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar )  : PFL_OBJECT ; cdecl; external;
+procedure fl_set_input(p1 : PFL_OBJECT; p2 :  pchar)  ; cdecl; external;
+procedure fl_set_input_color(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+function fl_get_input(p1 : PFL_OBJECT )  : pchar ; cdecl; external;
+procedure fl_set_input_return(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_scroll(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_cursorpos(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+function fl_get_input_cursorpos(p1 : PFL_OBJECT; p2,p3 : Pointer )  : LongInt ; cdecl; external;
+procedure fl_set_input_selected(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+function fl_get_input_selected_range(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int}) : pchar  ; cdecl; external;
+procedure fl_set_input_maxchars(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_input_format(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});cdecl; external;
+procedure fl_set_input_hscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_vscrollbar(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_xoffset(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_topline(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl; external;
+procedure fl_set_input_scrollbarsize(p1 : PFL_OBJECT; p2,p3 :  Longint {was int});cdecl; external;
+function fl_get_input_topline(p1 : PFL_OBJECT;p2,p3 : PLongint) : Longint;cdecl; external;
+function fl_get_input_screenlines(p1 : PFL_OBJECT) : Longint;cdecl; external;
+function fl_get_input_numberoflines(p1 : PFL_OBJECT) : Longint;cdecl; external;
+procedure fl_get_input_format(p1 : PFL_OBJECT;p2,p3 : PLongint);cdecl; external;
+function fl_set_input_filter(p1 : PFL_OBJECT; p2 :  PFL_INPUTVALIDATOR )  : PFL_INPUTVALIDATOR  ; cdecl; external;
+procedure fl_set_input_editkeymap(a : PFL_EditKeymap);cdecl; external;
+
+function fl_create_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl; external ;
+function fl_add_menu(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar) : PFL_OBJECT; cdecl; external ;
+procedure fl_clear_menu(p1 : PFL_OBJECT); cdecl; external ;
+procedure fl_set_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external ;
+procedure fl_addto_menu(p1 : PFL_OBJECT; p2 :  pchar); cdecl; external ;
+procedure fl_replace_menu_item(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external ;
+procedure fl_delete_menu_item(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external ;
+procedure fl_set_menu_item_shortcut(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :pchar); cdecl; external ;
+procedure fl_set_menu_item_mode(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Cardinal); cdecl; external ;
+procedure fl_show_menu_symbol(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external ;
+procedure fl_set_menu_popup(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external ;
+function fl_get_menu_popup(p1 : pfl_object): longint; cdecl; external;
+
+function fl_get_menu(p1 : PFL_OBJECT ) : Longint ; cdecl; external ;
+function fl_get_menu_item_text(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : pchar; cdecl; external ;
+function fl_get_menu_maxitems(p1 : PFL_OBJECT ) : Longint ; cdecl; external ;
+function fl_get_menu_item_mode(p1 : PFL_OBJECT; p2 :  Longint {was int} ) : Cardinal ; cdecl; external ;
+function fl_get_menu_text(p1 : PFL_OBJECT ) : pchar; cdecl; external ;
+
+function fl_create_menubar(p1 : longint; p2,p3,p4,p5 : TFL_COORD;p6 : Pchar): PFL_OBJECT; cdecl; external;
+function fl_add_menubar(p1 : longint;p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+   
+Procedure fl_clear_menubar(p1 : PFL_OBJECT); cdecl; external;
+Procedure fl_set_menubar(p1 : PFL_OBJECT; p2 : pchar); cdecl; external;
+Procedure fl_set_menubar_entries(p1 : PFL_OBJECT; p2 : pchar;p3 : PFL_PUP_ENTRY); cdecl; external;
+
+function fl_setpup_entries(p1 : Longint; p2 : PFL_PUP_ENTRY) : Longint; cdecl; external;
+function fl_newpup(p1 : TWindow ) : LongInt; cdecl; external;
+function fl_defpup(p1 : TWindow; p2 :  pchar) : LongInt; cdecl; external ;
+function fl_addtopup(p1 : longint; p2 :  pchar) : LongInt; cdecl; external ;
+
+function fl_setpup_mode(p1 : Longint; p2 : Longint {was int}; p3 : Cardinal) : Longint; cdecl; external;
+procedure fl_freepup(p1 : Longint); cdecl; external;
+function fl_dopup(p1 : Longint ) : LongInt; cdecl; external;
+procedure fl_setpup_shortcut(p1 : Longint; p2 : Longint {was int}; p3 :pchar); cdecl; external;
+procedure fl_setpup_position(p1 : Longint; p2 :  Longint {was int}); cdecl; external;
+procedure fl_setpup_selection(p1 : Longint; p2 :  Longint {was int}); cdecl; external;
+function fl_setpup_fontsize(p1 : LongInt): Longint; cdecl; external;
+function fl_setpup_fontstyle(p1 : LongInt): longint; cdecl; external;
+procedure fl_setpup_shadow(p1 : LongInt; p2 :  Longint {was LongInt}); cdecl; external;
+procedure fl_setpup_softedge(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_setpup_color(p1 : TFL_COLOR; p2 :  TFL_COLOR); cdecl; external;
+procedure fl_setpup_checkcolor(p1 : TFL_COLOR); cdecl; external;
+procedure fl_setpup_title(p1 : LongInt; p2 :  pchar); cdecl; external;
+procedure fl_setpup_bw(p1 : LongInt; p2 :  Longint {was int}); cdecl; external;
+procedure fl_setpup_pad(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl; external;
+function fl_setpup_cursor(p1 : LongInt; p2 :  Longint {was int} ) : TCursor ; cdecl; external;
+function fl_setpup_default_cursor(p1 : LongInt ) : TCursor ; cdecl; external;
+function fl_setpup_maxpup(p1 : LongInt ) : LongInt; cdecl; external;
+function fl_getpup_mode(p1 : LongInt; p2 :  Longint {was int} ) : Cardinal; cdecl; external;
+function fl_getpup_text(p1 : LongInt; p2 :  Longint {was int} ) : pchar; cdecl; external;
+procedure fl_showpup(p1 : LongInt); cdecl; external;
+procedure fl_hidepup(p1 : LongInt); cdecl; external;
+function fl_setpup_itemcb(p1 : LongInt; p2 : Longint {was int}; p3 :PFL_PUP_CB ) : PFL_PUP_CB ; cdecl; external;
+function fl_setpup_menucb(p1 : LongInt; p2 :  PFL_PUP_CB ) : PFL_PUP_CB ; cdecl; external;
+procedure fl_setpup_submenu(p1 : LongInt; p2 : Longint {was int}; p3 :Longint {was int}); cdecl; external;
+
+function fl_create_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_positioner(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_positioner_xvalue(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_positioner_xvalue(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_positioner_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_positioner_xbounds(p1 : PFL_OBJECT; p2 : pdouble ; p3 : pdouble); cdecl; external;
+procedure fl_set_positioner_yvalue(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_positioner_yvalue(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_positioner_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_positioner_ybounds(p1 : PFL_OBJECT; p2 ,p3 :pdouble); cdecl; external;
+procedure fl_set_positioner_xstep(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_positioner_ystep(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_positioner_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+
+function  fl_create_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+function  fl_add_scrollbar(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+ 
+function  fl_get_scrollbar_value(p1 : PFL_OBJECT) : double ; cdecl; external;
+procedure fl_set_scrollbar_value(p1 : PFL_OBJECT; p2: double); cdecl; external;
+procedure fl_set_scrollbar_size(p1 : PFL_OBJECT; p2 : double); cdecl; external;
+procedure fl_set_scrollbar_increment(p1 : PFL_OBJECT;p2,p3: double); cdecl; external;
+procedure fl_get_scrollbar_increment(p1 : PFL_OBJECT; p2,p3 : real {float !!}); cdecl; external;
+procedure fl_set_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : double); cdecl; external;
+procedure fl_get_scrollbar_bounds(p1 : PFL_OBJECT; p2,p3 : real {float !!!}); cdecl; external;
+procedure fl_set_scrollbar_return(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+procedure fl_set_scrollbar_step(P1 : PFL_OBJECT;p2 : double); cdecl; external;
+
+
+function fl_create_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_slider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+function fl_create_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar): PFL_OBJECT; cdecl; external;
+function fl_add_valslider(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;P6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_slider_value(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_slider_value(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_slider_bounds(p1 : PFL_OBJECT; p2 : double; p3 :double); cdecl; external;
+procedure fl_get_slider_bounds(p1 : PFL_OBJECT; p2,p3 : pdouble); cdecl; external;
+procedure fl_set_slider_return(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_slider_step(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_slider_increment(p1 : PFL_OBJECT; p2,p3 :  double);cdecl; external;
+procedure fl_set_slider_size(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+procedure fl_set_slider_precision(p1 : PFL_OBJECT; p2 :  Longint {was int}); cdecl; external;
+procedure fl_set_slider_filter(p1 : PFL_OBJECT; p2 : PTFL_SLIDER_FILTER); cdecl; external;
+
+function fl_create_tabfolder (p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+function fl_add_tabfolder(p1 : longint;p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT ; cdecl; external;
+function fl_addto_tabfolder(p1 : PFL_OBJECT; p2 : pchar; p3 : PFL_FORM) : PFL_OBJECT; cdecl; external;
+procedure fl_delete_folder(p1 : PFL_OBJECT; p2 : PFL_FORM); cdecl; external;
+procedure fl_delete_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+procedure fl_delete_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl; external;
+
+procedure fl_set_folder(p1 : PFL_OBJECT; P2 : PFL_FORM); cdecl; external;
+procedure fl_set_folder_byname(p1 : PFL_OBJECT; p2 : pchar); cdecl; external;
+procedure fl_set_folder_bynumber(p1 : PFL_OBJECT; p2 : longint); cdecl; external;
+function fl_get_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl; external;
+function fl_get_folder_number(p1 : PFL_OBJECT) : longint; cdecl; external;
+function fl_get_folder_name(p1 : PFL_OBJECT) : pchar; cdecl; external;
+function fl_get_active_folder(p1 : PFL_OBJECT) : PFL_FORM; cdecl; external;
+function fl_get_active_folder_number(P1 : PFL_OBJECT) : longint; cdecl; external;
+function fl_get_active_folder_name(p1 : PFL_OBJECT) : Pchar; cdecl; external;
+procedure fl_get_folder_area(p1 : PFL_OBJECT; p2,p3,p4,p5 : PFL_Coord); cdecl; external;
+ 
+procedure fl_replace_folder_bynumber(p1 : PFL_OBJECT;p2 : longint;p3 : PFL_FORM); cdecl; external;
+
+
+function fl_create_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_text(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6 : pchar): PFL_OBJECT; cdecl; external;
+
+function fl_create_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6 : pchar) : PFL_OBJECT; cdecl; external;
+function fl_add_timer(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord;p6: pchar) : PFL_OBJECT; cdecl; external;
+procedure fl_set_timer(p1 : PFL_OBJECT; p2 :  double); cdecl; external;
+function fl_get_timer(p1 : PFL_OBJECT ) : double ; cdecl; external;
+procedure fl_set_timer_countup(p1 : PFL_OBJECT; p2 :  Longint); cdecl; external;
+function fl_set_timer_filter (p1 : PFL_OBJECT; p2 : PFL_TIMER_FILTER) : PFL_TIMER_FILTER; cdecl; external;
+procedure fl_suspend_timer(p1 : PFL_OBJECT); cdecl; external;
+procedure fl_resume_timer(p1 : PFL_OBJECT); cdecl; external;
+
+
+procedure fl_set_xyplot_return(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_xtics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_ytics(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_xbounds(p1 : PFL_OBJECT; p2 : double; p3 :double)  ; cdecl; external;
+procedure fl_set_xyplot_ybounds(p1 : PFL_OBJECT; p2 : double; p3 :double)  ; cdecl; external;
+procedure fl_get_xyplot_xbounds(p1 : PFL_OBJECT; p2,p3 : pfloat )  ; cdecl; external;
+procedure fl_get_xyplot_ybounds(p1 : PFL_OBJECT; p2,p3 : pfloat )  ; cdecl; external;
+procedure fl_get_xyplot(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer)  ; cdecl; external;
+procedure fl_get_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : pointer)  ; cdecl; external;
+
+function fl_create_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; p6: pchar)  : PFL_OBJECT ; cdecl; external;
+
+function fl_add_xyplot(p1 : LongInt; p2,p3,p4,p5 : TFL_Coord; P6 : pchar )  : PFL_OBJECT ; cdecl; external;
+
+procedure fl_set_xyplot_data(p1 : PFL_OBJECT; p2,p3 : pfloat; p4 : Longint {was int}; p5,p6,p7 : pchar)  ; cdecl; external;
+procedure fl_set_xyplot_file(p1 : PFL_OBJECT; p2,p3,p4,p5 :pchar)  ; cdecl; external;
+
+{
+#define fl_set_xyplot_datafile fl_set_xyplot_file
+}
+procedure fl_add_xyplot_text(p1 : PFL_OBJECT; p2,p3 : double; p4 : pchar;p5 : Longint {was int}; p6 :TFL_COLOR)  ; cdecl; external;
+
+procedure fl_delete_xyplot_text(p1 : PFL_OBJECT; p2 :  pchar)  ; cdecl; external;
+
+function fl_set_xyplot_maxoverlays(p1 : PFL_OBJECT; p2 :  Longint {was int} )  : Longint  ; cdecl; external;
+procedure fl_add_xyplot_overlay(p1 : PFL_OBJECT; p2 : Longint {was int}; p3,p4 : pfloat; p5 : Longint {was int}; p6 :TFL_COLOR)  ; cdecl; external;
+procedure fl_set_xyplot_overlay_type(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int})  ; cdecl; external;
+procedure fl_delete_xyplot_overlay(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_interpolate(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : double)  ; cdecl; external;
+procedure fl_set_xyplot_fontsize(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_fontstyle(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_inspect(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_set_xyplot_symbolsize(p1 : PFL_OBJECT; p2 :  Longint {was int})  ; cdecl; external;
+procedure fl_replace_xyplot_point(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : double; p4 : double)  ; cdecl; external;
+procedure fl_get_xyplot_xmapping(p1 : PFL_OBJECT; p2,p3 : pfloat)  ; cdecl; external;
+procedure fl_get_xyplot_ymapping(p1 : PFL_OBJECT; p2,p3 : pfloat)  ; cdecl; external;
+function fl_interpolate(p1,p2 : pfloat; p3 :Longint {was int};p4,p5 : pfloat; p6 : double; p7 : Longint {was int})  : Longint ; cdecl; external;
+
+procedure fl_xyplot_s2w(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat)  ; cdecl; external;
+procedure fl_xyplot_w2s(p1 : PFL_OBJECT; p2 : double; p3 : double; p4,p5 : pfloat)  ; cdecl; external;
+procedure fl_set_xyplot_xscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double)  ; cdecl; external;
+procedure fl_set_xyplot_yscale(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 :double)  ; cdecl; external;
+
+procedure fl_set_xyplot_linewidth(p1 : PFL_OBJECT; p2,p3 : Longint);cdecl; external;
+procedure fl_set_xyplot_xgrid(p1 : PFL_OBJECT; p2 : Longint);cdecl; external;
+procedure fl_set_xyplot_ygrid(p1 : PFL_OBJECT; p2 : Longint);cdecl; external;
+procedure fl_set_xyplot_alphaxtics(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+procedure fl_set_xyplot_alphaytics(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+procedure fl_set_xyplot_fixed_xaxis(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+procedure fl_set_xyplot_fixed_yaxis(p1 : PFL_OBJECT; p2,p3 : pchar);cdecl; external;
+
+{ Added later : }
+function fl_mode_capable(p1,p2 : longint ) : longint;cdecl; external;
+procedure fl_enumerate_fonts(p1 : PFL_ENUMERATEPTR; p2 :  longint);cdecl; external;
+
+
+{ From here we implement function aliases which were #defined }
+
+procedure fl_set_button_shortcut(p1 : PFL_OBJECT; p2 : pchar;p3 : Longint {was int});cdecl;
+
+begin
+  fl_set_object_shortcut (p1,p2,p3);
+end;
+
+procedure fl_set_pixmapbutton_data(p1 : PFL_OBJECT; p2 :  ppchar);cdecl;
+
+begin
+ fl_set_pixmap_data(p1,p2);
+end;
+
+procedure fl_set_pixmapbutton_file(p1 : PFL_OBJECT; p2 :  pchar);cdecl;
+
+begin
+  fl_set_pixmap_file(p1,p2);
+end;
+
+procedure fl_set_pixmapbutton_align(p1 : PFL_OBJECT; p2 : Longint {was int}; p3 : Longint {was int}; p4 : Longint {was int});cdecl;
+begin
+  fl_set_pixmap_align(p1,p2,p3,p4);
+end;
+
+procedure fl_set_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : TPixmap; p3 :TPixmap);cdecl;
+begin
+ fl_set_pixmap_pixmap(p1,p2,p3);
+end;
+
+procedure fl_set_pixmapbutton_colorcloseness(p1 : Longint {was int}; p2 : Longint {was int}; p3 :Longint {was int});cdecl;
+begin
+fl_set_pixmap_colorcloseness(p1,p2,p3);
+end;
+
+procedure fl_free_pixmapbutton_pixmap(p1 : PFL_OBJECT); cdecl;
+begin
+  fl_free_pixmap_pixmap(p1); 
+end;
+
+function fl_get_pixmapbutton_pixmap(p1 : PFL_OBJECT; p2 : PPixmap; p3 : PPixmap) : TPixmap ;cdecl;
+
+begin
+ fl_get_pixmapbutton_pixmap:=fl_get_pixmap_pixmap(p1,p2,p3);
+end;
+
+Function FL_ObjWin ( P : PFL_Object) : TWindow;cdecl;
+
+begin
+if P^.objclass <> FL_CANVAS then
+    FL_ObjWin :=P^.form^.window
+else
+    FL_objWin := fl_get_canvas_id (p)
+end;
+
+procedure fl_rectf(x,y,w,h : TFL_COORD;c : TFL_COLOR);cdecl;
+begin
+   fl_rectangle(1,x,y,w,h,c)
+end;
+
+procedure fl_rect(x,y,w,h : TFL_COORD;c : TFL_COLOR);cdecl;
+begin
+    fl_rectangle(0,x,y,w,h,c)
+end;
+
+
+procedure fl_set_canvas_decoration(p1 : PFL_OBJECT; p2 :  Longint {was int});cdecl;
+
+begin
+fl_set_object_boxtype (p1,p2);
+end;
+
+function fl_setpup_default_fontsize(p1 : LongInt) : Longint; cdecl;
+
+begin
+ fl_setpup_default_fontsize:=fl_setpup_fontsize(p1)
+end;
+
+function fl_setpup_default_fontstyle(p1 : LongInt) : Longint;cdecl;
+
+begin
+ fl_setpup_default_fontstyle:=fl_setpup_fontstyle(p1);
+end;
+
+procedure fl_setpup_default_color(p1 : TFL_COLOR; p2 :  TFL_COLOR);cdecl;
+
+begin
+ fl_setpup_color(p1,p2);
+end;
+
+procedure fl_setpup_default_checkcolor(p1 : TFL_COLOR); cdecl;
+
+begin
+fl_setpup_default_checkcolor(p1);
+end;
+
+end.

+ 568 - 0
packages/forms/x.pp

@@ -0,0 +1,568 @@
+unit x;
+
+   { Changes to the original conversion marked MVC - Michael Van Canneyt}
+
+{$LinkLib X11}
+
+  interface
+
+    const
+       X_PROTOCOL = 11;
+
+       X_PROTOCOL_REVISION = 0;
+    
+
+    type
+    { Inserted the following by hand. It was under a ifndef _XSERVER64. All
+      were unsigned longs originally
+      -- MVC. } 
+	TXID = cardinal ;
+	TMask = cardinal ;
+	TAtom = cardinal ;
+	TVisualID = cardinal ;
+	TTime = cardinal ;
+	{ End of insert }
+       TWindow = TXID;
+       TDrawable = TXID;
+       TFont = TXID;
+       TPixmap = TXID;
+       TCursor = TXID;
+       TColormap = TXID;
+       TGContext = TXID;
+       TKeySym = TXID;
+       TKeyCode = char;
+       PKeyCode = ^TKeyCode;
+       { Pointers to all these things. Needed for C calls. MVC }
+       PAtom = ^TAtom; 
+       PPAtom = ^PAtom;
+       PWindow = ^TWindow;
+       PColormap = ^TColormap;
+       PKeySym = ^TKeysym;
+       PPixmap = ^TPixmap;
+       
+    {*****************************************************************
+     * RESERVED RESOURCE AND CONSTANT DEFINITIONS
+     *****************************************************************}
+    {* universal null resource or null atom *}
+
+    const
+       None = 0;
+    {* background pixmap in CreateWindow
+    				    and ChangeWindowAttributes *}
+       ParentRelative = 1;
+    {* border pixmap in CreateWindow
+    				       and ChangeWindowAttributes
+    				   special VisualID and special window
+    				       class passed to CreateWindow *}
+       CopyFromParent = 0;
+    {* destination window in SendEvent *}
+       PointerWindow = 0;
+    {* destination window in SendEvent *}
+       InputFocus = 1;
+    {* focus window in SetInputFocus *}
+       PointerRoot = 1;
+    {* special Atom, passed to GetProperty *}
+       AnyPropertyType = 0;
+    {* special Key Code, passed to GrabKey *}
+       AnyKey = 0;
+    {* special Button Code, passed to GrabButton *}
+       AnyButton = 0;
+    {* special Resource ID passed to KillClient *}
+       AllTemporary = 0;
+    {* special Time *}
+       CurrentTime = 0;
+    {* special KeySym *}
+    {***************************************************************** 
+     * EVENT DEFINITIONS 
+     *****************************************************************}
+    {* Input Event Masks. Used as event-mask window attribute and as arguments
+       to Grab requests.  Not to be confused with event names.  *}
+       NoSymbol = 0;
+       NoEventMask = 0;
+       KeyPressMask = (1) shl (0);
+       KeyReleaseMask = (1) shl (1);
+       ButtonPressMask = (1) shl (2);
+       ButtonReleaseMask = (1) shl (3);
+       EnterWindowMask = (1) shl (4);
+       LeaveWindowMask = (1) shl (5);
+       PointerMotionMask = (1) shl (6);
+       PointerMotionHintMask = (1) shl (7);
+       Button1MotionMask = (1) shl (8);
+       Button2MotionMask = (1) shl (9);
+       Button3MotionMask = (1) shl (10);
+       Button4MotionMask = (1) shl (11);
+       Button5MotionMask = (1) shl (12);
+       ButtonMotionMask = (1) shl (13);
+       KeymapStateMask = (1) shl (14);
+       ExposureMask = (1) shl (15);
+       VisibilityChangeMask = (1) shl (16);
+       StructureNotifyMask = (1) shl (17);
+       ResizeRedirectMask = (1) shl (18);
+       SubstructureNotifyMask = (1) shl (19);
+       SubstructureRedirectMask = (1) shl (20);
+       FocusChangeMask = (1) shl (21);
+       PropertyChangeMask = (1) shl (22);
+       ColormapChangeMask = (1) shl (23);
+    {* Event names.  Used in "type" field in XEvent structures.  Not to be
+    confused with event masks above.  They start from 2 because 0 and 1
+    are reserved in the protocol for errors and replies. *}
+       OwnerGrabButtonMask = (1) shl (24);
+       KeyPress = 2;
+       KeyRelease = 3;
+       ButtonPress = 4;
+       ButtonRelease = 5;
+       MotionNotify = 6;
+       EnterNotify = 7;
+       LeaveNotify = 8;
+       FocusIn = 9;
+       FocusOut = 10;
+       KeymapNotify = 11;
+       Expose = 12;
+       GraphicsExpose = 13;
+       NoExpose = 14;
+       VisibilityNotify = 15;
+       CreateNotify = 16;
+       DestroyNotify = 17;
+       UnmapNotify = 18;
+       MapNotify = 19;
+       MapRequest = 20;
+       ReparentNotify = 21;
+       ConfigureNotify = 22;
+       ConfigureRequest = 23;
+       GravityNotify = 24;
+       ResizeRequest = 25;
+       CirculateNotify = 26;
+       CirculateRequest = 27;
+       PropertyNotify = 28;
+       SelectionClear = 29;
+       SelectionRequest = 30;
+       SelectionNotify = 31;
+       ColormapNotify = 32;
+       ClientMessage = 33;
+       MappingNotify = 34;
+    {* must be bigger than any event # *}
+    {* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
+       state in various key-, mouse-, and button-related events. *}
+       LASTEvent = 35;
+       ShiftMask = (1) shl (0);
+       LockMask = (1) shl (1);
+       ControlMask = (1) shl (2);
+       Mod1Mask = (1) shl (3);
+       Mod2Mask = (1) shl (4);
+       Mod3Mask = (1) shl (5);
+       Mod4Mask = (1) shl (6);
+    {* modifier names.  Used to build a SetModifierMapping request or
+       to read a GetModifierMapping request.  These correspond to the
+       masks defined above. *}
+       Mod5Mask = (1) shl (7);
+       ShiftMapIndex = 0;
+       LockMapIndex = 1;
+       ControlMapIndex = 2;
+       Mod1MapIndex = 3;
+       Mod2MapIndex = 4;
+       Mod3MapIndex = 5;
+       Mod4MapIndex = 6;
+    {* button masks.  Used in same manner as Key masks above. Not to be confused
+       with button names below. *}
+       Mod5MapIndex = 7;
+       Button1Mask = (1) shl (8);
+       Button2Mask = (1) shl (9);
+       Button3Mask = (1) shl (10);
+       Button4Mask = (1) shl (11);
+       Button5Mask = (1) shl (12);
+    {* used in GrabButton, GrabKey *}
+    {* button names. Used as arguments to GrabButton and as detail in ButtonPress
+       and ButtonRelease events.  Not to be confused with button masks above.
+       Note that 0 is already defined above as "AnyButton".  *}
+       AnyModifier = (1) shl (15);
+       Button1 = 1;
+       Button2 = 2;
+       Button3 = 3;
+       Button4 = 4;
+    {* Notify modes *}
+       Button5 = 5;
+       NotifyNormal = 0;
+       NotifyGrab = 1;
+       NotifyUngrab = 2;
+       NotifyWhileGrabbed = 3;
+    {* for MotionNotify events *}
+    {* Notify detail *}
+       NotifyHint = 1;
+       NotifyAncestor = 0;
+       NotifyVirtual = 1;
+       NotifyInferior = 2;
+       NotifyNonlinear = 3;
+       NotifyNonlinearVirtual = 4;
+       NotifyPointer = 5;
+       NotifyPointerRoot = 6;
+    {* Visibility notify *}
+       NotifyDetailNone = 7;
+       VisibilityUnobscured = 0;
+       VisibilityPartiallyObscured = 1;
+    {* Circulation request *}
+       VisibilityFullyObscured = 2;
+       PlaceOnTop = 0;
+    {* protocol families *}
+       PlaceOnBottom = 1;
+       FamilyInternet = 0;
+       FamilyDECnet = 1;
+    {* Property notification *}
+       FamilyChaos = 2;
+       PropertyNewValue = 0;
+    {* Color Map notification *}
+       PropertyDelete = 1;
+       ColormapUninstalled = 0;
+    {* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes *}
+       ColormapInstalled = 1;
+       GrabModeSync = 0;
+    {* GrabPointer, GrabKeyboard reply status *}
+       GrabModeAsync = 1;
+       GrabSuccess = 0;
+       AlreadyGrabbed = 1;
+       GrabInvalidTime = 2;
+       GrabNotViewable = 3;
+    {* AllowEvents modes *}
+       GrabFrozen = 4;
+       AsyncPointer = 0;
+       SyncPointer = 1;
+       ReplayPointer = 2;
+       AsyncKeyboard = 3;
+       SyncKeyboard = 4;
+       ReplayKeyboard = 5;
+       AsyncBoth = 6;
+    {* Used in SetInputFocus, GetInputFocus *}
+       SyncBoth = 7;
+    {*****************************************************************
+     * ERROR CODES 
+     *****************************************************************}
+       RevertToParent = 2;
+    {* everything's okay *}
+       Success = 0;
+    {* bad request code *}
+       BadRequest = 1;
+    {* int parameter out of range *}
+       BadValue = 2;
+    {* parameter not a Window *}
+       BadWindow = 3;
+    {* parameter not a Pixmap *}
+       BadPixmap = 4;
+    {* parameter not an Atom *}
+       BadAtom = 5;
+    {* parameter not a Cursor *}
+       BadCursor = 6;
+    {* parameter not a Font *}
+       BadFont = 7;
+    {* parameter mismatch *}
+       BadMatch = 8;
+    {* parameter not a Pixmap or Window *}
+       BadDrawable = 9;
+    {* depending on context:
+    				 - key/button already grabbed
+    				 - attempt to free an illegal 
+    				   cmap entry 
+    				- attempt to store into a read-only 
+    				   color map entry.
+     				- attempt to modify the access control
+    				   list from other than the local host.
+    				*}
+       BadAccess = 10;
+    {* insufficient resources *}
+       BadAlloc = 11;
+    {* no such colormap *}
+       BadColor = 12;
+    {* parameter not a GC *}
+       BadGC = 13;
+    {* choice not in range or already used *}
+       BadIDChoice = 14;
+    {* font or color name doesn't exist *}
+       BadName = 15;
+    {* Request length incorrect *}
+       BadLength = 16;
+    {* server is defective *}
+       BadImplementation = 17;
+       FirstExtensionError = 128;
+    {*****************************************************************
+     * WINDOW DEFINITIONS 
+     *****************************************************************}
+    {* Window classes used by CreateWindow *}
+    {* Note that CopyFromParent is already defined as 0 above *}
+       LastExtensionError = 255;
+       InputOutput = 1;
+    {* Window attributes for CreateWindow and ChangeWindowAttributes *}
+       InputOnly = 2;
+       CWBackPixmap = (1) shl (0);
+       CWBackPixel = (1) shl (1);
+       CWBorderPixmap = (1) shl (2);
+       CWBorderPixel = (1) shl (3);
+       CWBitGravity = (1) shl (4);
+       CWWinGravity = (1) shl (5);
+       CWBackingStore = (1) shl (6);
+       CWBackingPlanes = (1) shl (7);
+       CWBackingPixel = (1) shl (8);
+       CWOverrideRedirect = (1) shl (9);
+       CWSaveUnder = (1) shl (10);
+       CWEventMask = (1) shl (11);
+       CWDontPropagate = (1) shl (12);
+       CWColormap = (1) shl (13);
+    {* ConfigureWindow structure *}
+       CWCursor = (1) shl (14);
+       CWX = (1) shl (0);
+       CWY = (1) shl (1);
+       CWWidth = (1) shl (2);
+       CWHeight = (1) shl (3);
+       CWBorderWidth = (1) shl (4);
+       CWSibling = (1) shl (5);
+    {* Bit Gravity *}
+       CWStackMode = (1) shl (6);
+       ForgetGravity = 0;
+       NorthWestGravity = 1;
+       NorthGravity = 2;
+       NorthEastGravity = 3;
+       WestGravity = 4;
+       CenterGravity = 5;
+       EastGravity = 6;
+       SouthWestGravity = 7;
+       SouthGravity = 8;
+       SouthEastGravity = 9;
+    {* Window gravity + bit gravity above *}
+       StaticGravity = 10;
+    {* Used in CreateWindow for backing-store hint *}
+       UnmapGravity = 0;
+       NotUseful = 0;
+       WhenMapped = 1;
+    {* Used in GetWindowAttributes reply *}
+       Always = 2;
+       IsUnmapped = 0;
+       IsUnviewable = 1;
+    {* Used in ChangeSaveSet *}
+       IsViewable = 2;
+       SetModeInsert = 0;
+    {* Used in ChangeCloseDownMode *}
+       SetModeDelete = 1;
+       DestroyAll = 0;
+       RetainPermanent = 1;
+    {* Window stacking method (in configureWindow) *}
+       RetainTemporary = 2;
+       Above = 0;
+       Below = 1;
+       TopIf = 2;
+       BottomIf = 3;
+    {* Circulation direction *}
+       Opposite = 4;
+       RaiseLowest = 0;
+    {* Property modes *}
+       LowerHighest = 1;
+       PropModeReplace = 0;
+       PropModePrepend = 1;
+    {*****************************************************************
+     * GRAPHICS DEFINITIONS
+     *****************************************************************}
+    {* graphics functions, as in GC.alu *}
+       PropModeAppend = 2;
+    {* 0 *}
+       GXclear = $0;
+    {* src AND dst *}
+       GXand = $1;
+    {* src AND NOT dst *}
+       GXandReverse = $2;
+    {* src *}
+       GXcopy = $3;
+    {* NOT src AND dst *}
+       GXandInverted = $4;
+    {* dst *}
+       GXnoop = $5;
+    {* src XOR dst *}
+       GXxor = $6;
+    {* src OR dst *}
+       GXor = $7;
+    {* NOT src AND NOT dst *}
+       GXnor = $8;
+    {* NOT src XOR dst *}
+       GXequiv = $9;
+    {* NOT dst *}
+       GXinvert = $a;
+    {* src OR NOT dst *}
+       GXorReverse = $b;
+    {* NOT src *}
+       GXcopyInverted = $c;
+    {* NOT src OR dst *}
+       GXorInverted = $d;
+    {* NOT src OR NOT dst *}
+       GXnand = $e;
+    {* 1 *}
+    {* LineStyle *}
+       GXset = $f;
+       LineSolid = 0;
+       LineOnOffDash = 1;
+    {* capStyle *}
+       LineDoubleDash = 2;
+       CapNotLast = 0;
+       CapButt = 1;
+       CapRound = 2;
+    {* joinStyle *}
+       CapProjecting = 3;
+       JoinMiter = 0;
+       JoinRound = 1;
+    {* fillStyle *}
+       JoinBevel = 2;
+       FillSolid = 0;
+       FillTiled = 1;
+       FillStippled = 2;
+    {* fillRule *}
+       FillOpaqueStippled = 3;
+       EvenOddRule = 0;
+    {* subwindow mode *}
+       WindingRule = 1;
+       ClipByChildren = 0;
+    {* SetClipRectangles ordering *}
+       IncludeInferiors = 1;
+       Unsorted = 0;
+       YSorted = 1;
+       YXSorted = 2;
+    {* CoordinateMode for drawing routines *}
+       YXBanded = 3;
+    {* relative to the origin *}
+       CoordModeOrigin = 0;
+    {* relative to previous point *}
+    {* Polygon shapes *}
+       CoordModePrevious = 1;
+    {* paths may intersect *}
+       Complex = 0;
+    {* no paths intersect, but not convex *}
+       Nonconvex = 1;
+    {* wholly convex *}
+    {* Arc modes for PolyFillArc *}
+       Convex = 2;
+    {* join endpoints of arc *}
+       ArcChord = 0;
+    {* join endpoints to center of arc *}
+    {* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
+       GC.stateChanges *}
+       ArcPieSlice = 1;
+       GCFunction = (1) shl (0);
+       GCPlaneMask = (1) shl (1);
+       GCForeground = (1) shl (2);
+       GCBackground = (1) shl (3);
+       GCLineWidth = (1) shl (4);
+       GCLineStyle = (1) shl (5);
+       GCCapStyle = (1) shl (6);
+       GCJoinStyle = (1) shl (7);
+       GCFillStyle = (1) shl (8);
+       GCFillRule = (1) shl (9);
+       GCTile = (1) shl (10);
+       GCStipple = (1) shl (11);
+       GCTileStipXOrigin = (1) shl (12);
+       GCTileStipYOrigin = (1) shl (13);
+       GCFont = (1) shl (14);
+       GCSubwindowMode = (1) shl (15);
+       GCGraphicsExposures = (1) shl (16);
+       GCClipXOrigin = (1) shl (17);
+       GCClipYOrigin = (1) shl (18);
+       GCClipMask = (1) shl (19);
+       GCDashOffset = (1) shl (20);
+       GCDashList = (1) shl (21);
+       GCArcMode = (1) shl (22);
+    {*****************************************************************
+     * FONTS 
+     *****************************************************************}
+    {* used in QueryFont -- draw direction *}
+       GCLastBit = 22;
+       FontLeftToRight = 0;
+       FontRightToLeft = 1;
+    {*****************************************************************
+     *  IMAGING 
+     *****************************************************************}
+    {* ImageFormat -- PutImage, GetImage *}
+       FontChange = 255;
+    {* depth 1, XYFormat *}
+       XYBitmap = 0;
+    {* depth == drawable depth *}
+       XYPixmap = 1;
+    {* depth == drawable depth *}
+    {*****************************************************************
+     *  COLOR MAP STUFF 
+     *****************************************************************}
+    {* For CreateColormap *}
+       ZPixmap = 2;
+    {* create map with no entries *}
+       AllocNone = 0;
+    {* allocate entire map writeable *}
+    {* Flags used in StoreNamedColor, StoreColors *}
+       AllocAll = 1;
+       DoRed = (1) shl (0);
+       DoGreen = (1) shl (1);
+    {*****************************************************************
+     * CURSOR STUFF
+     *****************************************************************}
+    {* QueryBestSize Class *}
+       DoBlue = (1) shl (2);
+    {* largest size that can be displayed *}
+       CursorShape = 0;
+    {* size tiled fastest *}
+       TileShape = 1;
+    {* size stippled fastest *}
+    {***************************************************************** 
+     * KEYBOARD/POINTER STUFF
+     *****************************************************************}
+       StippleShape = 2;
+       AutoRepeatModeOff = 0;
+       AutoRepeatModeOn = 1;
+       AutoRepeatModeDefault = 2;
+       LedModeOff = 0;
+    {* masks for ChangeKeyboardControl *}
+       LedModeOn = 1;
+       KBKeyClickPercent = (1) shl (0);
+       KBBellPercent = (1) shl (1);
+       KBBellPitch = (1) shl (2);
+       KBBellDuration = (1) shl (3);
+       KBLed = (1) shl (4);
+       KBLedMode = (1) shl (5);
+       KBKey = (1) shl (6);
+       KBAutoRepeatMode = (1) shl (7);
+       MappingSuccess = 0;
+       MappingBusy = 1;
+       MappingFailed = 2;
+       MappingModifier = 0;
+       MappingKeyboard = 1;
+    {*****************************************************************
+     * SCREEN SAVER STUFF 
+     *****************************************************************}
+       MappingPointer = 2;
+       DontPreferBlanking = 0;
+       PreferBlanking = 1;
+       DefaultBlanking = 2;
+       DisableScreenSaver = 0;
+       DisableScreenInterval = 0;
+       DontAllowExposures = 0;
+       AllowExposures = 1;
+    {* for ForceScreenSaver *}
+       DefaultExposures = 2;
+       ScreenSaverReset = 0;
+    {*****************************************************************
+     * HOSTS AND CONNECTIONS
+     *****************************************************************}
+    {* for ChangeHosts *}
+       ScreenSaverActive = 1;
+       HostInsert = 0;
+    {* for ChangeAccessControl *}
+       HostDelete = 1;
+       EnableAccess = 1;
+    {* Display classes  used in opening the connection 
+     * Note that the statically allocated ones are even numbered and the
+     * dynamically changeable ones are odd numbered *}
+       DisableAccess = 0;
+       StaticGray = 0;
+       GrayScale = 1;
+       StaticColor = 2;
+       PseudoColor = 3;
+       TrueColor = 4;
+    {* Byte order  used in imageByteOrder and bitmapBitOrder *}
+       DirectColor = 5;
+       LSBFirst = 0;
+       MSBFirst = 1;
+
+    { Pointer Declarations }
+
+  implementation
+
+end.

+ 2098 - 0
packages/forms/xlib.pp

@@ -0,0 +1,2098 @@
+
+unit xlib;
+  { Changes after conversion from Xlib.h marked MVC -- Michael Van Canneyt
+    Removed many many comments. 
+    Including copyright. should be pasted in again. MVC }
+
+  interface
+
+uses X; { This is needed MVC.}
+
+    type
+       TXPointer = ^char;
+       TBool = Longint; 
+       PBool = ^TBool;
+       TStatus = Longint; { Also a choice. MVC }
+       { Some pointers : }
+       pppchar = ^ppchar;
+       ppwindow = ^pwindow;
+       Twchar_t = cardinal;
+       Pwchar_t = ^Twchar_t;
+       Pstatus = ^TStatus;
+       PXPointer = ^TXPointer;
+       Plongint = ^Longint;
+       PPLOngint = ^Plongint;
+
+    const
+
+{
+ Removed, standard in Pascal - MVC 
+       True = 1;
+       False = 0;
+}       
+	QueuedAlready = 0;
+	QueuedAfterReading = 1;
+
+    {* !!!!!
+    #define ConnectionNumber(dpy) 	(((_XPrivDisplay)dpy)->fd)
+    #define RootWindow(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->root)
+    #define DefaultScreen(dpy) 	(((_XPrivDisplay)dpy)->default_screen)
+    #define DefaultRootWindow(dpy) 	(ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
+    #define DefaultVisual(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_visual)
+    #define DefaultGC(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->default_gc)
+    #define BlackPixel(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->black_pixel)
+    #define WhitePixel(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->white_pixel)
+    #define AllPlanes 		((unsigned long)~0L)
+    #define QLength(dpy) 		(((_XPrivDisplay)dpy)->qlen)
+    #define DisplayWidth(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->width)
+    #define DisplayHeight(dpy, scr) (ScreenOfDisplay(dpy,scr)->height)
+    #define DisplayWidthMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mwidth)
+    #define DisplayHeightMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mheight)
+    #define DisplayPlanes(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth)
+    #define DisplayCells(dpy, scr) 	(DefaultVisual(dpy,scr)->map_entries)
+    #define ScreenCount(dpy) 	(((_XPrivDisplay)dpy)->nscreens)
+    #define ServerVendor(dpy) 	(((_XPrivDisplay)dpy)->vendor)
+    #define ProtocolVersion(dpy) 	(((_XPrivDisplay)dpy)->proto_major_version)
+    #define ProtocolRevision(dpy) 	(((_XPrivDisplay)dpy)->proto_minor_version)
+    #define VendorRelease(dpy) 	(((_XPrivDisplay)dpy)->release)
+    #define DisplayString(dpy) 	(((_XPrivDisplay)dpy)->display_name)
+    #define DefaultDepth(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->root_depth)
+    #define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
+    #define BitmapUnit(dpy) 	(((_XPrivDisplay)dpy)->bitmap_unit)
+    #define BitmapBitOrder(dpy) 	(((_XPrivDisplay)dpy)->bitmap_bit_order)
+    #define BitmapPad(dpy) 		(((_XPrivDisplay)dpy)->bitmap_pad)
+    #define ImageByteOrder(dpy) 	(((_XPrivDisplay)dpy)->byte_order)
+    
+    #ifdef CRAY /* unable to get WORD64 without pulling in other symbols
+    #define NextRequest(dpy)	XNextRequest(dpy)
+    #else
+    #define NextRequest(dpy)	(((_XPrivDisplay)dpy)->request + 1)
+    #endif
+    #define LastKnownRequestProcessed(dpy)	(((_XPrivDisplay)dpy)->last_request_read)
+    
+    /* macros for screen oriented applications (toolkit)
+    
+    #define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)dpy)->screens[scr])
+    #define DefaultScreenOfDisplay(dpy) ScreenOfDisplay(dpy,DefaultScreen(dpy))
+    #define DisplayOfScreen(s)	((s)->display)
+    #define RootWindowOfScreen(s)	((s)->root)
+    #define BlackPixelOfScreen(s)	((s)->black_pixel)
+    #define WhitePixelOfScreen(s)	((s)->white_pixel)
+    #define DefaultColormapOfScreen(s)((s)->cmap)
+    #define DefaultDepthOfScreen(s)	((s)->root_depth)
+    #define DefaultGCOfScreen(s)	((s)->default_gc)
+    #define DefaultVisualOfScreen(s)((s)->root_visual)
+    #define WidthOfScreen(s)	((s)->width)
+    #define HeightOfScreen(s)	((s)->height)
+    #define WidthMMOfScreen(s)	((s)->mwidth)
+    #define HeightMMOfScreen(s)	((s)->mheight)
+    #define PlanesOfScreen(s)	((s)->root_depth)
+    #define CellsOfScreen(s)	(DefaultVisualOfScreen((s))->map_entries)
+    #define MinCmapsOfScreen(s)	((s)->min_maps)
+    #define MaxCmapsOfScreen(s)	((s)->max_maps)
+    #define DoesSaveUnders(s)	((s)->save_unders)
+    #define DoesBackingStore(s)	((s)->backing_store)
+    #define EventMaskOfScreen(s)	((s)->root_input_mask)
+    *}
+    {*
+     * Extensions need a way to hang private data on some structures.
+     *}
+       QueuedAfterFlush = 2;
+    {* number returned by XRegisterExtension *}
+    {* next item on list of data for structure *}
+    {*!!!!!
+    	int (*free_private)();	/* called to free private storage *}
+    {* data private to this extension. *}
+
+    type
+       { Added this for functions at the end. }
+       PCardinal = ^Cardinal;
+                 
+       PXExtData = ^TXExtData ;
+       PPXExtData = ^PXExtData ; 
+       { Put this in to accomodate for the next in the following record. MVC}
+       TXExtData = record
+            number : longint;
+            next : PXExtData; { incorrectly converted. MVC }
+            private_data : TXPointer;
+         end;
+       TXExtCodes = record
+            extension : longint;
+            major_opcode : longint;
+            first_event : longint;
+            first_error : longint;
+         end;
+       PXExtCodes = ^TXExtCodes;
+    {*
+     * Data structure for retrieving info about pixmap formats.
+     *}
+       TXPixmapFormatValues = record
+            depth : longint;
+            bits_per_pixel : longint;
+            scanline_pad : longint;
+         end;
+       PXPixmapFormatValues = ^TXPixmapFormatValues;
+       TXGCValues = record
+            Xfunction : longint; { Renamed function to Xfunction }
+            plane_mask : cardinal;
+            foreground : cardinal;
+            background : cardinal;
+            line_width : longint;
+            line_style : longint;
+            cap_style : longint;
+            join_style : longint;
+            fill_style : longint;
+            fill_rule : longint;
+            arc_mode : longint;
+            tile : TPixmap;
+            stipple : TPixmap;
+            ts_x_origin : longint;
+            ts_y_origin : longint;
+            font : TFont;
+            subwindow_mode : longint;
+            graphics_exposures : TBool;  
+                                 { This was Bool - error in converter ? MVC}
+            clip_x_origin : longint;
+            clip_y_origin : longint;
+            clip_mask : TPixmap;
+            dash_offset : longint;
+            dashes : char;
+         end;
+       PXGCValues = ^TXGCValues;
+    { The GC got defined as GC = ^record - probably from *struct, so I
+      defined a GCrecord. MVC. }
+       TGC = ^TGCrecord;   
+       TGCrecord = record
+            ext_data : PXExtData;
+            gid : TGContext;
+         end;
+    {*
+     * Visual structure; contains information about colormapping possible.
+     *}
+       TVisual = record
+            ext_data : PXExtData;
+            visualid : TVisualID;
+            c_class : longint;
+            classes : longint; { Renamed class to classes. MVC}
+            red_mask : cardinal;
+            green_mask : cardinal;
+            blue_mask : cardinal;
+            bits_per_rgb : longint;
+            map_entries : longint;
+         end;
+       PVisual = ^TVisual;
+    {*
+     * Depth structure; contains information for each possible depth.
+     *}
+       TDepth = record
+            depth : longint;
+            nvisuals : longint;
+            visuals : PVisual;
+         end;
+       PDepth=^TDepth;
+    {*
+     * Information about the screen.  The contents of this structure are
+     * implementation dependent.  A Screen should be treated as opaque
+     * by application code.
+     *}
+    {*
+      struct _XDisplay;  Forward declare before use for C++ 
+    *}
+    { Defined this, needed for the display field in the following. 
+      Should be a pointer to the previous _Xdisplay... MVC}
+      p_XDisplay = pointer; 
+       TScreen = record
+            ext_data : PXExtData;
+            display : p_XDisplay;
+            root : TWindow;
+            width : longint;
+            height : longint;
+            mwidth : longint;
+            mheight : longint;
+            ndepths : longint;
+            depths : PDepth;
+            root_depth : longint;
+            root_visual : PVisual;
+            default_gc : TGC;
+            cmap : TColormap;
+            white_pixel : cardinal;
+            black_pixel : cardinal;
+            max_maps : longint;
+            min_maps : longint;
+            backing_store : longint;
+            save_unders : TBool;
+            root_input_mask : longint;
+         end;
+         PScreen = ^TScreen;
+    {*
+     * Format structure; describes ZFormat data the screen will understand.
+     *}
+       TScreenFormat = record
+            ext_data : PXExtData;
+            depth : longint;
+            bits_per_pixel : longint;
+            scanline_pad : longint;
+         end;
+       PScreenFormat=^TScreenFormat;
+    {*
+     * Data structure for setting window attributes.
+     *}
+       TXSetWindowAttributes = record
+            background_pixmap : TPixmap;
+            background_pixel : cardinal;
+            border_pixmap : TPixmap;
+            border_pixel : cardinal;
+            bit_gravity : longint;
+            win_gravity : longint;
+            backing_store : longint;
+            backing_planes : cardinal;
+            backing_pixel : cardinal;
+            save_under : TBool;
+            event_mask : longint;
+            do_not_propagate_mask : longint;
+            override_redirect : TBool;
+            colormap : TColormap;
+            cursor : TCursor;
+         end;
+       PXSetWindowAttributes = ^TXSetWindowAttributes;
+       TXWindowAttributes = record
+            x : longint;
+            y : longint;
+            width : longint;
+            height : longint;
+            border_width : longint;
+            depth : longint;
+            visual : PVisual;
+            root : TWindow;
+            c_class : longint;
+            classes : longint; { Renamed from class. MVC}
+            bit_gravity : longint;
+            win_gravity : longint;
+            backing_store : longint;
+            backing_planes : cardinal;
+            backing_pixel : cardinal;
+            save_under : TBool;
+            colormap : TColormap;
+            map_installed : TBool;
+            map_state : longint;
+            all_event_masks : longint;
+            your_event_mask : longint;
+            do_not_propagate_mask : longint;
+            override_redirect : TBool;
+            screen : PScreen;
+         end;
+       PXWindowAttributes = ^TXWindowAttributes;
+    {*
+     * Data structure for host setting; getting routines.
+     *
+     *}
+       TXHostAddress = record
+            family : longint;
+            length : longint;
+            address : pchar;
+         end;
+       PXHostAddress = ^TXHostAddress ;
+    {*
+     * Data structure for "image" data, used by image manipulation routines.
+     *}
+     { Added the following empty record - needed in Ximage. 
+       Fill in later. MVC }
+       Funcsrecord = record
+          dummy : integer; { Just something stupid }
+          end;
+       TXImage = record
+            width : longint;
+            height : longint;
+            xoffset : longint;
+            format : longint;
+            data : pchar;
+            byte_order : longint;
+            bitmap_unit : longint;
+            bitmap_bit_order : longint;
+            bitmap_pad : longint;
+            depth : longint;
+            bytes_per_line : longint;
+            bits_per_pixel : longint;
+            red_mask : cardinal;
+            green_mask : cardinal;
+            blue_mask : cardinal;
+            obdata : TXPointer;
+            funcs : funcsrecord {Added this. Incorrectly converted}
+         end;
+      PXImage = ^TXImage;
+    {* 
+     * Data structure for XReconfigureWindow
+     *}
+       TXWindowChanges = record
+            x : longint;
+            y : longint;
+            width : longint;
+            height : longint;
+            border_width : longint;
+            sibling : TWindow;
+            stack_mode : longint;
+         end;
+        PXWindowChanges =  ^TXWindowChanges;
+    {*
+     * Data structure used by color operations
+     *}
+    {* do_red, do_green, do_blue *}
+       TXColor = record
+            pixel : cardinal;
+            red : word;
+            green : word;
+            blue : word;
+            flags : char;
+            pad : char;
+         end;
+       PXColor = ^TXColor;
+    {*
+     * Data structures for graphics operations.  On most machines, these are
+     * congruent with the wire protocol structures, so reformatting the data
+     * can be avoided on these architectures.
+     *}
+       TXSegment = record
+            x1 : integer;
+            y1 : integer;
+            x2 : integer;
+            y2 : integer;
+         end;
+       PXSegment = ^TXSegment;
+       TXPoint = record
+            x : integer;
+            y : integer;
+         end;
+       PXPoint = ^TXPoint;
+       TXRectangle = record
+            x : integer;
+            y : integer;
+            width : word;
+            height : word;
+         end;
+       PXRectangle = ^TXRectangle;
+       TXArc = record
+            x : integer;
+            y : integer;
+            width : word;
+            height : word;
+            angle1 : integer;
+            angle2 : integer;
+         end;
+       PXarc = ^TXarc;
+    {* Data structure for XChangeKeyboardControl *}
+    {* On, Off, Default *}
+       TXKeyboardControl = record
+            key_click_percent : longint;
+            bell_percent : longint;
+            bell_pitch : longint;
+            bell_duration : longint;
+            led : longint;
+            led_mode : longint;
+            key : longint;
+            auto_repeat_mode : longint;
+         end;
+        PXKeyboardControl = ^TXKeyboardControl;
+    {* Data structure for XGetKeyboardControl *}
+       TXKeyboardState = record
+            key_click_percent : longint;
+            bell_percent : longint;
+            bell_pitch : cardinal;
+            bell_duration : cardinal;
+            led_mask : cardinal;
+            global_auto_repeat : longint;
+            auto_repeats : array[0..(32)-1] of char;
+         end;
+       PXKeyboardState = ^TXKeyboardState;
+    {* Data structure for XGetMotionEvents.  *}
+       TXTimeCoord = record
+            time : TTime;
+            x : integer;
+            y : integer;
+         end;
+       PXTimeCoord = ^TXTimeCoord;
+    {* Data structure for X{Set,Get}ModifierMapping *}
+    {* The server's max # of keys per modifier *}
+    {* An 8 by max_keypermod array of modifiers *}
+       TXModifierKeymap = record
+            max_keypermod : longint;
+            modifiermap : PKeyCode;
+         end;
+       PXModifierKeymap = ^TXModifierKeymap;
+    {*
+     * Display datatype maintaining display specific data.
+     * The contents of this structure are implementation dependent.
+     * A Display should be treated as opaque by application code.
+     *}
+    { I commented the following. It is a complete mess in the XLib.h !!
+      MVC
+           Display = Display;
+     }
+    {*
+    struct _XPrivate;		/* Forward declare before use for C++
+    struct _XrmHashBucketRec;
+    *}
+       TDisplay = record
+            ext_data : PXExtData;
+            private1 : pointer ; { Should be to a _Xprivate struct. MVC }
+            fd : longint;
+            private2 : longint;
+            proto_major_version : longint;
+            proto_minor_version : longint;
+            vendor : pchar;
+            private3 : TXID;
+            private4 : TXID;
+            private5 : TXID;
+            private6 : longint;
+            resource_alloc : Function : TXID; cdecl;
+            byte_order : longint;
+            bitmap_unit : longint;
+            bitmap_pad : longint;
+            bitmap_bit_order : longint;
+            nformats : longint;
+            pixmap_format : PScreenFormat;
+            private8 : longint;
+            release : longint;
+            private9 : pointer ; { Both of them to a _XPRivate struct. MVC}
+            private10 : pointer ;
+            qlen : longint;
+            last_request_read : cardinal;
+            request : cardinal;
+            private11 : TXPointer;
+            private12 : TXPointer;
+            private13 : TXPointer;
+            private14 : TXPointer;
+            max_request_size : cardinal;
+            db : pointer; { To a _XrmHashBucketRec struct. MVC }
+            private15 : Function : longint; cdecl;
+            display_name : pchar;
+            default_screen : longint;
+            nscreens : longint;
+            screens : PScreen;
+            motion_buffer : cardinal;
+            private16 : cardinal;
+            min_keycode : longint;
+            max_keycode : longint;
+            private17 : TXPointer;
+            private18 : TXPointer;
+            private19 : longint;
+            xdefaults : pchar;
+         end;
+         PDisplay=^TDisplay;
+    {*
+     * Definitions of specific events.
+     *}
+    { !! Changed all 'type' definitions to 'eventttype' MVC } 
+    { !! Changed al display definitions to 'whatdisplay' MVC }
+    { !! Idem dito for window,time,property !!}
+       TXKeyEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            root : TWindow;
+            subwindow : TWindow;
+            time : TTime;
+            x : longint;
+            y : longint;
+            x_root : longint;
+            y_root : longint;
+            state : cardinal;
+            keycode : cardinal;
+            same_screen : TBool;
+         end;
+       PXKeyEvent =^TXKeyEvent;
+       TXKeyPressedEvent = TXKeyEvent;
+       PXKeyPressedEvent= ^TXKeyPressedEvent;
+       XKeyReleasedEvent = TXKeyEvent;
+       TXButtonEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            root : TWindow;
+            subwindow : TWindow;
+            time : TTime;
+            x : longint;
+            y : longint;
+            x_root : longint;
+            y_root : longint;
+            state : cardinal;
+            button : cardinal;
+            same_screen : TBool;
+         end;
+       TXButtonPressedEvent = TXButtonEvent;
+       TXButtonReleasedEvent = TXButtonEvent;
+       TXMotionEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            root : TWindow;
+            subwindow : TWindow;
+            time : TTime;
+            x : longint;
+            y : longint;
+            x_root : longint;
+            y_root : longint;
+            state : cardinal;
+            is_hint : char;
+            same_screen : TBool;
+         end;
+       TXPointerMovedEvent = TXMotionEvent;
+    {*
+    	 * NotifyAncestor, NotifyVirtual, NotifyInferior, 
+    	 * NotifyNonlinear,NotifyNonlinearVirtual
+    	 *}
+       TXCrossingEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            root : TWindow;
+            subwindow : TWindow;
+            time : TTime;
+            x : longint;
+            y : longint;
+            x_root : longint;
+            y_root : longint;
+            mode : longint;
+            detail : longint;
+            same_screen : TBool;
+            focus : TBool;
+            state : cardinal;
+         end;
+       TXEnterWindowEvent = TXCrossingEvent;
+       TXLeaveWindowEvent = TXCrossingEvent;
+       TXFocusChangeEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            mode : longint;
+            detail : longint;
+         end;
+       TXFocusInEvent = TXFocusChangeEvent;
+       TXFocusOutEvent = TXFocusChangeEvent;
+       TXKeymapEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            key_vector : array[0..(32)-1] of char;
+         end;
+       TXExposeEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            x : longint;
+            y : longint;
+            width : longint;
+            height : longint;
+            count : longint;
+         end;
+       TXGraphicsExposeEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            drawable : TDrawable;
+            x : longint;
+            y : longint;
+            width : longint;
+            height : longint;
+            count : longint;
+            major_code : longint;
+            minor_code : longint;
+         end;
+       TXNoExposeEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            drawable : TDrawable;
+            major_code : longint;
+            minor_code : longint;
+         end;
+       TXVisibilityEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            state : longint;
+         end;
+       TXCreateWindowEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            parent : TWindow;
+            window : TWindow;
+            x : longint;
+            y : longint;
+            width : longint;
+            height : longint;
+            border_width : longint;
+            override_redirect : TBool;
+         end;
+       TXDestroyWindowEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            event : TWindow;
+            window : TWindow;
+         end;
+       TXUnmapEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            event : TWindow;
+            window : TWindow;
+            from_configure : TBool;
+         end;
+       TXMapEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            event : TWindow;
+            window : TWindow;
+            override_redirect : TBool;
+         end;
+       TXMapRequestEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            parent : TWindow;
+            window : TWindow;
+         end;
+       TXReparentEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            event : TWindow;
+            window : TWindow;
+            parent : TWindow;
+            x : longint;
+            y : longint;
+            override_redirect : TBool;
+         end;
+       TXConfigureEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            event : TWindow;
+            window : TWindow;
+            x : longint;
+            y : longint;
+            width : longint;
+            height : longint;
+            border_width : longint;
+            above : TWindow;
+            override_redirect : TBool;
+         end;
+       TXGravityEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            event : TWindow;
+            window : TWindow;
+            x : longint;
+            y : longint;
+         end;
+       TXResizeRequestEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            width : longint;
+            height : longint;
+         end;
+       TXConfigureRequestEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            parent : TWindow;
+            window : TWindow;
+            x : longint;
+            y : longint;
+            width : longint;
+            height : longint;
+            border_width : longint;
+            above : TWindow;
+            detail : longint;
+            value_mask : cardinal;
+         end;
+       TXCirculateEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            event : TWindow;
+            window : TWindow;
+            place : longint;
+         end;
+       TXCirculateRequestEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            parent : TWindow;
+            window : TWindow;
+            place : longint;
+         end;
+       TXPropertyEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            atom : TAtom;
+            time : TTime;
+            state : longint;
+         end;
+       TXSelectionClearEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            selection : TAtom;
+            time : TTime;
+         end;
+       TXSelectionRequestEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            owner : TWindow;
+            requestor : TWindow;
+            selection : TAtom;
+            target : TAtom;
+            {whatproperty : TAtom;}
+            time : TTime;
+         end;
+       TXSelectionEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            requestor : TWindow;
+            selection : TAtom;
+            target : TAtom;
+            whatproperty : TAtom;
+            whattime : TTime;
+         end;
+       TXColormapEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            colormap : TColormap;
+            c_new : TBool;
+            news : TBool; { Was new. MVC }
+            state : longint;
+         end;
+       TXClientMessageEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            message_eventtype : TAtom;
+            format : longint;
+            data : record
+                case longint of
+                   0 : (b : array[0..(20)-1] of char);
+                   1 : (s : array[0..(10)-1] of integer);
+                   2 : (l : array[0..(5)-1] of longint);
+              end;
+         end;
+       TXMappingEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+            request : longint;
+            first_keycode : longint;
+            count : longint;
+         end;
+       PXMappingEvent = ^TXMappingEvent;
+       TXErrorEvent = record
+            eventtype : longint;
+            Whatdisplay : PDisplay;
+            resourceid : TXID;
+            serial : cardinal;
+            error_code : char;
+            request_code : char;
+            minor_code : char;
+         end;
+       PXErrorEvent = ^TXErrorEvent;
+       TXAnyEvent = record
+            eventtype : longint;
+            serial : cardinal;
+            send_event : TBool;
+            display : PDisplay;
+            window : TWindow;
+         end;
+       TXEvent = record
+           case longint of
+              0 : (eventtype : longint);
+              1 : (xany : TXAnyEvent);
+              2 : (xkey : TXKeyEvent);
+              3 : (xbutton : TXButtonEvent);
+              4 : (xmotion : TXMotionEvent);
+              5 : (xcrossing : TXCrossingEvent);
+              6 : (xfocus : TXFocusChangeEvent);
+              7 : (xexpose : TXExposeEvent);
+              8 : (xgraphicsexpose : TXGraphicsExposeEvent);
+              9 : (xnoexpose : TXNoExposeEvent);
+              10 : (xvisibility : TXVisibilityEvent);
+              11 : (xcreatewindow : TXCreateWindowEvent);
+              12 : (xdestroywindow : TXDestroyWindowEvent);
+              13 : (xunmap : TXUnmapEvent);
+              14 : (xmap : TXMapEvent);
+              15 : (xmaprequest : TXMapRequestEvent);
+              16 : (xreparent : TXReparentEvent);
+              17 : (xconfigure : TXConfigureEvent);
+              18 : (xgravity : TXGravityEvent);
+              19 : (xresizerequest : TXResizeRequestEvent);
+              20 : (xconfigurerequest : TXConfigureRequestEvent);
+              21 : (xcirculate : TXCirculateEvent);
+              22 : (xcirculaterequest : TXCirculateRequestEvent);
+              23 : (xproperty : TXPropertyEvent);
+              24 : (xselectionclear : TXSelectionClearEvent);
+              25 : (xselectionrequest : TXSelectionRequestEvent);
+              26 : (xselection : TXSelectionEvent);
+              27 : (xcolormap : TXColormapEvent);
+              28 : (xclient : TXClientMessageEvent);
+              29 : (xmapping : TXMappingEvent);
+              30 : (xerror : TXErrorEvent);
+              31 : (xkeymap : TXKeymapEvent);
+              32 : (pad : array[0..(24)-1] of longint);
+         end;
+     PXEvent = ^TXEvent;
+    {*!!!!!!
+    #define XAllocID(dpy) ((*((_XPrivDisplay)dpy)->resource_alloc)((dpy)))
+    *}
+    {*
+     * per character font metric information.
+     *}
+       TXCharStruct = record
+            lbearing : integer;
+            rbearing : integer;
+            width : integer;
+            ascent : integer;
+            descent : integer;
+            attributes : word;
+         end;
+       PXCharStruct = ^TXCharStruct;
+       TXFontProp = record
+            name : TAtom;
+            card32 : cardinal;
+         end;
+       PXFontProp = ^TXFontProp;
+       PXFontstruct = ^TXFontStruct;
+       PPXFontstruct = ^PXFontStruct;
+       PPPXFontstruct = ^PPXFontStruct;
+       TXFontStruct = record
+            ext_data : PXExtData;
+            fid : TFont;
+            direction : cardinal;
+            min_char_or_byte2 : cardinal;
+            max_char_or_byte2 : cardinal;
+            min_byte1 : cardinal;
+            max_byte1 : cardinal;
+            all_chars_exist : TBool;
+            default_char : cardinal;
+            n_properties : longint;
+            properties : PXFontProp;
+            min_bounds : TXCharStruct;
+            max_bounds : TXCharStruct;
+            per_char : PXCharStruct;
+            ascent : longint;
+            descent : longint;
+         end;
+       TXTextItem = record
+            chars : pchar;
+            nchars : longint;
+            delta : longint;
+            font : TFont;
+         end;
+       PXTextItem = ^TXTextItem;
+    {* normal 16 bit characters are two bytes *}
+       TXChar2b = record
+            byte1 : char;
+            byte2 : char;
+         end;
+       PXChar2b = ^TXChar2b;
+       TXTextItem16 = record
+            chars : PXChar2b;
+            nchars : longint;
+            delta : longint;
+            font : TFont;
+         end;
+       PXTextItem16 = ^TXTextItem16;
+       TXEDataObject = record
+           case longint of
+              0 : (display : PDisplay);
+              1 : (gc : TGC);
+              2 : (visual : PVisual);
+              3 : (screen : PScreen);
+              4 : (pixmap_format : PScreenFormat);
+              5 : (font : PXFontStruct);
+         end;
+       TXFontSetExtents = record
+            max_ink_extent : TXRectangle;
+            max_logical_extent : TXRectangle;
+         end;
+       PXFontSetExtents = ^TXFontSetExtents;
+       TXOMProc = Procedure; cdecl;
+       
+       TXOMrec = record
+         dummy : integer;
+       end;
+       TXOCrec = record
+         dummy : integer;
+       end;
+       TXOM = ^TXOMrec;
+       TXOC = ^TXOCrec;
+       { Again an accomodation. MVC }
+       TXfontSetRecord = record
+         dummy : integer;
+         end;
+       TXFontSet = ^TXFontsetRecord;
+       TXmbTextItem = record
+            chars : pchar;
+            nchars : longint;
+            delta : longint;
+            font_set : TXFontSet;
+         end;
+       PXmbTextItem = ^TXmbTextItem;
+       TXwcTextItem = record
+            chars : Pwchar_t;
+            nchars : longint;
+            delta : longint;
+            font_set : TXFontSet;
+         end;
+       PXwcTextItem = ^TXwcTextItem;
+
+    const
+       XNRequiredCharSet = 'requiredCharSet';
+       XNQueryOrientation = 'queryOrientation';
+       XNBaseFontName = 'baseFontName';
+       XNOMAutomatic = 'omAutomatic';
+       XNMissingCharSet = 'missingCharSet';
+       XNDefaultString = 'defaultString';
+       XNOrientation = 'orientation';
+       XNDirectionalDependentDrawing = 'directionalDependentDrawing';
+       XNContextualDrawing = 'contextualDrawing';
+       XNFontInfo = 'fontInfo';
+
+   type
+       TXOMCharSetList = record
+            charset_count : longint;
+            charset_list : ^pchar;
+         end;
+       TXOrientation = (
+         XOMOrientation_LTR_TTB,
+         XOMOrientation_RTL_TTB,
+         XOMOrientation_TTB_LTR,
+         XOMOrientation_TTB_RTL,
+         XOMOrientation_Context
+         );
+    {* Input Text description *}
+       TXOMOrientation = record
+            num_orient : longint;
+            orient : ^TXOrientation;
+         end;
+       TXOMFontInfo = record
+            num_font : longint;
+            font_struct_list : ^PXFontStruct;
+            font_name_list : ^pchar;
+         end;
+       TXIMProc = Procedure; cdecl;
+       { Defined the following to accomodate XIM. MVC}
+       TXIMrecord = record
+         field : integer
+         end;
+       TXIM = ^TXIMrecord;
+       { Defined the following to accomodate XIC. MVC}
+       TXICrecord = record
+         field : integer
+         end;
+       TXIC = ^TXICrecord;
+       TXIMStyle = cardinal;
+       TXIMStyles = record
+            count_styles : word;
+            supported_styles : ^TXIMStyle;
+         end;
+
+    const
+       XIMPreeditArea = $0001;
+       XIMPreeditCallbacks = $0002;
+       XIMPreeditPosition = $0004;
+       XIMPreeditNothing = $0008;
+       XIMPreeditNone = $0010;
+       XIMStatusArea = $0100;
+       XIMStatusCallbacks = $0200;
+       XIMStatusNothing = $0400;
+       XIMStatusNone = $0800;
+       XNVaNestedList = 'XNVaNestedList';
+       XNQueryInputStyle = 'queryInputStyle';
+       XNClientWindow = 'clientWindow';
+       XNInputStyle = 'inputStyle';
+       XNFocusWindow = 'focusWindow';
+       XNResourceName = 'resourceName';
+       XNResourceClass = 'resourceClass';
+       XNGeometryCallback = 'geometryCallback';
+       XNDestroyCallback = 'destroyCallback';
+       XNFilterEvents = 'filterEvents';
+       XNPreeditStartCallback = 'preeditStartCallback';
+       XNPreeditDoneCallback = 'preeditDoneCallback';
+       XNPreeditDrawCallback = 'preeditDrawCallback';
+       XNPreeditCaretCallback = 'preeditCaretCallback';
+       XNPreeditStateNotifyCallback = 'preeditStateNotifyCallback';
+       XNPreeditAttributes = 'preeditAttributes';
+       XNStatusStartCallback = 'statusStartCallback';
+       XNStatusDoneCallback = 'statusDoneCallback';
+       XNStatusDrawCallback = 'statusDrawCallback';
+       XNStatusAttributes = 'statusAttributes';
+       XNArea = 'area';
+       XNAreaNeeded = 'areaNeeded';
+       XNSpotLocation = 'spotLocation';
+       XNColormap = 'colorMap';
+       XNStdColormap = 'stdColorMap';
+       XNForeground = 'foreground';
+       XNBackground = 'background';
+       XNBackgroundPixmap = 'backgroundPixmap';
+       XNFontSet = 'fontSet';
+       XNLineSpace = 'lineSpace';
+       XNCursor = 'cursor';
+       XNQueryIMValuesList = 'queryIMValuesList';
+       XNQueryICValuesList = 'queryICValuesList';
+       XNVisiblePosition = 'visiblePosition';
+       XNR6PreeditCallback = 'r6PreeditCallback';
+       XNStringConversionCallback = 'stringConversionCallback';
+       XNStringConversion = 'stringConversion';
+       XNResetState = 'resetState';
+       XNHotKey = 'hotKey';
+       XNHotKeyState = 'hotKeyState';
+       XNPreeditState = 'preeditState';
+       XNSeparatorofNestedList = 'separatorofNestedList';
+       XBufferOverflow = -(1);
+       XLookupNone = 1;
+       XLookupChars = 2;
+       XLookupKeySym = 3;
+       XLookupBoth = 4;
+
+    type
+       TXVaNestedList = TXPointer;
+       TXIMCallback = record
+            client_data : TXPointer;
+            callback : TXIMProc;
+         end;
+       TXIMFeedback = cardinal;
+
+    const
+       XIMReverse = 1;
+       XIMUnderline = (1) shl (1);
+       XIMHighlight = (1) shl (2);
+       XIMPrimary = (1) shl (5);
+       XIMSecondary = (1) shl (6);
+       XIMTertiary = (1) shl (7);
+       XIMVisibleToForward = (1) shl (8);
+       XIMVisibleToBackword = (1) shl (9);
+       XIMVisibleToCenter = (1) shl (10);
+
+    type
+       TXIMText = record
+            length : word;
+            feedback : ^TXIMFeedback;
+            encoding_is_wchar : TBool;
+            thestring : record { This was string. MVC}
+                 case longint of
+                   0 : (multi_byte : ^char);
+                   1 : (wide_char : Pwchar_t);
+              end;
+         end;
+       PXIMText=^TXIMText;
+       TXIMPreeditState = cardinal;
+
+    const
+       XIMPreeditUnKnown = 0;
+       XIMPreeditEnable = 1;
+       XIMPreeditDisable = (1) shl (1);
+
+    type
+       TXIMPreeditStateNotifyCallbackStruct = record
+            state : TXIMPreeditState;
+         end;
+       TXIMResetState = cardinal;
+
+    const
+       XIMInitialState = 1;
+       XIMPreserveState = (1) shl (1);
+
+    type
+       TXIMStringConversionFeedback = cardinal;
+
+    const
+       XIMStringConversionLeftEdge = $00000001;
+       XIMStringConversionRightEdge = $00000002;
+       XIMStringConversionTopEdge = $00000004;
+       XIMStringConversionBottomEdge = $00000008;
+       XIMStringConversionConcealed = $00000010;
+       XIMStringConversionWrapped = $00000020;
+
+    type
+       TXIMStringConversionText = record
+            length : word;
+            feedback : ^TXIMStringConversionFeedback;
+            encoding_is_wchar : TBool;
+            thestring : record { This was string. MVC}
+                case longint of
+                   0 : (mbs : pchar);
+                   1 : (wcs : pwchar_t);
+              end;
+         end;
+       TXIMStringConversionPosition = word;
+       TXIMStringConversionType = word;
+
+    const
+       XIMStringConversionBuffer = $0001;
+       XIMStringConversionLine = $0002;
+       XIMStringConversionWord = $0003;
+       XIMStringConversionChar = $0004;
+
+    type
+       TXIMStringConversionOperation = word;
+
+    const
+       TXIMStringConversionSubstitution = $0001;
+       TXIMStringConversionRetrival = $0002;
+
+    type
+       TXIMStringConversionCallbackStruct = record
+            position : TXIMStringConversionPosition;
+            thetype : TXIMStringConversionType; { This wsa type. MVC}
+            operation : TXIMStringConversionOperation;
+            factor : word;
+            thetext : ^TXIMStringConversionText; { This was text. MVC}
+         end;
+       TXIMPreeditDrawCallbackStruct = record
+            caret : longint;
+            chg_first : longint;
+            chg_length : longint;
+            text : ^TXIMText;
+         end;
+       TXIMCaretDirection = (
+         XIMForwardChar,
+         XIMBackwardChar,
+         XIMForwardWord,
+         XIMBackwardWord,
+         XIMCaretUp,
+         XIMCaretDown,
+         XIMNextLine,
+         XIMPreviousLine,
+         XIMLineStart,
+         XIMLineEnd,
+         XIMAbsolutePosition,
+         XIMDontChange
+         );
+       TXIMCaretStyle = (
+         XIMIsInvisible,
+         XIMIsPrimary,
+         XIMIsSecondary
+         );
+       TXIMPreeditCaretCallbackStruct = record
+            position : longint;
+            direction : TXIMCaretDirection;
+            style : TXIMCaretStyle;
+         end;
+       TXIMStatusDataType = (
+         XIMTextType,
+         XIMBitmapType
+         );
+       TXIMStatusDrawCallbackStruct = record
+            thetype : TXIMStatusDataType; { Was Type. MVC }
+            data : record
+                case longint of
+                   0 : (text : PXIMText);
+                   1 : (bitmap : TPixmap);
+              end;
+         end;
+       TXIMHotKeyTrigger = record
+            keysym : TKeySym;
+            modifier : longint;
+            modifier_mask : longint;
+         end;
+       TXIMHotKeyTriggers = record
+            num_hot_key : longint;
+            key : ^TXIMHotKeyTrigger;
+         end;
+       TXIMHotKeyState = cardinal;
+
+    const
+       XIMHotKeyStateON = $0001;
+       XIMHotKeyStateOFF = $0002;
+
+    type
+       XIMValuesList = record
+            count_values : word;
+            supported_values : ^pchar;
+         end;
+
+type
+  TXErrorHandler = Function(_para1 : PDisplay;_para2 : PXErrorEvent) : longint; cdecl;
+  TXIOErrorHandler = Function(_para1 : PDisplay) : longint; cdecl;
+  TXConnectionWatchProc = Procedure(_para1 : PDisplay;_para2 : TXPointer;_para3 : longint;_para4 : TBool;_para5 : PXPointer); cdecl;
+
+
+{ Here start the Function definitions in the C header file. MVC } cdecl;
+
+Function XLoadQueryFont (para1 : PDisplay; para2 : pchar) : PXFontStruct; cdecl;
+Function XQueryFont(_para1 : PDisplay;_para2 : TXID) : PXFontStruct; cdecl;
+Function XGetMotionEvents(_para1 : PDisplay;_para2 : TWindow;_para3 : TTime;_para4 : TTime;_para5 : Plongint) : PXTimeCoord; cdecl;
+Function XDeleteModifiermapEntry(_para1 : PXModifierKeymap;_para2 : cardinal;_para3 : TKeyCode;_para4 : longint) : PXModifierKeymap; cdecl;
+Function XGetModifierMapping(_para1 : PDisplay) : PXModifierKeymap; cdecl;
+Function XInsertModifiermapEntry(_para1 : PXModifierKeymap;_para2 : cardinal;_para3 : TKeyCode;_para4 : longint) : PXModifierKeymap; cdecl;
+Function XNewModifiermap(_para1 : longint) : PXModifierKeymap; cdecl;
+Function XCreateImage(_para1 : PDisplay;_para2 : PVisual;_para3 : cardinal;_para4 : longint;_para5 : longint;_para6 : pchar;_para7 : cardinal;_para8 : cardinal;_para9 : longint;_para10 : longint) : PXImage; cdecl;
+Function XInitImage(_para1 : PXImage) : TStatus; cdecl;
+Function XGetImage(_para1 : PDisplay;_para2 : TDrawable;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint) : PXImage; cdecl;
+Function XGetSubImage(_para1 : PDisplay;_para2 : TDrawable;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : PXImage;_para10 : longint;_para11 : longint) : PXImage; cdecl;
+Function XOpenDisplay(_para1 : pchar) : PDisplay; cdecl;
+Procedure XrmInitialize; cdecl;
+Function XFetchBytes(_para1 : PDisplay;_para2 : Plongint) : pchar; cdecl;
+Function XFetchBuffer(_para1 : PDisplay;_para2 : Plongint;_para3 : longint) : pchar; cdecl;
+Function XGetAtomName(_para1 : PDisplay;_para2 : TAtom) : pchar; cdecl;
+Function XGetAtomNames(_para1 : PDisplay;_para2 : PAtom;_para3 : longint;_para4 : PPChar) : TStatus; cdecl;
+Function XGetDefault(_para1 : PDisplay;_para2 : pchar;_para3 : pchar) : pchar; cdecl;
+Function XDisplayName(_para1 : pchar) : pchar; cdecl;
+Function XKeysymToString(_para1 : TKeySym) : pchar; cdecl;
+Function XSynchronize(_para1 : PDisplay;_para2 : TBool) : longint; cdecl;
+{ WHat to do with this ??? MVC
+Function XSetAfterFunction(_para1 : PDisplay;_para2 : function(_para1 : PDisplay) : longint) : function : longint; cdecl;
+}
+Function XInternAtom(_para1 : PDisplay;_para2 : pchar;_para3 : TBool) : TAtom; cdecl;
+Function XInternAtoms(_para1 : PDisplay;_para2 : PPChar;_para3 : longint;_para4 : TBool;_para5 : PAtom) : TStatus; cdecl;
+Function XCopyColormapAndFree(_para1 : PDisplay;_para2 : TColormap) : TColormap; cdecl;
+Function XCreateColormap(_para1 : PDisplay;_para2 : TWindow;_para3 : PVisual;_para4 : longint) : TColormap; cdecl;
+Function XCreatePixmapCursor(_para1 : PDisplay;_para2 : TPixmap;_para3 : TPixmap;_para4 : PXColor;_para5 : PXColor;_para6 : cardinal;_para7 : cardinal) : TCursor; cdecl;
+Function XCreateGlyphCursor(_para1 : PDisplay;_para2 : TFont;_para3 : TFont;_para4 : cardinal;_para5 : cardinal;_para6 : PXColor;_para7 : PXColor) : TCursor; cdecl;
+Function XCreateFontCursor(_para1 : PDisplay;_para2 : cardinal) : TCursor; cdecl;
+Function XLoadFont(_para1 : PDisplay;_para2 : pchar) : TFont; cdecl;
+Function XCreateGC(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : PXGCValues) : TGC; cdecl;
+Function XGContextFromGC(_para1 : TGC) : TGContext; cdecl;
+Procedure XFlushGC(_para1 : PDisplay;_para2 : TGC); cdecl;
+Function XCreatePixmap(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : cardinal) : TPixmap; cdecl;
+Function XCreateBitmapFromData(_para1 : PDisplay;_para2 : TDrawable;_para3 : pchar;_para4 : cardinal;_para5 : cardinal) : TPixmap; cdecl;
+Function XCreatePixmapFromBitmapData(_para1 : PDisplay;_para2 : TDrawable;_para3 : pchar;_para4 : cardinal;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : cardinal) : TPixmap; cdecl;
+Function XCreateSimpleWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : cardinal;_para9 : cardinal) : TWindow; cdecl;
+Function XGetSelectionOwner(_para1 : PDisplay;_para2 : TAtom) : TWindow; cdecl;
+Function XCreateWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : cardinal;_para10 : PVisual;_para11 : cardinal;_para12 : PXSetWindowAttributes) : TWindow; cdecl;
+Function XListInstalledColormaps(_para1 : PDisplay;_para2 : TWindow;_para3 : Plongint) : PColormap; cdecl;
+Function XListFonts(_para1 : PDisplay;_para2 : pchar;_para3 : longint;_para4 : Plongint) : PPChar; cdecl;
+Function XListFontsWithInfo(_para1 : PDisplay;_para2 : pchar;_para3 : longint;_para4 : Plongint;_para5 : PPXFontStruct) : PPChar; cdecl;
+Function XGetFontPath(_para1 : PDisplay;_para2 : Plongint) : PPChar; cdecl;
+Function XListExtensions(_para1 : PDisplay;_para2 : Plongint) : PPChar; cdecl;
+Function XListProperties(_para1 : PDisplay;_para2 : TWindow;_para3 : Plongint) : PAtom; cdecl;
+Function XListHosts(_para1 : PDisplay;_para2 : Plongint;_para3 : PBool) : PXHostAddress; cdecl;
+Function XKeycodeToKeysym(_para1 : PDisplay;_para3 : TKeyCode;_para4 : longint) : TKeySym; cdecl;
+{ Doesn't want ? MVC 
+Function XLookupKeysym(_para1 : PXKeyEvent;_para2 : longint) : TKeySym; cdecl;
+}
+Function XGetKeyboardMapping(_para1 : PDisplay;_para2 : cardinal;_para3 : TKeyCode;_para4 : longint;_para5 : Plongint) : PKeySym; cdecl;
+Function XStringToKeysym(_para1 : pchar) : TKeySym; cdecl;
+Function XMaxRequestSize(_para1 : PDisplay) : longint; cdecl;
+Function XExtendedMaxRequestSize(_para1 : PDisplay) : longint; cdecl;
+Function XResourceManagerString(_para1 : PDisplay) : pchar; cdecl;
+Function XScreenResourceString(_para1 : PScreen) : pchar; cdecl;
+Function XDisplayMotionBufferSize(_para1 : PDisplay) : cardinal; cdecl;
+Function XVisualIDFromVisual(_para1 : PVisual) : TVisualID; cdecl;
+Function XInitThreads : TStatus; cdecl;
+Procedure XLockDisplay(_para1 : PDisplay); cdecl;
+Procedure XUnlockDisplay(_para1 : PDisplay); cdecl;
+Function XInitExtension(_para1 : PDisplay;_para2 : pchar) : PXExtCodes; cdecl;
+Function XAddExtension(_para1 : PDisplay) : PXExtCodes; cdecl;
+Function XFindOnExtensionList(_para1 : PPXExtData;_para2 : longint) : PXExtData; cdecl;
+Function XEHeadOfExtensionList(_para1 : TXEDataObject) : PPXExtData; cdecl;
+Function XRootWindow(_para1 : PDisplay;_para2 : longint) : TWindow; cdecl;
+Function XDefaultRootWindow(_para1 : PDisplay) : TWindow; cdecl;
+Function XRootWindowOfScreen(_para1 : PScreen) : TWindow; cdecl;
+Function XDefaultVisual(_para1 : PDisplay;_para2 : longint) : PVisual; cdecl;
+Function XDefaultVisualOfScreen(_para1 : PScreen) : PVisual; cdecl;
+Function XDefaultGC(_para1 : PDisplay;_para2 : longint) : TGC; cdecl;
+Function XDefaultGCOfScreen(_para1 : PScreen) : TGC; cdecl;
+Function XBlackPixel(_para1 : PDisplay;_para2 : longint) : cardinal; cdecl;
+Function XWhitePixel(_para1 : PDisplay;_para2 : longint) : cardinal; cdecl;
+Function XAllPlanes : cardinal; cdecl;
+Function XBlackPixelOfScreen(_para1 : PScreen) : cardinal; cdecl;
+Function XWhitePixelOfScreen(_para1 : PScreen) : cardinal; cdecl;
+Function XNextRequest(_para1 : PDisplay) : cardinal; cdecl;
+{
+Function XLastKnownRequestProcessed(_para1 : PDisplay) : cardinal; cdecl;
+}
+Function XServerVendor(_para1 : PDisplay) : pchar; cdecl;
+Function XDisplayString(_para1 : PDisplay) : pchar; cdecl;
+Function XDefaultColormap(_para1 : PDisplay;_para2 : longint) : TColormap; cdecl;
+Function XDefaultColormapOfScreen(_para1 : PScreen) : TColormap; cdecl;
+Function XDisplayOfScreen(_para1 : PScreen) : PDisplay; cdecl;
+Function XScreenOfDisplay(_para1 : PDisplay;_para2 : longint) : PScreen; cdecl;
+Function XDefaultScreenOfDisplay(_para1 : PDisplay) : PScreen; cdecl;
+Function XEventMaskOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XScreenNumberOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XSetErrorHandler(_para1 : TXErrorHandler) : TXErrorHandler; cdecl;
+Function XSetIOErrorHandler(_para1 : TXIOErrorHandler) : TXIOErrorHandler; cdecl;
+Function XListPixmapFormats(_para1 : PDisplay;_para2 : Plongint) : PXPixmapFormatValues; cdecl;
+Function XListDepths(_para1 : PDisplay;_para2 : longint;_para3 : Plongint) : Plongint; cdecl;
+Function XReconfigureWMWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : cardinal;_para5 : PXWindowChanges) : TStatus; cdecl;
+Function XGetWMProtocols(_para1 : PDisplay;_para2 : TWindow;_para3 : PPAtom;_para4 : Plongint) : TStatus; cdecl;
+Function XSetWMProtocols(_para1 : PDisplay;_para2 : TWindow;_para3 : PAtom;_para4 : longint) : TStatus; cdecl;
+Function XIconifyWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : TStatus; cdecl;
+Function XWithdrawWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : TStatus; cdecl;
+Function XGetCommand(_para1 : PDisplay;_para2 : TWindow;_para3 : PPPChar;_para4 : Plongint) : TStatus; cdecl;
+Function XGetWMColormapWindows(_para1 : PDisplay;_para2 : TWindow;_para3 : PPWindow;_para4 : Plongint) : TStatus; cdecl;
+Function XSetWMColormapWindows(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow;_para4 : longint) : TStatus; cdecl;
+Procedure XFreeStringList(_para1 : PPChar); cdecl;
+Function XSetTransientForHint(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow) : longint; cdecl;
+Function XActivateScreenSaver(_para1 : PDisplay) : longint; cdecl;
+Function XAddHost(_para1 : PDisplay;_para2 : PXHostAddress) : longint; cdecl;
+Function XAddHosts(_para1 : PDisplay;_para2 : PXHostAddress;_para3 : longint) : longint; cdecl;
+{
+Function XAddToExtensionList(_para1 : ^^*;_para2 : PXExtData) : longint; cdecl;
+}
+Function XAddToSaveSet(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XAllocColor(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor) : TStatus; cdecl;
+Function XAllocColorCells(_para1 : PDisplay;_para2 : TColormap;_para3 : TBool;_para4 : PCardinal;_para5 : cardinal;_para6 : PCardinal;_para7 : cardinal) : TStatus; cdecl;
+Function XAllocColorPlanes(_para1 : PDisplay;_para2 : TColormap;_para3 : TBool;_para4 : PCardinal;_para5 : longint;_para6 : longint;_para7 : longint;_para8 : longint;_para9 : PCardinal;_para10 : PCardinal;_para11 : PCardinal) : TStatus; cdecl;
+Function XAllocNamedColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : PXColor;_para5 : PXColor) : TStatus; cdecl;
+Function XAllowEvents(_para1 : PDisplay;_para2 : longint;_para3 : TTime) : longint; cdecl;
+Function XAutoRepeatOff(_para1 : PDisplay) : longint; cdecl;
+Function XAutoRepeatOn(_para1 : PDisplay) : longint; cdecl;
+Function XBell(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XBitmapBitOrder(_para1 : PDisplay) : longint; cdecl;
+Function XBitmapPad(_para1 : PDisplay) : longint; cdecl;
+Function XBitmapUnit(_para1 : PDisplay) : longint; cdecl;
+Function XCellsOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XChangeActivePointerGrab(_para1 : PDisplay;_para2 : cardinal;_para3 : TCursor;_para4 : TTime) : longint; cdecl;
+Function XChangeGC(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : PXGCValues) : longint; cdecl;
+Function XChangeKeyboardControl(_para1 : PDisplay;_para2 : cardinal;_para3 : PXKeyboardControl) : longint; cdecl;
+Function XChangeKeyboardMapping(_para1 : PDisplay;_para2 : longint;_para3 : longint;_para4 : PKeySym;_para5 : longint) : longint; cdecl;
+Function XChangePointerControl(_para1 : PDisplay;_para2 : TBool;_para3 : TBool;_para4 : longint;_para5 : longint;_para6 : longint) : longint; cdecl;
+Function XChangeProperty(_para1 : PDisplay;_para2 : TWindow;_para3 : TAtom;_para4 : TAtom;_para5 : longint;_para6 : longint;_para7 : pchar;_para8 : longint) : longint; cdecl;
+Function XChangeSaveSet(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : longint; cdecl;
+Function XChangeWindowAttributes(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal;_para4 : PXSetWindowAttributes) : longint; cdecl;
+{
+Function XCheckIfEvent(_para1 : PDisplay;_para2 : PXEvent;_para3 : function(_para1 : PDisplay;_para2 : PXEvent;_para3 : XPointer) : TBool;_para4 : XPointer) : TBool; cdecl;
+}
+Function XCheckMaskEvent(_para1 : PDisplay;_para2 : longint;_para3 : PXEvent) : TBool; cdecl;
+Function XCheckTypedEvent(_para1 : PDisplay;_para2 : longint;_para3 : PXEvent) : TBool; cdecl;
+Function XCheckTypedWindowEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : PXEvent) : TBool; cdecl;
+Function XCheckWindowEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : PXEvent) : TBool; cdecl;
+Function XCirculateSubwindows(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : longint; cdecl;
+Function XCirculateSubwindowsDown(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XCirculateSubwindowsUp(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XClearArea(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : TBool) : longint; cdecl;
+Function XClearWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XCloseDisplay(_para1 : PDisplay) : longint; cdecl;
+Function XConfigureWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal;_para4 : PXWindowChanges) : longint; cdecl;
+Function XConnectionNumber(_para1 : PDisplay) : longint; cdecl;
+Function XConvertSelection(_para1 : PDisplay;_para2 : TAtom;_para3 : TAtom;_para4 : TAtom;_para5 : TWindow;_para6 : TTime) : longint; cdecl;
+Function XCopyArea(_para1 : PDisplay;_para2 : TDrawable;_para3 : TDrawable;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : cardinal;_para8 : cardinal;_para9 : longint;_para10 : longint) : longint; cdecl;
+Function XCopyGC(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : TGC) : longint; cdecl;
+Function XCopyPlane(_para1 : PDisplay;_para2 : TDrawable;_para3 : TDrawable;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : cardinal;_para8 : cardinal;_para9 : longint;_para10 : longint;_para11 : cardinal) : longint; cdecl;
+Function XDefaultDepth(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XDefaultDepthOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XDefaultScreen(_para1 : PDisplay) : longint; cdecl;
+Function XDefineCursor(_para1 : PDisplay;_para2 : TWindow;_para3 : TCursor) : longint; cdecl;
+Function XDeleteProperty(_para1 : PDisplay;_para2 : TWindow;_para3 : TAtom) : longint; cdecl;
+Function XDestroyWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XDestroySubwindows(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XDoesBackingStore(_para1 : PScreen) : longint; cdecl;
+Function XDoesSaveUnders(_para1 : PScreen) : TBool; cdecl;
+Function XDisableAccessControl(_para1 : PDisplay) : longint; cdecl;
+Function XDisplayCells(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XDisplayHeight(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XDisplayHeightMM(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XDisplayKeycodes(_para1 : PDisplay;_para2 : Plongint;_para3 : Plongint) : longint; cdecl;
+Function XDisplayPlanes(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XDisplayWidth(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XDisplayWidthMM(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XDrawArc(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint) : longint; cdecl;
+Function XDrawArcs(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXArc;_para5 : longint) : longint; cdecl;
+Function XDrawImageString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : pchar;_para7 : longint) : longint; cdecl;
+Function XDrawImageString16(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXChar2b;_para7 : longint) : longint; cdecl;
+Function XDrawLine(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : longint;_para7 : longint) : longint; cdecl;
+Function XDrawLines(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXPoint;_para5 : longint;_para6 : longint) : longint; cdecl;
+Function XDrawPoint(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint) : longint; cdecl;
+Function XDrawPoints(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXPoint;_para5 : longint;_para6 : longint) : longint; cdecl;
+Function XDrawRectangle(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal) : longint; cdecl;
+Function XDrawRectangles(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXRectangle;_para5 : longint) : longint; cdecl;
+Function XDrawSegments(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXSegment;_para5 : longint) : longint; cdecl;
+Function XDrawString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : pchar;_para7 : longint) : longint; cdecl;
+Function XDrawString16(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXChar2b;_para7 : longint) : longint; cdecl;
+Function XDrawText(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXTextItem;_para7 : longint) : longint; cdecl;
+Function XDrawText16(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXTextItem16;_para7 : longint) : longint; cdecl;
+Function XEnableAccessControl(_para1 : PDisplay) : longint; cdecl;
+Function XEventsQueued(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XFetchName(_para1 : PDisplay;_para2 : TWindow;_para3 : PPChar) : TStatus; cdecl;
+Function XFillArc(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint) : longint; cdecl;
+Function XFillArcs(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXArc;_para5 : longint) : longint; cdecl;
+Function XFillPolygon(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXPoint;_para5 : longint;_para6 : longint;_para7 : longint) : longint; cdecl;
+Function XFillRectangle(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal) : longint; cdecl;
+Function XFillRectangles(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXRectangle;_para5 : longint) : longint; cdecl;
+Function XFlush(_para1 : PDisplay) : longint; cdecl;
+Function XForceScreenSaver(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XFree(_para1 : pointer) : longint; cdecl;
+Function XFreeColormap(_para1 : PDisplay;_para2 : TColormap) : longint; cdecl;
+Function XFreeColors(_para1 : PDisplay;_para2 : TColormap;_para3 : PCardinal;_para4 : longint;_para5 : cardinal) : longint; cdecl;
+Function XFreeCursor(_para1 : PDisplay;_para2 : TCursor) : longint; cdecl;
+Function XFreeExtensionList(_para1 : PPChar) : longint; cdecl;
+Function XFreeFont(_para1 : PDisplay;_para2 : PXFontStruct) : longint; cdecl;
+Function XFreeFontInfo(_para1 : PPChar;_para2 : PXFontStruct;_para3 : longint) : longint; cdecl;
+Function XFreeFontNames(_para1 : PPChar) : longint; cdecl;
+Function XFreeFontPath(_para1 : PPChar) : longint; cdecl;
+Function XFreeGC(_para1 : PDisplay;_para2 : TGC) : longint; cdecl;
+Function XFreeModifiermap(_para1 : PXModifierKeymap) : longint; cdecl;
+Function XFreePixmap(_para1 : PDisplay;_para2 : TPixmap) : longint; cdecl;
+Function XGeometry(_para1 : PDisplay;_para2 : longint;_para3 : pchar;_para4 : pchar;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint;_para10 : Plongint;_para11 : Plongint;_para12 : Plongint;_para13 : Plongint) : longint; cdecl;
+Function XGetErrorDatabaseText(_para1 : PDisplay;_para2 : pchar;_para3 : pchar;_para4 : pchar;_para5 : pchar;_para6 : longint) : longint; cdecl;
+Function XGetErrorText(_para1 : PDisplay;_para2 : longint;_para3 : pchar;_para4 : longint) : longint; cdecl;
+Function XGetFontProperty(_para1 : PXFontStruct;_para2 : TAtom;_para3 : PCardinal) : TBool; cdecl;
+Function XGetGCValues(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : PXGCValues) : TStatus; cdecl;
+Function XGetGeometry(_para1 : PDisplay;_para2 : TDrawable;_para3 : PWindow;_para4 : Plongint;_para5 : Plongint;_para6 : PCardinal;_para7 : PCardinal;_para8 : PCardinal;_para9 : PCardinal) : TStatus; cdecl;
+Function XGetIconName(_para1 : PDisplay;_para2 : TWindow;_para3 : PPChar) : TStatus; cdecl;
+Function XGetInputFocus(_para1 : PDisplay;_para2 : PWindow;_para3 : Plongint) : longint; cdecl;
+Function XGetKeyboardControl(_para1 : PDisplay;_para2 : PXKeyboardState) : longint; cdecl;
+Function XGetPointerControl(_para1 : PDisplay;_para2 : Plongint;_para3 : Plongint;_para4 : Plongint) : longint; cdecl;
+Function XGetPointerMapping(_para1 : PDisplay;_para2 : pchar;_para3 : longint) : longint; cdecl;
+Function XGetScreenSaver(_para1 : PDisplay;_para2 : Plongint;_para3 : Plongint;_para4 : Plongint;_para5 : Plongint) : longint; cdecl;
+Function XGetTransientForHint(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow) : TStatus; cdecl;
+Function XGetWindowProperty(_para1 : PDisplay;_para2 : TWindow;_para3 : TAtom;_para4 : longint;_para5 : longint;_para6 : TBool;_para7 : TAtom;_para8 : PAtom;_para9 : Plongint;_para10 : PCardinal;_para11 : PCardinal;_para12 : PPChar) : longint; cdecl;
+Function XGetWindowAttributes(_para1 : PDisplay;_para2 : TWindow;_para3 : PXWindowAttributes) : TStatus; cdecl;
+Function XGrabButton(_para1 : PDisplay;_para2 : cardinal;_para3 : cardinal;_para4 : TWindow;_para5 : TBool;_para6 : cardinal;_para7 : longint;_para8 : longint;_para9 : TWindow;_para10 : TCursor) : longint; cdecl;
+Function XGrabKey(_para1 : PDisplay;_para2 : longint;_para3 : cardinal;_para4 : TWindow;_para5 : TBool;_para6 : longint;_para7 : longint) : longint; cdecl;
+Function XGrabKeyboard(_para1 : PDisplay;_para2 : TWindow;_para3 : TBool;_para4 : longint;_para5 : longint;_para6 : TTime) : longint; cdecl;
+Function XGrabPointer(_para1 : PDisplay;_para2 : TWindow;_para3 : TBool;_para4 : cardinal;_para5 : longint;_para6 : longint;_para7 : TWindow;_para8 : TCursor;_para9 : TTime) : longint; cdecl;
+Function XGrabServer(_para1 : PDisplay) : longint; cdecl;
+Function XHeightMMOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XHeightOfScreen(_para1 : PScreen) : longint; cdecl;
+{
+Function XIfEvent(_para1 : PDisplay;_para2 : PXEvent;_para3 : function(_para1 : PDisplay;_para2 : PXEvent;_para3 : XPointer) : TBool;_para4 : XPointer) : longint; cdecl;
+}
+Function XImageByteOrder(_para1 : PDisplay) : longint; cdecl;
+Function XInstallColormap(_para1 : PDisplay;_para2 : TColormap) : longint; cdecl;
+Function XKeysymToKeycode(_para1 : PDisplay;_para2 : TKeySym) : TKeyCode; cdecl;
+Function XKillClient(_para1 : PDisplay;_para2 : TXID) : longint; cdecl;
+Function XLastKnownRequestProcessed(_para1 : PDisplay) : cardinal; cdecl;
+Function XLookupColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : PXColor;_para5 : PXColor) : TStatus; cdecl;
+Function XLowerWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XMapRaised(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XMapSubwindows(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XMapWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XMaskEvent(_para1 : PDisplay;_para2 : longint;_para3 : PXEvent) : longint; cdecl;
+Function XMaxCmapsOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XMinCmapsOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XMoveResizeWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal) : longint; cdecl;
+Function XMoveWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint) : longint; cdecl;
+Function XNextEvent(_para1 : PDisplay;_para2 : PXEvent) : longint; cdecl;
+Function XNoOp(_para1 : PDisplay) : longint; cdecl;
+Function XParseColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : PXColor) : TStatus; cdecl;
+Function XParseGeometry(_para1 : pchar;_para2 : Plongint;_para3 : Plongint;_para4 : PCardinal;_para5 : PCardinal) : longint; cdecl;
+Function XPeekEvent(_para1 : PDisplay;_para2 : PXEvent) : longint; cdecl;
+{
+Function XPeekIfEvent(_para1 : PDisplay;_para2 : PXEvent;_para3 : function(_para1 : PDisplay;_para2 : PXEvent;_para3 : XPointer) : TBool;_para4 : XPointer) : longint; cdecl;
+}
+Function XPending(_para1 : PDisplay) : longint; cdecl;
+Function XPlanesOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XProtocolRevision(_para1 : PDisplay) : longint; cdecl;
+Function XProtocolVersion(_para1 : PDisplay) : longint; cdecl;
+Function XPutBackEvent(_para1 : PDisplay;_para2 : PXEvent) : longint; cdecl;
+Function XPutImage(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXImage;_para5 : longint;_para6 : longint;_para7 : longint;_para8 : longint;_para9 : cardinal;_para10 : cardinal) : longint; cdecl;
+Function XQLength(_para1 : PDisplay) : longint; cdecl;
+Function XQueryBestCursor(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : PCardinal;_para6 : PCardinal) : TStatus; cdecl;
+Function XQueryBestSize(_para1 : PDisplay;_para2 : longint;_para3 : TDrawable;_para4 : cardinal;_para5 : cardinal;_para6 : PCardinal;_para7 : PCardinal) : TStatus; cdecl;
+Function XQueryBestStipple(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : PCardinal;_para6 : PCardinal) : TStatus; cdecl;
+Function XQueryBestTile(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : PCardinal;_para6 : PCardinal) : TStatus; cdecl;
+Function XQueryColor(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor) : longint; cdecl;
+Function XQueryColors(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor;_para4 : longint) : longint; cdecl;
+Function XQueryExtension(_para1 : PDisplay;_para2 : pchar;_para3 : Plongint;_para4 : Plongint;_para5 : Plongint) : TBool; cdecl;
+{
+Function XQueryKeymap(_para1 : PDisplay;_para2 : array[0..(32)-1] of char) : longint; cdecl;
+}
+Function XQueryPointer(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow;_para4 : PWindow;_para5 : Plongint;_para6 : Plongint;_para7 : Plongint;_para8 : Plongint;_para9 : PCardinal) : TBool; cdecl;
+Function XQueryTextExtents(_para1 : PDisplay;_para2 : TXID;_para3 : pchar;_para4 : longint;_para5 : Plongint;_para6 : Plongint;_para7 : Plongint;_para8 : PXCharStruct) : longint; cdecl;
+Function XQueryTextExtents16(_para1 : PDisplay;_para2 : TXID;_para3 : PXChar2b;_para4 : longint;_para5 : Plongint;_para6 : Plongint;_para7 : Plongint;_para8 : PXCharStruct) : longint; cdecl;
+Function XQueryTree(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow;_para4 : PWindow;_para5 : PPWindow;_para6 : PCardinal) : TStatus; cdecl;
+Function XRaiseWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XReadBitmapFile(_para1 : PDisplay;_para2 : TDrawable;_para3 : pchar;_para4 : PCardinal;_para5 : PCardinal;_para6 : PPixmap;_para7 : Plongint;_para8 : Plongint) : longint; cdecl;
+Function XReadBitmapFileData(_para1 : pchar;_para2 : PCardinal;_para3 : PCardinal;_para4 : PPChar;_para5 : Plongint;_para6 : Plongint) : longint; cdecl;
+Function XRebindKeysym(_para1 : PDisplay;_para2 : TKeySym;_para3 : PKeySym;_para4 : longint;_para5 : pchar;_para6 : longint) : longint; cdecl;
+Function XRecolorCursor(_para1 : PDisplay;_para2 : TCursor;_para3 : PXColor;_para4 : PXColor) : longint; cdecl;
+Function XRefreshKeyboardMapping(_para1 : PXMappingEvent) : longint; cdecl;
+Function XRemoveFromSaveSet(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XRemoveHost(_para1 : PDisplay;_para2 : PXHostAddress) : longint; cdecl;
+Function XRemoveHosts(_para1 : PDisplay;_para2 : PXHostAddress;_para3 : longint) : longint; cdecl;
+Function XReparentWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow;_para4 : longint;_para5 : longint) : longint; cdecl;
+Function XResetScreenSaver(_para1 : PDisplay) : longint; cdecl;
+Function XResizeWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal;_para4 : cardinal) : longint; cdecl;
+Function XRestackWindows(_para1 : PDisplay;_para2 : PWindow;_para3 : longint) : longint; cdecl;
+Function XRotateBuffers(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XRotateWindowProperties(_para1 : PDisplay;_para2 : TWindow;_para3 : PAtom;_para4 : longint;_para5 : longint) : longint; cdecl;
+Function XScreenCount(_para1 : PDisplay) : longint; cdecl;
+Function XSelectInput(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : longint; cdecl;
+Function XSendEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : TBool;_para4 : longint;_para5 : PXEvent) : TStatus; cdecl;
+Function XSetAccessControl(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XSetArcMode(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;
+Function XSetBackground(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal) : longint; cdecl;
+Function XSetClipMask(_para1 : PDisplay;_para2 : TGC;_para3 : TPixmap) : longint; cdecl;
+Function XSetClipOrigin(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : longint) : longint; cdecl;
+Function XSetClipRectangles(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : longint;_para5 : PXRectangle;_para6 : longint;_para7 : longint) : longint; cdecl;
+Function XSetCloseDownMode(_para1 : PDisplay;_para2 : longint) : longint; cdecl;
+Function XSetCommand(_para1 : PDisplay;_para2 : TWindow;_para3 : PPChar;_para4 : longint) : longint; cdecl;
+Function XSetDashes(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : pchar;_para5 : longint) : longint; cdecl;
+Function XSetFillRule(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;
+Function XSetFillStyle(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;
+Function XSetFont(_para1 : PDisplay;_para2 : TGC;_para3 : TFont) : longint; cdecl;
+Function XSetFontPath(_para1 : PDisplay;_para2 : PPChar;_para3 : longint) : longint; cdecl;
+Function XSetForeground(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal) : longint; cdecl;
+Function XSetFunction(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;
+Function XSetGraphicsExposures(_para1 : PDisplay;_para2 : TGC;_para3 : TBool) : longint; cdecl;
+Function XSetIconName(_para1 : PDisplay;_para2 : TWindow;_para3 : pchar) : longint; cdecl;
+Function XSetInputFocus(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : TTime) : longint; cdecl;
+Function XSetLineAttributes(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : longint;_para5 : longint;_para6 : longint) : longint; cdecl;
+Function XSetModifierMapping(_para1 : PDisplay;_para2 : PXModifierKeymap) : longint; cdecl;
+Function XSetPlaneMask(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal) : longint; cdecl;
+Function XSetPointerMapping(_para1 : PDisplay;_para2 : pchar;_para3 : longint) : longint; cdecl;
+Function XSetScreenSaver(_para1 : PDisplay;_para2 : longint;_para3 : longint;_para4 : longint;_para5 : longint) : longint; cdecl;
+Function XSetSelectionOwner(_para1 : PDisplay;_para2 : TAtom;_para3 : TWindow;_para4 : TTime) : longint; cdecl;
+Function XSetState(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : cardinal;_para5 : longint;_para6 : cardinal) : longint; cdecl;
+Function XSetStipple(_para1 : PDisplay;_para2 : TGC;_para3 : TPixmap) : longint; cdecl;
+Function XSetSubwindowMode(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;
+Function XSetTSOrigin(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : longint) : longint; cdecl;
+Function XSetTile(_para1 : PDisplay;_para2 : TGC;_para3 : TPixmap) : longint; cdecl;
+Function XSetWindowBackground(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal) : longint; cdecl;
+Function XSetWindowBackgroundPixmap(_para1 : PDisplay;_para2 : TWindow;_para3 : TPixmap) : longint; cdecl;
+Function XSetWindowBorder(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal) : longint; cdecl;
+Function XSetWindowBorderPixmap(_para1 : PDisplay;_para2 : TWindow;_para3 : TPixmap) : longint; cdecl;
+Function XSetWindowBorderWidth(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal) : longint; cdecl;
+Function XSetWindowColormap(_para1 : PDisplay;_para2 : TWindow;_para3 : TColormap) : longint; cdecl;
+Function XStoreBuffer(_para1 : PDisplay;_para2 : pchar;_para3 : longint;_para4 : longint) : longint; cdecl;
+Function XStoreBytes(_para1 : PDisplay;_para2 : pchar;_para3 : longint) : longint; cdecl;
+Function XStoreColor(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor) : longint; cdecl;
+Function XStoreColors(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor;_para4 : longint) : longint; cdecl;
+Function XStoreName(_para1 : PDisplay;_para2 : TWindow;_para3 : pchar) : longint; cdecl;
+Function XStoreNamedColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : cardinal;_para5 : longint) : longint; cdecl;
+Function XSync(_para1 : PDisplay;_para2 : TBool) : longint; cdecl;
+Function XTextExtents(_para1 : PXFontStruct;_para2 : pchar;_para3 : longint;_para4 : Plongint;_para5 : Plongint;_para6 : Plongint;_para7 : PXCharStruct) : longint; cdecl;
+Function XTextExtents16(_para1 : PXFontStruct;_para2 : PXChar2b;_para3 : longint;_para4 : Plongint;_para5 : Plongint;_para6 : Plongint;_para7 : PXCharStruct) : longint; cdecl;
+Function XTextWidth(_para1 : PXFontStruct;_para2 : pchar;_para3 : longint) : longint; cdecl;
+Function XTextWidth16(_para1 : PXFontStruct;_para2 : PXChar2b;_para3 : longint) : longint; cdecl;
+Function XTranslateCoordinates(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow;_para4 : longint;_para5 : longint;_para6 : Plongint;_para7 : Plongint;_para8 : PWindow) : TBool; cdecl;
+Function XUndefineCursor(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XUngrabButton(_para1 : PDisplay;_para2 : cardinal;_para3 : cardinal;_para4 : TWindow) : longint; cdecl;
+Function XUngrabKey(_para1 : PDisplay;_para2 : longint;_para3 : cardinal;_para4 : TWindow) : longint; cdecl;
+Function XUngrabKeyboard(_para1 : PDisplay;_para2 : TTime) : longint; cdecl;
+Function XUngrabPointer(_para1 : PDisplay;_para2 : TTime) : longint; cdecl;
+Function XUngrabServer(_para1 : PDisplay) : longint; cdecl;
+Function XUninstallColormap(_para1 : PDisplay;_para2 : TColormap) : longint; cdecl;
+Function XUnloadFont(_para1 : PDisplay;_para2 : TFont) : longint; cdecl;
+Function XUnmapSubwindows(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XUnmapWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;
+Function XVendorRelease(_para1 : PDisplay) : longint; cdecl;
+Function XWarpPointer(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint) : longint; cdecl;
+Function XWidthMMOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XWidthOfScreen(_para1 : PScreen) : longint; cdecl;
+Function XWindowEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : PXEvent) : longint; cdecl;
+Function XWriteBitmapFile(_para1 : PDisplay;_para2 : pchar;_para3 : TPixmap;_para4 : cardinal;_para5 : cardinal;_para6 : longint;_para7 : longint) : longint; cdecl;
+Function XSupportsLocale : TBool; cdecl;
+Function XSetLocaleModifiers(_para1 : pchar) : pchar; cdecl;
+{
+Function XOpenOM(_para1 : PDisplay;_para2 : ^*;_para3 : pchar;_para4 : pchar) : TXOM; cdecl;
+}
+Function XCloseOM(_para1 : TXOM) : TStatus; cdecl;
+Function XDisplayOfOM(_para1 : TXOM) : PDisplay; cdecl;
+Function XLocaleOfOM(_para1 : TXOM) : pchar; cdecl;
+Procedure XDestroyOC(_para1 : TXOC); cdecl;
+Function TXOMOfOC(_para1 : TXOC) : TXOM; cdecl;
+Function XCreateFontSet(_para1 : PDisplay;_para2 : pchar;_para3 : PPPChar;_para4 : Plongint;_para5 : PPChar) : TXFontSet; cdecl;
+Procedure XFreeFontSet(_para1 : PDisplay;_para2 : TXFontSet); cdecl;
+Function XFontsOfFontSet(_para1 : TXFontSet;_para2 : PPPXFontStruct;_para3 : PPPChar) : longint; cdecl;
+Function XBaseFontNameListOfFontSet(_para1 : TXFontSet) : pchar; cdecl;
+Function XLocaleOfFontSet(_para1 : TXFontSet) : pchar; cdecl;
+Function XContextDependentDrawing(_para1 : TXFontSet) : TBool; cdecl;
+Function XDirectionalDependentDrawing(_para1 : TXFontSet) : TBool; cdecl;
+Function XContextualDrawing(_para1 : TXFontSet) : TBool; cdecl;
+Function XExtentsOfFontSet(_para1 : TXFontSet) : PXFontSetExtents; cdecl;
+Function XmbTextEscapement(_para1 : TXFontSet;_para2 : pchar;_para3 : longint) : longint; cdecl;
+Function XwcTextEscapement(_para1 : TXFontSet;_para2 : Pwchar_t;_para3 : longint) : longint; cdecl;
+Function XmbTextExtents(_para1 : TXFontSet;_para2 : pchar;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle) : longint; cdecl;
+Function XwcTextExtents(_para1 : TXFontSet;_para2 : Pwchar_t;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle) : longint; cdecl;
+Function XmbTextPerCharExtents(_para1 : TXFontSet;_para2 : pchar;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle;_para6 : longint;_para7 : Plongint;_para8 : PXRectangle;_para9 : PXRectangle) : TStatus; cdecl;
+Function XwcTextPerCharExtents(_para1 : TXFontSet;_para2 : Pwchar_t;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle;_para6 : longint;_para7 : Plongint;_para8 : PXRectangle;_para9 : PXRectangle) : TStatus; cdecl;
+Procedure XmbDrawText(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXmbTextItem;_para7 : longint); cdecl;
+Procedure XwcDrawText(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXwcTextItem;_para7 : longint); cdecl;
+Procedure XmbDrawString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : pchar;_para8 : longint); cdecl;
+Procedure XwcDrawString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : Pwchar_t;_para8 : longint); cdecl;
+Procedure XmbDrawImageString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : pchar;_para8 : longint); cdecl;
+Procedure XwcDrawImageString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : Pwchar_t;_para8 : longint); cdecl;
+{
+Function XOpenIM(_para1 : PDisplay;_para2 : P*;_para3 : pchar;_para4 : pchar) : TXIM; cdecl;
+}
+Function XCloseIM(_para1 : TXIM) : TStatus; cdecl;
+Function XDisplayOfIM(_para1 : TXIM) : PDisplay; cdecl;
+Function XLocaleOfIM(_para1 : TXIM) : pchar; cdecl;
+Procedure XDestroyIC(_para1 : TXIC); cdecl;
+Procedure XSetICFocus(_para1 : TXIC); cdecl;
+Procedure XUnsetICFocus(_para1 : TXIC); cdecl;
+Function XwcResetIC(_para1 : TXIC) : Pwchar_t; cdecl;
+Function XmbResetIC(_para1 : TXIC) : pchar; cdecl;
+Function TXIMOfIC(_para1 : TXIC) : TXIM; cdecl;
+Function XFilterEvent(_para1 : PXEvent;_para2 : TWindow) : TBool; cdecl;
+Function XmbLookupString(_para1 : TXIC;_para2 : PXKeyPressedEvent;_para3 : pchar;_para4 : longint;_para5 : PKeySym;_para6 : PStatus) : longint; cdecl;
+Function XwcLookupString(_para1 : TXIC;_para2 : PXKeyPressedEvent;_para3 : Pwchar_t;_para4 : longint;_para5 : PKeySym;_para6 : PStatus) : longint; cdecl;
+{
+Function XRegisterIMInstantiateCallback(_para1 : PDisplay;_para2 : P*;_para3 : pchar;_para4 : pchar;_para5 : TXIMProc;_para6 : PXPointer) : TBool; cdecl;
+Function XUnregisterIMInstantiateCallback(_para1 : PDisplay;_para2 : P*;_para3 : pchar;_para4 : pchar;_para5 : TXIMProc;_para6 : PXPointer) : TBool; cdecl;
+}
+Function XInternalConnectionNumbers(_para1 : PDisplay;_para2 : PPlongint;_para3 : Plongint) : TStatus; cdecl;
+Procedure XProcessInternalConnection(_para1 : PDisplay;_para2 : longint); cdecl;
+Function XAddConnectionWatch(_para1 : PDisplay;_para2 : TXConnectionWatchProc;_para3 : TXPointer) : TStatus; cdecl;
+Procedure XRemoveConnectionWatch(_para1 : PDisplay;_para2 : TXConnectionWatchProc;_para3 : TXPointer); cdecl;
+
+implementation
+
+function XLoadQueryFont (para1 : PDisplay; para2 : pchar) : PXFontStruct; cdecl;external ;
+function XQueryFont(_para1 : PDisplay;_para2 : TXID) : PXFontStruct; cdecl;external ;
+function XGetMotionEvents(_para1 : PDisplay;_para2 : TWindow;_para3 : TTime;_para4 : TTime;_para5 : Plongint) : PXTimeCoord; cdecl;external ;
+function XDeleteModifiermapEntry(_para1 : PXModifierKeymap;_para2 : cardinal;_para3 : TKeyCode;_para4 : longint) : PXModifierKeymap; cdecl;external ;
+function XGetModifierMapping(_para1 : PDisplay) : PXModifierKeymap; cdecl;external ;
+function XInsertModifiermapEntry(_para1 : PXModifierKeymap;_para2 : cardinal;_para3 : TKeyCode;_para4 : longint) : PXModifierKeymap; cdecl;external ;
+function XNewModifiermap(_para1 : longint) : PXModifierKeymap; cdecl;external ;
+function XCreateImage(_para1 : PDisplay;_para2 : PVisual;_para3 : cardinal;_para4 : longint;_para5 : longint;_para6 : pchar;_para7 : cardinal;_para8 : cardinal;_para9 : longint;_para10 : longint) : PXImage; cdecl;external ;
+function XInitImage(_para1 : PXImage) : TStatus; cdecl;external ;
+function XGetImage(_para1 : PDisplay;_para2 : TDrawable;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint) : PXImage; cdecl;external ;
+function XGetSubImage(_para1 : PDisplay;_para2 : TDrawable;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : PXImage;_para10 : longint;_para11 : longint) : PXImage; cdecl;external ;
+function XOpenDisplay(_para1 : pchar) : PDisplay; cdecl;external ;
+procedure XrmInitialize; cdecl;external ;
+function XFetchBytes(_para1 : PDisplay;_para2 : Plongint) : pchar; cdecl;external ;
+function XFetchBuffer(_para1 : PDisplay;_para2 : Plongint;_para3 : longint) : pchar; cdecl;external ;
+function XGetAtomName(_para1 : PDisplay;_para2 : TAtom) : pchar; cdecl;external ;
+function XGetAtomNames(_para1 : PDisplay;_para2 : PAtom;_para3 : longint;_para4 : PPChar) : TStatus; cdecl;external ;
+function XGetDefault(_para1 : PDisplay;_para2 : pchar;_para3 : pchar) : pchar; cdecl;external ;
+function XDisplayName(_para1 : pchar) : pchar; cdecl;external ;
+function XKeysymToString(_para1 : TKeySym) : pchar; cdecl;external ;
+function XSynchronize(_para1 : PDisplay;_para2 : TBool) : longint; cdecl;external ;
+{ WHat to do with this ??? MVC
+function XSetAfterFunction(_para1 : PDisplay;_para2 : function(_para1 : PDisplay) : longint) : function : longint; cdecl;external ;
+}
+function XInternAtom(_para1 : PDisplay;_para2 : pchar;_para3 : TBool) : TAtom; cdecl;external ;
+function XInternAtoms(_para1 : PDisplay;_para2 : PPChar;_para3 : longint;_para4 : TBool;_para5 : PAtom) : TStatus; cdecl;external ;
+function XCopyColormapAndFree(_para1 : PDisplay;_para2 : TColormap) : TColormap; cdecl;external ;
+function XCreateColormap(_para1 : PDisplay;_para2 : TWindow;_para3 : PVisual;_para4 : longint) : TColormap; cdecl;external ;
+function XCreatePixmapCursor(_para1 : PDisplay;_para2 : TPixmap;_para3 : TPixmap;_para4 : PXColor;_para5 : PXColor;_para6 : cardinal;_para7 : cardinal) : TCursor; cdecl;external ;
+function XCreateGlyphCursor(_para1 : PDisplay;_para2 : TFont;_para3 : TFont;_para4 : cardinal;_para5 : cardinal;_para6 : PXColor;_para7 : PXColor) : TCursor; cdecl;external ;
+function XCreateFontCursor(_para1 : PDisplay;_para2 : cardinal) : TCursor; cdecl;external ;
+function XLoadFont(_para1 : PDisplay;_para2 : pchar) : TFont; cdecl;external ;
+function XCreateGC(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : PXGCValues) : TGC; cdecl;external ;
+function XGContextFromGC(_para1 : TGC) : TGContext; cdecl;external ;
+procedure XFlushGC(_para1 : PDisplay;_para2 : TGC); cdecl;external ;
+function XCreatePixmap(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : cardinal) : TPixmap; cdecl;external ;
+function XCreateBitmapFromData(_para1 : PDisplay;_para2 : TDrawable;_para3 : pchar;_para4 : cardinal;_para5 : cardinal) : TPixmap; cdecl;external ;
+function XCreatePixmapFromBitmapData(_para1 : PDisplay;_para2 : TDrawable;_para3 : pchar;_para4 : cardinal;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : cardinal) : TPixmap; cdecl;external ;
+function XCreateSimpleWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : cardinal;_para9 : cardinal) : TWindow; cdecl;external ;
+function XGetSelectionOwner(_para1 : PDisplay;_para2 : TAtom) : TWindow; cdecl;external ;
+function XCreateWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : cardinal;_para10 : PVisual;_para11 : cardinal;_para12 : PXSetWindowAttributes) : TWindow; cdecl;external ;
+function XListInstalledColormaps(_para1 : PDisplay;_para2 : TWindow;_para3 : Plongint) : PColormap; cdecl;external ;
+function XListFonts(_para1 : PDisplay;_para2 : pchar;_para3 : longint;_para4 : Plongint) : PPChar; cdecl;external ;
+function XListFontsWithInfo(_para1 : PDisplay;_para2 : pchar;_para3 : longint;_para4 : Plongint;_para5 : PPXFontStruct) : PPChar; cdecl;external ;
+function XGetFontPath(_para1 : PDisplay;_para2 : Plongint) : PPChar; cdecl;external ;
+function XListExtensions(_para1 : PDisplay;_para2 : Plongint) : PPChar; cdecl;external ;
+function XListProperties(_para1 : PDisplay;_para2 : TWindow;_para3 : Plongint) : PAtom; cdecl;external ;
+function XListHosts(_para1 : PDisplay;_para2 : Plongint;_para3 : PBool) : PXHostAddress; cdecl;external ;
+function XKeycodeToKeysym(_para1 : PDisplay;_para3 : TKeyCode;_para4 : longint) : TKeySym; cdecl;external ;
+{ Doesn't want ? MVC 
+function XLookupKeysym(_para1 : PXKeyEvent;_para2 : longint) : TKeySym; cdecl;external ;
+}
+function XGetKeyboardMapping(_para1 : PDisplay;_para2 : cardinal;_para3 : TKeyCode;_para4 : longint;_para5 : Plongint) : PKeySym; cdecl;external ;
+function XStringToKeysym(_para1 : pchar) : TKeySym; cdecl;external ;
+function XMaxRequestSize(_para1 : PDisplay) : longint; cdecl;external ;
+function XExtendedMaxRequestSize(_para1 : PDisplay) : longint; cdecl;external ;
+function XResourceManagerString(_para1 : PDisplay) : pchar; cdecl;external ;
+function XScreenResourceString(_para1 : PScreen) : pchar; cdecl;external ;
+function XDisplayMotionBufferSize(_para1 : PDisplay) : cardinal; cdecl;external ;
+function XVisualIDFromVisual(_para1 : PVisual) : TVisualID; cdecl;external ;
+function XInitThreads : TStatus; cdecl;external ;
+procedure XLockDisplay(_para1 : PDisplay); cdecl;external ;
+procedure XUnlockDisplay(_para1 : PDisplay); cdecl;external ;
+function XInitExtension(_para1 : PDisplay;_para2 : pchar) : PXExtCodes; cdecl;external ;
+function XAddExtension(_para1 : PDisplay) : PXExtCodes; cdecl;external ;
+function XFindOnExtensionList(_para1 : PPXExtData;_para2 : longint) : PXExtData; cdecl;external ;
+function XEHeadOfExtensionList(_para1 : TXEDataObject) : PPXExtData; cdecl;external ;
+function XRootWindow(_para1 : PDisplay;_para2 : longint) : TWindow; cdecl;external ;
+function XDefaultRootWindow(_para1 : PDisplay) : TWindow; cdecl;external ;
+function XRootWindowOfScreen(_para1 : PScreen) : TWindow; cdecl;external ;
+function XDefaultVisual(_para1 : PDisplay;_para2 : longint) : PVisual; cdecl;external ;
+function XDefaultVisualOfScreen(_para1 : PScreen) : PVisual; cdecl;external ;
+function XDefaultGC(_para1 : PDisplay;_para2 : longint) : TGC; cdecl;external ;
+function XDefaultGCOfScreen(_para1 : PScreen) : TGC; cdecl;external ;
+function XBlackPixel(_para1 : PDisplay;_para2 : longint) : cardinal; cdecl;external ;
+function XWhitePixel(_para1 : PDisplay;_para2 : longint) : cardinal; cdecl;external ;
+function XAllPlanes : cardinal; cdecl;external ;
+function XBlackPixelOfScreen(_para1 : PScreen) : cardinal; cdecl;external ;
+function XWhitePixelOfScreen(_para1 : PScreen) : cardinal; cdecl;external ;
+function XNextRequest(_para1 : PDisplay) : cardinal; cdecl;external ;
+function XLastKnownRequestProcessed(_para1 : PDisplay) : cardinal; cdecl;external ;
+function XServerVendor(_para1 : PDisplay) : pchar; cdecl;external ;
+function XDisplayString(_para1 : PDisplay) : pchar; cdecl;external ;
+function XDefaultColormap(_para1 : PDisplay;_para2 : longint) : TColormap; cdecl;external ;
+function XDefaultColormapOfScreen(_para1 : PScreen) : TColormap; cdecl;external ;
+function XDisplayOfScreen(_para1 : PScreen) : PDisplay; cdecl;external ;
+function XScreenOfDisplay(_para1 : PDisplay;_para2 : longint) : PScreen; cdecl;external ;
+function XDefaultScreenOfDisplay(_para1 : PDisplay) : PScreen; cdecl;external ;
+function XEventMaskOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XScreenNumberOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XSetErrorHandler(_para1 : TXErrorHandler) : TXErrorHandler; cdecl;external ;
+function XSetIOErrorHandler(_para1 : TXIOErrorHandler) : TXIOErrorHandler; cdecl;external ;
+function XListPixmapFormats(_para1 : PDisplay;_para2 : Plongint) : PXPixmapFormatValues; cdecl;external ;
+function XListDepths(_para1 : PDisplay;_para2 : longint;_para3 : Plongint) : Plongint; cdecl;external ;
+function XReconfigureWMWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : cardinal;_para5 : PXWindowChanges) : TStatus; cdecl;external ;
+function XGetWMProtocols(_para1 : PDisplay;_para2 : TWindow;_para3 : PPAtom;_para4 : Plongint) : TStatus; cdecl;external ;
+function XSetWMProtocols(_para1 : PDisplay;_para2 : TWindow;_para3 : PAtom;_para4 : longint) : TStatus; cdecl;external ;
+function XIconifyWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : TStatus; cdecl;external ;
+function XWithdrawWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : TStatus; cdecl;external ;
+function XGetCommand(_para1 : PDisplay;_para2 : TWindow;_para3 : PPPChar;_para4 : Plongint) : TStatus; cdecl;external ;
+function XGetWMColormapWindows(_para1 : PDisplay;_para2 : TWindow;_para3 : PPWindow;_para4 : Plongint) : TStatus; cdecl;external ;
+function XSetWMColormapWindows(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow;_para4 : longint) : TStatus; cdecl;external ;
+procedure XFreeStringList(_para1 : PPChar); cdecl;external ;
+function XSetTransientForHint(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow) : longint; cdecl;external ;
+function XActivateScreenSaver(_para1 : PDisplay) : longint; cdecl;external ;
+function XAddHost(_para1 : PDisplay;_para2 : PXHostAddress) : longint; cdecl;external ;
+function XAddHosts(_para1 : PDisplay;_para2 : PXHostAddress;_para3 : longint) : longint; cdecl;external ;
+{
+function XAddToExtensionList(_para1 : ^^*;_para2 : PXExtData) : longint; cdecl;external ;
+}
+function XAddToSaveSet(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XAllocColor(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor) : TStatus; cdecl;external ;
+function XAllocColorCells(_para1 : PDisplay;_para2 : TColormap;_para3 : TBool;_para4 : PCardinal;_para5 : cardinal;_para6 : PCardinal;_para7 : cardinal) : TStatus; cdecl;external ;
+function XAllocColorPlanes(_para1 : PDisplay;_para2 : TColormap;_para3 : TBool;_para4 : PCardinal;_para5 : longint;_para6 : longint;_para7 : longint;_para8 : longint;_para9 : PCardinal;_para10 : PCardinal;_para11 : PCardinal) : TStatus; cdecl;external ;
+function XAllocNamedColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : PXColor;_para5 : PXColor) : TStatus; cdecl;external ;
+function XAllowEvents(_para1 : PDisplay;_para2 : longint;_para3 : TTime) : longint; cdecl;external ;
+function XAutoRepeatOff(_para1 : PDisplay) : longint; cdecl;external ;
+function XAutoRepeatOn(_para1 : PDisplay) : longint; cdecl;external ;
+function XBell(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XBitmapBitOrder(_para1 : PDisplay) : longint; cdecl;external ;
+function XBitmapPad(_para1 : PDisplay) : longint; cdecl;external ;
+function XBitmapUnit(_para1 : PDisplay) : longint; cdecl;external ;
+function XCellsOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XChangeActivePointerGrab(_para1 : PDisplay;_para2 : cardinal;_para3 : TCursor;_para4 : TTime) : longint; cdecl;external ;
+function XChangeGC(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : PXGCValues) : longint; cdecl;external ;
+function XChangeKeyboardControl(_para1 : PDisplay;_para2 : cardinal;_para3 : PXKeyboardControl) : longint; cdecl;external ;
+function XChangeKeyboardMapping(_para1 : PDisplay;_para2 : longint;_para3 : longint;_para4 : PKeySym;_para5 : longint) : longint; cdecl;external ;
+function XChangePointerControl(_para1 : PDisplay;_para2 : TBool;_para3 : TBool;_para4 : longint;_para5 : longint;_para6 : longint) : longint; cdecl;external ;
+function XChangeProperty(_para1 : PDisplay;_para2 : TWindow;_para3 : TAtom;_para4 : TAtom;_para5 : longint;_para6 : longint;_para7 : pchar;_para8 : longint) : longint; cdecl;external ;
+function XChangeSaveSet(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : longint; cdecl;external ;
+function XChangeWindowAttributes(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal;_para4 : PXSetWindowAttributes) : longint; cdecl;external ;
+{
+function XCheckIfEvent(_para1 : PDisplay;_para2 : PXEvent;_para3 : function(_para1 : PDisplay;_para2 : PXEvent;_para3 : XPointer) : TBool;_para4 : XPointer) : TBool; cdecl;external ;
+}
+function XCheckMaskEvent(_para1 : PDisplay;_para2 : longint;_para3 : PXEvent) : TBool; cdecl;external ;
+function XCheckTypedEvent(_para1 : PDisplay;_para2 : longint;_para3 : PXEvent) : TBool; cdecl;external ;
+function XCheckTypedWindowEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : PXEvent) : TBool; cdecl;external ;
+function XCheckWindowEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : PXEvent) : TBool; cdecl;external ;
+function XCirculateSubwindows(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : longint; cdecl;external ;
+function XCirculateSubwindowsDown(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XCirculateSubwindowsUp(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XClearArea(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal;_para7 : TBool) : longint; cdecl;external ;
+function XClearWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XCloseDisplay(_para1 : PDisplay) : longint; cdecl;external ;
+function XConfigureWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal;_para4 : PXWindowChanges) : longint; cdecl;external ;
+function XConnectionNumber(_para1 : PDisplay) : longint; cdecl;external ;
+function XConvertSelection(_para1 : PDisplay;_para2 : TAtom;_para3 : TAtom;_para4 : TAtom;_para5 : TWindow;_para6 : TTime) : longint; cdecl;external ;
+function XCopyArea(_para1 : PDisplay;_para2 : TDrawable;_para3 : TDrawable;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : cardinal;_para8 : cardinal;_para9 : longint;_para10 : longint) : longint; cdecl;external ;
+function XCopyGC(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : TGC) : longint; cdecl;external ;
+function XCopyPlane(_para1 : PDisplay;_para2 : TDrawable;_para3 : TDrawable;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : cardinal;_para8 : cardinal;_para9 : longint;_para10 : longint;_para11 : cardinal) : longint; cdecl;external ;
+function XDefaultDepth(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XDefaultDepthOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XDefaultScreen(_para1 : PDisplay) : longint; cdecl;external ;
+function XDefineCursor(_para1 : PDisplay;_para2 : TWindow;_para3 : TCursor) : longint; cdecl;external ;
+function XDeleteProperty(_para1 : PDisplay;_para2 : TWindow;_para3 : TAtom) : longint; cdecl;external ;
+function XDestroyWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XDestroySubwindows(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XDoesBackingStore(_para1 : PScreen) : longint; cdecl;external ;
+function XDoesSaveUnders(_para1 : PScreen) : TBool; cdecl;external ;
+function XDisableAccessControl(_para1 : PDisplay) : longint; cdecl;external ;
+function XDisplayCells(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XDisplayHeight(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XDisplayHeightMM(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XDisplayKeycodes(_para1 : PDisplay;_para2 : Plongint;_para3 : Plongint) : longint; cdecl;external ;
+function XDisplayPlanes(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XDisplayWidth(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XDisplayWidthMM(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XDrawArc(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint) : longint; cdecl;external ;
+function XDrawArcs(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXArc;_para5 : longint) : longint; cdecl;external ;
+function XDrawImageString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : pchar;_para7 : longint) : longint; cdecl;external ;
+function XDrawImageString16(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXChar2b;_para7 : longint) : longint; cdecl;external ;
+function XDrawLine(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : longint;_para7 : longint) : longint; cdecl;external ;
+function XDrawLines(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXPoint;_para5 : longint;_para6 : longint) : longint; cdecl;external ;
+function XDrawPoint(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint) : longint; cdecl;external ;
+function XDrawPoints(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXPoint;_para5 : longint;_para6 : longint) : longint; cdecl;external ;
+function XDrawRectangle(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal) : longint; cdecl;external ;
+function XDrawRectangles(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXRectangle;_para5 : longint) : longint; cdecl;external ;
+function XDrawSegments(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXSegment;_para5 : longint) : longint; cdecl;external ;
+function XDrawString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : pchar;_para7 : longint) : longint; cdecl;external ;
+function XDrawString16(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXChar2b;_para7 : longint) : longint; cdecl;external ;
+function XDrawText(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXTextItem;_para7 : longint) : longint; cdecl;external ;
+function XDrawText16(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXTextItem16;_para7 : longint) : longint; cdecl;external ;
+function XEnableAccessControl(_para1 : PDisplay) : longint; cdecl;external ;
+function XEventsQueued(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XFetchName(_para1 : PDisplay;_para2 : TWindow;_para3 : PPChar) : TStatus; cdecl;external ;
+function XFillArc(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint) : longint; cdecl;external ;
+function XFillArcs(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXArc;_para5 : longint) : longint; cdecl;external ;
+function XFillPolygon(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXPoint;_para5 : longint;_para6 : longint;_para7 : longint) : longint; cdecl;external ;
+function XFillRectangle(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal) : longint; cdecl;external ;
+function XFillRectangles(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXRectangle;_para5 : longint) : longint; cdecl;external ;
+function XFlush(_para1 : PDisplay) : longint; cdecl;external ;
+function XForceScreenSaver(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XFree(_para1 : pointer) : longint; cdecl;external ;
+function XFreeColormap(_para1 : PDisplay;_para2 : TColormap) : longint; cdecl;external ;
+function XFreeColors(_para1 : PDisplay;_para2 : TColormap;_para3 : PCardinal;_para4 : longint;_para5 : cardinal) : longint; cdecl;external ;
+function XFreeCursor(_para1 : PDisplay;_para2 : TCursor) : longint; cdecl;external ;
+function XFreeExtensionList(_para1 : PPChar) : longint; cdecl;external ;
+function XFreeFont(_para1 : PDisplay;_para2 : PXFontStruct) : longint; cdecl;external ;
+function XFreeFontInfo(_para1 : PPChar;_para2 : PXFontStruct;_para3 : longint) : longint; cdecl;external ;
+function XFreeFontNames(_para1 : PPChar) : longint; cdecl;external ;
+function XFreeFontPath(_para1 : PPChar) : longint; cdecl;external ;
+function XFreeGC(_para1 : PDisplay;_para2 : TGC) : longint; cdecl;external ;
+function XFreeModifiermap(_para1 : PXModifierKeymap) : longint; cdecl;external ;
+function XFreePixmap(_para1 : PDisplay;_para2 : TPixmap) : longint; cdecl;external ;
+function XGeometry(_para1 : PDisplay;_para2 : longint;_para3 : pchar;_para4 : pchar;_para5 : cardinal;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint;_para10 : Plongint;_para11 : Plongint;_para12 : Plongint;_para13 : Plongint) : longint; cdecl;external ;
+function XGetErrorDatabaseText(_para1 : PDisplay;_para2 : pchar;_para3 : pchar;_para4 : pchar;_para5 : pchar;_para6 : longint) : longint; cdecl;external ;
+function XGetErrorText(_para1 : PDisplay;_para2 : longint;_para3 : pchar;_para4 : longint) : longint; cdecl;external ;
+function XGetFontProperty(_para1 : PXFontStruct;_para2 : TAtom;_para3 : PCardinal) : TBool; cdecl;external ;
+function XGetGCValues(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : PXGCValues) : TStatus; cdecl;external ;
+function XGetGeometry(_para1 : PDisplay;_para2 : TDrawable;_para3 : PWindow;_para4 : Plongint;_para5 : Plongint;_para6 : PCardinal;_para7 : PCardinal;_para8 : PCardinal;_para9 : PCardinal) : TStatus; cdecl;external ;
+function XGetIconName(_para1 : PDisplay;_para2 : TWindow;_para3 : PPChar) : TStatus; cdecl;external ;
+function XGetInputFocus(_para1 : PDisplay;_para2 : PWindow;_para3 : Plongint) : longint; cdecl;external ;
+function XGetKeyboardControl(_para1 : PDisplay;_para2 : PXKeyboardState) : longint; cdecl;external ;
+function XGetPointerControl(_para1 : PDisplay;_para2 : Plongint;_para3 : Plongint;_para4 : Plongint) : longint; cdecl;external ;
+function XGetPointerMapping(_para1 : PDisplay;_para2 : pchar;_para3 : longint) : longint; cdecl;external ;
+function XGetScreenSaver(_para1 : PDisplay;_para2 : Plongint;_para3 : Plongint;_para4 : Plongint;_para5 : Plongint) : longint; cdecl;external ;
+function XGetTransientForHint(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow) : TStatus; cdecl;external ;
+function XGetWindowProperty(_para1 : PDisplay;_para2 : TWindow;_para3 : TAtom;_para4 : longint;_para5 : longint;_para6 : TBool;_para7 : TAtom;_para8 : PAtom;_para9 : Plongint;_para10 : PCardinal;_para11 : PCardinal;_para12 : PPChar) : longint; cdecl;external ;
+function XGetWindowAttributes(_para1 : PDisplay;_para2 : TWindow;_para3 : PXWindowAttributes) : TStatus; cdecl;external ;
+function XGrabButton(_para1 : PDisplay;_para2 : cardinal;_para3 : cardinal;_para4 : TWindow;_para5 : TBool;_para6 : cardinal;_para7 : longint;_para8 : longint;_para9 : TWindow;_para10 : TCursor) : longint; cdecl;external ;
+function XGrabKey(_para1 : PDisplay;_para2 : longint;_para3 : cardinal;_para4 : TWindow;_para5 : TBool;_para6 : longint;_para7 : longint) : longint; cdecl;external ;
+function XGrabKeyboard(_para1 : PDisplay;_para2 : TWindow;_para3 : TBool;_para4 : longint;_para5 : longint;_para6 : TTime) : longint; cdecl;external ;
+function XGrabPointer(_para1 : PDisplay;_para2 : TWindow;_para3 : TBool;_para4 : cardinal;_para5 : longint;_para6 : longint;_para7 : TWindow;_para8 : TCursor;_para9 : TTime) : longint; cdecl;external ;
+function XGrabServer(_para1 : PDisplay) : longint; cdecl;external ;
+function XHeightMMOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XHeightOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+{
+function XIfEvent(_para1 : PDisplay;_para2 : PXEvent;_para3 : function(_para1 : PDisplay;_para2 : PXEvent;_para3 : XPointer) : TBool;_para4 : XPointer) : longint; cdecl;external ;
+}
+function XImageByteOrder(_para1 : PDisplay) : longint; cdecl;external ;
+function XInstallColormap(_para1 : PDisplay;_para2 : TColormap) : longint; cdecl;external ;
+function XKeysymToKeycode(_para1 : PDisplay;_para2 : TKeySym) : TKeyCode; cdecl;external ;
+function XKillClient(_para1 : PDisplay;_para2 : TXID) : longint; cdecl;external ;
+{
+function XLastKnownRequestProcessed(_para1 : PDisplay) : cardinal; cdecl;external ;
+}
+function XLookupColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : PXColor;_para5 : PXColor) : TStatus; cdecl;external ;
+function XLowerWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XMapRaised(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XMapSubwindows(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XMapWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XMaskEvent(_para1 : PDisplay;_para2 : longint;_para3 : PXEvent) : longint; cdecl;external ;
+function XMaxCmapsOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XMinCmapsOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XMoveResizeWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint;_para5 : cardinal;_para6 : cardinal) : longint; cdecl;external ;
+function XMoveWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : longint) : longint; cdecl;external ;
+function XNextEvent(_para1 : PDisplay;_para2 : PXEvent) : longint; cdecl;external ;
+function XNoOp(_para1 : PDisplay) : longint; cdecl;external ;
+function XParseColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : PXColor) : TStatus; cdecl;external ;
+function XParseGeometry(_para1 : pchar;_para2 : Plongint;_para3 : Plongint;_para4 : PCardinal;_para5 : PCardinal) : longint; cdecl;external ;
+function XPeekEvent(_para1 : PDisplay;_para2 : PXEvent) : longint; cdecl;external ;
+{
+function XPeekIfEvent(_para1 : PDisplay;_para2 : PXEvent;_para3 : function(_para1 : PDisplay;_para2 : PXEvent;_para3 : XPointer) : TBool;_para4 : XPointer) : longint; cdecl;external ;
+}
+function XPending(_para1 : PDisplay) : longint; cdecl;external ;
+function XPlanesOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XProtocolRevision(_para1 : PDisplay) : longint; cdecl;external ;
+function XProtocolVersion(_para1 : PDisplay) : longint; cdecl;external ;
+function XPutBackEvent(_para1 : PDisplay;_para2 : PXEvent) : longint; cdecl;external ;
+function XPutImage(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : PXImage;_para5 : longint;_para6 : longint;_para7 : longint;_para8 : longint;_para9 : cardinal;_para10 : cardinal) : longint; cdecl;external ;
+function XQLength(_para1 : PDisplay) : longint; cdecl;external ;
+function XQueryBestCursor(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : PCardinal;_para6 : PCardinal) : TStatus; cdecl;external ;
+function XQueryBestSize(_para1 : PDisplay;_para2 : longint;_para3 : TDrawable;_para4 : cardinal;_para5 : cardinal;_para6 : PCardinal;_para7 : PCardinal) : TStatus; cdecl;external ;
+function XQueryBestStipple(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : PCardinal;_para6 : PCardinal) : TStatus; cdecl;external ;
+function XQueryBestTile(_para1 : PDisplay;_para2 : TDrawable;_para3 : cardinal;_para4 : cardinal;_para5 : PCardinal;_para6 : PCardinal) : TStatus; cdecl;external ;
+function XQueryColor(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor) : longint; cdecl;external ;
+function XQueryColors(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor;_para4 : longint) : longint; cdecl;external ;
+function XQueryExtension(_para1 : PDisplay;_para2 : pchar;_para3 : Plongint;_para4 : Plongint;_para5 : Plongint) : TBool; cdecl;external ;
+{
+function XQueryKeymap(_para1 : PDisplay;_para2 : arraycdecl;external ;
+}
+function XQueryPointer(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow;_para4 : PWindow;_para5 : Plongint;_para6 : Plongint;_para7 : Plongint;_para8 : Plongint;_para9 : PCardinal) : TBool; cdecl;external ;
+function XQueryTextExtents(_para1 : PDisplay;_para2 : TXID;_para3 : pchar;_para4 : longint;_para5 : Plongint;_para6 : Plongint;_para7 : Plongint;_para8 : PXCharStruct) : longint; cdecl;external ;
+function XQueryTextExtents16(_para1 : PDisplay;_para2 : TXID;_para3 : PXChar2b;_para4 : longint;_para5 : Plongint;_para6 : Plongint;_para7 : Plongint;_para8 : PXCharStruct) : longint; cdecl;external ;
+function XQueryTree(_para1 : PDisplay;_para2 : TWindow;_para3 : PWindow;_para4 : PWindow;_para5 : PPWindow;_para6 : PCardinal) : TStatus; cdecl;external ;
+function XRaiseWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XReadBitmapFile(_para1 : PDisplay;_para2 : TDrawable;_para3 : pchar;_para4 : PCardinal;_para5 : PCardinal;_para6 : PPixmap;_para7 : Plongint;_para8 : Plongint) : longint; cdecl;external ;
+function XReadBitmapFileData(_para1 : pchar;_para2 : PCardinal;_para3 : PCardinal;_para4 : PPChar;_para5 : Plongint;_para6 : Plongint) : longint; cdecl;external ;
+function XRebindKeysym(_para1 : PDisplay;_para2 : TKeySym;_para3 : PKeySym;_para4 : longint;_para5 : pchar;_para6 : longint) : longint; cdecl;external ;
+function XRecolorCursor(_para1 : PDisplay;_para2 : TCursor;_para3 : PXColor;_para4 : PXColor) : longint; cdecl;external ;
+function XRefreshKeyboardMapping(_para1 : PXMappingEvent) : longint; cdecl;external ;
+function XRemoveFromSaveSet(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XRemoveHost(_para1 : PDisplay;_para2 : PXHostAddress) : longint; cdecl;external ;
+function XRemoveHosts(_para1 : PDisplay;_para2 : PXHostAddress;_para3 : longint) : longint; cdecl;external ;
+function XReparentWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow;_para4 : longint;_para5 : longint) : longint; cdecl;external ;
+function XResetScreenSaver(_para1 : PDisplay) : longint; cdecl;external ;
+function XResizeWindow(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal;_para4 : cardinal) : longint; cdecl;external ;
+function XRestackWindows(_para1 : PDisplay;_para2 : PWindow;_para3 : longint) : longint; cdecl;external ;
+function XRotateBuffers(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XRotateWindowProperties(_para1 : PDisplay;_para2 : TWindow;_para3 : PAtom;_para4 : longint;_para5 : longint) : longint; cdecl;external ;
+function XScreenCount(_para1 : PDisplay) : longint; cdecl;external ;
+function XSelectInput(_para1 : PDisplay;_para2 : TWindow;_para3 : longint) : longint; cdecl;external ;
+function XSendEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : TBool;_para4 : longint;_para5 : PXEvent) : TStatus; cdecl;external ;
+function XSetAccessControl(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XSetArcMode(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;external ;
+function XSetBackground(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal) : longint; cdecl;external ;
+function XSetClipMask(_para1 : PDisplay;_para2 : TGC;_para3 : TPixmap) : longint; cdecl;external ;
+function XSetClipOrigin(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : longint) : longint; cdecl;external ;
+function XSetClipRectangles(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : longint;_para5 : PXRectangle;_para6 : longint;_para7 : longint) : longint; cdecl;external ;
+function XSetCloseDownMode(_para1 : PDisplay;_para2 : longint) : longint; cdecl;external ;
+function XSetCommand(_para1 : PDisplay;_para2 : TWindow;_para3 : PPChar;_para4 : longint) : longint; cdecl;external ;
+function XSetDashes(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : pchar;_para5 : longint) : longint; cdecl;external ;
+function XSetFillRule(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;external ;
+function XSetFillStyle(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;external ;
+function XSetFont(_para1 : PDisplay;_para2 : TGC;_para3 : TFont) : longint; cdecl;external ;
+function XSetFontPath(_para1 : PDisplay;_para2 : PPChar;_para3 : longint) : longint; cdecl;external ;
+function XSetForeground(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal) : longint; cdecl;external ;
+function XSetFunction(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;external ;
+function XSetGraphicsExposures(_para1 : PDisplay;_para2 : TGC;_para3 : TBool) : longint; cdecl;external ;
+function XSetIconName(_para1 : PDisplay;_para2 : TWindow;_para3 : pchar) : longint; cdecl;external ;
+function XSetInputFocus(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : TTime) : longint; cdecl;external ;
+function XSetLineAttributes(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : longint;_para5 : longint;_para6 : longint) : longint; cdecl;external ;
+function XSetModifierMapping(_para1 : PDisplay;_para2 : PXModifierKeymap) : longint; cdecl;external ;
+function XSetPlaneMask(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal) : longint; cdecl;external ;
+function XSetPointerMapping(_para1 : PDisplay;_para2 : pchar;_para3 : longint) : longint; cdecl;external ;
+function XSetScreenSaver(_para1 : PDisplay;_para2 : longint;_para3 : longint;_para4 : longint;_para5 : longint) : longint; cdecl;external ;
+function XSetSelectionOwner(_para1 : PDisplay;_para2 : TAtom;_para3 : TWindow;_para4 : TTime) : longint; cdecl;external ;
+function XSetState(_para1 : PDisplay;_para2 : TGC;_para3 : cardinal;_para4 : cardinal;_para5 : longint;_para6 : cardinal) : longint; cdecl;external ;
+function XSetStipple(_para1 : PDisplay;_para2 : TGC;_para3 : TPixmap) : longint; cdecl;external ;
+function XSetSubwindowMode(_para1 : PDisplay;_para2 : TGC;_para3 : longint) : longint; cdecl;external ;
+function XSetTSOrigin(_para1 : PDisplay;_para2 : TGC;_para3 : longint;_para4 : longint) : longint; cdecl;external ;
+function XSetTile(_para1 : PDisplay;_para2 : TGC;_para3 : TPixmap) : longint; cdecl;external ;
+function XSetWindowBackground(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal) : longint; cdecl;external ;
+function XSetWindowBackgroundPixmap(_para1 : PDisplay;_para2 : TWindow;_para3 : TPixmap) : longint; cdecl;external ;
+function XSetWindowBorder(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal) : longint; cdecl;external ;
+function XSetWindowBorderPixmap(_para1 : PDisplay;_para2 : TWindow;_para3 : TPixmap) : longint; cdecl;external ;
+function XSetWindowBorderWidth(_para1 : PDisplay;_para2 : TWindow;_para3 : cardinal) : longint; cdecl;external ;
+function XSetWindowColormap(_para1 : PDisplay;_para2 : TWindow;_para3 : TColormap) : longint; cdecl;external ;
+function XStoreBuffer(_para1 : PDisplay;_para2 : pchar;_para3 : longint;_para4 : longint) : longint; cdecl;external ;
+function XStoreBytes(_para1 : PDisplay;_para2 : pchar;_para3 : longint) : longint; cdecl;external ;
+function XStoreColor(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor) : longint; cdecl;external ;
+function XStoreColors(_para1 : PDisplay;_para2 : TColormap;_para3 : PXColor;_para4 : longint) : longint; cdecl;external ;
+function XStoreName(_para1 : PDisplay;_para2 : TWindow;_para3 : pchar) : longint; cdecl;external ;
+function XStoreNamedColor(_para1 : PDisplay;_para2 : TColormap;_para3 : pchar;_para4 : cardinal;_para5 : longint) : longint; cdecl;external ;
+function XSync(_para1 : PDisplay;_para2 : TBool) : longint; cdecl;external ;
+function XTextExtents(_para1 : PXFontStruct;_para2 : pchar;_para3 : longint;_para4 : Plongint;_para5 : Plongint;_para6 : Plongint;_para7 : PXCharStruct) : longint; cdecl;external ;
+function XTextExtents16(_para1 : PXFontStruct;_para2 : PXChar2b;_para3 : longint;_para4 : Plongint;_para5 : Plongint;_para6 : Plongint;_para7 : PXCharStruct) : longint; cdecl;external ;
+function XTextWidth(_para1 : PXFontStruct;_para2 : pchar;_para3 : longint) : longint; cdecl;external ;
+function XTextWidth16(_para1 : PXFontStruct;_para2 : PXChar2b;_para3 : longint) : longint; cdecl;external ;
+function XTranslateCoordinates(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow;_para4 : longint;_para5 : longint;_para6 : Plongint;_para7 : Plongint;_para8 : PWindow) : TBool; cdecl;external ;
+function XUndefineCursor(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XUngrabButton(_para1 : PDisplay;_para2 : cardinal;_para3 : cardinal;_para4 : TWindow) : longint; cdecl;external ;
+function XUngrabKey(_para1 : PDisplay;_para2 : longint;_para3 : cardinal;_para4 : TWindow) : longint; cdecl;external ;
+function XUngrabKeyboard(_para1 : PDisplay;_para2 : TTime) : longint; cdecl;external ;
+function XUngrabPointer(_para1 : PDisplay;_para2 : TTime) : longint; cdecl;external ;
+function XUngrabServer(_para1 : PDisplay) : longint; cdecl;external ;
+function XUninstallColormap(_para1 : PDisplay;_para2 : TColormap) : longint; cdecl;external ;
+function XUnloadFont(_para1 : PDisplay;_para2 : TFont) : longint; cdecl;external ;
+function XUnmapSubwindows(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XUnmapWindow(_para1 : PDisplay;_para2 : TWindow) : longint; cdecl;external ;
+function XVendorRelease(_para1 : PDisplay) : longint; cdecl;external ;
+function XWarpPointer(_para1 : PDisplay;_para2 : TWindow;_para3 : TWindow;_para4 : longint;_para5 : longint;_para6 : cardinal;_para7 : cardinal;_para8 : longint;_para9 : longint) : longint; cdecl;external ;
+function XWidthMMOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XWidthOfScreen(_para1 : PScreen) : longint; cdecl;external ;
+function XWindowEvent(_para1 : PDisplay;_para2 : TWindow;_para3 : longint;_para4 : PXEvent) : longint; cdecl;external ;
+function XWriteBitmapFile(_para1 : PDisplay;_para2 : pchar;_para3 : TPixmap;_para4 : cardinal;_para5 : cardinal;_para6 : longint;_para7 : longint) : longint; cdecl;external ;
+function XSupportsLocale : TBool; cdecl;external ;
+function XSetLocaleModifiers(_para1 : pchar) : pchar; cdecl;external ;
+{
+function XOpenOM(_para1 : PDisplay;_para2 : ^*;_para3 : pchar;_para4 : pchar) : TXOM; cdecl;external ;
+}
+function XCloseOM(_para1 : TXOM) : TStatus; cdecl;external ;
+function XDisplayOfOM(_para1 : TXOM) : PDisplay; cdecl;external ;
+function XLocaleOfOM(_para1 : TXOM) : pchar; cdecl;external ;
+procedure XDestroyOC(_para1 : TXOC); cdecl;external ;
+function TXOMOfOC(_para1 : TXOC) : TXOM; cdecl;external ;
+function XCreateFontSet(_para1 : PDisplay;_para2 : pchar;_para3 : PPPChar;_para4 : Plongint;_para5 : PPChar) : TXFontSet; cdecl;external ;
+procedure XFreeFontSet(_para1 : PDisplay;_para2 : TXFontSet); cdecl;external ;
+function XFontsOfFontSet(_para1 : TXFontSet;_para2 : PPPXFontStruct;_para3 : PPPChar) : longint; cdecl;external ;
+function XBaseFontNameListOfFontSet(_para1 : TXFontSet) : pchar; cdecl;external ;
+function XLocaleOfFontSet(_para1 : TXFontSet) : pchar; cdecl;external ;
+function XContextDependentDrawing(_para1 : TXFontSet) : TBool; cdecl;external ;
+function XDirectionalDependentDrawing(_para1 : TXFontSet) : TBool; cdecl;external ;
+function XContextualDrawing(_para1 : TXFontSet) : TBool; cdecl;external ;
+function XExtentsOfFontSet(_para1 : TXFontSet) : PXFontSetExtents; cdecl;external ;
+function XmbTextEscapement(_para1 : TXFontSet;_para2 : pchar;_para3 : longint) : longint; cdecl;external ;
+function XwcTextEscapement(_para1 : TXFontSet;_para2 : Pwchar_t;_para3 : longint) : longint; cdecl;external ;
+function XmbTextExtents(_para1 : TXFontSet;_para2 : pchar;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle) : longint; cdecl;external ;
+function XwcTextExtents(_para1 : TXFontSet;_para2 : Pwchar_t;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle) : longint; cdecl;external ;
+function XmbTextPerCharExtents(_para1 : TXFontSet;_para2 : pchar;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle;_para6 : longint;_para7 : Plongint;_para8 : PXRectangle;_para9 : PXRectangle) : TStatus; cdecl;external ;
+function XwcTextPerCharExtents(_para1 : TXFontSet;_para2 : Pwchar_t;_para3 : longint;_para4 : PXRectangle;_para5 : PXRectangle;_para6 : longint;_para7 : Plongint;_para8 : PXRectangle;_para9 : PXRectangle) : TStatus; cdecl;external ;
+procedure XmbDrawText(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXmbTextItem;_para7 : longint); cdecl;external ;
+procedure XwcDrawText(_para1 : PDisplay;_para2 : TDrawable;_para3 : TGC;_para4 : longint;_para5 : longint;_para6 : PXwcTextItem;_para7 : longint); cdecl;external ;
+procedure XmbDrawString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : pchar;_para8 : longint); cdecl;external ;
+procedure XwcDrawString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : Pwchar_t;_para8 : longint); cdecl;external ;
+procedure XmbDrawImageString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : pchar;_para8 : longint); cdecl;external ;
+procedure XwcDrawImageString(_para1 : PDisplay;_para2 : TDrawable;_para3 : TXFontSet;_para4 : TGC;_para5 : longint;_para6 : longint;_para7 : Pwchar_t;_para8 : longint); cdecl;external ;
+{
+function XOpenIM(_para1 : PDisplay;_para2 : P*;_para3 : pchar;_para4 : pchar) : TXIM; cdecl;external ;
+}
+function XCloseIM(_para1 : TXIM) : TStatus; cdecl;external ;
+function XDisplayOfIM(_para1 : TXIM) : PDisplay; cdecl;external ;
+function XLocaleOfIM(_para1 : TXIM) : pchar; cdecl;external ;
+procedure XDestroyIC(_para1 : TXIC); cdecl;external ;
+procedure XSetICFocus(_para1 : TXIC); cdecl;external ;
+procedure XUnsetICFocus(_para1 : TXIC); cdecl;external ;
+function XwcResetIC(_para1 : TXIC) : Pwchar_t; cdecl;external ;
+function XmbResetIC(_para1 : TXIC) : pchar; cdecl;external ;
+function TXIMOfIC(_para1 : TXIC) : TXIM; cdecl;external ;
+function XFilterEvent(_para1 : PXEvent;_para2 : TWindow) : TBool; cdecl;external ;
+function XmbLookupString(_para1 : TXIC;_para2 : PXKeyPressedEvent;_para3 : pchar;_para4 : longint;_para5 : PKeySym;_para6 : PStatus) : longint; cdecl;external ;
+function XwcLookupString(_para1 : TXIC;_para2 : PXKeyPressedEvent;_para3 : Pwchar_t;_para4 : longint;_para5 : PKeySym;_para6 : PStatus) : longint; cdecl;external ;
+{
+function XRegisterIMInstantiateCallback(_para1 : PDisplay;_para2 : P*;_para3 : pchar;_para4 : pchar;_para5 : TXIMProc;_para6 : PXPointer) : TBool; cdecl;external ;
+function XUnregisterIMInstantiateCallback(_para1 : PDisplay;_para2 : P*;_para3 : pchar;_para4 : pchar;_para5 : TXIMProc;_para6 : PXPointer) : TBool; cdecl;external ;
+}
+function XInternalConnectionNumbers(_para1 : PDisplay;_para2 : PPlongint;_para3 : Plongint) : TStatus; cdecl;external ;
+procedure XProcessInternalConnection(_para1 : PDisplay;_para2 : longint); cdecl;external ;
+function XAddConnectionWatch(_para1 : PDisplay;_para2 : TXConnectionWatchProc;_para3 : TXPointer) : TStatus; cdecl;external ;
+procedure XRemoveConnectionWatch(_para1 : PDisplay;_para2 : TXConnectionWatchProc;_para3 : TXPointer); cdecl;external ;
+
+
+begin
+end.

+ 457 - 0
packages/forms/xresource.pp

@@ -0,0 +1,457 @@
+unit xresource;
+
+interface
+
+uses xlib;
+
+
+{***************************************************************
+ *
+ * Quark Management
+ *
+ ***************************************************************}
+
+type 
+ TXrmQuark     = Integer;
+ PXrmQuark     = ^TXrmQuark;
+ TXrmQuarkList = PXrmQuark;
+  
+  
+ Const NULLQUARK = 0 ;
+
+type  TXrmString = Pchar;
+
+const NULLSTRING = 0;
+
+{ find quark for string, create new quark if none already exists }
+Function XrmStringToQuark( p1 : pchar ) : TXrmQuark;cdecl;
+
+Function  XrmPermStringToQuark( p1 : pchar ) : TXrmQuark;cdecl;
+
+{ find string for quark }
+Function XrmQuarkToString( p1 : TXrmQuark) : TXrmString;cdecl;
+
+
+Function  XrmUniqueQuark : TXrmQuark;cdecl;
+
+{
+#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
+}
+
+{***************************************************************
+ *
+ * Conversion of Strings to Lists
+ *
+ ***************************************************************}
+
+type
+ TXrmBinding = integer;
+ TXrmBindingList = ^Integer;
+  Const XrmBindTightly = 0;
+        XrmBindLoosely = 1;
+
+procedure XrmStringToQuarkList(
+    p1 : pchar	{ string };
+    p2 : TXrmQuarkList	{ quarks_return }
+);cdecl;
+
+procedure XrmStringToBindingQuarkList(
+    p1 : pchar	{ string };
+    p2 : TXrmBindingList	{ bindings_return };
+    p3 : TXrmQuarkList	{ quarks_return }
+);cdecl;
+
+{***************************************************************
+ *
+ * Name and Class lists.
+ *
+ ***************************************************************}
+
+type TXrmName = TXrmQuark;
+    TXrmNameList = TXrmQuarkList ;
+ {
+#define XrmNameToString(name)		XrmQuarkToString(name)
+#define XrmStringToName(string)		XrmStringToQuark(string)
+#define XrmStringToNameList(str, name)	XrmStringToQuarkList(str, name)
+}
+ TXrmClass = TXrmQuark;
+ TXrmClassList = TXrmQuarkList;
+{
+#define XrmClassToString(c_class)	XrmQuarkToString(c_class)
+#define XrmStringToClass(c_class)	XrmStringToQuark(c_class)
+#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
+}
+
+
+{***************************************************************
+ *
+ * Resource Representation Types and Values
+ *
+ ***************************************************************}
+
+type  TXrmRepresentation = TXrmQuark    ;
+      PXrmRepresentation = ^TXrmRepresentation;
+{
+#define XrmStringToRepresentation(string)   XrmStringToQuark(string)
+#define	XrmRepresentationToString(type)   XrmQuarkToString(type)
+}
+
+type TXrmValue = record
+    size : word;
+    theaddr : TXPointer;
+end;
+  PXrmValue = ^TXrmValue;
+  TXrmValuePtr = PXrmValue;
+
+
+{***************************************************************
+ *
+ * Resource Manager Functions
+ *
+ ***************************************************************}
+{
+typedef struct _XrmHashBucketRec *XrmHashBucket;
+typedef XrmHashBucket *XrmHashTable;
+typedef XrmHashTable XrmSearchList[];
+typedef struct _XrmHashBucketRec *XrmDatabase;
+}
+Type TXrmHashBucket = pointer;
+     TXrmHashTable = ^TXrmHashBucket;
+     TXrmSearchList = ^TXrmHashTable;
+     TXrmDatabase = pointer;
+     PXrmDatabase = ^TXrmDatabase;
+     
+procedure XrmDestroyDatabase(
+    p1 : TXrmDatabase		{ database }    
+);cdecl;
+
+Procedure XrmQPutResource(
+    p1 :  PXrmDatabase	{ database };
+    p2 : TXrmBindingList	{ bindings };
+    p3 : TXrmQuarkList	{ quarks };
+    p4 : TXrmRepresentation	{ type };
+    p5 : PXrmValue		{ value }
+);cdecl;
+
+Procedure  XrmPutResource(
+    p1 : PXrmDatabase	{ database };
+    p2 : pchar	{ specifier };
+    p3 : pchar	{ type };
+    p4 : PXrmValue		{ value }
+);cdecl;
+
+Procedure  XrmQPutStringResource(
+    p1 : PXrmDatabase	{ database };
+    p2 : TXrmBindingList      { bindings };
+    p3 : TXrmQuarkList	{ quarks };
+    p4 : Pchar	{ value }
+);cdecl;
+
+Procedure XrmPutStringResource(
+    P1 : PXrmDatabase	{ database };
+    p2,p3 : pchar
+);cdecl;
+
+Procedure XrmPutLineResource(
+    p1 : PXrmDatabase	{ database };
+    p2 : pchar	{ line }
+);cdecl;
+
+Function XrmQGetResource(
+    p1 : PXrmDatabase		{ database };
+    p2 : TXrmNameList		{ quark_name };
+    p3 : TXrmClassList	{ quark_class };
+    p4 : PXrmRepresentation	{ quark_type_return };
+    p5 : PXrmValue		{ value_return }
+) : Integer;cdecl;
+
+Function XrmGetResource(
+    p1 : TXrmDatabase		{ database };
+    p2 : pchar	{ str_name };
+    p3 : pchar	{ str_class };
+    p4 : ppchar		{ str_type_return };
+    p5 : PXrmValue		{ value_return }
+) : Tbool;cdecl;
+
+Function XrmQGetSearchList(
+    p1 : TXrmDatabase		{ database };
+    p2 : TXrmNameList		{ names };
+    p3 : TXrmClassList	{ classes };
+    p4 : TXrmSearchList	{ list_return };
+    p5 : integer			{ list_length }
+) : Tbool;cdecl;
+
+Function XrmQGetSearchResource(
+    P1 : TXrmSearchList	{ list };
+    p2 : TXrmName		{ name };
+    p3 : TXrmClass		{ class };
+    p4 : PXrmRepresentation	{ type_return };
+    p5 : PXrmValue		{ value_return }
+) : TBool;cdecl;
+
+{***************************************************************
+ *
+ * Resource Database Management
+ *
+ ***************************************************************}
+
+procedure XrmSetDatabase(
+    p1 : PDisplay		{ display };
+    p2 : TXrmDatabase		{ database }
+);cdecl;
+
+Function  XrmGetDatabase(
+    p1 : PDisplay		{ display }
+) : TXrmDatabase;cdecl;
+
+Function XrmGetFileDatabase(
+    p1 : pchar	{ filename }
+) : TXrmDatabase ;cdecl;
+
+Function XrmCombineFileDatabase(
+    p1 : pchar 	{ filename };
+    p2 : PXrmDatabase	{ target };
+    p3 : TBool		{ override }
+) : TStatus ;cdecl;
+
+function XrmGetStringDatabase(
+    p1 : pchar	{ data }  {  null terminated string }
+) : TXrmDatabase ;cdecl;
+
+Procedure XrmPutFileDatabase(
+    p1 : TXrmDatabase		{ database };
+    p2: pchar	{ filename }
+);cdecl;
+
+Procedure XrmMergeDatabases(
+    p1 : TXrmDatabase		{ source_db };
+    p2 : PXrmDatabase	{ target_db }
+);cdecl;
+
+procedure XrmCombineDatabase(
+    p1 : TXrmDatabase		{ source_db };
+    p2 : PXrmDatabase	{ target_db };
+    p3 : TBool		{ override }
+);cdecl;
+
+const
+ XrmEnumAllLevels = 0;
+ XrmEnumOneLevel  = 1;
+{
+Function XrmEnumerateDatabase(
+    XrmDatabase		{ db };
+    XrmNameList		{ name_prefix };
+    XrmClassList	{ class_prefix };
+    int			{ mode };
+    Bool (*)(#if NeedNestedPrototypes
+	     XrmDatabase*	{ db };
+	     XrmBindingList	{ bindings };
+	     XrmQuarkList	{ quarks };
+	     XrmRepresentation*	{ type };
+	     XrmValue*		{ value };
+	     XPointer		{ closure }
+
+	     )		{ proc };
+    XPointer		{ closure }
+) : TBool;
+}
+
+Function XrmLocaleOfDatabase(
+    P1 : TXrmDatabase 	{ database }
+) : Pchar;cdecl;
+
+
+{***************************************************************
+ *
+ * Command line option mapping to resource entries
+ *
+ ***************************************************************}
+
+Const
+    XrmoptionNoArg = 0;	{ Value is specified in OptionDescRec.value	    }
+    XrmoptionIsArg = 1;     { Value is the option string itself		    }
+    XrmoptionStickyArg = 2; { Value is characters immediately following option }
+    XrmoptionSepArg = 3;    { Value is next argument in argv		    }
+    XrmoptionResArg = 4;	{ Resource and value in next argument in argv      }
+    XrmoptionSkipArg = 5;   { Ignore this option and the next argument in argv }
+    XrmoptionSkipLine = 6;  { Ignore this option and the rest of argv	    }
+    XrmoptionSkipNArgs = 7;	{ Ignore this option and the next 
+			   OptionDescRes.value arguments in argv }
+Type TXrmOptionKind = Integer;
+
+TXrmOptionDescRec = record
+    option : pchar;	    { Option abbreviation in argv	    }
+    specifier : pchar;     { Resource specifier		    }
+    argKind : TXrmOptionKind;	    { Which style of option it is	    }
+    value : TXpointer;	    { Value to provide if XrmoptionNoArg   }
+end;
+PXrmOptionDescRec= ^TXrmOptionDescRec; 
+TXrmOptionDescList = PXrmOptionDescRec;
+
+
+Procedure XrmParseCommand(
+    p1 : TXrmDatabase	{ database };
+    p2 : TXrmOptionDescList	{ table };
+    p3 : integer			{ table_count };
+    p4 : pchar	{ name };
+    p5 : Pointer		{ argc_in_out };
+    p6 : ppchar		{ argv_in_out }		     
+);cdecl;
+
+Implementation
+
+Function XrmStringToQuark( p1 : pchar ) : TXrmQuark; cdecl; external;
+Function XrmPermStringToQuark( p1 : pchar ) : TXrmQuark; cdecl; external;
+Function XrmQuarkToString( p1 : TXrmQuark) : TXrmString; cdecl; external;
+
+Function  XrmUniqueQuark : TXrmQuark; cdecl; external;
+procedure XrmStringToQuarkList(
+    p1 : pchar	{ string };
+    p2 : TXrmQuarkList	{ quarks_return }
+); cdecl; external;
+
+procedure XrmStringToBindingQuarkList(
+    p1 : pchar	{ string };
+    p2 : TXrmBindingList	{ bindings_return };
+    p3 : TXrmQuarkList	{ quarks_return }
+); cdecl; external;
+procedure XrmDestroyDatabase(
+    p1 : TXrmDatabase		{ database }    
+); cdecl; external;
+
+Procedure XrmQPutResource(
+    p1 :  PXrmDatabase	{ database };
+    p2 : TXrmBindingList	{ bindings };
+    p3 : TXrmQuarkList	{ quarks };
+    p4 : TXrmRepresentation	{ type };
+    p5 : PXrmValue		{ value }
+); cdecl; external;
+
+Procedure  XrmPutResource(
+    p1 : PXrmDatabase	{ database };
+    p2 : pchar	{ specifier };
+    p3 : pchar	{ type };
+    p4 : PXrmValue		{ value }
+); cdecl; external;
+
+Procedure  XrmQPutStringResource(
+    p1 : PXrmDatabase	{ database };
+    p2 : TXrmBindingList      { bindings };
+    p3 : TXrmQuarkList	{ quarks };
+    p4 : Pchar	{ value }
+); cdecl; external;
+
+procedure XrmPutStringResource(
+    P1 : PXrmDatabase	{ database };
+    p2,p3 : pchar
+); cdecl; external;
+
+Procedure XrmPutLineResource(
+    p1 : PXrmDatabase	{ database };
+    p2 : pchar	{ line }
+); cdecl; external;
+
+Function XrmQGetResource(
+    p1 : PXrmDatabase		{ database };
+    p2 : TXrmNameList		{ quark_name };
+    p3 : TXrmClassList	{ quark_class };
+    p4 : PXrmRepresentation	{ quark_type_return };
+    p5 : PXrmValue		{ value_return }
+) : Integer;  cdecl; external;
+
+Function XrmGetResource(
+    p1 : TXrmDatabase		{ database };
+    p2 : pchar	{ str_name };
+    p3 : pchar	{ str_class };
+    p4 : ppchar		{ str_type_return };
+    p5 : PXrmValue		{ value_return }
+) : Tbool; cdecl; external;
+
+Function XrmQGetSearchList(
+    p1 : TXrmDatabase		{ database };
+    p2 : TXrmNameList		{ names };
+    p3 : TXrmClassList	{ classes };
+    p4 : TXrmSearchList	{ list_return };
+    p5 : integer			{ list_length }
+) : Tbool; cdecl; external;
+
+Function XrmQGetSearchResource(
+    P1 : TXrmSearchList	{ list };
+    p2 : TXrmName		{ name };
+    p3 : TXrmClass		{ class };
+    p4 : PXrmRepresentation	{ type_return };
+    p5 : PXrmValue		{ value_return }
+) : TBool; cdecl; external;
+
+procedure XrmSetDatabase(
+    p1 : PDisplay		{ display };
+    p2 : TXrmDatabase		{ database }
+);  cdecl; external;
+
+Function  XrmGetDatabase(
+    p1 : PDisplay		{ display }
+) : TXrmDatabase; cdecl; external;
+
+Function XrmGetFileDatabase(
+    p1 : pchar	{ filename }
+) : TXrmDatabase ;  cdecl; external;
+
+Function XrmCombineFileDatabase(
+    p1 : pchar 	{ filename };
+    p2 : PXrmDatabase	{ target };
+    p3 : TBool		{ override }
+) : TStatus ;  cdecl; external;
+
+function XrmGetStringDatabase(
+    p1 : pchar	{ data }  {  null terminated string }
+) : TXrmDatabase ;  cdecl; external;
+
+Procedure XrmPutFileDatabase(
+    p1 : TXrmDatabase		{ database };
+    p2: pchar	{ filename }
+); cdecl; external;
+
+Procedure XrmMergeDatabases(
+    p1 : TXrmDatabase		{ source_db };
+    p2 : PXrmDatabase	{ target_db }
+); cdecl; external;
+
+procedure XrmCombineDatabase(
+    p1 : TXrmDatabase		{ source_db };
+    p2 : PXrmDatabase	{ target_db };
+    p3 : TBool		{ override }
+);  cdecl; external;
+
+{
+Function XrmEnumerateDatabase(
+    XrmDatabase		{ db };
+    XrmNameList		{ name_prefix };
+    XrmClassList	{ class_prefix };
+    int			{ mode };
+    Bool (*)(#if NeedNestedPrototypes
+	     XrmDatabase*	{ db };
+	     XrmBindingList	{ bindings };
+	     XrmQuarkList	{ quarks };
+	     XrmRepresentation*	{ type };
+	     XrmValue*		{ value };
+	     XPointer		{ closure }
+
+	     )		{ proc };
+    XPointer		{ closure }
+) : TBool; cdecl; external;
+}
+
+Function XrmLocaleOfDatabase(
+    P1 : TXrmDatabase 	{ database }
+) : Pchar; cdecl; external;
+
+Procedure XrmParseCommand(
+    p1 : TXrmDatabase	{ database };
+    p2 : TXrmOptionDescList	{ table };
+    p3 : integer			{ table_count };
+    p4 : pchar	{ name };
+    p5 : Pointer		{ argc_in_out };
+    p6 : ppchar		{ argv_in_out }		     
+); cdecl; external;
+
+end.

+ 893 - 0
packages/forms/xutil.pp

@@ -0,0 +1,893 @@
+Unit XUtil;
+
+interface
+
+uses x,xlib;
+
+{ You must include <X11/Xlib.h> before including this file }
+
+{ 
+ * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
+ * value (x, y, width, height) was found in the parsed string.
+ }
+Const
+ NoValue	=$0000;
+ XValue  	=$0001;
+ YValue		=$0002;
+ WidthValue  	=$0004;
+ HeightValue  	=$0008;
+ AllValues 	=$000F;
+ XNegative 	=$0010;
+ YNegative 	=$0020;
+
+{
+ * new version containing base_width, base_height, and win_gravity fields;
+ * used with WM_NORMAL_HINTS.
+ }
+Type
+ long = Cardinal; { Untill we know better. M.}
+
+Type 
+TAspectRecord = record
+    x,y : integer;
+    end;
+
+TXSizeHints = record
+    	flags : Long;	{ marks which fields in this structure are defined }
+	x, y : Integer ;		{ obsolete for new window mgrs, but clients }
+	width, height: Integer ;	{ should set so old wm's don't mess up }
+	min_width, min_height : Integer ;
+	max_width, max_height : Integer ;
+    	width_inc, height_inc : Integer ;
+	min_aspect, max_aspect : TAspectRecord;
+	base_width, base_height : Integer ;		{ added by ICCCM version 1 }
+	win_gravity : Integer ;			{ added by ICCCM version 1 }
+end;
+PXSizeHints=^TXSizeHints;
+
+{
+ * The next block of definitions are for window manager properties that
+ * clients and applications use for communication.
+ }
+
+{ flags argument in size hints }
+Const
+ USPosition	= 1 shl 0; { user specified x, y }
+ USSize		= 1 shl 1; { user specified width, height }
+
+ PPosition	= 1 shl 2; { program specified position }
+ PSize		= 1 shl 3; { program specified size }
+ PMinSize	= 1 shl 4; { program specified minimum size }
+ PMaxSize	= 1 shl 5; { program specified maximum size }
+ PResizeInc	= 1 shl 6; { program specified resize increments }
+ PAspect	= 1 shl 7; { program specified min and max aspect ratios }
+ PBaseSize	= 1 shl 8; { program specified base for incrementing }
+ PWinGravity	= 1 shl 9; { program specified window gravity }
+
+{ obsolete }
+ PAllHints = PPosition or PSize or PMinSize or PMaxSize or PResizeInc or PAspect;
+
+Type
+
+ TXWMHints = record
+	flags : long;	{ marks which fields in this structure are defined }
+	input : TBool ;	{ does this application rely on the window manager to
+			get keyboard input? }
+	initial_state : Integer ;	{ see below }
+	icon_pixmap : TPixmap ;	{ pixmap to be used as icon }
+	icon_window : TWindow ; 	{ window to be used as icon }
+	icon_x, icon_y : Integer ; 	{ initial position of icon }
+	icon_mask : TPixmap ;	{ icon mask bitmap }
+	window_group : TXID ;	{ id of related window group }
+	{ this structure may be extended in the future }
+end;
+{ definition for flags of XWMHints }
+
+Const
+ InputHint 		= 1 shl 0;
+ StateHint 		= 1 shl 1;
+ IconPixmapHint		= 1 shl 2;
+ IconWindowHint		= 1 shl 3;
+ IconPositionHint 	= 1 shl 4;
+ IconMaskHint		= 1 shl 5;
+ AllHints = InputHint or StateHint or IconPixmapHint or IconWindowHint or 
+            IconPositionHint or IconMaskHint {or WindowGroupHint};
+ XUrgencyHint		= 1 shl 8;
+
+{ definitions for initial window state }
+ WithdrawnState = 0;	{ for windows that are not mapped }
+ NormalState 	= 1;	{ most applications want to start this way }
+ IconicState 	= 3;	{ application wants to start as an icon }
+
+{
+ * Obsolete states no longer defined by ICCCM
+ }
+ DontCareState	= 0;	{ don't know or care }
+ ZoomState 	= 2;	{ application wants to start zoomed }
+ InactiveState	= 4;	{ application believes it is seldom used; }
+			{ some wm's may put it on inactive menu }
+
+
+{
+ * new structure for manipulating TEXT properties; used with WM_NAME, 
+ * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
+ }
+type
+TXTextProperty = record
+    value : pchar;		{ same as Property routines }
+    encoding : TAtom;			{ prop type }
+    format : Integer ;				{ prop data format: 8, 16, or 32 }
+    nitems : Cardinal;		{ number of data items in value }
+end;
+PXTextProperty = ^TXTextProperty;
+
+Const
+
+ XNoMemory 		=-1;
+ XLocaleNotSupported	=-2;
+ XConverterNotFound	=-3;
+
+Type
+  TXICCEncodingStyle = Integer;
+
+Const
+    XStringStyle 	= 0;		{ STRING }
+    XCompoundTextStyle	= 1;		{ COMPOUND_TEXT }
+    XTextStyle		= 2;		{ text in owner's encoding (current locale)}
+    XStdICCTextStyle	= 3;		{ STRING, else COMPOUND_TEXT }
+
+Type
+TXIconSize = record
+	min_width, min_height,
+	max_width, max_height,
+	width_inc, height_inc : Integer;
+end;
+PXIconSize = ^TXIconSize;
+
+type
+TXClassHint = record
+	res_name,
+	res_class : pchar;
+end;
+PXClassHint = ^TXClassHint;
+
+{
+ * These macros are used to give some sugar to the image routines so that
+ * naive people are more comfortable with them.
+ }
+ 
+{
+ XDestroyImage(ximage) \
+	((*((ximage)->f.destroy_image))((ximage)))
+ XGetPixel(ximage, x, y) \
+	((*((ximage)->f.get_pixel))((ximage), (x), (y)))
+ XPutPixel(ximage, x, y, pixel) \
+	((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
+ XSubImage(ximage, x, y, width, height)  \
+	((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
+ XAddPixel(ximage, value) \
+	((*((ximage)->f.add_pixel))((ximage), (value)))
+}
+{
+ * Compose sequence status structure, used in calling XLookupString.
+ }
+
+TXComposeStatus = record
+    compose_ptr : TXPointer ;	{ state table pointer }
+    chars_matched : Integer ;		{ match state }
+end;
+PTXComposeStatus = ^TXComposeStatus;
+
+{
+ * Keysym macros, used on Keysyms to test for classes of symbols
+ }
+{
+ IsKeypadKey(keysym) \
+  (((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal))
+
+ IsPrivateKeypadKey(keysym) \
+  (((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))
+
+ IsCursorKey(keysym) \
+  (((KeySym)(keysym) >= XK_Home)     && ((KeySym)(keysym) <  XK_Select))
+
+ IsPFKey(keysym) \
+  (((KeySym)(keysym) >= XK_KP_F1)     && ((KeySym)(keysym) <= XK_KP_F4))
+
+ IsFunctionKey(keysym) \
+  (((KeySym)(keysym) >= XK_F1)       && ((KeySym)(keysym) <= XK_F35))
+
+ IsMiscFunctionKey(keysym) \
+  (((KeySym)(keysym) >= XK_Select)   && ((KeySym)(keysym) <= XK_Break))
+
+ IsModifierKey(keysym) \
+  ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
+    or  or  ((KeySym)(keysym) == XK_Mode_switch) \
+    or  or  ((KeySym)(keysym) == XK_Num_Lock))
+}
+{
+ * opaque reference to Region data type 
+ }
+{
+typedef struct _XRegion *Region; 
+}
+
+{ Return values from XRectInRegion() }
+Const
+ RectangleOut =0;
+ RectangleIn  =1;
+ RectanglePart=2;
+ 
+
+{
+ * Information used by the visual utility routines to find desired visual
+ * type from the many visuals a display may support.
+ }
+
+Type
+TXVisualInfo = record
+  visual : PVisual;
+  visualid : TVisualID ;
+  screen : Integer;
+  depth : Integer;
+  c_class : Integer;
+  red_mask : cardinal;
+  green_mask : cardinal;
+  blue_mask : Cardinal;
+  colormap_size : Integer;
+  bits_per_rgb : Integer;
+end;
+PXVisualInfo = ^TXVisualInfo;
+
+Const
+ VisualNoMask		= $0;
+ VisualIDMask 		= $1;
+ VisualScreenMask	= $2;
+ VisualDepthMask	= $4;
+ VisualClassMask	= $8;
+ VisualRedMaskMask	= $10;
+ VisualGreenMaskMask	= $20;
+ VisualBlueMaskMask	= $40;
+ VisualColormapSizeMask	= $80;
+ VisualBitsPerRGBMask	= $100;
+ VisualAllMask		= $1FF;
+
+{
+ * This defines a window manager property that clients may use to
+ * share standard color maps of type RGB_COLOR_MAP:
+ }
+Type
+TXStandardColormap = record
+	colormap : TColormap ;
+	red_max : Cardinal;
+	red_mult : Cardinal;
+	green_max : Cardinal;
+	green_mult : Cardinal;
+	blue_max : Cardinal;
+	blue_mult : Cardinal;
+	base_pixel : Cardinal;
+	visualid : TVisualID;		{ added by ICCCM version 1 }
+	killid : TXID ;			{ added by ICCCM version 1 }
+end;
+PXStandardColormap= ^TXStandardColormap;
+
+Const  
+ ReleaseByFreeingColormap = 1;  { for killid field above }
+
+
+{
+ * return codes for XReadBitmapFile and XWriteBitmapFile
+ }
+ BitmapSuccess		=0;
+ BitmapOpenFailed 	=1;
+ BitmapFileInvalid 	=2;
+ BitmapNoMemory		=3;
+
+{***************************************************************
+ *
+ * Context Management
+ *
+ ***************************************************************}
+
+
+{ Associative lookup table return codes }
+
+ XCSUCCESS =0;	{ No error. }
+ XCNOMEM   =1;    { Out of memory }
+ XCNOENT   =2;    { No entry in table }
+
+type TXContext = Integer;
+{
+ XUniqueContext()       ((XContext) XrmUniqueQuark())
+ XStringToContext(string)   ((XContext) XrmStringToQuark(string))
+}
+
+Implementation
+
+end.
+{
+_XFUNCPROTOBEGIN
+
+{ The following declarations are alphabetized. }
+
+extern XClassHInteger *XAllocClassHInteger (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XIconSize *XAllocIconSize (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XSizeHints *XAllocSizeHints (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XStandardColormap *XAllocStandardColormap (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XWMHints *XAllocWMHints (
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern XClipBox(
+#if NeedFunctionPrototypes
+    Region		{ r },
+    XRectangle*		{ rect_return }
+#endif
+);
+
+extern Region XCreateRegion(
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern char *XDefaultString(
+#if NeedFunctionPrototypes
+    void
+#endif
+);
+
+extern Integer XDeleteContext(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    XID			{ rid },
+    XContext		{ context }
+#endif
+);
+
+extern XDestroyRegion(
+#if NeedFunctionPrototypes
+    Region		{ r }
+#endif
+);
+
+extern XEmptyRegion(
+#if NeedFunctionPrototypes
+    Region		{ r }
+#endif
+);
+
+extern XEqualRegion(
+#if NeedFunctionPrototypes
+    Region		{ r1 },
+    Region		{ r2 }
+#endif
+);
+
+extern Integer XFindContext(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    XID			{ rid },
+    XContext		{ context },
+    XPointer*		{ data_return }
+#endif
+);
+
+extern Status XGetClassHint(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XClassHint*		{ class_hints_return }
+#endif
+);
+
+extern Status XGetIconSizes(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XIconSize**		{ size_list_return },
+    int*		{ count_return }
+#endif
+);
+
+extern Status XGetNormalHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints_return }
+#endif
+);
+
+extern Status XGetRGBColormaps(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XStandardColormap** { stdcmap_return },
+    int*		{ count_return },
+    Atom		{ property }
+#endif
+);
+
+extern Status XGetSizeHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints_return },
+    Atom		{ property }
+#endif
+);
+
+extern Status XGetStandardColormap(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XStandardColormap*	{ colormap_return },
+    Atom		{ property }			    
+#endif
+);
+
+extern Status XGetTextProperty(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ window },
+    XTextProperty*	{ text_prop_return },
+    Atom		{ property }
+#endif
+);
+
+extern XVisualInfo *XGetVisualInfo(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    long		{ vinfo_mask },
+    XVisualInfo*	{ vinfo_template },
+    int*		{ nitems_return }
+#endif
+);
+
+extern Status XGetWMClientMachine(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ text_prop_return }
+#endif
+);
+
+extern XWMHints *XGetWMHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w }		      
+#endif
+);
+
+extern Status XGetWMIconName(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ text_prop_return }
+#endif
+);
+
+extern Status XGetWMName(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ text_prop_return }
+#endif
+);
+
+extern Status XGetWMNormalHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints_return },
+    long*		{ supplied_return } 
+#endif
+);
+
+extern Status XGetWMSizeHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints_return },
+    long*		{ supplied_return },
+    Atom		{ property }
+#endif
+);
+
+extern Status XGetZoomHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ zhints_return }
+#endif
+);
+
+extern XIntersectRegion(
+#if NeedFunctionPrototypes
+    Region		{ sra },
+    Region		{ srb },
+    Region		{ dr_return }
+#endif
+);
+
+extern void XConvertCase(
+#if NeedFunctionPrototypes
+    KeySym		{ sym },
+    KeySym*		{ lower },
+    KeySym*		{ upper }
+#endif
+);
+
+extern Integer XLookupString(
+#if NeedFunctionPrototypes
+    XKeyEvent*		{ event_struct },
+    char*		{ buffer_return },
+    int			{ bytes_buffer },
+    KeySym*		{ keysym_return },
+    XComposeStatus*	{ status_in_out }
+#endif
+);
+
+extern Status XMatchVisualInfo(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    int			{ screen },
+    int			{ depth },
+    int			{ class },
+    XVisualInfo*	{ vinfo_return }
+#endif
+);
+
+extern XOffsetRegion(
+#if NeedFunctionPrototypes
+    Region		{ r },
+    int			{ dx },
+    int			{ dy }
+#endif
+);
+
+extern Bool XPointInRegion(
+#if NeedFunctionPrototypes
+    Region		{ r },
+    int			{ x },
+    int			{ y }
+#endif
+);
+
+extern Region XPolygonRegion(
+#if NeedFunctionPrototypes
+    XPoint*		{ points },
+    int			{ n },
+    int			{ fill_rule }
+#endif
+);
+
+extern Integer XRectInRegion(
+#if NeedFunctionPrototypes
+    Region		{ r },
+    int			{ x },
+    int			{ y },
+    unsigned int	{ width },
+    unsigned int	{ height }
+#endif
+);
+
+extern Integer XSaveContext(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    XID			{ rid },
+    XContext		{ context },
+    _Xconst char*	{ data }
+#endif
+);
+
+extern XSetClassHint(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XClassHint*		{ class_hints }
+#endif
+);
+
+extern XSetIconSizes(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XIconSize*		{ size_list },
+    int			{ count }    
+#endif
+);
+
+extern XSetNormalHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints }
+#endif
+);
+
+extern void XSetRGBColormaps(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XStandardColormap*	{ stdcmaps },
+    int			{ count },
+    Atom		{ property }
+#endif
+);
+
+extern XSetSizeHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints },
+    Atom		{ property }
+#endif
+);
+
+extern XSetStandardProperties(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    _Xconst char*	{ window_name },
+    _Xconst char*	{ icon_name },
+    Pixmap		{ icon_pixmap },
+    char**		{ argv },
+    int			{ argc },
+    XSizeHints*		{ hints }
+#endif
+);
+
+extern void XSetTextProperty(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ text_prop },
+    Atom		{ property }
+#endif
+);
+
+extern void XSetWMClientMachine(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ text_prop }
+#endif
+);
+
+extern XSetWMHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XWMHints*		{ wm_hints }
+#endif
+);
+
+extern void XSetWMIconName(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ text_prop }
+#endif
+);
+
+extern void XSetWMName(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ text_prop }
+#endif
+);
+
+extern void XSetWMNormalHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints }
+#endif
+);
+
+extern void XSetWMProperties(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XTextProperty*	{ window_name },
+    XTextProperty*	{ icon_name },
+    char**		{ argv },
+    int			{ argc },
+    XSizeHints*		{ normal_hints },
+    XWMHints*		{ wm_hints },
+    XClassHint*		{ class_hints }
+#endif
+);
+
+extern void XmbSetWMProperties(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    _Xconst char*	{ window_name },
+    _Xconst char*	{ icon_name },
+    char**		{ argv },
+    int			{ argc },
+    XSizeHints*		{ normal_hints },
+    XWMHints*		{ wm_hints },
+    XClassHint*		{ class_hints }
+#endif
+);
+
+extern void XSetWMSizeHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ hints },
+    Atom		{ property }
+#endif
+);
+
+extern XSetRegion(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    GC			{ gc },
+    Region		{ r }
+#endif
+);
+
+extern void XSetStandardColormap(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XStandardColormap*	{ colormap },
+    Atom		{ property }
+#endif
+);
+
+extern XSetZoomHints(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    Window		{ w },
+    XSizeHints*		{ zhints }
+#endif
+);
+
+extern XShrinkRegion(
+#if NeedFunctionPrototypes
+    Region		{ r },
+    int			{ dx },
+    int			{ dy }
+#endif
+);
+
+extern Status XStringListToTextProperty(
+#if NeedFunctionPrototypes
+    char**		{ list },
+    int			{ count },
+    XTextProperty*	{ text_prop_return }
+#endif
+);
+
+extern XSubtractRegion(
+#if NeedFunctionPrototypes
+    Region		{ sra },
+    Region		{ srb },
+    Region		{ dr_return }
+#endif
+);
+
+extern Integer XmbTextListToTextProperty(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    char**		{ list },
+    int			{ count },
+    XICCEncodingStyle	{ style },
+    XTextProperty*	{ text_prop_return }
+#endif
+);
+
+extern Integer XwcTextListToTextProperty(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    wchar_t**		{ list },
+    int			{ count },
+    XICCEncodingStyle	{ style },
+    XTextProperty*	{ text_prop_return }
+#endif
+);
+
+extern void XwcFreeStringList(
+#if NeedFunctionPrototypes
+    wchar_t**		{ list }
+#endif
+);
+
+extern Status XTextPropertyToStringList(
+#if NeedFunctionPrototypes
+    XTextProperty*	{ text_prop },
+    char***		{ list_return },
+    int*		{ count_return }
+#endif
+);
+
+extern Integer XmbTextPropertyToTextList(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    XTextProperty*	{ text_prop },
+    char***		{ list_return },
+    int*		{ count_return }
+#endif
+);
+
+extern Integer XwcTextPropertyToTextList(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    XTextProperty*	{ text_prop },
+    wchar_t***		{ list_return },
+    int*		{ count_return }
+#endif
+);
+
+extern XUnionRectWithRegion(
+#if NeedFunctionPrototypes
+    XRectangle*		{ rectangle },
+    Region		{ src_region },
+    Region		{ dest_region_return }
+#endif
+);
+
+extern XUnionRegion(
+#if NeedFunctionPrototypes
+    Region		{ sra },
+    Region		{ srb },
+    Region		{ dr_return }
+#endif
+);
+
+extern Integer XWMGeometry(
+#if NeedFunctionPrototypes
+    Display*		{ display },
+    int			{ screen_number },
+    _Xconst char*	{ user_geometry },
+    _Xconst char*	{ default_geometry },
+    unsigned int	{ border_width },
+    XSizeHints*		{ hints },
+    int*		{ x_return },
+    int*		{ y_return },
+    int*		{ width_return },
+    int*		{ height_return },
+    int*		{ gravity_return }
+#endif
+);
+
+extern XXorRegion(
+#if NeedFunctionPrototypes
+    Region		{ sra },
+    Region		{ srb },
+    Region		{ dr_return }
+#endif
+);
+
+_XFUNCPROTOEND
+
+#endif { _XUTIL_H_ }
+}

+ 140 - 0
packages/ibase/Makefile

@@ -0,0 +1,140 @@
+#
+#   $Id$
+#   Copyright (c) 1999 by the Free Pascal Development Team
+#
+#   Makefile for <template> for Free Pascal
+#
+#   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.
+#
+#####################################################################
+# Defaults
+#####################################################################
+
+# Where are the include files located
+INC=
+PROCINC=
+OSINC=
+
+# Needed options, without it won't compile
+NEEDOPT=-S2
+
+# Needed unit dir, which is searched as the first path
+NEEDUNITDIR=
+
+# Linux only
+# Define if libgds.a is not in /usr/lib 
+# GDSLIBDIR=
+
+# Where need we to place the executables/ppu/objects
+TARGETDIR=
+UNITTARGETDIR=
+
+# As default make only the units
+#DEFAULTUNITS=1
+
+# Uncomment this is the makefile.fpc isn't located in ../..
+DEFAULTFPCDIR=../..
+
+#####################################################################
+# Real targets
+#####################################################################
+
+UNITOBJECTS=ibase
+EXEOBJECTS=testib
+
+#####################################################################
+# Common targets
+#####################################################################
+
+ifdef inlinux
+ifdef GDSLIBDIR 
+override NEEDLIBDIR+=$(GDSLIBDIR)
+endif
+endif
+
+#####################################################################
+# Common targets
+#####################################################################
+
+.PHONY: all clean install info \
+        staticlib sharedlib libsclean \
+        staticinstall sharedinstall libinstall \
+        
+all: testfpcmake fpc_all
+
+clean: testfpcmake fpc_clean
+
+install: testfpcmake fpc_install
+
+info: testfpcmake fpc_info
+
+staticlib: testfpcmake fpc_staticlib
+
+sharedlib: testfpcmake fpc_sharedlib
+
+libsclean: testfpcmake fpc_libsclean
+
+staticinstall: testfpcmake fpc_staticinstall
+
+sharedinstall: testfpcmake fpc_sharedinstall
+
+libinstall: testfpcmake fpc_libinstall
+
+
+#####################################################################
+# Include default makefile
+#####################################################################
+
+# test if FPCMAKE is still valid
+ifdef FPCMAKE
+ifeq ($(strip $(wildcard $(FPCMAKE))),)
+FPCDIR=
+FPCMAKE=
+endif
+endif
+
+ifndef FPCDIR
+ifdef DEFAULTFPCDIR
+FPCDIR=$(DEFAULTFPCDIR)
+endif
+endif
+
+ifndef FPCMAKE
+ifdef FPCDIR
+FPCMAKE=$(FPCDIR)/makefile.fpc
+else
+FPCMAKE=makefile.fpc
+endif
+endif
+
+override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
+ifeq ($(FPCMAKE),)
+testfpcmake:
+	@echo makefile.fpc not found!
+	@echo Check the FPCMAKE and FPCDIR environment variables.
+	@exit
+else
+include $(FPCMAKE)
+testfpcmake:
+endif
+
+#####################################################################
+# Dependencies
+#####################################################################
+
+testib$(EXEEXT): testib.pp ibase$(PPUEXT)
+
+#
+# $Log$
+# Revision 1.1  1999-05-12 00:11:27  michael
+# initial import
+#
+# Revision 1.1  1999/03/16 00:50:29  peter
+#   + init
+#
+#

+ 42 - 0
packages/ibase/README

@@ -0,0 +1,42 @@
+This is the README file for the INTERBASE package of FPC
+
+How to compile
+--------------
+
+You can compile by hand, or use the makefile. The makefile uses the
+makefile.fpc that is distributed by the FPC team.
+
+1) Using the makefile.
+   Edit the makefile: 
+     set the DEFAULTFPCDIR
+     if libgds is not in /usr/lib, set GDSLIBDIR
+   type 'make'. It should all compiler
+
+2) By hand:
+   simply type:
+   ppc386 -S2 ibase
+
+   If your libgds.so file is not in /usr/lib, you may need to add
+   -Fl/path/to/libgds
+
+Using the testprogram
+---------------------
+
+The mkdb script (mkdb.pas batch file) creates a database.
+default testdb.gdb is assumed. You can override that by 
+specifying an alternate database as an option.
+
+The testib program connects to the testdatabase. You must edit
+the testib.pp file and set the database, password and username.
+After editing, compile the program. 
+Run it and it will display the contents of the database.
+
+Enjoy !
+
+Michael.
+
+   
+
+   
+
+

+ 1847 - 0
packages/ibase/ibase.pp

@@ -0,0 +1,1847 @@
+unit ibase;
+
+interface
+
+const
+  {$ifdef linux}
+  LibName = 'gds';
+  {$linklib c}
+  {$else}
+  LibName = 'gds32.dll';
+  {$endif}
+
+
+{ C Compatibility types }
+
+type
+  {  Unsigned types }
+  
+  UChar                = Byte;
+  UShort               = Word;    
+  UInt                 = DWord;   
+  ULong                = DWord;
+
+  { Signed types }
+
+  Int                  = LongInt; 
+  Long                 = LongInt; 
+  Short                = SmallInt;
+  Float                = Single;
+  
+  { Pointers to basic types }
+
+  PSmallInt            = ^SmallInt;
+  PInt                 = ^Int;
+  PInteger             = ^Integer;
+  PShort               = ^Short;
+  PUShort              = ^UShort;
+  PLong                = ^Long;
+  PULong               = ^ULong;
+  PFloat               = ^Float;
+  PUChar               = ^UChar;
+  PVoid                = ^Pointer;
+  PDouble              = ^Double;
+  
+  { Interbase redefinitions }
+  
+  ISC_LONG             = Long;  
+  UISC_LONG            = ULong;
+  ISC_STATUS           = Long;   
+  UISC_STATUS          = ULong;
+  Void                 = Pointer;
+  PISC_LONG            = ^ISC_LONG;
+  PUISC_LONG           = ^UISC_LONG;
+  PISC_STATUS          = ^ISC_STATUS;
+  PPISC_STATUS         = ^PISC_STATUS;
+  PUISC_STATUS         = ^UISC_STATUS;
+
+  { C Date/Time Structure }
+  TCTimeStructure = record
+    tm_sec,
+    tm_min,
+    tm_hour,
+    tm_mday,
+    tm_mon,
+    tm_year,
+    tm_wday,
+    tm_yday,
+    tm_isdst : Longint;
+  end;
+  PCTimeStructure = ^TCTimeStructure;
+  TM              = TCTimeStructure;
+  PTM             = ^TM;
+
+  TISC_VARYING = record
+    strlen: Short;
+    str: array[0..0] of Char;
+  end;
+
+  TISC_BlobGetSegment = function(BlobHandle: PInt; Buffer: PChar; BufferSize: Long; var ResultLength: Long): Short; cdecl;
+  TISC_BlobPutSegment = procedure(BlobHandle: PInt; Buffer: PChar; BufferLength: Short); cdecl;
+
+  TBlob = record
+    GetSegment         : TISC_BlobGetSegment;
+    BlobHandle         : PInt;
+    SegmentCount       : Long;
+    MaxSegmentLength   : Long;
+    TotalSize          : Long;
+    PutSegment         : TISC_BlobPutSegment;
+  end;
+  PBlob = ^TBlob;
+
+Const  
+  { 
+    Huge amount of constants. 
+    Look for TYPESTART to get to types,
+    Look For FUNCSTART to get to functions and procedures
+  }
+
+  ISC_TRUE = 1;
+  ISC_FALSE = 0;
+  DSQL_close = 1;
+  DSQL_drop = 2;
+
+  sec_uid_spec = $01;
+  sec_gid_spec = $02;
+  sec_server_spec = $04;
+  sec_password_spec = $08;
+  sec_group_name_spec = $10;
+  sec_first_name_spec = $20;
+  sec_middle_name_spec = $40;
+  sec_last_name_spec = $80;
+  sec_dba_user_name_spec = $100;
+  sec_dba_password_spec = $200;
+  sec_protocol_tcpip = 1;
+  sec_protocol_netbeui = 2;
+  sec_protocol_spx = 3;
+  sec_protocol_local = 4;
+
+  isc_blob_filter_open = 0;
+  isc_blob_filter_get_segment = 1;
+  isc_blob_filter_close = 2;
+  isc_blob_filter_create = 3;
+  isc_blob_filter_put_segment = 4;
+  isc_blob_filter_alloc = 5;
+  isc_blob_filter_free = 6;
+  isc_blob_filter_seek = 7;
+
+  blr_text = 14;
+  blr_text2 = 15;
+  blr_short = 7;
+  blr_long = 8;
+  blr_quad = 9;
+  blr_float = 10;
+  blr_double = 27;
+  blr_d_float = 11;
+  blr_date = 35;
+  blr_varying = 37;
+  blr_varying2 = 38;
+  blr_blob = 261;
+  blr_cstring = 40;
+  blr_cstring2 = 41;
+  blr_blob_id = 45;
+
+  blr_inner = 0;
+  blr_left = 1;
+  blr_right = 2;
+  blr_full = 3;
+
+  blr_gds_code = 0;
+  blr_sql_code = 1;
+  blr_exception = 2;
+  blr_trigger_code = 3;
+  blr_default_code = 4;
+
+  blr_version4 = 4;
+  blr_eoc = 76;
+  blr_end = -1;
+
+  blr_assignment = 1;
+  blr_begin = 2;
+  blr_dcl_variable = 3;
+  blr_message = 4;
+  blr_erase = 5;
+  blr_fetch = 6;
+  blr_for = 7;
+  blr_if = 8;
+  blr_loop = 9;
+  blr_modify = 10;
+  blr_handler = 11;
+  blr_receive = 12;
+  blr_select = 13;
+  blr_send = 14;
+  blr_store = 15;
+  blr_label = 17;
+  blr_leave = 18;
+  blr_store2 = 19;
+  blr_post = 20;
+
+  blr_literal = 21;
+  blr_dbkey = 22;
+  blr_field = 23;
+  blr_fid = 24;
+  blr_parameter = 25;
+  blr_variable = 26;
+  blr_average = 27;
+  blr_count = 28;
+  blr_maximum = 29;
+  blr_minimum = 30;
+  blr_total = 31;
+  blr_add = 34;
+  blr_subtract = 35;
+  blr_multiply = 36;
+  blr_divide = 37;
+  blr_negate = 38;
+  blr_concatenate = 39;
+  blr_substring = 40;
+  blr_parameter2 = 41;
+  blr_from = 42;
+  blr_via = 43;
+  blr_user_name = 44;
+  blr_null = 45;
+
+  blr_eql = 47;
+  blr_neq = 48;
+  blr_gtr = 49;
+  blr_geq = 50;
+  blr_lss = 51;
+  blr_leq = 52;
+  blr_containing = 53;
+  blr_matching = 54;
+  blr_starting = 55;
+  blr_between = 56;
+  blr_or = 57;
+  blr_and = 58;
+  blr_not = 59;
+  blr_any = 60;
+  blr_missing = 61;
+  blr_unique = 62;
+  blr_like = 63;
+
+  blr_stream = 65;
+  blr_set_index = 66;
+  blr_rse = 67;
+  blr_first = 68;
+  blr_project = 69;
+  blr_sort = 70;
+  blr_boolean = 71;
+  blr_ascending = 72;
+  blr_descending = 73;
+  blr_relation = 74;
+  blr_rid = 75;
+  blr_union = 76;
+  blr_map = 77;
+  blr_group_by = 78;
+  blr_aggregate = 79;
+  blr_join_type = 80;
+
+  blr_agg_count = 83;
+  blr_agg_max = 84;
+  blr_agg_min = 85;
+  blr_agg_total = 86;
+  blr_agg_average = 87;
+  blr_parameter3 = 88;
+  blr_run_count = 118;
+  blr_run_max = 89;
+  blr_run_min = 90;
+  blr_run_total = 91;
+  blr_run_average = 92;
+  blr_agg_count2 = 93;
+  blr_agg_count_distinct = 94;
+  blr_agg_total_distinct = 95;
+  blr_agg_average_distinct = 96;
+
+  blr_function = 100;
+  blr_gen_id = 101;
+  blr_prot_mask = 102;
+  blr_upcase = 103;
+  blr_lock_state = 104;
+  blr_value_if = 105;
+  blr_matching2 = 106;
+  blr_index = 107;
+  blr_ansi_like = 108;
+  blr_bookmark = 109;
+  blr_crack = 110;
+  blr_force_crack = 111;
+  blr_seek = 112;
+  blr_find = 113;
+
+  blr_continue = 0;
+  blr_forward = 1;
+  blr_backward = 2;
+  blr_bof_forward = 3;
+  blr_eof_backward = 4;
+
+  blr_lock_relation = 114;
+  blr_lock_record = 115;
+  blr_set_bookmark = 116;
+  blr_get_bookmark = 117;
+  blr_rs_stream = 119;
+  blr_exec_proc = 120;
+  blr_begin_range = 121;
+  blr_end_range = 122;
+  blr_delete_range = 123;
+  blr_procedure = 124;
+  blr_pid = 125;
+  blr_exec_pid = 126;
+  blr_singular = 127;
+  blr_abort = 128;
+  blr_block = 129;
+  blr_error_handler = 130;
+  blr_cast = 131;
+  blr_release_lock = 132;
+  blr_release_locks = 133;
+  blr_start_savepoint = 134;
+  blr_end_savepoint = 135;
+  blr_find_dbkey = 136;
+  blr_range_relation = 137;
+  blr_delete_ranges = 138;
+
+  blr_plan = 139;
+  blr_merge = 140;
+  blr_join = 141;
+  blr_sequential = 142;
+  blr_navigational = 143;
+  blr_indices = 144;
+  blr_retrieve = 145;
+
+  blr_relation2 = 146;
+  blr_rid2 = 147;
+  blr_reset_stream = 148;
+  blr_release_bookmark = 149;
+  blr_set_generator = 150;
+  blr_ansi_any = 151;
+  blr_exists = 152;
+  blr_cardinality = 153;
+
+  blr_record_version = 154;
+  blr_stall = 155;
+  blr_seek_no_warn = 156;
+  blr_find_dbkey_version = 157;
+  blr_ansi_all = 158;
+     
+  isc_dpb_version1 = 1;
+  isc_dpb_cdd_pathname = 1;
+  isc_dpb_allocation = 2;
+  isc_dpb_journal = 3;
+  isc_dpb_page_size = 4;
+  isc_dpb_num_buffers = 5;
+  isc_dpb_buffer_length = 6;
+  isc_dpb_debug = 7;
+  isc_dpb_garbage_collect = 8;
+  isc_dpb_verify = 9;
+  isc_dpb_sweep = 10;
+  isc_dpb_enable_journal = 11;
+  isc_dpb_disable_journal = 12;
+  isc_dpb_dbkey_scope = 13;
+  isc_dpb_number_of_users = 14;
+  isc_dpb_trace = 15;
+  isc_dpb_no_garbage_collect = 16;
+  isc_dpb_damaged = 17;
+  isc_dpb_license = 18;
+  isc_dpb_sys_user_name = 19;
+  isc_dpb_encrypt_key = 20;
+  isc_dpb_activate_shadow = 21;
+  isc_dpb_sweep_interval = 22;
+  isc_dpb_delete_shadow = 23;
+  isc_dpb_force_write = 24;
+  isc_dpb_begin_log = 25;
+  isc_dpb_quit_log = 26;
+  isc_dpb_no_reserve = 27;
+  isc_dpb_user_name = 28;
+  isc_dpb_password = 29;
+  isc_dpb_password_enc = 30;
+  isc_dpb_sys_user_name_enc = 31;
+  isc_dpb_interp = 32;
+  isc_dpb_online_dump = 33;
+  isc_dpb_old_file_size = 34;
+  isc_dpb_old_num_files = 35;
+  isc_dpb_old_file = 36;
+  isc_dpb_old_start_page = 37;
+  isc_dpb_old_start_seqno = 38;
+  isc_dpb_old_start_file = 39;
+  isc_dpb_drop_walfile = 40;
+  isc_dpb_old_dump_id = 41;
+  isc_dpb_wal_backup_dir = 42;
+  isc_dpb_wal_chkptlen = 43;
+  isc_dpb_wal_numbufs = 44;
+  isc_dpb_wal_bufsize = 45;
+  isc_dpb_wal_grp_cmt_wait = 46;
+  isc_dpb_lc_messages = 47;
+  isc_dpb_lc_ctype = 48;
+  isc_dpb_cache_manager = 49;
+  isc_dpb_shutdown = 50;
+  isc_dpb_online = 51;
+  isc_dpb_shutdown_delay = 52;
+  isc_dpb_reserved = 53;
+  isc_dpb_overwrite = 54;
+  isc_dpb_sec_attach = 55;
+  isc_dpb_disable_wal = 56;
+  isc_dpb_connect_timeout = 57;
+  isc_dpb_dummy_packet_interval = 58;
+  isc_dpb_gbak_attach = 59;
+  isc_dpb_sql_role_name = 60;
+  isc_dpb_set_page_buffers = 61;
+  isc_dpb_working_directory = 62;
+  isc_dpb_last_dpb_constant = isc_dpb_working_directory;
+
+
+  isc_dpb_pages = 1;
+  isc_dpb_records = 2;
+  isc_dpb_indices = 4;
+  isc_dpb_transactions = 8;
+  isc_dpb_no_update = 16;
+  isc_dpb_repair = 32;
+  isc_dpb_ignore = 64;
+
+  isc_dpb_shut_cache = 1;
+  isc_dpb_shut_attachment = 2;
+  isc_dpb_shut_transaction = 4;
+  isc_dpb_shut_force = 8;
+
+  RDB_system = 1;
+  RDB_id_assigned = 2;
+
+
+  isc_tpb_version1 = 1;
+  isc_tpb_version3 = 3;
+  isc_tpb_consistency = 1;
+  isc_tpb_concurrency = 2;
+  isc_tpb_shared = 3;
+  isc_tpb_protected = 4;
+  isc_tpb_exclusive = 5;
+  isc_tpb_wait = 6;
+  isc_tpb_nowait = 7;
+  isc_tpb_read = 8;
+  isc_tpb_write = 9;
+  isc_tpb_lock_read = 10;
+  isc_tpb_lock_write = 11;
+  isc_tpb_verb_time = 12;
+  isc_tpb_commit_time = 13;
+  isc_tpb_ignore_limbo = 14;
+  isc_tpb_read_committed = 15;
+  isc_tpb_autocommit = 16;
+  isc_tpb_rec_version = 17;
+  isc_tpb_no_rec_version = 18;
+  isc_tpb_restart_requests = 19;
+  isc_tpb_no_auto_undo = 20;
+  isc_tpb_last_tpb_constant = isc_tpb_no_auto_undo;
+
+
+  isc_bpb_version1 = 1;
+  isc_bpb_source_type = 1;
+  isc_bpb_target_type = 2;
+  isc_bpb_type = 3;
+  isc_bpb_source_interp = 4;
+  isc_bpb_target_interp = 5;
+  isc_bpb_filter_parameter = 6;
+
+  isc_bpb_type_segmented = 0;
+  isc_bpb_type_stream = 1;
+
+
+  isc_spb_version1 = 1;
+  isc_spb_user_name = 2;
+  isc_spb_sys_user_name = 3;
+  isc_spb_sys_user_name_enc = 4;
+  isc_spb_password = 5;
+  isc_spb_password_enc = 6;
+  isc_spb_command_line = 7;
+  isc_spb_connect_timeout = isc_dpb_connect_timeout;
+  isc_spb_dummy_packet_interval = isc_dpb_dummy_packet_interval;
+  isc_spb_sql_role_name = isc_dpb_sql_role_name;
+
+
+
+  isc_info_end = 1;
+  isc_info_truncated = 2;
+  isc_info_error = 3;
+
+  isc_info_db_id = 4;
+  isc_info_reads = 5;
+  isc_info_writes = 6;
+  isc_info_fetches = 7;
+  isc_info_marks = 8;
+  isc_info_implementation = 11;
+  isc_info_version = 12;
+  isc_info_base_level = 13;
+  isc_info_page_size = 14;
+  isc_info_num_buffers = 15;
+  isc_info_limbo = 16;
+  isc_info_current_memory = 17;
+  isc_info_max_memory = 18;
+  isc_info_window_turns = 19;
+  isc_info_license = 20;
+  isc_info_allocation = 21;
+  isc_info_attachment_id = 22;
+  isc_info_read_seq_count = 23;
+  isc_info_read_idx_count = 24;
+  isc_info_insert_count = 25;
+  isc_info_update_count = 26;
+  isc_info_delete_count = 27;
+  isc_info_backout_count = 28;
+  isc_info_purge_count = 29;
+  isc_info_expunge_count = 30;
+  isc_info_sweep_interval = 31;
+  isc_info_ods_version = 32;
+  isc_info_ods_minor_version = 33;
+  isc_info_no_reserve = 34;
+  isc_info_logfile = 35;
+  isc_info_cur_logfile_name = 36;
+  isc_info_cur_log_part_offset = 37;
+  isc_info_num_wal_buffers = 38;
+  isc_info_wal_buffer_size = 39;
+  isc_info_wal_ckpt_length = 40;
+  isc_info_wal_cur_ckpt_interval = 41;
+  isc_info_wal_prv_ckpt_fname = 42;
+  isc_info_wal_prv_ckpt_poffset = 43;
+  isc_info_wal_recv_ckpt_fname = 44;
+  isc_info_wal_recv_ckpt_poffset = 45;
+  isc_info_wal_grpc_wait_usecs = 47;
+  isc_info_wal_num_io = 48;
+  isc_info_wal_avg_io_size = 49;
+  isc_info_wal_num_commits = 50;
+  isc_info_wal_avg_grpc_size = 51;
+  isc_info_forced_writes = 52;
+  isc_info_user_names = 53;
+  isc_info_page_errors = 54;
+  isc_info_record_errors = 55;
+  isc_info_bpage_errors = 56;
+  isc_info_dpage_errors = 57;
+  isc_info_ipage_errors = 58;
+  isc_info_ppage_errors = 59;
+  isc_info_tpage_errors = 60;
+  isc_info_set_page_buffers = 61;
+
+  isc_info_db_impl_rdb_vms = 1;
+  isc_info_db_impl_rdb_eln = 2;
+  isc_info_db_impl_rdb_eln_dev = 3;
+  isc_info_db_impl_rdb_vms_y = 4;
+  isc_info_db_impl_rdb_eln_y = 5;
+  isc_info_db_impl_jri = 6;
+  isc_info_db_impl_jsv = 7;
+  isc_info_db_impl_isc_a = 25;
+  isc_info_db_impl_isc_u = 26;
+  isc_info_db_impl_isc_v = 27;
+  isc_info_db_impl_isc_s = 28;
+  isc_info_db_impl_isc_apl_68K = 25;
+  isc_info_db_impl_isc_vax_ultr = 26;
+  isc_info_db_impl_isc_vms = 27;
+  isc_info_db_impl_isc_sun_68k = 28;
+  isc_info_db_impl_isc_os2 = 29;
+  isc_info_db_impl_isc_sun4 = 30;
+  isc_info_db_impl_isc_hp_ux = 31;
+  isc_info_db_impl_isc_sun_386i = 32;
+  isc_info_db_impl_isc_vms_orcl = 33;
+  isc_info_db_impl_isc_mac_aux = 34;
+  isc_info_db_impl_isc_rt_aix = 35;
+  isc_info_db_impl_isc_mips_ult = 36;
+  isc_info_db_impl_isc_xenix = 37;
+  isc_info_db_impl_isc_dg = 38;
+  isc_info_db_impl_isc_hp_mpexl = 39;
+  isc_info_db_impl_isc_hp_ux68K = 40;
+  isc_info_db_impl_isc_sgi = 41;
+  isc_info_db_impl_isc_sco_unix = 42;
+  isc_info_db_impl_isc_cray = 43;
+  isc_info_db_impl_isc_imp = 44;
+  isc_info_db_impl_isc_delta = 45;
+  isc_info_db_impl_isc_next = 46;
+  isc_info_db_impl_isc_dos = 47;
+  isc_info_db_impl_isc_winnt = 48;
+  isc_info_db_impl_isc_epson = 49;
+
+  isc_info_db_class_access = 1;
+  isc_info_db_class_y_valve = 2;
+  isc_info_db_class_rem_int = 3;
+  isc_info_db_class_rem_srvr = 4;
+  isc_info_db_class_pipe_int = 7;
+  isc_info_db_class_pipe_srvr = 8;
+  isc_info_db_class_sam_int = 9;
+  isc_info_db_class_sam_srvr = 10;
+  isc_info_db_class_gateway = 11;
+  isc_info_db_class_cache = 12;
+
+  isc_info_number_messages = 4;
+  isc_info_max_message = 5;
+  isc_info_max_send = 6;
+  isc_info_max_receive = 7;
+  isc_info_state = 8;
+  isc_info_message_number = 9;
+  isc_info_message_size = 10;
+  isc_info_request_cost = 11;
+  isc_info_access_path = 12;
+  isc_info_req_select_count = 13;
+  isc_info_req_insert_count = 14;
+  isc_info_req_update_count = 15;
+  isc_info_req_delete_count = 16;
+
+
+  isc_info_rsb_end = 0;
+  isc_info_rsb_begin = 1;
+  isc_info_rsb_type = 2;
+  isc_info_rsb_relation = 3;
+  isc_info_rsb_plan = 4;
+
+  isc_info_rsb_unknown = 1;
+  isc_info_rsb_indexed = 2;
+  isc_info_rsb_navigate = 3;
+  isc_info_rsb_sequential = 4;
+  isc_info_rsb_cross = 5;
+  isc_info_rsb_sort = 6;
+  isc_info_rsb_first = 7;
+  isc_info_rsb_boolean = 8;
+  isc_info_rsb_union = 9;
+  isc_info_rsb_aggregate = 10;
+  isc_info_rsb_merge = 11;
+  isc_info_rsb_ext_sequential = 12;
+  isc_info_rsb_ext_indexed = 13;
+  isc_info_rsb_ext_dbkey = 14;
+  isc_info_rsb_left_cross = 15;
+  isc_info_rsb_select = 16;
+  isc_info_rsb_sql_join = 17;
+  isc_info_rsb_simulate = 18;
+  isc_info_rsb_sim_cross = 19;
+  isc_info_rsb_once = 20;
+  isc_info_rsb_procedure = 21;
+
+  isc_info_rsb_and = 1;
+  isc_info_rsb_or = 2;
+  isc_info_rsb_dbkey = 3;
+  isc_info_rsb_index = 4;
+
+  isc_info_req_active = 2;
+  isc_info_req_inactive = 3;
+  isc_info_req_send = 4;
+  isc_info_req_receive = 5;
+  isc_info_req_select = 6;
+  isc_info_req_sql_stall = 7;
+
+  isc_info_blob_num_segments = 4;
+  isc_info_blob_max_segment = 5;
+  isc_info_blob_total_length = 6;
+  isc_info_blob_type = 7;
+
+  isc_info_tra_id = 4;
+
+  isc_info_svc_version = 4;
+  isc_info_svc_message = 5;
+  isc_info_svc_total_length = 6;
+  isc_info_svc_response = 7;
+  isc_info_svc_response_more = 8;
+  isc_info_svc_line = 9;
+  isc_info_svc_to_eof = 10;
+  isc_info_svc_timeout = 11;
+  isc_info_svc_server_version = 12;
+  isc_info_svc_implementation = 13;
+  isc_info_svc_capabilities = 14;
+  isc_info_svc_user_dbpath = 15;
+  isc_info_svc_svr_db_info = 16;
+  isc_info_svc_svr_online = 17;
+  isc_info_svc_svr_offline = 18;
+  isc_info_svc_get_config = 19;
+  isc_info_svc_set_config = 20;
+  isc_info_svc_default_config = 21;
+  isc_info_svc_get_env = 22;
+  isc_info_svc_get_env_lock = 23;
+  isc_info_svc_get_env_msg = 24;
+
+  isc_info_sql_select = 4;
+  isc_info_sql_bind = 5;
+  isc_info_sql_num_variables = 6;
+  isc_info_sql_describe_vars = 7;
+  isc_info_sql_describe_end = 8;
+  isc_info_sql_sqlda_seq = 9;
+  isc_info_sql_message_seq = 10;
+  isc_info_sql_type = 11;
+  isc_info_sql_sub_type = 12;
+  isc_info_sql_scale = 13;
+  isc_info_sql_length = 14;
+  isc_info_sql_null_ind = 15;
+  isc_info_sql_field = 16;
+  isc_info_sql_relation = 17;
+  isc_info_sql_owner = 18;
+  isc_info_sql_alias = 19;
+  isc_info_sql_sqlda_start = 20;
+  isc_info_sql_stmt_type = 21;
+  isc_info_sql_get_plan = 22;
+  isc_info_sql_records = 23;
+  isc_info_sql_batch_fetch = 24;
+
+  isc_info_sql_stmt_select = 1;
+  isc_info_sql_stmt_insert = 2;
+  isc_info_sql_stmt_update = 3;
+  isc_info_sql_stmt_delete = 4;
+  isc_info_sql_stmt_ddl = 5;
+  isc_info_sql_stmt_get_segment = 6;
+  isc_info_sql_stmt_put_segment = 7;
+  isc_info_sql_stmt_exec_procedure = 8;
+  isc_info_sql_stmt_start_trans = 9;
+  isc_info_sql_stmt_commit = 10;
+  isc_info_sql_stmt_rollback = 11;
+  isc_info_sql_stmt_select_for_upd = 12;
+  isc_info_sql_stmt_set_generator = 13;
+
+
+  ISCCFG_LOCKMEM_KEY = 0;
+  ISCCFG_LOCKSEM_KEY = 1;
+  ISCCFG_LOCKSIG_KEY = 2;
+  ISCCFG_EVNTMEM_KEY = 3;
+  ISCCFG_DBCACHE_KEY = 4;
+  ISCCFG_PRIORITY_KEY = 5;
+  ISCCFG_IPCMAP_KEY = 6;
+  ISCCFG_MEMMIN_KEY = 7;
+  ISCCFG_MEMMAX_KEY = 8;
+  ISCCFG_LOCKORDER_KEY = 9;
+  ISCCFG_ANYLOCKMEM_KEY = 10;
+  ISCCFG_ANYLOCKSEM_KEY = 11;
+  ISCCFG_ANYLOCKSIG_KEY = 12;
+  ISCCFG_ANYEVNTMEM_KEY = 13;
+  ISCCFG_LOCKHASH_KEY = 14;
+  ISCCFG_DEADLOCK_KEY = 15;
+  ISCCFG_LOCKSPIN_KEY = 16;
+  ISCCFG_CONN_TIMEOUT_KEY = 17;
+  ISCCFG_DUMMY_INTRVL_KEY = 18;
+
+
+  isc_facility = 20;
+  isc_err_base = 335544320;
+  isc_err_factor = 1;
+  isc_arg_end = 0;
+  isc_arg_gds = 1;
+  isc_arg_string = 2;
+  isc_arg_cstring = 3;
+  isc_arg_number = 4;
+  isc_arg_interpreted = 5;
+  isc_arg_vms = 6;
+  isc_arg_unix = 7;
+  isc_arg_domain = 8;
+  isc_arg_dos = 9;
+  isc_arg_mpexl = 10;
+  isc_arg_mpexl_ipc = 11;
+  isc_arg_next_mach = 15;
+  isc_arg_netware = 16;
+  isc_arg_win32 = 17;
+
+  isc_arith_except = 335544321;
+  isc_bad_dbkey = 335544322;
+  isc_bad_db_format = 335544323;
+  isc_bad_db_handle = 335544324;
+  isc_bad_dpb_content = 335544325;
+  isc_bad_dpb_form = 335544326;
+  isc_bad_req_handle = 335544327;
+  isc_bad_segstr_handle = 335544328;
+  isc_bad_segstr_id = 335544329;
+  isc_bad_tpb_content = 335544330;
+  isc_bad_tpb_form = 335544331;
+  isc_bad_trans_handle = 335544332;
+  isc_bug_check = 335544333;
+  isc_convert_error = 335544334;
+  isc_db_corrupt = 335544335;
+  isc_deadlock = 335544336;
+  isc_excess_trans = 335544337;
+  isc_from_no_match = 335544338;
+  isc_infinap = 335544339;
+  isc_infona = 335544340;
+  isc_infunk = 335544341;
+  isc_integ_fail = 335544342;
+  isc_invalid_blr = 335544343;
+  isc_io_error = 335544344;
+  isc_lock_conflict = 335544345;
+  isc_metadata_corrupt = 335544346;
+  isc_not_valid = 335544347;
+  isc_no_cur_rec = 335544348;
+  isc_no_dup = 335544349;
+  isc_no_finish = 335544350;
+  isc_no_meta_update = 335544351;
+  isc_no_priv = 335544352;
+  isc_no_recon = 335544353;
+  isc_no_record = 335544354;
+  isc_no_segstr_close = 335544355;
+  isc_obsolete_metadata = 335544356;
+  isc_open_trans = 335544357;
+  isc_port_len = 335544358;
+  isc_read_only_field = 335544359;
+  isc_read_only_rel = 335544360;
+  isc_read_only_trans = 335544361;
+  isc_read_only_view = 335544362;
+  isc_req_no_trans = 335544363;
+  isc_req_sync = 335544364;
+  isc_req_wrong_db = 335544365;
+  isc_segment = 335544366;
+  isc_segstr_eof = 335544367;
+  isc_segstr_no_op = 335544368;
+  isc_segstr_no_read = 335544369;
+  isc_segstr_no_trans = 335544370;
+  isc_segstr_no_write = 335544371;
+  isc_segstr_wrong_db = 335544372;
+  isc_sys_request = 335544373;
+  isc_stream_eof = 335544374;
+  isc_unavailable = 335544375;
+  isc_unres_rel = 335544376;
+  isc_uns_ext = 335544377;
+  isc_wish_list = 335544378;
+  isc_wrong_ods = 335544379;
+  isc_wronumarg = 335544380;
+  isc_imp_exc = 335544381;
+  isc_random = 335544382;
+  isc_fatal_conflict = 335544383;
+  isc_badblk = 335544384;
+  isc_invpoolcl = 335544385;
+  isc_nopoolids = 335544386;
+  isc_relbadblk = 335544387;
+  isc_blktoobig = 335544388;
+  isc_bufexh = 335544389;
+  isc_syntaxerr = 335544390;
+  isc_bufinuse = 335544391;
+  isc_bdbincon = 335544392;
+  isc_reqinuse = 335544393;
+  isc_badodsver = 335544394;
+  isc_relnotdef = 335544395;
+  isc_fldnotdef = 335544396;
+  isc_dirtypage = 335544397;
+  isc_waifortra = 335544398;
+  isc_doubleloc = 335544399;
+  isc_nodnotfnd = 335544400;
+  isc_dupnodfnd = 335544401;
+  isc_locnotmar = 335544402;
+  isc_badpagtyp = 335544403;
+  isc_corrupt = 335544404;
+  isc_badpage = 335544405;
+  isc_badindex = 335544406;
+  isc_dbbnotzer = 335544407;
+  isc_tranotzer = 335544408;
+  isc_trareqmis = 335544409;
+  isc_badhndcnt = 335544410;
+  isc_wrotpbver = 335544411;
+  isc_wroblrver = 335544412;
+  isc_wrodpbver = 335544413;
+  isc_blobnotsup = 335544414;
+  isc_badrelation = 335544415;
+  isc_nodetach = 335544416;
+  isc_notremote = 335544417;
+  isc_trainlim = 335544418;
+  isc_notinlim = 335544419;
+  isc_traoutsta = 335544420;
+  isc_connect_reject = 335544421;
+  isc_dbfile = 335544422;
+  isc_orphan = 335544423;
+  isc_no_lock_mgr = 335544424;
+  isc_ctxinuse = 335544425;
+  isc_ctxnotdef = 335544426;
+  isc_datnotsup = 335544427;
+  isc_badmsgnum = 335544428;
+  isc_badparnum = 335544429;
+  isc_virmemexh = 335544430;
+  isc_blocking_signal = 335544431;
+  isc_lockmanerr = 335544432;
+  isc_journerr = 335544433;
+  isc_keytoobig = 335544434;
+  isc_nullsegkey = 335544435;
+  isc_sqlerr = 335544436;
+  isc_wrodynver = 335544437;
+  isc_funnotdef = 335544438;
+  isc_funmismat = 335544439;
+  isc_bad_msg_vec = 335544440;
+  isc_bad_detach = 335544441;
+  isc_noargacc_read = 335544442;
+  isc_noargacc_write = 335544443;
+  isc_read_only = 335544444;
+  isc_ext_err = 335544445;
+  isc_non_updatable = 335544446;
+  isc_no_rollback = 335544447;
+  isc_bad_sec_info = 335544448;
+  isc_invalid_sec_info = 335544449;
+  isc_misc_interpreted = 335544450;
+  isc_update_conflict = 335544451;
+  isc_unlicensed = 335544452;
+  isc_obj_in_use = 335544453;
+  isc_nofilter = 335544454;
+  isc_shadow_accessed = 335544455;
+  isc_invalid_sdl = 335544456;
+  isc_out_of_bounds = 335544457;
+  isc_invalid_dimension = 335544458;
+  isc_rec_in_limbo = 335544459;
+  isc_shadow_missing = 335544460;
+  isc_cant_validate = 335544461;
+  isc_cant_start_journal = 335544462;
+  isc_gennotdef = 335544463;
+  isc_cant_start_logging = 335544464;
+  isc_bad_segstr_type = 335544465;
+  isc_foreign_key = 335544466;
+  isc_high_minor = 335544467;
+  isc_tra_state = 335544468;
+  isc_trans_invalid = 335544469;
+  isc_buf_invalid = 335544470;
+  isc_indexnotdefined = 335544471;
+  isc_login = 335544472;
+  isc_invalid_bookmark = 335544473;
+  isc_bad_lock_level = 335544474;
+  isc_relation_lock = 335544475;
+  isc_record_lock = 335544476;
+  isc_max_idx = 335544477;
+  isc_jrn_enable = 335544478;
+  isc_old_failure = 335544479;
+  isc_old_in_progress = 335544480;
+  isc_old_no_space = 335544481;
+  isc_no_wal_no_jrn = 335544482;
+  isc_num_old_files = 335544483;
+  isc_wal_file_open = 335544484;
+  isc_bad_stmt_handle = 335544485;
+  isc_wal_failure = 335544486;
+  isc_walw_err = 335544487;
+  isc_logh_small = 335544488;
+  isc_logh_inv_version = 335544489;
+  isc_logh_open_flag = 335544490;
+  isc_logh_open_flag2 = 335544491;
+  isc_logh_diff_dbname = 335544492;
+  isc_logf_unexpected_eof = 335544493;
+  isc_logr_incomplete = 335544494;
+  isc_logr_header_small = 335544495;
+  isc_logb_small = 335544496;
+  isc_wal_illegal_attach = 335544497;
+  isc_wal_invalid_wpb = 335544498;
+  isc_wal_err_rollover = 335544499;
+  isc_no_wal = 335544500;
+  isc_drop_wal = 335544501;
+  isc_stream_not_defined = 335544502;
+  isc_wal_subsys_error = 335544503;
+  isc_wal_subsys_corrupt = 335544504;
+  isc_no_archive = 335544505;
+  isc_shutinprog = 335544506;
+  isc_range_in_use = 335544507;
+  isc_range_not_found = 335544508;
+  isc_charset_not_found = 335544509;
+  isc_lock_timeout = 335544510;
+  isc_prcnotdef = 335544511;
+  isc_prcmismat = 335544512;
+  isc_wal_bugcheck = 335544513;
+  isc_wal_cant_expand = 335544514;
+  isc_codnotdef = 335544515;
+  isc_xcpnotdef = 335544516;
+  isc_except = 335544517;
+  isc_cache_restart = 335544518;
+  isc_bad_lock_handle = 335544519;
+  isc_jrn_present = 335544520;
+  isc_wal_err_rollover2 = 335544521;
+  isc_wal_err_logwrite = 335544522;
+  isc_wal_err_jrn_comm = 335544523;
+  isc_wal_err_expansion = 335544524;
+  isc_wal_err_setup = 335544525;
+  isc_wal_err_ww_sync = 335544526;
+  isc_wal_err_ww_start = 335544527;
+  isc_shutdown = 335544528;
+  isc_existing_priv_mod = 335544529;
+  isc_primary_key_ref = 335544530;
+  isc_primary_key_notnull = 335544531;
+  isc_ref_cnstrnt_notfound = 335544532;
+  isc_foreign_key_notfound = 335544533;
+  isc_ref_cnstrnt_update = 335544534;
+  isc_check_cnstrnt_update = 335544535;
+  isc_check_cnstrnt_del = 335544536;
+  isc_integ_index_seg_del = 335544537;
+  isc_integ_index_seg_mod = 335544538;
+  isc_integ_index_del = 335544539;
+  isc_integ_index_mod = 335544540;
+  isc_check_trig_del = 335544541;
+  isc_check_trig_update = 335544542;
+  isc_cnstrnt_fld_del = 335544543;
+  isc_cnstrnt_fld_rename = 335544544;
+  isc_rel_cnstrnt_update = 335544545;
+  isc_constaint_on_view = 335544546;
+  isc_invld_cnstrnt_type = 335544547;
+  isc_primary_key_exists = 335544548;
+  isc_systrig_update = 335544549;
+  isc_not_rel_owner = 335544550;
+  isc_grant_obj_notfound = 335544551;
+  isc_grant_fld_notfound = 335544552;
+  isc_grant_nopriv = 335544553;
+  isc_nonsql_security_rel = 335544554;
+  isc_nonsql_security_fld = 335544555;
+  isc_wal_cache_err = 335544556;
+  isc_shutfail = 335544557;
+  isc_check_constraint = 335544558;
+  isc_bad_svc_handle = 335544559;
+  isc_shutwarn = 335544560;
+  isc_wrospbver = 335544561;
+  isc_bad_spb_form = 335544562;
+  isc_svcnotdef = 335544563;
+  isc_no_jrn = 335544564;
+  isc_transliteration_failed = 335544565;
+  isc_start_cm_for_wal = 335544566;
+  isc_wal_ovflow_log_required = 335544567;
+  isc_text_subtype = 335544568;
+  isc_dsql_error = 335544569;
+  isc_dsql_command_err = 335544570;
+  isc_dsql_constant_err = 335544571;
+  isc_dsql_cursor_err = 335544572;
+  isc_dsql_datatype_err = 335544573;
+  isc_dsql_decl_err = 335544574;
+  isc_dsql_cursor_update_err = 335544575;
+  isc_dsql_cursor_open_err = 335544576;
+  isc_dsql_cursor_close_err = 335544577;
+  isc_dsql_field_err = 335544578;
+  isc_dsql_internal_err = 335544579;
+  isc_dsql_relation_err = 335544580;
+  isc_dsql_procedure_err = 335544581;
+  isc_dsql_request_err = 335544582;
+  isc_dsql_sqlda_err = 335544583;
+  isc_dsql_var_count_err = 335544584;
+  isc_dsql_stmt_handle = 335544585;
+  isc_dsql_function_err = 335544586;
+  isc_dsql_blob_err = 335544587;
+  isc_collation_not_found = 335544588;
+  isc_collation_not_for_charset = 335544589;
+  isc_dsql_dup_option = 335544590;
+  isc_dsql_tran_err = 335544591;
+  isc_dsql_invalid_array = 335544592;
+  isc_dsql_max_arr_dim_exceeded = 335544593;
+  isc_dsql_arr_range_error = 335544594;
+  isc_dsql_trigger_err = 335544595;
+  isc_dsql_subselect_err = 335544596;
+  isc_dsql_crdb_prepare_err = 335544597;
+  isc_specify_field_err = 335544598;
+  isc_num_field_err = 335544599;
+  isc_col_name_err = 335544600;
+  isc_where_err = 335544601;
+  isc_table_view_err = 335544602;
+  isc_distinct_err = 335544603;
+  isc_key_field_count_err = 335544604;
+  isc_subquery_err = 335544605;
+  isc_expression_eval_err = 335544606;
+  isc_node_err = 335544607;
+  isc_command_end_err = 335544608;
+  isc_index_name = 335544609;
+  isc_exception_name = 335544610;
+  isc_field_name = 335544611;
+  isc_token_err = 335544612;
+  isc_union_err = 335544613;
+  isc_dsql_construct_err = 335544614;
+  isc_field_aggregate_err = 335544615;
+  isc_field_ref_err = 335544616;
+  isc_order_by_err = 335544617;
+  isc_return_mode_err = 335544618;
+  isc_extern_func_err = 335544619;
+  isc_alias_conflict_err = 335544620;
+  isc_procedure_conflict_error = 335544621;
+  isc_relation_conflict_err = 335544622;
+  isc_dsql_domain_err = 335544623;
+  isc_idx_seg_err = 335544624;
+  isc_node_name_err = 335544625;
+  isc_table_name = 335544626;
+  isc_proc_name = 335544627;
+  isc_idx_create_err = 335544628;
+  isc_wal_shadow_err = 335544629;
+  isc_dependency = 335544630;
+  isc_idx_key_err = 335544631;
+  isc_dsql_file_length_err = 335544632;
+  isc_dsql_shadow_number_err = 335544633;
+  isc_dsql_token_unk_err = 335544634;
+  isc_dsql_no_relation_alias = 335544635;
+  isc_indexname = 335544636;
+  isc_no_stream_plan = 335544637;
+  isc_stream_twice = 335544638;
+  isc_stream_not_found = 335544639;
+  isc_collation_requires_text = 335544640;
+  isc_dsql_domain_not_found = 335544641;
+  isc_index_unused = 335544642;
+  isc_dsql_self_join = 335544643;
+  isc_stream_bof = 335544644;
+  isc_stream_crack = 335544645;
+  isc_db_or_file_exists = 335544646;
+  isc_invalid_operator = 335544647;
+  isc_conn_lost = 335544648;
+  isc_bad_checksum = 335544649;
+  isc_page_type_err = 335544650;
+  isc_ext_readonly_err = 335544651;
+  isc_sing_select_err = 335544652;
+  isc_psw_attach = 335544653;
+  isc_psw_start_trans = 335544654;
+  isc_invalid_direction = 335544655;
+  isc_dsql_var_conflict = 335544656;
+  isc_dsql_no_blob_array = 335544657;
+  isc_dsql_base_table = 335544658;
+  isc_duplicate_base_table = 335544659;
+  isc_view_alias = 335544660;
+  isc_index_root_page_full = 335544661;
+  isc_dsql_blob_type_unknown = 335544662;
+  isc_req_max_clones_exceeded = 335544663;
+  isc_dsql_duplicate_spec = 335544664;
+  isc_unique_key_violation = 335544665;
+  isc_srvr_version_too_old = 335544666;
+  isc_drdb_completed_with_errs = 335544667;
+  isc_dsql_procedure_use_err = 335544668;
+  isc_dsql_count_mismatch = 335544669;
+  isc_blob_idx_err = 335544670;
+  isc_array_idx_err = 335544671;
+  isc_key_field_err = 335544672;
+  isc_no_delete = 335544673;
+  isc_del_last_field = 335544674;
+  isc_sort_err = 335544675;
+  isc_sort_mem_err = 335544676;
+  isc_version_err = 335544677;
+  isc_inval_key_posn = 335544678;
+  isc_no_segments_err = 335544679;
+  isc_crrp_data_err = 335544680;
+  isc_rec_size_err = 335544681;
+  isc_dsql_field_ref = 335544682;
+  isc_req_depth_exceeded = 335544683;
+  isc_no_field_access = 335544684;
+  isc_no_dbkey = 335544685;
+  isc_jrn_format_err = 335544686;
+  isc_jrn_file_full = 335544687;
+  isc_dsql_open_cursor_request = 335544688;
+  isc_ib_error = 335544689;
+  isc_cache_redef = 335544690;
+  isc_cache_too_small = 335544691;
+  isc_log_redef = 335544692;
+  isc_log_too_small = 335544693;
+  isc_partition_too_small = 335544694;
+  isc_partition_not_supp = 335544695;
+  isc_log_length_spec = 335544696;
+  isc_precision_err = 335544697;
+  isc_scale_nogt = 335544698;
+  isc_expec_short = 335544699;
+  isc_expec_long = 335544700;
+  isc_expec_ushort = 335544701;
+  isc_like_escape_invalid = 335544702;
+  isc_svcnoexe = 335544703;
+  isc_net_lookup_err = 335544704;
+  isc_service_unknown = 335544705;
+  isc_host_unknown = 335544706;
+  isc_grant_nopriv_on_base = 335544707;
+  isc_dyn_fld_ambiguous = 335544708;
+  isc_dsql_agg_ref_err = 335544709;
+  isc_complex_view = 335544710;
+  isc_unprepared_stmt = 335544711;
+  isc_expec_positive = 335544712;
+  isc_dsql_sqlda_value_err = 335544713;
+  isc_invalid_array_id = 335544714;
+  isc_extfile_uns_op = 335544715;
+  isc_svc_in_use = 335544716;
+  isc_err_stack_limit = 335544717;
+  isc_invalid_key = 335544718;
+  isc_net_init_error = 335544719;
+  isc_loadlib_failure = 335544720;
+  isc_network_error = 335544721;
+  isc_net_connect_err = 335544722;
+  isc_net_connect_listen_err = 335544723;
+  isc_net_event_connect_err = 335544724;
+  isc_net_event_listen_err = 335544725;
+  isc_net_read_err = 335544726;
+  isc_net_write_err = 335544727;
+  isc_integ_index_deactivate = 335544728;
+  isc_integ_deactivate_primary = 335544729;
+  isc_cse_not_supported = 335544730;
+  isc_tra_must_sweep = 335544731;
+  isc_unsupported_network_drive = 335544732;
+  isc_io_create_err = 335544733;
+  isc_io_open_err = 335544734;
+  isc_io_close_err = 335544735;
+  isc_io_read_err = 335544736;
+  isc_io_write_err = 335544737;
+  isc_io_delete_err = 335544738;
+  isc_io_access_err = 335544739;
+  isc_udf_exception = 335544740;
+  isc_lost_db_connection = 335544741;
+  isc_no_write_user_priv = 335544742;
+  isc_token_too_long = 335544743;
+  isc_max_att_exceeded = 335544744;
+  isc_login_same_as_role_name = 335544745;
+  isc_usrname_too_long = 335544747;
+  isc_password_too_long = 335544748;
+  isc_usrname_required = 335544749;
+  isc_password_required = 335544750;
+  isc_bad_protocol = 335544751;
+  isc_dup_usrname_found = 335544752;
+  isc_usrname_not_found = 335544753;
+  isc_error_adding_sec_record = 335544754;
+  isc_error_modifying_sec_record = 335544755;
+  isc_error_deleting_sec_record = 335544756;
+  isc_error_updating_sec_db = 335544757;
+  isc_err_max = 425;
+
+
+  isc_dyn_version_1 = 1;
+  isc_dyn_eoc = -1;
+
+  isc_dyn_begin = 2;
+  isc_dyn_end = 3;
+  isc_dyn_if = 4;
+  isc_dyn_def_database = 5;
+  isc_dyn_def_global_fld = 6;
+  isc_dyn_def_local_fld = 7;
+  isc_dyn_def_idx = 8;
+  isc_dyn_def_rel = 9;
+  isc_dyn_def_sql_fld = 10;
+  isc_dyn_def_view = 12;
+  isc_dyn_def_trigger = 15;
+  isc_dyn_def_security_class = 120;
+  isc_dyn_def_dimension = 140;
+  isc_dyn_def_generator = 24;
+  isc_dyn_def_function = 25;
+  isc_dyn_def_filter = 26;
+  isc_dyn_def_function_arg = 27;
+  isc_dyn_def_shadow = 34;
+  isc_dyn_def_trigger_msg = 17;
+  isc_dyn_def_file = 36;
+  isc_dyn_mod_database = 39;
+  isc_dyn_mod_rel = 11;
+  isc_dyn_mod_global_fld = 13;
+  isc_dyn_mod_idx = 102;
+  isc_dyn_mod_local_fld = 14;
+  isc_dyn_mod_view = 16;
+  isc_dyn_mod_security_class = 122;
+  isc_dyn_mod_trigger = 113;
+  isc_dyn_mod_trigger_msg = 28;
+  isc_dyn_delete_database = 18;
+  isc_dyn_delete_rel = 19;
+  isc_dyn_delete_global_fld = 20;
+  isc_dyn_delete_local_fld = 21;
+  isc_dyn_delete_idx = 22;
+  isc_dyn_delete_security_class = 123;
+  isc_dyn_delete_dimensions = 143;
+  isc_dyn_delete_trigger = 23;
+  isc_dyn_delete_trigger_msg = 29;
+  isc_dyn_delete_filter = 32;
+  isc_dyn_delete_function = 33;
+  isc_dyn_delete_shadow = 35;
+  isc_dyn_grant = 30;
+  isc_dyn_revoke = 31;
+  isc_dyn_def_primary_key = 37;
+  isc_dyn_def_foreign_key = 38;
+  isc_dyn_def_unique = 40;
+  isc_dyn_def_procedure = 164;
+  isc_dyn_delete_procedure = 165;
+  isc_dyn_def_parameter = 135;
+  isc_dyn_delete_parameter = 136;
+  isc_dyn_mod_procedure = 175;
+  isc_dyn_def_log_file = 176;
+  isc_dyn_def_cache_file = 180;
+  isc_dyn_def_exception = 181;
+  isc_dyn_mod_exception = 182;
+  isc_dyn_del_exception = 183;
+  isc_dyn_drop_log = 194;
+  isc_dyn_drop_cache = 195;
+  isc_dyn_def_default_log = 202;
+
+  isc_dyn_view_blr = 43;
+  isc_dyn_view_source = 44;
+  isc_dyn_view_relation = 45;
+  isc_dyn_view_context = 46;
+  isc_dyn_view_context_name = 47;
+
+  isc_dyn_rel_name = 50;
+  isc_dyn_fld_name = 51;
+  isc_dyn_idx_name = 52;
+  isc_dyn_description = 53;
+  isc_dyn_security_class = 54;
+  isc_dyn_system_flag = 55;
+  isc_dyn_update_flag = 56;
+  isc_dyn_prc_name = 166;
+  isc_dyn_prm_name = 137;
+  isc_dyn_sql_object = 196;
+  isc_dyn_fld_character_set_name = 174;
+
+  isc_dyn_rel_dbkey_length = 61;
+  isc_dyn_rel_store_trig = 62;
+  isc_dyn_rel_modify_trig = 63;
+  isc_dyn_rel_erase_trig = 64;
+  isc_dyn_rel_store_trig_source = 65;
+  isc_dyn_rel_modify_trig_source = 66;
+  isc_dyn_rel_erase_trig_source = 67;
+  isc_dyn_rel_ext_file = 68;
+  isc_dyn_rel_sql_protection = 69;
+  isc_dyn_rel_constraint = 162;
+  isc_dyn_delete_rel_constraint = 163;
+
+  isc_dyn_fld_type = 70;
+  isc_dyn_fld_length = 71;
+  isc_dyn_fld_scale = 72;
+  isc_dyn_fld_sub_type = 73;
+  isc_dyn_fld_segment_length = 74;
+  isc_dyn_fld_query_header = 75;
+  isc_dyn_fld_edit_string = 76;
+  isc_dyn_fld_validation_blr = 77;
+  isc_dyn_fld_validation_source = 78;
+  isc_dyn_fld_computed_blr = 79;
+  isc_dyn_fld_computed_source = 80;
+  isc_dyn_fld_missing_value = 81;
+  isc_dyn_fld_default_value = 82;
+  isc_dyn_fld_query_name = 83;
+  isc_dyn_fld_dimensions = 84;
+  isc_dyn_fld_not_null = 85;
+  isc_dyn_fld_char_length = 172;
+  isc_dyn_fld_collation = 173;
+  isc_dyn_fld_default_source = 193;
+  isc_dyn_del_default = 197;
+  isc_dyn_del_validation = 198;
+  isc_dyn_single_validation = 199;
+  isc_dyn_fld_character_set = 203;
+
+  isc_dyn_fld_source = 90;
+  isc_dyn_fld_base_fld = 91;
+  isc_dyn_fld_position = 92;
+  isc_dyn_fld_update_flag = 93;
+
+  isc_dyn_idx_unique = 100;
+  isc_dyn_idx_inactive = 101;
+  isc_dyn_idx_type = 103;
+  isc_dyn_idx_foreign_key = 104;
+  isc_dyn_idx_ref_column = 105;
+  isc_dyn_idx_statistic = 204;
+
+  isc_dyn_trg_type = 110;
+  isc_dyn_trg_blr = 111;
+  isc_dyn_trg_source = 112;
+  isc_dyn_trg_name = 114;
+  isc_dyn_trg_sequence = 115;
+  isc_dyn_trg_inactive = 116;
+  isc_dyn_trg_msg_number = 117;
+  isc_dyn_trg_msg = 118;
+
+  isc_dyn_scl_acl = 121;
+  isc_dyn_grant_user = 130;
+  isc_dyn_grant_proc = 186;
+  isc_dyn_grant_trig = 187;
+  isc_dyn_grant_view = 188;
+  isc_dyn_grant_options = 132;
+  isc_dyn_grant_user_group = 205;
+
+  isc_dyn_dim_lower = 141;
+  isc_dyn_dim_upper = 142;
+
+  isc_dyn_file_name = 125;
+  isc_dyn_file_start = 126;
+  isc_dyn_file_length = 127;
+  isc_dyn_shadow_number = 128;
+  isc_dyn_shadow_man_auto = 129;
+  isc_dyn_shadow_conditional = 130;
+
+  isc_dyn_log_file_sequence = 177;
+  isc_dyn_log_file_partitions = 178;
+  isc_dyn_log_file_serial = 179;
+  isc_dyn_log_file_overflow = 200;
+  isc_dyn_log_file_raw = 201;
+
+  isc_dyn_log_group_commit_wait = 189;
+   isc_dyn_log_buffer_size = 190;
+  isc_dyn_log_check_point_length = 191;
+  isc_dyn_log_num_of_buffers = 192;
+
+  isc_dyn_function_name = 145;
+  isc_dyn_function_type = 146;
+  isc_dyn_func_module_name = 147;
+  isc_dyn_func_entry_point = 148;
+  isc_dyn_func_return_argument = 149;
+  isc_dyn_func_arg_position = 150;
+  isc_dyn_func_mechanism = 151;
+  isc_dyn_filter_in_subtype = 152;
+  isc_dyn_filter_out_subtype = 153;
+
+  isc_dyn_description2 = 154;
+    isc_dyn_fld_computed_source2 = 155;
+    isc_dyn_fld_edit_string2 = 156;
+  isc_dyn_fld_query_header2 = 157;
+  isc_dyn_fld_validation_source2 = 158;
+  isc_dyn_trg_msg2 = 159;
+  isc_dyn_trg_source2 = 160;
+  isc_dyn_view_source2 = 161;
+  isc_dyn_xcp_msg2 = 184;
+
+  isc_dyn_generator_name = 95;
+  isc_dyn_generator_id = 96;
+
+  isc_dyn_prc_inputs = 167;
+  isc_dyn_prc_outputs = 168;
+  isc_dyn_prc_source = 169;
+  isc_dyn_prc_blr = 170;
+  isc_dyn_prc_source2 = 171;
+
+  isc_dyn_prm_number = 138;
+  isc_dyn_prm_type = 139;
+
+  isc_dyn_xcp_msg = 185;
+
+  isc_dyn_foreign_key_update = 205;
+  isc_dyn_foreign_key_delete = 206;
+  isc_dyn_foreign_key_cascade = 207;
+  isc_dyn_foreign_key_default = 208;
+  isc_dyn_foreign_key_null = 209;
+  isc_dyn_foreign_key_none = 210;
+
+  isc_dyn_def_sql_role = 211;
+  isc_dyn_sql_role_name = 212;
+  isc_dyn_grant_admin_options = 213;
+  isc_dyn_del_sql_role = 214;
+
+  isc_dyn_last_dyn_value = 214;
+
+  isc_sdl_version1 = 1;
+  isc_sdl_eoc = -1;
+  isc_sdl_relation = 2;
+  isc_sdl_rid = 3;
+  isc_sdl_field = 4;
+  isc_sdl_fid = 5;
+  isc_sdl_struct = 6;
+  isc_sdl_variable = 7;
+  isc_sdl_scalar = 8;
+  isc_sdl_tiny_integer = 9;
+  isc_sdl_short_integer = 10;
+  isc_sdl_long_integer = 11;
+  isc_sdl_literal = 12;
+  isc_sdl_add = 13;
+  isc_sdl_subtract = 14;
+  isc_sdl_multiply = 15;
+  isc_sdl_divide = 16;
+  isc_sdl_negate = 17;
+  isc_sdl_eql = 18;
+  isc_sdl_neq = 19;
+  isc_sdl_gtr = 20;
+  isc_sdl_geq = 21;
+  isc_sdl_lss = 22;
+  isc_sdl_leq = 23;
+  isc_sdl_and = 24;
+  isc_sdl_or = 25;
+  isc_sdl_not = 26;
+  isc_sdl_while = 27;
+  isc_sdl_assignment = 28;
+  isc_sdl_label = 29;
+  isc_sdl_leave = 30;
+  isc_sdl_begin = 31;
+  isc_sdl_end = 32;
+  isc_sdl_do3 = 33;
+  isc_sdl_do2 = 34;
+  isc_sdl_do1 = 35;
+  isc_sdl_element = 36;
+
+  isc_interp_eng_ascii = 0;
+  isc_interp_jpn_sjis = 5;
+  isc_interp_jpn_euc = 6;
+
+  isc_fetch_next = 0;
+  isc_fetch_prior = 1;
+  isc_fetch_first = 2;
+  isc_fetch_last = 3;
+  isc_fetch_absolute = 4;
+  isc_fetch_relative = 5;
+
+  SQLDA_VERSION1 = 1;
+
+  SQL_VARYING = 448;
+  SQL_TEXT = 452;
+  SQL_DOUBLE = 480;
+  SQL_FLOAT = 482;
+  SQL_LONG = 496;
+  SQL_SHORT = 500;
+  SQL_DATE = 510;
+  SQL_BLOB = 520;
+  SQL_D_FLOAT = 530;
+  SQL_ARRAY = 540;
+  SQL_QUAD = 550;
+
+
+  isc_blob_untyped = 0;
+
+  isc_blob_text = 1;
+  isc_blob_blr = 2;
+  isc_blob_acl = 3;
+  isc_blob_ranges = 4;
+  isc_blob_summary = 5;
+  isc_blob_format = 6;
+  isc_blob_tra = 7;
+  isc_blob_extfile = 8;
+
+  isc_blob_formatted_memo = 20;
+  isc_blob_paradox_ole = 21;
+  isc_blob_graphic = 22;
+  isc_blob_dbase_ole = 23;
+  isc_blob_typed_binary = 24;
+
+  // TYPESTART  (to quickly get here, look for TYPESTART)
+
+type
+  
+  TISC_ATT_HANDLE = PVoid;
+  PISC_ATT_HANDLE = ^TISC_ATT_HANDLE;
+  TISC_BLOB_HANDLE = PVoid;
+  PISC_BLOB_HANDLE = ^TISC_BLOB_HANDLE;
+  TISC_DB_HANDLE = PVoid;
+  PISC_DB_HANDLE = ^TISC_DB_HANDLE;
+  TISC_FORM_HANDLE = PVoid;
+  PISC_FORM_HANDLE = ^TISC_FORM_HANDLE;
+  TISC_REQ_HANDLE = PVoid;
+  PISC_REQ_HANDLE = ^TISC_REQ_HANDLE;
+  TISC_STMT_HANDLE = PVoid;
+  PISC_STMT_HANDLE = ^TISC_STMT_HANDLE;
+  TISC_SVC_HANDLE = PVoid;
+  PISC_SVC_HANDLE = ^TISC_SVC_HANDLE;
+  TISC_TR_HANDLE = PVoid;
+  PISC_TR_HANDLE = ^TISC_TR_HANDLE;
+  TISC_WIN_HANDLE = PVoid;
+  PISC_WIN_HANDLE = ^TISC_WIN_HANDLE;
+  TISC_CALLBACK = procedure;
+
+  TGDS_QUAD = record
+    gds_quad_high : ISC_LONG;
+    gds_quad_low : UISC_LONG;
+  end;
+  TGDS__QUAD = TGDS_QUAD;
+  TISC_QUAD = TGDS_QUAD;
+  PGDS_QUAD = ^TGDS_QUAD;
+  PGDS__QUAD = ^TGDS__QUAD;
+  PISC_QUAD = ^TISC_QUAD;
+
+  TISC_ARRAY_BOUND = record
+    array_bound_lower : short;
+    array_bound_upper : short;
+  end;
+  PISC_ARRAY_BOUND = ^TISC_ARRAY_BOUND;
+  TISC_ARRAY_DESC = record
+    array_desc_dtype : UChar;
+    array_desc_scale : Char;
+    array_desc_length : UShort;
+    array_desc_field_name : array[0..31] of Char;
+    array_desc_relation_name : array[0..31] of Char;
+    array_desc_dimensions : Short;
+    array_desc_flags : Short;
+    array_desc_bounds : array[0..15] of TISC_ARRAY_BOUND;
+  end;
+  PISC_ARRAY_DESC = ^TISC_ARRAY_DESC;
+
+  TISC_BLOB_DESC = record
+    blob_desc_subtype : Short;
+    blob_desc_charset : Short;
+    blob_desc_segment_size : Short;
+    blob_desc_field_name : array[0..31] of UChar;
+    blob_desc_relation_name : array[0..31] of UChar;
+  end;
+  PISC_BLOB_DESC = ^TISC_BLOB_DESC;
+  
+  TISC_BLOB_CTL_SOURCE_FUNCTION = function : ISC_STATUS; // ISC_FAR
+  PISC_BLOB_CTL = ^TISC_BLOB_CTL;        // ISC_FAR
+  TISC_BLOB_CTL = record
+    ctl_source : TISC_BLOB_CTL_SOURCE_FUNCTION;
+    ctl_source_handle : PISC_BLOB_CTL;
+    ctl_to_sub_type : Short;        
+    ctl_from_sub_type : Short;        
+    ctl_buffer_length : UShort;       
+    ctl_segment_length : UShort;       
+    ctl_bpb_length : UShort;       
+    ctl_bpb : PChar;        
+    ctl_buffer : PUChar;       
+    ctl_max_segment : ISC_LONG;     
+    ctl_number_segments : ISC_LONG;     
+    ctl_total_length : ISC_LONG;     
+    ctl_status : PISC_STATUS;  
+    ctl_data : array[0..7] of long; 
+  end;
+  
+  TBSTREAM = record
+    bstr_blob : PVoid;        
+    bstr_buffer : PChar;        
+    bstr_ptr : PChar;        
+    bstr_length : Short;        
+    bstr_cnt : Short;        
+    bstr_mode : Char;         
+  end;
+  PBSTREAM = ^TBSTREAM;
+
+  TSQLVAR = record
+    sqltype : Short;
+    sqllen : Short;
+    sqldata : PChar;
+    sqlind : PShort;
+    sqlname_length : Short;
+    sqlname : array[0..29] of Char;
+  end;
+  PSQLVAR = ^TSQLVAR;
+
+  TSQLDA = record
+    sqldaid : array[0..7] of Char;
+    sqldabc : ISC_LONG;
+    sqln : Short;
+    sqld : Short;
+    sqlvar : array[0..0] of TSQLVAR;
+  end;
+  PSQLDA = ^TSQLDA;
+
+  TXSQLVAR = record
+    sqltype : Short;     
+    sqlscale : Short;     
+    sqlsubtype : Short;     
+    sqllen : Short;     
+    sqldata : PChar;     
+    sqlind : PShort;    
+    sqlname_length : Short;     
+    sqlname : array[0..31] of Char;
+    relname_length : Short;     
+    relname : array[0..31] of Char;
+    ownname_length : Short;     
+    ownname : array[0..31] of Char;
+    aliasname_length : Short;     
+    aliasname : array[0..31] of Char;
+  end;
+  PXSQLVAR = ^TXSQLVAR;
+
+  TXSQLDA = record
+    version : Short;     
+    pad : smallint;
+    sqldaid : array[0..7] of Char;
+    sqldabc : ISC_LONG;  
+    sqln : Short;     
+    sqld : Short;     
+    sqlvar : array[0..0] of TXSQLVAR;
+  end;
+  PXSQLDA = ^TXSQLDA;
+
+  TISC_START_TRANS = record
+    db_handle : PISC_DB_HANDLE;
+    tpb_length : UShort;   // Should it be long?
+    tpb_address : PChar;
+  end;
+
+  TISC_TEB = record
+    db_handle : PISC_DB_HANDLE;
+    tpb_length : Long;
+    tpb_address : PChar;
+  end;
+  PISC_TEB = ^TISC_TEB;
+  TISC_TEB_ARRAY = array[0..0] of TISC_TEB;
+  PISC_TEB_ARRAY = ^TISC_TEB_ARRAY;
+
+TUserSecData = record
+  sec_flags : Short;
+  uid : Int;
+  gid : int;
+  protocol : Int;
+  server : PChar;
+  user_name : PChar;
+  password : PChar;
+  group_name : PChar;
+  first_name : PChar;
+  middle_name : PChar;
+  last_name : PChar;
+  dba_user_name : PChar;
+  dba_password : PChar;
+  end;
+PUserSecData = ^TUserSecData;
+
+// FUNCSTART  (to quickly get here, look for FUNCSTART)
+
+function isc_attach_database (status_vector : PISC_STATUS;db_name_length: Short;db_name: PChar;db_handle: PISC_DB_HANDLE;parm_buffer_length:Short;parm_buffer: PChar): ISC_STATUS; stdcall; external LibName;
+function isc_array_gen_sdl (status_vector : PISC_STATUS;isc_array_desc: PISC_ARRAY_DESC;isc_arg3 : PShort;isc_arg4 : PChar;isc_arg5 : PShort): ISC_STATUS;stdcall; external LibName;
+function isc_array_get_slice (status_vector : PISC_STATUS;db_handle: PISC_DB_HANDLE;trans_handle : PISC_TR_HANDLE;array_id                 : PISC_QUAD;descriptor               : PISC_ARRAY_DESC;dest_array : PVoid;slice_length : ISC_LONG): ISC_STATUS;stdcall; external LibName;
+function isc_array_lookup_bounds (status_vector : PISC_STATUS;db_handle: PISC_DB_HANDLE;trans_handle : PISC_TR_HANDLE;table_name,column_name              : PChar;descriptor               : PISC_ARRAY_DESC): ISC_STATUS;stdcall; external LibName;
+function isc_array_lookup_desc (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;trans_handle : PISC_TR_HANDLE;table_name,column_name : PChar;descriptor : PISC_ARRAY_DESC) : ISC_STATUS; stdcall; external LibName;
+function isc_array_set_desc (status_vector : PISC_STATUS;table_name : PChar;column_name : PChar;sql_dtype,sql_length,sql_dimensions : PShort;descriptor : PISC_ARRAY_DESC) : ISC_STATUS;stdcall; external LibName;
+function isc_array_put_slice (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;trans_handle : PISC_TR_HANDLE;array_id : PISC_QUAD;descriptor : PISC_ARRAY_DESC;source_array : PVoid;slice_length : PISC_LONG) : ISC_STATUS;stdcall; external LibName;
+procedure isc_blob_default_desc (descriptor : PISC_BLOB_DESC;table_name : PUChar;column_name : PUChar);stdcall; external LibName;
+function isc_blob_gen_bpb (status_vector : PISC_STATUS;to_descriptor,from_descriptor : PISC_BLOB_DESC;bpb_buffer_length : UShort;bpb_buffer : PUChar;bpb_length : PUShort) : ISC_STATUS;stdcall; external LibName;
+function isc_blob_info (status_vector : PISC_STATUS;blob_handle : PISC_BLOB_HANDLE;item_list_buffer_length : Short;item_list_buffer : PChar;result_buffer_length : Short;result_buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_blob_lookup_desc (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;trans_handle : PISC_TR_HANDLE;table_name,column_name : PChar;descriptor : PISC_BLOB_DESC;global : PUChar) : ISC_STATUS;stdcall; external LibName;
+function isc_blob_set_desc (status_vector : PISC_STATUS;table_name,column_name : PChar;subtype,charset,segment_size : Short;descriptor : PISC_BLOB_DESC) : ISC_STATUS;stdcall; external LibName;
+function isc_cancel_blob (status_vector : PISC_STATUS;blob_handle : PISC_BLOB_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_cancel_events (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;event_id : PISC_LONG) : ISC_STATUS;stdcall; external LibName;
+function isc_close_blob (status_vector : PISC_STATUS;blob_handle : PISC_BLOB_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_commit_retaining (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_commit_transaction (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_create_blob (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;blob_handle : PISC_BLOB_HANDLE;blob_id : PISC_QUAD) : ISC_STATUS;stdcall; external LibName;
+function isc_create_blob2 (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;blob_handle : PISC_BLOB_HANDLE;blob_id : PISC_QUAD;bpb_length : Short;bpb_address : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_create_database (status_vector : PISC_STATUS;isc_arg2 : Short;isc_arg3 : PChar;db_handle : PISC_DB_HANDLE;isc_arg5 : Short;isc_arg6 : PChar;isc_arg7 : Short) : ISC_STATUS;stdcall; external LibName;
+function isc_database_info (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;item_list_buffer_length : Short;item_list_buffer : PChar;result_buffer_length : Short;result_buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+procedure isc_decode_date (ib_date : PISC_QUAD;tm_date : PCTimeStructure);stdcall; external LibName;
+function isc_detach_database (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_drop_database (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function SQLDA_LENGTH (n : Long) : Long;function XSQLDA_LENGTH (n : Long) : Long;function isc_dsql_allocate_statement (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;stmt_handle : PISC_STMT_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_alloc_statement2 (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;stmt_handle : PISC_STMT_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_describe (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;dialect : UShort;xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_describe_bind (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;dialect : UShort;xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_exec_immed2 (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;length : UShort;statement : PChar;dialect : UShort;in_xsqlda,out_xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_execute (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;stmt_handle : PISC_STMT_HANDLE;dialect : UShort;xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_execute2 (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;stmt_handle : PISC_STMT_HANDLE;dialect : UShort;in_xsqlda,out_xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_execute_immediate (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;length : UShort;statement : PChar;dialect : UShort;xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_fetch (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;dialect : UShort;xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_finish (db_handle : PISC_DB_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_free_statement (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;options : UShort) : ISC_STATUS; stdcall; external LibName;
+function isc_dsql_insert (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;arg3 : UShort;xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_prepare (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;stmt_handle : PISC_STMT_HANDLE;length : UShort;statement : PChar;dialect : UShort;xsqlda : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_set_cursor_name (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;cursor_name : PChar;_type : UShort) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_sql_info (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;item_length : UShort; items : PChar;buffer_length : UShort; buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+procedure isc_encode_date (tm_date : PCTimeStructure;ib_date : PISC_QUAD);stdcall; external LibName;
+function  isc_event_block (event_buffer : PPChar;result_buffer : PPChar;id_count : UShort;event_list : array of PChar) : ISC_LONG;cdecl; external LibName;
+procedure isc_event_counts (status_vector : PISC_STATUS;buffer_length : Short;event_buffer : PChar;result_buffer : PChar);stdcall; external LibName;
+procedure isc_expand_dpb (dpb : PPChar;dpb_length : PShort;item_list : array of Pointer);cdecl; external LibName;
+function isc_modify_dpb (dpb : PPChar;isc_arg2,isc_arg3 : PShort;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : Short) : Int;stdcall; external LibName;
+function isc_free (isc_arg1 : PChar) : ISC_LONG;stdcall; external LibName;
+function isc_get_segment (status_vector : PISC_STATUS;blob_handle : PISC_BLOB_HANDLE;actual_seg_length : PUShort;seg_buffer_length : UShort;seg_buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_get_slice (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : PISC_QUAD;isc_arg5 : Short;isc_arg6 : PChar;isc_arg7 : Short;isc_arg8 : PISC_LONG;isc_arg9 : ISC_LONG;isc_arg10 : PVoid;isc_arg11 : PISC_LONG) : ISC_STATUS;stdcall; external LibName;
+function isc_interprete (buffer : PChar;status_vector : PPISC_STATUS) : ISC_STATUS;stdcall; external LibName;
+function isc_open_blob (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;blob_handle : PISC_BLOB_HANDLE;blob_id : PISC_QUAD) : ISC_STATUS;stdcall; external LibName;
+function isc_open_blob2 (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;blob_handle : PISC_BLOB_HANDLE;blob_id : PISC_QUAD;bpb_length : Short;bpb_buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_prepare_transaction2 (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;msg_length : Short;msg : PChar) : ISC_STATUS;stdcall; external LibName;
+procedure isc_print_sqlerror (sqlcode : Short;status_vector : PISC_STATUS);stdcall; external LibName;
+function isc_print_status (status_vector : PISC_STATUS) : ISC_STATUS;stdcall; external LibName;
+function isc_put_segment (status_vector : PISC_STATUS;blob_handle : PISC_BLOB_HANDLE;seg_buffer_len : UShort;seg_buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_put_slice (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : PISC_QUAD;isc_arg5 : Short;isc_arg6 : PChar;isc_arg7 : Short;isc_arg8 : PISC_LONG;isc_arg9 : ISC_LONG;isc_arg10 : PVoid) : ISC_STATUS;stdcall; external LibName;
+function isc_que_events (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;event_id : PISC_LONG;length : Short;event_buffer : PChar;event_function : TISC_CALLBACK;event_function_arg : PVoid) : ISC_STATUS;stdcall; external LibName;
+function isc_rollback_transaction (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_start_multiple (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;db_handle_count : Short;teb_vector_address : PISC_TEB) : ISC_STATUS;stdcall; external LibName;
+function isc_start_transaction (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;db_handle_count : Short;db_handle : PISC_DB_HANDLE;tpb_length : UShort;tpb_address : PChar) : ISC_STATUS;cdecl; external LibName;
+function isc_sqlcode (status_vector : PISC_STATUS) : ISC_LONG;stdcall; external LibName;
+procedure isc_sql_interprete (sqlcode : Short;buffer : PChar;buffer_length : Short);stdcall; external LibName;
+function isc_transaction_info (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;item_list_buffer_length : Short;item_list_buffer : PChar;result_buffer_length : Short;result_buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_transact_request (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : UShort;isc_arg7 : PChar;isc_arg8 : UShort;isc_arg9 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_vax_integer (buffer : PChar;length : Short) : ISC_LONG;stdcall; external LibName;
+function isc_add_user (status_vector : PISC_STATUS;user_sec_data : PUserSecData) : ISC_STATUS;stdcall; external LibName;
+function isc_delete_user (status_vector : PISC_STATUS;user_sec_data : PUserSecData) : ISC_STATUS;stdcall; external LibName;
+function isc_modify_user (status_vector : PISC_STATUS;user_sec_data : PUserSecData) : ISC_STATUS;stdcall; external LibName;
+function isc_compile_request (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg4 : Short;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_compile_request2 (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg4 : Short;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_ddl (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : Short;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_prepare_transaction (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_receive (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;isc_arg3,isc_arg4 : Short;isc_arg5 : PVoid;isc_arg6 : Short) : ISC_STATUS;stdcall; external LibName;{$ifndef fpc}function isc_receive2 (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;isc_arg3,isc_arg4 : Short;isc_arg5 : PVoid;isc_arg6,isc_arg7 : Short;isc_arg8 : Long) : ISC_STATUS;stdcall; external LibName;{$endif}
+function isc_reconnect_transaction (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : Short;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_release_request (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_request_info (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;isc_arg3 : Short;isc_arg4 : Short;isc_arg5 : PChar;isc_arg6 : Short;isc_arg7 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_seek_blob (status_vector : PISC_STATUS;blob_handle : PISC_BLOB_HANDLE;isc_arg3 : Short;isc_arg4 : ISC_LONG;isc_arg5 : PISC_LONG) : ISC_STATUS;stdcall; external LibName;
+function isc_send (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;isc_arg3,isc_arg4 : Short;isc_arg5 : PVoid;isc_arg6 : Short) : ISC_STATUS;stdcall; external LibName;
+function isc_start_and_send (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4,isc_arg5 : Short;isc_arg6 : PVoid;isc_arg7 : Short) : ISC_STATUS;stdcall; external LibName;
+function isc_start_request (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : Short) : ISC_STATUS;stdcall; external LibName;
+function isc_unwind_request (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;isc_arg3 : Short) : ISC_STATUS;stdcall; external LibName;
+function isc_wait_for_event (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;length : Short;event_buffer,result_buffer : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_close (status_vector : PISC_STATUS;isc_arg2 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_declare (status_vector : PISC_STATUS;isc_arg2,isc_arg3 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_describe (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : PSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_describe_bind (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : PSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_execute (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;isc_arg3 : PChar;isc_arg4 : PSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_execute_immediate (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : PShort;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_fetch (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : PSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_open (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;isc_arg3 : PChar;isc_arg4 : PSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_prepare (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : PChar;isc_arg5 : PShort;isc_arg6 : PChar;isc_arg7 : PSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_execute_m (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;statement_handle : PISC_STMT_HANDLE;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : UShort;isc_arg7 : UShort;isc_arg8 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_execute2_m (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;statement_handle : PISC_STMT_HANDLE;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : UShort;isc_arg7 : UShort;isc_arg8 : PChar;isc_arg9 : UShort;isc_arg10 : PChar;isc_arg11 : UShort;isc_arg12 : UShort;isc_arg13 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_execute_immediate_m (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : UShort;isc_arg7 : UShort;isc_arg8 : PChar;isc_arg9 : UShort;isc_arg10 : UShort;isc_arg11 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_exec_immed3_m (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : UShort;isc_arg7 : UShort;isc_arg8 : PChar;isc_arg9 : UShort;isc_arg10 : UShort;isc_arg11 : PChar;isc_arg12 : UShort;isc_arg13 : PChar;isc_arg14 : UShort;isc_arg15 : UShort;isc_arg16 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_fetch_m (status_vector : PISC_STATUS;statement_handle : PISC_STMT_HANDLE;isc_arg3 : UShort;isc_arg4 : PChar;isc_arg5 : UShort;isc_arg6 : UShort;isc_arg7 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_insert_m (status_vector : PISC_STATUS;statement_handle : PISC_STMT_HANDLE;isc_arg3 : UShort;isc_arg4 : PChar;isc_arg5 : UShort;isc_arg6 : UShort;isc_arg7 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_prepare_m (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;statement_handle : PISC_STMT_HANDLE;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : UShort;isc_arg7 : UShort;isc_arg8 : PChar;isc_arg9 : UShort;isc_arg10 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_release (status_vector : PISC_STATUS;isc_arg2 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_close (status_vector : PISC_STATUS;isc_arg2 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_declare (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_describe (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : UShort;isc_arg4 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_describe_bind (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : UShort;isc_arg4 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_execute (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;isc_arg3 : PChar;isc_arg4 : UShort;isc_arg5 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_execute2 (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;isc_arg3 : PChar;isc_arg4 : UShort;isc_arg5 : PXSQLDA;isc_arg6 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_execute_immed (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : UShort;isc_arg5 : PChar;isc_arg6 : UShort;isc_arg7 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_fetch (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : UShort;isc_arg4 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_open (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;isc_arg3 : PChar;isc_arg4 : UShort;isc_arg5 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_open2 (status_vector : PISC_STATUS;tran_handle : PISC_TR_HANDLE;isc_arg3 : PChar;isc_arg4 : UShort;isc_arg5 : PXSQLDA;isc_arg6 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_insert (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : UShort;isc_arg4 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_prepare (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;isc_arg4 : PChar;isc_arg5 : UShort;isc_arg6 : PChar;isc_arg7 : UShort;isc_arg8 : PXSQLDA) : ISC_STATUS;stdcall; external LibName;
+function isc_embed_dsql_release (status_vector : PISC_STATUS;isc_arg2 : PChar) : ISC_STATUS;stdcall; external LibName;
+function BLOB_open (blob_handle : TISC_BLOB_HANDLE;isc_arg2 : PChar;isc_arg3 : int) : PBSTREAM;stdcall; external LibName;
+function BLOB_put (isc_arg1 : char;isc_arg2 : PBSTREAM) : Int;stdcall; external LibName;
+function BLOB_close (isc_arg1 : PBSTREAM) : Int;stdcall; external LibName;
+function BLOB_get (isc_arg1 : PBSTREAM) : Int;stdcall; external LibName;
+function BLOB_display (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar) : Int;stdcall; external LibName;
+function BLOB_dump (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar) : Int;stdcall; external LibName;
+function BLOB_edit (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar) : Int;stdcall; external LibName;
+function BLOB_load (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar) : Int;stdcall; external LibName;
+function BLOB_text_dump (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar) : Int;stdcall; external LibName;
+function BLOB_text_load (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar) : Int;stdcall; external LibName;
+function Bopen (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar) : Int;stdcall; external LibName;
+function isc_ftof (isc_arg1 : PChar;isc_arg2 : UShort;isc_arg3 : PChar;isc_arg4 : UShort) : ISC_LONG;stdcall; external LibName;
+function isc_print_blr (isc_arg1 : PChar;isc_arg2 : TISC_CALLBACK;isc_arg3 : PVoid;isc_arg4 : Short) : ISC_STATUS;stdcall; external LibName;
+procedure isc_set_debug (isc_arg1 : Int);stdcall; external LibName;
+procedure isc_qtoq (isc_arg1 : PISC_QUAD;isc_arg2 : PISC_QUAD);stdcall; external LibName;
+procedure isc_vtof (isc_arg1 : PChar;isc_arg2 : PChar;isc_arg3 : UShort);stdcall; external LibName;
+procedure isc_vtov (isc_arg1 : PChar;isc_arg2 : PChar;isc_arg3 : Short);stdcall; external LibName;
+function isc_version (db_handle : PISC_DB_HANDLE;isc_arg2 : TISC_CALLBACK;isc_arg3 : PVoid) : Int;stdcall; external LibName;
+function isc_attach_service (status_vector : PISC_STATUS;isc_arg2 : UShort;isc_arg3 : PChar;service_handle : PISC_SVC_HANDLE;isc_arg5 : UShort;isc_arg6 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_detach_service (status_vector : PISC_STATUS;service_handle : PISC_SVC_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_query_service (status_vector : PISC_STATUS;service_handle : PISC_SVC_HANDLE;isc_arg3 : UShort;isc_arg4 : PChar;isc_arg5 : UShort;isc_arg6 : PChar;isc_arg7 : UShort;isc_arg8 : PChar) : ISC_STATUS;stdcall; external LibName;
+
+{$ifdef IB_CURSORS}
+function isc_embed_dsql_fetch2 (status_vector : PISC_STATUS;isc_arg2 : PChar;isc_arg3 : UShort;isc_arg4 : PXSQLDA;isc_arg5 : UShort;isc_arg6 : Long) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_fetch2 (status_vector : PISC_STATUS;stmt_handle : PISC_STMT_HANDLE;dialect : UShort;xsqlda : PXSQLDA;isc_arg5 : UShort;isc_arg6 : Long) : ISC_STATUS;stdcall; external LibName;
+function isc_dsql_fetch2_m (status_vector : PISC_STATUS;statement_handle : PISC_STMT_HANDLE;isc_arg3 : UShort;isc_arg4 : PChar;isc_arg5 : UShort;isc_arg6 : UShort;isc_arg7 : PChar;isc_arg8 : UShort;isc_arg9 : Long) : ISC_STATUS;stdcall; external LibName;
+{$endif}
+
+{$ifdef IB_Extensions}
+function Bopen2 (isc_arg1 : PISC_QUAD;db_handle : TISC_DB_HANDLE;tran_handle : TISC_TR_HANDLE;isc_arg4 : PChar;isc_arg5 : UShort) : PBSTREAM;stdcall; external LibName;
+function isc_reset_fpe (isc_arg1 : UShort) : ISC_LONG;stdcall; external LibName;
+function isc_compile_map (status_vector : PISC_STATUS;form_handle : PISC_FORM_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg4 : PShort;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_compile_menu (status_vector : PISC_STATUS;form_handle : PISC_FORM_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg4 : PShort;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_compile_sub_map (status_vector : PISC_STATUS;win_handle : PISC_WIN_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg4 : PShort;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_create_window (status_vector : PISC_STATUS;win_handle : PISC_WIN_HANDLE;isc_arg3 : PShort;isc_arg4 : PChar;isc_arg5 : PShort;isc_arg6 : PShort) : ISC_STATUS;stdcall; external LibName;
+function isc_delete_window (status_vector : PISC_STATUS;win_handle : PISC_WIN_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_drive_form (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;win_handle : PISC_WIN_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg6 : PUChar;isc_arg7 : PUChar) : ISC_STATUS;stdcall; external LibName;
+function isc_drive_menu (status_vector : PISC_STATUS;win_handle : PISC_WIN_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg4 : PShort;isc_arg5 : PChar;isc_arg6 : PShort;isc_arg7 : PChar;isc_arg8 : PShort;isc_arg9 : PShort;isc_arg10 : PChar;isc_arg11 : PISC_LONG) : ISC_STATUS;stdcall; external LibName;
+function isc_form_delete (status_vector : PISC_STATUS;form_handle : PISC_FORM_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_form_fetch (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg5 : PUChar) : ISC_STATUS;stdcall; external LibName;
+function isc_form_insert (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg5 : PUChar) : ISC_STATUS;stdcall; external LibName;
+function isc_get_entree (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;isc_arg3 : PShort;isc_arg4 : PChar;isc_arg5 : PISC_LONG;isc_arg6 : PShort) : ISC_STATUS;stdcall; external LibName;
+function isc_initialize_menu (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_menu (status_vector : PISC_STATUS;win_handle : PISC_WIN_HANDLE;request_handle : PISC_REQ_HANDLE;isc_arg4 : PShort;isc_arg5 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_load_form (status_vector : PISC_STATUS;db_handle : PISC_DB_HANDLE;tran_handle : PISC_TR_HANDLE;form_handle : PISC_FORM_HANDLE;isc_arg5 : PShort;isc_arg6 : PChar) : ISC_STATUS;stdcall; external LibName;
+function isc_pop_window (status_vector : PISC_STATUS;win_handle : PISC_WIN_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_put_entree (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE;isc_arg3 : PShort;isc_arg4 : PChar;isc_arg5 : PISC_LONG) : ISC_STATUS;stdcall; external LibName;
+function isc_reset_form (status_vector : PISC_STATUS;request_handle : PISC_REQ_HANDLE) : ISC_STATUS;stdcall; external LibName;
+function isc_suspend_window (status_vector : PISC_STATUS;win_handle : PISC_WIN_HANDLE) : ISC_STATUS;stdcall; external LibName;
+{$endif}
+
+
+implementation
+
+function SQLDA_LENGTH(n: Long): Long;
+begin  
+  result := sizeof(TSQLDA) + ((n - 1) * sizeof(TSQLVAR));
+end;
+
+
+function XSQLDA_LENGTH(n: Long): Long;
+begin
+  result := SizeOf(TXSQLDA) + ((n - 1) * SizeOf(TXSQLVAR));
+end;
+
+
+function getb(p: PBSTREAM): Char;
+begin
+  Dec(p^.bstr_cnt);
+  if (p^.bstr_cnt >= 0) then 
+    begin
+    Result := Chr(Byte(p^.bstr_ptr^) and 248);
+    Inc(p^.bstr_ptr);
+    end 
+  else
+    result := Char(BLOB_get(p));
+end;
+
+
+function putb(x: Char; p: PBSTREAM): Int;
+begin
+  Dec(p^.bstr_cnt);
+  if (x = Chr(Byte('n') - Byte('a'))) or (p^.bstr_cnt = 0) then
+    result := BLOB_put(x, p)
+      else
+      begin    p^.bstr_ptr^ := Char(x);
+    result := Byte(x);
+    Inc(p^.bstr_ptr^);
+  end;
+end;
+
+
+function putbx(x: Char; p: PBSTREAM): Int;
+begin  Dec(p^.bstr_cnt);
+  if (p^.bstr_cnt = 0) then    
+    result := BLOB_put(x, p)
+  else 
+    begin
+    p^.bstr_ptr^ := Char(x);
+    Inc(p^.bstr_ptr^);
+    result := Byte(x);
+  end;
+end;
+
+
+end.

+ 37 - 0
packages/ibase/mkdb

@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Script to create a table 'FPdev' and to fill it with data.
+# The script accepts an optional argument : 
+# A database to connect to. (default 'testdb')
+#
+# Collect  the database
+DATABASE=${1-./testdb.gdb}
+# Choose one of the following:
+# ISQL=isql
+ISQL=/opt/interbase/i586_V4.0G/bin/isql
+#
+# Don't edit after this.
+#
+echo -n "Creating and filling table FPdev in database $DATABASE..."
+${ISQL} << EOF >/dev/null 2>&1
+CREATE DATABASE "$DATABASE";
+create table FPdev ( 
+id INT NOT NULL,
+UserName CHAR(255),
+InstEmail CHAR(255),
+PRIMARY KEY (id));
+insert into FPdev values ('1','Michael Van Canneyt','[email protected]');
+insert into FPdev values ('2','Florian Klaempfl','[email protected]');
+insert into FPdev values ('3','Carl-Eric Codere','[email protected]');
+insert into FPdev values ('4','Daniel Mantione','[email protected]');
+insert into FPdev values ('5','Pierre Muller','[email protected]');
+insert into FPdev values ('6','Jonas Maebe','[email protected]');
+insert into FPdev values ('7','Peter Vreman','[email protected]');
+insert into FPdev values ('8','Gerry Dubois','[email protected]');
+EOF
+if [ ! $? = 0 ]; then
+  echo "Failed."
+else
+  echo "Done."
+fi
+# Ready

+ 26 - 0
packages/ibase/mkdb.bat

@@ -0,0 +1,26 @@
+@echo off
+rem
+rem Set database
+rem 
+set DATABASE=testdb.gdb
+if not "$1"=="" goto NODB
+set DATABASE=%1
+:NODB
+rem
+rem  Choose one of the following:
+rem 
+set ISQL=isql
+rem set ISQL=/opt/interbase/i586_V4.0G/bin/isql
+#
+# Don't edit after this.
+#
+echo Creating and filling table FPdev in database %DATABASE%...
+echo CREATE DATABASE "%DATABASE%"; >mkdb.sql
+type mkdb.sqd >>mkdb.sql
+%ISQL% <mkdb.sql >nul
+if not errorlevel goto ok
+echo Failed.
+goto end
+:ok
+  echo "Done."
+:end

+ 13 - 0
packages/ibase/mkdb.sqd

@@ -0,0 +1,13 @@
+create table FPdev ( 
+id INT NOT NULL,
+UserName CHAR(255),
+InstEmail CHAR(255),
+PRIMARY KEY (id));
+insert into FPdev values ('1','Michael Van Canneyt','[email protected]');
+insert into FPdev values ('2','Florian Klaempfl','[email protected]');
+insert into FPdev values ('3','Carl-Eric Codere','[email protected]');
+insert into FPdev values ('4','Daniel Mantione','[email protected]');
+insert into FPdev values ('5','Pierre Muller','[email protected]');
+insert into FPdev values ('6','Jonas Maebe','[email protected]');
+insert into FPdev values ('7','Peter Vreman','[email protected]');
+insert into FPdev values ('8','Gerry Dubois','[email protected]');

+ 147 - 0
packages/ibase/testib.pp

@@ -0,0 +1,147 @@
+program testib;
+
+uses Ibase, strings;
+
+{$h-}
+
+Const
+     { Change to YOUR database server }
+     
+     ServerDb : pchar =  'testdb.gdb';
+     
+     { CHange to YOUR username and password. These may be empty }
+     
+      username = '';
+      PWD = '';
+      
+     { Don't edit after this } 
+     
+      dbinfo : array [1..3] of byte 
+             = (isc_info_page_size,isc_info_num_buffers,isc_info_end);
+      query : pchar = 'select * from FPDev;';
+      flag : array[0..2] of shortint = (0,0,0);
+      
+Type 
+  TStatusArray = Array[0..19] of ISC_Status;
+             
+Var
+  DB : Tisc_db_handle;
+  TA : TISC_tr_handle;
+  statement : TISC_stmt_handle;
+  DPB : String;
+  Status : TStatusArray;
+  sqlda : PXSQLDA;
+  name,email : String;
+  i,id : longint;
+  fs : longint;
+           
+Function CheckIBstatus (Const Status : TStatusArray) : Boolean; 
+    
+begin
+  Result:=Not ((Status[0]=1) and (status[1]<>0))
+end;
+
+Procedure DoError (Const status : TStatusArray);
+
+begin
+  Writeln ('Failed:');
+  isc_print_status(@status);
+  halt(1);
+end;
+
+begin
+  db:=Nil;
+  dpb:=chr(isc_dpb_version1);
+  If UserName<>'' then
+    begin
+    dpb:=dpb+chr(isc_dpb_user_name)+chr(length(UserName))+username;
+    If pwd<>'' then
+      dpb:=dpb+chr(isc_dpb_password)+chr(length(pwd))+pwd;
+    end;
+  Write ('Connecting to ',serverdb,': ');
+  isc_attach_database(@Status[0],strlen(serverdb),serverdb,@db,length(dpb),@dpb[1]);
+  if Not CheckIBStatus(Status) then 
+    DoError(status)
+  else
+    Writeln ('OK.');
+  Write ('Starting Transaction : ');
+  If ISC_start_transaction (@status[0],@ta,1,@db,0,Nil)<>0 then
+    DoError(Status)
+  else
+    Writeln ('OK.');
+  getmem (sqlda,XSQLDA_Length(3));
+  sqlda^.sqln:=3;
+  sqlda^.sqld:=3;
+  sqlda^.version:=1;
+  Write('Allocating statement : ');
+  If isc_dsql_allocate_statement(@status ,@db,@statement)<>0 then
+    DoError(Status)
+  else
+    Writeln ('OK.');
+  Write ('Preparing statement : ');
+  if ISC_dsql_prepare(@status,@ta,@statement,0,query,1,sqlda)<>0 then
+    DoError(Status)
+  else
+    Writeln ('OK.');
+  I:=0;
+  With sqlda^.sqlvar[i] do
+    begin
+    sqldata := @id;
+    sqltype := sql_long;
+    sqlind  := @flag[0];
+    end;
+  inc(i);
+  With sqlda^.sqlvar[i] do
+    begin
+    sqldata := @name[1];
+    sqltype := sql_text;
+    sqlind  := @flag[1];
+    end;
+  inc(i);
+  With sqlda^.sqlvar[i] do
+    begin
+    sqldata := @email[1];
+    sqltype := sql_text;
+    sqlind  := @flag[2];
+    end;
+  Write ('Executing statement : ');
+  if isc_dsql_execute(@status,@ta,@statement,1,Nil)<>0 then
+    DoError(Status)
+  else
+    Writeln ('OK.');
+  
+  Writeln ('Fetching rows :');
+  Repeat
+    FS:=isc_dsql_fetch(@status,@statement,1,sqlda);
+    If FS=0 then
+      begin
+      I:=255;
+      While Name[I]=' ' do Dec(i);
+      setlength(Name,i);
+      I:=255;
+      While Email[I]=' ' do Dec(i);
+      setlength(email,i);
+      Writeln ('(',ID,',',name,',',email,')');
+      end;
+  until FS<>0;
+  If FS<>100 then
+    DoError(status)
+  else
+    Writeln ('At end.');
+  Write ('Freeing statement : ');
+  if isc_dsql_free_statement(@status,@statement,DSQL_Close)<>0 then
+    DoError(Status)
+  else
+    Writeln ('OK.');
+  Write ('Committing transaction : ');
+  If ISC_Commit_transaction(@status,@ta)<>0 then
+    doerror(status)
+  else  
+    Writeln ('OK.');
+  Write ('Disconnecting from database: ');
+  isc_detach_database(@status,@db);
+  If CheckIBStatus (Status) Then
+    Writeln ('OK.')
+  else
+    doerror(status);
+end.

+ 128 - 0
packages/inet/Makefile

@@ -0,0 +1,128 @@
+#
+#   $Id$
+#   Copyright (c) 1999 by the Free Pascal Development Team
+#
+#   Makefile for <template> for Free Pascal
+#
+#   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.
+#
+
+
+#####################################################################
+# Defaults
+#####################################################################
+
+# Where are the include files located
+INC=
+PROCINC=
+OSINC=
+
+# Needed options, without it won't compile
+NEEDOPT=
+
+# Needed unit dir, which is searched as the first path
+NEEDUNITDIR=
+
+# Where need we to place the executables/ppu/objects
+TARGETDIR=
+UNITTARGETDIR=
+
+# As default make only the units
+#DEFAULTUNITS=1
+
+
+#####################################################################
+# Real targets
+#####################################################################
+
+UNITOBJECTS=inet
+EXEOBJECTS=testinet pfinger
+
+
+#####################################################################
+# Common targets
+#####################################################################
+
+.PHONY: all clean install info \
+        staticlib sharedlib libsclean \
+        staticinstall sharedinstall libinstall \
+        
+all: testfpcmake fpc_all
+
+clean: testfpcmake fpc_clean
+
+install: testfpcmake fpc_install
+
+info: testfpcmake fpc_info
+
+staticlib: testfpcmake fpc_staticlib
+
+sharedlib: testfpcmake fpc_sharedlib
+
+libsclean: testfpcmake fpc_libsclean
+
+staticinstall: testfpcmake fpc_staticinstall
+
+sharedinstall: testfpcmake fpc_sharedinstall
+
+libinstall: testfpcmake fpc_libinstall
+
+
+#####################################################################
+# Include default makefile
+#####################################################################
+
+# test if FPCMAKE is still valid
+ifdef FPCMAKE
+ifeq ($(strip $(wildcard $(FPCMAKE))),)
+FPCDIR=
+FPCMAKE=
+endif
+endif
+
+ifndef FPCDIR
+ifdef DEFAULTFPCDIR
+FPCDIR=$(DEFAULTFPCDIR)
+endif
+endif
+
+ifndef FPCMAKE
+ifdef FPCDIR
+FPCMAKE=$(FPCDIR)/makefile.fpc
+else
+FPCMAKE=makefile.fpc
+endif
+endif
+
+override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
+ifeq ($(FPCMAKE),)
+testfpcmake:
+	@echo makefile.fpc not found!
+	@echo Check the FPCMAKE and FPCDIR environment variables.
+	@exit
+else
+include $(FPCMAKE)
+testfpcmake:
+endif
+
+
+
+#####################################################################
+# Dependencies
+#####################################################################
+
+testinet$(EXEEXT): testinet$(PASEXT) inet$(PPUEXT)
+pfinger$(EXEEXT): pfinger$(PASEXT) inet$(PPUEXT)
+
+
+#
+# $Log$
+# Revision 1.1  1999-05-12 00:11:26  michael
+# initial import
+#
+#

+ 556 - 0
packages/inet/inet.pp

@@ -0,0 +1,556 @@
+Unit inet;
+
+{ --------------------------------------------------------------------
+  Unit for internet domain calls.
+  Copyright (C) 1997  Michael Van Canneyt
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 1, or (at your option)
+  any later version.
+
+  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.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+  ChangeLog
+  ---------
+
+  Current version is 0.6
+   
+  Version          Date             Remarks
+  -------          ----             ----
+  0.1              07/16/97         Unit started. Michael.
+  0.2              07/06/98         Updated for version 0.99.5 
+  0.4              08/01/98         Objects for name lookup implemented
+  0.5              09/10/98         Updated calls for 0.99.8.
+  0.6              05/04/99         Added explicit asmmode.
+  
+  ------------------------------------------------------------------- }
+
+
+interface
+
+{$LINKLIB c}
+
+Const 
+  { Net type }
+  AF_INET = 2;
+  
+  { Error constants. Returned by LastError method of THost, TNet}
+  
+  NETDB_INTERNAL= -1;       { see errno }
+  NETDB_SUCCESS = 0;        { no problem }
+  HOST_NOT_FOUND= 1;        { Authoritative Answer Host not found }
+  TRY_AGAIN	= 2;        { Non-Authoritive Host not found, or SERVERFAIL }
+  NO_RECOVERY	= 3;        { Non recoverable errors, FORMERR, REFUSED, NOTIMP }
+  NO_DATA	= 4;        { Valid name, no data record of requested type }
+  NO_ADDRESS	= NO_DATA;  { no address, look for MX record }
+
+
+  
+
+Type
+  THostAddr = array[1..4] of byte;
+  PHostAddr = ^THostAddr;
+
+Const 
+  NoAddress : THostAddr = (0,0,0,0);
+
+Type
+
+  { THostEnt Object }
+  THostEnt = record
+    Name     : pchar;   { Official name }
+    Aliases  : ppchar;  { Null-terminated list of aliases}
+    Addrtype : longint; { Host address type }
+    Addrlen  : longint; { Length of address }
+    Addrlist : ppchar;  { null-terminated list of adresses }
+  end;
+  PHostEnt = ^THostEnt;
+  
+  { TNetEnt object }
+  TNetEnt = record
+    Name     : pchar;   { Official name }
+    Aliases  : ppchar;  { Nill-terminated alias list }
+    AddrType : longint; { Net address type }
+    net      : Longint; { Network number }  
+  end;
+  PNetEnt = ^TNetEnt; 
+
+  TServEnt = record
+    name    : pchar;    { Service name }
+    aliases : ppchar;   { Null-terminated alias list }
+    port    : longint;  { Port number }
+    proto   : pchar;    { Protocol to use } 
+  end;
+  PServEnt = ^TServEnt;
+
+  { Pascal Wrapper objects }
+
+  TSelectType = (stFirst,stNext,stPrevious);
+   
+  THost = Object
+    FHostEntry : PHostEnt;
+    FAlias,FAddr,FError : Longint;
+    Constructor NameLookup (HostName : String);
+    Constructor AddressLookup (Const Address : THostAddr);
+    Destructor Done;
+    Function Name : String;
+    Function GetAddress (Select : TSelectType) : String;
+    Function GetAlias (Select : TSelectType) : String;
+    Function IPAddress : THostAddr;
+    Function IPString : String;
+    Function LastError : Longint;
+  end;
+
+  TNet = Object
+    FNetEntry : PNetEnt;
+    FAlias,FError : Longint;
+    Constructor NameLookup (NetName : String);
+    Constructor AddressLookup (Const Address : Longint);
+    Destructor Done;
+    Function Name : String;
+    Function GetAlias (Select : TSelectType) : String;
+    Function IPAddress : Longint;
+    Function IPString : String;
+    Function LastError : Longint;
+  end;
+
+  TService = Object
+    FServiceEntry : PServEnt;
+    FAlias,FError : Longint;
+    Constructor NameLookup (ServiceName,Proto : String);
+    Constructor PortLookup (APort : Longint; Proto: string);
+    Destructor Done;
+    Function Name : String;
+    Function Protocol : String;
+    Function GetAlias (Select : TSelectType) : String;
+    Function Port : Longint;
+    Function LastError : Longint;
+  end;
+     
+     
+
+{ Pascal style calls }
+
+function HostAddrToStr (Entry : THostAddr) : String;
+function StrToHostAddr (IP : String) : THostAddr;
+function NetAddrToStr (Entry : Longint) : String;
+function StrToNetAddr (IP : String) : Longint;
+Function HostToNet (Host : Longint) : Longint;
+Function NetToHost (Net : Longint) : Longint;
+Function ShortHostToNet (Host : integer) : integer;
+Function ShortNetToHost (Net : integer) : integer;
+
+{ C style calls, linked in from Libc }
+
+function GetHostEnt : PHostEnt;cdecl;
+function GetHostByName ( HostName : Pchar) : PHostEnt;cdecl;
+function GetHostByAddr ( Addr : PHostAddr; Len : Longint; HType : Longint) : PHostEnt;cdecl;
+procedure SetHostEnt (stayopen : longint);cdecl;
+procedure EndHostEnt;cdecl;
+
+function GetNetEnt : PNetEnt;cdecl;
+function GetNetByName ( Name : pchar) : PNetEnt;cdecl;
+function GetNetByAddr ( Net : Longint; NetType : Longint) : PNetEnt;cdecl;
+procedure SetNetEnt ( Stayopen : Longint);cdecl;
+procedure EndNetEnt;cdecl;
+
+function getservent : PServEnt;cdecl;
+function getservbyname (name : pchar  ; protocol : pchar) : PServEnt;cdecl;
+function getservbyport (port : longint; protocol : pchar) : PServEnt;cdecl;
+
+procedure setservent (StayOpen : longint);cdecl;
+procedure endservent;cdecl;
+
+
+implementation
+
+Uses strings;
+
+function gethostent : PHostEnt; cdecl; external;
+function gethostbyname ( Name : Pchar) : PHostEnt; cdecl; external;
+function gethostbyaddr ( Addr : PHostAddr; Len : Longint; HType : Longint) : PHostent ; cdecl; external;
+procedure sethostent (stayopen : longint); cdecl; external;
+procedure endhostent; cdecl; external;
+
+function getnetent : PNetEnt; cdecl; external;
+function getnetbyname ( Name : pchar) : PNetEnt; cdecl; external; 
+function getnetbyaddr ( Net : Longint; nettype : Longint) : PNetEnt; cdecl; external;
+procedure setnetent ( Stayopen : Longint);  cdecl; external;
+procedure endnetent; cdecl; external;
+
+function getservent : PServEnt; cdecl; external;
+function getservbyname (name : pchar  ; protocol : pchar) : PServEnt; cdecl; external;
+function getservbyport (port : longint; protocol : pchar) : PServEnt; cdecl; external;
+procedure setservent (StayOpen : longint); cdecl; external;
+procedure endservent; cdecl; external;
+
+
+Function GetDNSError : Longint;
+{$asmmode direct}
+
+begin
+  asm
+  movl h_errno,%eax
+  movl %eax,__RESULT
+  end ['EAX'];
+end;
+
+function HostAddrToStr (Entry : THostAddr) : String;
+
+Var Dummy : String[4];
+    I : Longint;
+    
+begin
+  HostAddrToStr:='';
+  For I:=1 to 4 do
+   begin
+   Str(Entry[I],Dummy);
+   HostAddrToStr:=HostAddrToStr+Dummy;
+   If I<4 Then HostAddrToStr:=HostAddrToStr+'.';
+   end;
+end;
+
+function StrToHostAddr(IP : String) : THostAddr ;
+
+Var Dummy : String[4];
+    I : Longint;
+    J : Integer;
+    Temp : THostAddr;
+    
+begin
+  StrToHostAddr:=NoAddress;
+  For I:=1 to 4 do
+   begin
+   If I<4 Then 
+     begin
+     J:=Pos('.',IP);
+     If J=0 then exit;
+     Dummy:=Copy(IP,1,J-1);
+     Delete (IP,1,J);
+     end
+   else 
+     Dummy:=IP;
+   Val (Dummy,Temp[I],J);
+   If J<>0 then Exit;
+   end;
+ StrToHostAddr:=Temp;
+end;
+
+function NetAddrToStr (Entry : longint) : String;
+
+Var Dummy : String[4];
+    I : Longint;
+    
+begin
+  NetAddrToStr:='';
+  For I:=4 downto 1 do
+   begin
+   Str(THostAddr(Entry)[I],Dummy);
+   NetAddrToStr:=NetAddrToStr+Dummy;
+   If I>1 Then NetAddrToStr:=NetAddrToStr+'.';
+   end;
+end;
+
+function StrToNetAddr(IP : String) : Longint;
+
+begin
+  StrToNetAddr:=Longint(StrToHostAddr(IP));
+end;
+
+
+Constructor THost.NameLookup (HostName : String);
+
+begin
+  HostName:=HostName+#0;
+  FHostEntry:=GetHostByName(pchar(@HostName[1]));
+  If FHostEntry=Nil then
+    FError:=GetDNSError
+  else
+    begin
+    FAlias:=0;
+    FAddr:=0;
+    Ferror:=0;
+    end;  
+end;
+
+Constructor THost.AddressLookup (Const Address: THostAddr);
+
+begin
+  FHostEntry:=GetHostByAddr(PHostAddr(@Address),SizeOf(Address),AF_INET);
+  If FHostEntry=Nil then
+    FError:=GetDNSError
+  else
+    begin
+    FAlias:=0;
+    FAddr:=0;
+    FError:=0;
+    end;  
+end;
+
+
+Function THost.Name : String;
+
+begin
+  Name:='';
+  If (FHostEntry=Nil) or (FError<>0) then exit;
+  Name:=StrPas(FHostEntry^.Name);
+end;
+
+Function THost.GetAlias (Select : TSelectType) : String;
+
+begin
+  GetAlias:='';
+  If (FHostEntry=Nil) or (FError<>0) then exit;
+  Case Select of
+    stFirst     : FAlias:=0;
+    stnext      : If FHostEntry^.Aliases[FAlias]<>Nil then
+                    Falias:=Falias+1;
+    stprevious  : If FAlias=0 Then Exit else FAlias:=FAlias-1;
+  end;
+  If FHostEntry^.Aliases[FAlias]<>Nil then
+    GetAlias:=StrPas(FHostEntry^.Aliases[FAlias]);
+end;
+
+Function THost.GetAddress (Select : TSelectType) : String;
+
+begin
+  GetAddress:='';
+  If (FHostEntry=Nil) or (FError<>0) then exit;
+  Case Select of
+    stFirst     : FAddr:=0;
+    stnext      : If FHostEntry^.AddrList[FAddr]<>Nil then
+                    FAddr:=FAddr+1;
+    stprevious  : If FAddr=0 Then Exit else FAddr:=FAddr-1;
+  end;
+  If FHostEntry^.AddrList[FAddr]<>Nil then
+    GetAddress:=HostAddrToStr(PHostAddr(FHostEntry^.AddrList[FAddr])^);
+end;
+
+Function THost.IPstring : String;
+
+begin
+  IPString:='';
+  If (FHostEntry=Nil) or (FError<>0) then exit;
+  If FHostEntry^.AddrList[0]<>Nil then
+    IPString:=HostAddrToStr(PHostAddr(FHostEntry^.AddrList[0])^);
+end;
+
+Function THost.IPaddress : THostAddr;
+
+begin
+  IPAddress:=NoAddress;
+  If (FHostEntry=Nil) or (FError<>0) then exit;
+  IPAddress:=PHostAddr(FHostEntry^.AddrList[0])^;
+end;
+
+Destructor THost.Done;
+
+begin
+end;
+
+Function THost.LastError : Longint;
+
+begin
+  LastError:=FError;
+end;
+
+Constructor TNet.NameLookup (NetName : String);
+
+begin
+  NetName:=NetName+#0;
+  FNetEntry:=GetNetByName(pchar(@NetName[1]));
+  If FNetEntry=Nil then
+    FError:=GetDNSError
+  else
+    begin
+    FAlias:=0;
+    Ferror:=0;
+    end;  
+end;
+
+Constructor TNet.AddressLookup (Const Address: Longint);
+
+begin
+  FNetEntry:=GetNetByAddr(Address,AF_INET);
+  If FNetEntry=Nil then
+    FError:=GetDNSError
+  else
+    begin
+    FAlias:=0;
+    FError:=0;
+    end;  
+end;
+
+
+Function TNet.Name : String;
+
+begin
+  Name:='';
+  If (FNetEntry=Nil) or (FError<>0) then exit;
+  Name:=StrPas(FNetEntry^.Name);
+end;
+
+Function TNet.GetAlias (Select : TSelectType) : String;
+
+begin
+  GetAlias:='';
+  If (FNetEntry=Nil) or (FError<>0) then exit;
+  Case Select of
+    stFirst     : FAlias:=0;
+    stnext      : If FNetEntry^.Aliases[FAlias]<>Nil then
+                    Falias:=Falias+1;
+    stprevious  : If FAlias=0 Then Exit else FAlias:=FAlias-1;
+  end;
+  If FNetEntry^.Aliases[FAlias]<>Nil then
+    GetAlias:=StrPas(FNetEntry^.Aliases[FAlias]);
+end;
+
+Function TNet.IPstring : String;
+
+begin
+  IPString:='';
+  If (FNetEntry=Nil) or (FError<>0) then exit;
+  IPString:=NetAddrToStr(FNetEntry^.Net);
+end;
+
+Function TNet.IPaddress : Longint;
+
+begin
+  IPAddress:=0;
+  If (FNetEntry=Nil) or (FError<>0) then exit;
+  IPAddress:=FNetEntry^.Net;
+end;
+
+Destructor TNet.Done;
+
+begin
+end;
+
+Function TNet.LastError : Longint;
+
+begin
+  LastError:=FError;
+end;
+
+Constructor TService.NameLookup (ServiceName,Proto : String);
+
+begin
+  ServiceName:=ServiceName+#0;
+  Proto:=Proto+#0;
+  FServiceEntry:=GetServByName(pchar(@ServiceName[1]),pchar(@Proto[1]));
+  If FServiceEntry=Nil then
+    FError:=GetDNSError
+  else
+    begin
+    FAlias:=0;
+    Ferror:=0;
+    end;  
+end;
+
+Constructor TService.PortLookup (APort: Longint; Proto : String);
+
+begin
+  Proto:=proto+#0;
+  FServiceEntry:=GetServByPort(APort,pchar(@proto[1]));
+  If FServiceEntry=Nil then
+    FError:=GetDNSError
+  else
+    begin
+    FAlias:=0;
+    FError:=0;
+    end;  
+end;
+
+
+Function TService.Name : String;
+
+begin
+  Name:='';
+  If (FServiceEntry=Nil) or (FError<>0) then exit;
+  Name:=StrPas(FServiceEntry^.Name);
+end;
+
+Function TService.GetAlias (Select : TSelectType) : String;
+
+begin
+  GetAlias:='';
+  If (FServiceEntry=Nil) or (FError<>0) then exit;
+  Case Select of
+    stFirst     : FAlias:=0;
+    stnext      : If FServiceEntry^.Aliases[FAlias]<>Nil then
+                    Falias:=Falias+1;
+    stprevious  : If FAlias=0 Then Exit else FAlias:=FAlias-1;
+  end;
+  If FServiceEntry^.Aliases[FAlias]<>Nil then
+    GetAlias:=StrPas(FServiceEntry^.Aliases[FAlias]);
+end;
+
+Function TService.Protocol : String;
+
+begin
+  Protocol:='';
+  If (FServiceEntry=Nil) or (FError<>0) then exit;
+  Protocol:=Strpas(FServiceEntry^.proto);
+end;
+
+Function TService.Port : Longint;
+
+begin
+  Port:=0;
+  If (FServiceEntry=Nil) or (FError<>0) then exit;
+  Port:=FServiceEntry^.Port;
+end;
+
+Destructor TService.Done;
+
+begin
+end;
+
+Function TService.LastError : Longint;
+
+begin
+  LastError:=FError;
+end;
+
+Function HostToNet (Host : Longint) : Longint;
+
+begin
+  HostToNet:=THostAddr(host)[1];
+  HostToNEt:=HostTONet or ( (THostAddr(host)[2]) shl 8);
+  HostToNEt:=HostToNet or ( (THostAddr(host)[3]) shl 16);
+  HostToNEt:=HostToNet or ( (THostAddr(host)[4]) shl 24);
+end;
+
+Function NetToHost (Net : Longint) : Longint;
+
+begin
+  NetToHost:=THostAddr(Net)[1];
+  NetToHost:=NetToHost or ( (THostAddr(Net)[2]) shl 8);
+  NetToHost:=NetToHost or ( (THostAddr(Net)[3]) shl 16);
+  NetToHost:=NetToHost or ( (THostAddr(Net)[4]) shl 24);
+end;
+
+Function ShortHostToNet (Host : integer) : integer;
+
+begin
+  ShortHostToNet:=lo(host)*256+Hi(Host);
+end;
+
+Function ShortNetToHost (Net : integer) : integer;
+
+begin
+  ShortNetToHost:=lo(Net)*256+Hi(Net);
+end;
+
+end.
+
+
+ 

+ 54 - 0
packages/inet/pfinger.pp

@@ -0,0 +1,54 @@
+program pfinger;
+
+uses sockets,errors,inet;
+
+Var Addr : TInetSockAddr;
+    S : Longint;
+    Sin,Sout : Text;
+    Line : string;
+    hostname,username : string;
+    host : THost;
+
+begin
+  if paramcount<>1 then
+    begin
+    writeln ('Usage : pfinger username@hostname');
+    end;
+  HostName:=Paramstr(1);
+  If pos('@',HostName)<>0 then
+    begin
+    username:=copy(HostName,1,pos('@',hostname)-1);
+    hostname:=copy(HostName,pos('@',HostName)+1,255);
+    end
+  else 
+    username:='';
+  Host.NameLookup(HostName);
+  If Host.LastError<>0 then
+    begin
+    writeln ('Unknown host : ',host.name);
+    halt(1);
+    end;
+  Addr.family:=AF_INET;
+  { port 78 in network order }
+  Addr.port:=ShortHostToNet(79);
+  { localhost : 127.0.0.1 in network order }
+  Addr.addr:=HostTonet(Longint(Host.IPAddress));
+  S:=Socket(AF_INET,SOCK_STREAM,0);
+  If Not Connect (S,ADDR,SIN,SOUT) Then
+    begin
+    Writeln ('Couldn''t connect to localhost');
+    Writeln ('Socket error : ',strerror(SocketError));
+    halt(1);
+    end;
+  rewrite (sout);
+  reset(sin);
+  writeln (sout,username);
+  flush(sout);
+  while not eof(sin) do 
+    begin
+    readln (Sin,line);
+    writeln (line);
+    end;
+  close (sin);
+  close (sout);
+end.

+ 249 - 0
packages/inet/testinet.pp

@@ -0,0 +1,249 @@
+program testinet;
+
+{
+   Program to test the inet unit.
+  (C) 1997,1998 by Michael Van Canneyt 
+}
+
+uses inet;
+
+var p : PHostEnt;
+    ph : Phostaddr;
+    pn : PNetEnt;
+    ps : PServEnt;
+    pp : ppchar;
+    host : THost;
+    Net : TNet;
+    service : TService;
+    S : String;
+    TheAddr : THostAddr;
+
+const
+    { Lily is my machine. This may not work of you're on a 
+      standalone machine. In that case, replace the address by
+      an address known to your machine, or, as a last resort, 127.0.0.1 }
+
+    lily : THostAddr = (134,58,81,164);
+    {lily : THostAddr = (127,0,0,1);}
+
+begin
+  p:=gethostbyname ('LocalHost');
+  if p=nil then
+    begin 
+    Writeln ('GetHostByname : No entry');
+    end
+  else
+    begin
+    Writeln ('Data for localhost : ');
+    with p^ do
+      begin
+      writeln ('Name   : ',name);
+      writeln ('Length : ',Addrlen);
+      pp:=aliases;
+      while pp^<>nil do
+        begin
+        writeln ('Alias : ',pp^);
+        inc(longint(pp),4);
+        end;
+      ph:=PHostAddr(addrlist^);
+      writeln ('Addres : ',ph^[1],'.',ph^[2],'.',ph^[3],'.',ph^[4]);
+      end;
+    end;
+  p:=gethostbyaddr (@lily,4,2);  
+  if p=nil then
+    begin 
+    Writeln ('Gethostbyaddr : No entry');
+    end
+  else
+    begin
+    Writeln ('Data for ',lily[1],'.',lily[2],'.',lily[3],'.',lily[4] );
+    with p^ do
+      begin
+      writeln ('Name   : ',name);
+      writeln ('Length : ',Addrlen);
+      pp:=aliases;
+      while pp^<>nil do
+        begin
+        writeln ('Alias : ',pp^);
+        inc(longint(pp),4);
+        end;
+      ph:=PHostAddr(addrlist^);
+      writeln ('Addres : ',ph^[1],'.',ph^[2],'.',ph^[3],'.',ph^[4]);
+      end;
+    end;
+  pn:=GetNetByName ('loopback');
+  if pn=nil then
+    begin
+    writeln ('GetNetByName : No entry');
+    end
+  else
+    begin
+    Writeln ('Data for loopback : ');
+    with pn^ do
+      begin
+      writeln ('Name   : ',name);
+      writeln ('Type   : ',AddrType);
+      pp:=aliases;
+      while pp^<>nil do
+        begin
+        writeln ('Alias : ',pp^);
+        inc(longint(pp),4);
+        end;
+      ph:=PHostAddr(@net);
+      writeln ('Addres : ',ph^[4],'.',ph^[3],'.',ph^[2],'.',ph^[1]);
+      end;
+    end;
+  pn:=GetNetByAddr ((127 shl 24),2);
+  if pn=nil then
+    begin
+    writeln ('GetNetByAddr : No entry');
+    end
+  else
+    begin
+    Writeln ('Data for 127.0.0.0 : ');
+    with pn^ do
+      begin
+      writeln ('Name   : ',name);
+      writeln ('Type   : ',AddrType);
+      pp:=aliases;
+      while pp^<>nil do
+        begin
+        writeln ('Alias : ',pp^);
+        inc(longint(pp),4);
+        end;
+      ph:=PHostAddr(@net);
+      writeln ('Addres : ',ph^[4],'.',ph^[3],'.',ph^[2],'.',ph^[1]);
+      end;
+    end;
+  ps:=GetServByName ('telnet','tcp');
+  if ps=nil then
+    begin
+    writeln ('GetServByName : No entry ');
+    end
+  else
+    with ps^ do 
+      begin
+      writeln ('Name : ',name);
+      writeln ('Protocol : ',proto);
+      writeln ('Port ',port shr 8);
+      pp:=aliases;
+      while pp^<>nil do
+        begin
+        writeln ('Alias : ',pp^);
+        inc(longint(pp),4);
+        end;
+      end;
+  ps:=GetServByPort (23 shl 8 ,'tcp');
+  if ps=nil then
+    begin
+    writeln ('GetServByPort : No entry ');
+    end
+  else
+    with ps^ do 
+      begin
+      writeln ('Name : ',name);
+      writeln ('Protocol : ',proto);
+      writeln ('Port ',port shr 8);
+      pp:=aliases;
+      while pp^<>nil do
+        begin
+        writeln ('Alias : ',pp^);
+        inc(longint(pp),4);
+        end;
+      end;
+  Writeln ('Creating Host Object with namelookup(tflily)');
+  Host.NameLookup ('tflily');
+  If Host.LastError=0 then
+    begin
+    Writeln   ('Name       : ',host.name);
+    S:=Host.GetAlias (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('Host alias : ',S);
+      S:=Host.GetAlias(stnext);
+      end;
+    S:=Host.GetAddress (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('Host address : ',S);
+      S:=Host.GetAddress(stnext);
+      end;
+    end;
+  Writeln ('Creating Host Object with Addresslookup(''tflily'')');
+  Host.AddressLookup (lily);
+  If Host.LastError=0 then
+    begin
+    Writeln   ('Name       : ',host.name);
+    Writeln   ('IP Address : ',host.IPstring);
+    S:=Host.GetAlias (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('Host alias : ',S);
+      S:=Host.GetAlias(stnext);
+      end;
+    S:=Host.GetAddress (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('Host address : ',S);
+      S:=Host.GetAddress(stnext);
+      end;
+    end;
+  Writeln ('Creating net Object with namelookup(''loopback'')');
+  net.NameLookup ('loopback');
+  If net.LastError=0 then
+    begin
+    Writeln   ('Name       : ',net.name);
+    Writeln   ('IP address : ',net.IPstring);
+    S:=net.GetAlias (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('net alias : ',S);
+      S:=net.GetAlias(stnext);
+      end;
+    end;
+  Writeln ('Creating net Object with Addrlookup((127 shl 24))');
+  net.AddressLookup ((127 shl 24));
+  If net.LastError=0 then
+    begin
+    Writeln   ('Name       : ',net.name);
+    Writeln   ('IP address : ',net.IPstring);
+    S:=net.GetAlias (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('net alias : ',S);
+      S:=net.GetAlias(stnext);
+      end;
+    end;
+  S:='134.58.81.164';
+  TheAddr:=StrToHostAddr (S);
+  Writeln (S,' = ',TheAddr[1],'.',theaddr[2],'.',theaddr[3],'.',theaddr[4]);
+  Writeln ('Creating Service Object with Namelookup(''telnet'',''tcp'')');
+  Service.Namelookup('telnet','tcp');
+  If Service.LastError=0 then
+    begin
+    Writeln   ('Name       : ',Service.name);
+    Writeln   ('Protocol   : ',service.protocol);
+    Writeln   ('Port       : ',ShortNetToHost(service.port));
+    S:=service.GetAlias (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('service alias : ',S);
+      S:=service.GetAlias(stnext);
+      end;
+    end;
+  Writeln ('Creating Service Object with Portlookup(23 shl 8 ,''tcp'')');
+  Service.Portlookup(23 shl 8,'tcp');
+  If Service.LastError=0 then
+    begin
+    Writeln   ('Name       : ',Service.name);
+    Writeln   ('Protocol   : ',service.protocol);
+    Writeln   ('Port       : ',ShortNetToHost(service.port));
+    S:=service.GetAlias (stfirst);
+    While S<>'' do
+      begin
+      Writeln ('service alias : ',S);
+      S:=service.GetAlias(stnext);
+      end;
+    end;
+    
+end.

+ 139 - 0
packages/mysql/Makefile

@@ -0,0 +1,139 @@
+#
+#   $Id$
+#   Copyright (c) 1999 by the Free Pascal Development Team
+#
+#   Makefile for <template> for Free Pascal
+#
+#   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.
+#
+#####################################################################
+# Defaults
+#####################################################################
+
+# Where are the include files located
+INC=
+PROCINC=
+OSINC=
+
+# Needed options, without it won't compile
+NEEDOPT=-S2
+
+# Needed unit dir, which is searched as the first path
+NEEDUNITDIR=
+
+# Define if libmysqlclient library is not in /usr/lib 
+# MYSQLLIBDIR=
+
+# Where need we to place the executables/ppu/objects
+TARGETDIR=
+UNITTARGETDIR=
+
+# As default make only the units
+#DEFAULTUNITS=1
+
+# Uncomment this is the makefile.fpc isn't located in ../..
+DEFAULTFPCDIR=../..
+
+#####################################################################
+# Real targets
+#####################################################################
+
+UNITOBJECTS=mysql_com mysql_version mysql
+EXEOBJECTS=testdb
+
+#####################################################################
+# Common targets
+#####################################################################
+
+ifdef MYSQLLIBDIR 
+override NEEDLIBDIR+=$(MYSQLLIBDIR)
+endif
+
+#####################################################################
+# Common targets
+#####################################################################
+
+.PHONY: all clean install info \
+        staticlib sharedlib libsclean \
+        staticinstall sharedinstall libinstall \
+        
+all: testfpcmake fpc_all
+
+clean: testfpcmake fpc_clean
+
+install: testfpcmake fpc_install
+
+info: testfpcmake fpc_info
+
+staticlib: testfpcmake fpc_staticlib
+
+sharedlib: testfpcmake fpc_sharedlib
+
+libsclean: testfpcmake fpc_libsclean
+
+staticinstall: testfpcmake fpc_staticinstall
+
+sharedinstall: testfpcmake fpc_sharedinstall
+
+libinstall: testfpcmake fpc_libinstall
+
+
+#####################################################################
+# Include default makefile
+#####################################################################
+
+# test if FPCMAKE is still valid
+ifdef FPCMAKE
+ifeq ($(strip $(wildcard $(FPCMAKE))),)
+FPCDIR=
+FPCMAKE=
+endif
+endif
+
+ifndef FPCDIR
+ifdef DEFAULTFPCDIR
+FPCDIR=$(DEFAULTFPCDIR)
+endif
+endif
+
+ifndef FPCMAKE
+ifdef FPCDIR
+FPCMAKE=$(FPCDIR)/makefile.fpc
+else
+FPCMAKE=makefile.fpc
+endif
+endif
+
+override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
+ifeq ($(FPCMAKE),)
+testfpcmake:
+	@echo makefile.fpc not found!
+	@echo Check the FPCMAKE and FPCDIR environment variables.
+	@exit
+else
+include $(FPCMAKE)
+testfpcmake:
+endif
+
+#####################################################################
+# Dependencies
+#####################################################################
+
+mysql$(PPUEXT): mysql$(PASEXT) mysql_com$(PPUEXT)
+
+testdb$(EXEEXT): testdb$(PASEXT) mysql$(PPUEXT)
+
+#
+# $Log$
+# Revision 1.1  1999-05-12 00:11:26  michael
+# initial import
+#
+# Revision 1.1  1999/03/16 00:50:29  peter
+#   + init
+#
+#

+ 30 - 0
packages/mysql/README

@@ -0,0 +1,30 @@
+This is the MySQL interface of Free Pascal.
+
+You need at least compiler version 0.99.8 to compile this.
+
+To Compile under Linux
+- You must know where the mysql libraries are.
+- You must know where libgcc is.
+
+Both these things must be set in the Makefile. After that a simple 'make'
+and 'make install' should compile and install everything.
+
+You can test with 'make test', but this supposes that there is a 'testdb'
+database available. If not, you must run
+  mkdb databasename
+  testdb databasename
+  rmdb databasename
+manually. You need create permission on the database for this to work.
+
+Redhat 5.1 and later users: You must ADD to the path the location of the
+libc5 libraries. It will NOT work with glibc 6. I hope to fix this in the
+future.
+
+Win32 users: There are multiple .dll files circulating around. 
+you should fix the statement
+mysqllib = 'libmysql'
+in the mysql unit, so it matches the version you have.
+
+Enjoy !
+
+Michael.

+ 28 - 0
packages/mysql/mkdb

@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# Script to create a table 'FPdev' and to fill it with data.
+# The script accepts an optional argument : 
+# A database to connect to. (default 'testdb')
+echo -n "Creating and filling table FPdev in database ${1-testdb}..."
+mysql ${1-testdb} << EOF >/dev/null
+create table FPdev ( 
+id INT NOT NULL,
+UserName CHAR(255),
+InstEmail CHAR(255),
+PRIMARY KEY (id),
+INDEX (id) );
+insert into FPdev values ('1','Michael Van Canneyt','[email protected]');
+insert into FPdev values ('2','Florian Klaempfl','[email protected]');
+insert into FPdev values ('3','Carl-Eric Codere','[email protected]');
+insert into FPdev values ('4','Daniel Mantione','[email protected]');
+insert into FPdev values ('5','Pierre Muller','[email protected]');
+insert into FPdev values ('6','Jonas Maebe','[email protected]');
+insert into FPdev values ('7','Peter Vreman','[email protected]');
+insert into FPdev values ('8','Gerry Dubois','[email protected]');
+EOF
+if [ ! $? = 0 ]; then
+  echo "Failed."
+else
+  echo "Done."
+fi
+# Ready

+ 309 - 0
packages/mysql/mysql.pp

@@ -0,0 +1,309 @@
+unit mysql;
+
+{
+  Import unit for the mysql header files.
+  Translated form the original mysql.h by Michael Van Canneyt
+  ([email protected])
+  
+}
+
+interface
+
+uses mysql_com;
+{$ifdef win32}
+Const mysqllib = 'libmysql';
+{$else}
+Const mysqllib = 'mysqlclient';
+{$endif}
+
+{$ifndef win32}
+{$linklib c}
+{$linklib m}
+{ You need to specify the path to libgcc on the command line. }
+{ On my machine this is '-k-L/usr/lib/gcc-lib/i486-linux/2.7.2.1' }
+{$linklib gcc}
+{$endif}
+
+
+{ All is 4-byte aligned on my machine. }
+{$packrecords 4}
+
+type 
+   my_bool = byte;
+   gptr   = pchar;
+   Socket = Longint;
+   PCardinal = ^Cardinal;    
+
+{$ifdef linux}    
+Var
+  mysql_port : cardinal; external name 'mysql_port';
+  mysql_unix_port : pchar; external name 'mysql_unix_port';
+{$endif}
+
+
+{
+#define IS_PRI_KEY(n)	((n) & PRI_KEY_FLAG)
+#define IS_NOT_NULL(n)	((n) & NOT_NULL_FLAG)
+#define IS_BLOB(n)	((n) & BLOB_FLAG)
+#define IS_NUM(t)	((t) <= FIELD_TYPE_INT24)
+}
+Type
+st_mysql_field = record 
+  name : Pchar;			{ Name of column }
+  table : pchar;		{ Table of column if column was a field }
+  def: pchar;			{ Default value (set by mysql_list_fields) }
+  ftype : enum_field_types;	{ Type of field. See mysql_com.h for types }
+  length : cardinal;		{ Width of column }
+  max_length : cardinal;	{ Max width of selected set }
+  flags : cardinal;		{ Div flags }
+  decimals : cardinal;	{ Number of decimals in field }
+end;
+TMYSQL_FIELD = st_mysql_field;
+PMYSQL_FIELD = ^TMYSQL_FIELD;
+
+TMYSQL_ROW = PPchar;		 { return data as array of strings }
+TMYSQL_FIELD_OFFSET = cardinal;  { offset to current field }
+
+PST_MYSQL_Rows = ^st_mysql_rows;
+st_mysql_rows = Record
+  next : pst_mysql_rows;		{ list of rows }
+  Data : TMYSQL_ROW;
+end;
+TMYSQL_ROWS = st_mysql_rows;
+PMYSQL_ROWS = ^TMYSQL_ROWS;
+
+
+TMYSQL_ROW_OFFSET = PMYSQL_ROWS;	{ offset to current row }
+
+st_mysql_data  = record
+  rows, fields : cardinal;
+  data : PMYSQL_ROWS;
+  alloc : TMEM_ROOT;
+end;
+
+TMYSQL_DATA = st_mysql_data;
+PMYSQL_DATA = ^TMYSQL_DATA;
+
+mysql_status = (MYSQL_STATUS_READY,
+                MYSQL_STATUS_GET_RESULT,
+                MYSQL_STATUS_USE_RESULT);
+
+
+st_mysql = Record
+  net : TNET;			{ Communication parameters }
+  host,user,passwd,unix_socket,server_version,host_info, info,db : pchar;
+  port,client_flag,server_capabilities : cardinal;
+  protocol_version : cardinal;
+  field_count : cardinal;
+  thread_id : cardinal;		{ Id for connection in server }
+  affected_rows : cardinal;
+  insert_id : cardinal;		{ id if insert on table with NEXTNR }
+  extra_info : cardinal;		{ Used by mysqlshow }
+  status : mysql_status;
+  fields : PMYSQL_FIELD;
+  field_alloc : TMEM_ROOT;
+  free_me : my_bool;		{ If free in mysql_close }
+  reconnect : my_bool;		{ set to 1 if automatic reconnect }
+end;
+TMYSQL = st_mysql;
+PMYSQL = ^TMYSQL;
+
+
+st_mysql_res = record
+  row_count : cardinal;
+  field_count, current_field : cardinal;
+  fields :         PMYSQL_FIELD;
+  data :           PMYSQL_DATA;
+  data_cursor :    PMYSQL_ROWS;
+  field_alloc :    TMEM_ROOT;
+  row :            TMYSQL_ROW;			{ If unbuffered read }
+  current_row :    TMYSQL_ROW;		{ buffer to current row }
+  lengths :        pcardinal;		{ column lengths of current row }
+  handle :         PMYSQL;		{ for unbuffered reads }
+  eof :            my_bool;			{ Used my mysql_fetch_row }
+end;
+TMYSQL_RES  = st_mysql_res;
+PMYSQL_RES  = ^TMYSQL_RES;
+
+
+{ Translated Macros }
+
+Function mysql_num_rows (res : PMYSQL_RES) : Cardinal;
+Function mysql_num_fields(res : PMYSQL_RES) : Cardinal;
+Function mysql_eof(res : PMYSQL_RES) : my_bool; 
+Function mysql_fetch_field_direct(res : PMYSQL_RES; fieldnr : Cardinal) : TMYSQL_FIELD; 
+Function mysql_fetch_fields(res : PMYSQL_RES) : PMYSQL_FIELD; 
+Function mysql_row_tell(res : PMYSQL_RES) : PMYSQL_ROWS;
+Function mysql_field_tell(res : PMYSQL_RES) : Cardinal;
+Function mysql_affected_rows(mysql : PMYSQL): Cardinal; 
+Function mysql_insert_id(mysql : PMYSQL): Cardinal; 
+Function mysql_errno(mysql : PMYSQL) : Cardinal;
+Function mysql_info(mysql : PMYSQL): Pchar;
+Function mysql_reload(mysql : PMYSQL) : Longint; 
+Function mysql_thread_id(mysql : PMYSQL) : Cardinal; 
+Function mysql_error(mysql : PMYSQL) : pchar; 
+
+{ Original functions }
+
+Function mysql_connect (mysql : PMYSQL; host,user,passwd: pchar) : PMYSQL; cdecl;
+Function mysql_real_connect (mysql : PMYSQL; const host,user,passwd : pchar;
+				   port : cardinal;
+				   unix_socket : pchar;
+				   clientflag : cardinal) : PMYSQL;cdecl;
+				   
+Function mysql_close(sock : PMYSQL) : longint; cdecl;
+Function mysql_select_db(MYSQL : PMYSQL; db : Pchar) : longint; cdecl;
+Function mysql_query(mysql : PMYSQL; q : pchar) : longint; cdecl;
+Function mysql_real_query(mysql : PMYSQL; q : Pchar; length : longint) : longint; cdecl;
+Function mysql_create_db(mysql : PMYSQL; db : pchar) : longint; cdecl;
+Function mysql_drop_db(mysql : PMYSQL; DB : Pchar) : longint; cdecl;
+Function mysql_shutdown(mysql : PMYSQL) : longint; cdecl;
+Function mysql_dump_debug_info(mysql : PMYSQL) : longint; cdecl;
+Function mysql_refresh(mysql : PMYSQL; refresh_options : cardinal) : longint; cdecl;
+Function mysql_kill(mysql : PMYSQL; pid : Cardinal) : longint; cdecl;
+Function mysql_stat(mysql : PMYSQL) : Pchar; cdecl;
+Function mysql_get_server_info(mysql : PMYSQL) : pchar; cdecl;
+Function mysql_get_client_info : pchar; cdecl;
+Function mysql_get_host_info(mysql : PMYSQL) : pchar; cdecl;
+Function mysql_get_proto_info(mysql : PMYSQL) : Cardinal; cdecl;
+Function mysql_list_dbs(mysql : PMYSQL;wild : Pchar) : PMYSQL_RES; cdecl;
+Function  mysql_list_tables(mysql : PMYSQL;Wild : Pchar) : PMYSQL_RES; cdecl;
+Function  mysql_list_fields(mysql : PMYSQL; table,wild : pchar) : PMYSQL_RES; cdecl;
+Function  mysql_list_processes(mysql : PMYSQL) : PMYSQL_RES; cdecl;
+Function  mysql_store_result(mysql : PMYSQL) : PMYSQL_RES; cdecl;
+Function  mysql_use_result(mysql : PMYSQL) : PMYSQL_RES; cdecl;
+Procedure mysql_free_result(res : PMYSQL_RES);cdecl;
+Procedure mysql_data_seek(mysql : PMYSQL_RES; offs : cardinal);cdecl;
+Function mysql_row_seek(mysql : PMYSQL_RES; Offs: TMYSQL_ROW_OFFSET): TMYSQL_ROW_OFFSET; cdecl;
+Function mysql_field_seek(musql : PMYSQL_RES;offs : TMYSQL_FIELD_OFFSET): TMYSQL_FIELD_OFFSET; cdecl;
+Function mysql_fetch_row(mysql : PMYSQL_RES) : TMYSQL_ROW; cdecl;
+Function mysql_fetch_lengths(mysql : PMYSQL_RES) : PCardinal; cdecl;
+Function mysql_fetch_field(handle : PMYSQL_RES) : PMYSQL_FIELD; cdecl;
+Function mysql_escape_string(escto,escfrom : pchar; length : Cardinal) : cardinal; cdecl;
+Procedure mysql_debug(debug : pchar);cdecl;
+
+implementation
+
+
+function mysql_connect (mysql : PMYSQL; host,user,passwd: pchar) : PMYSQL;cdecl; external mysqllib name 'mysql_connect';
+function mysql_real_connect (mysql : PMYSQL; const host,user,passwd : pchar;
+				   port : cardinal;
+				   unix_socket : pchar;
+				   clientflag : cardinal) : PMYSQL;cdecl; external mysqllib;
+				   
+function mysql_close(sock : PMYSQL) : longint ;cdecl; external mysqllib name 'mysql_close';
+function mysql_select_db(MYSQL : PMYSQL; db : Pchar) : longint;cdecl; external mysqllib name 'mysql_select_db';
+function mysql_query(mysql : PMYSQL; q : pchar) : longint;cdecl; external mysqllib name 'mysql_query';
+function mysql_real_query(mysql : PMYSQL; q : Pchar; length : longint) : longint;cdecl; external mysqllib name 'mysql_real_query';
+function mysql_create_db(mysql : PMYSQL; db : pchar) : longint;cdecl; external mysqllib name 'mysql_create_db';
+Function mysql_drop_db(mysql : PMYSQL; DB : Pchar) : longint;cdecl; external mysqllib name 'mysql_drop_db';
+Function mysql_shutdown(mysql : PMYSQL) : longint;cdecl; external mysqllib name 'mysql_shutdown';
+Function mysql_dump_debug_info(mysql : PMYSQL) : longint;cdecl; external mysqllib name 'mysql_dump_debug_info';
+Function mysql_refresh(mysql : PMYSQL; refresh_options : cardinal) : longint;cdecl; external mysqllib name 'mysql_refresh';
+Function mysql_kill(mysql : PMYSQL; pid : Cardinal) : longint;cdecl; external mysqllib name 'mysql_kill';
+Function mysql_stat(mysql : PMYSQL) : Pchar;cdecl; external mysqllib name 'mysql_stat';
+Function mysql_get_server_info(mysql : PMYSQL) : pchar;cdecl; external mysqllib name 'mysql_get_server_info';
+Function mysql_get_client_info : pchar;cdecl; external mysqllib;
+Function mysql_get_host_info(mysql : PMYSQL) : pchar;cdecl; external mysqllib name 'mysql_get_host_info';
+Function mysql_get_proto_info(mysql : PMYSQL) : Cardinal;cdecl; external mysqllib name 'mysql_get_proto_info';
+Function mysql_list_dbs(mysql : PMYSQL;wild : Pchar) : PMYSQL_RES;cdecl; external mysqllib name 'mysql_list_dbs';
+Function mysql_list_tables(mysql : PMYSQL;Wild : Pchar) : PMYSQL_RES;cdecl; external mysqllib name 'mysql_list_tables';
+Function mysql_list_fields(mysql : PMYSQL; table,wild : pchar) : PMYSQL_RES;cdecl; external mysqllib name 'mysql_list_fields';
+Function mysql_list_processes(mysql : PMYSQL) : PMYSQL_RES;cdecl; external mysqllib name 'mysql_list_processes';
+Function mysql_store_result(mysql : PMYSQL) : PMYSQL_RES;cdecl; external mysqllib name 'mysql_store_result';
+Function mysql_use_result(mysql : PMYSQL) : PMYSQL_RES;cdecl; external mysqllib name 'mysql_use_result';
+Procedure mysql_free_result(res : PMYSQL_RES);cdecl; external mysqllib name 'mysql_free_result';
+Procedure mysql_data_seek(mysql : PMYSQL_RES; offs : cardinal);cdecl; external mysqllib name 'mysql_data_seek';
+Function mysql_row_seek(mysql : PMYSQL_RES; Offs: TMYSQL_ROW_OFFSET): TMYSQL_ROW_OFFSET;cdecl; external mysqllib name 'mysql_row_seek';
+Function mysql_field_seek(musql : PMYSQL_RES;offs : TMYSQL_FIELD_OFFSET): TMYSQL_FIELD_OFFSET;cdecl; external mysqllib name 'mysql_field_seek';
+function mysql_fetch_row(mysql : PMYSQL_RES) : TMYSQL_ROW;cdecl; external mysqllib name 'mysql_fetch_row';
+function mysql_fetch_lengths(mysql : PMYSQL_RES) : PCardinal;cdecl; external mysqllib name 'mysql_fetch_lengths';
+function mysql_fetch_field(handle : PMYSQL_RES) : PMYSQL_FIELD;cdecl; external mysqllib name 'mysql_fetch_field';
+Function mysql_escape_string(escto,escfrom : pchar; length : Cardinal) : cardinal;cdecl; external mysqllib name 'mysql_escape_string';
+Procedure mysql_debug(debug : pchar);cdecl; external mysqllib name 'mysql_debug';
+
+Function  mysql_error(mysql : PMYSQL) : pchar;
+
+begin
+ mysql_error:=mysql^.net.last_error
+end;
+
+Function mysql_num_rows (res : PMYSQL_RES) : Cardinal;
+
+begin
+  mysql_num_rows:=res^.row_count
+end;
+
+Function mysql_num_fields(res : PMYSQL_RES) : Cardinal;
+
+begin
+  mysql_num_fields:=res^.field_count
+end;
+
+Function mysql_eof(res : PMYSQL_RES) : my_bool;
+
+begin
+  mysql_eof:=res^.eof
+end;
+
+Function mysql_fetch_field_direct(res : PMYSQL_RES; fieldnr : Cardinal) : TMYSQL_FIELD;
+
+begin
+  mysql_fetch_field_direct:=res^.fields[fieldnr];
+end;
+
+Function mysql_fetch_fields(res : PMYSQL_RES) : PMYSQL_FIELD;
+
+begin
+ mysql_fetch_fields:=res^.fields
+end;
+
+Function mysql_row_tell(res : PMYSQL_RES) : PMYSQL_ROWS;
+
+begin
+  mysql_row_tell:=res^.data_cursor
+end;
+
+Function mysql_field_tell(res : PMYSQL_RES) : Cardinal;
+
+begin
+  mysql_field_tell:=res^.current_field
+end;
+
+Function mysql_affected_rows(mysql : PMYSQL): Cardinal;
+
+begin
+  mysql_affected_rows:=mysql^.affected_rows
+end;
+
+Function mysql_insert_id(mysql : PMYSQL): Cardinal;
+
+begin
+  mysql_insert_id:=mysql^.insert_id
+end;
+
+Function mysql_errno(mysql : PMYSQL) : Cardinal;
+
+begin
+  mysql_errno:=mysql^.net.last_errno
+end;
+
+Function mysql_info(mysql : PMYSQL): Pchar;
+
+begin
+  mysql_info:=mysql^.info
+end;
+
+Function mysql_reload(mysql : PMYSQL) : Longint;
+
+begin
+   mysql_reload:=mysql_refresh(mysql,REFRESH_GRANT)
+end;
+
+Function mysql_thread_id(mysql : PMysql) : Cardinal;
+
+begin
+  mysql_thread_id:=mysql^.thread_id
+end;
+
+end.

+ 215 - 0
packages/mysql/mysql_com.pp

@@ -0,0 +1,215 @@
+unit mysql_com;
+
+interface
+
+{$linklib mysqlclient}
+{$linklib m}
+{$linklib c}
+
+{
+ Common definition between mysql server & client
+}
+
+{$packrecords 4}
+{ Extra types introduced for pascal }
+Type 
+  pbyte = ^byte;
+  pcardinal = ^cardinal;
+  Socket = longint;
+  my_bool = byte;
+
+Const
+ NAME_LEN  = 64 ;		{ Field/table name length }
+ LOCAL_HOST : pchar = 'localhost' ;
+
+ MYSQL_PORT = 3306;		{ Alloced by ISI for MySQL }
+ MYSQL_UNIX_ADDR  : pchar = '/tmp/mysql.sock';
+
+Type
+ enum_server_command = ( COM_SLEEP,COM_QUIT,COM_INIT_DB,COM_QUERY,
+			  COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB,COM_REFRESH,
+			  COM_SHUTDOWN,COM_STATISTICS,
+			  COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL,
+			  COM_DEBUG);
+
+Const
+ NOT_NULL_FLAG	     = 1;		{ Field can't be NULL }
+ PRI_KEY_FLAG	     = 2;		{ Field is part of a primary key }
+ UNIQUE_KEY_FLAG     = 4;		{ Field is part of a unique key }
+ MULTIPLE_KEY_FLAG   = 8;		{ Field is part of a key }
+ BLOB_FLAG	     = 16;		{ Field is a blob }
+ UNSIGNED_FLAG       = 32;		{ Field is unsigned }
+ ZEROFILL_FLAG	     = 64;		{ Field is zerofill }
+ BINARY_FLAG	     = 128;
+{ The following are only sent to new clients }
+ ENUM_FLAG	     = 256;		{ field is an enum }
+ AUTO_INCREMENT_FLAG = 512;		{ field is a autoincrement field }
+ TIMESTAMP_FLAG	     = 1024;		{ Field is a timestamp }
+ PART_KEY_FLAG	     = 16384;		{ Intern; Part of some key }
+ GROUP_FLAG	     = 32768;		{ Intern group field }
+
+ REFRESH_GRANT		= 1;	{ Refresh grant tables }
+ REFRESH_LOG		= 2;	{ Start on new log file }
+ REFRESH_TABLES		= 4;	{ close all tables }
+
+ CLIENT_LONG_PASSWORD	= 1;	{ new more secure passwords }
+ CLIENT_FOUND_ROWS	= 2;	{ Found instead of affected rows }
+ CLIENT_LONG_FLAG	= 4;	{ Get all column flags }
+
+Type
+pst_used_mem = ^st_used_mem;
+st_used_mem  = record    			{ struct for once_alloc }
+  next : pst_used_mem;				{ Next block in use }
+  left : cardinal;				{ memory left in block  }
+  size : cardinal;				{ size of block }
+end;
+
+TUSED_MEM = st_used_mem;
+PUSED_MEM = ^TUSED_MEM;
+
+TError_handler = Procedure;
+
+st_mem_root =  record
+  free : PUSED_MEM;
+  used : PUSED_MEM;
+  min_malloc : cardinal;
+  block_size : cardinal;
+  error_handler : TERROR_Handler;
+end;
+TMEM_ROOT = st_mem_root;
+PMEM_ROOT = ^TMEM_ROOT;
+
+Const
+ MYSQL_ERRMSG_SIZE = 200;
+
+Type
+st_net  = record
+  fd : Socket;
+  fcntl : Longint;
+  buff,buff_end,write_pos : Pchar;
+  last_error : array [0..MYSQL_ERRMSG_SIZE-1] of char;
+  last_errno,max_packet,timeout,pkt_nr : Cardinal;
+  error,return_errno : my_bool;
+end;
+TNET = st_net;
+PNET = ^TNET;
+
+Const
+  packet_error : longint = -1;
+
+Type
+ enum_field_types = ( FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY,
+			FIELD_TYPE_SHORT,  FIELD_TYPE_LONG,
+			FIELD_TYPE_FLOAT,  FIELD_TYPE_DOUBLE,
+			FIELD_TYPE_NULL,   FIELD_TYPE_TIMESTAMP,
+			FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24,
+			FIELD_TYPE_DATE,   FIELD_TYPE_TIME,
+			FIELD_TYPE_DATETIME,
+			FIELD_TYPE_ENUM := 247,
+			FIELD_TYPE_SET := 248,
+			FIELD_TYPE_TINY_BLOB := 249,
+			FIELD_TYPE_MEDIUM_BLOB := 250,
+			FIELD_TYPE_LONG_BLOB :=251,
+			FIELD_TYPE_BLOB :=252,
+			FIELD_TYPE_VAR_STRING :=253,
+			FIELD_TYPE_STRING:=254);
+
+Const
+FIELD_TYPE_CHAR = FIELD_TYPE_TINY;		{ For compability }
+FIELD_TYPE_INTERVAL = FIELD_TYPE_ENUM;  	{ For compability }
+
+Procedure sql_free (root : PMEM_ROOT);cdecl;
+Procedure init_alloc_root (root: PMEM_ROOT;block_size : Cardinal);cdecl;
+Function sql_alloc_first_block(root : PMEM_ROOT) : my_bool;cdecl;
+Function sql_alloc_root(mem_root : PMEM_ROOT;len : Cardinal) : longint;cdecl;
+Function sql_strdup_root(root : PMEM_ROOT;st : pchar) : pchar;cdecl;
+Function sql_memdup_root(root: PMEM_ROOT;st : pchar; len : Cardinal): longint;cdecl;
+
+{
+extern unsigned long max_allowed_packet;
+extern unsigned long net_buffer_length;
+}
+
+{
+#define net_new_transaction(net) ((net)->pkt_nr=0)
+}
+
+Function  my_net_init(net :PNET; fd : Socket) : Longint;cdecl;
+procedure net_end(net : PNET);cdecl;
+Procedure net_clear(net : PNET);cdecl;
+Function  net_flush(net : PNET) : longint;cdecl;
+Function  my_net_write(net : PNET;packet : pbyte;len : cardinal) : longint;cdecl;
+Function  net_write_command(net : PNET; command : char;packet : pbyte;len : cardinal) : longint;cdecl;
+Function  net_real_write(net : PNET;packet : pbyte; len : Cardinal) : longint;cdecl;
+Function  my_net_read(net : PNET) : Cardinal;cdecl;
+
+Type
+TRand_struct  = record
+  seed,seed2,max_value : Cardinal;
+  max_value_dbl : double;
+end;
+PRand_struct = ^TRand_struct;
+
+{ The following is for user defined functions }
+
+Item_result = (STRING_RESULT,REAL_RESULT,INT_RESULT);
+
+st_udf_args = record
+  arg_count : cardinal; 		{ Number of arguments }
+  arg_type : ^Item_result;		{ Pointer to item_results }
+  args : ppchar;			{ Pointer to argument }
+  lengths : PCardinal;	        	{ Length of string arguments }
+end;
+TUDF_ARGS = st_udf_args;
+PUDPF_ARGS = ^TUDF_ARGS;
+
+  { This holds information about the result }
+
+st_udf_init = record
+  maybe_null : my_bool;			{ 1 if function can return NULL }
+  decimals : cardinal;  		{ for real functions }
+  max_length : Cardinal;		{ For string functions }
+  ptr : PChar;				{ free pointer for function data }
+end;
+TUDF_INIT = st_udf_init;
+PUDF_INIT = TUDF_INIT;
+
+  { Prototypes to password functions }
+
+procedure randominit(rand : Prand_struct; seed1,seed2 : Cardinal);cdecl;
+Function  rnd(rand : Prand_struct) : double;cdecl;
+procedure make_scrambled_password(toarg, passwd : Pchar);cdecl;
+procedure get_salt_from_password(res : pcardinal; password : pchar);cdecl;
+procedure scramble(toarg,message,password : pchar; old_ver : my_bool);cdecl;
+function  check_scramble(scramble,message : pchar; salt : cardinal;old_ver:my_bool) : my_bool;cdecl;
+function  get_tty_password(opt_message:  pchar) : pchar;cdecl;
+
+{
+#define NULL_LENGTH ((unsigned long) ~0) { For net_store_length }
+}
+
+implementation
+
+Procedure sql_free (root : PMEM_ROOT);cdecl;external;
+Procedure init_alloc_root (root: PMEM_ROOT;block_size : Cardinal);cdecl;external;
+Function sql_alloc_first_block(root : PMEM_ROOT) : my_bool;cdecl;external;
+Function sql_alloc_root(mem_root : PMEM_ROOT;len : Cardinal) : longint;cdecl;external;
+Function sql_strdup_root(root : PMEM_ROOT;st : pchar) : pchar;cdecl;external;
+Function sql_memdup_root(root: PMEM_ROOT;st : pchar; len : Cardinal) : longint;cdecl;external;
+Function  my_net_init(net :PNET; fd : Socket) : Longint;cdecl;external;
+procedure net_end(net : PNET);cdecl;external;
+Procedure net_clear(net : PNET);cdecl;external;
+Function  net_flush(net : PNET) : longint;cdecl;external;
+Function  my_net_write(net : PNET;packet : pbyte;len : cardinal) : longint;cdecl;external;
+Function  net_write_command(net : PNET; command : char;packet : pbyte;len : cardinal) : longint;cdecl;external;
+Function  net_real_write(net : PNET;packet : pbyte; len : Cardinal) : longint;cdecl;external;
+Function  my_net_read(net : PNET) : Cardinal;cdecl;external;
+procedure randominit(rand : Prand_struct; seed1,seed2 : Cardinal);cdecl;external;
+Function  rnd(rand : Prand_struct) : double;cdecl;external;
+procedure make_scrambled_password(toarg, passwd : Pchar);cdecl;external;
+procedure get_salt_from_password(res : pcardinal; password : pchar);cdecl;external;
+procedure scramble(toarg,message,password : pchar; old_ver : my_bool);cdecl;external;
+function  check_scramble(scramble,message : pchar; salt : cardinal;old_ver:my_bool) : my_bool;cdecl;external;
+function  get_tty_password(opt_message:  pchar) : pchar;cdecl;external;
+
+end.

+ 19 - 0
packages/mysql/mysql_version.pp

@@ -0,0 +1,19 @@
+unit mysql_version;
+
+{
+  Translated from mysql_version.h by Michael Van Canneyt
+  ([email protected])
+}
+
+interface
+
+{ Version numbers for protocol & mysqld }
+Const
+
+ MYSQL_SERVER_VERSION : pchar ='3.21.28-gamma';
+ FRM_VER = 6;
+ MYSQL_VERSION_ID =32128;
+
+implementation
+
+end.

+ 21 - 0
packages/mysql/mysqls.c

@@ -0,0 +1,21 @@
+#include <mysql.h>
+#include <stdio.h>
+
+main ()
+{
+  my_bool i;
+  NET n;
+  printf ("MYSQL : %d\n",sizeof(MYSQL));
+  printf ("MYSQL_DATA : %d\n",sizeof(MYSQL_DATA));
+  printf ("MYSQL_ROWS : %d\n",sizeof(MYSQL_ROWS));
+  printf ("MYSQL_ROW : %d\n",sizeof(MYSQL_ROW));
+  printf ("MYSQL_FIELD : %d\n",sizeof(MYSQL_FIELD));
+  printf ("MYSQL_RES : %d\n",sizeof(MYSQL_RES));
+  printf ("MEM_ROOT : %d\n",sizeof(MEM_ROOT));
+  printf ("my_bool : %d\n",sizeof(my_bool));
+  printf ("NET : %d\n",sizeof(NET));
+  printf ("USED_MEM : %d\n",sizeof(USED_MEM));
+  printf ("new: %d\n",sizeof(char [MYSQL_ERRMSG_SIZE]));
+  i=n.error;
+}
+

+ 17 - 0
packages/mysql/mysqls.pp

@@ -0,0 +1,17 @@
+program mysqls;
+
+uses mysql,mysql_com;
+
+
+begin
+  Writeln ('MYSQL : ',sizeof(TMYSQL));
+  writeln ('MYSQL_DATA : ',sizeof(TMYSQL_DATA));
+  writeln ('MYSQL_ROWS : ',sizeof(TMYSQL_ROWS));
+  writeln ('MYSQL_ROW : ',sizeof(TMYSQL_ROW));
+  writeln ('MYSQL_FIELD : ',sizeof(TMYSQL_FIELD));
+  writeln ('MYSQL_RES : ',sizeof(TMYSQL_RES));
+  writeln ('MEM_ROOT : ',sizeof(TMEM_ROOT));
+  writeln ('my_bool : ',sizeof(my_bool));
+  writeln ('TNET : ',sizeof(TNET));
+  writeln ('USED_MEM : ',sizeof(TUSED_MEM));
+end.

+ 16 - 0
packages/mysql/rmdb

@@ -0,0 +1,16 @@
+#!/bin/sh
+#
+# Small script to remove the demo database again.
+# This script accepts 1 (optional) argument : 
+# a database you can connect to. Default is 'testdb'
+# 
+echo -n "Removing table FPdev from db ${1-testdb}..." 
+mysql ${1-testdb} << EOF >/dev/null
+drop table FPdev
+EOF
+if [ ! $? = 0 ]; then
+  echo "Failed."
+else
+  echo "Done."
+fi
+# Ready

+ 81 - 0
packages/mysql/testdb.pp

@@ -0,0 +1,81 @@
+program qtest;
+
+uses mysql;
+
+Const
+  DataBase : Pchar = 'testdb';
+  Query    : Pchar = 'Select * from FPdev';
+
+var
+  count,num : longint;
+  code : integer;
+  sock : PMYSQL;
+  qmysql : TMYSQL;
+  qbuf : string [160];
+  rowbuf : TMYSQL_ROW;
+  dummy : string;
+  recbuf : PMYSQL_RES;
+
+begin
+  if paramcount=1 then
+    begin
+    Dummy:=Paramstr(1)+#0;
+    DataBase:=@Dummy[1];
+    end;  
+  Write ('Connecting to MySQL...');
+  sock :=  mysql_connect(PMysql(@qmysql),nil,nil,nil);
+  if sock=Nil then 
+    begin
+    Writeln (stderr,'Couldn''t connect to MySQL.');
+    Writeln (stderr,mysql_error(@qmysql));
+    halt(1); 
+    end;
+  Writeln ('Done.');
+  Writeln ('Connection data:');
+  writeln ('Mysql_port      : ',mysql_port);
+  writeln ('Mysql_unix_port : ',mysql_unix_port);
+  writeln ('Host info       : ',mysql_get_host_info(sock));
+  writeln ('Server info     : ',mysql_stat(sock)); 
+  writeln ('Client info     : ',mysql_get_client_info);
+  
+  Writeln ('Selecting Database ',DataBase,'...');  
+  if mysql_select_db(sock,DataBase) < 0 then 
+    begin
+    Writeln (stderr,'Couldn''t select database ',Database);
+    Writeln (stderr,mysql_error(sock));
+    halt (1);
+    end;
+  
+  writeln ('Executing query : ',Query,'...'); 
+    if (mysql_query(sock,Query) < 0) then
+      begin
+      Writeln (stderr,'Query failed ');
+      writeln (stderr,mysql_error(sock));
+      Halt(1);
+      end;                      
+
+  recbuf := mysql_store_result(sock); 
+  if RecBuf=Nil then
+    begin
+    Writeln ('Query returned nil result.');
+    mysql_close(sock);
+    halt (1);
+    end;
+  Writeln ('Number of records returned  : ',mysql_num_rows (recbuf));
+  Writeln ('Number of fields per record : ',mysql_num_fields(recbuf));
+  
+  rowbuf := mysql_fetch_row(recbuf);
+  while (rowbuf <>nil) do
+       begin
+       Write  ('(Id: ', rowbuf[0]);
+       Write  (', Name: ', rowbuf[1]);
+       Writeln(', Email : ', rowbuf[2],')');
+       rowbuf := mysql_fetch_row(recbuf);
+       end;
+  Writeln ('Freeing memory occupied by result set...');
+  mysql_free_result (recbuf); 
+
+  Writeln ('Closing connection with MySQL.');
+  mysql_close(sock);
+  halt(0);
+end.

+ 138 - 0
packages/ncurses/Makefile

@@ -0,0 +1,138 @@
+#
+#   $Id$
+#   Copyright (c) 1999 by the Free Pascal Development Team
+#
+#   Makefile for <template> for Free Pascal
+#
+#   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.
+#
+#####################################################################
+# Defaults
+#####################################################################
+
+# Where are the include files located
+INC=
+PROCINC=
+OSINC=
+
+# Needed options, without it won't compile
+NEEDOPT=-S2
+
+# Needed unit dir, which is searched as the first path
+NEEDUNITDIR=
+
+# Define if ncurses library is not in /usr/lib 
+# NCURSESLIBDIR=
+
+# Where need we to place the executables/ppu/objects
+TARGETDIR=
+UNITTARGETDIR=
+
+# As default make only the units
+#DEFAULTUNITS=1
+
+# Uncomment this is the makefile.fpc isn't located in ../..
+DEFAULTFPCDIR=../..
+
+#####################################################################
+# Real targets
+#####################################################################
+
+UNITOBJECTS=ncurses
+EXEOBJECTS=firework testn
+
+#####################################################################
+# Common targets
+#####################################################################
+
+ifdef NCURSESLIBDIR 
+override NEEDLIBDIR+=$(NCURSESLIBDIR)
+endif
+
+#####################################################################
+# Common targets
+#####################################################################
+
+.PHONY: all clean install info \
+        staticlib sharedlib libsclean \
+        staticinstall sharedinstall libinstall \
+        
+all: testfpcmake fpc_all
+
+clean: testfpcmake fpc_clean
+
+install: testfpcmake fpc_install
+
+info: testfpcmake fpc_info
+
+staticlib: testfpcmake fpc_staticlib
+
+sharedlib: testfpcmake fpc_sharedlib
+
+libsclean: testfpcmake fpc_libsclean
+
+staticinstall: testfpcmake fpc_staticinstall
+
+sharedinstall: testfpcmake fpc_sharedinstall
+
+libinstall: testfpcmake fpc_libinstall
+
+
+#####################################################################
+# Include default makefile
+#####################################################################
+
+# test if FPCMAKE is still valid
+ifdef FPCMAKE
+ifeq ($(strip $(wildcard $(FPCMAKE))),)
+FPCDIR=
+FPCMAKE=
+endif
+endif
+
+ifndef FPCDIR
+ifdef DEFAULTFPCDIR
+FPCDIR=$(DEFAULTFPCDIR)
+endif
+endif
+
+ifndef FPCMAKE
+ifdef FPCDIR
+FPCMAKE=$(FPCDIR)/makefile.fpc
+else
+FPCMAKE=makefile.fpc
+endif
+endif
+
+override FPCMAKE:=$(strip $(wildcard $(FPCMAKE)))
+ifeq ($(FPCMAKE),)
+testfpcmake:
+	@echo makefile.fpc not found!
+	@echo Check the FPCMAKE and FPCDIR environment variables.
+	@exit
+else
+include $(FPCMAKE)
+testfpcmake:
+endif
+
+#####################################################################
+# Dependencies
+#####################################################################
+
+testn$(EXEEXT): testn$(PASEXT) ncurses$(PPUEXT)
+firework$(EXEEXT): firework$(PASEXT) ncurses$(PPUEXT)
+
+#
+# $Log$
+# Revision 1.1  1999-05-12 00:11:27  michael
+# initial import
+#
+# Revision 1.1  1999/03/16 00:50:29  peter
+#   + init
+#
+#

+ 21 - 0
packages/ncurses/README

@@ -0,0 +1,21 @@
+This is the ncurses interface for Free Pascal.
+
+You need at least version 0.99.8 to compile this.
+
+Compiling should be as simple as 
+make install
+this will compile the unit ncurses, and make the two programs.
+the ncurses unit will be installed in the directory you set in 
+the makefile.
+
+If the ncurses library is not in /usr/lib, it is possible that
+you must set a -Fl/path/to/libncurses/dir option when compiling the
+programs.
+
+The firework program is a nice program that is in the test suite of ncurses
+the testn program shows how to make a small window and set a border and
+colors, and display a string in it.
+
+Enjoy !
+
+Michael.

+ 154 - 0
packages/ncurses/firework.pp

@@ -0,0 +1,154 @@
+program firework;
+
+uses ncurses,linux;
+
+procedure onsig(n : Longint);
+begin
+    curs_set(1);
+    endwin;
+    halt(1);
+end;
+
+
+Procedure showit;
+begin
+  refresh;
+  napms(120);
+end;
+
+Function get_colour(Var bold : chtype) : longint;
+
+Var 
+attr : 	longint;
+
+begin
+ attr := random(16) + 1;
+ bold := A_NORMAL;
+ if (attr > 8) then
+  begin
+  bold:= A_BOLD;
+  attr :=attr and 7;
+  end;
+ get_colour:=attr;
+end;
+
+CONST my_bg : LONGINT = COLOR_BLACK;
+
+
+Procedure explode(Row,Col : longint);
+
+var 
+  Bold : chtype;
+
+begin
+       ncurses.erase;
+       mvaddstr(row,col,'-');
+       showit;
+
+       init_pair(1,get_colour(bold),my_bg);
+       attrset(COLOR_PAIR(1) or bold);
+       mvaddstr(row-1,col-1,' - ');
+       mvaddstr(row,col-1,'-+-');
+       mvaddstr(row+1,col-1,' - ');
+       showit;
+
+       init_pair(1,get_colour(bold),my_bg);
+       attrset(COLOR_PAIR(1) or bold);
+       mvaddstr(row-2,col-2,' --- ');
+       mvaddstr(row-1,col-2,'-+++-');
+       mvaddstr(row,  col-2,'-+#+-');
+       mvaddstr(row+1,col-2,'-+++-');
+       mvaddstr(row+2,col-2,' --- ');
+       showit;
+
+       init_pair(1,get_colour(bold),my_bg);
+       attrset(COLOR_PAIR(1) or bold);
+       mvaddstr(row-2,col-2,' +++ ');
+       mvaddstr(row-1,col-2,'++#++');
+       mvaddstr(row,  col-2,'+# #+');
+       mvaddstr(row+1,col-2,'++#++');
+       mvaddstr(row+2,col-2,' +++ ');
+       showit;
+
+       init_pair(1,get_colour(bold),my_bg);
+       attrset(COLOR_PAIR(1) or bold);
+       mvaddstr(row-2,col-2,'  #  ');
+       mvaddstr(row-1,col-2,'## ##');
+       mvaddstr(row,  col-2,'#   #');
+       mvaddstr(row+1,col-2,'## ##');
+       mvaddstr(row+2,col-2,'  #  ');
+       showit;
+
+       init_pair(1,get_colour(bold),my_bg);
+       attrset(COLOR_PAIR(1) or bold);
+       mvaddstr(row-2,col-2,' # # ');
+       mvaddstr(row-1,col-2,'#   #');
+       mvaddstr(row,  col-2,'     ');
+       mvaddstr(row+1,col-2,'#   #');
+       mvaddstr(row+2,col-2,' # # ');
+       showit;
+end;
+
+
+
+
+Var
+     J : Longint;
+    startp,endp,row,diff,flag : longint;
+    direction : boolean;
+    seed : cardinal;
+
+begin
+flag:=0;
+{
+for j:=SIGHUP to SIGTERM do 
+  if (signal(j,SIG_IGN)<>SIG_IGN) then
+    signal(j,@onsig);
+}
+initscr;
+if (has_colors<>0) then
+  start_color;
+  curs_set(0);
+
+randomize;
+cbreak;
+While true do
+  begin
+  repeat
+    startp := random (COLS -3);
+    endp := random (COLS - 3);
+    If startp < 2 then startp:=2;
+    If endp <2  then endp:=2;
+    direction := startp > endp ;
+    diff := abs(startp-endp);
+  until (diff>2) and (diff<(LINES-2));
+  attrset(A_NORMAL);
+  for row:=0 to diff do
+    begin;
+      If direction then 
+        mvaddstr(LINES - row,startp + row ,'/')
+      else 
+        mvaddstr(LINES - row,startp - row ,'\');
+      inc(flag);
+      if flag<>0 then 
+         begin
+         showit;
+         erase;
+         flag := 0;
+         end;
+    end;
+  inc(flag);
+  if (flag<>0) then 
+    begin
+    showit;
+    flag := 0;
+    end;
+  randomize;
+  If Direction then 
+    explode(LINES-row,startp+diff)
+  Else
+    explode(LINES-row,startp-diff);
+  erase;
+  showit;
+  end;
+end.

+ 744 - 0
packages/ncurses/ncurses.h

@@ -0,0 +1,744 @@
+
+/* These are defined only in curses.h, and are used for conditional compiles */
+#define NCURSES_VERSION_MAJOR 3
+#define NCURSES_VERSION_MINOR 0
+#define NCURSES_VERSION_PATCH 980228
+
+/* This is defined in more than one ncurses header, for identification */
+#undef  NCURSES_VERSION
+#define NCURSES_VERSION "3.0"
+
+/*
+#ifdef NCURSES_NOMACROS
+#define NCURSES_ATTR_T attr_t
+#endif
+
+#ifndef NCURSES_ATTR_T
+#define NCURSES_ATTR_T int
+#endif
+
+#ifndef NCURSES_CONST
+#define NCURSES_CONST 
+#endif
+*/
+
+typedef unsigned long chtype;
+
+
+#define CXX_BUILTIN_BOOL 1
+/*
+#define CXX_TYPE_OF_BOOL char
+*/
+
+/* colors */
+extern int COLORS;
+extern int COLOR_PAIRS;
+
+#define COLOR_BLACK	0
+#define COLOR_RED	1
+#define COLOR_GREEN	2
+#define COLOR_YELLOW	3
+#define COLOR_BLUE	4
+#define COLOR_MAGENTA	5
+#define COLOR_CYAN	6
+#define COLOR_WHITE	7
+
+/* line graphics */
+
+/*
+extern	chtype acs_map[];
+*/
+
+/* VT100 symbols begin here */
+
+/*
+#define ACS_ULCORNER	(acs_map['l'])	
+#define ACS_LLCORNER	(acs_map['m'])	
+#define ACS_URCORNER	(acs_map['k'])	
+#define ACS_LRCORNER	(acs_map['j'])	
+#define ACS_LTEE	(acs_map['t'])	
+#define ACS_RTEE	(acs_map['u'])	
+#define ACS_BTEE	(acs_map['v'])	
+#define ACS_TTEE	(acs_map['w'])	
+#define ACS_HLINE	(acs_map['q'])	
+#define ACS_VLINE	(acs_map['x'])	
+#define ACS_PLUS	(acs_map['n'])	
+#define ACS_S1		(acs_map['o'])	
+#define ACS_S9		(acs_map['s'])	
+#define ACS_DIAMOND	(acs_map['`'])	
+#define ACS_CKBOARD	(acs_map['a'])	
+#define ACS_DEGREE	(acs_map['f'])	
+#define ACS_PLMINUS	(acs_map['g'])	
+#define ACS_BULLET	(acs_map['~'])	
+
+#define ACS_LARROW	(acs_map[','])	
+#define ACS_RARROW	(acs_map['+'])	
+#define ACS_DARROW	(acs_map['.'])	
+#define ACS_UARROW	(acs_map['-'])	
+#define ACS_BOARD	(acs_map['h'])	
+#define ACS_LANTERN	(acs_map['i'])	
+#define ACS_BLOCK	(acs_map['0'])	
+#define ACS_S3		(acs_map['p'])	
+#define ACS_S7		(acs_map['r'])	
+#define ACS_LEQUAL	(acs_map['y'])	
+#define ACS_GEQUAL	(acs_map['z'])	
+#define ACS_PI		(acs_map['{'])	
+#define ACS_NEQUAL	(acs_map['|'])	
+#define ACS_STERLING	(acs_map['}'])	
+*/
+
+/*
+ * Line drawing ACS names are of the form ACS_trbl, where t is the top, r
+ * is the right, b is the bottom, and l is the left.  t, r, b, and l might
+ * be B (blank), S (single), D (double), or T (thick).  The subset defined
+ * here only uses B and S.
+ */
+/*
+#define ACS_BSSB	ACS_ULCORNER
+#define ACS_SSBB	ACS_LLCORNER
+#define ACS_BBSS	ACS_URCORNER
+#define ACS_SBBS	ACS_LRCORNER
+#define ACS_SBSS	ACS_RTEE
+#define ACS_SSSB	ACS_LTEE
+#define ACS_SSBS	ACS_BTEE
+#define ACS_BSSS	ACS_TTEE
+#define ACS_BSBS	ACS_HLINE
+#define ACS_SBSB	ACS_VLINE
+#define ACS_SSSS	ACS_PLUS
+*/
+
+#define ERR     (-1)
+#define OK      (0)
+
+
+#define _SUBWIN         0x01	
+#define _ENDLINE        0x02	
+#define _FULLWIN        0x04	
+#define _SCROLLWIN      0x08	
+#define _ISPAD	        0x10	
+#define _HASMOVED       0x20	
+#define _WRAPPED        0x40	
+
+/*
+ * this value is used in the firstchar and lastchar fields to mark
+ * unchanged lines
+ */
+#define _NOCHANGE       -1
+
+/*
+ * this value is used in the oldindex field to mark lines created by insertions
+ * and scrolls.
+ */
+#define _NEWINDEX	-1
+
+/*
+typedef struct screen  SCREEN;
+typedef struct _win_st WINDOW;
+*/
+
+typedef	chtype	attr_t;		
+
+struct ldat
+{
+	chtype  *text;		
+	short   firstchar;	
+	short   lastchar;	
+	short   oldindex;	
+};
+
+struct _win_st
+{
+	short   _cury, _curx;	
+	short   _maxy, _maxx;	
+	short   _begy, _begx;	
+	short   _flags;		
+	attr_t  _attrs;		
+	chtype  _bkgd;		
+	bool	_notimeout;	
+	bool    _clear;		
+	bool    _leaveok;	
+	bool    _scroll;	
+	bool    _idlok;		
+	bool    _idcok;		
+	bool	_immed;		
+	bool	_sync;		
+	bool    _use_keypad;    
+	int	_delay;		
+	struct ldat *_line;	
+	short	_regtop;	
+	short	_regbottom;	
+	int	_parx;		
+	int	_pary;		
+	WINDOW	*_parent;	
+	struct pdat
+	{
+	    short _pad_y,      _pad_x;
+	    short _pad_top,    _pad_left;
+	    short _pad_bottom, _pad_right;
+	} _pad;
+
+	short   _yoffset;	
+};
+
+extern WINDOW   *stdscr;
+extern WINDOW   *curscr;
+extern WINDOW   *newscr;
+
+extern int	LINES;
+extern int	COLS;
+extern int	TABSIZE;
+
+/*
+ * This global was an undocumented feature under AIX curses.
+ */
+extern int ESCDELAY;	
+
+
+extern int define_key (char *, int);
+extern int keyok (int, bool);
+extern int resizeterm (int, int);
+extern int use_default_colors (void);
+extern int wresize (WINDOW *, int, int);
+
+/*
+extern char ttytype[];		
+*/
+
+extern int baudrate(void);				
+extern int beep(void);					
+extern bool can_change_color(void);			
+extern int cbreak(void);				
+extern int clearok(WINDOW *,bool);			
+extern int color_content(short,short*,short*,short*);	
+extern int copywin(const WINDOW*,WINDOW*,int,int,int,int,int,int,int);	
+extern int curs_set(int);				
+extern int def_prog_mode(void);				
+extern int def_shell_mode(void);			
+extern int delay_output(int);				
+extern void delscreen(SCREEN *);			
+extern int delwin(WINDOW *);				
+extern WINDOW *derwin(WINDOW *,int,int,int,int);	
+extern int doupdate(void);				
+extern WINDOW *dupwin(WINDOW *);			
+extern int echo(void);					
+extern int endwin(void);				
+extern char erasechar(void);				
+extern void filter(void);				
+extern int flash(void);					
+extern int flushinp(void);				
+extern WINDOW *getwin(FILE *);				
+extern int halfdelay(int);				
+extern bool has_colors(void);				
+extern int has_ic(void);				
+extern int has_il(void);				
+extern void idcok(WINDOW *, bool);			
+extern int idlok(WINDOW *, bool);			
+extern void immedok(WINDOW *, bool);			
+extern WINDOW *initscr(void);				
+extern int init_color(short,short,short,short);		
+extern int init_pair(short,short,short);		
+extern int intrflush(WINDOW *,bool);			
+extern int isendwin(void);				
+extern int is_linetouched(WINDOW *,int);		
+extern int is_wintouched(WINDOW *);			
+extern const char *keyname(int);			
+extern int keypad(WINDOW *,bool);			
+extern char killchar(void);				
+extern int leaveok(WINDOW *,bool);			
+extern char *longname(void);				
+extern int meta(WINDOW *,bool);				
+extern int mvcur(int,int,int,int);			
+extern int mvderwin(WINDOW *, int, int);		
+/*
+extern int mvprintw(int,int,const char *,...)		
+		GCC_PRINTFLIKE(3,4);
+extern int mvscanw(int,int,const char *,...)		
+		GCC_SCANFLIKE(3,4);
+*/
+extern int mvwin(WINDOW *,int,int);			
+/*
+extern int mvwprintw(WINDOW*,int,int,const char *,...)	
+		GCC_PRINTFLIKE(4,5);
+extern int mvwscanw(WINDOW *,int,int,const char *,...)	
+		GCC_SCANFLIKE(4,5);
+*/
+extern int napms(int);					
+extern WINDOW *newpad(int,int);				
+extern SCREEN *newterm(const char *,FILE *,FILE *);	
+extern WINDOW *newwin(int,int,int,int);			
+extern int nl(void);					
+extern int nocbreak(void);				
+extern int nodelay(WINDOW *,bool);			
+extern int noecho(void);				
+extern int nonl(void);					
+extern int noqiflush(void);				
+extern int noraw(void);					
+extern int notimeout(WINDOW *,bool);			
+extern int overlay(const WINDOW*,WINDOW *);		
+extern int overwrite(const WINDOW*,WINDOW *);		
+extern int pair_content(short,short*,short*);		
+extern int pechochar(WINDOW *, const chtype);		
+extern int pnoutrefresh(WINDOW*,int,int,int,int,int,int);
+extern int prefresh(WINDOW *,int,int,int,int,int,int);	
+/*
+extern int printw(const char *,...)			
+		GCC_PRINTFLIKE(1,2);
+*/
+extern int putp(const char *);				
+extern int putwin(WINDOW *, FILE *);			
+extern int qiflush(void);				
+extern int raw(void);					
+extern int resetty(void);				
+extern int reset_prog_mode(void);			
+extern int reset_shell_mode(void);			
+extern int ripoffline(int, int (*init)(WINDOW *, int));	
+extern int savetty(void);				
+/*
+extern int scanw(const char *,...)			
+		GCC_SCANFLIKE(1,2);
+*/
+extern int scr_dump(const char *);			
+extern int scr_init(const char *);			
+extern int scrollok(WINDOW *,bool);			
+extern int scr_restore(const char *);			
+extern int scr_set(const char *);			
+extern SCREEN *set_term(SCREEN *);			
+extern int slk_attroff(const attr_t);			
+extern int slk_attron(const attr_t);			
+extern int slk_attrset(const attr_t);			
+extern attr_t slk_attr(void);                           
+extern int slk_clear(void);				
+extern int slk_init(int);				
+extern char *slk_label(int);				
+extern int slk_noutrefresh(void);			
+extern int slk_refresh(void);				
+extern int slk_restore(void);				
+extern int slk_set(int,const char *,int);		
+extern int slk_touch(void);				
+extern int start_color(void);				
+extern WINDOW *subpad(WINDOW *, int, int, int, int);	
+extern WINDOW *subwin(WINDOW *,int,int,int,int);	
+extern int syncok(WINDOW *, bool);			
+extern chtype termattrs(void);				
+extern char *termname(void);				
+extern int tigetflag(const char *);			
+extern int tigetnum(const char *);			
+extern char *tigetstr(const char *);			
+extern int typeahead(int);				
+extern int ungetch(int);				
+extern void use_env(bool);				
+extern int vidattr(chtype);				
+extern int vidputs(chtype, int (*)(int));		
+extern int vwprintw(WINDOW *,const char *,va_list);	
+extern int vwscanw(WINDOW *,const char *,va_list);	
+extern int waddch(WINDOW *, const chtype);		
+extern int waddchnstr(WINDOW *,const chtype *const,int); 
+extern int waddnstr(WINDOW *,const char *const,int);	
+extern int wattr_on(WINDOW *, const attr_t);		
+extern int wattr_off(WINDOW *, const attr_t);		
+extern int wbkgd(WINDOW *,const chtype);		
+extern void wbkgdset(WINDOW *,chtype);			
+extern int wborder(WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype);	
+extern int wchgat(WINDOW *, int, attr_t, short, const void *);
+extern int wclear(WINDOW *);				
+extern int wclrtobot(WINDOW *);				
+extern int wclrtoeol(WINDOW *);				
+extern void wcursyncup(WINDOW *);			
+extern int wdelch(WINDOW *);				
+extern int wechochar(WINDOW *, const chtype);		
+extern int werase(WINDOW *);				
+extern int wgetch(WINDOW *);				
+extern int wgetnstr(WINDOW *,char *,int);		
+extern int whline(WINDOW *, chtype, int);		
+extern int winchnstr(WINDOW *, chtype *, int);		
+extern int winnstr(WINDOW *, char *, int);		
+extern int winsch(WINDOW *, chtype);			
+extern int winsdelln(WINDOW *,int);			
+extern int winsnstr(WINDOW *, const char *,int);	
+extern int wmove(WINDOW *,int,int);			
+extern int wnoutrefresh(WINDOW *);			
+/*
+extern int wprintw(WINDOW *,const char *,...)		
+		GCC_PRINTFLIKE(2,3);
+*/
+extern int wredrawln(WINDOW *,int,int);			
+extern int wrefresh(WINDOW *);				
+/*
+extern int wscanw(WINDOW *,const char *,...)		
+		GCC_SCANFLIKE(2,3);
+*/
+extern int wscrl(WINDOW *,int);				
+extern int wsetscrreg(WINDOW *,int,int);		
+extern void wsyncdown(WINDOW *);			
+extern void wsyncup(WINDOW *);				
+extern int wtimeout(WINDOW *,int);			
+extern int wtouchln(WINDOW *,int,int,int);		
+extern int wvline(WINDOW *,chtype,int);			
+
+
+
+#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + 8))
+
+#define A_NORMAL	0L
+/*
+#define A_ATTRIBUTES	NCURSES_BITS(~(1UL - 1UL),0)
+*/
+#define A_CHARTEXT	(NCURSES_BITS(1UL,0) - 1UL)
+#define A_COLOR		NCURSES_BITS(((1UL) << 8) - 1UL,0)
+#define A_STANDOUT	NCURSES_BITS(1UL,8)
+#define A_UNDERLINE	NCURSES_BITS(1UL,9)
+#define A_REVERSE	NCURSES_BITS(1UL,10)
+#define A_BLINK		NCURSES_BITS(1UL,11)
+#define A_DIM		NCURSES_BITS(1UL,12)
+#define A_BOLD		NCURSES_BITS(1UL,13)
+#define A_ALTCHARSET	NCURSES_BITS(1UL,14)
+#define A_INVIS		NCURSES_BITS(1UL,15)
+#define A_PROTECT	NCURSES_BITS(1UL,16)
+#define A_HORIZONTAL	NCURSES_BITS(1UL,17)
+#define A_LEFT		NCURSES_BITS(1UL,18)
+#define A_LOW		NCURSES_BITS(1UL,19)
+#define A_RIGHT		NCURSES_BITS(1UL,20)
+#define A_TOP		NCURSES_BITS(1UL,21)
+#define A_VERTICAL	NCURSES_BITS(1UL,22)
+
+#define COLOR_PAIR(n)	NCURSES_BITS(n, 0)
+#define PAIR_NUMBER(a)	(((a) & A_COLOR) >> 8)
+
+/*
+ * pseudo functions
+ */
+#define wgetstr(w, s)		wgetnstr(w, s, -1)
+#define getnstr(s, n)		wgetnstr(stdscr, s, n)
+
+#define setterm(term)		setupterm(term, 1, (int *)0)
+
+#define fixterm()		reset_prog_mode()
+#define resetterm()		reset_shell_mode()
+#define saveterm()		def_prog_mode()
+#define crmode()		cbreak()
+#define nocrmode()		nocbreak()
+
+/*
+#define getyx(win,y,x)   	(y = (win)?(win)->_cury:ERR, x = (win)?(win)->_curx:ERR)
+#define getbegyx(win,y,x)	(y = (win)?(win)->_begy:ERR, x = (win)?(win)->_begx:ERR)
+#define getmaxyx(win,y,x)	(y = (win)?((win)->_maxy + 1):ERR, x = (win)?((win)->_maxx + 1):ERR)
+#define getparyx(win,y,x)	(y = (win)?(win)->_pary:ERR, x = (win)?(win)->_parx:ERR)
+*/
+#define getsyx(y,x)		getyx(stdscr, y, x)
+/*
+#define setsyx(y,x)		(stdscr->_cury = y, stdscr->_curx = x)
+*/
+
+
+#define getattrs(win)		((win)?(win)->_attrs:A_NORMAL)
+#define getcurx(win)		((win)?(win)->_curx:ERR)
+#define getcury(win)		((win)?(win)->_cury:ERR)
+#define getbegx(win)		((win)?(win)->_begx:ERR)
+#define getbegy(win)		((win)?(win)->_begy:ERR)
+#define getmaxx(win)		((win)?((win)->_maxx + 1):ERR)
+#define getmaxy(win)		((win)?((win)->_maxy + 1):ERR)
+#define getparx(win)		((win)?(win)->_parx:ERR)
+#define getpary(win)		((win)?(win)->_pary:ERR)
+
+
+/*
+#define winch(win)       	((win)?(win)->_line[(win)->_cury].text[(win)->_curx]:0)
+*/
+#define wstandout(win)      	(wattr_set(win,A_STANDOUT))
+#define wstandend(win)      	(wattr_set(win,A_NORMAL))
+/*
+#define wattr_set(win,at)    	((win)?((win)->_attrs = (at)):0)
+*/
+
+#define wattron(win,at)		wattr_on(win, at)
+#define wattroff(win,at)	wattr_off(win, at)
+#define wattrset(win,at)    	wattr_set(win, at)
+
+#define scroll(win)		wscrl(win,1)
+
+#define touchwin(win)		wtouchln((win), 0, getmaxy(win), 1)
+#define touchline(win, s, c)	wtouchln((win), s, c, 1)
+#define untouchwin(win)		wtouchln((win), 0, getmaxy(win), 0)
+
+#define box(win, v, h)		wborder(win, v, v, h, h, 0, 0, 0, 0)
+#define border(ls, rs, ts, bs, tl, tr, bl, br)	wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
+#define hline(ch, n)		whline(stdscr, ch, n)
+#define vline(ch, n)		wvline(stdscr, ch, n)
+
+#define winstr(w, s)		winnstr(w, s, -1)
+#define winchstr(w, s)		winchnstr(w, s, -1)
+#define winsstr(w, s)		winsnstr(w, s, -1)
+
+#define redrawwin(w)		wredrawln(w, 0, w->_maxy+1)
+#define waddstr(win,str)	waddnstr(win,st,-1)
+#define waddchstr(win,st)	waddchnstr(win,st,-1)
+
+/*
+ * pseudo functions for standard screen
+ */
+
+#define addch(ch)      		waddch(stdscr,ch)
+#define addchnstr(st,n)	waddchnstr(stdscr,st,n)
+#define addchstr(st)		waddchstr(stdscr,st)
+#define addnstr(st,n)		waddnstr(stdscr,st,n)
+#define addstr(st)    		waddnstr(stdscr,st,-1)
+#define attroff(at)    		wattroff(stdscr,at)
+#define attron(at)     		wattron(stdscr,at)
+#define attrset(at)    		wattrset(stdscr,at)
+#define bkgd(ch)		wbkgd(stdscr,ch)
+#define bkgdset(ch)		wbkgdset(stdscr,ch)
+#define clear()        		wclear(stdscr)
+#define clrtobot()     		wclrtobot(stdscr)
+#define clrtoeol()     		wclrtoeol(stdscr)
+#define delch()        		wdelch(stdscr)
+#define deleteln()     		winsdelln(stdscr,-1)
+#define echochar(c)		wechochar(stdscr,c)
+#define erase()        		werase(stdscr)
+#define getch()        		wgetch(stdscr)
+#define getstr(st)    		wgetstr(stdscr,st)
+#define inch()       		winch(stdscr)
+#define inchnstr(s,n)		winchnstr(stdscr,s,n)
+#define inchstr(s)		winchstr(stdscr,s)
+#define innstr(s,n)		winnstr(stdscr,s,n)
+#define insch(c)       		winsch(stdscr,c)
+#define insdelln(n)		winsdelln(stdscr,n)
+#define insertln()     		winsdelln(stdscr,1)
+#define insnstr(s,n)		winsnstr(stdscr,s,n)
+#define insstr(s)		winsstr(stdscr,s)
+#define instr(s)		winstr(stdscr,s)
+#define move(y,x)     		wmove(stdscr,y,x)
+#define refresh()      		wrefresh(stdscr)
+#define scrl(n)			wscrl(stdscr,n)
+#define setscrreg(t,b) 		wsetscrreg(stdscr,t,b)
+#define standend()     		wstandend(stdscr)
+#define standout()     		wstandout(stdscr)
+#define timeout(delay)		wtimeout(stdscr,delay)
+#define wdeleteln(win)     	winsdelln(win,-1)
+#define winsertln(win)     	winsdelln(win,1)
+
+/*
+ * mv functions
+ */
+
+/*
+#define mvwaddch(win,y,x,ch)    	(wmove(win,y,x) == ERR ? ERR : waddch(win,ch))
+#define mvwaddchnstr(win,y,x,st,n)	(wmove(win,y,x) == ERR ? ERR : waddchnstr(win,st,n))
+#define mvwaddchstr(win,y,x,st)  	(wmove(win,y,x) == ERR ? ERR : waddchnstr(win,st,-1))
+#define mvwaddnstr(win,y,x,st,n)	(wmove(win,y,x) == ERR ? ERR : waddnstr(win,st,n))
+#define mvwaddstr(win,y,x,st)  	        (wmove(win,y,x) == ERR ? ERR : waddnstr(win,st,-1))
+#define mvwdelch(win,y,x)       	(wmove(win,y,x) == ERR ? ERR : wdelch(win))
+#define mvwgetch(win,y,x)       	(wmove(win,y,x) == ERR ? ERR : wgetch(win))
+#define mvwgetnstr(win,y,x,st,n)    	(wmove(win,y,x) == ERR ? ERR : wgetnstr(win,st,n))
+#define mvwgetstr(win,y,x,st)      	(wmove(win,y,x) == ERR ? ERR : wgetstr(win,st))
+#define mvwhline(win,y,x,c,n)     	(wmove(win,y,x) == ERR ? ERR : whline(win,c,n))
+#define mvwinch(win,y,x)        	(wmove(win,y,x) == ERR ? (chtype)ERR : winch(win))
+#define mvwinchnstr(win,y,x,s,n)	(wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n))
+#define mvwinchstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winchstr(win,s))
+#define mvwinnstr(win,y,x,s,n)		(wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n))
+#define mvwinsch(win,y,x,c)     	(wmove(win,y,x) == ERR ? ERR : winsch(win,c))
+#define mvwinsnstr(win,y,x,s,n)		(wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n))
+#define mvwinsstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winsstr(win,s))
+#define mvwinstr(win,y,x,s)		(wmove(win,y,x) == ERR ? ERR : winstr(win,s))
+#define mvwvline(win,y,x,c,n)     	(wmove(win,y,x) == ERR ? ERR : wvline(win,c,n))
+*/
+
+#define mvaddch(y,x,ch)         	mvwaddch(stdscr,y,x,ch)
+#define mvaddchnstr(y,x,st,n)		mvwaddchnstr(stdscr,y,x,st,n)
+#define mvaddchstr(y,x,st)		mvwaddchstr(stdscr,y,x,st)
+#define mvaddnstr(y,x,st,n)		mvwaddnstr(stdscr,y,x,st,n)
+#define mvaddstr(y,x,st)       	mvwaddstr(stdscr,y,x,st)
+#define mvdelch(y,x)            	mvwdelch(stdscr,y,x)
+#define mvgetch(y,x)            	mvwgetch(stdscr,y,x)
+#define mvgetnstr(y,x,st,n)		mvwgetnstr(stdscr,y,x,st,n)
+#define mvgetstr(y,x,st)           	mvwgetstr(stdscr,y,x,st)
+#define mvhline(y,x,c,n)		mvwhline(stdscr,y,x,c,n)
+#define mvinch(y,x)             	mvwinch(stdscr,y,x)
+#define mvinchnstr(y,x,s,n)		mvwinchnstr(stdscr,y,x,s,n)
+#define mvinchstr(y,x,s)		mvwinchstr(stdscr,y,x,s)
+#define mvinnstr(y,x,s,n)		mvwinnstr(stdscr,y,x,s,n)
+#define mvinsch(y,x,c)          	mvwinsch(stdscr,y,x,c)
+#define mvinsnstr(y,x,s,n)		mvwinsnstr(stdscr,y,x,s,n)
+#define mvinsstr(y,x,s)			mvwinsstr(stdscr,y,x,s)
+#define mvinstr(y,x,s)			mvwinstr(stdscr,y,x,s)
+#define mvvline(y,x,c,n)		mvwvline(stdscr,y,x,c,n)
+
+#define add_wch(c)			wadd_wch(stsdscr,c)
+#define addnwstr(wstr,n)		waddnwstr(stdscr,wstr,n)
+#define addwstr(wstr,n)			waddnwstr(stdscr,wstr,-1)
+#define attr_get()			wattr_get(stdscr)
+#define attr_off(a)			wattr_off(stdscr,a)
+#define attr_on(a)			wattr_on(stdscr,a)
+#define attr_set(a)			wattr_set(stdscr,a)
+#define box_set(w,v,h)			wborder_set(w,v,v,h,h,0,0,0,9)
+#define chgat(n,a,c,o)			wchgat(stdscr,n,a,c,o)
+#define echo_wchar(c)			wecho_wchar(stdscr,c)
+#define getbkgd(win)			((win)->_bkgd)
+#define get_wch(c)			wget_wch(stdscr,c)
+#define get_wstr(t)			wgetn_wstr(stdscr,t,-1)
+#define getn_wstr(t,n)			wgetn_wstr(stdscr,t,n)
+#define hline_set(c,n)			whline_set(stdscr,c,n)
+#define in_wch(c)			win_wch(stdscr,c)
+#define in_wchnstr(c,n)			win_wchnstr(stdscr,c,n)
+#define in_wchstr(c)			win_wchnstr(stdscr,c,-1)
+#define innwstr(c,n)			winnwstr(stdscr,c,n)
+#define ins_nwstr(t,n)			wins_nwstr(stdscr,t,n)
+#define ins_wch(c)			wins_wch(stdscr,c)
+#define ins_wstr(t)			wins_nwstr(stdscr,t,-1)
+#define inwstr(c)			winnwstr(stdscr,c,-1)
+
+#define mvadd_wch(y,x,c)		mvwadd_wch(stdscr,y,x,c)
+#define mvaddnwstr(y,x,wstr,n)		mvwaddnwstr(stdscr,y,x,wstr,n)
+#define mvaddwstr(y,x,wstr,n)		mvwaddnwstr(stdscr,y,x,wstr,-1)
+#define mvchgat(y,x,n,a,c,o)		mvwchgat(stdscr,y,x,n,a,c,o)
+#define mvget_wch(y,x,c)		mvwget_wch(stdscr,y,x,c)
+#define mvget_wstr(y,x,t)		mvwgetn_wstr(stdscr,y,x,t,-1)
+#define mvgetn_wstr(y,x,t,n)		mvwgetn_wstr(stdscr,y,x,t,n)
+#define mvhline_set(y,x,c,n)		mvwhline_set(stdscr,y,x,c,n)
+#define mvin_wch(y,x,c)			mvwin_wch(stdscr,y,x,c)
+#define mvin_wchnstr(y,x,c,n)		mvwin_wchnstr(stdscr,y,x,c,n)
+#define mvin_wchstr(y,x,c)		mvwin_wchnstr(stdscr,y,x,c,-1)
+#define mvinnwstr(y,x,c,n)		mvwinnwstr(stdscr,y,x,c,n)
+#define mvins_nwstr(y,x,t,n)		mvwins_nwstr(stdscr,y,x,t,n)
+#define mvins_wch(y,x,c)		mvwins_wch(stdscr,y,x,c)
+#define mvins_wstr(y,x,t)		mvwins_nwstr(stdscr,y,x,t,-1)
+#define mvinwstr(y,x,c)			mvwinnwstr(stdscr,y,x,c,-1)
+#define mvvline_set(y,x,c,n)		mvwvline_set(stdscr,y,x,c,n)
+
+/*
+#define mvwadd_wch(y,x,win,c)		(wmove(win,y,x) == ERR ? ERR : wadd_wch(stsdscr,c))
+#define mvwaddnwstr(y,x,win,wstr,n)	(wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,n))
+#define mvwaddwstr(y,x,win,wstr,n)	(wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,-1))
+#define mvwchgat(win,y,x,n,a,c,o)	(wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o))
+#define mvwget_wch(win,y,x,c)		(wmove(win,y,x) == ERR ? ERR : wget_wch(win,n))
+#define mvwget_wstr(win,y,x,t)		(wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,-1))
+#define mvwgetn_wstr(win,y,x,t,n)	(wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,n))
+#define mvwhline_set(win,y,x,c,n)	(wmove(win,y,x) == ERR ? ERR : whline_set(win,c,n))
+#define mvwin_wch(win,y,x,c)		(wmove(win,y,x) == ERR ? ERR : win_wch(win,c))
+#define mvwin_wchnstr(win,y,x,c,n)	(wmove(win,y,x) == ERR ? ERR : win_wchnstr(stdscr,c,n))
+#define mvwin_wchstr(win,y,x,c)		(wmove(win,y,x) == ERR ? ERR : win_wchnstr(stdscr,c,-1))
+#define mvwinnwstr(win,y,x,c,n)		(wmove(win,y,x) == ERR ? ERR : winnwstr(stdscr,c,n))
+#define mvwins_nwstr(win,y,x,t,n)	(wmove(win,y,x) == ERR ? ERR : wins_nwstr(stdscr,t,n))
+#define mvwins_wch(win,y,x,c)		(wmove(win,y,x) == ERR ? ERR : wins_wch(c))
+#define mvwins_wstr(win,y,x,t)		(wmove(win,y,x) == ERR ? ERR : wins_nwstr(stdscr,t,-1))
+#define mvwinwstr(win,y,x,c)		(wmove(win,y,x) == ERR ? ERR : winnwstr(stdscr,c,-1))
+#define mvwvline_set(win,y,x,c,n)	(wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n))
+*/
+
+#define slk_attr_off(a)			slk_attroff(a)
+#define slk_attr_on(a)			slk_attron(a)
+#define slk_attr_set(a)			slk_attrset(a)
+#define vid_attr(a)			vidattr(a)
+#define vline_set(c,n)			vhline_set(stdscr,c,n)
+#define waddwstr(win,wstr,n)		waddnwstr(win,wstr,-1)
+#define wattr_get(win)			((win)->_attrs)
+#define wget_wstr(w,t)			wgetn_wstr(w,t,-1)
+#define win_wchstr(w,c)			win_wchnstr(w,c,-1)
+#define wins_wstr(w,t)			wins_nwstr(w,t,-1)
+#define winwstr(w,c)			winnwstr(w,c,-1)
+
+
+/*
+ * Pseudo-character tokens outside ASCII range.  The curses wgetch() function
+ * will return any given one of these only if the corresponding k- capability
+ * is defined in your terminal's terminfo entry.
+ */
+#define KEY_CODE_YES	0400		
+#define KEY_MIN		0401		
+#define KEY_BREAK       0401            
+#define KEY_DOWN        0402            
+#define KEY_UP          0403		
+#define KEY_LEFT        0404		
+#define KEY_RIGHT       0405            
+#define KEY_HOME        0406            
+#define KEY_BACKSPACE   0407            
+#define KEY_F0          0410            
+#define KEY_F(n)        (KEY_F0+(n))    
+#define KEY_DL          0510            
+#define KEY_IL          0511            
+#define KEY_DC          0512            
+#define KEY_IC          0513            
+#define KEY_EIC         0514            
+#define KEY_CLEAR       0515            
+#define KEY_EOS         0516            
+#define KEY_EOL         0517            
+#define KEY_SF          0520            
+#define KEY_SR          0521            
+#define KEY_NPAGE       0522            
+#define KEY_PPAGE       0523            
+#define KEY_STAB        0524            
+#define KEY_CTAB        0525            
+#define KEY_CATAB       0526            
+#define KEY_ENTER       0527            
+#define KEY_SRESET      0530            
+#define KEY_RESET       0531            
+#define KEY_PRINT       0532            
+#define KEY_LL          0533            
+
+#define KEY_A1		0534		
+#define KEY_A3		0535		
+#define KEY_B2		0536		
+#define KEY_C1		0537		
+#define KEY_C3		0540		
+#define KEY_BTAB	0541		
+#define KEY_BEG		0542		
+#define KEY_CANCEL	0543		
+#define KEY_CLOSE	0544		
+#define KEY_COMMAND	0545		
+#define KEY_COPY	0546		
+#define KEY_CREATE	0547		
+#define KEY_END		0550		
+#define KEY_EXIT	0551		
+#define KEY_FIND	0552		
+#define KEY_HELP	0553		
+#define KEY_MARK	0554		
+#define KEY_MESSAGE	0555		
+#define KEY_MOVE	0556		
+#define KEY_NEXT	0557		
+#define KEY_OPEN	0560		
+#define KEY_OPTIONS	0561		
+#define KEY_PREVIOUS	0562		
+#define KEY_REDO	0563		
+#define KEY_REFERENCE	0564		
+#define KEY_REFRESH	0565		
+#define KEY_REPLACE	0566		
+#define KEY_RESTART	0567		
+#define KEY_RESUME	0570		
+#define KEY_SAVE	0571		
+#define KEY_SBEG	0572		
+#define KEY_SCANCEL	0573		
+#define KEY_SCOMMAND	0574		
+#define KEY_SCOPY	0575		
+#define KEY_SCREATE	0576		
+#define KEY_SDC		0577		
+#define KEY_SDL		0600		
+#define KEY_SELECT	0601		
+#define KEY_SEND	0602		
+#define KEY_SEOL	0603		
+#define KEY_SEXIT	0604		
+#define KEY_SFIND	0605		
+#define KEY_SHELP	0606		
+#define KEY_SHOME	0607		
+#define KEY_SIC		0610		
+#define KEY_SLEFT	0611		
+#define KEY_SMESSAGE	0612		
+#define KEY_SMOVE	0613		
+#define KEY_SNEXT	0614		
+#define KEY_SOPTIONS	0615		
+#define KEY_SPREVIOUS	0616		
+#define KEY_SPRINT	0617		
+#define KEY_SREDO	0620		
+#define KEY_SREPLACE	0621		
+#define KEY_SRIGHT	0622		
+#define KEY_SRSUME	0623		
+#define KEY_SSAVE	0624		
+#define KEY_SSUSPEND	0625		
+#define KEY_SUNDO	0626		
+#define KEY_SUSPEND	0627		
+#define KEY_UNDO	0630		
+#define KEY_MOUSE	0631		
+#define KEY_RESIZE	0632		
+#define KEY_MAX		0777		
+
+
+extern int mcprint(char *, int);	
+extern int has_key(int);		

+ 1731 - 0
packages/ncurses/ncurses.pp

@@ -0,0 +1,1731 @@
+unit ncurses;
+
+{   Unit to access the ncurses library
+    Copyright (c) 1998 by Michael Van Canneyt
+    member of the Free Pascal development team
+
+    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.
+
+ **********************************************************************}
+{
+  Many thanks to Ken Wright for his patches !!
+}
+  interface
+
+{$packrecords 4}
+{$linklib ncurses}
+{$linklib c}
+
+   { Manually Added types }
+   Type
+   
+   Bool = byte;
+   PINTEGER = ^Longint;
+   PLongint = ^ longint;
+   PFILE = pointer;
+   
+    const
+       NCURSES_VERSION_MAJOR = 3;
+       NCURSES_VERSION_MINOR = 0;
+       NCURSES_VERSION_PATCH = 980228;
+       NCURSES_VERSION = '3.0';
+    {
+    #ifdef NCURSES_NOMACROS
+    #define NCURSES_ATTR_T attr_t
+    #endif
+    
+    #ifndef NCURSES_ATTR_T
+    #define NCURSES_ATTR_T int
+    #endif
+    
+    #ifndef NCURSES_CONST
+    #define NCURSES_CONST 
+    #endif
+    }
+
+    type
+
+       chtype = longint;
+       pchtype = pchar;
+
+    const
+       CXX_BUILTIN_BOOL = 1;
+    type
+    
+       CXX_TYPE_OF_BOOL = char;
+
+Var
+    COLORS : longint;external name 'COLORS';
+    COLOR_PAIRS : longint;external name 'COLOR_PAIRS';
+
+    const
+       COLOR_BLACK = 0;
+       COLOR_RED = 1;
+       COLOR_GREEN = 2;
+       COLOR_YELLOW = 3;
+       COLOR_BLUE = 4;
+       COLOR_MAGENTA = 5;
+       COLOR_CYAN = 6;
+       COLOR_WHITE = 7;
+
+Type
+    tacs_map = array [char] of chtype;
+    pacs_map = ^tacs_map;
+
+Var
+    acs_map : tacs_map;external name 'acs_map';
+    
+    function ACS_ULCORNER : chtype;
+    function ACS_LLCORNER : chtype;
+    function ACS_URCORNER : chtype;
+    function ACS_LRCORNER : chtype;
+    function ACS_LTEE : chtype;
+    function ACS_RTEE : chtype;
+    function ACS_BTEE : chtype;
+    function ACS_TTEE : chtype;
+    function ACS_HLINE : chtype;
+    function ACS_VLINE : chtype;
+    function ACS_PLUS : chtype;
+    function ACS_S1	 : chtype;
+    function ACS_S9	 : chtype;
+    function ACS_DIAMOND : chtype;
+    function ACS_CKBOARD : chtype;
+    function ACS_DEGREE : chtype;
+    function ACS_PLMINUS : chtype;
+    function ACS_BULLET : chtype;
+    function ACS_LARROW : chtype;
+    function ACS_RARROW : chtype;
+    function ACS_DARROW : chtype;
+    function ACS_UARROW : chtype;
+    function ACS_BOARD : chtype;
+    function ACS_LANTERN : chtype;
+    function ACS_BLOCK : chtype;
+    function ACS_S3	 : chtype;
+    function ACS_S7	 : chtype;
+    function ACS_LEQUAL : chtype;
+    function ACS_GEQUAL : chtype;
+    function ACS_PI	 : chtype;
+    function ACS_NEQUAL : chtype;
+    function ACS_STERLING : chtype;
+    {
+       Line drawing ACS names are of the form ACS_trbl, where t is the top, r
+       is the right, b is the bottom, and l is the left.  t, r, b, and l might
+       be B (blank), S (single), D (double), or T (thick).  The subset defined
+       here only uses B and S.
+     }
+    {
+    #define ACS_BSSB	ACS_ULCORNER
+    #define ACS_SSBB	ACS_LLCORNER
+    #define ACS_BBSS	ACS_URCORNER
+    #define ACS_SBBS	ACS_LRCORNER
+    #define ACS_SBSS	ACS_RTEE
+    #define ACS_SSSB	ACS_LTEE
+    #define ACS_SSBS	ACS_BTEE
+    #define ACS_BSSS	ACS_TTEE
+    #define ACS_BSBS	ACS_HLINE
+    #define ACS_SBSB	ACS_VLINE
+    #define ACS_SSSS	ACS_PLUS
+    }
+    Const 
+       ERR = -(1);
+       OK = 0;
+       _SUBWIN = $01;
+       _ENDLINE = $02;
+       _FULLWIN = $04;
+       _SCROLLWIN = $08;
+       _ISPAD = $10;
+       _HASMOVED = $20;
+       _WRAPPED = $40;
+    {
+       this value is used in the firstchar and lastchar fields to mark
+       unchanged lines
+     }
+       _NOCHANGE = -(1);
+    {
+       this value is used in the oldindex field to mark lines created by insertions
+       and scrolls.
+     }
+       _NEWINDEX = -(1);
+    {
+    typedef struct screen  SCREEN;
+    typedef struct _win_st WINDOW;
+    }
+
+    type
+
+       attr_t = chtype;
+       ldat = record
+            text : ^chtype;
+            firstchar : integer;
+            lastchar : integer;
+            oldindex : integer;
+         end;
+
+       _win_st = record
+            _cury : integer;
+            _curx : integer;
+            _maxy : integer;
+            _maxx : integer;
+            _begy : integer;
+            _begx : integer;
+            _flags : integer;
+            _attrs : attr_t;
+            _bkgd : chtype;
+            _notimeout : bool;
+            _clear : bool;
+            _leaveok : bool;
+            _scroll : bool;
+            _idlok : bool;
+            _idcok : bool;
+            _immed : bool;
+            _sync : bool;
+            _use_keypad : bool;
+            _delay : longint;
+            _line : ^ldat;
+            _regtop : integer;
+            _regbottom : integer;
+            _parx : longint;
+            _pary : longint;
+            _parent : ^WINDOW;
+            _pad : record
+                 _pad_y : integer;
+                 _pad_x : integer;
+                 _pad_top : integer;
+                 _pad_left : integer;
+                 _pad_bottom : integer;
+                 _pad_right : integer;
+              end;
+            _yoffset : integer;
+         end;
+        WINDOW = _win_st;
+        PWINDOW = ^WINDOW;
+       SCREEN=WINDOW;
+       PSCREEN = PWINDOW;
+      
+      var
+       stdscr  : PWINDOW;external name 'stdscr';
+       curscr  : PWINDOW;external name 'curscr';
+       newscr  : PWINDOW;external name 'newscr';
+       LINES   : longint;external name 'LINES';
+       COLS    : longint;external name 'COLS';
+       TABSIZE : longint;external name 'TABSIZE';
+       
+    Function define_key(_para1:pchar; _para2:longint):longint; cdecl;
+    Function keyok(_para1:longint; _para2:bool):longint; cdecl;
+    Function resizeterm(_para1:longint; _para2:longint):longint; cdecl;
+    Function use_default_colors:longint; cdecl;
+    Function wresize(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
+    {
+    extern char ttytype[];		
+    }
+    Function baudrate:longint; cdecl;
+    Function beep:longint; cdecl;
+    Function can_change_color:bool; cdecl;
+    Function cbreak:longint; cdecl;
+    Function clearok(_para1:pWINDOW; _para2:bool):longint; cdecl;
+    Function color_content(_para1:longint; _para2:plongint; _para3:plongint; _para4:plongint):longint; cdecl;
+
+    Function copywin(_para1:pWINDOW; _para2:pWINDOW; _para3:longint; _para4:longint; _para5:longint;
+               _para6:longint; _para7:longint; _para8:longint; _para9:longint):longint;cdecl;
+    Function curs_set(_para1:longint):longint; cdecl;
+    Function def_prog_mode:longint; cdecl;
+    Function def_shell_mode:longint; cdecl;
+    Function delay_output(_para1:longint):longint; cdecl;
+    procedure delscreen(_para1:pSCREEN);cdecl;
+    Function delwin(_para1:pWINDOW):longint; cdecl;
+
+    Function doupdate:longint; cdecl;
+
+    Function echo:longint; cdecl;
+    Function endwin:longint; cdecl;
+    Function erasechar:char; cdecl;
+    procedure filter;cdecl;
+    Function flash:longint; cdecl;
+    Function flushinp:longint; cdecl;
+
+    Function halfdelay(_para1:longint):longint; cdecl;
+    Function has_colors:bool; cdecl;
+    Function has_ic:longint; cdecl;
+    Function has_il:longint; cdecl;
+    procedure idcok(_para1:pWINDOW; _para2:bool);cdecl;
+    Function idlok(_para1:pWINDOW; _para2:bool):longint; cdecl;
+    procedure immedok(_para1:pWINDOW; _para2:bool);cdecl;
+
+    Function init_color(_para1:longint; _para2:longint; _para3:longint; _para4:longint):longint; cdecl;
+    Function init_pair(_para1:longint; _para2:longint; _para3:longint):longint; cdecl;
+    Function intrflush(_para1:pWINDOW; _para2:bool):longint; cdecl;
+    Function isendwin:longint; cdecl;
+    Function is_linetouched(_para1:pWINDOW; _para2:longint):longint; cdecl;
+    Function is_wintouched(_para1:pWINDOW):longint; cdecl;
+
+
+    Function keypad(_para1:pWINDOW; _para2:bool):longint; cdecl;
+    Function killchar:char; cdecl;
+    Function leaveok(_para1:pWINDOW; _para2:bool):longint; cdecl;
+
+    Function meta(_para1:pWINDOW; _para2:bool):longint; cdecl;
+    Function mvcur(_para1:longint; _para2:longint; _para3:longint; _para4:longint):longint; cdecl;
+    Function mvderwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
+    {
+    extern int mvprintw(int,int,const char  ,...)		
+    		GCC_PRINTFLIKE(3,4);
+    extern int mvscanw(int,int,const char  ,...)		
+    		GCC_SCANFLIKE(3,4);
+    }
+    Function mvwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
+    {
+    extern int mvwprintw(WINDOW ,int,int,const char  ,...)	
+    		GCC_PRINTFLIKE(4,5);
+    extern int mvwscanw(WINDOW  ,int,int,const char  ,...)	
+    		GCC_SCANFLIKE(4,5);
+    }
+    Function napms(_para1:longint):longint; cdecl;
+
+    Function nl:longint; cdecl;
+    Function nocbreak:longint; cdecl;
+    Function nodelay(_para1:pWINDOW; _para2:bool):longint; cdecl;
+    Function noecho:longint; cdecl;
+    Function nonl:longint; cdecl;
+    Function noqiflush:longint; cdecl;
+    Function noraw:longint; cdecl;
+    Function notimeout(_para1:pWINDOW; _para2:bool):longint; cdecl;
+
+    Function overlay(_para1:pWINDOW; _para2:pWINDOW):longint; cdecl;
+
+    Function overwrite(_para1:pWINDOW; _para2:pWINDOW):longint; cdecl;
+    Function pair_content(_para1:longint; _para2:plongint; _para3:plongint):longint; cdecl;
+
+    Function pechochar(_para1:pWINDOW; _para2:chtype):longint; cdecl;
+    Function pnoutrefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+               _para6:longint; _para7:longint):longint;cdecl;
+    Function prefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
+               _para6:longint; _para7:longint):longint;cdecl;
+    {
+    extern int printw(const char  ,...)			
+    		GCC_PRINTFLIKE(1,2);
+    }
+    Function putp(_para1:pchar):longint; cdecl;
+    Function putwin(_para1:pWINDOW; _para2:pFILE):longint; cdecl;
+    Function qiflush:longint; cdecl;
+    Function raw:longint; cdecl;
+    Function resetty:longint; cdecl;
+    Function reset_prog_mode:longint; cdecl;
+    Function reset_shell_mode:longint; cdecl;
+{
+    Function ripoffline(_para1:longint; init:function (_para1:pWINDOW; _para2:longint):longint):longint; cdecl;
+}
+    Function savetty:longint; cdecl;
+    {
+    extern int scanw(const char  ,...)			
+    		GCC_SCANFLIKE(1,2);
+    }
+    Function scr_dump(_para1:pchar):longint; cdecl;
+
+    Function scr_init(_para1:pchar):longint; cdecl;
+    Function scrollok(_para1:pWINDOW; _para2:bool):longint; cdecl;
+
+    Function scr_restore(_para1:pchar):longint; cdecl;
+
+    Function scr_set(_para1:pchar):longint; cdecl;
+
+
+    Function slk_attroff(_para1:attr_t):longint; cdecl;
+
+    Function slk_attron(_para1:attr_t):longint; cdecl;
+
+    Function slk_attrset(_para1:attr_t):longint; cdecl;
+    Function slk_attr:attr_t; cdecl;
+    Function slk_clear:longint; cdecl;
+    Function slk_init(_para1:longint):longint; cdecl;
+
+    Function slk_noutrefresh:longint; cdecl;
+    Function slk_refresh:longint; cdecl;
+    Function slk_restore:longint; cdecl;
+
+    Function slk_set(_para1:longint; _para2:pchar; _para3:longint):longint; cdecl;
+    Function slk_touch:longint; cdecl;
+    Function start_color:longint; cdecl;
+
+    Function syncok(_para1:pWINDOW; _para2:bool):longint; cdecl;
+    Function termattrs:chtype; cdecl;
+
+    Function tigetflag(_para1:pchar):longint; cdecl;
+
+    Function tigetnum(_para1:pchar):longint; cdecl;
+
+    Function derwin (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW; cdecl;
+    Function dupwin (_para1:pWINDOW):PWINDOW; cdecl;
+    Function getwin (_para1:pFILE):PWINDOW; cdecl;
+    Function initscr :PWINDOW; cdecl;
+    Function keyname  (_para1:longint):pchar; cdecl;
+    Function longname :pchar; cdecl;
+    Function newpad (_para1:longint; _para2:longint):PWINDOW; cdecl;
+    Function newterm (_para1:pchar; _para2:pFILE; _para3:pFILE):PSCREEN; cdecl;
+    Function newwin  (_para1:longint; _para2:longint; _para3:longint; _para4:longint):PWINDOW; cdecl;
+    Function set_term (_para1:pSCREEN):PSCREEN; cdecl;
+    Function slk_label (_para1:longint):pchar; cdecl;
+    Function subpad (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW; cdecl;
+    Function subwin (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW; cdecl;
+    Function termname :pchar; cdecl;
+    Function tigetstr (_para1:pchar):pchar; cdecl;
+    Function typeahead(_para1:longint):longint; cdecl;
+    Function ungetch(_para1:longint):longint; cdecl;
+    procedure use_env(_para1:bool);cdecl;
+    Function vidattr(_para1:chtype):longint; cdecl;
+{
+    Function vidputs(_para1:chtype; _para2:function (_para1:longint):longint):longint; cdecl;
+}
+{
+    Function vwprintw(_para1:pWINDOW; _para2:pchar; _para3:va_list):longint; cdecl;
+    Function vwscanw(_para1:pWINDOW; _para2:pchar; _para3:va_list):longint; cdecl;
+}
+    Function waddch(_para1:pWINDOW; _para2:chtype):longint; cdecl;
+    Function waddchnstr(_para1:pWINDOW; _para2:pchtype; _para3:longint):longint; cdecl;
+    Function waddnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;
+    Function wattr_on(_para1:pWINDOW; _para2:attr_t):longint; cdecl;
+    Function wattr_off(_para1:pWINDOW; _para2:attr_t):longint; cdecl;
+    Function wbkgd(_para1:pWINDOW; _para2:chtype):longint; cdecl;
+    procedure wbkgdset(_para1:pWINDOW; _para2:chtype);cdecl;
+    Function wborder(_para1:pWINDOW; _para2:chtype; _para3:chtype; _para4:chtype; _para5:chtype;
+               _para6:chtype; _para7:chtype; _para8:chtype; _para9:chtype):longint;cdecl;
+    Function wchgat(_para1:pWINDOW; _para2:longint; _para3:attr_t; _para4:longint; _para5:pointer):longint; cdecl;
+    Function wclear(_para1:pWINDOW):longint; cdecl;
+    Function wclrtobot(_para1:pWINDOW):longint; cdecl;
+    Function wclrtoeol(_para1:pWINDOW):longint; cdecl;
+    procedure wcursyncup(_para1:pWINDOW);cdecl;
+    Function wdelch(_para1:pWINDOW):longint; cdecl;
+    Function wechochar(_para1:pWINDOW; _para2:chtype):longint; cdecl;
+    Function werase(_para1:pWINDOW):longint; cdecl;
+    Function wgetch(_para1:pWINDOW):longint; cdecl;
+    Function wgetnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;
+    Function whline(_para1:pWINDOW; _para2:chtype; _para3:longint):longint; cdecl;
+    Function winch (win : PWindow) : longint; 
+    Function winchnstr(_para1:pWINDOW; _para2:pchtype; _para3:longint):longint; cdecl;
+    Function winnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;
+    Function winsch(_para1:pWINDOW; _para2:chtype):longint; cdecl;
+    Function winsdelln(_para1:pWINDOW; _para2:longint):longint; cdecl;
+    Function winsnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;
+    Function wmove(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
+    Function wnoutrefresh(_para1:pWINDOW):longint; cdecl;
+    {
+    extern int wprintw(WINDOW  ,const char  ,...)		
+    		GCC_PRINTFLIKE(2,3);
+    }
+    Function wredrawln(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
+    Function wrefresh(_para1:pWINDOW):longint; cdecl;
+    {
+    extern int wscanw(WINDOW  ,const char  ,...)		
+    		GCC_SCANFLIKE(2,3);
+    }
+    Function wscrl(_para1:pWINDOW; _para2:longint):longint; cdecl;
+    Function wsetscrreg(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;
+    procedure wsyncdown(_para1:pWINDOW);cdecl;
+    procedure wsyncup(_para1:pWINDOW);cdecl;
+    Function wtimeout(_para1:pWINDOW; _para2:longint):longint; cdecl;
+    Function wtouchln(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint):longint; cdecl;
+    Function wvline(_para1:pWINDOW; _para2:chtype; _para3:longint):longint; cdecl;
+
+    const
+           A_NORMAL = 0;
+           A_ATTRIBUTES = (not 0) shl 8;
+           A_CHARTEXT=(1 shl (0 + 8)) - 1;
+           A_COLOR=((1 shl 8) - 1) shl 8;
+           A_STANDOUT = 1 shl (8 + 8);
+           A_UNDERLINE = 1 shl (9 + 8);
+           A_REVERSE = 1 shl (10 + 8);
+           A_BLINK = 1 shl (11 + 8);
+           A_DIM = 1 shl (12 + 8);
+           A_BOLD = 1 shl (13 + 8);
+           A_ALTCHARSET = 1 shl (14 + 8);
+           A_INVIS = 1 shl (15 + 8);
+           A_PROTECT = 1 shl (16 + 8);
+           A_HORIZONTAL = 1 shl (17 + 8);
+           A_LEFT = 1 shl (18 + 8);
+           A_LOW = 1 shl (19 + 8);
+           A_RIGHT = 1 shl (20 + 8);
+           A_TOP = 1 shl (21 + 8);
+           A_VERTICAL = 1 shl (22 + 8);
+     Function color_pair(n : longint): longint; 
+{
+           PAIR_NUMBER = (a(@(A_COLOR))) shr 8;
+}
+           
+    {
+       pseudo functions
+     }
+    function wgetstr(w : pwindow;s : pchar) : longint;
+    function getnstr(s : pchar;n : longint) : longint;
+    function setterm(term : longint) : longint;
+    function fixterm : longint;
+    function resetterm : longint;
+    function saveterm : longint;
+    function crmode : longint;
+    function nocrmode : longint;
+    procedure getyx   (win : pwindow; var y,x : longint);
+    procedure getbegyx(win : pwindow; var y,x : longint);
+    procedure getmaxyx(win : pwindow; var y,x : longint);
+    procedure getparyx(win : pwindow; var y,x : longint);
+    Procedure getsyx  (var y,x : longint);
+    procedure setsyx (y,x : longint);
+    function getattrs(win : pwindow) : longint;
+    function getcurx(win : pwindow) : longint;
+    function getcury(win : pwindow) : longint;
+    function getbegx(win : pwindow) : longint;
+    function getbegy(win : pwindow) : longint;
+    function getmaxx(win : pwindow) : longint;
+    function getmaxy(win : pwindow) : longint;
+    function getparx(win : pwindow) : longint;
+    function getpary(win : pwindow) : longint;
+    function wstandout(win : pwindow) : longint;
+    function wstandend(win : pwindow) : longint;
+    function wattr_set(win : pwindow; at : longint) : longint;
+    function wattron(win : pwindow;at : longint) : longint;
+    function wattroff(win : pwindow;at : longint) : longint;
+    function wattrset(win : pwindow;at : longint) : longint;
+    function scroll(win : pwindow) : longint;
+    function touchwin(win : pwindow) : longint;
+    function touchline(win : pwindow;s,c : longint) : longint;
+    function untouchwin(win : pwindow) : longint;
+    function box(win : pwindow;v,h : longint) : longint;
+    function border(ls,rs,ts,bs,tl,tr,bl,br : longint) : longint;
+    function hline(ch,n : longint) : longint;
+    function vline(ch,n : longint) : longint;
+    function winstr(w : pwindow;s : pchar) : longint;
+    function winchstr(w : pwindow;s : pchar) : longint;
+    function winsstr(w : pwindow;s : pchar) : longint;
+    function redrawwin(w : pwindow) : longint;
+    function waddstr(win : pwindow;st : pchar) : longint;
+    function waddchstr(win : pwindow;st : pchar) : longint;
+    {
+       pseudo functions for standard screen
+     }
+    function addch(ch : longint) : longint;
+    function addchnstr(st : pchar;n : longint) : longint;
+    function addchstr(st : pchar) : longint;
+    function addnstr(st : pchar;n : longint) : longint;
+    function addstr(st : pchar) : longint;
+    function attroff(at : longint) : longint;
+    function attron(at : longint) : longint;
+    function attrset(at : longint) : longint;
+    function bkgd(ch : longint) : longint;
+    procedure bkgdset(ch : longint);
+    function clear : longint;
+    function clrtobot : longint;
+    function clrtoeol : longint;
+    function delch : longint;
+    function deleteln : longint;
+    function echochar(c : longint) : longint;
+    function erase : longint;
+    function getch : longint;
+    function getstr(st : pchar) : longint;
+    function inch : longint;
+    function inchnstr(s : pchar;n : longint) : longint;
+    function inchstr(s : pchar) : longint;
+    function innstr(s : pchar;n : longint) : longint;
+    function insch(c : longint) : longint;
+    function insdelln(n : longint) : longint;
+    function insertln : longint;
+    function insnstr(s : pchar;n : longint) : longint;
+    function insstr(s : pchar) : longint;
+    function instr(s : pchar) : longint;
+    function move(y,x : longint) : longint;
+    function refresh : longint;
+    function scrl(n : longint) : longint;
+    function setscrreg(t,b : longint) : longint;
+    function standend : longint;
+    function standout : longint;
+    function timeout(delay : longint) : longint;
+    function wdeleteln(win : pwindow) : longint;
+    function winsertln(win : pwindow) : longint;
+    {
+       mv functions
+     }
+    function  mvwaddch(win : pwindow;y,x : longint; ch : chtype) : longint;
+    function  mvwaddchnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
+    function  mvwaddchstr(win : pwindow;y,x : longint;st : pchar) : longint;
+    function  mvwaddnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
+    function  mvwaddstr(win : pwindow;y,x : longint;st : pchar) : longint;
+    function  mvwdelch(win : pwindow;y,x : longint) : longint;
+    function  mvwgetch(win : pwindow;y,x : longint) : longint;
+    function  mvwgetnstr(win : pwindow;y,x : longint;st : pchar;n: longint) : longint;
+    function  mvwgetstr(win : pwindow;y,x : longint;st: pchar) : longint;
+    function  mvwhline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
+    function  mvwinch(win : pwindow;y,x : longint) : longint;
+    function  mvwinchnstr(win : pwindow;y,x : longint;s : pchar; n : longint) : longint;
+    function  mvwinchstr(win : pwindow;y,x : longint;s : pchar) : longint;
+    function  mvwinnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
+    function  mvwinsch(win : pwindow;y,x : longint;c : chtype) : longint;
+    function  mvwinsnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
+    function  mvwinsstr(win : pwindow;y,x : longint;s : pchar) : longint;
+    function  mvwinstr(win : pwindow;y,x : longint;s : pchar) : longint;
+    function  mvwvline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
+    function mvaddch(y,x,ch : longint) : longint;
+    function mvaddchnstr(y,x : longint; st: pchar;n : longint) : longint;
+    function mvaddchstr(y,x : longint; st : pchar) : longint;
+    function mvaddnstr(y,x : longint; st : pchar;n : longint) : longint;
+    function mvaddstr(y,x : longint; st : pchar) : longint;
+    function mvdelch(y,x : longint) : longint;
+    function mvgetch(y,x : longint) : longint;
+    function mvgetnstr(y,x : longint; st : pchar;n : longint) : longint;
+    function mvgetstr(y,x : longint; st : pchar) : longint;
+    function mvhline(y,x : longint;c : chtype;n : longint) : longint;
+    function mvinch(y,x : longint) : longint;
+    function mvinchnstr(y,x : longint; s : pchar;n : longint) : longint;
+    function mvinchstr(y,x : longint; s : pchar) : longint;
+    function mvinnstr(y,x : longint; s : pchar;n : longint) : longint;
+    function mvinsch(y,x,c : longint) : longint;
+    function mvinsnstr(y,x : longint; s : pchar;n : longint) : longint;
+    function mvinsstr(y,x : longint; s : pchar) : longint;
+    function mvinstr(y,x : longint; s : pchar) : longint;
+    function mvvline(y,x,c,n : longint) : longint;
+    function attr_get : longint;
+    function attr_off(a : longint) : longint;
+    function attr_on(a : longint) : longint;
+    function attr_set(a : longint) : longint;
+    function box_set(w : pwindow;v,h : longint) : longint;
+    function chgat(n,a,c,o : longint) : longint;
+    function getbkgd(win : pwindow) : longint;
+    function hline_set(c,n : longint) : longint;
+    function slk_attr_off(a : longint) : longint;
+    function slk_attr_on(a : longint) : longint;
+    function slk_attr_set(a : longint) : longint;
+    function vid_attr(a : longint) : longint;
+    function vline_set(c,n : longint) : longint;
+    function wattr_get(win : pwindow) : longint;
+    {
+       Pseudo-character tokens outside ASCII range.  The curses wgetch() function
+       will return any given one of these only if the corresponding k- capability
+       is defined in your terminal's terminfo entry.
+     }
+    const			{octal}
+       KEY_CODE_YES = 256; 	{0400}
+       KEY_MIN = 257;		{0401}
+       KEY_BREAK = 257;		{0401}
+       KEY_DOWN = 258;		{0402}
+       KEY_UP = 259;		{0403}
+       KEY_LEFT = 260;		{0404}
+       KEY_RIGHT = 261;		{0405}
+       KEY_HOME = 262;		{0406}
+       KEY_BACKSPACE = 263;	{0407}
+       KEY_F0 = 264;		{0410}
+    function KEY_F(n : longint) : longint;
+
+    const
+       KEY_DL = 328;		{0510}
+       KEY_IL = 329;		{0511}
+       KEY_DC = 330;		{0512}
+       KEY_IC = 331;		{0513}
+       KEY_EIC = 332;		{0514}
+       KEY_CLEAR = 333;		{0515}
+       KEY_EOS = 334;		{0516}
+       KEY_EOL = 335;		{0517}
+       KEY_SF = 336;		{0520}
+       KEY_SR = 337;		{0521}
+       KEY_NPAGE = 338;		{0522}
+       KEY_PPAGE = 339;		{0523}
+       KEY_STAB = 340;		{0524}
+       KEY_CTAB = 341;		{0525}
+       KEY_CATAB = 342;		{0526}
+       KEY_ENTER = 343;		{0527}
+       KEY_SRESET = 344;	{0530}
+       KEY_RESET = 345;		{0531}
+       KEY_PRINT = 346;		{0532}
+       KEY_LL = 347;		{0533}
+       KEY_A1 = 348;		{0534}
+       KEY_A3 = 349;		{0535}
+       KEY_B2 = 350;		{0536}
+       KEY_C1 = 351;		{0537}
+       KEY_C3 = 352;		{0540}
+       KEY_BTAB = 353;		{0541}
+       KEY_BEG = 354;		{0542}
+       KEY_CANCEL = 355;	{0543}
+       KEY_CLOSE = 356;		{0544}
+       KEY_COMMAND = 357;	{0545}
+       KEY_COPY = 358;		{0546}
+       KEY_CREATE = 359;	{0547}
+       KEY_END = 360;		{0550}
+       KEY_EXIT = 361;		{0551}
+       KEY_FIND = 362;		{0552}
+       KEY_HELP = 363;		{0553}
+       KEY_MARK = 364;		{0554}
+       KEY_MESSAGE = 365;	{0555}
+       KEY_MOVE = 366;		{0556}
+       KEY_NEXT = 367;		{0557}
+       KEY_OPEN = 368;		{0560}
+       KEY_OPTIONS = 369;	{0561}
+       KEY_PREVIOUS = 370;	{0562}
+       KEY_REDO = 371;		{0563}
+       KEY_REFERENCE = 372;	{0564}
+       KEY_REFRESH = 373;	{0565}
+       KEY_REPLACE = 374;	{0566}
+       KEY_RESTART = 375;	{0567}
+       KEY_RESUME = 376;	{0570}
+       KEY_SAVE = 377;		{0571}
+       KEY_SBEG = 378;		{0572}
+       KEY_SCANCEL = 379;	{0573}
+       KEY_SCOMMAND = 380;	{0574}
+       KEY_SCOPY = 381;		{0575}
+       KEY_SCREATE = 382;	{0576}
+       KEY_SDC = 383;		{0577}
+       KEY_SDL = 384;		{0600}
+       KEY_SELECT = 385;	{0601}
+       KEY_SEND = 386;		{0602}
+       KEY_SEOL = 387;		{0603}
+       KEY_SEXIT = 388;		{0604}
+       KEY_SFIND = 389;		{0605}
+       KEY_SHELP = 390;		{0606}
+       KEY_SHOME = 391;		{0607}
+       KEY_SIC = 392;		{0610}
+       KEY_SLEFT = 393;		{0611}
+       KEY_SMESSAGE = 394;	{0612}
+       KEY_SMOVE = 395;		{0613}
+       KEY_SNEXT = 396;		{0614}
+       KEY_SOPTIONS = 397;	{0615}
+       KEY_SPREVIOUS = 398;	{0616}
+       KEY_SPRINT = 399;	{0617}
+       KEY_SREDO = 400;		{0620}
+       KEY_SREPLACE = 401;	{0621}
+       KEY_SRIGHT = 402;	{0622}
+       KEY_SRSUME = 403;	{0623}
+       KEY_SSAVE = 404;		{0624}
+       KEY_SSUSPEND = 405;	{0625}
+       KEY_SUNDO = 406;		{0626}
+       KEY_SUSPEND = 407;	{0627}
+       KEY_UNDO = 408;		{0630}
+       KEY_MOUSE = 409;		{0631}
+       KEY_RESIZE = 410;	{0632}
+       KEY_MAX = 511;		{0777}
+
+    function mcprint(_para1:pchar; _para2:longint):longint;cdecl;
+    function has_key(_para1:longint):longint;cdecl;
+
+  implementation
+
+const External_library='';
+
+    function define_key(_para1:pchar; _para2:longint):longint;Cdecl; External;
+    function keyok(_para1:longint; _para2:bool):longint;Cdecl; External;
+    function resizeterm(_para1:longint; _para2:longint):longint;Cdecl; External;
+    function use_default_colors:longint;Cdecl; External;
+    function wresize(_para1:pWINDOW; _para2:longint; _para3:longint):longint;Cdecl; External;
+    function baudrate:longint;Cdecl; External;
+    function beep:longint;Cdecl; External;
+    function can_change_color:bool;Cdecl; External;
+    function cbreak:longint;Cdecl; External;
+    function clearok(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function color_content(_para1:longint; _para2:plongint; _para3:plongint; _para4:plongint):longint;Cdecl; External;
+    function copywin(_para1:pWINDOW; _para2:pWINDOW; _para3:longint; _para4:longint; _para5:longint; 
+               _para6:longint; _para7:longint; _para8:longint; _para9:longint):longint;Cdecl; External;
+    function curs_set(_para1:longint):longint;Cdecl; External;
+    function def_prog_mode:longint;Cdecl; External;
+    function def_shell_mode:longint;Cdecl; External;
+    function delay_output(_para1:longint):longint;Cdecl; External;
+    procedure delscreen(_para1:pSCREEN);Cdecl; External;
+    function delwin(_para1:pWINDOW):longint;Cdecl; External;
+    function doupdate:longint;Cdecl; External;
+    function echo:longint;Cdecl; External;
+    function endwin:longint;Cdecl; External;
+    function erasechar:char;Cdecl; External;
+    procedure filter;Cdecl; External;
+    function flash:longint;Cdecl; External;
+    function flushinp:longint;Cdecl; External;
+    function halfdelay(_para1:longint):longint;Cdecl; External;
+    function has_colors:bool;Cdecl; External;
+    function has_ic:longint;Cdecl; External;
+    function has_il:longint;Cdecl; External;
+    procedure idcok(_para1:pWINDOW; _para2:bool);Cdecl; External;
+    function idlok(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    procedure immedok(_para1:pWINDOW; _para2:bool);Cdecl; External;
+    function init_color(_para1:longint; _para2:longint; _para3:longint; _para4:longint):longint;Cdecl; External;
+    function init_pair(_para1:longint; _para2:longint; _para3:longint):longint;Cdecl; External;
+    function intrflush(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function isendwin:longint;Cdecl; External;
+    function is_linetouched(_para1:pWINDOW; _para2:longint):longint;Cdecl; External;
+    function is_wintouched(_para1:pWINDOW):longint;Cdecl; External;
+    function keypad(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function killchar:char;Cdecl; External;
+    function leaveok(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function meta(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function mvcur(_para1:longint; _para2:longint; _para3:longint; _para4:longint):longint;Cdecl; External;
+    function mvderwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint;Cdecl; External;
+    function mvwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint;Cdecl; External;
+    function napms(_para1:longint):longint;Cdecl; External;
+    function nl:longint;Cdecl; External;
+    function nocbreak:longint;Cdecl; External;
+    function nodelay(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function noecho:longint;Cdecl; External;
+    function nonl:longint;Cdecl; External;
+    function noqiflush:longint;Cdecl; External;
+    function noraw:longint;Cdecl; External;
+    function notimeout(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function overlay(_para1:pWINDOW; _para2:pWINDOW):longint;Cdecl; External;
+    function overwrite(_para1:pWINDOW; _para2:pWINDOW):longint;Cdecl; External;
+    function pair_content(_para1:longint; _para2:plongint; _para3:plongint):longint;Cdecl; External;
+    function pechochar(_para1:pWINDOW; _para2:chtype):longint;Cdecl; External;
+    function pnoutrefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+               _para6:longint; _para7:longint):longint;Cdecl; External;
+    function prefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint; 
+               _para6:longint; _para7:longint):longint;Cdecl; External;
+    function putp(_para1:pchar):longint;Cdecl; External;
+    function putwin(_para1:pWINDOW; _para2:pFILE):longint;Cdecl; External;
+    function qiflush:longint;Cdecl; External;
+    function raw:longint;Cdecl; External;
+    function resetty:longint;Cdecl; External;
+    function reset_prog_mode:longint;Cdecl; External;
+    function reset_shell_mode:longint;Cdecl; External;
+{
+    function ripoffline(_para1:longint; init:function (_para1:pWINDOW; _para2:longint):longint):longint;Cdecl; External;
+}
+    function savetty:longint;Cdecl; External;
+    function scr_dump(_para1:pchar):longint;Cdecl; External;
+    function scr_init(_para1:pchar):longint;Cdecl; External;
+    function scrollok(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function scr_restore(_para1:pchar):longint;Cdecl; External;
+    function scr_set(_para1:pchar):longint;Cdecl; External;
+    function slk_attroff(_para1:attr_t):longint;Cdecl; External;
+    function slk_attron(_para1:attr_t):longint;Cdecl; External;
+    function slk_attrset(_para1:attr_t):longint;Cdecl; External;
+    function slk_attr:attr_t;Cdecl; External;
+    function slk_clear:longint;Cdecl; External;
+    function slk_init(_para1:longint):longint;Cdecl; External;
+    function slk_noutrefresh:longint;Cdecl; External;
+    function slk_refresh:longint;Cdecl; External;
+    function slk_restore:longint;Cdecl; External;
+    function slk_set(_para1:longint; _para2:pchar; _para3:longint):longint;Cdecl; External;
+    function slk_touch:longint;Cdecl; External;
+    function start_color:longint;Cdecl; External;
+    function syncok(_para1:pWINDOW; _para2:bool):longint;Cdecl; External;
+    function termattrs:chtype;Cdecl; External;
+    function tigetflag(_para1:pchar):longint;Cdecl; External;
+    function tigetnum(_para1:pchar):longint;Cdecl; External;
+    function typeahead(_para1:longint):longint;Cdecl; External;
+    function ungetch(_para1:longint):longint;Cdecl; External;
+    procedure use_env(_para1:bool);Cdecl; External;
+    function vidattr(_para1:chtype):longint;Cdecl; External;
+{
+    function vidputs(_para1:chtype; _para2:function (_para1:longint):longint):longint;Cdecl; External;
+    function vwprintw(_para1:pWINDOW; _para2:pchar; _para3:va_list):longint;Cdecl; External;
+    function vwscanw(_para1:pWINDOW; _para2:pchar; _para3:va_list):longint;Cdecl; External;
+}
+    function waddch(_para1:pWINDOW; _para2:chtype):longint;Cdecl; External;
+    function waddchnstr(_para1:pWINDOW; _para2:pchtype; _para3:longint):longint;Cdecl; External;
+    function waddnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint;Cdecl; External;
+    function wattr_on(_para1:pWINDOW; _para2:attr_t):longint;Cdecl; External;
+    function wattr_off(_para1:pWINDOW; _para2:attr_t):longint;Cdecl; External;
+    function wbkgd(_para1:pWINDOW; _para2:chtype):longint;Cdecl; External;
+    procedure wbkgdset(_para1:pWINDOW; _para2:chtype);Cdecl; External;
+    function wborder(_para1:pWINDOW; _para2:chtype; _para3:chtype; _para4:chtype; _para5:chtype; 
+               _para6:chtype; _para7:chtype; _para8:chtype; _para9:chtype):longint;Cdecl; External;
+    function wchgat(_para1:pWINDOW; _para2:longint; _para3:attr_t; _para4:longint; _para5:pointer):longint;Cdecl; External;
+    function wclear(_para1:pWINDOW):longint;Cdecl; External;
+    function wclrtobot(_para1:pWINDOW):longint;Cdecl; External;
+    function wclrtoeol(_para1:pWINDOW):longint;Cdecl; External;
+    procedure wcursyncup(_para1:pWINDOW);Cdecl; External;
+    function wdelch(_para1:pWINDOW):longint;Cdecl; External;
+    function wechochar(_para1:pWINDOW; _para2:chtype):longint;Cdecl; External;
+    function werase(_para1:pWINDOW):longint;Cdecl; External;
+    function wgetch(_para1:pWINDOW):longint;Cdecl; External;
+    function wgetnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint;Cdecl; External;
+    function whline(_para1:pWINDOW; _para2:chtype; _para3:longint):longint;Cdecl; External;
+    function winchnstr(_para1:pWINDOW; _para2:pchtype; _para3:longint):longint;Cdecl; External;
+    function winnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint;Cdecl; External;
+    function winsch(_para1:pWINDOW; _para2:chtype):longint;Cdecl; External;
+    function winsdelln(_para1:pWINDOW; _para2:longint):longint;Cdecl; External;
+    function winsnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint;Cdecl; External;
+    function wmove(_para1:pWINDOW; _para2:longint; _para3:longint):longint;Cdecl; External;
+    function wnoutrefresh(_para1:pWINDOW):longint;Cdecl; External;
+    function wredrawln(_para1:pWINDOW; _para2:longint; _para3:longint):longint;Cdecl; External;
+    function wrefresh(_para1:pWINDOW):longint;Cdecl; External;
+    function wscrl(_para1:pWINDOW; _para2:longint):longint;Cdecl; External;
+    function wsetscrreg(_para1:pWINDOW; _para2:longint; _para3:longint):longint;Cdecl; External;
+    procedure wsyncdown(_para1:pWINDOW);Cdecl; External;
+    procedure wsyncup(_para1:pWINDOW);Cdecl; External;
+    function wtimeout(_para1:pWINDOW; _para2:longint):longint;Cdecl; External;
+    function wtouchln(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint):longint;Cdecl; External;
+    function wvline(_para1:pWINDOW; _para2:chtype; _para3:longint):longint;Cdecl; External;
+
+    function wgetstr(w : pwindow;s : pchar) : longint;
+      begin
+         wgetstr:=wgetnstr(w,s,-(1));
+      end;
+    function getnstr(s : pchar;n : longint) : longint;
+      begin
+         getnstr:=wgetnstr(stdscr,s,n);
+      end;
+    function setterm(term : longint) : longint;
+      begin
+         { 
+         setterm:=setupterm(term,1,plongint(0));
+         }
+      end;
+    function fixterm : longint;
+      begin
+         fixterm:=reset_prog_mode;
+      end;
+    function resetterm : longint;
+      begin
+         resetterm:=reset_shell_mode;
+      end;
+    function saveterm : longint;
+      begin
+         saveterm:=def_prog_mode;
+      end;
+    function crmode : longint;
+      begin
+         crmode:=cbreak;
+      end;
+    function nocrmode : longint;
+      begin
+         nocrmode:=nocbreak;
+      end;
+    procedure getsyx(var y,x : longint);
+      begin
+         getyx(stdscr,y,x);
+      end;
+    function getattrs(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>nil then
+           if_local1:=win^._attrs
+         else
+           if_local1:=A_NORMAL;
+         getattrs:=if_local1;
+      end;
+    function getcurx(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>nil then
+           if_local1:=win^._curx
+         else
+           if_local1:=ERR;
+         getcurx:=if_local1;
+      end;
+    function getcury(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>Nil then
+           if_local1:=win^._cury
+         else
+           if_local1:=ERR;
+         getcury:=if_local1;
+      end;
+    function getbegx(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>Nil then
+           if_local1:=win^._begx
+         else
+           if_local1:=ERR;
+         getbegx:=if_local1;
+      end;
+    function getbegy(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>Nil then
+           if_local1:=win^._begy
+         else
+           if_local1:=ERR;
+         getbegy:=if_local1;
+      end;
+    function getmaxx(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>Nil then
+           if_local1:=(win^._maxx) + 1
+         else
+           if_local1:=ERR;
+         getmaxx:=if_local1;
+      end;
+    function getmaxy(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>Nil then
+           if_local1:=(win^._maxy) + 1
+         else
+           if_local1:=ERR;
+         getmaxy:=if_local1;
+      end;
+    function getparx(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>Nil then
+           if_local1:=win^._parx
+         else
+           if_local1:=ERR;
+         getparx:=if_local1;
+      end;
+    function getpary(win : pwindow) : longint;
+      var
+         if_local1 : longint;
+      
+      begin
+         if win<>Nil then
+           if_local1:=win^._pary
+         else
+           if_local1:=ERR;
+         getpary:=if_local1;
+      end;
+    function wstandout(win : pwindow) : longint;
+      begin
+         wstandout:=wattr_set(win,A_STANDOUT);
+      end;
+    function wstandend(win : pwindow) : longint;
+      begin
+         wstandend:=wattr_set(win,A_NORMAL);
+      end;
+    function wattron(win : pwindow;at : longint) : longint;
+      begin
+         wattron:=wattr_on(win,at);
+      end;
+    function wattroff(win : pwindow;at : longint) : longint;
+      begin
+         wattroff:=wattr_off(win,at);
+      end;
+    function wattrset(win : pwindow;at : longint) : longint;
+      begin
+         wattrset:=wattr_set(win,at);
+      end;
+    function scroll(win : pwindow) : longint;
+      begin
+         scroll:=wscrl(win,1);
+      end;
+    function touchwin(win : pwindow) : longint;
+      begin
+         touchwin:=wtouchln(win,0,getmaxy(win),1);
+      end;
+    function touchline(win : pwindow;s,c : longint) : longint;
+      begin
+         touchline:=wtouchln(win,s,c,1);
+      end;
+    function untouchwin(win : pwindow) : longint;
+      begin
+         untouchwin:=wtouchln(win,0,getmaxy(win),0);
+      end;
+    function box(win : pwindow;v,h : longint) : longint;
+      begin
+         box:=wborder(win,v,v,h,h,0,0,0,0);
+      end;
+    function border(ls,rs,ts,bs,tl,tr,bl,br : longint) : longint;
+      begin
+         border:=wborder(stdscr,ls,rs,ts,bs,tl,tr,bl,br);
+      end;
+    function hline(ch,n : longint) : longint;
+      begin
+         hline:=whline(stdscr,ch,n);
+      end;
+    function vline(ch,n : longint) : longint;
+      begin
+         vline:=wvline(stdscr,ch,n);
+      end;
+    function winstr(w : pwindow;s : pchar) : longint;
+      begin
+         winstr:=winnstr(w,s,-(1));
+      end;
+    function winchstr(w : pwindow;s : pchar) : longint;
+      begin
+        {
+         winchstr:=winchnstr(w,s,-1);
+         }
+      end;
+    function winsstr(w : pwindow;s : pchar) : longint;
+      begin
+         winsstr:=winsnstr(w,s,-(1));
+      end;
+    function redrawwin(w : pwindow) : longint;
+      begin
+         redrawwin:=wredrawln(w,0,(w^._maxy) + 1);
+      end;
+    function waddstr(win : pwindow;st : pchar) : longint;
+      begin
+         waddstr:=waddnstr(win,st,-1);
+      end;
+    function waddchstr(win : pwindow;st : pchar) : longint;
+      begin
+         waddchstr:=waddchnstr(win,st,-1);
+      end;
+    function addch(ch : longint) : longint;
+      begin
+         addch:=waddch(stdscr,ch);
+      end;
+    function addchnstr(st : pchar;n : longint) : longint;
+      begin
+         addchnstr:=waddchnstr(stdscr,st,n);
+      end;
+    function addchstr(st : pchar) : longint;
+      begin
+         addchstr:=waddchstr(stdscr,st);
+      end;
+    function addnstr(st : pchar;n : longint) : longint;
+      begin
+         addnstr:=waddnstr(stdscr,st,n);
+      end;
+    function addstr(st : pchar) : longint;
+      begin
+         addstr:=waddnstr(stdscr,st,-1);
+      end;
+    function attroff(at : longint) : longint;
+      begin
+         attroff:=wattroff(stdscr,at);
+      end;
+    function attron(at : longint) : longint;
+      begin
+         attron:=wattron(stdscr,at);
+      end;
+    function attrset(at : longint) : longint;
+      begin
+         attrset:=wattrset(stdscr,at);
+      end;
+    function bkgd(ch : longint) : longint;
+      begin
+         bkgd:=wbkgd(stdscr,ch);
+      end;
+    procedure bkgdset(ch : longint);
+      begin
+         wbkgdset(stdscr,ch);
+      end;
+    function clear : longint;
+      begin
+         clear:=wclear(stdscr);
+      end;
+    function clrtobot : longint;
+      begin
+         clrtobot:=wclrtobot(stdscr);
+      end;
+    function clrtoeol : longint;
+      begin
+         clrtoeol:=wclrtoeol(stdscr);
+      end;
+    function delch : longint;
+      begin
+         delch:=wdelch(stdscr);
+      end;
+    function deleteln : longint;
+      begin
+         deleteln:=winsdelln(stdscr,-1);
+      end;
+    function echochar(c : longint) : longint;
+      begin
+         echochar:=wechochar(stdscr,c);
+      end;
+    function erase : longint;
+      begin
+         erase:=werase(stdscr);
+      end;
+    function getch : longint;
+      begin
+         getch:=wgetch(stdscr);
+      end;
+    function getstr(st : pchar) : longint;
+      begin
+         getstr:=wgetstr(stdscr,st);
+      end;
+    function inch : longint;
+      begin
+         inch:=winch(stdscr);
+      end;
+    function inchnstr(s : pchar;n : longint) : longint;
+      begin
+         inchnstr:=winchnstr(stdscr,s,n);
+      end;
+    function inchstr(s : pchar) : longint;
+      begin
+         inchstr:=winchstr(stdscr,s);
+      end;
+    function innstr(s : pchar;n : longint) : longint;
+      begin
+         innstr:=winnstr(stdscr,s,n);
+      end;
+    function insch(c : longint) : longint;
+      begin
+         insch:=winsch(stdscr,c);
+      end;
+    function insdelln(n : longint) : longint;
+      begin
+         insdelln:=winsdelln(stdscr,n);
+      end;
+    function insertln : longint;
+      begin
+         insertln:=winsdelln(stdscr,1);
+      end;
+    function insnstr(s : pchar;n : longint) : longint;
+      begin
+         insnstr:=winsnstr(stdscr,s,n);
+      end;
+    function insstr(s : pchar) : longint;
+      begin
+         insstr:=winsstr(stdscr,s);
+      end;
+    function instr(s : pchar) : longint;
+      begin
+         instr:=winstr(stdscr,s);
+      end;
+    function move(y,x : longint) : longint;
+      begin
+         move:=wmove(stdscr,y,x);
+      end;
+    function refresh : longint;
+      begin
+         refresh:=wrefresh(stdscr);
+      end;
+    function scrl(n : longint) : longint;
+      begin
+         scrl:=wscrl(stdscr,n);
+      end;
+    function setscrreg(t,b : longint) : longint;
+      begin
+         setscrreg:=wsetscrreg(stdscr,t,b);
+      end;
+    function standend : longint;
+      begin
+         standend:=wstandend(stdscr);
+      end;
+    function standout : longint;
+      begin
+         standout:=wstandout(stdscr);
+      end;
+    function timeout(delay : longint) : longint;
+      begin
+         timeout:=wtimeout(stdscr,delay);
+      end;
+    function wdeleteln(win : pwindow) : longint;
+      begin
+         wdeleteln:=winsdelln(win,-1);
+      end;
+    function winsertln(win : pwindow) : longint;
+      begin
+         winsertln:=winsdelln(win,1);
+      end;
+    function mvaddch(y,x,ch : longint) : longint;
+      begin
+         mvaddch:=mvwaddch(stdscr,y,x,ch);
+      end;
+    function mvaddchnstr(y,x: longint;st : pchar;n : longint) : longint;
+      begin
+         mvaddchnstr:=mvwaddchnstr(stdscr,y,x,st,n);
+      end;
+    function mvaddchstr(y,x : longint;st : pchar) : longint;
+      begin
+         mvaddchstr:=mvwaddchstr(stdscr,y,x,st);
+      end;
+    function mvaddnstr(y,x: longint;st : pchar; n : longint) : longint;
+      begin
+         mvaddnstr:=mvwaddnstr(stdscr,y,x,st,n);
+      end;
+    function mvaddstr(y,x : longint;st : pchar) : longint;
+      begin
+         mvaddstr:=mvwaddstr(stdscr,y,x,st);
+      end;
+    function mvdelch(y,x : longint) : longint;
+      begin
+         mvdelch:=mvwdelch(stdscr,y,x);
+      end;
+    function mvgetch(y,x : longint) : longint;
+      begin
+         mvgetch:=mvwgetch(stdscr,y,x);
+      end;
+    function mvgetnstr(y,x : longint;st : pchar;n : longint) : longint;
+      begin
+         mvgetnstr:=mvwgetnstr(stdscr,y,x,st,n);
+      end;
+    function mvgetstr(y,x: longint;st : pchar) : longint;
+      begin
+         mvgetstr:=mvwgetstr(stdscr,y,x,st);
+      end;
+    function mvhline(y,x : longint;c : chtype;n : longint) : longint;
+      begin
+         mvhline:=mvwhline(stdscr,y,x,c,n);
+      end;
+    function mvinch(y,x : longint) : longint;
+      begin
+         mvinch:=mvwinch(stdscr,y,x);
+      end;
+    function mvinchnstr(y,x : longint;s : pchar;n : longint) : longint;
+      begin
+         mvinchnstr:=mvwinchnstr(stdscr,y,x,s,n);
+      end;
+    function mvinchstr(y,x : longint;s : pchar) : longint;
+      begin
+         mvinchstr:=mvwinchstr(stdscr,y,x,s);
+      end;
+    function mvinnstr(y,x : longint;s : pchar;n : longint) : longint;
+      begin
+         mvinnstr:=mvwinnstr(stdscr,y,x,s,n);
+      end;
+    function mvinsch(y,x: longint;c : chtype) : longint;
+      begin
+         mvinsch:=mvwinsch(stdscr,y,x,c);
+      end;
+    function mvinsnstr(y,x : longint;s : pchar;n : longint) : longint;
+      begin
+         mvinsnstr:=mvwinsnstr(stdscr,y,x,s,n);
+      end;
+    function mvinsstr(y,x : longint;s : pchar) : longint;
+      begin
+         mvinsstr:=mvwinsstr(stdscr,y,x,s);
+      end;
+    function mvinstr(y,x : longint;s : pchar) : longint;
+      begin
+         mvinstr:=mvwinstr(stdscr,y,x,s);
+      end;
+    function mvvline(y,x,c,n : longint) : longint;
+      begin
+         mvvline:=mvwvline(stdscr,y,x,c,n);
+      end;
+
+    function attr_get : longint;
+      begin
+         attr_get:=wattr_get(stdscr);
+      end;
+    function attr_off(a : longint) : longint;
+      begin
+         attr_off:=wattr_off(stdscr,a);
+      end;
+    function attr_on(a : longint) : longint;
+      begin
+         attr_on:=wattr_on(stdscr,a);
+      end;
+    function attr_set(a : longint) : longint;
+      begin
+         attr_set:=wattr_set(stdscr,a);
+      end;
+    function box_set(w : pwindow;v,h : longint) : longint;
+      begin
+        {
+         box_set:=wborder_set(w,v,v,h,h,0,0,0,9);
+         }
+      end;
+    function chgat(n,a,c,o : longint) : longint;
+      begin
+      {
+         chgat:=wchgat(stdscr,n,a,c,o);
+      }
+      end;
+    function getbkgd(win : pwindow) : longint;
+      begin
+         getbkgd:=win^._bkgd;
+      end;
+    function hline_set(c,n : longint) : longint;
+      begin
+      {
+         hline_set:=whline_set(stdscr,c,n);
+      }
+      end;
+    function mvchgat(y,x,n,a,c,o : longint) : longint;
+      begin
+      {
+         mvchgat:=mvwchgat(stdscr,y,x,n,a,c,o);
+      }
+      end;
+
+    function mvhline_set(y,x,c,n : longint) : longint;
+      begin
+      {
+         mvhline_set:=mvwhline_set(stdscr,y,x,c,n);
+       }
+      end;
+    function mvvline_set(y,x,c,n : longint) : longint;
+      begin
+      {
+         mvvline_set:=mvwvline_set(stdscr,y,x,c,n);
+      }
+      end;
+    function slk_attr_off(a : longint) : longint;
+      begin
+         slk_attr_off:=slk_attroff(a);
+      end;
+    function slk_attr_on(a : longint) : longint;
+      begin
+         slk_attr_on:=slk_attron(a);
+      end;
+    function slk_attr_set(a : longint) : longint;
+      begin
+         slk_attr_set:=slk_attrset(a);
+      end;
+    function vid_attr(a : longint) : longint;
+      begin
+         vid_attr:=vidattr(a);
+      end;
+    function vline_set(c,n : longint) : longint;
+      begin
+      {
+         vline_set:=vhline_set(stdscr,c,n);
+      }
+      end;
+
+    function wattr_get(win : pwindow) : longint;
+      begin
+         wattr_get:=win^._attrs;
+      end;
+    function KEY_F(n : longint) : longint;
+      begin
+         KEY_F:=KEY_F0 + n;
+      end;
+    function mcprint(_para1:pchar; _para2:longint):longint;Cdecl; External;
+    function has_key(_para1:longint):longint;Cdecl; External;
+    function derwin (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW;cdecl; external;
+    function dupwin (_para1:pWINDOW):PWINDOW;cdecl; external;
+    Function getwin (_para1:pFILE):PWINDOW;cdecl; external;
+    function initscr :PWINDOW;cdecl; external;
+    function keyname  (_para1:longint):pchar;cdecl; external;
+    function longname :pchar;cdecl; external;
+    function newpad (_para1:longint; _para2:longint):PWINDOW;cdecl; external;
+    Function newterm (_para1:pchar; _para2:pFILE; _para3:pFILE):PSCREEN;cdecl; external;
+    Function newwin  (_para1:longint; _para2:longint; _para3:longint; _para4:longint):PWINDOW;cdecl; external;
+    Function set_term (_para1:pSCREEN):PSCREEN;cdecl; external;
+    Function slk_label (_para1:longint):pchar;cdecl; external;
+    function subpad (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW;cdecl; external;
+    Function subwin (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW;cdecl; external;
+    Function termname :pchar;cdecl; external;
+    Function tigetstr (_para1:pchar):pchar;cdecl; external;
+
+    procedure getyx(win : pwindow; var y,x : longint);
+    begin
+      X:=ERR;
+      Y:=ERR;
+      if Win<>Nil then
+        begin
+        Y:=win^._cury;
+        X:=Win^._curx;
+        end;
+    end;
+    procedure getbegyx(win : pwindow; var y,x : longint);
+    begin
+      X:=ERR;
+      Y:=ERR;
+      if Win<>Nil then
+        begin
+        Y:=win^._begy;
+        X:=Win^._begx;
+        end;
+    end;
+    procedure getmaxyx(win : pwindow; var y,x : longint);
+    begin
+      X:=ERR;
+      Y:=ERR;
+      if Win<>Nil then
+        begin
+        Y:=win^._maxy+1;
+        X:=Win^._maxx+1;
+        end;
+    end;
+    procedure getparyx(win : pwindow; var y,x : longint);
+    begin
+      X:=ERR;
+      Y:=ERR;
+      if Win<>Nil then
+        begin
+        Y:=win^._pary;
+        X:=Win^._parx;
+        end;
+    end;
+    function winch (win : PWindow) : longint;
+    begin
+      if win<>nil then
+       winch:=win^._line[win^._cury].text[Win^ ._curx]
+      else
+        winch:=0;
+    end;
+    function wattr_set(win : pwindow; at : longint) : longint;
+    begin
+      If win<>nil then
+        begin
+        win^._attrs := at;
+        wattr_set:=at;
+        end
+      else
+        wattr_set:=0;
+    end;
+    procedure setsyx (y,x : longint);
+    begin
+      stdscr^._cury := y;
+      stdscr^._curx := x;
+    end;
+    function  mvwaddch(win : pwindow;y,x : longint; ch : chtype) : longint;
+    begin
+      if wmove(win,y,x) = ERR then
+        exit(ERR)
+      else
+        exit(waddch(win,ch))
+    end;
+    function  mvwaddchnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(waddchnstr(win,st,n))
+    end;
+    function  mvwaddchstr(win : pwindow;y,x : longint;st : pchar) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(waddchnstr(win,st,-1))
+    end;
+    function  mvwaddnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(waddnstr(win,st,n))
+    end;
+    function  mvwaddstr(win : pwindow;y,x : longint;st : pchar) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(waddnstr(win,st,-1))
+    end;
+    function  mvwdelch(win : pwindow;y,x : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(wdelch(win))
+    end;
+    function  mvwgetch(win : pwindow;y,x : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(wgetch(win))
+    end;
+    function  mvwgetnstr(win : pwindow;y,x : longint;st : pchar;n: longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(wgetnstr(win,st,n))
+    end;
+    function  mvwgetstr(win : pwindow;y,x : longint;st: pchar) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(wgetstr(win,st))
+    end;
+    function  mvwhline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(whline(win,c,n))
+    end;
+    function  mvwinch(win : pwindow;y,x : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winch(win))
+    end;
+    function  mvwinchnstr(win : pwindow;y,x : longint;s : pchar; n : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winchnstr(win,s,n))
+    end;
+    function  mvwinchstr(win : pwindow;y,x : longint;s : pchar) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winchstr(win,s))
+    end;
+    function  mvwinnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winnstr(win,s,n))
+    end;
+    function  mvwinsch(win : pwindow;y,x : longint;c : chtype) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winsch(win,c))
+    end;
+    function  mvwinsnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winsnstr(win,s,n))
+    end;
+    function  mvwinsstr(win : pwindow;y,x : longint;s : pchar) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winsstr(win,s))
+    end;
+    function  mvwinstr(win : pwindow;y,x : longint;s : pchar) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(winstr(win,s))
+    end;
+    function  mvwvline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
+    begin
+      if wmove (win,y,x)=ERR then
+        exit(ERR)
+      else
+        exit(wvline(win,c,n))
+    end;
+     function color_pair(n : longint): longint;
+     begin
+       color_pair:=n shl 8;
+     end;
+
+    function ACS_ULCORNER : chtype;
+    begin
+      ACS_ULCORNER:=acs_map['l'];
+    end;	
+    function ACS_LLCORNER : chtype;
+    begin
+      ACS_LLCORNER:=acs_map['m'];
+    end;	
+    function ACS_URCORNER : chtype;
+    begin
+      ACS_URCORNER:=acs_map['k'];
+    end;	
+    function ACS_LRCORNER : chtype;
+    begin
+      ACS_LRCORNER:=acs_map['j'];
+    end;	
+    function ACS_LTEE : chtype;
+    begin
+      ACS_LTEE:=acs_map['t'];
+    end;	
+    function ACS_RTEE : chtype;
+    begin
+      ACS_RTEE:=acs_map['u'];
+    end;	
+    function ACS_BTEE : chtype;
+    begin
+      ACS_BTEE:=acs_map['v'];
+    end;	
+    function ACS_TTEE : chtype;
+    begin
+      ACS_TTEE:=acs_map['w'];
+    end;	
+    function ACS_HLINE : chtype;
+    begin
+      ACS_HLINE:=acs_map['q'];
+    end;	
+    function ACS_VLINE : chtype;
+    begin
+      ACS_VLINE:=acs_map['x'];
+    end;	
+    function ACS_PLUS : chtype;
+    begin
+      ACS_PLUS:=acs_map['n'];
+    end;	
+    function ACS_S1	 : chtype;
+    begin
+      ACS_S1	:=acs_map['o'];
+    end;	
+    function ACS_S9	 : chtype;
+    begin
+      ACS_S9	:=acs_map['s'];
+    end;	
+    function ACS_DIAMOND : chtype;
+    begin
+      ACS_DIAMOND:=acs_map['`'];
+    end;	
+    function ACS_CKBOARD : chtype;
+    begin
+      ACS_CKBOARD:=acs_map['a'];
+    end;	
+    function ACS_DEGREE : chtype;
+    begin
+      ACS_DEGREE:=acs_map['f'];
+    end;	
+    function ACS_PLMINUS : chtype;
+    begin
+      ACS_PLMINUS:=acs_map['g'];
+    end;	
+    function ACS_BULLET : chtype;
+    begin
+      ACS_BULLET:=acs_map['~'];
+    end;	
+        
+    function ACS_LARROW : chtype;
+    begin
+      ACS_LARROW:=acs_map[','];
+    end;	
+    function ACS_RARROW : chtype;
+    begin
+      ACS_RARROW:=acs_map['+'];
+    end;	
+    function ACS_DARROW : chtype;
+    begin
+      ACS_DARROW:=acs_map['.'];
+    end;	
+    function ACS_UARROW : chtype;
+    begin
+      ACS_UARROW:=acs_map['-'];
+    end;	
+    function ACS_BOARD : chtype;
+    begin
+      ACS_BOARD:=acs_map['h'];
+    end;	
+    function ACS_LANTERN : chtype;
+    begin
+      ACS_LANTERN:=acs_map['i'];
+    end;	
+    function ACS_BLOCK : chtype;
+    begin
+      ACS_BLOCK:=acs_map['0'];
+    end;	
+    function ACS_S3	 : chtype;
+    begin
+      ACS_S3	:=acs_map['p'];
+    end;	
+    function ACS_S7	 : chtype;
+    begin
+      ACS_S7	:=acs_map['r'];
+    end;	
+    function ACS_LEQUAL : chtype;
+    begin
+      ACS_LEQUAL:=acs_map['y'];
+    end;	
+    function ACS_GEQUAL : chtype;
+    begin
+      ACS_GEQUAL:=acs_map['z'];
+    end;	
+    function ACS_PI	 : chtype;
+    begin
+      ACS_PI	:=acs_map['{'];
+    end;	
+    function ACS_NEQUAL : chtype;
+    begin
+      ACS_NEQUAL:=acs_map['|'];
+    end;	
+    function ACS_STERLING : chtype;
+    begin
+      ACS_STERLING:=acs_map['}'];
+    end;	
+end.

+ 27 - 0
packages/ncurses/testn.pp

@@ -0,0 +1,27 @@
+program testn;
+
+uses ncurses;
+var
+
+win : pWINDOW;
+begin
+if initscr=Nil then halt(1);
+start_color;
+win:= newwin (10,60,10,10);
+if win=nil then
+  begin
+  endwin;
+  halt(1);
+  end;
+init_pair(1,COLOR_WHITE,COLOR_BLUE);
+wbkgd(win, COLOR_PAIR(1));
+erase;
+refresh;
+box(win, ACS_VLINE, ACS_HLINE);
+wrefresh(win);
+mvwaddstr(win,1,1,'Press any key to continue !');
+wrefresh(win);
+raw;
+wgetch(win);
+endwin;
+end.

Some files were not shown because too many files changed in this diff