Repository URL to install this package:
Version:
3.0.0 ▾
|
{*
* Free Pascal conversion (c) 1999 Sebastian Guenther
*
* GGI/2D interface
*
* Copyright (C) 1998 by Thomas Tanner. See CREDITS for details.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*}
{$MODE objfpc}
{$PACKRECORDS C}
{$LINKLIB c}
unit GGI2D;
interface
uses GGI;
const
libggi2d = 'ggi2d';
type
TGGIAlpha = Word;
const
GGI_MAX_ALPHA = 255;
// library initialization and exit
function ggi2dInit: Integer; cdecl; external libggi2d;
function ggi2dExit: Integer; cdecl; external libggi2d;
// visual
function ggi2dOpen(Visual: TGGIVisual): Integer; cdecl; external libggi2d;
function ggi2dClose(Visual: TGGIVisual): Integer; cdecl; external libggi2d;
// images
type
TGGI2dImage = Pointer;
function ggi2dCreateImage(Image: TGGI2dImage; Visual, Source: TGGIVisual; x, y, Width, Height: LongWord): Integer; cdecl; external libggi2d;
function ggi2dDestroyImage(Image: TGGI2dImage): Integer; cdecl; external libggi2d;
function ggi2dCompatibleImage(Visual: TGGIVisual; Image: TGGI2dImage): Integer; cdecl; external libggi2d;
// graphics context
type
TGGI2dArcmode = (GGI2D_ARC_SECTOR, GGI2D_ARC_SEGMENT);
TGGI2dPolymode = (GGI2D_POLY_EVENODD, GGI2D_POLY_WINDING);
TGGI2DOperator = (
GGI2D_NOOP, // dest = dest
GGI2D_INVERT, // dest = ~dest
GGI2D_SET, // dest = color
GGI2D_SET_INVERTED, // dest = ~color
GGI2D_AND, // dest = (dest & color)
GGI2D_NAND, // dest = ~(dest & color)
GGI2D_AND_REVERSE, // dest = ~dest & color
GGI2D_AND_INVERTED, // dest = dest & ~color
GGI2D_OR, // dest = (dest | color)
GGI2D_NOR, // dest = ~(dest | color)
GGI2D_OR_REVERSE, // dest = ~dest & color
GGI2D_OR_INVERTED, // dest = dest & ~color
GGI2D_XOR, // dest = (dest ^ color)
GGI2D_EQUIV, // dest = ~(dest ^ color
GGI2D_ADD, // dest = dest + color
GGI2D_SUB); // dest = dest - color
TGGI2dCoord = record
x, y: SmallInt;
end;
function ggi2dSetClip(Visual: TGGIVisual; x1, y1, x2, y2: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dPointVisible(Visual: TGGIVisual; x, y: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dRectVisible(Visual: TGGIVisual; x1, y1, x2, y2: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dSetArcMode(Visual: TGGIVisual; Mode: TGGI2dArcmode): Integer; cdecl; external libggi2d;
function ggi2dGetArcMode(Visual: TGGIVisual): TGGI2dArcmode; cdecl; external libggi2d;
function ggi2dSetPolyMode(Visual: TGGIVisual; Mode: TGGI2dPolymode): Integer; cdecl; external libggi2d;
function ggi2dGetPolyMode(Visual: TGGIVisual): TGGI2dPolymode; cdecl; external libggi2d;
function ggi2dSetLineDash(Visual: TGGIVisual; var Dash: LongWord; Size: LongWord): Integer; cdecl; external libggi2d;
function ggi2dGetLineDash(Visual: TGGIVisual; var Dash: LongWord; var Size: LongWord): Integer; cdecl; external libggi2d;
function ggi2dSetAppendMode(Visual: TGGIVisual; Append: Integer): Integer; cdecl; external libggi2d;
function ggi2dGetAppendMode(Visual: TGGIVisual): Integer; cdecl; external libggi2d;
function ggi2dSetDrawColor(Visual: TGGIVisual; Color: TGGIPixel): Integer; cdecl; external libggi2d;
function ggi2dGetDrawColor(Visual: TGGIVisual): TGGIPixel; cdecl; external libggi2d;
function ggi2dSetFillColor(Visual: TGGIVisual; Color: TGGIPixel): Integer; cdecl; external libggi2d;
function ggi2dGetFillColor(Visual: TGGIVisual): TGGIPixel; cdecl; external libggi2d;
function ggi2dSetFillTexture(Visual: TGGIVisual; RefPoint: TGGI2dCoord; Texture: TGGI2dImage): Integer; cdecl; external libggi2d;
function ggi2dGetFillTexture(Visual: TGGIVisual; var RefPoint: TGGI2dCoord; var Texture: TGGI2dImage): Integer; cdecl; external libggi2d;
function ggi2dSetOperator(Visual: TGGIVisual; Oper: TGGI2dOperator): Integer; cdecl; external libggi2d;
function ggi2dGetOperator(Visual: TGGIVisual): TGGI2dOperator; cdecl; external libggi2d;
// drawing
type
TGGI2dScanline = record
x1, x2, y: SmallInt;
end;
TGGI2dLine = record
x1, y1, x2, y2: SmallInt;
end;
// primitives
function ggi2dPutPixel(Visual: TGGIVisual; x, y: SmallInt; Color: TGGIPixel): Integer; cdecl; external libggi2d;
function ggi2dDrawPixel(Visual: TGGIVisual; x, y: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dFillPixel(Visual: TGGIVisual; x, y: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dDrawPixels(Visual: TGGIVisual; var Coords: TGGI2dCoord; Count: LongWord): Integer; cdecl; external libggi2d;
function ggi2dScanLine(Visual: TGGIVisual; x1, x2, y: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dScanLines(Visual: TGGIVisual; var Scanlines: TGGI2dScanline; Count: LongWord): Integer; cdecl; external libggi2d;
function ggi2dHLine(Visual: TGGIVisual; x1, x2, y: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dVLine(Visual: TGGIVisual; x, y1, y2: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dDrawRect(Visual: TGGIVisual; x1, y1, x2, y2: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dFillRect(Visual: TGGIVisual; x1, y1, x2, y2: SmallInt): Integer; cdecl; external libggi2d;
// curves
function ggi2dLine(Visual: TGGIVisual; x1, y1, x2, y2: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dDrawLines(Visual: TGGIVisual; var Lines: TGGI2dLine; Count: LongWord): Integer; cdecl; external libggi2d;
function ggi2dDrawCircle(Visual: TGGIVisual; x, y, r: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dFillCircle(Visual: TGGIVisual; x, y, r: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dDrawEllipse(Visual: TGGIVisual; x, y, rx, ry: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dFillEllipse(Visual: TGGIVisual; x, y, rx, ry: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dDrawArc(Visual: TGGIVisual; x, y, rx, ry: SmallInt; Start, AEnd: Single; Close: Integer): Integer; cdecl; external libggi2d;
function ggi2dFillArc(Visual: TGGIVisual; x, y, rx, ry: SmallInt; Start, AEnd: Single): Integer; cdecl; external libggi2d;
function ggi2dBezier(Visual: TGGIVisual; x1, y1, x2, y2, x3, y3, x4, y4: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dTrapezoid(Visual: TGGIVisual; xl1, xr1, y1, xl2, xr2, y2: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dTriangle(Visual: TGGIVisual; x1, y1, x2, y2, x3, y3: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dDrawPoly(Visual: TGGIVisual; var Coords: TGGI2dCoord; Count: LongWord): Integer; cdecl; external libggi2d;
function ggi2dFillPoly(Visual: TGGIVisual; var Coords: TGGI2dCoord; Count: LongWord): Integer; cdecl; external libggi2d;
function ggi2dFillPolys(Visual: TGGIVisual; var Coords: TGGI2dCoord; var Counts: LongWord; Count: LongWord): Integer; cdecl; external libggi2d;
// blitting
function ggi2dCopyBox(Visual: TGGIVisual; x, y, w, h, nx, ny: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dCrossBlit(Src: TGGIVisual; sx, sy, w, h: SmallInt; Dest: TGGIVisual; dx, dy: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dBlit(
Visual: TGGIVisual; dx, dy: SmallInt;
Src: TGGI2dImage; sx, sy, Width, Height: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dStretchBlit(
Visual: TGGIVisual; dx, dy, DWith, DHeight: SmallInt;
Src: TGGI2dImage; sx, sy, SWidth, SHeight: SmallInt): Integer; cdecl; external libggi2d;
function ggi2dBlitOp(
Visual: TGGIVisual; dx, dy: SmallInt;
Src1: TGGI2dImage; s1x, s1y: SmallInt;
Src2: TGGI2dImage; s2x, s2y: SmallInt;
Width, Height: SmallInt; Oper: TGGI2dOperator): Integer; cdecl; external libggi2d;
function ggi2dStretchBlitOp(
Visual: TGGIVisual; dx, dy, DWidth, DHeight: SmallInt;
Src1: TGGI2dImage; s1x, s1y: SmallInt;
Src2: TGGI2dImage; s2x, s2y: SmallInt;
SWidth, SHeight: SmallInt; Oper: TGGI2dOperator): Integer; cdecl; external libggi2d;
implementation
end.