summaryrefslogtreecommitdiff
path: root/packages/libgd/src
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-01-26 23:36:53 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-01-26 23:36:53 +0000
commit085f07f9d66cd0fe47fdb69e54e10ab010b15a1b (patch)
tree943bf53527b83defb7065691908b19ccb5168f3e /packages/libgd/src
parent152df1b5658e4ee20cd65f6837e6ec170da86173 (diff)
downloadfpc-085f07f9d66cd0fe47fdb69e54e10ab010b15a1b.tar.gz
* libgd moved
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@10005 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/libgd/src')
-rw-r--r--packages/libgd/src/gd.pp416
1 files changed, 416 insertions, 0 deletions
diff --git a/packages/libgd/src/gd.pp b/packages/libgd/src/gd.pp
new file mode 100644
index 0000000000..e52ee2b925
--- /dev/null
+++ b/packages/libgd/src/gd.pp
@@ -0,0 +1,416 @@
+{
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 1999-2000 by Michael Van Canneyt, member of
+ the Free Pascal development team
+
+ This file implements an interface to the gd library.
+
+ See the file COPYING.FPC, included in this distribution,
+ for details about the copyright.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+unit gd;
+
+ interface
+
+{$linklib c}
+{$linklib m}
+{$linklib png}
+{$linklib gd}
+{$ifdef hasttf}
+{$linklib ttf}
+{$endif hasttf}
+
+{$PACKRECORDS C}
+
+const
+
+ libgd = 'gd';
+ libc = 'c';
+
+ GD_H = 1;
+ DEFAULT_FONTPATH = '/usr/share/fonts/truetype';
+ PATHSEPARATOR = ':';
+ gdMaxColors = 256;
+
+type
+ PByte = ^Byte;
+ PPByte = ^PByte;
+ PVoid = Pointer;
+ PFile = Pointer;
+
+ PGDIMAGESTRUCT = ^gdImage;
+ gdImage = record
+ pixels : PPbyte;
+ sx : longint;
+ sy : longint;
+ colorsTotal : longint;
+ red : array[0..(gdMaxColors)-1] of longint;
+ green : array[0..(gdMaxColors)-1] of longint;
+ blue : array[0..(gdMaxColors)-1] of longint;
+ open : array[0..(gdMaxColors)-1] of longint;
+ transparent : longint;
+ polyInts : Plongint;
+ polyAllocated : longint;
+ brush : PgdImageStruct;
+ tile : PgdImageStruct;
+ brushColorMap : array[0..(gdMaxColors)-1] of longint;
+ tileColorMap : array[0..(gdMaxColors)-1] of longint;
+ styleLength : longint;
+ stylePos : longint;
+ style : Plongint;
+ interlace : longint;
+ end;
+
+ gdImageStruct = gdImage;
+ pgdImage = ^gdImage;
+ gdImagePtr = PgdImage;
+
+ gdFont = record
+ nchars : longint;
+ offset : longint;
+ w : longint;
+ h : longint;
+ data : Pchar;
+ end;
+ pgdFont = ^gdFont;
+ gdFontPtr = PgdFont;
+
+var
+{$ifndef darwin}
+ gdFontLarge : gdFontPtr; cvar; external;
+ gdFontSmall : gdFontPtr; cvar; external;
+ gdFontGiant : gdFontPtr; cvar; external;
+ gdFontMediumBold : gdFontPtr; cvar; external;
+ gdFontTiny : gdFontPtr; cvar; external;
+{$else darwin}
+ gdFontLarge : gdFontPtr; external libgd name 'gdFontLarge';
+ gdFontSmall : gdFontPtr; external libgd name 'gdFontSmall';
+ gdFontGiant : gdFontPtr; external libgd name 'gdFontGiant';
+ gdFontMediumBold : gdFontPtr; external libgd name 'gdFontMediumBold';
+ gdFontTiny : gdFontPtr; external libgd name 'gdFontTiny';
+{$endif darwin}
+
+const
+ gdDashSize = 4;
+ gdStyled = -(2);
+ gdBrushed = -(3);
+ gdStyledBrushed = -(4);
+ gdTiled = -(5);
+ gdTransparent = -(6);
+
+type
+
+ gdSource = record
+ source : function (context:Pointer; buffer:Pchar; len:longint):longint;cdecl;
+ context : pointer;
+ end;
+ pgdSource = ^gdSource;
+ gdSourcePtr = PgdSource;
+
+ gdSink = record
+ sink : function (context:Pvoid; buffer:Pchar; len:longint):longint;cdecl;
+ context : pointer;
+ end;
+ pgdSink = ^gdSink;
+ gdSinkPtr = PgdSink;
+
+ gdPoint = record
+ x : longint;
+ y : longint;
+ end;
+ pgdPoint = ^gdPoint;
+ gdPointPtr = PgdPoint;
+
+ pgdIOCtx = ^gdIOCtx;
+ gdIOCtx = record
+ getC : function (_para1:PgdIOCtx):longint;cdecl;
+ getBuf : function (_para1:PgdIOCtx; _para2:pointer; _para3:longint):longint;
+ putC : procedure (_para1:PgdIOCtx; _para2:longint);
+ putBuf : function (_para1:PgdIOCtx; _para2:pointer; _para3:longint):longint;
+ seek : function (_para1:PgdIOCtx; _para2:longint):longint;
+ tell : function (_para1:PgdIOCtx):longint;
+ free : procedure (_para1:PgdIOCtx);
+ end;
+ GDIOCTXPTR = pgdIOCtx;
+
+{ Translated from gd_io.h}
+function fopen(a,b:pchar):pFile; cdecl;external libc;
+procedure fclose(a:pFile); cdecl;external libc;
+
+procedure Putword(w:longint; ctx:PgdIOCtx); cdecl; external libgd;
+procedure Putchar(c:longint; ctx:PgdIOCtx); cdecl; external libgd;
+procedure gdPutC(c:byte; ctx:PgdIOCtx); cdecl; external libgd;
+function gdPutBuf(_para1:pointer; _para2:longint; _para3:PgdIOCtx):longint; cdecl; external libgd;
+procedure gdPutWord(w:longint; ctx:PgdIOCtx); cdecl; external libgd;
+procedure gdPutInt(w:longint; ctx:PgdIOCtx); cdecl; external libgd;
+function gdGetC(ctx:PgdIOCtx):longint; cdecl; external libgd;
+function gdGetBuf(_para1:pointer; _para2:longint; _para3:PgdIOCtx):longint; cdecl; external libgd;
+function gdGetByte(result:Plongint; ctx:PgdIOCtx):longint; cdecl; external libgd;
+function gdGetWord(result:Plongint; ctx:PgdIOCtx):longint; cdecl; external libgd;
+function gdGetInt(result:Plongint; ctx:PgdIOCtx):longint; cdecl; external libgd;
+function gdSeek(ctx:PgdIOCtx; _para2:longint):longint; cdecl; external libgd;
+function gdTell(ctx:PgdIOCtx):longint; cdecl; external libgd;
+
+function gdImageCreate(sx:longint; sy:longint):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromPng(fd:PFILE):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromPngCtx(inIO:gdIOCtxPtr):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromWBMP(inFile:PFILE):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromWBMPCtx(infile:PgdIOCtx):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromJpeg(infile:PFILE):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromJpegCtx(infile:PgdIOCtx):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromPngSource(infile:gdSourcePtr):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromGd(infile:PFILE):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromGdCtx(infile:gdIOCtxPtr):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromGd2(infile:PFILE):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromGd2Ctx(infile:gdIOCtxPtr):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromGd2Part(infile:PFILE; srcx:longint; srcy:longint; w:longint; h:longint):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromGd2PartCtx(infile:gdIOCtxPtr; srcx:longint; srcy:longint; w:longint; h:longint):gdImagePtr; cdecl; external libgd;
+function gdImageCreateFromXbm(fd:PFILE):gdImagePtr; cdecl; external libgd;
+procedure gdImageDestroy(im:gdImagePtr); cdecl; external libgd;
+procedure gdImageSetPixel(im:gdImagePtr; x:longint; y:longint; color:longint); cdecl; external libgd;
+function gdImageGetPixel(im:gdImagePtr; x:longint; y:longint):longint; cdecl; external libgd;
+procedure gdImageLine(im:gdImagePtr; x1:longint; y1:longint; x2:longint; y2:longint; color:longint); cdecl; external libgd;
+procedure gdImageDashedLine(im:gdImagePtr; x1:longint; y1:longint; x2:longint; y2:longint; color:longint); cdecl; external libgd;
+procedure gdImageRectangle(im:gdImagePtr; x1:longint; y1:longint; x2:longint; y2:longint; color:longint); cdecl; external libgd;
+procedure gdImageFilledRectangle(im:gdImagePtr; x1:longint; y1:longint; x2:longint; y2:longint; color:longint); cdecl; external libgd;
+function gdImageBoundsSafe(im:gdImagePtr; x:longint; y:longint):longint; cdecl; external libgd;
+procedure gdImageChar(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; c:longint; color:longint); cdecl; external libgd;
+procedure gdImageCharUp(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; c:longint; color:longint); cdecl; external libgd;
+procedure gdImageString(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:Pbyte; color:longint); cdecl; external libgd;
+procedure gdImageStringUp(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:Pbyte; color:longint); cdecl; external libgd;
+procedure gdImageString16(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:Pword; color:longint); cdecl; external libgd;
+procedure gdImageStringUp16(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:Pword; color:longint); cdecl; external libgd;
+{$ifdef HasTTF}
+function gdImageStringTTF(im:PgdImage; brect:Plongint; fg:longint; fontlist:Pchar; ptsize:double; angle:double; x:longint; y:longint; astring:Pchar):Pchar; cdecl; external libgd;
+function gdImageStringFT(im:PgdImage; brect:Plongint; fg:longint; fontlist:Pchar; ptsize:double; angle:double; x:longint; y:longint; astring:Pchar):Pchar; cdecl; external libgd;
+{$endif hasTTF}
+procedure gdImagePolygon(im:gdImagePtr; p:gdPointPtr; n:longint; c:longint); cdecl; external libgd;
+procedure gdImageFilledPolygon(im:gdImagePtr; p:gdPointPtr; n:longint; c:longint); cdecl; external libgd;
+function gdImageColorAllocate(im:gdImagePtr; r:longint; g:longint; b:longint):longint; cdecl; external libgd;
+function gdImageColorClosest(im:gdImagePtr; r:longint; g:longint; b:longint):longint; cdecl; external libgd;
+function gdImageColorExact(im:gdImagePtr; r:longint; g:longint; b:longint):longint; cdecl; external libgd;
+function gdImageColorResolve(im:gdImagePtr; r:longint; g:longint; b:longint):longint; cdecl; external libgd;
+procedure gdImageColorDeallocate(im:gdImagePtr; color:longint); cdecl; external libgd;
+procedure gdImageColorTransparent(im:gdImagePtr; color:longint); cdecl; external libgd;
+procedure gdImagePaletteCopy(dst:gdImagePtr; src:gdImagePtr); cdecl; external libgd;
+procedure gdImagePng(im:gdImagePtr; _out:PFILE); cdecl; external libgd;
+procedure gdImagePngCtx(im:gdImagePtr; _out:PgdIOCtx); cdecl; external libgd;
+procedure gdImageWBMP(image:gdImagePtr; fg:longint; _out:PFILE); cdecl; external libgd;
+procedure gdImageWBMPCtx(image:gdImagePtr; fg:longint; _out:PgdIOCtx); cdecl; external libgd;
+procedure gdFree(m:Pvoid); cdecl; external libgd;
+function gdImageWBMPPtr(im:gdImagePtr; size:Plongint; fg:longint):pointer; cdecl; external libgd;
+procedure gdImageJpeg(im:gdImagePtr; _out:PFILE; quality:longint); cdecl; external libgd;
+procedure gdImageJpegCtx(im:gdImagePtr; _out:PgdIOCtx; quality:longint); cdecl; external libgd;
+function gdImageJpegPtr(im:gdImagePtr; size:Plongint; quality:longint):pointer; cdecl; external libgd;
+procedure gdImagePngToSink(im:gdImagePtr; _out:gdSinkPtr); cdecl; external libgd;
+procedure gdImageGd(im:gdImagePtr; _out:PFILE); cdecl; external libgd;
+procedure gdImageGd2(im:gdImagePtr; _out:PFILE; cs:longint; fmt:longint); cdecl; external libgd;
+function gdImagePngPtr(im:gdImagePtr; size:Plongint):pointer; cdecl; external libgd;
+function gdImageGdPtr(im:gdImagePtr; size:Plongint):pointer; cdecl; external libgd;
+function gdImageGd2Ptr(im:gdImagePtr; cs:longint; fmt:longint; size:Plongint):pointer; cdecl; external libgd;
+procedure gdImageArc(im:gdImagePtr; cx:longint; cy:longint; w:longint; h:longint; s:longint; e:longint; color:longint); cdecl; external libgd;
+procedure gdImageFillToBorder(im:gdImagePtr; x:longint; y:longint; border:longint; color:longint); cdecl; external libgd;
+procedure gdImageFill(im:gdImagePtr; x:longint; y:longint; color:longint); cdecl; external libgd;
+procedure gdImageCopy(dst:gdImagePtr; src:gdImagePtr; dstX:longint; dstY:longint; srcX:longint; srcY:longint; w:longint; h:longint); cdecl; external libgd;
+procedure gdImageCopyMerge(dst:gdImagePtr; src:gdImagePtr; dstX:longint; dstY:longint; srcX:longint; srcY:longint; w:longint; h:longint; pct:longint); cdecl; external libgd;
+procedure gdImageCopyMergeGray(dst:gdImagePtr; src:gdImagePtr; dstX:longint; dstY:longint; srcX:longint; srcY:longint; w:longint; h:longint; pct:longint); cdecl; external libgd;
+procedure gdImageCopyResized(dst:gdImagePtr; src:gdImagePtr; dstX:longint; dstY:longint; srcX:longint; srcY:longint; dstW:longint; dstH:longint; srcW:longint; srcH:longint); cdecl; external libgd;
+procedure gdImageSetBrush(im:gdImagePtr; brush:gdImagePtr); cdecl; external libgd;
+procedure gdImageSetTile(im:gdImagePtr; tile:gdImagePtr); cdecl; external libgd;
+procedure gdImageSetStyle(im:gdImagePtr; style:Plongint; noOfPixels:longint); cdecl; external libgd;
+procedure gdImageInterlace(im:gdImagePtr; interlaceArg:longint); cdecl; external libgd;
+
+{ Translated macros }
+function gdImageSX(im : pgdimage) : longint;
+function gdImageSY(im : pgdimage) : longint;
+function gdImageColorsTotal(im : pgdimage) : longint;
+function gdImageRed(im : pgdimage; c : longint): longint;
+function gdImageGreen(im : pgdimage; c : longint): longint;
+function gdImageBlue(im : pgdimage; c : longint): longint;
+function gdImageGetTransparent(im : pgdimage) : longint;
+function gdImageGetInterlaced(im : pgdimage) : longint;
+
+function gdNewFileCtx(_para1:PFILE):PgdIOCtx; cdecl; external libgd;
+function gdNewDynamicCtx(_para1:longint; _para2:pointer):PgdIOCtx; cdecl; external libgd;
+function gdNewSSCtx(infile:gdSourcePtr; _out:gdSinkPtr):PgdIOCtx; cdecl; external libgd;
+function gdDPExtractData(ctx:pointer; size:Plongint):pointer; cdecl; external libgd;
+
+{overloaded pascal functions}
+function fopen(a,b:string):pFile;
+procedure gdImageChar(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; c:char; color:longint);
+procedure gdImageCharUp(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; c:char; color:longint);
+procedure gdImageString(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+procedure gdImageStringUp(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+procedure gdImageString16(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+procedure gdImageStringUp16(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+{$ifdef hasttf}
+function gdImageStringTTF(im:PgdImage; brect:Plongint; fg:longint; fontlist:string; ptsize:double; angle:double; x:longint; y:longint; astring:string): string;
+function gdImageStringFT(im:PgdImage; brect:Plongint; fg:longint; fontlist:string; ptsize:double; angle:double; x:longint; y:longint; astring:string):string;
+{$endif}
+
+
+const
+ GD2_CHUNKSIZE = 128;
+ GD2_CHUNKSIZE_MIN = 64;
+ GD2_CHUNKSIZE_MAX = 4096;
+ GD2_VERS = 1;
+ GD2_ID = 'gd2';
+ GD2_FMT_RAW = 1;
+ GD2_FMT_COMPRESSED = 2;
+
+function gdImageCompare(im1:gdImagePtr; im2:gdImagePtr):longint;cdecl; external libgd;
+
+const
+ GD_CMP_IMAGE = 1;
+ GD_CMP_NUM_COLORS = 2;
+ GD_CMP_COLOR = 4;
+ GD_CMP_SIZE_X = 8;
+ GD_CMP_SIZE_Y = 16;
+ GD_CMP_TRANSPARENT = 32;
+ GD_CMP_BACKGROUND = 64;
+ GD_CMP_INTERLACE = 128;
+ GD_RESOLUTION = 96;
+
+implementation
+
+ function gdImageSX(im : pgdimage) : longint;
+ begin
+ gdImageSX:=im^.sx;
+ end;
+ function gdImageSY(im : pgdimage) : longint;
+ begin
+ gdImageSY:=im^.sy;
+ end;
+ function gdImageColorsTotal(im : pgdimage) : longint;
+ begin
+ gdImageColorsTotal:=im^.colorsTotal;
+ end;
+ function gdImageGetTransparent(im : pgdimage) : longint;
+ begin
+ gdImageGetTransparent:=im^.transparent;
+ end;
+ function gdImageGetInterlaced(im : pgdimage) : longint;
+ begin
+ gdImageGetInterlaced:=im^.interlace;
+ end;
+
+ function gdImageRed(im : pgdimage; c : longint): longint;
+
+ begin
+ gdImageRed:=im^.red[c];
+ end;
+
+ function gdImageGreen(im : pgdimage; c : longint): longint;
+
+ begin
+ gdImageGreen := im^.green[c];
+ end;
+
+ function gdImageBlue(im : pgdimage; c : longint): longint;
+
+ begin
+ gdImageBlue := im^.blue[c];
+ end;
+
+function fopen(a,b:string):pFile;
+
+begin
+{$ifopt h+}
+ fopen:=fopen(pchar(a),pchar(b));
+{$else}
+ a:=a+#0;
+ b:=b+#0;
+ fopen:=fopen(@a[1],@b[1]);
+{$endif}
+end;
+
+procedure gdImageChar(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; c:char; color:longint);
+
+begin
+ gdimagechar(im,f,x,y,ord(c),color);
+end;
+
+procedure gdImageCharUp(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; c:char; color:longint);
+
+begin
+ gdimagecharup(im,f,x,y,ord(c),color);
+end;
+
+procedure gdImageString(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+
+begin
+{$ifopt h+}
+ gdImageString(im,f,x,y,pbyte(pchar(s)),color);
+{$else}
+ s:=s+#0;
+ gdImageString(im,f,x,y,@s[1],color);
+{$endif}
+end;
+
+procedure gdImageStringUp(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+
+begin
+{$ifopt h+}
+ gdImageStringUp(im,f,x,y,pbyte(pchar(s)),color);
+{$else}
+ s:=s+#0;
+ gdImageStringUp(im,f,x,y,pbyte(@s[1]),color);
+{$endif}
+end;
+
+procedure gdImageString16(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+
+begin
+{$ifopt h+}
+ gdImageString16(im,f,x,y,pword(pchar(s)),color);
+{$else}
+ s:=s+#0;
+ gdImageString16(im,f,x,y,pword(@s[1]),color);
+{$endif}
+end;
+
+procedure gdImageStringUp16(im:gdImagePtr; f:gdFontPtr; x:longint; y:longint; s:string; color:longint);
+
+begin
+{$ifopt h+}
+ gdImageStringUp16(im,f,x,y,pword(pchar(s)),color);
+{$else}
+ s:=s+#0;
+ gdImageStringUp16(im,f,x,y,pword(@s[1]),color);
+{$endif}
+end;
+
+{$ifdef hasttf}
+
+function gdImageStringTTF(im:PgdImage; brect:Plongint; fg:longint; fontlist:string; ptsize:double; angle:double; x:longint; y:longint; astring:string): string;
+
+begin
+{$ifopt h+}
+ gdImageStringTTF:=strpas(gdImageStringTTF(im,brect,fg,pchar(fontlist),ptsize,angle,x,y,pchar(astring)));
+{$else}
+ fontlist:=fornlist+#0;
+ astring:=astring+#0;
+ gdImageStringTTF:=strpas(gdImageStringTTF(im,brect,fg,@fontlist[1],ptsize,angle,x,y,@astring[1]));
+{$endif}
+end;
+
+function gdImageStringFT(im:PgdImage; brect:Plongint; fg:longint; fontlist:string; ptsize:double; angle:double; x:longint; y:longint; astring:string):string;
+
+begin
+{$ifopt h+}
+ gdImageStringFT:=strpas(gdImageStringFT(im,brect,fg,pchar(fontlist),ptsize,angle,x,y,pchar(astring)));
+{$else}
+ fontlist:=fornlist+#0;
+ astring:=astring+#0;
+ gdImageStringFT:=strpas(gdImageStringFT(im,brect,fg,@fontlist[1],ptsize,angle,x,y,@astring[1]));
+
+{$endif}
+end;
+{$endif}
+
+end.