Gpc
Threads by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1999 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1998 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1997 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1996 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 1995 -----
- December
- November
- October
- September
March 2005
- 32 participants
- 67 discussions
I have uploaded a new alpha version of GPC to
<http://www.gnu-pascal.de/alpha/>.
Important notes:
- This is an ALPHA version, as discussed on the mailing list before.
Not so many extensive tests have been made (though the test suite
passes on my system). I'm not uploading binaries, diffs, separate
test suite archives, updated web pages etc., just the source
distribution. (Of course, others may feel free to upload binaries
for various platforms.) I'm not aware of any serious bugs, but you
have to decide for yourself whether to use it for production work.
- Bison (building GPC)
Bison version 2.0 has been released. It can be obtained at
<ftp://ftp.gnu.org/gnu/bison/bison-2.0.tar.gz>. This is now the
recommended version for all GPC compilations. Fortunately, we now
don't depend on changing alpha/beta versions of bison anymore.
Bison is required when building a minimal distribution of GPC
(which now doesn't include the Bison generated files anymore, as
it did temporarily); when building a full source distribution and
not modifying the bison input files (*.y), bison is not strictly
needed, but in case of doubt, it can't hurt to install the new
bison version.
New features:
- Support for gcc-3.4.x (tested with 3.4.3)
The caveats that apply to gcc-3.3.x (especially on Dos/Windows)
also apply here.
- Renamed options
Due to the way that gcc-3.4.x handles options, we had to rename
two options (command line and compiler directive, respectively).
To avoid confusion, we did this for all backend versions:
--no-default-paths -> --disable-default-paths
--no-debug-info -> --disable-debug-info
Note: `--disable-debug-info' is only used in very special cases,
and usually as a compiler directive. To turn off debug info one
would normally use `-g0' which remains unaffected.
- Qualified identifiers
(chief18.pas, fjf260*.pas, fjf921*.pas, grp1.pas, kurzw1.pas,
mod{9,10,13..17}*.pas)
GPC now supports qualified identifiers, both Extended Pascal and
Borland Pascal style.
A small incompatibility to previous versions arises when a
declaration has the same name as an interface, which is not EP
conformant, but GPC previously allowed. This will now cause
compile-time errors. The solution is to rename either the
interface or the declaration.
The linker names, if not specified explicitly, are now completely
different. Since those linker names should not be relied upon
anyway, we hope this is no problem. If you get problems here, just
add `name' attributes where necesssary. (This will also make the
code more robust, in case the internal conventions ever change
again.)
- Importing within a routine (EP feature) works now.
(mod15[c-e].pas)
- Range checking
(chuck5.pas, fjf446.pas, fjf989*.pas, fjf992*.pas, fsc{01..37}*.pas,
miklos1[bc].pas, mir{016,021..028,030..047}*.pas, russ4*.pas)
GPC now supports full range checking (previously it did so only
for dynamic ranges and sets). Range checking is on by default (in
all dialects) and can be turned off and on again by command-line
arguments or compiler directives (`{$[no-]range-checking}' and
also `{$R-}' and `{$R+}', BP compatible).
Note, this is not overflow checking, which may be implemented
later and will be a separate option, just like in BP. Range
checking applies when a value of a larger type (e.g., an `Integer'
variable or the result of an integer operation) is used in a place
where a subrange is expected (e.g., an array index, or assignment
to a variable with more limited range). Overflow checking would
apply if the result of an arithmetic or other operation exceeds
the representable values (e.g., `var a: Integer = MaxInt; [...]
WriteLn (a + a)'). This is not yet checked.
For input operations (`Read', `ReadLn', `ReadStr', `Val'), range
checking errors are treated as I/O errors, so they can be trapped
with `{$I-}' via `IOResult' (for `Read*'), or for `Val' via the
3rd parameter (while range errors in the 3rd parameter of `Val'
itself are treated as regular runtime errors; this paramter is the
error position, so range errors there can be avoided simply by
declaring it of a sufficiently larger type, usually just `Integer'
or `Cardinal').
For strings, range checking is BP compatible (access up to the
capacity allowed) in `--borland-pascal' and `--delphi' modes and
EP compatible (access only up to the current length allowed)
otherwise. So in default (EP) mode code such as
if MyString[1] = '-' ...
without a check
if (MyString <> '') and ...
may now fail with a range-checking error. This is useful, since
the first test was always undefined if `MyString' was empty, but
in my experience so far, this has been one of the most common
causes of range-checking errors in my code.
The same applies with `var' parameters and the address operator as
well, so e.g. code such as:
BlockRead (f, StringLength, SizeOf (StringLength));
BlockRead (f, s[1], StringLength);
SetLength (s, StringLength);
needs two changes to be range safe now:
BlockRead (f, StringLength, SizeOf (StringLength));
SetLength (s, StringLength);
if StringLength > 0 then BlockRead (f, s[1], StringLength);
Another example (rather low-level code, found e.g. in the RTS):
BufPtr := PChars0 (@s[1]);
BufSize := Length (s);
will fail if `s' is empty. Possible change (provided the using
code doesn't access `BufPtr' if `BufSize' is empty, which would be
undefined anyway when reading):
if s = '' then
BufPtr := nil
else
BufPtr := PChars0 (@s[1]);
BufSize := Length (s);
- `pow', `Trim', `Card', set operations (`-', `*', `><'), set
comparisons, string comparisons and array slices with constant
arguments can now be used in constants (fjf998*.pas, fjf1000*.pas,
fjf1009*.pas)
- Initialized types in record and object fields and in schemata work
now. (inirec[24].pas, fjf1016*.pas)
- Types and initializers containing variable expressions, including
schemata with non-constant discriminants work now.
(couper[45].pas, fjf186.pas, fjf548.pas, fjf612a.pas, fjf997*.pas,
fjf1003*.pas, john1a.pas)
- With `-Wnested-comments' and without `--nested-comments' warn
about comment openers found within comments. (fjf1017*.pas)
- New options `--[no-]case-value-checking' (fjf1012*.pas)
- Arithmetics with a complex and a real operand
are now better optimized.
(<20020118143553.B28837(a)artax.karlin.mff.cuni.cz>)
- Bug fixes:
* warn if an lhs cast decreases alignment (avo9.pas)
* don't require result variables in forward declarations except in
strict ISO mode (marku10*.pas)
* writing to a file buffer at EOF didn't work (eof1.pas)
* don't allow `f^' for unopened files `f' (pcerror[ij].pas)
* evaluate initializers exactly as often as specified
(fjf1019.pas)
* in standard Pascal modes, `EOF' is false on an empty file
(tom7.pas)
* wrong `arithmetical overflow' with `set of byte' (igor1.pas)
* `ParamStr' evaluated its argument twice (fjf963b.pas)
* user-defined operators must not be applied to implicit
operations (fjf991.pas and many other cases)
Frank
--
Frank Heckenbach, frank(a)g-n-u.de, http://fjf.gnu.de/, 7977168E
GPC To-Do list, latest features, fixed bugs:
http://www.gnu-pascal.de/todo.html
GPC download signing key: ACB3 79B2 7EB2 B7A7 EFDE D101 CD02 4C9D 0FE0 E5E8
11
86
Forwarded message from marcov(a)stack.nl (Marco van de Voort):
Subject: Re: c library imports revisited
In-Reply-To: <1109917477.4701.80683(a)goedel.fjf.gnu.de>
To: Frank Heckenbach <ih8mj(a)fjf.gnu.de>
Date: Mon, 7 Mar 2005 13:12:30 +0100 (CET)
X-Mailer: ELM [version 2.4ME+ PL118 (25)]
> : We do offer a limited selection of Unix calls though, but these are targeted
> : for specific Unix use, and in no way a substitute for the general calls in
> : e.g. an unit sysutils. They are prototyped roughly as the C calls, but
> : with "fp" prefixed, so manual pages still apply.
>
> This probably explains what Rick was wondering about. If even glibc
> interfaces changes frequently (I suppose so, I'm not following them
> closely myself), other system's libcs are vastly different ...
About half the breakage occurs in startup files, mangling, and dealing with
stuff like tls and threadsafe errno workarounds. GPC being gcc based might
have less problems with that. OTOH GPC will typically rely heavier on libc,
which might also cause different problems. (for FPC, the only thing
that matters is the binary api, no C code)
The other half are more definitions changing, and distro maintainers that
retire legacy calls earlier than others.
> constant, rewriting) AFAICS would be either to have a 100% automatic
> translator that handles everything that occurs in some libc headers
> (which is likely to be all of standard C + extensions, via macros
> and inline functions), or to write wrappers in C that use the libc
> routines in the C way (thus being able to include headers as
> designed) and provide a well-defined C/Pascal interface. That's
> basically what we do in the RTS for a subset of libc (sometimes
> providing a bare-bones interfaces, sometimes higher-level).
This is extremely difficult (we also thought/tried this). Personally, I have
given up on C2pascal like programs being fully automatic, and consider them
more as a tool for manual translation. Even if it works, the output is
horribly ugly, comments are stripped etc.
For the commctrl windows header,
1) I wrote a simple (200 line) pascal program
that did some basic conversion and stripping of microsoft directives etc,
sorting constants, structures and procedure defs into separate files, expanding
simple macro's (that only were a bunch of typecasts). All done very simple, basic
on heuristics, and modifying till output is ok.
2) Then I postedited the individual files with some global search and replace,
and ran them through h2pas for the basic conversion (for the structs). The constants
I fully converted using block-editor commands and search-n-replace.
3) Then again search and replace time and some simple filter procs (e.g. external clauses in
calls)
4) Then manually merging, checking and fixing (days of work, but these are 10000+ lines),
converting more complex macro's etc.
(the commctrl macro's where very picky about typing. They contained such systematic
typecasting, one could infer the parameters typing, greatly increasing the automatic
conversion ratio)
The basic problem with this process is the amount of manual labour (I did it in lost hours
in trains etc), and the batchwise operating. Noticing an error in the conversion of (1)
can't be corrected by redoing (1) since then all manual editing must be redone.
The trouble with C to pascal parsing is that everybody tries to go for the
silver bullet of 100% automatic conversion. They all fail, and nobody is
interested long enough to try a second approach, something what is more a
construction kit for converting headers or so, or a scriptable or assisted
system.
> As I wrote the other day, automatic translation for most other C
> libraries is probably a whole lot easier (as glibc headers contain
> some of the most complicated macros I've seen so far in external
> headers, apart from the Linux kernel headers) ...
Try *BSD startup binary sources (crtbegin/crt0 etc) I once had 6 pages
(roughly 100-150 lines) that became 12 asm instructions. They have cleaned up
a bit since though.
The big funny thing was that it was a portable wrapper for syscalls. However
the file was marked as "i386 only". Even if it was portable, it was so
complex that I only figured it out by comparing
1) objdumped assembler files,
2) -S output
3) the source
P.s. Jedi also did an attempt at a header convertor, based on an experiment
of dr Bob:
http://delphi-jedi.org/TEAM_DARTH_HOME or search for "headconv"
Afaik it is roughly the same principle as the FPC one, but less maintained (and
the FPC one is already essentially unmaintained)
3
4
Forwarded message from marcov(a)stack.nl (Marco van de Voort):
Hmm, this is starting to become a daily routine, BUT, I couldn't pass by
Waldek "initialised variables" subject without a few comments, you can
throw this msg on the list.
(note this is all from memory, and I'm not even a compiler guy, so check it
yourself. Just to get you on the trail)
Note that the reason the example fails in any mode but delphi is simply that
the integer size=16-bit in those modes. (BP compat)
[And the routine must be declared `far' in BP AFAIR. -- Frank]
If you correct the program by
- substituting longint for integer
- adding () to the bar call.
- use normal mode (no params) or objfpc mode (-S2)
then the program works in a recent (1.9.9) version, but I think
this is pretty invariant within 1.9.x.
The delphi case fails, afaik out of compability.
The rules for FPC are simple (though there might be gotcha's,
or changed things) is to roughly follow delphi, but
- when in doubt allow () to force function call.
- when in doubt use @ to force assignment of proc variable.
FPC modi use/require a '@' a lot more than Delphi mode to resolve ambiguity.
IIRC Delphi also knows @@ to take the address of the procvar itself.
Delphi has a lot of special rules with respect to procvars and methodvars.
The FPC testsuite probably contains quite a few.
program bug1;
{$X+}
type tfunc = function : pointer;
function baz : longint;
begin
baz := 1024 * 2;
end;
var bar : tfunc;
function foo : longint;
begin
foo := longint(@baz); // force assignment.
end;
begin
bar := tfunc (foo); { this is where Delphi and BP barf }
writeln (longint (bar())); // force call
end.
1
0
Hi
I have found a possible problem, illustrated in the three programs
below (and in the comments):
program one;
uses windows;
var
h : THandle = LoadLibrary ('winstl32.dll');
v : ^function : integer = GetProcAddress (h, 'Chief32DllVersion');
begin
Writeln ('Handle=', h);
Writeln ('V is assigned=', Assigned (v)); { TRUE }
Writeln ('Version=', v^); { correct result }
Writeln ('DLL Unloaded=',FreeLibrary (h)); { TRUE }
end.
program two;
uses windows;
var
h : THandle = LoadLibrary ('winstl32.dll');
v : function : integer = GetProcAddress (h, 'Chief32DllVersion');
begin
Writeln ('Handle=', h);
Writeln ('V is assigned=', Assigned (v)); { TRUE }
Writeln ('Version=', v); { wrong result }
Writeln ('DLL Unloaded=',FreeLibrary (h)); { TRUE }
end.
program three;
uses windows;
var
h : THandle = LoadLibrary ('winstl32.dll');
v : function : integer = GetProcAddress (h, 'Chief32DllVersion');
begin
Writeln ('Handle=', h);
Writeln ('V is assigned=', Assigned (v)); { TRUE }
@v := GetProcAddress (h, 'Chief32DllVersion'); { saves the day }
Writeln ('Version=', v); { correct result }
Writeln ('DLL Unloaded=', FreeLibrary (h)); { TRUE }
end.
What is the possible problem?
1. With all programs, declarations of "h" and "v" are accepted by GPC.
But they are not accepted by Delphi, FreePascal, VirtualPascal, or BP
("cannot evaluate this expression" or "constant expression expected").
Is this an EP thing or is it a GPC extension?
BTW: gcc (Mingw) doesn't accept this type of initialisation.
2. As you can see from the comments, the assignment of "v" to
GetProcAddress ... seems to succeed (in that the variable is indeed
assigned), but silently produces a wrong result, meaning that it didn't
really get assigned as it should.
Any comments? Thanks.
Best regards, The Chief
--------
Prof. Abimbola A. Olowofoyeku (The African Chief)
web: http://www.greatchief.plus.com/
2
6
Frank Heckenbach wrote:
> Markus Gerwinski wrote:
> > compiling the program
> >
> > Program Test;
> >
> > var
> > x: integer;
> >
> > Function foo: integer;
> >
> > Procedure bar;
> > begin (* bar *)
> > result:= 7;
> > end (* bar *);
> >
> > begin (* foo *)
> > bar;
> > end (* foo *);
> >
> > begin
> > x:= foo;
> > end.
> >
> > yields an error message
> >
> > test.pas: In procedure `bar':
> > test.pas:14: error: invalid access to `Result'
> > test.pas: In function `foo':
> > test.pas:20: error: result of function not assigned
> >
> > Bug or feature?
> An interesting case indeed. Since `Result' is a Delphi feature, we
> probably should check if Delphi allows this, and if so do so as
> well.
I just tested with Delphi and found that `Result' behaves exactly
like an implicitly defined local variable here. I.e. the sub-function of a
function has its own `Result' that shadows the one of the enclosing
function. A sub-procedure correctly accesses the `Result' of the enclosing
function.
> Notice, though, that if it does, it's somewhat confusing (if both
> `foo' and `bar' are functions, one implicit `Result' probably
> shadows the other -- please try this case with Delphi as well), and
> error-prone (in your example, if you later decide to make `bar' a
> function with an integer type result, the code would silently change
> its meaning).
Indeed. That is another advantage of the explicitly declared result
variable. (At least if you, like me, prefer to avoid using the function
name as a write-only identifier.)
Frank, is there any chance to change gpc's behaviour back to the
way I started this thread with? I know it would violate a standard,
but in this case I think the standard makes less sense than the
"unwanted feature" we had before.
Yours,
Markus
______________________________________________________________
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
9
23
On 28 Feb 2005, 15:31:48, Rick Engebretson wrote:
>OK, I've updated gpc and begun to probe for "clarification."
>
>I'm glad an automated c-header translator is being discussed. The fpc
>people have such a tool and have translated libc. A terrific pascal
>development.
[...]
There is something else which has been exercising me, in respect of
imports from Windows DLLs. In gcc, I can do something like this:
FARPROC foo; /*pointer to DLL function "char *foo (char *x, char * y,
int z)" */
void main(){
char *str;
HINSTANCE h = LoadLibrary ("myfoo.dll");
if (h > 0) {
foo = GetProcAddress (h, "foo@12");
str = foo ("foo", "bar", 24);
}
}
In GPC, this kind of thing will (naturally) not work, because the
(function) pointer "foo" cannot be passed arbitrary parameters like
that. gcc happily accepts it (now, of course, if the parameters are
wrong, then the program will GPF at the call "str = foo ...", and if
the parameters are correct, then everything works correctly).
The question is: since GPC is based on gcc, is the capacity to accept
something like this present in GPC? (the question whether it should be
accepted of is of course a different thing). I personally would find it
very useful (not for translating c headers, but for automated parsing
of DLLs and automated imports of their exported symbols), although I
can hear all the cries of "Pascal is a safe language and therefore
should never accept something like this".
Best regards, The Chief
--------
Prof. Abimbola A. Olowofoyeku (The African Chief)
web: http://www.greatchief.plus.com/
5
19
I redirect this mail to the gpc list.
It is a problem about install of gpc/grx
which may interest others. There have been problems
with CPP_PREDEFINES in Linux (Debian).
They are worked around, but others remain ...
Maurice
Shutian Ma a écrit:
> I used gpc -v
> and got:
> gpc version 20041218
> based on gcc-3.3.3
>
> I added
> {$define linux}
> before of after
> {$define LINUX_CONSOLE}
> in grx.pas.
>
> and got:
>
> [root@localhost pascal]# make -f makefile.lnx
> gpc --automake -O1 -Wall -o blt_test blt_test.pas
> -L../lib/unix ../lib/unix/libgrx20.a -lvga -lm
> /usr/bin/ld: cannot find -lgcc
> collect2: ld returned 1 exit status
> make: *** [blt_test] Error 1
> [root@localhost pascal]#
>
> Could you tell me the next step?
>
This time, you have a problem of installation of gpc (Pascal).
You have some verson of gcc (C) installed. To know which one type
gcc -v
It is probably different from gcc-3.3.3 which served as backend
version of gcc when compiling gpc.
You need _this_ version of gcc installed because gpc looks for
the version of libgcc.a with same version number as the one
which served as backend to compile gpc.
Fortunately two (or many) versions of gcc can coexist on the
same system. they are recognized through a version number
in the libraries. For example yoy have probably a directory
/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/
which contains libgcc.a and executables gpc1 and gpcpp
which have been installed by gpc, but not libgcc.a nor executable
cc1 (as well as some other files) which should have been
installed by gcc-3.3.3
To enable this to work you should install all the files
that gcc-3.3.3 put in _this_ directory.
You probably have similar files installed in an other directory
with version number which corresponds to your main gcc version given by gcc -v.
You should thus install only those files of gcc-3.3.3 in the proper lib subdirectory
I am not used on how you install files in Debian (I use DJGPP
or sometimes mingw32). May be untar the _binaries_ of gcc-3.3.3
in some temp directory and move the files to the right directory.
Or install gcc-3.3.3: you risk to overwrite compiler driver files
like /usr/local/bin/gcc.exe. In that case reinstall afterwards your
main gcc version, il will overwrite anew this file, but the
files contained in lib/gcc-lib/.. will not be overwritten
because they are in different directories discriminated by version number.
Maurice
> --- Maurice Lombardi
> <Maurice.Lombardi(a)ujf-grenoble.fr> wrote:
>
>>
>>Shutian Ma a écrit:
>>
>>>Thank you,
>>>
>>>I have delete the "." , then tried: I checked
>>>blt_test.pas, no similar sentence. What I should
>>
>>do?
>>
>>>-------------------
>>>[shma@localhost pascal]$ locate libgrx20.a
>>>/usr/local/lib/libgrx20.a
>>>/home/shma/gnu_pascal/grx246/lib/unix/libgrx20.a
>>>[shma@localhost pascal]$
>>>---------------------
>>>
>>>[shma@localhost pascal]$ make -f makefile.lnx
>>>gpc --automake -O1 -Wall -o blt_test blt_test.pas
>>>-L../lib/unix ../lib/unix/libgrx20.a -lvga -lm
>>>/usr/bin/ld: cannot find -lgrx20X
>>>collect2: ld returned 1 exit status
>>>make: *** [blt_test] Error 1
>>>[shma@localhost pascal]$
>>>
>>>
>>>----------------------
>>>{ Define this if you want to use the Linux console
>>>version.
>>> (Ignored on non-Linux systems.) }
>>>{$define LINUX_CONSOLE}
>>>
>>
>>
>>
>>>
>>>{$gnu-pascal,I-}
>>>{$ifdef __DJGPP__}
>>> {$L grx20}
>>>{$elif defined (__MINGW32__)}
>>> {$L grx20}
>>>{$elif defined (_WIN32)}
>>> {$L grxW32, vfs.c, user32, gdi32}
>>>{$elif defined (linux) and defined
>>
>>(LINUX_CONSOLE)}
>>
>>> {$L grx20, vga}
>>>{$else}
>>> {$L grx20X, X11}
>>>{$endif}
>>>
>>
>>
>>
>>>
>>>{ Uncomment those of the following libraries that
>>
>>you
>>
>>>need }
>>
>>mmm. starting with gcc 3.3.x there are problems with
>>CPP_PREDEFINES in gpc
>>I was supposing that this causes problems only with
>>DOS/Windows targets.
>>But I have checked that linux is no more predefined
>>with gcc-3.3.3.
>>you can check your version of gpc and of its backend
>>gcc by typing
>>gpc -v.
>>The temporary workaround is to add a line
>>{$define linux}
>>before of after
>>{$define LINUX_CONSOLE}
>>in grx.pas.
>>
>>Maurice
>>
>>--
>> 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
>>
>>
>
>
--
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
2
1
Re: polytest.pas:63: error: type mismatch in argument 1 of `GetCPUTime'
by Maurice Lombardi 08 Mar '05
by Maurice Lombardi 08 Mar '05
08 Mar '05
Shutian Ma a écrit:
> Dear Maurice,
>
> I re-installed gpc with gcc, and I can compile some
> demos, not all. You may know the following problem.
>
> Thank you for your help.
>
> Shutian
>
> [shma@localhost pascal]$ make -f makefile.lnx
> gpc --automake -O1 -Wall -o polytest polytest.pas
> -L../lib/unix ../lib/unix/libg
> rx20.a -lvga -lm
> polytest.pas: In procedure `SpeedTest':
> polytest.pas:63: error: type mismatch in argument 1 of
> `GetCPUTime'
> /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/units/gpc.pas:198:
> error: routin
> e declaration
> polytest.pas:87: error: type mismatch in argument 1 of
> `GetCPUTime'
> /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/units/gpc.pas:198:
> error: routin
> e declaration
> polytest.pas:111: error: type mismatch in argument 1
> of `GetCPUTime'
> /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/units/gpc.pas:198:
> error: routin
> e declaration
> make: *** [polytest] Error 1
> [shma@localhost pascal]$
> --- Maurice Lombardi
> <Maurice.Lombardi(a)ujf-grenoble.fr> wrote:
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
--
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(a)pascal.gnu.de>
+# Copyright (C) 2001-2002,2004 Frank Heckenbach <frank(a)pascal.gnu.de>
+# Peter Gerwinski <peter(a)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(a)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(a)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(a)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(a)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(a)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;
1
0
I produced the attached document when converting a large DEC Pascal simulation to gpc (under Linux) some years ago. We can still run our code on both VMS and gpc. I think it should help get round most issues you may come across.
It leaves a fair bit of manual editing but by adopting a conversion checklist, the manual process is straightforward.
3
2
A question to the EP experts? Is the following program valid EP, and
if so, what should its output be?
program Foo (Output);
type
i23 = 2 .. 3 value 2;
a = record
b: Integer value 1;
case c: i23 of
2: (d: Integer value 4);
3: (e: Integer value 5)
end value [b: 6; case c: 3 of [e: 7]];
var
v: ^a;
begin
New (v, 2);
WriteLn (v^.b, ' ', v^.c, ' ', v^.d)
end.
: 6.7.5.3 Dynamic allocation procedures
:
: The domainÂtype of the newÂpointerÂtype denoting the type possessed by p
: shall contain a typeÂidentifier, which shall denote the recordÂtype, the
: bindability, and except as otherwise noted below, the initial state of the
: created variable.
:
: The caseÂconstant c 1 shall correspond to the variantÂpart of the
: fieldÂlist of the recordÂtype. For 1 < i <= n, c i shall correspond to the
: variantÂpart of the fieldÂlist of the variantÂdenoter denoting the variant
: specified by c i Â1. For 1 <= i <= n, the variantÂpart corresponding to c i
: shall closestÂcontain a tagÂtype. For 1 <= i <= n, the initial state of the
: selector of the variant corresponding (see above) with the caseÂconstant c
: i shall be the state bearing the value associated (see 6.4.3.4) with the
: variant corresponding (see 6.4.3.4) to the value denoted by c i .
:
: It shall be an error if a variant of a variantÂpart within the new variable
: is active and a different variant of the variantÂpart is one of the
: specified variants.
:
: NOTE --- 1 Since the initial state of each selector is determined by the
: corresponding caseÂconstant, any corresponding tagÂfield is also attributed
: the value of the caseÂconstant (see 6.4.3.4).
According to the first paragraph v^.b must be 6 IIUIC (i.e., the
initial state of the record, not of the field, prevails).
According to paragraphs 2 and 4, v^.c must be 2 which should be
quite clear.
But what about v^.d? AFAICS, paragraphs 2 and 4 don't state it, so
according to the first paragraph, it would have the initial state it
has in the type a. But in a, the second variant is active, so field
d is undefined.
Does this mean that indeed v^.d is undefined after `New' (despite
specifying initial values wherever possible, i.e. *omitting* the
initial state of a would result in v^.d being defined)? Or did I
overlook some reason it is defined (in this case, presumably, as 4)?
Or is this `New' statement invalid? If anything, paragraph 3 might
be a reason, but AFAICS it's meant to forbid invalid combinations of
selectors in nested variant records, and doesn't apply here.
The more general question is whether the initial states of the
components of a structured type can have any influence when the
structured type itself has a `value' specification. (Since I don't
see another way how they could.)
Frank
--
Frank Heckenbach, frank(a)g-n-u.de, http://fjf.gnu.de/, 7977168E
GPC To-Do list, latest features, fixed bugs:
http://www.gnu-pascal.de/todo.html
GPC download signing key: ACB3 79B2 7EB2 B7A7 EFDE D101 CD02 4C9D 0FE0 E5E8
2
3