Yes. It was a change in recent versions of gpc (introduction of
CInteger / CCardinal to secure interface with C programs) which has not (yet)
been mirrored in this test.
Apply the following diff
--- polytest.pas.orig 2003-05-27 21:38:34.000000000 +0000
+++ polytest.pas 2005-03-08 11:57:56.000000000 +0000
@@ -57,7 +57,7 @@
sy : Integer = (GrSizeY - 2*hh) div 32;
ii,jj : Integer;
color : GrColor;
- t1,t2,t3,mu1,mu2,mu3: Integer;
+ t1,t2,t3,mu1,mu2,mu3: CInteger;
begin
GrClearScreen(black);
t1 := GetCPUTime(mu1);
While I am here, I think to an other problems.
There have been several diffs with respect to grx-2.4.6 on the gpc or grx lists
pertaining to pascal, many related to changes in the syntax of the compiler,
for interfaces to assembly / C modules.
I attach those I have applied (in order).
There are also other diffs pertaining mainly to the win32 driver,
which I have not applied, nor kept track of, because I use djgpp.
Some are in the grx247p1.zip prerelease.
--
Maurice Lombardi
Laboratoire de Spectrometrie Physique,
Universite Joseph Fourier de Grenoble, BP87
38402 Saint Martin d'Heres Cedex FRANCE
Tel: 33 (0)4 76 51 47 51
Fax: 33 (0)4 76 63 54 95
mailto:Maurice.Lombardi@ujf-grenoble.fr
diff -u -r grx246.orig/configure grx246/configure
--- grx246.orig/configure Wed Oct 16 22:39:58 2002
+++ grx246/configure Mon Apr 26 04:02:04 2004
@@ -6,9 +6,10 @@
# to do with it, just ignore it and follow the normal install
# instructions.
#
-# Copyright (C) 2001-2002 Frank Heckenbach
frank@pascal.gnu.de
+# Copyright (C) 2001-2002,2004 Frank Heckenbach
frank@pascal.gnu.de
+# Peter Gerwinski
peter@gerwinski.de
#
-# Parts copied from GCC's configure script,
+# Parts copied from some version of GCC's configure script,
# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
@@ -48,6 +49,7 @@
HAVE_LIBPNG=n
NEED_ZLIB=n
HAVE_LIBTIFF=n
+HAVE_UNIX_TOOLS=n
INCLUDE_BMP_CODE=y
INCLUDE_PRINTING_CODE=y
INCLUDE_GPC_SUPPORT=n
@@ -146,7 +148,8 @@
--silent silent operation
--prefix=PREFIX install files in PREFIX [$default_prefix]
--target=TARGET configure for TARGET [$default_target]
- possible values: DJGPP, X11, svgalib
+ possible values: DJGPP, X11, svgalib, w32
+ or GCC-style ("i386-mingw32") for cross-compiling
--enable-jpeg include JPEG support [no]
--enable-png include PNG support [no]
--enable-z or use zlib [no]
@@ -192,12 +195,23 @@
done
case "`echo "$target" | tr A-Z a-z`" in
- djgpp) cfgsection=GRXVDJ2; target_makefile=makefile.dj2;;
- x | x11) cfgsection=GRXVX11; target_makefile=makefile.x11;;
- svgalib) cfgsection=GRXVLNX; target_makefile=makefile.lnx;;
- *) echo "$0: invalid target" >&2; exit 1;;
+ *djgpp*) cfgsection=GRXVDJ2; target_makefile=makefile.dj2;;
+ x | x11) cfgsection=GRXVX11; target_makefile=makefile.x11;;
+ svgalib) cfgsection=GRXVLNX; target_makefile=makefile.lnx;;
+ *w32 | *mingw*) cfgsection=GRXVW32; target_makefile=makefile.w32;;
+ *) echo "$0: invalid target" >&2; exit 1;;
esac
+if echo "$target" | tr A-Z a-z | grep "[a-z0-9]-[a-z0-9]" > /dev/null; then
+ CROSS_PLATFORM="`echo "$target" | tr A-Z a-z`-"
+ installdir="$prefix/$target"
+ # Cross-compiling is usually done from a Unix-like platform.
+ HAVE_UNIX_TOOLS=y
+else
+ CROSS_PLATFORM=""
+ installdir="$prefix"
+fi
+
if [ $USE_SVGALIB_DRIVER != y ] && [ $USE_FRAMEBUFFER_DRIVER != y ]; then
echo "$0: either `--enable-svgalib' or `--enable-framebuffer' must be set" >&2
exit 1
@@ -245,19 +259,21 @@
if sed -e "/^HAVE_LIBTIFF=/s/=.*/=$HAVE_LIBTIFF/;
/^HAVE_LIBJPEG=/s/=.*/=$HAVE_LIBJPEG/;
/^HAVE_LIBPNG=/s/=.*/=$HAVE_LIBPNG/;
+ /^HAVE_UNIX_TOOLS=/s/=.*/=$HAVE_UNIX_TOOLS/;
/^NEED_ZLIB=/s/=.*/=$NEED_ZLIB/;
/^INCLUDE_PRINTING_CODE=/s/=.*/=$INCLUDE_PRINTING_CODE/;
/^INCLUDE_BMP_CODE=/s/=.*/=$INCLUDE_BMP_CODE/;
/^INCLUDE_GPC_SUPPORT=/s/=.*/=$INCLUDE_GPC_SUPPORT/;
/^INCLUDE_SHARED_SUPPORT=/s/=.*/=$INCLUDE_SHARED_SUPPORT/;
/^INCLUDE_BGI_SUPPORT=/s/=.*/=$INCLUDE_BGI_SUPPORT/;
+ /^CROSS_PLATFORM=/s/=.*/=$CROSS_PLATFORM/;
/^USE_DIRECT_MOUSE_DRIVER=/s/=.*/=$USE_DIRECT_MOUSE_DRIVER/;
/^USE_SVGALIB_DRIVER=/s/=.*/=$USE_SVGALIB_DRIVER/;
/^USE_FRAMEBUFFER_DRIVER=/s/=.*/=$USE_FRAMEBUFFER_DRIVER/;
/^SET_SUIDROOT=/s/=.*/=$SET_SUIDROOT/;
/^USE_INOUTP_FRAMEDRIVERS=/s/=.*/=$USE_INOUTP_FRAMEDRIVERS/;
/^ifdef $cfgsection$/,/^endif$/{
- /^INSTALLDIR=/s|=.*|=$prefix|;
+ /^INSTALLDIR=/s|=.*|=$installdir|;
/^X11BASE=/s|=.*|=$x11base|;
$subst_fontpath;
/^X11LIBS=/s/$/$lsocket/;
diff -u -r grx246.orig/makedefs.grx grx246/makedefs.grx
--- grx246.orig/makedefs.grx Wed Jul 16 04:09:42 2003
+++ grx246/makedefs.grx Mon Apr 26 03:58:39 2004
@@ -36,12 +36,19 @@
# Specify if you want to include BGI support
INCLUDE_BGI_SUPPORT=y
+# For cross-compiling, specify prefix for tools including the trailing dash
+# (e.g. "i386-mingw32-" for using i386-mingw32-gcc instead of just gcc)
+CROSS_PLATFORM=""
+
+# Specify if you want to use Unix tools on DOS-like platforms
+HAVE_UNIX_TOOLS=n
+
### SYSTEM SETTINGS ##################################################
-CC = gcc
-AR = ar
-RANLIB = ranlib
-STRIP = strip
+CC = $(CROSS_PLATFORM)gcc
+AR = $(CROSS_PLATFORM)ar
+RANLIB = $(CROSS_PLATFORM)ranlib
+STRIP = $(CROSS_PLATFORM)strip
# Different systems / setups may generate .o files
# this tag files will show what version is present
@@ -85,7 +92,7 @@
# place libgrx20.a and libgrx20.so in lib/unix
GRX_LIB_SUBDIR=unix
-# Set here the default destination dir for install and uninstall targets
+# Set here the destination dir for install and uninstall targets
INSTALLDIR=/usr/local
# Set the default GRX font path
@@ -154,6 +161,9 @@
# Put libgrx20.a to lib/dj2
GRX_LIB_SUBDIR=dj2
+# Set here the destination dir for install and uninstall targets
+INSTALLDIR=$(DJDIR)
+
# If you want to use 'upx.exe' compressor
# disable the echo line and enable upx line.
EXE_COMPRESS = -echo
@@ -184,8 +194,8 @@
# Put libgrx20.a to lib/win32
GRX_LIB_SUBDIR=win32
-# Set here your MINGW dir for install and uninstall targets
-MINGWDIR=C:\MINGW
+# Set here the destination dir for install and uninstall targets
+INSTALLDIR=C:\MINGW
# Set the default GRX font path
#GRX_DEFAULT_FONT_PATH=c:/grxfonts
diff -u -r grx246.orig/pascal/bgi/makefile.dj2 grx246/pascal/bgi/makefile.dj2
--- grx246.orig/pascal/bgi/makefile.dj2 Sun Dec 23 02:29:08 2001
+++ grx246/pascal/bgi/makefile.dj2 Mon Apr 26 03:58:47 2004
@@ -32,9 +32,11 @@
$(COMPILER) $(CCOPT) -o $*.exe $*.pas $(UNITPATH) $(LIBS)
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe *.gpi *.gpm
+else
if exist *.o del *.o
if exist *.exe del *.exe
if exist *.gpi del *.gpi
if exist *.gpm del *.gpm
-
-
+endif
diff -u -r grx246.orig/pascal/bgi/makefile.w32 grx246/pascal/bgi/makefile.w32
--- grx246.orig/pascal/bgi/makefile.w32 Sun Dec 23 02:30:18 2001
+++ grx246/pascal/bgi/makefile.w32 Mon Apr 26 03:58:47 2004
@@ -33,9 +33,11 @@
$(COMPILER) $(CCOPT) -o $*.exe $*.pas $(UNITPATH) $(LIBS)
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe *.gpi *.gpm
+else
if exist *.o del *.o
if exist *.exe del *.exe
if exist *.gpi del *.gpi
if exist *.gpm del *.gpm
-
-
+endif
diff -u -r grx246.orig/pascal/makefile.dj2 grx246/pascal/makefile.dj2
--- grx246.orig/pascal/makefile.dj2 Wed Jun 11 00:21:24 2003
+++ grx246/pascal/makefile.dj2 Mon Apr 26 03:58:47 2004
@@ -35,9 +35,11 @@
$(COMPILER) $(CCOPT) -o $*.exe $*.pas $(LIBS)
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe *.gpi *.gpm
+else
if exist *.o del *.o
if exist *.exe del *.exe
if exist *.gpi del *.gpi
if exist *.gpm del *.gpm
-
-
+endif
diff -u -r grx246.orig/pascal/makefile.w32 grx246/pascal/makefile.w32
--- grx246.orig/pascal/makefile.w32 Wed Jun 11 00:21:24 2003
+++ grx246/pascal/makefile.w32 Mon Apr 26 03:58:47 2004
@@ -35,9 +35,11 @@
$(COMPILER) $(CCOPT) -o $*.exe $*.pas $(LIBS)
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe *.gpi *.gpm
+else
if exist *.o del *.o
if exist *.exe del *.exe
if exist *.gpi del *.gpi
if exist *.gpm del *.gpm
-
-
+endif
diff -u -r grx246.orig/src/makefile.dj2 grx246/src/makefile.dj2
--- grx246.orig/src/makefile.dj2 Wed Jul 31 22:34:34 2002
+++ grx246/src/makefile.dj2 Mon Apr 26 04:11:02 2004
@@ -20,8 +20,13 @@
GRX20ln = libgrx20.a
GRX20ST = ../lib/$(GRX_LIB_SUBDIR)/$(GRX20ln)
+ifeq ($(HAVE_UNIX_TOOLS),y)
+GRX20STdos = $(GRX20ST)
+INSTALLDIRdos = $(INSTALLDIR)
+else
GRX20STdos = $(subst /,,$(GRX20ST))
-DJDIRdos = $(subst /,,$(DJDIR))
+INSTALLDIRdos = $(subst /,,$(INSTALLDIR))
+endif
OX=.o
OP=
@@ -120,6 +125,9 @@
all: $(GRX20ST) $(UTILP)
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f */*.o ../addons/*.o ../addons/*/*.o $(TAG)
+else
if exist bgi*.o del bgi*.o
if exist draw*.o del draw*.o
if exist fdrivers*.o del fdrivers*.o
@@ -141,79 +149,153 @@
if exist ..\addons\print*.o del ..\addons\print*.o
if exist ..\addons\bmp*.o del ..\addons\bmp*.o
if exist $(TAG) del $(TAG)
+endif
cleanall: clean
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(GRX20STdos) ../bin/*.exe
+else
if exist $(GRX20STdos) del $(GRX20STdos)
if exist ..\bin*.exe del ..\bin*.exe
+endif
install: $(GRX20ST)
- copy $(GRX20STdos) $(DJDIRdos)\lib
- copy ..\include\grx20.h $(DJDIRdos)\include
- copy ..\include\grxkeys.h $(DJDIRdos)\include
- copy ..\include\libbcc.h $(DJDIRdos)\include
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ cp $(GRX20STdos) $(INSTALLDIRdos)/lib
+ cp ../include/grx20.h ../include/grxkeys.h \
+ ../include/libbcc.h $(INSTALLDIRdos)/include
+ifeq ($(INCLUDE_PRINTING_CODE),y)
+ cp ../addons/print/grxprint.h $(INSTALLDIRdos)/include
+endif
+ifeq ($(INCLUDE_GPC_SUPPORT),y)
+ mkdir -p $(INSTALLDIRdos)/units
+ cp ../pascal/grx.pas ../pascal/bgi/graph.pas $(INSTALLDIRdos/units
+endif
+else
+ copy $(GRX20STdos) $(INSTALLDIRdos)\lib
+ copy ..\include\grx20.h $(INSTALLDIRdos)\include
+ copy ..\include\grxkeys.h $(INSTALLDIRdos)\include
+ copy ..\include\libbcc.h $(INSTALLDIRdos)\include
ifeq ($(INCLUDE_PRINTING_CODE),y)
- copy ..\addons\print\grxprint.h $(DJDIRdos)\include
+ copy ..\addons\print\grxprint.h $(INSTALLDIRdos)\include
endif
ifeq ($(INCLUDE_GPC_SUPPORT),y)
- if not exist $(DJDIRdos)\units\nul mkdir $(DJDIRdos)\units
- copy ..\pascal\grx.pas $(DJDIRdos)\units
- copy ..\pascal\bgi\graph.pas $(DJDIRdos)\units
+ if not exist $(INSTALLDIRdos)\units\nul mkdir $(INSTALLDIRdos)\units
+ copy ..\pascal\grx.pas $(INSTALLDIRdos)\units
+ copy ..\pascal\bgi\graph.pas $(INSTALLDIRdos)\units
+endif
endif
uninstall:
- if exist $(DJDIRdos)\lib$(GRX20ln) del $(DJDIRdos)\lib$(GRX20ln)
- if exist $(DJDIRdos)\include\grx20.h del $(DJDIRdos)\include\grx20.h
- if exist $(DJDIRdos)\include\grxkeys.h del $(DJDIRdos)\include\grxkeys.h
- if exist $(DJDIRdos)\include\libbcc.h del $(DJDIRdos)\include\libbcc.h
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(INSTALLDIRdos)/lib/$(GRX20ln) $(INSTALLDIRdos)/include/grx20.h \
+ $(INSTALLDIRdos)/include/grxkeys.h $(INSTALLDIRdos)/include/libbcc.h
+ifeq ($(INCLUDE_PRINTING_CODE),y)
+ rm -f $(INSTALLDIRdos)/include/grxprint.h
+endif
+ifeq ($(INCLUDE_GPC_SUPPORT),y)
+ rm -f $(INSTALLDIRdos)/units/grx.pas $(INSTALLDIRdos)/units/graph.pas
+endif
+else
+ if exist $(INSTALLDIRdos)\lib$(GRX20ln) del $(INSTALLDIRdos)\lib$(GRX20ln)
+ if exist $(INSTALLDIRdos)\include\grx20.h del $(INSTALLDIRdos)\include\grx20.h
+ if exist $(INSTALLDIRdos)\include\grxkeys.h del $(INSTALLDIRdos)\include\grxkeys.h
+ if exist $(INSTALLDIRdos)\include\libbcc.h del $(INSTALLDIRdos)\include\libbcc.h
ifeq ($(INCLUDE_PRINTING_CODE),y)
- if exist $(DJDIRdos)\include\grxprint.h del $(DJDIRdos)\include\grxprint.h
+ if exist $(INSTALLDIRdos)\include\grxprint.h del $(INSTALLDIRdos)\include\grxprint.h
endif
ifeq ($(INCLUDE_GPC_SUPPORT),y)
- if exist $(DJDIRdos)\units\grx.pas del $(DJDIRdos)\units\grx.pas
- if exist $(DJDIRdos)\units\graph.pas del $(DJDIRdos)\units\graph.pas
+ if exist $(INSTALLDIRdos)\units\grx.pas del $(INSTALLDIRdos)\units\grx.pas
+ if exist $(INSTALLDIRdos)\units\graph.pas del $(INSTALLDIRdos)\units\graph.pas
+endif
endif
install-info:
- copy ..\doc\grx*um.inf $(DJDIRdos)\info\grx.inf
- install-info $(DJDIRdos)\info\grx.inf $(DJDIRdos)\info\dir
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ cp ../doc/grx*um.inf $(INSTALLDIRdos)/info/grx.inf
+ install-info $(INSTALLDIRdos)/info/grx.inf $(INSTALLDIRdos)/info/dir
+else
+ copy ..\doc\grx*um.inf $(INSTALLDIRdos)\info\grx.inf
+ install-info $(INSTALLDIRdos)\info\grx.inf $(INSTALLDIRdos)\info\dir
+endif
uninstall-info:
- if exist $(DJDIRdos)\info\grx.inf del $(DJDIRdos)\info\grx.inf
- install-info -r $(DJDIRdos)\info\grx.inf $(DJDIRdos)\info\dir
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(INSTALLDIRdos)/info/grx.inf
+ install-info -r $(INSTALLDIRdos)/info/grx.inf $(INSTALLDIRdos)/info/dir
+else
+ if exist $(INSTALLDIRdos)\info\grx.inf del $(INSTALLDIRdos)\info\grx.inf
+ install-info -r $(INSTALLDIRdos)\info\grx.inf $(INSTALLDIRdos)\info\dir
+endif
install-bin: $(UTILP)
- copy ..\bin\bin2c.exe $(DJDIRdos)\bin
- copy ..\bin\fnt2c.exe $(DJDIRdos)\bin
- copy ..\bin\vesainfo.exe $(DJDIRdos)\bin
- copy ..\bin\modetest.exe $(DJDIRdos)\bin
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ cp ../bin/bin2c.exe ../bin/fnt2c.exe ../bin/vesainfo.exe \
+ ../bin/modetest.exe $(INSTALLDIRdos)/bin
+else
+ copy ..\bin\bin2c.exe $(INSTALLDIRdos)\bin
+ copy ..\bin\fnt2c.exe $(INSTALLDIRdos)\bin
+ copy ..\bin\vesainfo.exe $(INSTALLDIRdos)\bin
+ copy ..\bin\modetest.exe $(INSTALLDIRdos)\bin
+endif
uninstall-bin:
- if exist $(DJDIRdos)\bin\bin2c.exe del $(DJDIRdos)\bin\bin2c.exe
- if exist $(DJDIRdos)\bin\fnt2c.exe del $(DJDIRdos)\bin\fnt2c.exe
- if exist $(DJDIRdos)\bin\vesainfo.exe del $(DJDIRdos)\bin\vesainfo.exe
- if exist $(DJDIRdos)\bin\modetest.exe del $(DJDIRdos)\bin\modetest.exe
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(INSTALLDIRdos)/bin/bin2c.exe $(INSTALLDIRdos)/bin/fnt2c.exe \
+ $(INSTALLDIRdos)/bin/vesainfo.exe $(INSTALLDIRdos)/bin/modetest.exe
+else
+ if exist $(INSTALLDIRdos)\bin\bin2c.exe del $(INSTALLDIRdos)\bin\bin2c.exe
+ if exist $(INSTALLDIRdos)\bin\fnt2c.exe del $(INSTALLDIRdos)\bin\fnt2c.exe
+ if exist $(INSTALLDIRdos)\bin\vesainfo.exe del $(INSTALLDIRdos)\bin\vesainfo.exe
+ if exist $(INSTALLDIRdos)\bin\modetest.exe del $(INSTALLDIRdos)\bin\modetest.exe
+endif
ifdef GRX_DEFAULT_FONT_PATH
+ifeq ($(HAVE_UNIX_TOOLS),y)
+FONTPATHdos = $(GRX_DEFAULT_FONT_PATH)
+else
FONTPATHdos = $(subst /,,$(GRX_DEFAULT_FONT_PATH))
+endif
install-fonts:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ mkdir -p $(FONTPATHdos)
+ cp ../fonts/* $(FONTPATHdos)
+else
if not exist $(FONTPATHdos)\nul mkdir $(FONTPATHdos)
copy ..\fonts*.* $(FONTPATHdos)
+endif
uninstall-fonts:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(FONTPATHdos)/*
+else
del $(FONTPATHdos)*.*
endif
+endif
dep:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f depend.tmp
+else
if exist depend.tmp del depend.tmp
+endif
gcc -MM $(CCOPT) $(INCDIR) $(ALL_O:.o=.c) >depend.tmp
sed 's#^.*: (.*).c#\1.o: \1.c#g' <depend.tmp >depend.dj2
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f depend.tmp
+else
if exist depend.tmp del depend.tmp
+endif
depend.b: depend.new
sed "s#.o:#.obj:#g" <depend.new >depend.b
sed "s#.o:#.asm:#g" <depend.new >>depend.b
$(GRX20ST): $(TAG) $(ALL_O)
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(GRX20STdos)
+else
if exist $(GRX20STdos) del $(GRX20STdos)
+endif
$(AR) -r $(GRX20ST) $(STD_Oa)
$(AR) -r $(GRX20ST) $(STD_Ob)
ifeq ($(INCLUDE_BGI_SUPPORT),y)
@@ -229,7 +311,11 @@
$(DOS_DJGPP_V2):
$(MAKE) -f makefile.dj2 clean
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ if [ ! -r $(DOS-DJGPP_V2) ]; then rm -f $(SYSTEM_TAG_PREFIX).*; fi
+else
if not exist $(DOS_DJGPP_V2) del $(SYSTEM_TAG_PREFIX).*
+endif
echo DOS_DJGPP_V2_TARGET > $(DOS_DJGPP_V2)
$(ALL_O): $(TAG)
diff -u -r grx246.orig/src/makefile.w32 grx246/src/makefile.w32
--- grx246.orig/src/makefile.w32 Sat Mar 22 00:14:14 2003
+++ grx246/src/makefile.w32 Mon Apr 26 04:10:58 2004
@@ -19,7 +19,11 @@
GRX20ln = libgrx20.a
GRX20ST = ../lib/$(GRX_LIB_SUBDIR)/$(GRX20ln)
+ifeq ($(HAVE_UNIX_TOOLS), y)
+GRX20STdos = $(GRX20ST)
+else
GRX20STdos = $(subst /,,$(GRX20ST))
+endif
OX=.o
OP=
@@ -96,6 +100,9 @@
all: $(GRX20ST) $(UTILPC) $(UTILPW)
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f */*.o ../addons/*.o ../addons/*/*.o $(TAG)
+else
if exist bgi*.o del bgi*.o
if exist draw*.o del draw*.o
if exist fdrivers*.o del fdrivers*.o
@@ -117,69 +124,133 @@
if exist ..\addons\print*.o del ..\addons\print*.o
if exist ..\addons\bmp*.o del ..\addons\bmp*.o
if exist $(TAG) del $(TAG)
+endif
cleanall: clean
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(GRX20STdos) ../bin/*.exe
+else
if exist $(GRX20STdos) del $(GRX20STdos)
if exist ..\bin*.exe del ..\bin*.exe
+endif
install: $(GRX20ST)
- copy $(GRX20STdos) $(MINGWDIR)\lib
- copy ..\include\grx20.h $(MINGWDIR)\include
- copy ..\include\grxkeys.h $(MINGWDIR)\include
- copy ..\include\libbcc.h $(MINGWDIR)\include
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ cp $(GRX20STdos) $(INSTALLDIR)/lib
+ cp ../include/grx20.h ../include/grxkeys.h \
+ ../include/libbcc.h $(INSTALLDIR)/include
+ifeq ($(INCLUDE_PRINTING_CODE),y)
+ cp ../addons/print/grxprint.h $(INSTALLDIR)/include
+endif
+ifeq ($(INCLUDE_GPC_SUPPORT),y)
+ mkdir -p $(INSTALLDIR)/units
+ cp ../pascal/grx.pas ../pascal/bgi/graph.pas $(INSTALLDIR)/units
+endif
+else
+ copy $(GRX20STdos) $(INSTALLDIR)\lib
+ copy ..\include\grx20.h $(INSTALLDIR)\include
+ copy ..\include\grxkeys.h $(INSTALLDIR)\include
+ copy ..\include\libbcc.h $(INSTALLDIR)\include
ifeq ($(INCLUDE_PRINTING_CODE),y)
- copy ..\addons\print\grxprint.h $(MINGWDIR)\include
+ copy ..\addons\print\grxprint.h $(INSTALLDIR)\include
endif
ifeq ($(INCLUDE_GPC_SUPPORT),y)
- if not exist $(MINGWDIR)\units\nul mkdir $(MINGWDIR)\units
- copy ..\pascal\grx.pas $(MINGWDIR)\units
- copy ..\pascal\bgi\graph.pas $(MINGWDIR)\units
+ if not exist $(INSTALLDIR)\units\nul mkdir $(INSTALLDIR)\units
+ copy ..\pascal\grx.pas $(INSTALLDIR)\units
+ copy ..\pascal\bgi\graph.pas $(INSTALLDIR)\units
+endif
endif
uninstall:
- if exist $(MINGWDIR)\lib$(GRX20ln) del $(MINGWDIR)\lib$(GRX20ln)
- if exist $(MINGWDIR)\include\grx20.h del $(MINGWDIR)\include\grx20.h
- if exist $(MINGWDIR)\include\grxkeys.h del $(MINGWDIR)\include\grxkeys.h
- if exist $(MINGWDIR)\include\libbcc.h del $(MINGWDIR)\include\libbcc.h
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(INSTALLDIR)/lib/$(GRX20ln) $(INSTALLDIR)/include/grx20.h \
+ $(INSTALLDIR)/include/grxkeys.h $(INSTALLDIR)/include/libbcc.h
ifeq ($(INCLUDE_PRINTING_CODE),y)
- if exist $(MINGWDIR)\include\grxprint.h del $(MINGWDIR)\include\grxprint.h
+ rm -f $(INSTALLDIR)/include/grxprint.h
endif
ifeq ($(INCLUDE_GPC_SUPPORT),y)
- if exist $(MINGWDIR)\units\grx.pas del $(MINGWDIR)\units\grx.pas
- if exist $(MINGWDIR)\units\graph.pas del $(MINGWDIR)\units\graph.pas
+ rm -f $(INSTALLDIR)/units/grx.pas $(INSTALLDIR)/units/graph.pas
+endif
+else
+ if exist $(INSTALLDIR)\lib$(GRX20ln) del $(INSTALLDIR)\lib$(GRX20ln)
+ if exist $(INSTALLDIR)\include\grx20.h del $(INSTALLDIR)\include\grx20.h
+ if exist $(INSTALLDIR)\include\grxkeys.h del $(INSTALLDIR)\include\grxkeys.h
+ if exist $(INSTALLDIR)\include\libbcc.h del $(INSTALLDIR)\include\libbcc.h
+ifeq ($(INCLUDE_PRINTING_CODE),y)
+ if exist $(INSTALLDIR)\include\grxprint.h del $(INSTALLDIR)\include\grxprint.h
+endif
+ifeq ($(INCLUDE_GPC_SUPPORT),y)
+ if exist $(INSTALLDIR)\units\grx.pas del $(INSTALLDIR)\units\grx.pas
+ if exist $(INSTALLDIR)\units\graph.pas del $(INSTALLDIR)\units\graph.pas
+endif
endif
install-bin: $(UTILPC) $(UTILPW)
- copy ..\bin\bin2c.exe $(MINGWDIR)\bin
- copy ..\bin\fnt2c.exe $(MINGWDIR)\bin
- copy ..\bin\modetest.exe $(MINGWDIR)\bin
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ cp ../bin/bin2c.exe ../bin/fnt2c.exe \
+ ../bin/modetest.exe $(INSTALLDIR)/bin
+else
+ copy ..\bin\bin2c.exe $(INSTALLDIR)\bin
+ copy ..\bin\fnt2c.exe $(INSTALLDIR)\bin
+ copy ..\bin\modetest.exe $(INSTALLDIR)\bin
+endif
uninstall-bin:
- if exist $(MINGWDIR)\bin\bin2c.exe del $(MINGWDIR)\bin\bin2c.exe
- if exist $(MINGWDIR)\bin\fnt2c.exe del $(MINGWDIR)\bin\fnt2c.exe
- if exist $(MINGWDIR)\bin\modetest.exe del $(MINGWDIR)\bin\modetest.exe
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(INSTALLDIR)/bin/bin2c.exe $(INSTALLDIR)/bin/fnt2c.exe \
+ $(INSTALLDIR)/bin/modetest.exe
+else
+ if exist $(INSTALLDIR)\bin\bin2c.exe del $(INSTALLDIR)\bin\bin2c.exe
+ if exist $(INSTALLDIR)\bin\fnt2c.exe del $(INSTALLDIR)\bin\fnt2c.exe
+ if exist $(INSTALLDIR)\bin\modetest.exe del $(INSTALLDIR)\bin\modetest.exe
+endif
ifdef GRX_DEFAULT_FONT_PATH
+ifeq ($(HAVE_UNIX_TOOLS),y)
+FONTPATHdos = $(GRX_DEFAULT_FONT_PATH)
+else
FONTPATHdos = $(subst /,,$(GRX_DEFAULT_FONT_PATH))
+endif
install-fonts:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ mkdir -p $(FONTPATHdos)
+ cp ../fonts/* $(FONTPATHdos)
+else
if not exist $(FONTPATHdos)\nul mkdir $(FONTPATHdos)
copy ..\fonts*.* $(FONTPATHdos)
+endif
uninstall-fonts:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(FONTPATHdos)/*
+else
del $(FONTPATHdos)*.*
endif
+endif
dep:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f depend.tmp
+else
if exist depend.tmp del depend.tmp
+endif
gcc -MM $(CCOPT) $(INCDIR) $(ALL_O:.o=.c) >depend.tmp
sed 's#^.*: (.*).c#\1.o: \1.c#g' <depend.tmp >depend.w32
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f depend.tmp
+else
if exist depend.tmp del depend.tmp
+endif
depend.b: depend.new
sed "s#.o:#.obj:#g" <depend.new >depend.b
sed "s#.o:#.asm:#g" <depend.new >>depend.b
$(GRX20ST): $(TAG) $(ALL_O)
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f $(GRX20STdos)
+else
if exist $(GRX20STdos) del $(GRX20STdos)
+endif
$(AR) -r $(GRX20ST) $(STD_Oa)
$(AR) -r $(GRX20ST) $(STD_Ob)
$(AR) -r $(GRX20ST) $(STD_Oc)
@@ -199,7 +270,12 @@
$(WIN32_GCC_i386_STATIC):
$(MAKE) -f makefile.w32 clean
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ if [ ! -r $(WIN32_GCC_i386_STATIC) ]; then \
+ rm -f $(SYSTEM_TAG_PREFIX).*; fi
+else
if not exist $(WIN32_GCC_i386_STATIC) del $(SYSTEM_TAG_PREFIX).*
+endif
echo WIN32_GCC_i386_STATIC_TARGET > $(WIN32_GCC_i386_STATIC)
$(ALL_O): $(TAG)
diff -u -r grx246.orig/test/bgi/makefile.dj2 grx246/test/bgi/makefile.dj2
--- grx246.orig/test/bgi/makefile.dj2 Thu Jun 7 21:08:40 2001
+++ grx246/test/bgi/makefile.dj2 Mon Apr 26 03:58:47 2004
@@ -51,8 +51,12 @@
$(CC) -S $(CCOPT) $(INCDIR) $*.c
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe
+else
if exist *.o del *.o
if exist *.exe del *.exe
+endif
depend.new:
$(CC) -MM $(CCOPT) $(INCDIR) $(PROGS:.exe=.c) >depend.new
diff -u -r grx246.orig/test/bgi/makefile.w32 grx246/test/bgi/makefile.w32
--- grx246.orig/test/bgi/makefile.w32 Sat Aug 10 00:04:46 2002
+++ grx246/test/bgi/makefile.w32 Mon Apr 26 03:58:47 2004
@@ -49,8 +49,12 @@
$(CC) -S $(CCOPT) $(INCDIR) $*.c
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe
+else
if exist *.o del *.o
if exist *.exe del *.exe
+endif
#depend.new:
# $(CC) -MM $(CCOPT) $(INCDIR) $(PROGS:.exe=.c) >depend.new
diff -u -r grx246.orig/test/makefile.dj2 grx246/test/makefile.dj2
--- grx246.orig/test/makefile.dj2 Mon Jun 17 22:09:10 2002
+++ grx246/test/makefile.dj2 Mon Apr 26 03:58:47 2004
@@ -74,8 +74,12 @@
$(CC) -S $(CCOPT) $(INCDIR) $*.c
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe
+else
if exist *.o del *.o
if exist *.exe del *.exe
+endif
depend.new:
$(CC) -MM $(CCOPT) $(INCDIR) $(PROGS:.exe=.c) >depend.new
diff -u -r grx246.orig/test/makefile.w32 grx246/test/makefile.w32
--- grx246.orig/test/makefile.w32 Mon Jun 17 22:08:38 2002
+++ grx246/test/makefile.w32 Mon Apr 26 03:58:47 2004
@@ -84,8 +84,12 @@
$(CC) -S $(CCOPT) $(INCDIR) $*.c
clean:
+ifeq ($(HAVE_UNIX_TOOLS),y)
+ rm -f *.o *.exe
+else
if exist *.o del *.o
if exist *.exe del *.exe
+endif
depend.new:
$(CC) -MM $(CCOPT) $(INCDIR) $(PROGS:.exe=.c) >depend.new
--- grx246.orig/configure Sun Jun 6 21:11:25 2004
+++ grx246.new/configure Sun Jun 6 21:15:45 2004
@@ -202,15 +202,16 @@
*) echo "$0: invalid target" >&2; exit 1;;
esac
-if echo "$target" | tr A-Z a-z | grep "[a-z0-9]-[a-z0-9]" > /dev/null; then
- CROSS_PLATFORM="`echo "$target" | tr A-Z a-z`-"
- installdir="$prefix/$target"
- # Cross-compiling is usually done from a Unix-like platform.
- HAVE_UNIX_TOOLS=y
-else
- CROSS_PLATFORM=""
- installdir="$prefix"
-fi
+case "$target" in
+ *[A-Za-z0-9]-[A-Za-z0-9]*|mingw32)
+ CROSS_PLATFORM="`echo "$target" | tr A-Z a-z`-"
+ installdir="$prefix/$target"
+ # Cross-compiling is usually done from a Unix-like platform.
+ HAVE_UNIX_TOOLS=y;;
+ *)
+ CROSS_PLATFORM=""
+ installdir="$prefix";;
+esac
if [ $USE_SVGALIB_DRIVER != y ] && [ $USE_FRAMEBUFFER_DRIVER != y ]; then
echo "$0: either `--enable-svgalib' or `--enable-framebuffer' must be set" >&2
--- grx246.orig/makedefs.grx Sun Jun 6 21:11:25 2004
+++ grx246.new/makedefs.grx Sun Jun 6 21:12:54 2004
@@ -46,6 +46,7 @@
### SYSTEM SETTINGS ##################################################
CC = $(CROSS_PLATFORM)gcc
+PC = $(CROSS_PLATFORM)gpc
AR = $(CROSS_PLATFORM)ar
RANLIB = $(CROSS_PLATFORM)ranlib
STRIP = $(CROSS_PLATFORM)strip
--- grx246.orig/pascal/bgi/makefile.dj2 Sun Jun 6 21:11:25 2004
+++ grx246.new/pascal/bgi/makefile.dj2 Sun Jun 6 21:13:23 2004
@@ -16,7 +16,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB)
# Compiler and options on your system
-COMPILER = gpc --automake
+COMPILER = $(PC) --automake
PROGS= \
allmodes.exe \
--- grx246.orig/pascal/bgi/makefile.lnx Sun Dec 23 02:32:40 2001
+++ grx246.new/pascal/bgi/makefile.lnx Sun Jun 6 21:13:28 2004
@@ -15,7 +15,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB) -lvga -lm
# Compiler and options on your system
-COMPILER = gpc --automake
+COMPILER = $(PC) --automake
PROGS= \
allmodes \
--- grx246.orig/pascal/bgi/makefile.w32 Sun Jun 6 21:11:25 2004
+++ grx246.new/pascal/bgi/makefile.w32 Sun Jun 6 21:35:43 2004
@@ -16,7 +16,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB) -mwindows -mconsole
# Compiler and options on your system
-COMPILER = gpc --autobuild --gpc-main=GRXMain
+COMPILER = $(PC) --autobuild
PROGS= \
--- grx246.orig/pascal/bgi/makefile.x11 Sun Dec 23 02:31:34 2001
+++ grx246.new/pascal/bgi/makefile.x11 Sun Jun 6 21:13:28 2004
@@ -15,7 +15,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB) $(X11LIBS) -lm
# Compiler and options on your system
-COMPILER = gpc --automake
+COMPILER = $(PC) --automake
PROGS= \
xallmodes \
--- grx246.orig/pascal/makefile Wed Jun 11 00:21:24 2003
+++ grx246.new/pascal/makefile Sun Jun 6 21:35:33 2004
@@ -9,7 +9,7 @@
GRAPHICSLIB = -L/usr/lib
# Compiler and options on your system
-COMPILER = gpc --automake -Wall
+COMPILER = $(PC) --automake -Wall
# --------------------------------------------
# I Think, you don't need to change from here
--- grx246.orig/pascal/makefile.dj2 Sun Jun 6 21:11:25 2004
+++ grx246.new/pascal/makefile.dj2 Sun Jun 6 21:13:19 2004
@@ -15,7 +15,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB)
# Compiler and options on your system
-COMPILER = gpc --automake
+COMPILER = $(PC) --automake
PROGS= \
--- grx246.orig/pascal/makefile.lnx Wed Jun 11 00:21:24 2003
+++ grx246.new/pascal/makefile.lnx Sun Jun 6 21:13:23 2004
@@ -14,7 +14,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB) -lvga -lm
# Compiler and options on your system
-COMPILER = gpc --automake
+COMPILER = $(PC) --automake
PROGS= \
--- grx246.orig/pascal/makefile.w32 Sun Jun 6 21:11:25 2004
+++ grx246.new/pascal/makefile.w32 Sun Jun 6 21:35:53 2004
@@ -15,7 +15,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB) -mwindows -mconsole
# Compiler and options on your system
-COMPILER = gpc --autobuild --gpc-main=GRXMain
+COMPILER = $(PC) --autobuild
PROGS= \
--- grx246.orig/pascal/makefile.x11 Wed Jun 11 00:21:24 2003
+++ grx246.new/pascal/makefile.x11 Sun Jun 6 21:13:19 2004
@@ -14,7 +14,7 @@
LIBS= $(GRXLIBPATH) $(GRXLIB) $(X11LIBS) -lm
# Compiler and options on your system
-COMPILER = gpc --automake
+COMPILER = $(PC) --automake
PROGS= \
--- grx246.orig/pascal/modetest.pas Tue May 27 21:23:20 2003
+++ grx246.new/pascal/modetest.pas Sun Jun 6 21:34:04 2004
@@ -21,7 +21,7 @@
Write (i:3);
Write (f:3);
Write (gvm.Mode:6);
- Write (gvm.Width:5, 'x',gvm.Height:4, 'x', Ord(gvm.BPP):3);
+ Write (gvm.Width:5, 'x',gvm.Height:4, 'x', gvm.BPP:3);
WriteLn;
fivm := GrNextVideoMode(fivm)
end
--- grx246.orig/src/makefile.dj2 Sun Jun 6 21:11:25 2004
+++ grx246.new/src/makefile.dj2 Sun Jun 6 21:12:47 2004
@@ -278,7 +278,7 @@
else
if exist depend.tmp del depend.tmp
endif
- gcc -MM $(CCOPT) $(INCDIR) $(ALL_O:.o=.c) >depend.tmp
+ $(CC) -MM $(CCOPT) $(INCDIR) $(ALL_O:.o=.c) >depend.tmp
sed 's#^.*: (.*).c#\1.o: \1.c#g' <depend.tmp >depend.dj2
ifeq ($(HAVE_UNIX_TOOLS),y)
rm -f depend.tmp
--- grx246.orig/src/makefile.lnx Mon Jun 23 18:13:22 2003
+++ grx246.new/src/makefile.lnx Sun Jun 6 21:12:47 2004
@@ -263,7 +263,7 @@
endif
dep:
- gcc -MM $(CCOPT) $(INCDIR) $(O:.o=.c) \
+ $(CC) -MM $(CCOPT) $(INCDIR) $(O:.o=.c) \
| sed 's#^.*: (.*).c#\1.o: \1.c#g' >depend.lnx
$(O): %.o : %.c
--- grx246.orig/src/makefile.w32 Sun Jun 6 21:11:25 2004
+++ grx246.new/src/makefile.w32 Sun Jun 6 21:12:43 2004
@@ -233,7 +233,7 @@
else
if exist depend.tmp del depend.tmp
endif
- gcc -MM $(CCOPT) $(INCDIR) $(ALL_O:.o=.c) >depend.tmp
+ $(CC) -MM $(CCOPT) $(INCDIR) $(ALL_O:.o=.c) >depend.tmp
sed 's#^.*: (.*).c#\1.o: \1.c#g' <depend.tmp >depend.w32
ifeq ($(HAVE_UNIX_TOOLS),y)
rm -f depend.tmp
--- grx246.orig/src/makefile.x11 Mon Jun 23 18:13:22 2003
+++ grx246.new/src/makefile.x11 Sun Jun 6 21:12:43 2004
@@ -255,7 +255,7 @@
endif
dep:
- gcc -MM $(CCOPT) $(INCDIR) $(O:.o=.c) \
+ $(CC) -MM $(CCOPT) $(INCDIR) $(O:.o=.c) \
| sed 's#^.*: (.*).c#\1.o: \1.c#g' >depend.x11
$(O): %.o : %.c
--- grx.pas.orig Fri Apr 25 02:10:07 2003
+++ grx.pas Sun Mar 28 23:15:23 2004
@@ -188,34 +188,35 @@
type
+ GrVideoModePtr = ^GrVideoMode;
+
{ The video driver descriptor structure }
{ struct _GR_videoDriver }
+ GrVideoDriverPtr = ^GrVideoDriver;
GrVideoDriver = record
- Name : CString; { driver name }
- Adapter : Char; { adapter type }
- Inherit : ^GrVideoDriver; { inherit video modes from this }
- Modes : ^GrVideoMode; { table of supported modes }
- NModes : Integer; { number of modes }
- Detect : Pointer;
- Init : Pointer;
- Reset : Pointer;
- SelectMode: Pointer;
- DrvFlags : Integer;
+ Name : CString; { driver name }
+ Adapter : Integer; { adapter type }
+ Inherit : GrVideoDriverPtr; { inherit video modes from this }
+ Modes : GrVideoModePtr; { table of supported modes }
+ NModes : Integer; { number of modes }
+ Detect : function: Integer;
+ Init : function (Options: CString): Integer;
+ Reset : procedure;
+ SelectMode: function (Drv: GrVideoDriverPtr; w, h, BPP, txt: Integer; var ep: Cardinal): GrVideoModePtr;
+ DrvFlags : Cardinal;
end;
- GrVideoDriverPtr = ^GrVideoDriver;
{ Video driver mode descriptor structure }
{ struct _GR_videoMode }
GrVideoMode = record
- Present : Char; { is it really available? }
- BPP : Char; { log2 of # of colors }
- Width,Height: ShortInt; { video mode geometry }
+ Present : ByteBool; { is it really available? }
+ BPP : Byte; { log2 of # of colors }
+ Width,Height: ShortInt; { video mode geometry }
Mode : ShortInt; { BIOS mode number (if any) }
- LineOffset : Integer; { scan line length }
- PrivData : Integer; { driver can use it for anything }
- ExtInfo : ^GrVideoModeExt; { extra info (maybe shared) }
+ LineOffset : Integer; { scan line length }
+ PrivData : Integer; { driver can use it for anything }
+ ExtInfo : ^GrVideoModeExt; { extra info (maybe shared) }
end;
- GrVideoModePtr = ^GrVideoMode;
{ Video driver mode descriptor extension structure. This is a separate
structure accessed via a pointer from the main mode descriptor. The
@@ -223,6 +224,7 @@
extended info. }
{ struct _GR_videoModeExt }
+ Int2 = array [0 .. 1] of Integer;
GrVideoModeExt = record
Mode : Integer; { frame driver for this video mode }
Drv : ^GrFrameDriver; { optional frame driver override }
@@ -230,15 +232,26 @@
CPrec : array [1 .. 3] of ByteCard; { color component precisions }
CPos : array [1 .. 3] of ByteCard; { color component bit positions }
Flags : Integer; { mode flag bits; see "grdriver.h" }
- Setup : Pointer;
- SetVSize : Pointer;
- Scroll : Pointer;
- SetBank : Pointer;
- SetRWBanks : Pointer;
- LoadColor : Pointer;
+ Setup : function (var md: GrVideoMode; NoClear: Integer): Integer;
+ SetVSize : function (var md: GrVideoMode; w, h: Integer; var Result: GrVideoMode): Integer;
+ Scroll : function (var md: GrVideoMode; x, y: Integer; var Result: Int2): Integer;
+ SetBank : procedure (bk: Integer);
+ SetRWBanks : procedure (rb, wb: Integer);
+ LoadColor : procedure (c, r, g, b: Integer);
LFB_Selector: Integer;
end;
+ GrFrameDriverPtr = ^GrFrameDriver;
+
+ GrFrameType = record
+ gf_BaseAddr : array [0 .. 3] of MemPtr; { base address of frame memory }
+ gf_Selector : ShortInt; { frame memory segment selector }
+ gf_OnScreen : ByteBool; { is it in video memory ? }
+ gf_MemFlags : Byte; { memory allocation flags }
+ gf_LineOffset: Integer; { offset to next scan line in bytes }
+ gf_Driver : GrFrameDriverPtr; { frame access functions }
+ end;
+
{ The frame driver descriptor structure. }
{ struct _GR_frameDriver }
@@ -249,46 +262,45 @@
Row_Align : Integer; { scan line size alignment }
Num_Planes : Integer; { number of planes }
Bits_Per_Pixel : Integer; { bits per pixel }
- Max_Plane_Size : Integer; { maximum plane size in bytes }
- Init : Pointer;
- ReadPixel : Pointer;
- DrawPixel : Pointer;
- DrawLine : Pointer;
- DrawHLine : Pointer;
- DrawVLine : Pointer;
- DrawBlock : Pointer;
- DrawBitmap : Pointer;
- DrawPattern : Pointer;
- BitBlt : Pointer;
- BltV2R : Pointer;
- BltR2V : Pointer;
- GetIndexedScanline: Pointer;
- PutScanLine : Pointer;
+ Max_Plane_Size : MedInt; { maximum plane size in bytes }
+ Init : function (var md: GrVideoMode): Integer;
+ ReadPixel : function (var c: GrFrameType; x, y: Integer): GrColor;
+ DrawPixel : procedure (x, y: Integer; c: GrColor);
+ DrawLine : procedure (x, y, dx, dy: Integer; c: GrColor);
+ DrawHLine : procedure (x, y, w: Integer; c: GrColor);
+ DrawVLine : procedure (x, y, h: Integer; c: GrColor);
+ DrawBlock : procedure (x, y, w, h: Integer; c: GrColor);
+ DrawBitmap : procedure (x, y, w, h: Integer; BMP: MemPtr; Pitch, Start: Integer; fg, bg: GrColor);
+ DrawPattern : procedure (x, y, w: Integer; Patt: Byte; fg, bg: GrColor);
+ BitBlt : procedure (var Dst: GrFrameType; dx, dy: Integer; var Src: GrFrameType; x, y, w, h: Integer; Op: GrColor);
+ BltV2R : procedure (var Dst: GrFrameType; dx, dy: Integer; var Src: GrFrameType; x, y, w, h: Integer; Op: GrColor);
+ BltR2V : procedure (var Dst: GrFrameType; dx, dy: Integer; var Src: GrFrameType; x, y, w, h: Integer; Op: GrColor);
+ GetIndexedScanline: function (var c: GrFrameType; x, y, w: Integer; var Index: Integer): GrColorsPtr;
+ PutScanLine : procedure (x, y, w: Integer; scl: GrColorsPtr; Op: GrColor);
end;
- GrFrameDriverPtr = ^GrFrameDriver;
{ driver and mode info structure }
{ extern const struct _GR_driverInfo }
GrDriverInfoType = record
- VDriver : ^GrVideoDriver; { the current video driver }
- CurMode : ^GrVideoMode; { current video mode pointer }
- ActMode : GrVideoMode; { copy of above, resized if virtual }
- FDriver : GrFrameDriver; { frame driver for the current context }
- SDriver : GrFrameDriver; { frame driver for the screen }
- TDriver : GrFrameDriver; { a dummy driver for text modes }
- MCode : ByteCard; { code for the current mode }
- DefTW,DefTH: Integer; { default text mode size }
- DefGW,DefGH: Integer; { default graphics mode size }
- DefTC,DefGC: GrColor; { default text and graphics colors }
- VPosX,VPosY: Integer; { current virtual viewport position }
- ErrsFatal : Integer; { if set, exit upon errors }
- ModeRestore: Integer; { restore startup video mode if set }
- SplitBanks : Integer; { indicates separate R/W banks }
- CurBank : Integer; { currently mapped bank }
- MdSetHook : Pointer; { callback for mode set }
- SetBank : Pointer; { banking routine }
- SetRWBanks : Pointer; { split banking routine }
+ VDriver : GrVideoDriverPtr; { the current video driver }
+ CurMode : GrVideoModePtr; { current video mode pointer }
+ ActMode : GrVideoMode; { copy of above, resized if virtual }
+ FDriver : GrFrameDriver; { frame driver for the current context }
+ SDriver : GrFrameDriver; { frame driver for the screen }
+ TDriver : GrFrameDriver; { a dummy driver for text modes }
+ MCode : Integer; { code for the current mode }
+ DefTW,DefTH: Integer; { default text mode size }
+ DefGW,DefGH: Integer; { default graphics mode size }
+ DefTC,DefGC: GrColor; { default text and graphics colors }
+ VPosX,VPosY: Integer; { current virtual viewport position }
+ ErrsFatal : Integer; { if set, exit upon errors }
+ ModeRestore: Integer; { restore startup video mode if set }
+ SplitBanks : Integer; { indicates separate R/W banks }
+ CurBank : Integer; { currently mapped bank }
+ MdSetHook : procedure; { callback for mode set }
+ SetBank : procedure (bk: Integer); { banking routine }
+ SetRWBanks : procedure (rb, wb: Integer); { split banking routine }
end;
var
@@ -351,33 +363,24 @@
================================================================== }
type
- GrFrameType = record
- gf_BaseAddr : array [0 .. 3] of MemPtr; { base address of frame memory }
- gf_Selector : ShortInt; { frame memory segment selector }
- gf_OnScreen : Char; { is it in video memory ? }
- gf_MemFlags : Char; { memory allocation flags }
- gf_LineOffset: Integer; { offset to next scan line in bytes }
- gf_Driver : ^GrFrameDriver; { frame access functions }
- end;
-
{ struct _GR_context }
+ GrContextPtr = ^GrContext;
GrContext = record
- gc_Frame : GrFrameType; { frame buffer info }
- gc_Root : ^GrContext; { context which owns frame }
- gc_XMax : Integer; { max X coord (width - 1) }
- gc_YMax : Integer; { max Y coord (height - 1) }
- gc_XOffset : Integer; { X offset from root's base }
- gc_YOffset : Integer; { Y offset from root's base }
- gc_XClipLo : Integer; { low X clipping limit }
- gc_YClipLo : Integer; { low Y clipping limit }
- gc_XClipHi : Integer; { high X clipping limit }
- gc_YClipHi : Integer; { high Y clipping limit }
- gc_UsrXBase : Integer; { user window min X coordinate }
- gc_UsrYBase : Integer; { user window min Y coordinate }
- gc_UsrWidth : Integer; { user window width }
- gc_UsrHeight: Integer; { user window height }
+ gc_Frame : GrFrameType; { frame buffer info }
+ gc_Root : GrContextPtr; { context which owns frame }
+ gc_XMax : Integer; { max X coord (width - 1) }
+ gc_YMax : Integer; { max Y coord (height - 1) }
+ gc_XOffset : Integer; { X offset from root's base }
+ gc_YOffset : Integer; { Y offset from root's base }
+ gc_XClipLo : Integer; { low X clipping limit }
+ gc_YClipLo : Integer; { low Y clipping limit }
+ gc_XClipHi : Integer; { high X clipping limit }
+ gc_YClipHi : Integer; { high Y clipping limit }
+ gc_UsrXBase : Integer; { user window min X coordinate }
+ gc_UsrYBase : Integer; { user window min Y coordinate }
+ gc_UsrWidth : Integer; { user window width }
+ gc_UsrHeight: Integer; { user window height }
end;
- GrContextPtr = ^GrContext;
{ extern const struct _GR_contextInfo }
GrContextInfoType = record
@@ -472,11 +475,11 @@
type
{ typedef struct } { framed box colors }
GrFBoxColors = record
- fbx_IntegerColor: Integer;
- fbx_TopColor : Integer;
- fbx_RightColor : Integer;
- fbx_BottomColor : Integer;
- fbx_LeftColor : Integer;
+ fbx_IntColor : GrColor;
+ fbx_TopColor : GrColor;
+ fbx_RightColor : GrColor;
+ fbx_BottomColor: GrColor;
+ fbx_LeftColor : GrColor;
end;
procedure GrClearScreen(bg:GrColor); asmname 'GrClearScreen';
@@ -503,7 +506,7 @@
procedure GrPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrPolygon';
procedure GrFilledConvexPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrFilledConvexPolygon';
procedure GrFilledPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrFilledPolygon';
-procedure GrBitBlt(Dest: GrContextPtr; x, y: Integer; Src: GrContextPtr; x1, y1, x2, y2: Integer; op: GrColor); asmname 'GrBitBlt';
+procedure GrBitBlt(Dest: GrContextPtr; x, y: Integer; Src: GrContextPtr; x1, y1, x2, y2: Integer; Op: GrColor); asmname 'GrBitBlt';
function GrPixel(x, y:Integer):GrColor; asmname 'GrPixel';
function GrPixelC(c: GrContextPtr; x, y: Integer): GrColor; asmname 'GrPixelC';
@@ -521,12 +524,12 @@
{ (w = |x2-y1|) }
{ Output data is valid until next GRX call ! }
-procedure GrPutScanline(x1,x2,yy: Integer;c: GrColorsPtr; op: GrColor); asmname 'GrPutScanline';
+procedure GrPutScanline(x1,x2,yy: Integer;c: GrColorsPtr; Op: GrColor); asmname 'GrPutScanline';
{ Input x1: first x coordinate to be set }
{ x2: last x coordinate to be set }
{ yy: y coordinate }
{ c : c[0..(|x2-x1|] hold the pixel data }
-{ op: Operation (GrWRITE/GrXOR/GrOR/GrAND/GrIMAGE) }
+{ Op: Operation (GrWRITE/GrXOR/GrOR/GrAND/GrIMAGE) }
{ }
{ Note c[..] data must fit GrCVALUEMASK otherwise the results }
{ are implementation dependend. }
@@ -544,7 +547,7 @@
procedure GrBoxNC(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrBoxNC';
procedure GrFilledBoxNC(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrFilledBoxNC';
procedure GrFramedBoxNC(x1, y1, x2, y2, Wdt: Integer; protected var c: GrFBoxColors); asmname 'GrFramedBoxNC';
-procedure GrBitBltNC(Dest: GrContextPtr; x, y: Integer; Src: GrContextPtr; x1, y1, x2, y2: Integer; op: GrColor); asmname 'GrBitBltNC';
+procedure GrBitBltNC(Dest: GrContextPtr; x, y: Integer; Src: GrContextPtr; x1, y1, x2, y2: Integer; Op: GrColor); asmname 'GrBitBltNC';
function GrPixelNC(x, y:Integer):GrColor; asmname 'GrPixelNC';
function GrPixelCNC(c: GrContextPtr; x, y: Integer): GrColor; asmname 'GrPixelCNC';
@@ -592,41 +595,40 @@
type
{ typedef struct _GR_fontHeader } { font descriptor }
GrFontHeader = record
- Name : CString; { font name }
- Family : CString; { font family name }
- Proportional: Char; { characters have varying width }
- Scalable : Char; { derived from a scalable font }
- Preloaded : Char; { set when linked Integero program }
- Modified : Char; { "tweaked" font (resized, etc..) }
- Width : Integer; { width (proportional=>average) }
- Height : Integer; { font height }
- Baseline : Integer; { baseline pixel pos (from top) }
- ULPos : Integer; { underline pixel pos (from top) }
- ULHeight : Integer; { underline width }
- MinChar : Integer; { lowest character code in font }
- NumChars : Integer; { number of characters in font }
+ Name : CString; { font name }
+ Family : CString; { font family name }
+ Proportional: ByteBool; { characters have varying width }
+ Scalable : ByteBool; { derived from a scalable font }
+ Preloaded : ByteBool; { set when linked Integero program }
+ Modified : ByteBool; { "tweaked" font (resized, etc..) }
+ Width : Cardinal; { width (proportional=>average) }
+ Height : Cardinal; { font height }
+ Baseline : Cardinal; { baseline pixel pos (from top) }
+ ULPos : Cardinal; { underline pixel pos (from top) }
+ ULHeight : Cardinal; { underline width }
+ MinChar : Cardinal; { lowest character code in font }
+ NumChars : Cardinal; { number of characters in font }
end;
{ typedef struct _GR_fontChrInfo } { character descriptor }
GrFontChrInfo = record
- Width : Integer; { width of this character }
- Offset: Integer; { offset from start of bitmap }
+ Width : Cardinal; { width of this character }
+ Offset: Cardinal; { offset from start of bitmap }
end;
{ typedef struct _GR_font } { the complete font }
- AuxoffsType = array [1 .. 7] of Integer;
+ AuxOffsType = array [0 .. 6] of Integer;
GrFont = record
h : GrFontHeader; { the font info structure }
BitMap : MemPtr; { character bitmap array }
AuxMap : MemPtr; { map for rotated & underline chrs }
- MinWidth: Integer; { width of narrowest character }
- MaxWidth: Integer; { width of widest character }
- AuxSize : Integer; { allocated size of auxiliary map }
- AuxNext : Integer; { next free byte in auxiliary map }
- AuxOffs : ^AuxoffsType; { offsets to completed aux chars }
- ChrInfo : array [1 .. 1] of GrFontChrInfo; { character info (not act. size) }
+ MinWidth: Cardinal; { width of narrowest character }
+ MaxWidth: Cardinal; { width of widest character }
+ AuxSize : Cardinal; { allocated size of auxiliary map }
+ AuxNext : Cardinal; { next free byte in auxiliary map }
+ AuxOffs : ^AuxOffsType; { offsets to completed aux chars }
+ ChrInfo : array [1 .. 1] of GrFontChrInfo; { character info (not act. size) }
end;
-
GrFontPtr = ^GrFont;
var
@@ -657,11 +659,11 @@
function GrFontCharAuxBmp(var Font: GrFont; Chr, Dir, ul: Integer): MemPtr; asmname 'GrFontCharAuxBmp';
type
- GrColorTableP = ^GrColor;
+ GrColorTableP = ^GrColors;
{ typedef union _GR_textColor } { text color union }
GrTextColor = record
- case 1..2 of
+ case 1 .. 2 of
1: (v: GrColor); { color value for "direct" text }
2: (p: GrColorTableP); { color table for attribute text }
end;
@@ -689,7 +691,7 @@
txr_LineOffset: Integer; { offset in buffer(s) between rows }
txr_XPos : Integer; { upper left corner X coordinate }
txr_YPos : Integer; { upper left corner Y coordinate }
- txr_ChrType : Char; { character type (see above) }
+ txr_ChrType : ByteCard; { character type (see above) }
end;
function GrCharWidth(Chr: Integer; protected var Opt: GrTextOption): Integer; asmname 'GrCharWidth';
@@ -717,10 +719,10 @@
type
GrLineOption = record
- No_Color : GrColor; { color used to draw line }
- Lno_Width : Integer; { width of the line }
- Lno_PattLen: Integer; { length of the dash pattern }
- Lno_DashPat: ^ByteCard; { draw/nodraw pattern }
+ No_Color : GrColor; { color used to draw line }
+ Lno_Width : Integer; { width of the line }
+ Lno_PattLen: Integer; { length of the dash pattern }
+ Lno_DashPat: MemPtr; { draw/nodraw pattern }
end;
procedure GrCustomLine(x1, y1, x2, y2: Integer; protected var o: GrLineOption); asmname 'GrCustomLine';
@@ -745,7 +747,7 @@
GrBitmap = record
bmp_IsPixMap: Integer; { type flag for pattern union }
bmp_Height : Integer; { bitmap height }
- bmp_Data : ^ByteCard; { pointer to the bit pattern }
+ bmp_Data : MemPtr; { pointer to the bit pattern }
bmp_FgColor : GrColor; { foreground color for fill }
bmp_BgColor : GrColor; { background color for fill }
bmp_MemFlags: Integer; { set if dynamically allocated }
@@ -769,9 +771,10 @@
{ typedef union _GR_pattern }
GrPattern = record
- gp_IsPixMap: Integer; { nonzero for pixmaps }
- gp_BitMap : GrBitmap; { fill bitmap }
- gp_PixMap : GrPixmap; { fill pixmap }
+ case 1 .. 3 of
+ 1: (gp_IsPixMap: Integer); { nonzero for pixmaps }
+ 2: (gp_BitMap : GrBitmap); { fill bitmap }
+ 3: (gp_PixMap : GrPixmap); { fill pixmap }
end;
GrPatternPtr = ^GrPattern;
@@ -820,11 +823,6 @@
<e-mail> - [stenclpmd@ba.telecom.sk] }
type
- { Original GRX decl:
- GrImage = GrPixmap;
- GrImagePtr = ^GrImage;
- Pascal isn't case sensitive so GrImage conficts with GrIMAGE above.
- Since we only need GrImagePtr we take a short cut here: }
GrImagePtr = ^GrPixmap;
{ Flags for GrImageInverse() }
@@ -991,7 +989,7 @@
Buttons: Integer; { mouse button state }
Key : Integer; { key code from keyboard }
KBStat : Integer; { keybd status (ALT, CTRL, etc..) }
- DTime : Integer; { time since last event (msec) }
+ DTime : MedInt; { time since last event (msec) }
end;
GrMouseEventPtr = ^GrMouseEvent;
--- grx246/pascal/bgi/graph.pas.orig Fri Sep 17 18:57:44 2004
+++ grx246/pascal/bgi/graph.pas Fri Sep 17 19:04:19 2004
@@ -19,8 +19,7 @@
22/02/01 patches by Maurice Lombardi
Maurice.Lombardi@ujf-grenoble.fr
Necessary to correct the drawpoly and fillpoly declarations.
Some changes to make this file compile with more recent versions of
- gpc (change in declaration of external variables, removal of now
- invalid __soso__ declarations). }
+ gpc. }
{ Define this if you don't want this unit to declare a KeyPressed
and a ReadKey function. }
@@ -62,9 +61,14 @@
{$else}
{$define varasmname external; asmname}
{$endif}
+{$if __GPC_RELEASE__ < 20040917}
+type
+ CInteger = Integer;
+ CCardinal = Cardinal;
+{$endif}
type
- PByte = ^Byte;
+ PByte = ^Byte;
WrkString = String[255];
const
@@ -263,26 +267,26 @@
type
PaletteType = record
Size : Byte;
- Colors: array [0 .. MaxColors] of Byte;
+ Colors: array [0 .. MaxColors] of Byte
end;
LineSettingsType = record
- LineStyle: Integer;
+ LineStyle: CInteger;
UPattern : ShortCard;
- Thickness: Integer;
+ Thickness: CInteger
end;
TextSettingsType = record
- Font : Integer;
- Direction: Integer;
- CharSize : Integer;
- Horiz : Integer;
- Vert : Integer;
+ Font,
+ Direction,
+ CharSize,
+ Horiz,
+ Vert: CInteger
end;
FillSettingsType = record
- Pattern: Integer;
- Color : Integer;
+ Pattern,
+ Color: CInteger
end;
FillPatternType = array [1 .. 8] of Byte;
@@ -290,17 +294,17 @@
{ This definition is compatible with the grx
definition `int pts[][2]' used to define polygons }
PointType = record
- x, y: Integer;
+ x, y: CInteger
end;
ViewPortType = record
- x1, y1, x2, y2: Integer;
- Clip: WordBool;
+ x1, y1, x2, y2: CInteger;
+ Clip: WordBool
end;
ArcCoordsType = record
- x, y:Integer;
- XStart, YStart, XEnd, YEnd: Integer;
+ x, y,
+ XStart, YStart, XEnd, YEnd: CInteger
end;
var
@@ -309,105 +313,105 @@
{ BGI - API definitions }
-procedure DetectGraph(var GraphDriver, GraphMode: Integer); asmname 'detectgraph';
-procedure InitGraph(var GraphDriver, GraphMode: Integer; PathToDriver: CString); asmname 'initgraph';
-procedure SetGraphMode(Mode: Integer); asmname 'setgraphmode';
-function GetModeName(ModeNumber: Integer): WrkString;
+procedure DetectGraph(var GraphDriver, GraphMode: CInteger); asmname 'detectgraph';
+procedure InitGraph(var GraphDriver, GraphMode: Integer; PathToDriver: CString);
+procedure SetGraphMode(Mode: CInteger); asmname 'setgraphmode';
+function GetModeName(ModeNumber: CInteger): WrkString;
procedure GraphDefaults; asmname 'graphdefaults';
function GetDriverName: WrkString;
-function GraphErrorMsg(ErrorCode: Integer): WrkString;
-function GetMaxX: Integer; asmname 'getmaxx';
-function GetMaxY: Integer; asmname 'getmaxy';
-function GetMaxColor: Integer; asmname 'getmaxcolor';
+function GraphErrorMsg(ErrorCode: CInteger): WrkString;
+function GetMaxX: CInteger; asmname 'getmaxx';
+function GetMaxY: CInteger; asmname 'getmaxy';
+function GetMaxColor: CInteger; asmname 'getmaxcolor';
procedure GetViewSettings(var ViewPort: ViewPortType); asmname 'getviewsettings';
-procedure SetViewPort(Left, Top, Right, Bottom: Integer; Clip: Boolean); asmname 'setviewport';
+procedure SetViewPort(Left, Top, Right, Bottom: CInteger; Clip: Boolean); asmname 'setviewport';
procedure GetLineSettings(var LineInfo: LineSettingsType); asmname 'getlinesettings';
-procedure SetLineStyle(LineStyle: Integer; Pattern: Integer; Thickness: Integer); asmname 'setlinestyle';
+procedure SetLineStyle(LineStyle: CInteger; Pattern: CInteger; Thickness: CInteger); asmname 'setlinestyle';
procedure ClearViewPort; asmname 'clearviewport';
-function GetPixel(x,y: Integer): Integer; asmname 'getpixel';
-procedure PutPixel(x, y: Integer; Pixel: Integer); asmname 'putpixel';
-procedure Bar3D(Left, Top, Right, Bottom: Integer; Depth: Integer; TopFlag: Boolean); asmname 'bar';
-procedure Rectangle(Left, Top, Right, Bottom: Integer); asmname 'rectangle';
-procedure FillPoly(NumPoints: Word; var PolyPoints { : array of PointType }); asmname 'fillpoly';
-procedure FillEllipse(x, y: Integer; XRadius, YRadius: Integer); asmname 'fillellipse';
+function GetPixel(x,y: CInteger): CInteger; asmname 'getpixel';
+procedure PutPixel(x, y: CInteger; Pixel: CInteger); asmname 'putpixel';
+procedure Bar3D(Left, Top, Right, Bottom: CInteger; Depth: CInteger; TopFlag: Boolean); asmname 'bar';
+procedure Rectangle(Left, Top, Right, Bottom: CInteger); asmname 'rectangle';
+procedure FillPoly(NumPoints: CCardinal; var PolyPoints { : array of PointType }); asmname 'fillpoly';
+procedure FillEllipse(x, y: CInteger; XRadius, YRadius: CInteger); asmname 'fillellipse';
procedure GetArcCoords(var ArcCoords: ArcCoordsType); asmname 'getarccoords';
-procedure FloodFill(x, y: Integer; Border: Integer); asmname 'floodfill';
-procedure SetFillPattern(UPattern: FillPatternType; Color: Integer); asmname 'setfillpattern';
-procedure SetFillStyle(Pattern: Integer; Color: Integer); asmname 'setfillstyle';
-procedure GetImage(Left, Top, Right, Bottom: Integer; var BitMap); asmname 'getimage';
-procedure PutImage(Left, Top: Integer; var BitMap; Op: Integer); asmname 'putimage';
-function ImageSize(Left, Top, Right, Bottom: Integer): Integer; asmname 'imagesize';
+procedure FloodFill(x, y: CInteger; Border: CInteger); asmname 'floodfill';
+procedure SetFillPattern(UPattern: FillPatternType; Color: CInteger); asmname 'setfillpattern';
+procedure SetFillStyle(Pattern: CInteger; Color: CInteger); asmname 'setfillstyle';
+procedure GetImage(Left, Top, Right, Bottom: CInteger; var BitMap); asmname 'getimage';
+procedure PutImage(Left, Top: CInteger; var BitMap; Op: CInteger); asmname 'putimage';
+function ImageSize(Left, Top, Right, Bottom: CInteger): CInteger; asmname 'imagesize';
procedure GetTextSettings(var TextTypeInfo: TextSettingsType); asmname 'gettextsettings';
-procedure SetTextJustify(Horiz, Vert: Integer); asmname 'settextjustify';
-procedure SetTextStyle(Font, Direction: Integer; CharSize: Integer); asmname 'settextstyle';
-procedure SetRGBPalette(Color, Red, Green, Blue: Integer); asmname 'setrgbpalette';
-procedure SetUserCharSize(MultX, DivX, MultY, DivY: Integer); asmname 'setusercharsize';
-procedure SetWriteMode(Mode: Integer); asmname 'setwritemode';
+procedure SetTextJustify(Horiz, Vert: CInteger); asmname 'settextjustify';
+procedure SetTextStyle(Font, Direction: CInteger; CharSize: CInteger); asmname 'settextstyle';
+procedure SetRGBPalette(Color, Red, Green, Blue: CInteger); asmname 'setrgbpalette';
+procedure SetUserCharSize(MultX, DivX, MultY, DivY: CInteger); asmname 'setusercharsize';
+procedure SetWriteMode(Mode: CInteger); asmname 'setwritemode';
procedure OutText(TextString: CString); asmname 'outtext';
-procedure OutTextXY(x, y: Integer; TextString: CString); asmname 'outtextxy';
-function TextHeight(TextString: CString): Integer; asmname 'textheight';
-function TextWidth(TextString: CString): Integer; asmname 'textwidth';
+procedure OutTextXY(x, y: CInteger; TextString: CString); asmname 'outtextxy';
+function TextHeight(TextString: CString): CInteger; asmname 'textheight';
+function TextWidth(TextString: CString): CInteger; asmname 'textwidth';
-function RegisterBGIfont(Font: Pointer): Integer; asmname 'registerbgifont';
-function InstallUserFont(FontName: CString): Integer; asmname 'installuserfont';
+function RegisterBGIfont(Font: Pointer): CInteger; asmname 'registerbgifont';
+function InstallUserFont(FontName: CString): CInteger; asmname 'installuserfont';
-function GetPaletteSize: Integer; asmname 'getpalettesize';
+function GetPaletteSize: CInteger; asmname 'getpalettesize';
procedure GetPalette(var Palette: PaletteType); asmname 'getpalette';
-procedure SetPalette(ColorNum: Word; Color: Integer); asmname '__gr_setpalette';
+procedure SetPalette(ColorNum: CCardinal; Color: CInteger); asmname '__gr_setpalette';
procedure SetAllPalette(protected var Palette: PaletteType); asmname 'setallpalette';
procedure RestoreCrtMode; asmname '__gr_restorecrtmode';
procedure CloseGraph; asmname '__gr_closegraph';
-procedure SetColor(Color: Integer); asmname '__gr_setcolor';
-procedure SetBkColor(Color: Integer); asmname '__gr_setbkcolor';
-procedure Bar(Left, Top, Right, Bottom: Integer); asmname '__gr_bar';
-function GraphResult:Integer; asmname '__gr_graphresult';
-procedure Line(x1, y1, x2, y2: Integer); asmname '__gr_line';
-procedure MoveTo(x, y: Integer); asmname '__gr_moveto';
-procedure Arc(x, y: Integer; StAngle, EndAngle, Radius: Word); asmname '__gr_arc';
-procedure Circle(x, y: Integer; Radius: Word); asmname '__gr_circle';
+procedure SetColor(Color: CInteger); asmname '__gr_setcolor';
+procedure SetBkColor(Color: CInteger); asmname '__gr_setbkcolor';
+procedure Bar(Left, Top, Right, Bottom: CInteger); asmname '__gr_bar';
+function GraphResult:CInteger; asmname '__gr_graphresult';
+procedure Line(x1, y1, x2, y2: CInteger); asmname '__gr_line';
+procedure MoveTo(x, y: CInteger); asmname '__gr_moveto';
+procedure Arc(x, y: CInteger; StAngle, EndAngle, Radius: CCardinal); asmname '__gr_arc';
+procedure Circle(x, y: CInteger; Radius: CCardinal); asmname '__gr_circle';
procedure ClearDevice; asmname '__gr_cleardevice';
-procedure DrawPoly(NumPoints: Word; var PolyPoints { : array of PointType }); asmname '__gr_drawpoly';
-procedure Ellipse(x, y: Integer; StAngle, EndAngle: Word; XRadius, YRadius: Word); asmname '__gr_ellipse';
-procedure GetAspectRatio(var XAsp, YAsp: Integer); asmname '__gr_getaspectratio';
-function GetBkColor: Word; asmname '__gr_getbkcolor';
-function GetColor: Word; asmname '__gr_getcolor';
+procedure DrawPoly(NumPoints: CCardinal; var PolyPoints { : array of PointType }); asmname '__gr_drawpoly';
+procedure Ellipse(x, y: CInteger; StAngle, EndAngle: CCardinal; XRadius, YRadius: CCardinal); asmname '__gr_ellipse';
+procedure GetAspectRatio(var XAsp, YAsp: CInteger); asmname '__gr_getaspectratio';
+function GetBkColor: CCardinal; asmname '__gr_getbkcolor';
+function GetColor: CCardinal; asmname '__gr_getcolor';
procedure GetFillPattern(var FillPattern: FillPatternType); asmname '__gr_getfillpattern';
procedure GetFillSettings(var FillInfo: FillSettingsType); asmname '__gr_getfillsettings';
-function GetMaxMode: Integer; asmname '__gr_getmaxmode';
-function GetGraphMode: Integer; asmname '__gr_getgraphmode';
-function GetX: Integer; asmname '__gr_getx';
-function GetY: Integer; asmname '__gr_gety';
-function InstallUserDriver(const DriverName: String; AutoDetectPtr: Pointer):Integer;
-procedure LineRel(dx, dy: Integer); asmname '__gr_linerel';
-procedure LineTo(x, y: Integer); asmname '__gr_lineto';
-procedure MoveRel(dx, dy: Integer); asmname '__gr_moverel';
-procedure PieSlice(x, y: Integer; StAngle, EndAngle, Radius: Word); asmname '__gr_pieslice';
-function RegisterBGIdriver(Driver: Pointer): Integer;
-procedure Sector(x, y: Integer; StAngle,EndAngle, XRadius, YRadius: Word); asmname '__gr_sector';
-procedure SetAspectRatio(XAsp, YAsp: Integer); asmname '__gr_setaspectratio';
-procedure SetGraphBufSize(BufSize: Word); asmname '__gr_setgraphbufsize';
-procedure SetActivePage(Page: Word); asmname '__gr_setactivepage';
-procedure SetVisualPage(Page: Word); asmname '__gr_setvisualpage';
+function GetMaxMode: CInteger; asmname '__gr_getmaxmode';
+function GetGraphMode: CInteger; asmname '__gr_getgraphmode';
+function GetX: CInteger; asmname '__gr_getx';
+function GetY: CInteger; asmname '__gr_gety';
+function InstallUserDriver(const DriverName: String; AutoDetectPtr: Pointer):CInteger;
+procedure LineRel(dx, dy: CInteger); asmname '__gr_linerel';
+procedure LineTo(x, y: CInteger); asmname '__gr_lineto';
+procedure MoveRel(dx, dy: CInteger); asmname '__gr_moverel';
+procedure PieSlice(x, y: CInteger; StAngle, EndAngle, Radius: CCardinal); asmname '__gr_pieslice';
+function RegisterBGIdriver(Driver: Pointer): CInteger;
+procedure Sector(x, y: CInteger; StAngle,EndAngle, XRadius, YRadius: CCardinal); asmname '__gr_sector';
+procedure SetAspectRatio(XAsp, YAsp: CInteger); asmname '__gr_setaspectratio';
+procedure SetGraphBufSize(BufSize: CCardinal); asmname '__gr_setgraphbufsize';
+procedure SetActivePage(Page: CCardinal); asmname '__gr_setactivepage';
+procedure SetVisualPage(Page: CCardinal); asmname '__gr_setvisualpage';
procedure GetDefaultPalette(var Palette: PaletteType);
-procedure GetModeRange(GraphDriver:Integer; var LoMode, HiMode:Integer); asmname '__gr_getmoderange';
+procedure GetModeRange(GraphDriver:CInteger; var LoMode, HiMode:CInteger); asmname '__gr_getmoderange';
-function Black : Integer;
-function Blue : Integer;
-function Green : Integer;
-function Cyan : Integer;
-function Red : Integer;
-function Magenta : Integer;
-function Brown : Integer;
-function LightGray : Integer;
-function DarkGray : Integer;
-function LightBlue : Integer;
-function LightGreen : Integer;
-function LightCyan : Integer;
-function LightRed : Integer;
-function LightMagenta: Integer;
-function Yellow : Integer;
-function White : Integer;
+function Black : CInteger;
+function Blue : CInteger;
+function Green : CInteger;
+function Cyan : CInteger;
+function Red : CInteger;
+function Magenta : CInteger;
+function Brown : CInteger;
+function LightGray : CInteger;
+function DarkGray : CInteger;
+function LightBlue : CInteger;
+function LightGreen : CInteger;
+function LightCyan : CInteger;
+function LightRed : CInteger;
+function LightMagenta: CInteger;
+function Yellow : CInteger;
+function White : CInteger;
{ BGI - API extensions }
@@ -427,43 +431,43 @@
{ Translates BGI driver/mode into a driver/mode pair for this unit
for usage with InitGraph / SetGraphMode }
-procedure SetBGImode(var GDrv, GMode: Integer); asmname 'set_BGI_mode';
+procedure SetBGImode(var GDrv, GMode: CInteger); asmname 'set_BGI_mode';
{ Determines a driver/mode pair for InitGraph that will set
up a graphics mode with the desired resolution and colors }
-procedure SetBGImodeWHC(var GDrv, GMode: Integer; Width, Height, Colors: Integer); asmname '__gr_set_BGI_mode_whc';
+procedure SetBGImodeWHC(var GDrv, GMode: CInteger; Width, Height, Colors: CInteger); asmname '__gr_set_BGI_mode_whc';
{ enable multiple graphics pages by
SetBGIModePages (2);
InitGraph (gd, gm, '');
if (GraphResult = grOk) and (GetBGIModePages=2) then PlayWithPages; }
-procedure SetBGIModePages(p: Integer); asmname '__gr_set_BGI_mode_pages';
-function GetBGIModePages: Integer; asmname '__gr_get_BGI_mode_pages';
+procedure SetBGIModePages(p: CInteger); asmname '__gr_set_BGI_mode_pages';
+function GetBGIModePages: CInteger; asmname '__gr_get_BGI_mode_pages';
{ like GetMaxColor, GetMaxX, GetMaxY but for any available mode }
-function GetModeMaxColor(Mode: Integer): Integer; asmname '__gr_getmodemaxcolor';
-function GetModeMaxX(Mode: Integer): Integer; asmname '__gr_getmodemaxx';
-function GetModeMaxY(Mode: Integer): Integer; asmname '__gr_getmodemaxy';
+function GetModeMaxColor(Mode: CInteger): CInteger; asmname '__gr_getmodemaxcolor';
+function GetModeMaxX(Mode: CInteger): CInteger; asmname '__gr_getmodemaxx';
+function GetModeMaxY(Mode: CInteger): CInteger; asmname '__gr_getmodemaxy';
{ Set the actual drawing color to r/g/b.
Functional in HiColor/TrueColor modes only }
-procedure SetRGBColor(Red, Green, Blue: Word); asmname '__gr_setrgbcolor';
+procedure SetRGBColor(Red, Green, Blue: CCardinal); asmname '__gr_setrgbcolor';
{ Returns the actual RGB palette. Functional in
256 color modes only. Won't work on Linux systems }
-procedure GetRGBPalette(Color: Integer; var Red, Green, Blue: Integer); asmname '__getrgbpalette';
+procedure GetRGBPalette(Color: CInteger; var Red, Green, Blue: CInteger); asmname '__getrgbpalette';
{ Transforms the predefined 16 EGA colors (RED, BLUE, MAGENTA, ...)
into the correct color value for the active graphics mode }
-function EGAColor(EGACol: Integer): Integer; asmname '_ega_color';
+function EGAColor(EGACol: CInteger): CInteger; asmname '_ega_color';
{ Enable/disable linestyle drawing of vector fonts.
Currently only functional with GRX v1.x }
procedure TextLineStyle(On: Boolean); asmname '__gr_textlinestyle';
{ Counterparts of SetActivePage/SetVisualPage }
-function GetActivePage: Integer; asmname '__gr_getactivepage';
-function GetVisualPage: Integer; asmname '__gr_getvisualpage';
+function GetActivePage: CInteger; asmname '__gr_getactivepage';
+function GetVisualPage: CInteger; asmname '__gr_getvisualpage';
{$ifndef NO_GRAPH_KEY_FUNCTIONS}
function KeyPressed: Boolean; asmname 'kbhit';
@@ -472,32 +476,43 @@
implementation
-function gem(ec: Integer): CString; asmname 'grapherrormsg';
-function GraphErrorMsg(ErrorCode: Integer): WrkString;
+procedure ig(var gd, gm: CInteger; PathToDriver: CString); asmname 'initgraph';
+procedure InitGraph(var GraphDriver, GraphMode: Integer; PathToDriver: CString);
+var gd, gm: CInteger;
+begin
+ gd := GraphDriver;
+ gm := GraphMode;
+ ig (gd, gm, PathToDriver);
+ GraphDriver := gd;
+ GraphMode := gm
+end;
+
+function gem(ec: CInteger): CString; asmname 'grapherrormsg';
+function GraphErrorMsg(ErrorCode: CInteger): WrkString;
begin
- GraphErrorMsg := CString2String(gem(ErrorCode));
+ GraphErrorMsg := CString2String (gem (ErrorCode))
end;
-function gmn(mn: Integer): CString; asmname 'getmodename';
-function GetModeName(ModeNumber: Integer): WrkString;
+function gmn(mn: CInteger): CString; asmname 'getmodename';
+function GetModeName(ModeNumber: CInteger): WrkString;
begin
- GetModeName := CString2String(gmn(ModeNumber));
+ GetModeName := CString2String (gmn (ModeNumber))
end;
function gdn: CString; asmname 'getdrivername';
function GetDriverName: WrkString;
begin
- GetDriverName := CString2String(gdn);
+ GetDriverName := CString2String (gdn)
end;
type pPT = ^PaletteType;
function gdp: pPT; asmname '__gr_getdefaultpalette';
procedure GetDefaultPalette(var Palette: PaletteType);
begin
- Palette := gdp^;
+ Palette := gdp^
end;
-function InstallUserDriver(const DriverName: String; AutoDetectPtr: Pointer):Integer;
+function InstallUserDriver(const DriverName: String; AutoDetectPtr: Pointer):CInteger;
var
Dummy1: Integer;
Dummy2: Pointer;
@@ -507,89 +522,89 @@
InstallUserDriver := GrError
end;
-function RegisterBGIdriver(Driver: Pointer): Integer;
+function RegisterBGIdriver(Driver: Pointer): CInteger;
var Dummy: Pointer;
begin
Dummy := Driver;
RegisterBGIdriver := GrError
end;
-function Black: Integer;
+function Black: CInteger;
begin
Black := EGAColor (0)
end;
-function Blue: Integer;
+function Blue: CInteger;
begin
Blue := EGAColor (1)
end;
-function Green: Integer;
+function Green: CInteger;
begin
Green := EGAColor (2)
end;
-function Cyan: Integer;
+function Cyan: CInteger;
begin
Cyan := EGAColor (3)
end;
-function Red: Integer;
+function Red: CInteger;
begin
Red := EGAColor (4)
end;
-function Magenta: Integer;
+function Magenta: CInteger;
begin
Magenta := EGAColor (5)
end;
-function Brown: Integer;
+function Brown: CInteger;
begin
Brown := EGAColor (6)
end;
-function LightGray: Integer;
+function LightGray: CInteger;
begin
LightGray := EGAColor (7)
end;
-function DarkGray: Integer;
+function DarkGray: CInteger;
begin
DarkGray := EGAColor (8)
end;
-function LightBlue: Integer;
+function LightBlue: CInteger;
begin
LightBlue := EGAColor (9)
end;
-function LightGreen: Integer;
+function LightGreen: CInteger;
begin
LightGreen := EGAColor (10)
end;
-function LightCyan: Integer;
+function LightCyan: CInteger;
begin
LightCyan := EGAColor (11)
end;
-function LightRed: Integer;
+function LightRed: CInteger;
begin
LightRed := EGAColor (12)
end;
-function LightMagenta: Integer;
+function LightMagenta: CInteger;
begin
LightMagenta := EGAColor (13)
end;
-function Yellow: Integer;
+function Yellow: CInteger;
begin
Yellow := EGAColor (14)
end;
-function White: Integer;
+function White: CInteger;
begin
White := EGAColor (15)
end;
--- grx246/pascal/grx.pas.orig Sun Mar 28 23:15:23 2004
+++ grx246/pascal/grx.pas Fri Sep 17 19:17:49 2004
@@ -52,6 +52,11 @@
{$else}
{$define varasmname external; asmname}
{$endif}
+{$if __GPC_RELEASE__ < 20040917}
+type
+ CInteger = Integer;
+ CCardinal = Cardinal;
+{$endif}
const
MaxVarSize = MaxInt div 8;
@@ -70,7 +75,7 @@
{ This definition is compatible with the grx
definition 'int pts[][2]' used to define polygons }
PointType = record
- x, y: Integer;
+ x, y: CInteger
end;
const
@@ -94,9 +99,9 @@
Gr_Width_Height_Graphics = 6; { Integer w,Integer h }
Gr_Biggest_Noninterlaced_Graphics = 7;
Gr_Biggest_Graphics = 8;
- Gr_Width_Height_Color_Graphics = 9; { Integer w,Integer h,Word nc }
- Gr_Width_Height_Color_Text = 10; { Integer w,Integer h,Word nc }
- Gr_Custom_Graphics = 11; { Integer w,Integer h,Word nc,Integer vx,Integer vy }
+ Gr_Width_Height_Color_Graphics = 9; { Integer w,Integer h,Cardinal nc }
+ Gr_Width_Height_Color_Text = 10; { Integer w,Integer h,Cardinal nc }
+ Gr_Custom_Graphics = 11; { Integer w,Integer h,Cardinal nc,Integer vx,Integer vy }
{ ==== equivalent modes which do not clear the video memory ==== }
Gr_NC_80_25_Text = 12;
Gr_NC_Default_Text = 13;
@@ -107,17 +112,17 @@
Gr_NC_Width_Height_Graphics = 18; { Integer w,Integer h }
Gr_NC_Biggest_Noninterlaced_Graphics = 19;
Gr_NC_Biggest_Graphics = 20;
- Gr_NC_Width_Height_Color_Graphics = 21; { Integer w,Integer h,Word nc }
- Gr_NC_Width_Height_Color_Text = 22; { Integer w,Integer h,Word nc }
- Gr_NC_Custom_Graphics = 23; { Integer w,Integer h,Word nc,Integer vx,Integer vy }
+ Gr_NC_Width_Height_Color_Graphics = 21; { Integer w,Integer h,Cardinal nc }
+ Gr_NC_Width_Height_Color_Text = 22; { Integer w,Integer h,Cardinal nc }
+ Gr_NC_Custom_Graphics = 23; { Integer w,Integer h,Cardinal nc,Integer vx,Integer vy }
{ ==== plane instead of color based modes ==== }
{ colors = 1 << bpp >>> resort enum for GRX3 <<< }
- Gr_Width_Height_BPP_Graphics = 24; { int w,int h,int bpp }
- Gr_Width_Height_BPP_Text = 25; { int w,int h,int bpp }
- Gr_Custom_BPP_Graphics = 26; { int w,int h,int bpp,int vx,int vy }
- Gr_NC_Width_Height_BPP_Graphics = 27; { int w,int h,int bpp }
- Gr_NC_Width_Height_BPP_Text = 28; { int w,int h,int bpp }
- Gr_NC_Custom_BPP_Graphics = 29; { int w,int h,int bpp,int vx,int vy }
+ Gr_Width_Height_BPP_Graphics = 24; { Integer w,Integer h,Integer bpp }
+ Gr_Width_Height_BPP_Text = 25; { Integer w,Integer h,Integer bpp }
+ Gr_Custom_BPP_Graphics = 26; { Integer w,Integer h,Integer bpp,Integer vx,Integer vy }
+ Gr_NC_Width_Height_BPP_Graphics = 27; { Integer w,Integer h,Integer bpp }
+ Gr_NC_Width_Height_BPP_Text = 28; { Integer w,Integer h,Integer bpp }
+ Gr_NC_Custom_BPP_Graphics = 29; { Integer w,Integer h,Integer bpp,Integer vx,Integer vy }
{ Available frame modes (video memory layouts) }
@@ -195,27 +200,27 @@
GrVideoDriverPtr = ^GrVideoDriver;
GrVideoDriver = record
Name : CString; { driver name }
- Adapter : Integer; { adapter type }
+ Adapter : CInteger; { adapter type }
Inherit : GrVideoDriverPtr; { inherit video modes from this }
Modes : GrVideoModePtr; { table of supported modes }
- NModes : Integer; { number of modes }
- Detect : function: Integer;
- Init : function (Options: CString): Integer;
+ NModes : CInteger; { number of modes }
+ Detect : function: CInteger;
+ Init : function (Options: CString): CInteger;
Reset : procedure;
- SelectMode: function (Drv: GrVideoDriverPtr; w, h, BPP, txt: Integer; var ep: Cardinal): GrVideoModePtr;
- DrvFlags : Cardinal;
+ SelectMode: function (Drv: GrVideoDriverPtr; w, h, BPP, txt: CInteger; var ep: CCardinal): GrVideoModePtr;
+ DrvFlags : CCardinal
end;
{ Video driver mode descriptor structure }
{ struct _GR_videoMode }
GrVideoMode = record
- Present : ByteBool; { is it really available? }
- BPP : Byte; { log2 of # of colors }
- Width,Height: ShortInt; { video mode geometry }
- Mode : ShortInt; { BIOS mode number (if any) }
- LineOffset : Integer; { scan line length }
- PrivData : Integer; { driver can use it for anything }
- ExtInfo : ^GrVideoModeExt; { extra info (maybe shared) }
+ Present: ByteBool; { is it really available? }
+ BPP: Byte; { log2 of # of colors }
+ Width, Height, { video mode geometry }
+ Mode: ShortInt; { BIOS mode number (if any) }
+ LineOffset, { scan line length }
+ PrivData: CInteger; { driver can use it for anything }
+ ExtInfo: ^GrVideoModeExt { extra info (maybe shared) }
end;
{ Video driver mode descriptor extension structure. This is a separate
@@ -224,21 +229,21 @@
extended info. }
{ struct _GR_videoModeExt }
- Int2 = array [0 .. 1] of Integer;
+ Int2 = array [0 .. 1] of CInteger;
GrVideoModeExt = record
- Mode : Integer; { frame driver for this video mode }
+ Mode : CInteger; { frame driver for this video mode }
Drv : ^GrFrameDriver; { optional frame driver override }
Frame : MemPtr; { frame buffer address }
CPrec : array [1 .. 3] of ByteCard; { color component precisions }
CPos : array [1 .. 3] of ByteCard; { color component bit positions }
- Flags : Integer; { mode flag bits; see "grdriver.h" }
- Setup : function (var md: GrVideoMode; NoClear: Integer): Integer;
- SetVSize : function (var md: GrVideoMode; w, h: Integer; var Result: GrVideoMode): Integer;
- Scroll : function (var md: GrVideoMode; x, y: Integer; var Result: Int2): Integer;
- SetBank : procedure (bk: Integer);
- SetRWBanks : procedure (rb, wb: Integer);
- LoadColor : procedure (c, r, g, b: Integer);
- LFB_Selector: Integer;
+ Flags : CInteger; { mode flag bits; see "grdriver.h" }
+ Setup : function (var md: GrVideoMode; NoClear: CInteger): CInteger;
+ SetVSize : function (var md: GrVideoMode; w, h: CInteger; var Result: GrVideoMode): CInteger;
+ Scroll : function (var md: GrVideoMode; x, y: CInteger; var Result: Int2): CInteger;
+ SetBank : procedure (bk: CInteger);
+ SetRWBanks : procedure (rb, wb: CInteger);
+ LoadColor : procedure (c, r, g, b: CInteger);
+ LFB_Selector: CInteger
end;
GrFrameDriverPtr = ^GrFrameDriver;
@@ -248,59 +253,59 @@
gf_Selector : ShortInt; { frame memory segment selector }
gf_OnScreen : ByteBool; { is it in video memory ? }
gf_MemFlags : Byte; { memory allocation flags }
- gf_LineOffset: Integer; { offset to next scan line in bytes }
- gf_Driver : GrFrameDriverPtr; { frame access functions }
+ gf_LineOffset: CInteger; { offset to next scan line in bytes }
+ gf_Driver : GrFrameDriverPtr { frame access functions }
end;
{ The frame driver descriptor structure. }
{ struct _GR_frameDriver }
GrFrameDriver = record
- Mode : Integer; { supported frame access mode }
- RMode : Integer; { matching RAM frame (if video) }
- Is_Video : Integer; { video RAM frame driver ? }
- Row_Align : Integer; { scan line size alignment }
- Num_Planes : Integer; { number of planes }
- Bits_Per_Pixel : Integer; { bits per pixel }
- Max_Plane_Size : MedInt; { maximum plane size in bytes }
- Init : function (var md: GrVideoMode): Integer;
- ReadPixel : function (var c: GrFrameType; x, y: Integer): GrColor;
- DrawPixel : procedure (x, y: Integer; c: GrColor);
- DrawLine : procedure (x, y, dx, dy: Integer; c: GrColor);
- DrawHLine : procedure (x, y, w: Integer; c: GrColor);
- DrawVLine : procedure (x, y, h: Integer; c: GrColor);
- DrawBlock : procedure (x, y, w, h: Integer; c: GrColor);
- DrawBitmap : procedure (x, y, w, h: Integer; BMP: MemPtr; Pitch, Start: Integer; fg, bg: GrColor);
- DrawPattern : procedure (x, y, w: Integer; Patt: Byte; fg, bg: GrColor);
- BitBlt : procedure (var Dst: GrFrameType; dx, dy: Integer; var Src: GrFrameType; x, y, w, h: Integer; Op: GrColor);
- BltV2R : procedure (var Dst: GrFrameType; dx, dy: Integer; var Src: GrFrameType; x, y, w, h: Integer; Op: GrColor);
- BltR2V : procedure (var Dst: GrFrameType; dx, dy: Integer; var Src: GrFrameType; x, y, w, h: Integer; Op: GrColor);
- GetIndexedScanline: function (var c: GrFrameType; x, y, w: Integer; var Index: Integer): GrColorsPtr;
- PutScanLine : procedure (x, y, w: Integer; scl: GrColorsPtr; Op: GrColor);
+ Mode, { supported frame access mode }
+ RMode, { matching RAM frame (if video) }
+ Is_Video, { video RAM frame driver ? }
+ Row_Align, { scan line size alignment }
+ Num_Planes, { number of planes }
+ Bits_Per_Pixel : CInteger; { bits per pixel }
+ Max_Plane_Size : MedInt; { maximum plane size in bytes }
+ Init : function (var md: GrVideoMode): CInteger;
+ ReadPixel : function (var c: GrFrameType; x, y: CInteger): GrColor;
+ DrawPixel : procedure (x, y: CInteger; c: GrColor);
+ DrawLine : procedure (x, y, dx, dy: CInteger; c: GrColor);
+ DrawHLine : procedure (x, y, w: CInteger; c: GrColor);
+ DrawVLine : procedure (x, y, h: CInteger; c: GrColor);
+ DrawBlock : procedure (x, y, w, h: CInteger; c: GrColor);
+ DrawBitmap : procedure (x, y, w, h: CInteger; BMP: MemPtr; Pitch, Start: CInteger; fg, bg: GrColor);
+ DrawPattern : procedure (x, y, w: CInteger; Patt: Byte; fg, bg: GrColor);
+ BitBlt : procedure (var Dst: GrFrameType; dx, dy: CInteger; var Src: GrFrameType; x, y, w, h: CInteger; Op: GrColor);
+ BltV2R : procedure (var Dst: GrFrameType; dx, dy: CInteger; var Src: GrFrameType; x, y, w, h: CInteger; Op: GrColor);
+ BltR2V : procedure (var Dst: GrFrameType; dx, dy: CInteger; var Src: GrFrameType; x, y, w, h: CInteger; Op: GrColor);
+ GetIndexedScanline: function (var c: GrFrameType; x, y, w: CInteger; var Index: CInteger): GrColorsPtr;
+ PutScanLine : procedure (x, y, w: CInteger; scl: GrColorsPtr; Op: GrColor);
end;
{ driver and mode info structure }
{ extern const struct _GR_driverInfo }
GrDriverInfoType = record
- VDriver : GrVideoDriverPtr; { the current video driver }
- CurMode : GrVideoModePtr; { current video mode pointer }
- ActMode : GrVideoMode; { copy of above, resized if virtual }
- FDriver : GrFrameDriver; { frame driver for the current context }
- SDriver : GrFrameDriver; { frame driver for the screen }
- TDriver : GrFrameDriver; { a dummy driver for text modes }
- MCode : Integer; { code for the current mode }
- DefTW,DefTH: Integer; { default text mode size }
- DefGW,DefGH: Integer; { default graphics mode size }
- DefTC,DefGC: GrColor; { default text and graphics colors }
- VPosX,VPosY: Integer; { current virtual viewport position }
- ErrsFatal : Integer; { if set, exit upon errors }
- ModeRestore: Integer; { restore startup video mode if set }
- SplitBanks : Integer; { indicates separate R/W banks }
- CurBank : Integer; { currently mapped bank }
- MdSetHook : procedure; { callback for mode set }
- SetBank : procedure (bk: Integer); { banking routine }
- SetRWBanks : procedure (rb, wb: Integer); { split banking routine }
+ VDriver : GrVideoDriverPtr; { the current video driver }
+ CurMode : GrVideoModePtr; { current video mode pointer }
+ ActMode : GrVideoMode; { copy of above, resized if virtual }
+ FDriver, { frame driver for the current context }
+ SDriver, { frame driver for the screen }
+ TDriver : GrFrameDriver; { a dummy driver for text modes }
+ MCode, { code for the current mode }
+ DefTW,DefTH, { default text mode size }
+ DefGW,DefGH: CInteger; { default graphics mode size }
+ DefTC,DefGC: GrColor; { default text and graphics colors }
+ VPosX,VPosY, { current virtual viewport position }
+ ErrsFatal, { if set, exit upon errors }
+ ModeRestore, { restore startup video mode if set }
+ SplitBanks, { indicates separate R/W banks }
+ CurBank : CInteger; { currently mapped bank }
+ MdSetHook : procedure; { callback for mode set }
+ SetBank : procedure (bk: CInteger); { banking routine }
+ SetRWBanks : procedure (rb, wb: CInteger); { split banking routine }
end;
var
@@ -308,26 +313,26 @@
{ setup stuff }
-function GrSetDriver(DrvSpec: CString):Integer; asmname 'GrSetDriver';
-function GrSetMode(m, w, h, nc, vx, vy:Integer):Integer; asmname 'GrSetMode';
-function GrSetViewport(XPos, YPos: Integer):Integer; asmname 'GrSetViewport';
+function GrSetDriver(DrvSpec: CString):CInteger; asmname 'GrSetDriver';
+function GrSetMode(m, w, h, nc, vx, vy:CInteger):CInteger; asmname 'GrSetMode';
+function GrSetViewport(XPos, YPos: CInteger):CInteger; asmname 'GrSetViewport';
procedure GrSetModeHook(HookFunc:Pointer); asmname 'GrSetModeHook';
procedure GrSetModeRestore(RestoreFlag:Boolean); asmname 'GrSetModeRestore';
procedure GrSetErrorHandling(ExitIfError:Boolean); asmname 'GrSetErrorHandling';
-procedure GrSetEGAVGAmonoDrawnPlane(Plane:Integer); asmname 'GrSetEGAVGAmonoDrawnPlane';
-procedure GrSetEGAVGAmonoShownPlane(Plane:Integer); asmname 'GrSetEGAVGAmonoShownPlane';
+procedure GrSetEGAVGAmonoDrawnPlane(Plane:CInteger); asmname 'GrSetEGAVGAmonoDrawnPlane';
+procedure GrSetEGAVGAmonoShownPlane(Plane:CInteger); asmname 'GrSetEGAVGAmonoShownPlane';
-function GrGetLibraryVersion: Integer; asmname 'GrGetLibraryVersion';
-function GrGetLibrarySystem: Integer; asmname 'GrGetLibrarySystem';
+function GrGetLibraryVersion: CInteger; asmname 'GrGetLibraryVersion';
+function GrGetLibrarySystem: CInteger; asmname 'GrGetLibrarySystem';
{ inquiry stuff ---- many of these can be macros }
-function GrCurrentMode:Integer; asmname 'GrCurrentMode';
-function GrAdapterType:Integer; asmname 'GrAdapterType';
-function GrCurrentFrameMode:Integer; asmname 'GrCurrentFrameMode';
-function GrScreenFrameMode:Integer; asmname 'GrScreenFrameMode';
-function GrCoreFrameMode:Integer; asmname 'GrCoreFrameMode';
+function GrCurrentMode:CInteger; asmname 'GrCurrentMode';
+function GrAdapterType:CInteger; asmname 'GrAdapterType';
+function GrCurrentFrameMode:CInteger; asmname 'GrCurrentFrameMode';
+function GrScreenFrameMode:CInteger; asmname 'GrScreenFrameMode';
+function GrCoreFrameMode:CInteger; asmname 'GrCoreFrameMode';
function GrCurrentVideoDriver: GrVideoDriverPtr; asmname 'GrCurrentVideoDriver' ;
function GrCurrentVideoMode:GrVideoModePtr; asmname 'GrCurrentVideoMode';
@@ -335,28 +340,28 @@
function GrCurrentFrameDriver: GrFrameDriverPtr; asmname 'GrCurrentFrameDriver';
function GrScreenFrameDriver: GrFrameDriverPtr; asmname 'GrScreenFrameDriver';
-function GrFirstVideoMode(FMode:Integer):GrVideoModePtr; asmname 'GrFirstVideoMode';
+function GrFirstVideoMode(FMode:CInteger):GrVideoModePtr; asmname 'GrFirstVideoMode';
function GrNextVideoMode(Prev:GrVideoModePtr):GrVideoModePtr; asmname 'GrNextVideoMode';
-function GrScreenX:Integer; asmname 'GrScreenX';
-function GrScreenY:Integer; asmname 'GrScreenY';
-function GrVirtualX:Integer; asmname 'GrVirtualX';
-function GrVirtualY:Integer; asmname 'GrVirtualY';
-function GrViewportX:Integer; asmname 'GrViewportX';
-function GrViewportY:Integer; asmname 'GrViewportY';
+function GrScreenX:CInteger; asmname 'GrScreenX';
+function GrScreenY:CInteger; asmname 'GrScreenY';
+function GrVirtualX:CInteger; asmname 'GrVirtualX';
+function GrVirtualY:CInteger; asmname 'GrVirtualY';
+function GrViewportX:CInteger; asmname 'GrViewportX';
+function GrViewportY:CInteger; asmname 'GrViewportY';
function GrScreenIsVirtual:Boolean; asmname 'GrScreenIsVirtual';
{ RAM context geometry and memory allocation inquiry stuff }
-function GrFrameNumPlanes(md:Integer):Integer; asmname 'GrFrameNumPlanes';
-function GrFrameLineOffset(md,Width:Integer):Integer; asmname 'GrFrameLineOffset';
-function GrFramePlaneSize(md,w,h:Integer):Integer; asmname 'GrFramePlaneSize';
-function GrFrameContextSize(md,w,h:Integer):Integer; asmname 'GrFrameContextSize';
-
-function GrNumPlanes:Integer; asmname 'GrNumPlanes';
-function GrLineOffset(Width:Integer):Integer; asmname 'GrLineOffset';
-function GrPlaneSize(w,h:Integer):Integer; asmname 'GrPlaneSize';
-function GrContextSize(w,h:Integer):Integer; asmname 'GrContextSize';
+function GrFrameNumPlanes(md:CInteger):CInteger; asmname 'GrFrameNumPlanes';
+function GrFrameLineOffset(md,Width:CInteger):CInteger; asmname 'GrFrameLineOffset';
+function GrFramePlaneSize(md,w,h:CInteger):CInteger; asmname 'GrFramePlaneSize';
+function GrFrameContextSize(md,w,h:CInteger):CInteger; asmname 'GrFrameContextSize';
+
+function GrNumPlanes:CInteger; asmname 'GrNumPlanes';
+function GrLineOffset(Width:CInteger):CInteger; asmname 'GrLineOffset';
+function GrPlaneSize(w,h:CInteger):CInteger; asmname 'GrPlaneSize';
+function GrContextSize(w,h:CInteger):CInteger; asmname 'GrContextSize';
{ ==================================================================
FRAME BUFFER, CONTEXT AND CLIPPING STUFF
@@ -366,54 +371,54 @@
{ struct _GR_context }
GrContextPtr = ^GrContext;
GrContext = record
- gc_Frame : GrFrameType; { frame buffer info }
- gc_Root : GrContextPtr; { context which owns frame }
- gc_XMax : Integer; { max X coord (width - 1) }
- gc_YMax : Integer; { max Y coord (height - 1) }
- gc_XOffset : Integer; { X offset from root's base }
- gc_YOffset : Integer; { Y offset from root's base }
- gc_XClipLo : Integer; { low X clipping limit }
- gc_YClipLo : Integer; { low Y clipping limit }
- gc_XClipHi : Integer; { high X clipping limit }
- gc_YClipHi : Integer; { high Y clipping limit }
- gc_UsrXBase : Integer; { user window min X coordinate }
- gc_UsrYBase : Integer; { user window min Y coordinate }
- gc_UsrWidth : Integer; { user window width }
- gc_UsrHeight: Integer; { user window height }
+ gc_Frame: GrFrameType; { frame buffer info }
+ gc_Root: GrContextPtr; { context which owns frame }
+ gc_XMax, { max X coord (width - 1) }
+ gc_YMax, { max Y coord (height - 1) }
+ gc_XOffset, { X offset from root's base }
+ gc_YOffset, { Y offset from root's base }
+ gc_XClipLo, { low X clipping limit }
+ gc_YClipLo, { low Y clipping limit }
+ gc_XClipHi, { high X clipping limit }
+ gc_YClipHi, { high Y clipping limit }
+ gc_UsrXBase, { user window min X coordinate }
+ gc_UsrYBase, { user window min Y coordinate }
+ gc_UsrWidth, { user window width }
+ gc_UsrHeight: CInteger { user window height }
end;
{ extern const struct _GR_contextInfo }
GrContextInfoType = record
- Current: GrContext; { the current context }
- Screen : GrContext; { the screen context }
+ Current, { the current context }
+ Screen: GrContext { the screen context }
end;
var
GrContextInfo: GrContextInfoType; varasmname 'GrContextInfo';
-function GrCreateContext(w, h: Integer; Memory: MemPtr; Where: GrContextPtr): GrContextPtr; asmname 'GrCreateContext';
-function GrCreateFrameContext(md: ByteCard; w, h: Integer; Memory: MemPtr; Where: GrContextPtr): GrContextPtr; asmname 'GrCreateFrameContext';
-function GrCreateSubContext(x1, y1, x2, y2: Integer; Parent, Where: GrContextPtr): GrContextPtr; asmname 'GrCreateSubContext';
+function GrCreateContext(w, h: CInteger; Memory: MemPtr; Where: GrContextPtr): GrContextPtr; asmname 'GrCreateContext';
+function GrCreateFrameContext(md: ByteCard; w, h: CInteger; Memory: MemPtr; Where: GrContextPtr): GrContextPtr; asmname 'GrCreateFrameContext';
+function GrCreateSubContext(x1, y1, x2, y2: CInteger; Parent, Where: GrContextPtr): GrContextPtr; asmname 'GrCreateSubContext';
function GrSaveContext(Where: GrContextPtr): GrContextPtr; asmname 'GrSaveContext';
function GrCurrentContext: GrContextPtr; asmname 'GrCurrentContext';
function GrScreenContext: GrContextPtr; asmname 'GrScreenContext';
procedure GrDestroyContext(Context: GrContextPtr); asmname 'GrDestroyContext';
-procedure GrResizeSubContext(Context: GrContextPtr; x1, y1, x2, y2: Integer); asmname 'GrResizeSubContext';
+procedure GrResizeSubContext(Context: GrContextPtr; x1, y1, x2, y2: CInteger); asmname 'GrResizeSubContext';
procedure GrSetContext(Context: GrContextPtr); asmname 'GrSetContext';
-procedure GrSetClipBox(x1, y1, x2, y2:Integer); asmname 'GrSetClipBox';
-procedure GrGetClipBox(var x1p, y1p, x2p, y2p: Integer); asmname 'GrGetClipBox';
+procedure GrSetClipBox(x1, y1, x2, y2:CInteger); asmname 'GrSetClipBox';
+procedure GrGetClipBox(var x1p, y1p, x2p, y2p: CInteger); asmname 'GrGetClipBox';
procedure GrResetClipBox; asmname 'GrResetClipBox';
-function GrMaxX: Integer; asmname 'GrMaxX';
-function GrMaxY: Integer; asmname 'GrMaxY';
-function GrSizeX:Integer; asmname 'GrSizeX';
-function GrSizeY:Integer; asmname 'GrSizeY';
-function GrLowX: Integer; asmname 'GrLowX';
-function GrLowY: Integer; asmname 'GrLowY';
-function GrHighX:Integer; asmname 'GrHighX';
-function GrHighY:Integer; asmname 'GrHighY';
+function GrMaxX: CInteger; asmname 'GrMaxX';
+function GrMaxY: CInteger; asmname 'GrMaxY';
+function GrSizeX:CInteger; asmname 'GrSizeX';
+function GrSizeY:CInteger; asmname 'GrSizeY';
+function GrLowX: CInteger; asmname 'GrLowX';
+function GrLowY: CInteger; asmname 'GrLowY';
+function GrHighX:CInteger; asmname 'GrHighX';
+function GrHighY:CInteger; asmname 'GrHighY';
{ ==================================================================
COLOR STUFF
@@ -449,71 +454,71 @@
function GrBlack:GrColor; asmname 'GrBlack';
function GrWhite:GrColor; asmname 'GrWhite';
-function GrBuildRGBcolorT(r,g,b:Integer):GrColor; asmname 'GrBuildRGBcolorT';
-function GrBuildRGBcolorR(r,g,b:Integer):GrColor; asmname 'GrBuildRGBcolorR';
-function GrRGBcolorRed(c:GrColor):Integer ; asmname 'GrRGBcolorRed';
-function GrRGBcolorGreen(c:GrColor):Integer ; asmname 'GrRGBcolorGreen';
-function GrRGBcolorBlue(c:GrColor):Integer ; asmname 'GrRGBcolorBlue';
+function GrBuildRGBcolorT(r,g,b:CInteger):GrColor; asmname 'GrBuildRGBcolorT';
+function GrBuildRGBcolorR(r,g,b:CInteger):GrColor; asmname 'GrBuildRGBcolorR';
+function GrRGBcolorRed(c:GrColor):CInteger ; asmname 'GrRGBcolorRed';
+function GrRGBcolorGreen(c:GrColor):CInteger ; asmname 'GrRGBcolorGreen';
+function GrRGBcolorBlue(c:GrColor):CInteger ; asmname 'GrRGBcolorBlue';
-function GrAllocColor(r,g,b:Integer):GrColor; asmname 'GrAllocColor'; { shared, read-only }
-function GrAllocColorID(r,g,b:Integer):GrColor; asmname 'GrAllocColorID'; { potentially inlined version }
+function GrAllocColor(r,g,b:CInteger):GrColor; asmname 'GrAllocColor'; { shared, read-only }
+function GrAllocColorID(r,g,b:CInteger):GrColor; asmname 'GrAllocColorID'; { potentially inlined version }
function GrAllocCell:GrColor; asmname 'GrAllocCell'; { unshared, read-write }
function GrAllocEgaColors:GrColorsPtr; asmname 'GrAllocEgaColors'; { shared, read-only standard EGA colors }
-procedure GrSetColor(c:GrColor; r,g,b:Integer); asmname 'GrSetColor';
+procedure GrSetColor(c:GrColor; r,g,b:CInteger); asmname 'GrSetColor';
procedure GrFreeColor(c:GrColor); asmname 'GrFreeColor';
procedure GrFreeCell(c:GrColor); asmname 'GrFreeCell';
-procedure GrQueryColor(c:GrColor; var r,g,b:Integer); asmname 'GrQueryColor';
-procedure GrQueryColorID(c:GrColor; var r,g,b:Integer); asmname 'GrQueryColorID';
+procedure GrQueryColor(c:GrColor; var r,g,b:CInteger); asmname 'GrQueryColor';
+procedure GrQueryColorID(c:GrColor; var r,g,b:CInteger); asmname 'GrQueryColorID';
-function GrColorSaveBufferSize:Integer ; asmname 'GrColorSaveBufferSize';
+function GrColorSaveBufferSize:CInteger ; asmname 'GrColorSaveBufferSize';
procedure GrSaveColors(Buffer:Pointer); asmname 'GrSaveColors';
procedure GrRestoreColors(Buffer:Pointer); asmname 'GrRestoreColors';
type
- { typedef struct } { framed box colors }
+ { framed box colors }
GrFBoxColors = record
- fbx_IntColor : GrColor;
- fbx_TopColor : GrColor;
- fbx_RightColor : GrColor;
- fbx_BottomColor: GrColor;
- fbx_LeftColor : GrColor;
+ fbx_IntColor,
+ fbx_TopColor,
+ fbx_RightColor,
+ fbx_BottomColor,
+ fbx_LeftColor: GrColor
end;
procedure GrClearScreen(bg:GrColor); asmname 'GrClearScreen';
procedure GrClearClipBox(bg:GrColor); asmname 'GrClearClipBox';
-procedure GrPlot(x, y: Integer; c:GrColor); asmname 'GrPlot';
-procedure GrLine(x1, y1, x2, y2: Integer; c:GrColor); asmname 'GrLine';
-procedure GrHLine(x1, x2, y:Integer; c:GrColor); asmname 'GrHLine';
-procedure GrVLine(x, y1, y2: Integer; c: GrColor); asmname 'GrVLine';
-procedure GrBox(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrBox';
-procedure GrFilledBox(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrFilledBox';
-procedure GrFramedBox(x1, y1, x2, y2, Wdt: Integer; protected var c: GrFBoxColors); asmname 'GrFramedBox';
-function GrGenerateEllipse(xc, yc, xa, ya:Integer; var Points{ : array of PointType }):Integer; asmname 'GrGenerateEllipse';
-function GrGenerateEllipseArc(xc, yc, xa, ya, Start, Ende: Integer; var Points{ : array of PointType }):Integer; asmname 'GrGenerateEllipseArc';
-procedure GrLastArcCoords(var xs, ys, xe, ye, xc, yc: Integer); asmname 'GrLastArcCoords';
-procedure GrCircle(xc, yc, r: Integer; c: GrColor); asmname 'GrCircle';
-procedure GrEllipse(xc, yc, xa, ya: Integer; c: GrColor); asmname 'GrEllipse';
-procedure GrCircleArc(xc, yc, r, Start, Ende, Style: Integer; c: GrColor); asmname 'GrCircleArc';
-procedure GrEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; c: GrColor); asmname 'GrEllipseArc';
-procedure GrFilledCircle(xc, yc, r: Integer; c: GrColor); asmname 'GrFilledCircle';
-procedure GrFilledEllipse(xc, yc, xa, ya: Integer; c: GrColor); asmname 'GrFilledEllipse';
-procedure GrFilledCircleArc(xc, yc, r, Start, Ende, Style: Integer; c: GrColor); asmname 'GrFilledCircleArc';
-procedure GrFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; c: GrColor); asmname 'GrFilledEllipseArc';
-procedure GrPolyLine(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrPolyLine';
-procedure GrPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrPolygon';
-procedure GrFilledConvexPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrFilledConvexPolygon';
-procedure GrFilledPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrFilledPolygon';
-procedure GrBitBlt(Dest: GrContextPtr; x, y: Integer; Src: GrContextPtr; x1, y1, x2, y2: Integer; Op: GrColor); asmname 'GrBitBlt';
-function GrPixel(x, y:Integer):GrColor; asmname 'GrPixel';
-function GrPixelC(c: GrContextPtr; x, y: Integer): GrColor; asmname 'GrPixelC';
+procedure GrPlot(x, y: CInteger; c:GrColor); asmname 'GrPlot';
+procedure GrLine(x1, y1, x2, y2: CInteger; c:GrColor); asmname 'GrLine';
+procedure GrHLine(x1, x2, y:CInteger; c:GrColor); asmname 'GrHLine';
+procedure GrVLine(x, y1, y2: CInteger; c: GrColor); asmname 'GrVLine';
+procedure GrBox(x1, y1, x2, y2: CInteger; c: GrColor); asmname 'GrBox';
+procedure GrFilledBox(x1, y1, x2, y2: CInteger; c: GrColor); asmname 'GrFilledBox';
+procedure GrFramedBox(x1, y1, x2, y2, Wdt: CInteger; protected var c: GrFBoxColors); asmname 'GrFramedBox';
+function GrGenerateEllipse(xc, yc, xa, ya:CInteger; var Points{ : array of PointType }):CInteger; asmname 'GrGenerateEllipse';
+function GrGenerateEllipseArc(xc, yc, xa, ya, Start, Ende: CInteger; var Points{ : array of PointType }):CInteger; asmname 'GrGenerateEllipseArc';
+procedure GrLastArcCoords(var xs, ys, xe, ye, xc, yc: CInteger); asmname 'GrLastArcCoords';
+procedure GrCircle(xc, yc, r: CInteger; c: GrColor); asmname 'GrCircle';
+procedure GrEllipse(xc, yc, xa, ya: CInteger; c: GrColor); asmname 'GrEllipse';
+procedure GrCircleArc(xc, yc, r, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrCircleArc';
+procedure GrEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrEllipseArc';
+procedure GrFilledCircle(xc, yc, r: CInteger; c: GrColor); asmname 'GrFilledCircle';
+procedure GrFilledEllipse(xc, yc, xa, ya: CInteger; c: GrColor); asmname 'GrFilledEllipse';
+procedure GrFilledCircleArc(xc, yc, r, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrFilledCircleArc';
+procedure GrFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrFilledEllipseArc';
+procedure GrPolyLine(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrPolyLine';
+procedure GrPolygon(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrPolygon';
+procedure GrFilledConvexPolygon(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrFilledConvexPolygon';
+procedure GrFilledPolygon(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrFilledPolygon';
+procedure GrBitBlt(Dest: GrContextPtr; x, y: CInteger; Src: GrContextPtr; x1, y1, x2, y2: CInteger; Op: GrColor); asmname 'GrBitBlt';
+function GrPixel(x, y:CInteger):GrColor; asmname 'GrPixel';
+function GrPixelC(c: GrContextPtr; x, y: CInteger): GrColor; asmname 'GrPixelC';
-procedure GrFloodFill(x, y: Integer; Border, c: GrColor); asmname 'GrFloodFill';
+procedure GrFloodFill(x, y: CInteger; Border, c: GrColor); asmname 'GrFloodFill';
-function GrGetScanline(x1,x2,yy: Integer): GrColorsPtr; asmname 'GrGetScanline';
-function GrGetScanlineC(ctx: GrContextPtr; x1,x2,yy: Integer): GrColorsPtr; asmname 'GrGetScanlineC';
+function GrGetScanline(x1,x2,yy: CInteger): GrColorsPtr; asmname 'GrGetScanline';
+function GrGetScanlineC(ctx: GrContextPtr; x1,x2,yy: CInteger): GrColorsPtr; asmname 'GrGetScanlineC';
{ Input ctx: source context, if NULL the current context is used }
{ x1 : first x coordinate read }
{ x2 : last x coordinate read }
@@ -524,7 +529,7 @@
{ (w = |x2-y1|) }
{ Output data is valid until next GRX call ! }
-procedure GrPutScanline(x1,x2,yy: Integer;c: GrColorsPtr; Op: GrColor); asmname 'GrPutScanline';
+procedure GrPutScanline(x1,x2,yy: CInteger;c: GrColorsPtr; Op: GrColor); asmname 'GrPutScanline';
{ Input x1: first x coordinate to be set }
{ x2: last x coordinate to be set }
{ yy: y coordinate }
@@ -540,16 +545,16 @@
NON CLIPPING DRAWING PRIMITIVES
================================================================== }
-procedure GrPlotNC(x, y: Integer; c: GrColor); asmname 'GrPlotNC';
-procedure GrLineNC(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrLineNC';
-procedure GrHLineNC(x1, x2, y: Integer; c: GrColor); asmname 'GrHLineNC';
-procedure GrVLineNC(x, y1, y2: Integer; c: GrColor); asmname 'GrVLineNC';
-procedure GrBoxNC(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrBoxNC';
-procedure GrFilledBoxNC(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrFilledBoxNC';
-procedure GrFramedBoxNC(x1, y1, x2, y2, Wdt: Integer; protected var c: GrFBoxColors); asmname 'GrFramedBoxNC';
-procedure GrBitBltNC(Dest: GrContextPtr; x, y: Integer; Src: GrContextPtr; x1, y1, x2, y2: Integer; Op: GrColor); asmname 'GrBitBltNC';
-function GrPixelNC(x, y:Integer):GrColor; asmname 'GrPixelNC';
-function GrPixelCNC(c: GrContextPtr; x, y: Integer): GrColor; asmname 'GrPixelCNC';
+procedure GrPlotNC(x, y: CInteger; c: GrColor); asmname 'GrPlotNC';
+procedure GrLineNC(x1, y1, x2, y2: CInteger; c: GrColor); asmname 'GrLineNC';
+procedure GrHLineNC(x1, x2, y: CInteger; c: GrColor); asmname 'GrHLineNC';
+procedure GrVLineNC(x, y1, y2: CInteger; c: GrColor); asmname 'GrVLineNC';
+procedure GrBoxNC(x1, y1, x2, y2: CInteger; c: GrColor); asmname 'GrBoxNC';
+procedure GrFilledBoxNC(x1, y1, x2, y2: CInteger; c: GrColor); asmname 'GrFilledBoxNC';
+procedure GrFramedBoxNC(x1, y1, x2, y2, Wdt: CInteger; protected var c: GrFBoxColors); asmname 'GrFramedBoxNC';
+procedure GrBitBltNC(Dest: GrContextPtr; x, y: CInteger; Src: GrContextPtr; x1, y1, x2, y2: CInteger; Op: GrColor); asmname 'GrBitBltNC';
+function GrPixelNC(x, y:CInteger):GrColor; asmname 'GrPixelNC';
+function GrPixelCNC(c: GrContextPtr; x, y: CInteger): GrColor; asmname 'GrPixelCNC';
{ ==================================================================
FONTS AND TEXT PRIMITIVES
@@ -593,41 +598,41 @@
{ font structures }
type
- { typedef struct _GR_fontHeader } { font descriptor }
+ { font descriptor }
GrFontHeader = record
- Name : CString; { font name }
- Family : CString; { font family name }
- Proportional: ByteBool; { characters have varying width }
- Scalable : ByteBool; { derived from a scalable font }
- Preloaded : ByteBool; { set when linked Integero program }
- Modified : ByteBool; { "tweaked" font (resized, etc..) }
- Width : Cardinal; { width (proportional=>average) }
- Height : Cardinal; { font height }
- Baseline : Cardinal; { baseline pixel pos (from top) }
- ULPos : Cardinal; { underline pixel pos (from top) }
- ULHeight : Cardinal; { underline width }
- MinChar : Cardinal; { lowest character code in font }
- NumChars : Cardinal; { number of characters in font }
+ Name, { font name }
+ Family: CString; { font family name }
+ Proportional, { characters have varying width }
+ Scalable, { derived from a scalable font }
+ Preloaded, { set when linked Integero program }
+ Modified: ByteBool; { "tweaked" font (resized, etc..) }
+ Width, { width (proportional=>average) }
+ Height, { font height }
+ Baseline, { baseline pixel pos (from top) }
+ ULPos, { underline pixel pos (from top) }
+ ULHeight, { underline width }
+ MinChar, { lowest character code in font }
+ NumChars: CCardinal { number of characters in font }
end;
- { typedef struct _GR_fontChrInfo } { character descriptor }
+ { character descriptor }
GrFontChrInfo = record
- Width : Cardinal; { width of this character }
- Offset: Cardinal; { offset from start of bitmap }
+ Width, { width of this character }
+ Offset: CCardinal { offset from start of bitmap }
end;
- { typedef struct _GR_font } { the complete font }
- AuxOffsType = array [0 .. 6] of Integer;
+ { the complete font }
+ AuxOffsType = array [0 .. 6] of CInteger;
GrFont = record
- h : GrFontHeader; { the font info structure }
- BitMap : MemPtr; { character bitmap array }
- AuxMap : MemPtr; { map for rotated & underline chrs }
- MinWidth: Cardinal; { width of narrowest character }
- MaxWidth: Cardinal; { width of widest character }
- AuxSize : Cardinal; { allocated size of auxiliary map }
- AuxNext : Cardinal; { next free byte in auxiliary map }
- AuxOffs : ^AuxOffsType; { offsets to completed aux chars }
- ChrInfo : array [1 .. 1] of GrFontChrInfo; { character info (not act. size) }
+ h: GrFontHeader; { the font info structure }
+ BitMap, { character bitmap array }
+ AuxMap: MemPtr; { map for rotated & underline chrs }
+ MinWidth, { width of narrowest character }
+ MaxWidth, { width of widest character }
+ AuxSize, { allocated size of auxiliary map }
+ AuxNext: CCardinal; { next free byte in auxiliary map }
+ AuxOffs: ^AuxOffsType; { offsets to completed aux chars }
+ ChrInfo: array [1 .. 1] of GrFontChrInfo { character info (not act. size) }
end;
GrFontPtr = ^GrFont;
@@ -639,74 +644,74 @@
GrDefaultFont: GrFont; varasmname 'GrFont_PC8x14';
function GrLoadFont(FontName: CString): GrFontPtr; asmname 'GrLoadFont';
-function GrLoadConvertedFont(FontName: CString; cvt, w, h, MinCh, MaxCh: Integer): GrFontPtr; asmname 'GrLoadConvertedFont';
-function GrBuildConvertedFont(protected var From: GrFont; cvt, w, h, MinCh, MaxCh: Integer): GrFontPtr; asmname 'GrBuildConvertedFont';
+function GrLoadConvertedFont(FontName: CString; cvt, w, h, MinCh, MaxCh: CInteger): GrFontPtr; asmname 'GrLoadConvertedFont';
+function GrBuildConvertedFont(protected var From: GrFont; cvt, w, h, MinCh, MaxCh: CInteger): GrFontPtr; asmname 'GrBuildConvertedFont';
procedure GrUnloadFont(var Font: GrFont); asmname 'GrUnloadFont';
procedure GrDumpFont(protected var f: GrFont; CsymbolName, FileName: CString); asmname 'GrDumpFont';
procedure GrSetFontPath(path_list: CString); asmname 'GrSetFontPath';
-function GrFontCharPresent(protected var Font: GrFont; Chr: Integer): Boolean; asmname 'GrFontCharPresent';
-function GrFontCharWidth(protected var Font: GrFont; Chr: Integer): Integer; asmname 'GrFontCharWidth';
-function GrFontCharHeight(protected var Font: GrFont; Chr: Integer): Integer; asmname 'GrFontCharHeight';
-function GrFontCharBmpRowSize(protected var Font: GrFont; Chr: Integer): Integer; asmname 'GrFontCharBmpRowSize';
-function GrFontCharBitmapSize(protected var Font: GrFont; Chr: Integer): Integer; asmname 'GrFontCharBitmapSize';
-function GrFontStringWidth(protected var Font: GrFont; Text: CString; Len, Typ_e: Integer): Integer; asmname 'GrFontStringWidth';
-function GrFontStringHeight(protected var Font: GrFont; Text: CString; Len, Typ_e: Integer): Integer; asmname 'GrFontStringHeight';
-function GrProportionalTextWidth(protected var Font: GrFont; Text: CString; Len, Typ_e: Integer): Integer; asmname 'GrProportionalTextWidth';
-function GrBuildAuxiliaryBitmap(var Font: GrFont; Chr, Dir, ul: Integer): MemPtr; asmname 'GrBuildAuxiliaryBitmap';
-function GrFontCharBitmap(protected var Font: GrFont; Chr: Integer): MemPtr; asmname 'GrFontCharBitmap';
-function GrFontCharAuxBmp(var Font: GrFont; Chr, Dir, ul: Integer): MemPtr; asmname 'GrFontCharAuxBmp';
+function GrFontCharPresent(protected var Font: GrFont; Chr: CInteger): Boolean; asmname 'GrFontCharPresent';
+function GrFontCharWidth(protected var Font: GrFont; Chr: CInteger): CInteger; asmname 'GrFontCharWidth';
+function GrFontCharHeight(protected var Font: GrFont; Chr: CInteger): CInteger; asmname 'GrFontCharHeight';
+function GrFontCharBmpRowSize(protected var Font: GrFont; Chr: CInteger): CInteger; asmname 'GrFontCharBmpRowSize';
+function GrFontCharBitmapSize(protected var Font: GrFont; Chr: CInteger): CInteger; asmname 'GrFontCharBitmapSize';
+function GrFontStringWidth(protected var Font: GrFont; Text: CString; Len, Typ_e: CInteger): CInteger; asmname 'GrFontStringWidth';
+function GrFontStringHeight(protected var Font: GrFont; Text: CString; Len, Typ_e: CInteger): CInteger; asmname 'GrFontStringHeight';
+function GrProportionalTextWidth(protected var Font: GrFont; Text: CString; Len, Typ_e: CInteger): CInteger; asmname 'GrProportionalTextWidth';
+function GrBuildAuxiliaryBitmap(var Font: GrFont; Chr, Dir, ul: CInteger): MemPtr; asmname 'GrBuildAuxiliaryBitmap';
+function GrFontCharBitmap(protected var Font: GrFont; Chr: CInteger): MemPtr; asmname 'GrFontCharBitmap';
+function GrFontCharAuxBmp(var Font: GrFont; Chr, Dir, ul: CInteger): MemPtr; asmname 'GrFontCharAuxBmp';
type
GrColorTableP = ^GrColors;
- { typedef union _GR_textColor } { text color union }
+ { text color union }
GrTextColor = record
case 1 .. 2 of
1: (v: GrColor); { color value for "direct" text }
2: (p: GrColorTableP); { color table for attribute text }
end;
- { typedef struct _GR_textOption } { text drawing option structure }
+ { text drawing option structure }
GrTextOption = record
- txo_Font : GrFontPtr; { font to be used }
- txo_FgColor: GrTextColor; { foreground color }
+ txo_Font: GrFontPtr; { font to be used }
+ txo_FgColor, { foreground color }
txo_BgColor: GrTextColor; { background color }
- txo_ChrType: ByteCard; { character type (see above) }
- txo_Direct : ByteCard; { direction (see above) }
- txo_XAlign : ByteCard; { X alignment (see above) }
- txo_YAlign : ByteCard; { Y alignment (see above) }
+ txo_ChrType, { character type (see above) }
+ txo_Direct, { direction (see above) }
+ txo_XAlign, { X alignment (see above) }
+ txo_YAlign: ByteCard { Y alignment (see above) }
end;
- { typedef struct } { fixed font text window desc. }
+ { fixed font text window desc. }
GrTextRegion = record
- txr_Font : GrTextColor; { font to be used }
- txr_FgColor : GrTextColor; { foreground color }
- txr_BgColor : GrTextColor; { background color }
- txr_Buffer : Pointer; { pointer to text buffer }
- txr_Backup : Pointer; { optional backup buffer }
- txr_Width : Integer; { width of area in chars }
- txr_Height : Integer; { height of area in chars }
- txr_LineOffset: Integer; { offset in buffer(s) between rows }
- txr_XPos : Integer; { upper left corner X coordinate }
- txr_YPos : Integer; { upper left corner Y coordinate }
- txr_ChrType : ByteCard; { character type (see above) }
- end;
-
-function GrCharWidth(Chr: Integer; protected var Opt: GrTextOption): Integer; asmname 'GrCharWidth';
-function GrCharHeight(Chr: Integer; protected var Opt: GrTextOption): Integer; asmname 'GrCharHeight';
-procedure GrCharSize(Chr: Integer; protected var Opt: GrTextOption; var w, h: Integer); asmname 'GrCharSize';
-function GrStringWidth(Text: CString; Length: Integer; protected var Opt: GrTextOption): Integer; asmname 'GrStringWidth';
-function GrStringHeight(Text: CString; Length: Integer; protected var Opt: GrTextOption): Integer; asmname 'GrStringHeight';
-procedure GrStringSize(Text: CString; Length: Integer; protected var Opt: GrTextOption;var w, h: Integer); asmname 'GrStringSize';
-
-procedure GrDrawChar(Chr, x, y: Integer; protected var Opt: GrTextOption); asmname 'GrDrawChar';
-procedure GrDrawString(Text: CString; Length, x, y: Integer; protected var Opt: GrTextOption); asmname 'GrDrawString';
-procedure GrTextXY(x, y: Integer; Text: CString; fg, bg: GrColor); asmname 'GrTextXY';
+ txr_Font: GrFontPtr; { font to be used }
+ txr_FgColor, { foreground color }
+ txr_BgColor: GrTextColor; { background color }
+ txr_Buffer, { pointer to text buffer }
+ txr_Backup: Pointer; { optional backup buffer }
+ txr_Width, { width of area in chars }
+ txr_Height, { height of area in chars }
+ txr_LineOffset, { offset in buffer(s) between rows }
+ txr_XPos, { upper left corner X coordinate }
+ txr_YPos: CInteger; { upper left corner Y coordinate }
+ txr_ChrType: ByteCard { character type (see above) }
+ end;
+
+function GrCharWidth(Chr: CInteger; protected var Opt: GrTextOption): CInteger; asmname 'GrCharWidth';
+function GrCharHeight(Chr: CInteger; protected var Opt: GrTextOption): CInteger; asmname 'GrCharHeight';
+procedure GrCharSize(Chr: CInteger; protected var Opt: GrTextOption; var w, h: CInteger); asmname 'GrCharSize';
+function GrStringWidth(Text: CString; Length: CInteger; protected var Opt: GrTextOption): CInteger; asmname 'GrStringWidth';
+function GrStringHeight(Text: CString; Length: CInteger; protected var Opt: GrTextOption): CInteger; asmname 'GrStringHeight';
+procedure GrStringSize(Text: CString; Length: CInteger; protected var Opt: GrTextOption;var w, h: CInteger); asmname 'GrStringSize';
+
+procedure GrDrawChar(Chr, x, y: CInteger; protected var Opt: GrTextOption); asmname 'GrDrawChar';
+procedure GrDrawString(Text: CString; Length, x, y: CInteger; protected var Opt: GrTextOption); asmname 'GrDrawString';
+procedure GrTextXY(x, y: CInteger; Text: CString; fg, bg: GrColor); asmname 'GrTextXY';
-procedure GrDumpChar(Chr, Col, Row: Integer; protected var r: GrTextRegion); asmname 'GrDumpChar';
-procedure GrDumpText(Col, Row, Wdt, Hgt: Integer; protected var r: GrTextRegion); asmname 'GrDumpText';
+procedure GrDumpChar(Chr, Col, Row: CInteger; protected var r: GrTextRegion); asmname 'GrDumpChar';
+procedure GrDumpText(Col, Row, Wdt, Hgt: CInteger; protected var r: GrTextRegion); asmname 'GrDumpText';
procedure GrDumpTextRegion(protected var r: GrTextRegion); asmname 'GrDumpTextRegion';
{ =================================================================
@@ -719,20 +724,20 @@
type
GrLineOption = record
- No_Color : GrColor; { color used to draw line }
- Lno_Width : Integer; { width of the line }
- Lno_PattLen: Integer; { length of the dash pattern }
- Lno_DashPat: MemPtr; { draw/nodraw pattern }
+ No_Color : GrColor; { color used to draw line }
+ Lno_Width, { width of the line }
+ Lno_PattLen: CInteger; { length of the dash pattern }
+ Lno_DashPat: MemPtr { draw/nodraw pattern }
end;
-procedure GrCustomLine(x1, y1, x2, y2: Integer; protected var o: GrLineOption); asmname 'GrCustomLine';
-procedure GrCustomBox(x1, y1, x2, y2: Integer; protected var o: GrLineOption); asmname 'GrCustomBox';
-procedure GrCustomCircle(xc, yc, r: Integer; protected var o: GrLineOption); asmname 'GrCustomCircle';
-procedure GrCustomEllipse(xc, yc, r: Integer; protected var o: GrLineOption); asmname 'GrCustomEllipse';
-procedure GrCustomCircleArc(xc, yc, r, Start, Ende, Style: Integer; protected var o: GrLineOption); asmname 'GrCustomCircleArc';
-procedure GrCustomEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; protected var o: GrLineOption); asmname 'GrCustomEllipseArc';
-procedure GrCustomPolyLine(NumPts: Integer; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrCustomPolyLine';
-procedure GrCustomPolygon(NumPts: Integer; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrCustomPolygon';
+procedure GrCustomLine(x1, y1, x2, y2: CInteger; protected var o: GrLineOption); asmname 'GrCustomLine';
+procedure GrCustomBox(x1, y1, x2, y2: CInteger; protected var o: GrLineOption); asmname 'GrCustomBox';
+procedure GrCustomCircle(xc, yc, r: CInteger; protected var o: GrLineOption); asmname 'GrCustomCircle';
+procedure GrCustomEllipse(xc, yc, r: CInteger; protected var o: GrLineOption); asmname 'GrCustomEllipse';
+procedure GrCustomCircleArc(xc, yc, r, Start, Ende, Style: CInteger; protected var o: GrLineOption); asmname 'GrCustomCircleArc';
+procedure GrCustomEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; protected var o: GrLineOption); asmname 'GrCustomEllipseArc';
+procedure GrCustomPolyLine(NumPts: CInteger; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrCustomPolyLine';
+procedure GrCustomPolygon(NumPts: CInteger; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrCustomPolygon';
{ ==================================================================
PATTERNED DRAWING AND FILLING PRIMITIVES
@@ -743,14 +748,13 @@
height is user-defined. SET THE TYPE FLAG TO ZERO!!! }
type
- { typedef struct _GR_bitmap }
GrBitmap = record
- bmp_IsPixMap: Integer; { type flag for pattern union }
- bmp_Height : Integer; { bitmap height }
- bmp_Data : MemPtr; { pointer to the bit pattern }
- bmp_FgColor : GrColor; { foreground color for fill }
- bmp_BgColor : GrColor; { background color for fill }
- bmp_MemFlags: Integer; { set if dynamically allocated }
+ bmp_IsPixMap, { type flag for pattern union }
+ bmp_Height: CInteger; { bitmap height }
+ bmp_Data: MemPtr; { pointer to the bit pattern }
+ bmp_FgColor, { foreground color for fill }
+ bmp_BgColor: GrColor; { background color for fill }
+ bmp_MemFlags: CInteger { set if dynamically allocated }
end;
{ PIXMAP: a fill pattern stored in a layout identical to the video RAM
@@ -758,21 +762,19 @@
of the library functions is used to build it. KEEP THE TYPE FLAG
NONZERO!!! }
- { typedef struct _GR_pixmap }
GrPixmap = record
- pxp_IsPixMap: Integer; { type flag for pattern union }
- pxp_Width : Integer; { pixmap width (in pixels) }
- pxp_Height : Integer; { pixmap height (in pixels) }
- pxp_Oper : GrColor; { bitblt mode (SET, OR, XOR, AND, IMAGE) }
- pxp_Source : GrFrameType; { source context for fill }
+ pxp_IsPixMap, { type flag for pattern union }
+ pxp_Width, { pixmap width (in pixels) }
+ pxp_Height: CInteger; { pixmap height (in pixels) }
+ pxp_Oper: GrColor; { bitblt mode (SET, OR, XOR, AND, IMAGE) }
+ pxp_Source: GrFrameType { source context for fill }
end;
{ Fill pattern union -- can either be a bitmap or a pixmap }
- { typedef union _GR_pattern }
GrPattern = record
case 1 .. 3 of
- 1: (gp_IsPixMap: Integer); { nonzero for pixmaps }
+ 1: (gp_IsPixMap: CInteger); { nonzero for pixmaps }
2: (gp_BitMap : GrBitmap); { fill bitmap }
3: (gp_PixMap : GrPixmap); { fill pixmap }
end;
@@ -782,40 +784,40 @@
(1) fill pattern, and the
(2) custom line drawing option }
GrLinePattern = record
- lnp_Pattern: GrPatternPtr; { fill pattern }
- lnp_Option : ^GrLineOption; { width + dash pattern }
+ lnp_Pattern: GrPatternPtr; { fill pattern }
+ lnp_Option : ^GrLineOption { width + dash pattern }
end;
GrLinePatternPtr = GrLinePattern;
-function GrBuildPixmap(protected var Pixels; w, h: Integer; protected var Colors { : array of GrColor }): GrPatternPtr; asmname 'GrBuildPixmap';
-function GrBuildPixmapFromBits(protected var Bits; w, h: Integer; fgc, bgc: GrColor): GrPatternPtr; asmname 'GrBuildPixmapFromBits';
+function GrBuildPixmap(protected var Pixels; w, h: CInteger; protected var Colors { : array of GrColor }): GrPatternPtr; asmname 'GrBuildPixmap';
+function GrBuildPixmapFromBits(protected var Bits; w, h: CInteger; fgc, bgc: GrColor): GrPatternPtr; asmname 'GrBuildPixmapFromBits';
function GrConvertToPixmap(Src: GrContextPtr): GrPatternPtr; asmname 'GrConvertToPixmap';
procedure GrDestroyPattern(p: GrPatternPtr); asmname 'GrDestroyPattern';
-procedure GrPatternedLine(x1, y1, x2, y2: Integer; lp: GrLinePatternPtr); asmname 'GrPatternedLine';
-procedure GrPatternedBox(x1, y1, x2, y2: Integer; lp: GrLinePatternPtr); asmname 'GrPatternedBox';
-procedure GrPatternedCircle(xc, yc, r: Integer; lp: GrLinePatternPtr); asmname 'GrPatternedCircle';
-procedure GrPatternedEllipse(xc, yc, xa, ya: Integer; lp: GrLinePatternPtr); asmname 'GrPatternedEllipse';
-procedure GrPatternedCircleArc(xc, yc, r, Start, Ende, Style: Integer; lp: GrLinePatternPtr); asmname 'GrPatternedCircleArc';
-procedure GrPatternedEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; lp: GrLinePatternPtr); asmname 'GrPatternedEllipseArc';
-procedure GrPatternedPolyLine(NumPts: Integer; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrPatternedPolyLine';
-procedure GrPatternedPolygon(NumPts: Integer; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrPatternedPolygon';
-
-procedure GrPatternFilledPlot(x, y: Integer; p: GrPatternPtr); asmname 'GrPatternFilledPlot';
-procedure GrPatternFilledLine(x1, y1, x2, y2: Integer; p: GrPatternPtr); asmname 'GrPatternFilledLine';
-procedure GrPatternFilledBox(x1, y1, x2, y2: Integer; p: GrPatternPtr); asmname 'GrPatternFilledBox';
-procedure GrPatternFilledCircle(xc, yc, r: Integer; p: GrPatternPtr); asmname 'GrPatternFilledCircle';
-procedure GrPatternFilledEllipse(xc, yc, xa, ya: Integer; p: GrPatternPtr); asmname 'GrPatternFilledEllipse';
-procedure GrPatternFilledCircleArc(xc, yc, r, Start, Ende, Style: Integer; p: GrPatternPtr); asmname 'GrPatternFilledCircleArc';
-procedure GrPatternFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; p: GrPatternPtr); asmname 'GrPatternFilledEllipseArc';
-procedure GrPatternFilledConvexPolygon(NumPts: Integer; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrPatternFilledConvexPolygon';
-procedure GrPatternFilledPolygon(NumPts: Integer; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrPatternFilledPolygon';
-procedure GrPatternFloodFill(x, y: Integer; Border: GrColor; p: GrPatternPtr); asmname 'GrPatternFloodFill';
-
-procedure GrPatternDrawChar(Chr, x, y: Integer; protected var Opt: GrTextOption; p: GrPatternPtr); asmname 'GrPatternDrawChar';
-procedure GrPatternDrawString(Text: CString; Length, x, y: Integer; protected var Opt: GrTextOption; p: GrPatternPtr); asmname 'GrPatternDrawString';
-procedure GrPatternDrawStringExt(Text: CString; Length, x, y: Integer; protected var Opt: GrTextOption; p: GrPatternPtr); asmname 'GrPatternDrawStringExt';
+procedure GrPatternedLine(x1, y1, x2, y2: CInteger; lp: GrLinePatternPtr); asmname 'GrPatternedLine';
+procedure GrPatternedBox(x1, y1, x2, y2: CInteger; lp: GrLinePatternPtr); asmname 'GrPatternedBox';
+procedure GrPatternedCircle(xc, yc, r: CInteger; lp: GrLinePatternPtr); asmname 'GrPatternedCircle';
+procedure GrPatternedEllipse(xc, yc, xa, ya: CInteger; lp: GrLinePatternPtr); asmname 'GrPatternedEllipse';
+procedure GrPatternedCircleArc(xc, yc, r, Start, Ende, Style: CInteger; lp: GrLinePatternPtr); asmname 'GrPatternedCircleArc';
+procedure GrPatternedEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; lp: GrLinePatternPtr); asmname 'GrPatternedEllipseArc';
+procedure GrPatternedPolyLine(NumPts: CInteger; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrPatternedPolyLine';
+procedure GrPatternedPolygon(NumPts: CInteger; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrPatternedPolygon';
+
+procedure GrPatternFilledPlot(x, y: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledPlot';
+procedure GrPatternFilledLine(x1, y1, x2, y2: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledLine';
+procedure GrPatternFilledBox(x1, y1, x2, y2: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledBox';
+procedure GrPatternFilledCircle(xc, yc, r: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledCircle';
+procedure GrPatternFilledEllipse(xc, yc, xa, ya: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledEllipse';
+procedure GrPatternFilledCircleArc(xc, yc, r, Start, Ende, Style: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledCircleArc';
+procedure GrPatternFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledEllipseArc';
+procedure GrPatternFilledConvexPolygon(NumPts: CInteger; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrPatternFilledConvexPolygon';
+procedure GrPatternFilledPolygon(NumPts: CInteger; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrPatternFilledPolygon';
+procedure GrPatternFloodFill(x, y: CInteger; Border: GrColor; p: GrPatternPtr); asmname 'GrPatternFloodFill';
+
+procedure GrPatternDrawChar(Chr, x, y: CInteger; protected var Opt: GrTextOption; p: GrPatternPtr); asmname 'GrPatternDrawChar';
+procedure GrPatternDrawString(Text: CString; Length, x, y: CInteger; protected var Opt: GrTextOption; p: GrPatternPtr); asmname 'GrPatternDrawString';
+procedure GrPatternDrawStringExt(Text: CString; Length, x, y: CInteger; protected var Opt: GrTextOption; p: GrPatternPtr); asmname 'GrPatternDrawStringExt';
{ <image.h> - Image Utility
@@ -830,20 +832,20 @@
Gr_Image_Inverse_LR = 1; { inverse left right }
Gr_Image_Inverse_TD = 2; { inverse top down }
-function GrImageBuild(protected var Pixels; w, h: Integer; protected var Colors { : array of GrColor }): GrImagePtr; asmname 'GrImageBuild';
+function GrImageBuild(protected var Pixels; w, h: CInteger; protected var Colors { : array of GrColor }): GrImagePtr; asmname 'GrImageBuild';
procedure GrImageDestroy(i: GrImagePtr); asmname 'GrImageDestroy';
-procedure GrImageDisplay(x,y: Integer; i: GrImagePtr); asmname 'GrImageDisplay';
-procedure GrImageDisplayExt(x1,y1,x2,y2: Integer; i: GrImagePtr); asmname 'GrImageDisplayExt';
-procedure GrImageFilledBoxAlign(xo,yo,x1,y1,x2,y2: Integer; p: GrImagePtr); asmname 'GrImageFilledBoxAlign';
-procedure GrImageHLineAlign(xo,yo,x,y,Width: Integer; p: GrImagePtr); asmname 'GrImageHLineAlign';
-procedure GrImagePlotAlign(xo,yo,x,y: Integer; p: GrImagePtr); asmname 'GrImagePlotAlign';
+procedure GrImageDisplay(x,y: CInteger; i: GrImagePtr); asmname 'GrImageDisplay';
+procedure GrImageDisplayExt(x1,y1,x2,y2: CInteger; i: GrImagePtr); asmname 'GrImageDisplayExt';
+procedure GrImageFilledBoxAlign(xo,yo,x1,y1,x2,y2: CInteger; p: GrImagePtr); asmname 'GrImageFilledBoxAlign';
+procedure GrImageHLineAlign(xo,yo,x,y,Width: CInteger; p: GrImagePtr); asmname 'GrImageHLineAlign';
+procedure GrImagePlotAlign(xo,yo,x,y: CInteger; p: GrImagePtr); asmname 'GrImagePlotAlign';
-function GrImageInverse(p: GrImagePtr; Flag: Integer): GrImagePtr; asmname 'GrImageInverse';
-function GrImageStretch(p: GrImagePtr; NWidth, NHeight: Integer): GrImagePtr; asmname 'GrImageStretch';
+function GrImageInverse(p: GrImagePtr; Flag: CInteger): GrImagePtr; asmname 'GrImageInverse';
+function GrImageStretch(p: GrImagePtr; NWidth, NHeight: CInteger): GrImagePtr; asmname 'GrImageStretch';
function GrImageFromPattern(p: GrPatternPtr): GrImagePtr; asmname 'GrImageFromPattern';
function GrImageFromContext(c: GrContextPtr): GrImagePtr; asmname 'GrImageFromContext';
-function GrImageBuildUsedAsPattern(protected var Pixels; w, h: Integer; protected var Colors { : array of GrColor }): GrImagePtr; asmname 'GrImageBuildUsedAsPattern';
+function GrImageBuildUsedAsPattern(protected var Pixels; w, h: CInteger; protected var Colors { : array of GrColor }): GrImagePtr; asmname 'GrImageBuildUsedAsPattern';
function GrPatternFromImage(i: GrImagePtr): GrPatternPtr; asmname 'GrPatternFromImage';
@@ -851,91 +853,90 @@
DRAWING IN USER WINDOW COORDINATES
================================================================== }
-procedure GrSetUserWindow(x1, y1, x2, y2: Integer); asmname 'GrSetUserWindow';
-procedure GrGetUserWindow(var x1, y1, x2, y2: Integer); asmname 'GrGetUserWindow';
-procedure GrGetScreenCoord(var x, y: Integer); asmname 'GrGetScreenCoord';
-procedure GrGetUserCoord(var x, y: Integer); asmname 'GrGetUserCoord';
-
-procedure GrUsrPlot(x, y: Integer; c:GrColor); asmname 'GrUsrPlot';
-procedure GrUsrLine(x1, y1, x2, y2: Integer; c:GrColor); asmname 'GrUsrLine';
-procedure GrUsrHLine(x1, x2, y:Integer; c:GrColor); asmname 'GrUsrHLine';
-procedure GrUsrVLine(x, y1, y2: Integer; c: GrColor); asmname 'GrUsrVLine';
-procedure GrUsrBox(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrUsrBox';
-procedure GrUsrFilledBox(x1, y1, x2, y2: Integer; c: GrColor); asmname 'GrUsrFilledBox';
-procedure GrUsrFramedBox(x1, y1, x2, y2, Wdt: Integer; c: GrFBoxColors); asmname 'GrUsrFramedBox';
-
-procedure GrUsrCircle(xc, yc, r: Integer; c: GrColor); asmname 'GrUsrCircle';
-procedure GrUsrEllipse(xc, yc, xa, ya: Integer; c: GrColor); asmname 'GrUsrEllipse';
-procedure GrUsrCircleArc(xc, yc, r, Start, Ende, Style: Integer; c: GrColor); asmname 'GrUsrCircleArc';
-procedure GrUsrEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; c: GrColor); asmname 'GrUsrEllipseArc';
-procedure GrUsrFilledCircle(xc, yc, r: Integer; c: GrColor); asmname 'GrUsrFilledCircle';
-procedure GrUsrFilledEllipse(xc, yc, xa, ya: Integer; c: GrColor); asmname 'GrUsrFilledEllipse';
-procedure GrUsrFilledCircleArc(xc, yc, r, Start, Ende, Style: Integer; c: GrColor); asmname 'GrUsrFilledCircleArc';
-procedure GrUsrFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; c: GrColor); asmname 'GrUsrFilledEllipseArc';
-procedure GrUsrPolyLine(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrPolyLine';
-procedure GrUsrPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrPolygon';
-procedure GrUsrFilledConvexPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrFilledConvexPolygon';
-procedure GrUsrFilledPolygon(NumPts: Integer; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrFilledPolygon';
-procedure GrUsrFloodFill(x, y: Integer; Border, c: GrColor); asmname 'GrUsrFloodFill';
-
-function GrUsrPixel(x, y:Integer):GrColor; asmname 'GrUsrPixel';
-function GrUsrPixelC(c: GrContextPtr; x, y: Integer):GrColor; asmname 'GrUsrPixelC';
-
-procedure GrUsrCustomLine(x1, y1, x2, y2: Integer; protected var o: GrLineOption); asmname 'GrUsrCustomLine';
-procedure GrUsrCustomBox(x1, y1, x2, y2: Integer; protected var o: GrLineOption); asmname 'GrUsrCustomBox';
-procedure GrUsrCustomCircle(xc, yc, r: Integer; protected var o: GrLineOption); asmname 'GrUsrCustomCircle';
-procedure GrUsrCustomEllipse(xc, yc, r: Integer; protected var o: GrLineOption); asmname 'GrUsrCustomEllipse';
-procedure GrUsrCustomCircleArc(xc, yc, r, Start, Ende, Style: Integer; protected var o: GrLineOption); asmname 'GrUsrCustomCircleArc';
-procedure GrUsrCustomEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; protected var o: GrLineOption); asmname 'GrUsrCustomEllipseArc';
-procedure GrUsrCustomPolyLine(NumPts: Integer; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrUsrCustomPolyLine';
-procedure GrUsrCustomPolygon(NumPts: Integer; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrUsrCustomPolygon';
-
-procedure GrUsrPatternedLine(x1, y1, x2, y2: Integer; lp: GrLinePatternPtr); asmname 'GrUsrPatternedLine';
-procedure GrUsrPatternedBox(x1, y1, x2, y2: Integer; lp: GrLinePatternPtr); asmname 'GrUsrPatternedBox';
-procedure GrUsrPatternedCircle(xc, yc, r: Integer; lp: GrLinePatternPtr); asmname 'GrUsrPatternedCircle';
-procedure GrUsrPatternedEllipse(xc, yc, xa, ya: Integer; lp: GrLinePatternPtr); asmname 'GrUsrPatternedEllipse';
-procedure GrUsrPatternedCircleArc(xc, yc, r, Start, Ende, Style: Integer; lp: GrLinePatternPtr); asmname 'GrUsrPatternedCircleArc';
-procedure GrUsrPatternedEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; lp: GrLinePatternPtr); asmname 'GrUsrPatternedEllipseArc';
-procedure GrUsrPatternedPolyLine(NumPts: Integer; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrUsrPatternedPolyLine';
-procedure GrUsrPatternedPolygon(NumPts: Integer; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrUsrPatternedPolygon';
-
-procedure GrUsrPatternFilledPlot(x, y: Integer; p: GrPatternPtr); asmname 'GrPatternFilledPlot';
-procedure GrUsrPatternFilledLine(x1, y1, x2, y2: Integer; p: GrPatternPtr); asmname 'GrUsrPatternFilledLine';
-procedure GrUsrPatternFilledBox(x1, y1, x2, y2: Integer; p: GrPatternPtr); asmname 'GrUsrPatternFilledBox';
-procedure GrUsrPatternFilledCircle(xc, yc, r: Integer; p: GrPatternPtr); asmname 'GrUsrPatternFilledCircle';
-procedure GrUsrPatternFilledEllipse(xc, yc, xa, ya: Integer; p: GrPatternPtr); asmname 'GrUsrPatternFilledEllipse';
-procedure GrUsrPatternFilledCircleArc(xc, yc, r, Start, Ende, Style: Integer; p: GrPatternPtr); asmname 'GrUsrPatternFilledCircleArc';
-procedure GrUsrPatternFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: Integer; p: GrPatternPtr); asmname 'GrUsrPatternFilledEllipseArc';
-procedure GrUsrPatternFilledConvexPolygon(NumPts: Integer; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrUsrPatternFilledConvexPolygon';
-procedure GrUsrPatternFilledPolygon(NumPts: Integer; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrUsrPatternFilledPolygon';
-procedure GrUsrPatternFloodFill(x, y: Integer; Border: GrColor; p: GrPatternPtr); asmname 'GrUsrPatternFloodFill';
-
-procedure GrUsrDrawChar(Chr, x, y: Integer; protected var Opt: GrTextOption); asmname 'GrUsrDrawChar';
-procedure GrUsrDrawString(Text: CString; Length, x, y: Integer; protected var Opt: GrTextOption); asmname 'GrUsrDrawString';
-procedure GrUsrTextXY(x, y: Integer; Text: CString; fg, bg: Integer); asmname 'GrUsrTextXY';
+procedure GrSetUserWindow(x1, y1, x2, y2: CInteger); asmname 'GrSetUserWindow';
+procedure GrGetUserWindow(var x1, y1, x2, y2: CInteger); asmname 'GrGetUserWindow';
+procedure GrGetScreenCoord(var x, y: CInteger); asmname 'GrGetScreenCoord';
+procedure GrGetUserCoord(var x, y: CInteger); asmname 'GrGetUserCoord';
+
+procedure GrUsrPlot(x, y: CInteger; c:GrColor); asmname 'GrUsrPlot';
+procedure GrUsrLine(x1, y1, x2, y2: CInteger; c:GrColor); asmname 'GrUsrLine';
+procedure GrUsrHLine(x1, x2, y:CInteger; c:GrColor); asmname 'GrUsrHLine';
+procedure GrUsrVLine(x, y1, y2: CInteger; c: GrColor); asmname 'GrUsrVLine';
+procedure GrUsrBox(x1, y1, x2, y2: CInteger; c: GrColor); asmname 'GrUsrBox';
+procedure GrUsrFilledBox(x1, y1, x2, y2: CInteger; c: GrColor); asmname 'GrUsrFilledBox';
+procedure GrUsrFramedBox(x1, y1, x2, y2, Wdt: CInteger; c: GrFBoxColors); asmname 'GrUsrFramedBox';
+
+procedure GrUsrCircle(xc, yc, r: CInteger; c: GrColor); asmname 'GrUsrCircle';
+procedure GrUsrEllipse(xc, yc, xa, ya: CInteger; c: GrColor); asmname 'GrUsrEllipse';
+procedure GrUsrCircleArc(xc, yc, r, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrUsrCircleArc';
+procedure GrUsrEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrUsrEllipseArc';
+procedure GrUsrFilledCircle(xc, yc, r: CInteger; c: GrColor); asmname 'GrUsrFilledCircle';
+procedure GrUsrFilledEllipse(xc, yc, xa, ya: CInteger; c: GrColor); asmname 'GrUsrFilledEllipse';
+procedure GrUsrFilledCircleArc(xc, yc, r, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrUsrFilledCircleArc';
+procedure GrUsrFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; c: GrColor); asmname 'GrUsrFilledEllipseArc';
+procedure GrUsrPolyLine(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrPolyLine';
+procedure GrUsrPolygon(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrPolygon';
+procedure GrUsrFilledConvexPolygon(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrFilledConvexPolygon';
+procedure GrUsrFilledPolygon(NumPts: CInteger; var Points{ : array of PointType }; c: GrColor); asmname 'GrUsrFilledPolygon';
+procedure GrUsrFloodFill(x, y: CInteger; Border, c: GrColor); asmname 'GrUsrFloodFill';
+
+function GrUsrPixel(x, y:CInteger):GrColor; asmname 'GrUsrPixel';
+function GrUsrPixelC(c: GrContextPtr; x, y: CInteger):GrColor; asmname 'GrUsrPixelC';
+
+procedure GrUsrCustomLine(x1, y1, x2, y2: CInteger; protected var o: GrLineOption); asmname 'GrUsrCustomLine';
+procedure GrUsrCustomBox(x1, y1, x2, y2: CInteger; protected var o: GrLineOption); asmname 'GrUsrCustomBox';
+procedure GrUsrCustomCircle(xc, yc, r: CInteger; protected var o: GrLineOption); asmname 'GrUsrCustomCircle';
+procedure GrUsrCustomEllipse(xc, yc, r: CInteger; protected var o: GrLineOption); asmname 'GrUsrCustomEllipse';
+procedure GrUsrCustomCircleArc(xc, yc, r, Start, Ende, Style: CInteger; protected var o: GrLineOption); asmname 'GrUsrCustomCircleArc';
+procedure GrUsrCustomEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; protected var o: GrLineOption); asmname 'GrUsrCustomEllipseArc';
+procedure GrUsrCustomPolyLine(NumPts: CInteger; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrUsrCustomPolyLine';
+procedure GrUsrCustomPolygon(NumPts: CInteger; var Points{ : array of PointType }; protected var o: GrLineOption); asmname 'GrUsrCustomPolygon';
+
+procedure GrUsrPatternedLine(x1, y1, x2, y2: CInteger; lp: GrLinePatternPtr); asmname 'GrUsrPatternedLine';
+procedure GrUsrPatternedBox(x1, y1, x2, y2: CInteger; lp: GrLinePatternPtr); asmname 'GrUsrPatternedBox';
+procedure GrUsrPatternedCircle(xc, yc, r: CInteger; lp: GrLinePatternPtr); asmname 'GrUsrPatternedCircle';
+procedure GrUsrPatternedEllipse(xc, yc, xa, ya: CInteger; lp: GrLinePatternPtr); asmname 'GrUsrPatternedEllipse';
+procedure GrUsrPatternedCircleArc(xc, yc, r, Start, Ende, Style: CInteger; lp: GrLinePatternPtr); asmname 'GrUsrPatternedCircleArc';
+procedure GrUsrPatternedEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; lp: GrLinePatternPtr); asmname 'GrUsrPatternedEllipseArc';
+procedure GrUsrPatternedPolyLine(NumPts: CInteger; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrUsrPatternedPolyLine';
+procedure GrUsrPatternedPolygon(NumPts: CInteger; var Points{ : array of PointType }; lp: GrLinePatternPtr); asmname 'GrUsrPatternedPolygon';
+
+procedure GrUsrPatternFilledPlot(x, y: CInteger; p: GrPatternPtr); asmname 'GrPatternFilledPlot';
+procedure GrUsrPatternFilledLine(x1, y1, x2, y2: CInteger; p: GrPatternPtr); asmname 'GrUsrPatternFilledLine';
+procedure GrUsrPatternFilledBox(x1, y1, x2, y2: CInteger; p: GrPatternPtr); asmname 'GrUsrPatternFilledBox';
+procedure GrUsrPatternFilledCircle(xc, yc, r: CInteger; p: GrPatternPtr); asmname 'GrUsrPatternFilledCircle';
+procedure GrUsrPatternFilledEllipse(xc, yc, xa, ya: CInteger; p: GrPatternPtr); asmname 'GrUsrPatternFilledEllipse';
+procedure GrUsrPatternFilledCircleArc(xc, yc, r, Start, Ende, Style: CInteger; p: GrPatternPtr); asmname 'GrUsrPatternFilledCircleArc';
+procedure GrUsrPatternFilledEllipseArc(xc, yc, xa, ya, Start, Ende, Style: CInteger; p: GrPatternPtr); asmname 'GrUsrPatternFilledEllipseArc';
+procedure GrUsrPatternFilledConvexPolygon(NumPts: CInteger; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrUsrPatternFilledConvexPolygon';
+procedure GrUsrPatternFilledPolygon(NumPts: CInteger; var Points{ : array of PointType }; p: GrPatternPtr); asmname 'GrUsrPatternFilledPolygon';
+procedure GrUsrPatternFloodFill(x, y: CInteger; Border: GrColor; p: GrPatternPtr); asmname 'GrUsrPatternFloodFill';
+
+procedure GrUsrDrawChar(Chr, x, y: CInteger; protected var Opt: GrTextOption); asmname 'GrUsrDrawChar';
+procedure GrUsrDrawString(Text: CString; Length, x, y: CInteger; protected var Opt: GrTextOption); asmname 'GrUsrDrawString';
+procedure GrUsrTextXY(x, y: CInteger; Text: CString; fg, bg: CInteger); asmname 'GrUsrTextXY';
{ ==================================================================
GRAPHICS CURSOR UTILITIES
================================================================== }
type
- { typedef struct _GR_cursor }
GrCursor = record
- Work : GrContext; { work areas (4) }
- XCord,YCord: Integer; { cursor position on screen }
- XSize,YSize: Integer; { cursor size }
- XOffs,YOffs: Integer; { LU corner to hot point offset }
- XWork,YWork: Integer; { save/work area sizes }
- XWPos,YWPos: Integer; { save/work area position on screen }
- Displayed : Integer; { set if displayed }
+ Work: GrContext; { work areas (4) }
+ XCord,YCord, { cursor position on screen }
+ XSize,YSize, { cursor size }
+ XOffs,YOffs, { LU corner to hot point offset }
+ XWork,YWork, { save/work area sizes }
+ XWPos,YWPos, { save/work area position on screen }
+ Displayed: CInteger { set if displayed }
end;
GrCursorPtr = ^GrCursor;
-function GrBuildCursor(Pixels: Pointer; Pitch, w, h, xo, yo: Integer; protected var Colors { : array of GrColor }): GrCursorPtr; asmname 'GrBuildCursor';
+function GrBuildCursor(Pixels: Pointer; Pitch, w, h, xo, yo: CInteger; protected var Colors { : array of GrColor }): GrCursorPtr; asmname 'GrBuildCursor';
procedure GrDestroyCursor(Cursor: GrCursorPtr); asmname 'GrDestroyCursor';
procedure GrDisplayCursor(Cursor: GrCursorPtr); asmname 'GrDisplayCursor';
procedure GrEraseCursor(Cursor: GrCursorPtr); asmname 'GrEraseCursor';
-procedure GrMoveCursor(Cursor: GrCursorPtr; x, y: Integer); asmname 'GrMoveCursor';
+procedure GrMoveCursor(Cursor: GrCursorPtr; x, y: CInteger); asmname 'GrMoveCursor';
{ ==================================================================
MOUSE AND KEYBOARD INPUT UTILITIES
@@ -982,43 +983,43 @@
Gr_M_Queue_Size = 128; { default queue size }
type
- { typedef struct _GR_mouseEvent } { mouse event buffer structure }
+ { mouse event buffer structure }
GrMouseEvent = record
- Flags : Integer; { event type flags (see above) }
- x, y : Integer; { mouse coordinates }
- Buttons: Integer; { mouse button state }
- Key : Integer; { key code from keyboard }
- KBStat : Integer; { keybd status (ALT, CTRL, etc..) }
- DTime : MedInt; { time since last event (msec) }
+ Flags, { event type flags (see above) }
+ x, y, { mouse coordinates }
+ Buttons, { mouse button state }
+ Key, { key code from keyboard }
+ KBStat: CInteger; { keybd status (ALT, CTRL, etc..) }
+ DTime: MedInt { time since last event (msec) }
end;
GrMouseEventPtr = ^GrMouseEvent;
function GrMouseDetect: Boolean; asmname 'GrMouseDetect';
-procedure GrMouseEventMode(Dummy: Integer); asmname 'GrMouseEventMode';
+procedure GrMouseEventMode(Dummy: CInteger); asmname 'GrMouseEventMode';
procedure GrMouseInit; asmname 'GrMouseInit';
-procedure GrMouseInitN(Queue_Size: Integer); asmname 'GrMouseInitN';
+procedure GrMouseInitN(Queue_Size: CInteger); asmname 'GrMouseInitN';
procedure GrMouseUnInit; asmname 'GrMouseUnInit';
-procedure GrMouseSetSpeed(SPMult, SPDiv: Integer); asmname 'GrMouseSetSpeed';
-procedure GrMouseSetAccel(Thresh, Accel: Integer); asmname 'GrMouseSetAccel';
-procedure GrMouseSetLimits(x1, y1, x2, y2: Integer); asmname 'GrMouseSetLimits';
-procedure GrMouseGetLimits(var x1, y1, x2, y2: Integer); asmname 'GrMouseGetLimits';
-procedure GrMouseWarp(x, y: Integer); asmname 'GrMouseWarp';
+procedure GrMouseSetSpeed(SPMult, SPDiv: CInteger); asmname 'GrMouseSetSpeed';
+procedure GrMouseSetAccel(Thresh, Accel: CInteger); asmname 'GrMouseSetAccel';
+procedure GrMouseSetLimits(x1, y1, x2, y2: CInteger); asmname 'GrMouseSetLimits';
+procedure GrMouseGetLimits(var x1, y1, x2, y2: CInteger); asmname 'GrMouseGetLimits';
+procedure GrMouseWarp(x, y: CInteger); asmname 'GrMouseWarp';
procedure GrMouseEventEnable(Enable_KB, Enable_MS: Boolean); asmname 'GrMouseEventEnable';
-procedure GrMouseGetEvent(Flags: Integer; Event: GrMouseEventPtr); asmname 'GrMouseGetEvent';
-procedure GrMouseGetEventT(Flags: Integer; Event: GrMouseEventPtr; timout_msecs: Integer); asmname 'GrMouseGetEventT';
-function GrMousePendingEvent: Integer; asmname 'GrMousePendingEvent';
+procedure GrMouseGetEvent(Flags: CInteger; Event: GrMouseEventPtr); asmname 'GrMouseGetEvent';
+procedure GrMouseGetEventT(Flags: CInteger; Event: GrMouseEventPtr; timout_msecs: CInteger); asmname 'GrMouseGetEventT';
+function GrMousePendingEvent: CInteger; asmname 'GrMousePendingEvent';
function GrMouseGetCursor: GrCursorPtr; asmname 'GrMouseGetCursor';
procedure GrMouseSetCursor(Cursor: GrCursorPtr); asmname 'GrMouseSetCursor';
procedure GrMouseSetColors(fg,bg: GrColor); asmname 'GrMouseSetColors';
-procedure GrMouseSetCursorMode(Mode: Integer; x1, y1, x2, y2: Integer; c: Integer); asmname 'GrMouseSetCursorMode';
+procedure GrMouseSetCursorMode(Mode: CInteger; x1, y1, x2, y2: CInteger; c: CInteger); asmname 'GrMouseSetCursorMode';
procedure GrMouseDisplayCursor; asmname 'GrMouseDisplayCursor';
procedure GrMouseEraseCursor; asmname 'GrMouseEraseCursor';
procedure GrMouseUpdateCursor; asmname 'GrMouseUpdateCursor';
function GrMouseCursorIsDisplayed: Boolean; asmname 'GrMouseCursorIsDisplayed';
-function GrMouseBlock(c: GrContextPtr; x1, y1, x2, y2: Integer): Integer; asmname 'GrMouseBlock';
-procedure GrMouseUnBlock(Return_Value_From_GrMouseBlock: Integer); asmname 'GrMouseUnBlock';
+function GrMouseBlock(c: GrContextPtr; x1, y1, x2, y2: CInteger): CInteger; asmname 'GrMouseBlock';
+procedure GrMouseUnBlock(Return_Value_From_GrMouseBlock: CInteger); asmname 'GrMouseUnBlock';
{ ==================================================================
KEYBOARD INTERFACE
@@ -1338,18 +1339,18 @@
{ new functions to replace the old style
kbhit / getch / getkey / getxkey / getkbstat
keyboard interface }
-function GrKeyPressed: Integer; asmname 'GrKeyPressed';
+function GrKeyPressed: CInteger; asmname 'GrKeyPressed';
function GrKeyRead: GrKeyType; asmname 'GrKeyRead';
-function GrKeyStat: Integer; asmname 'GrKeyStat';
+function GrKeyStat: CInteger; asmname 'GrKeyStat';
{ ==================================================================
MISCELLANEOUS UTILITIY FUNCTIONS
================================================================== }
-procedure GrResizeGrayMap (var Map; Pitch, ow, oh, nw, nh: Integer); asmname 'GrResizeGrayMap';
-function GrMatchString (Pattern, Strg: CString): Integer; asmname 'GrMatchString';
+procedure GrResizeGrayMap (var Map; Pitch, ow, oh, nw, nh: CInteger); asmname 'GrResizeGrayMap';
+function GrMatchString (Pattern, Strg: CString): CInteger; asmname 'GrMatchString';
procedure GrSetWindowTitle (Title: CString); asmname 'GrSetWindowTitle';
-procedure GrSleep (MSec: Integer); asmname 'GrSleep';
+procedure GrSleep (MSec: CInteger); asmname 'GrSleep';
{ ==================================================================
PNM FUNCTIONS
@@ -1367,23 +1368,23 @@
{ The PNM functions }
-function GrSaveContextToPbm (grc: GrContextPtr; FileName, Comment: CString): Integer; asmname 'GrSaveContextToPbm';
-function GrSaveContextToPgm (grc: GrContextPtr; FileName, Comment: CString): Integer; asmname 'GrSaveContextToPgm';
-function GrSaveContextToPpm (grc: GrContextPtr; FileName, Comment: CString): Integer; asmname 'GrSaveContextToPpm';
-function GrLoadContextFromPnm (grc: GrContextPtr; FileName: CString): Integer; asmname 'GrLoadContextFromPnm';
-function GrQueryPnm (FileName: CString; var Width, Height, MaxVal: Integer): Integer; asmname 'GrQueryPnm';
-function GrLoadContextFromPnmBuffer (grc: GrContextPtr; protected var Buffer): Integer; asmname 'GrLoadContextFromPnmBuffer';
-function GrQueryPnmBuffer (protected var Buffer; var Width, Height, MaxVal: Integer): Integer; asmname 'GrQueryPnmBuffer';
+function GrSaveContextToPbm (grc: GrContextPtr; FileName, Comment: CString): CInteger; asmname 'GrSaveContextToPbm';
+function GrSaveContextToPgm (grc: GrContextPtr; FileName, Comment: CString): CInteger; asmname 'GrSaveContextToPgm';
+function GrSaveContextToPpm (grc: GrContextPtr; FileName, Comment: CString): CInteger; asmname 'GrSaveContextToPpm';
+function GrLoadContextFromPnm (grc: GrContextPtr; FileName: CString): CInteger; asmname 'GrLoadContextFromPnm';
+function GrQueryPnm (FileName: CString; var Width, Height, MaxVal: CInteger): CInteger; asmname 'GrQueryPnm';
+function GrLoadContextFromPnmBuffer (grc: GrContextPtr; protected var Buffer): CInteger; asmname 'GrLoadContextFromPnmBuffer';
+function GrQueryPnmBuffer (protected var Buffer; var Width, Height, MaxVal: CInteger): CInteger; asmname 'GrQueryPnmBuffer';
{ ==================================================================
ADDON FUNCTIONS
these functions may not be installed or available on all systems
================================================================== }
-function GrPngSupport: Integer; asmname 'GrPngSupport';
-function GrSaveContextToPng (grc: GrContextPtr; FileName: CString): Integer; asmname 'GrSaveContextToPng';
-function GrLoadContextFromPng (grc: GrContextPtr; FileName: CString; UseAlpha: Integer): Integer; asmname 'GrLoadContextFromPng';
-function GrQueryPng (FileName: CString; var Width, Height: Integer): Integer; asmname 'GrQueryPng';
+function GrPngSupport: CInteger; asmname 'GrPngSupport';
+function GrSaveContextToPng (grc: GrContextPtr; FileName: CString): CInteger; asmname 'GrSaveContextToPng';
+function GrLoadContextFromPng (grc: GrContextPtr; FileName: CString; UseAlpha: CInteger): CInteger; asmname 'GrLoadContextFromPng';
+function GrQueryPng (FileName: CString; var Width, Height: CInteger): CInteger; asmname 'GrQueryPng';
{ SaveContextToTiff - Dump a context in a TIFF file
@@ -1398,7 +1399,7 @@
requires tifflib by Sam Leffler (sam@engr.sgi.com)
available at ftp://ftp.sgi.com/graphics/tiff }
-function SaveContextToTiff(Cxt: GrContextPtr; TiffN: CString; Compr: Integer; DocN: CString): Integer; asmname 'SaveContextToTiff';
+function SaveContextToTiff(Cxt: GrContextPtr; TiffN: CString; Compr: CInteger; DocN: CString): CInteger; asmname 'SaveContextToTiff';
{ GrSaveContextToJpeg - Dump a context in a JPEG file
@@ -1412,11 +1413,11 @@
requires jpeg-6a by IJG (Independent JPEG Group)
available at ftp.uu.net as graphics/jpeg/jpegsrc.v6a.tar.gz }
-function GrSaveContextToJpeg(grc: GrContextPtr; FileName: CString; Accuracy: Integer): Integer; asmname 'GrSaveContextToJpeg';
-function GrSaveContextToGrayJpeg(grc: GrContextPtr; FileName: CString; Accuracy: Integer): Integer; asmname 'GrSaveContextToGrayJpeg';
-function GrJpegSupport: Integer; asmname 'GrJpegSupport';
-function GrLoadContextFromJpeg(grc: GrContextPtr; FileName: CString; Scale: Integer): Integer; asmname 'GrLoadContextFromJpeg';
-function GrQueryJpeg(FileName: CString; var Width, Height: Integer): Integer; asmname 'GrQueryJpeg';
+function GrSaveContextToJpeg(grc: GrContextPtr; FileName: CString; Accuracy: CInteger): CInteger; asmname 'GrSaveContextToJpeg';
+function GrSaveContextToGrayJpeg(grc: GrContextPtr; FileName: CString; Accuracy: CInteger): CInteger; asmname 'GrSaveContextToGrayJpeg';
+function GrJpegSupport: CInteger; asmname 'GrJpegSupport';
+function GrLoadContextFromJpeg(grc: GrContextPtr; FileName: CString; Scale: CInteger): CInteger; asmname 'GrLoadContextFromJpeg';
+function GrQueryJpeg(FileName: CString; var Width, Height: CInteger): CInteger; asmname 'GrQueryJpeg';
implementation
--- grx246/pascal/bgi/graph.pas.orig Thu Sep 23 18:09:30 2004
+++ grx246/pascal/bgi/graph.pas Thu Sep 23 18:17:59 2004
@@ -18,8 +18,9 @@
22/02/01 patches by Maurice Lombardi
Maurice.Lombardi@ujf-grenoble.fr
Necessary to correct the drawpoly and fillpoly declarations.
- Some changes to make this file compile with more recent versions of
- gpc. }
+
+ Maurice Lombardi, Frank Heckenbach
frank@pascal.gnu.de: Some changes
+ to make this file compile with more recent versions of GPC. }
{ Define this if you don't want this unit to declare a KeyPressed
and a ReadKey function. }
@@ -311,7 +312,7 @@
{ BGI - API definitions }
-procedure DetectGraph(var GraphDriver, GraphMode: CInteger); asmname 'detectgraph';
+procedure DetectGraph(var GraphDriver, GraphMode: Integer);
procedure InitGraph(var GraphDriver, GraphMode: Integer; PathToDriver: CString);
procedure SetGraphMode(Mode: CInteger); asmname 'setgraphmode';
function GetModeName(ModeNumber: CInteger): WrkString;
@@ -371,7 +372,7 @@
procedure ClearDevice; asmname '__gr_cleardevice';
procedure DrawPoly(NumPoints: CCardinal; var PolyPoints { : array of PointType }); asmname '__gr_drawpoly';
procedure Ellipse(x, y: CInteger; StAngle, EndAngle: CCardinal; XRadius, YRadius: CCardinal); asmname '__gr_ellipse';
-procedure GetAspectRatio(var XAsp, YAsp: CInteger); asmname '__gr_getaspectratio';
+procedure GetAspectRatio(var XAsp, YAsp: Integer);
function GetBkColor: CCardinal; asmname '__gr_getbkcolor';
function GetColor: CCardinal; asmname '__gr_getcolor';
procedure GetFillPattern(var FillPattern: FillPatternType); asmname '__gr_getfillpattern';
@@ -392,7 +393,7 @@
procedure SetActivePage(Page: CCardinal); asmname '__gr_setactivepage';
procedure SetVisualPage(Page: CCardinal); asmname '__gr_setvisualpage';
procedure GetDefaultPalette(var Palette: PaletteType);
-procedure GetModeRange(GraphDriver:CInteger; var LoMode, HiMode:CInteger); asmname '__gr_getmoderange';
+procedure GetModeRange(GraphDriver:CInteger; var LoMode, HiMode:Integer);
function Black : CInteger;
function Blue : CInteger;
@@ -451,8 +452,7 @@
Functional in HiColor/TrueColor modes only }
procedure SetRGBColor(Red, Green, Blue: CCardinal); asmname '__gr_setrgbcolor';
-{ Returns the actual RGB palette. Functional in
- 256 color modes only. Won't work on Linux systems }
+{ Returns the actual RGB palette. }
procedure GetRGBPalette(Color: CInteger; var Red, Green, Blue: CInteger); asmname '__getrgbpalette';
{ Transforms the predefined 16 EGA colors (RED, BLUE, MAGENTA, ...)
@@ -474,6 +474,17 @@
implementation
+procedure dg(var GraphDriver, GraphMode: CInteger); asmname 'detectgraph';
+procedure DetectGraph(var GraphDriver, GraphMode: Integer);
+var gd, gm: CInteger;
+begin
+ gd := GraphDriver;
+ gm := GraphMode;
+ dg (gd, gm);
+ GraphDriver := gd;
+ GraphMode := gm
+end;
+
procedure ig(var gd, gm: CInteger; PathToDriver: CString); asmname 'initgraph';
procedure InitGraph(var GraphDriver, GraphMode: Integer; PathToDriver: CString);
var gd, gm: CInteger;
@@ -503,11 +514,29 @@
GetDriverName := CString2String (gdn)
end;
+procedure gar(var XAsp, YAsp: CInteger); asmname '__gr_getaspectratio';
+procedure GetAspectRatio(var XAsp, YAsp: Integer);
+var xa, ya: CInteger;
+begin
+ gar (xa, ya);
+ XAsp := xa;
+ YAsp := ya
+end;
+
type pPT = ^PaletteType;
function gdp: pPT; asmname '__gr_getdefaultpalette';
procedure GetDefaultPalette(var Palette: PaletteType);
begin
Palette := gdp^
+end;
+
+procedure gmr(GraphDriver:CInteger; var LoMode, HiMode:CInteger); asmname '__gr_getmoderange';
+procedure GetModeRange(GraphDriver:CInteger; var LoMode, HiMode:Integer);
+var lm, hm: CInteger;
+begin
+ gmr (GraphDriver, lm, hm);
+ LoMode := lm;
+ HiMode := hm
end;
function InstallUserDriver(const DriverName: String; AutoDetectPtr: Pointer):CInteger;
--- grx246/pascal/jpgtest.pas.orig Tue May 27 21:19:46 2003
+++ grx246/pascal/jpgtest.pas Thu Sep 23 18:05:40 2004
@@ -29,7 +29,7 @@
grc : GrContextPtr;
Width, Height : Integer;
s : String[81];
- w, h : Integer;
+ w, h : CInteger;
begin
GrQueryJpeg( nf,w,h );
WriteStr( s,nf,' ',w,' ',h,' Scale 1/',Scale );
--- grx246/pascal/imgview.pas.orig Thu Sep 23 18:06:15 2004
+++ grx246/pascal/imgview.pas Thu Sep 23 18:06:33 2004
@@ -49,7 +49,8 @@
var
ImgFileName: TString;
- ArgStart, ArgN, ImgWidth, ImgHeight, Key: Integer;
+ ArgStart, ArgN, Key: Integer;
+ ImgWidth, ImgHeight: CInteger;
grc: GrContextPtr;
Centered: Boolean;