
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1565 8e941d3f-bd1b-0410-a28a-d453659cc2b4
103 lines
3.2 KiB
ObjectPascal
103 lines
3.2 KiB
ObjectPascal
(*******************************************************************
|
|
*
|
|
* TTTypes.pas 1.0
|
|
*
|
|
* Global internal types definitions
|
|
*
|
|
* Copyright 1996, 1997 by
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
*
|
|
* This file is part of the FreeType project, and may only be used
|
|
* modified and distributed under the terms of the FreeType project
|
|
* license, LICENSE.TXT. By continuing to use, modify or distribute
|
|
* this file you indicate that you have read the license and
|
|
* understand and accept it fully.
|
|
*
|
|
******************************************************************)
|
|
|
|
unit TTTypes;
|
|
|
|
interface
|
|
|
|
uses FreeType;
|
|
|
|
type
|
|
|
|
(*********************** SIMPLE PRIMITIVE TYPES *******************)
|
|
|
|
(* BYTE is already defined in Pascal *)
|
|
(* They are equivalent to C unsigned chars *)
|
|
|
|
UShort = Word; (* unsigned short integer, must be on 16 bits *)
|
|
Short = Integer; (* signed short integer, must be on 16 bits *)
|
|
|
|
Long = Longint;
|
|
ULong = LongInt; (* unsigned long integer, must be on 32 bits *)
|
|
(* NOTE : There is no 'LongWord' in Pascal, *)
|
|
(* but the unsigned ops are all in *)
|
|
(* the inline assembly routines *)
|
|
|
|
{$IFDEF USE32}
|
|
Int = LongInt; (* the 'int' type is used for loop counters and *)
|
|
{$ELSE} (* indexes.. Their size must be the one a given *)
|
|
Int = Integer; (* system handles most easily ( 16 bits on Turbo *)
|
|
{$ENDIF} (* and 32 on Virtual Pascals ) *)
|
|
|
|
TByteArray = array[0..1000] of Byte;
|
|
PByte = ^TByteArray;
|
|
|
|
TShortArray = array[0..1000] of Short;
|
|
PShort = ^TShortArray;
|
|
|
|
TUShortArray = array[0..1000] of UShort;
|
|
PUShort = ^TUShortArray;
|
|
|
|
TStorage = array[0..16000] of Long;
|
|
PStorage = ^TStorage;
|
|
PLong = PStorage;
|
|
PULong = PStorage;
|
|
|
|
TError = boolean;
|
|
|
|
(***************** FreeType Internal Types *****************************)
|
|
|
|
TCoordinates = array[0..1023] of TT_F26Dot6;
|
|
PCoordinates = ^TCoordinates;
|
|
|
|
PTouchTable = PByte;
|
|
|
|
TVecRecord = record
|
|
n : Int; (* number of points *)
|
|
org_x : PCoordinates; (* original coordinates arrays *)
|
|
org_y : PCoordinates;
|
|
cur_x : PCoordinates; (* current coordinates arrays *)
|
|
cur_y : PCoordinates;
|
|
touch : PTouchTable; (* touch flags array *)
|
|
end;
|
|
(* This type is used to describe each point zone in the interpreter *)
|
|
|
|
const
|
|
|
|
TT_Round_Off = 5;
|
|
TT_Round_To_Half_Grid = 0;
|
|
TT_Round_To_Grid = 1;
|
|
TT_Round_To_Double_Grid = 2;
|
|
TT_Round_Up_To_Grid = 4;
|
|
TT_Round_Down_To_Grid = 3;
|
|
TT_Round_Super = 6;
|
|
TT_ROund_Super_45 = 7;
|
|
|
|
Success = False;
|
|
Failure = True;
|
|
|
|
TT_Flag_Touched_X = $02; (* X touched flag *)
|
|
TT_Flag_Touched_Y = $04; (* Y touched flag *)
|
|
|
|
TT_Flag_Touched_Both = TT_Flag_Touched_X or TT_FLag_Touched_Y;
|
|
|
|
TT_Flag_On_Curve = $01; (* Point is On curve *)
|
|
|
|
implementation
|
|
|
|
end.
|