diff options
| author | pierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-11-16 10:54:52 +0000 |
|---|---|---|
| committer | pierre <pierre@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-11-16 10:54:52 +0000 |
| commit | 747a59c4dea938d0f9a66ad42eb1ab645517dc76 (patch) | |
| tree | 63d8cd7b19cef7d97cc3fb438ade9d265d3046b9 /packages/libgd | |
| parent | addf3d4e1fc739a5b76a7528006f023901847471 (diff) | |
| download | fpc-747a59c4dea938d0f9a66ad42eb1ab645517dc76.tar.gz | |
* Try to fix compilation failure for go32v2
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@14199 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/libgd')
| -rw-r--r-- | packages/libgd/examples/gdtest.pp | 2 | ||||
| -rw-r--r-- | packages/libgd/examples/gdtestcgi.pp | 2 | ||||
| -rw-r--r-- | packages/libgd/src/gd.pas | 88 |
3 files changed, 55 insertions, 37 deletions
diff --git a/packages/libgd/examples/gdtest.pp b/packages/libgd/examples/gdtest.pp index 3966a87d64..fb8d20db55 100644 --- a/packages/libgd/examples/gdtest.pp +++ b/packages/libgd/examples/gdtest.pp @@ -3,7 +3,7 @@ program gdtest; -uses libgd; +uses gd; var f:pFile; diff --git a/packages/libgd/examples/gdtestcgi.pp b/packages/libgd/examples/gdtestcgi.pp index ea637092d7..154fc8c602 100644 --- a/packages/libgd/examples/gdtestcgi.pp +++ b/packages/libgd/examples/gdtestcgi.pp @@ -3,7 +3,7 @@ program gdtestcgi; -uses libgd; +uses gd; var f:pFile; diff --git a/packages/libgd/src/gd.pas b/packages/libgd/src/gd.pas index f516c3a30b..253f7cccdb 100644 --- a/packages/libgd/src/gd.pas +++ b/packages/libgd/src/gd.pas @@ -10,11 +10,20 @@ unit gd; {$H+} {$MINENUMSIZE 4} + +{$DEFINE FPC_TARGET_SUPPORTS_DYNLIBS} + +{$IFDEF GO32V2} + {$UNDEF FPC_TARGET_SUPPORTS_DYNLIBS} +{$ENDIF GO32V2} + interface uses Classes, +{$IFDEF FPC_TARGET_SUPPORTS_DYNLIBS} dynlibs, +{$ENDIF FPC_TARGET_SUPPORTS_DYNLIBS} ctypes; {$IFDEF UNIX} @@ -29,6 +38,14 @@ uses gdlib = 'bgd.dll'; clib = 'msvcrt.dll'; {$ENDIF} +{$IFDEF GO32V2} + {$DEFINE EXTDECL := cdecl} + {$DEFINE gdlib := } + {$DEFINE clib := } + {$linklib gd} + {$linklib c} + {$UNDEF LOAD_DYNAMICALLY} +{$ENDIF GO32V2} {$IFNDEF LOAD_DYNAMICALLY} {$IFDEF darwin} @@ -56,8 +73,8 @@ const * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation. This software is provided "AS IS." Thomas Boutell and - * Boutell.Com, Inc. disclaim all warranties, either express or implied, - * including but not limited to implied warranties of merchantability and + * Boutell.Com, Inc. disclaim all warranties, either express or implied, + * including but not limited to implied warranties of merchantability and * fitness for a particular purpose, with respect to this code and accompanying * documentation. *) @@ -89,19 +106,19 @@ const (* Image type. See functions below; you will not need to change the elements directly. Use the provided macros to - access sx, sy, the color table, and colorsTotal for + access sx, sy, the color table, and colorsTotal for read-only purposes. *) -(* If 'truecolor' is set true, the image is truecolor; +(* If 'truecolor' is set true, the image is truecolor; pixels are represented by integers, which - must be 32 bits wide or more. + must be 32 bits wide or more. True colors are repsented as follows: ARGB Where 'A'(alpha channel) occupies only the - LOWER 7 BITS of the MSB. This very small + LOWER 7 BITS of the MSB. This very small loss of alpha channel resolution allows gd 2.x to keep backwards compatibility by allowing signed integers to be used to represent colors, @@ -121,7 +138,7 @@ function gdTrueColorGetRed(c: cint): cint; inline; function gdTrueColorGetGreen(c: cint): cint; inline; function gdTrueColorGetBlue(c: cint): cint; inline; -(* This function accepts truecolor pixel values only. The +(* This function accepts truecolor pixel values only. The source color is composited with the destination color based on the alpha channel value of the source color. The resulting color is opaque. *) @@ -146,7 +163,7 @@ type open: array[0..gdMaxColors-1] of cint; (* For backwards compatibility, this is set to the first palette entry with 100% transparency, - and is also set and reset by the + and is also set and reset by the gdImageColorTransparent function. Newer applications can allocate palette entries with any desired level of transparency; however, @@ -172,7 +189,7 @@ type really support multiple levels of transparency in palettes, to my knowledge, as of 2/15/01. Most common browsers will display 100% opaque and - 100% transparent correctly, and do something + 100% transparent correctly, and do something unpredictable and/or undesirable for levels in between. TBB *) alpha: array[0..gdMaxColors-1] of cint; @@ -183,7 +200,7 @@ type (* Should alpha channel be copied, or applied, each time a pixel is drawn? This applies to truecolor images only. No attempt is made to alpha-blend in palette images, - even if semitransparent palette entries exist. + even if semitransparent palette entries exist. To do that, build your image as a truecolor image, then quantize down to 8 bits. *) alphaBlendingFlag: cint; @@ -312,9 +329,9 @@ procedure gdImageDestroy(im: gdImagePtr); EXTDECL; external gdlib {$IFDEF WINDOW (* Replaces or blends with the background depending on the most recent call to gdImageAlphaBlending and the - alpha channel value of 'color'; default is to overwrite. + alpha channel value of 'color'; default is to overwrite. Tiling and line styling are also implemented - here. All other gd drawing functions pass through this call, + here. All other gd drawing functions pass through this call, allowing for many useful effects. *) procedure gdImageSetPixel(im: gdImagePtr; x: cint; y: cint; color: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageSetPixel@16'{$ENDIF}; @@ -346,17 +363,17 @@ procedure gdImageString16(im: gdImagePtr; f: gdFontPtr; x: cint; y: cint; s: pwi procedure gdImageStringUp16(im: gdImagePtr; f: gdFontPtr; x: cint; y: cint; s: pwidechar; color: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageStringUp16@24'{$ENDIF}; (* 2.0.16: for thread-safe use of gdImageStringFT and friends, - call this before allowing any thread to call gdImageStringFT. + call this before allowing any thread to call gdImageStringFT. Otherwise it is invoked by the first thread to invoke - gdImageStringFT, with a very small but real risk of a race condition. + gdImageStringFT, with a very small but real risk of a race condition. Return 0 on success, nonzero on failure to initialize freetype. *) function gdFontCacheSetup(): cint; EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdFontCacheSetup@0'{$ENDIF}; -(* Optional: clean up after application is done using fonts in +(* Optional: clean up after application is done using fonts in BGD_DECLARE( ) gdImageStringFT(). *) procedure gdFontCacheShutdown(); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdFontCacheShutdown@0'{$ENDIF}; (* 2.0.20: for backwards compatibility. A few applications did start calling - this function when it first appeared although it was never documented. + this function when it first appeared although it was never documented. Simply invokes gdFontCacheShutdown. *) procedure gdFreeFontCache(); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdFreeFontCache@0'{$ENDIF}; @@ -374,7 +391,7 @@ type gdFTStringExtra = record flags: cint; (* Logical OR of gdFTEX_ values *) linespacing: double; (* fine tune line spacing for '\n' *) - charmap: cint; + charmap: cint; (* TBB: 2.0.12: may be gdFTEX_Unicode, gdFTEX_Shift_JIS, gdFTEX_Big5, or gdFTEX_Adobe_Custom; @@ -389,13 +406,13 @@ type the last string. NB. The caller is responsible for gdFree'ing - the xshow string. + the xshow string. *) fontpath: pchar; (* if(flags & gdFTEX_RETURNFONTPATHNAME) then, on return, fontpath is a malloc'ed string containing the actual font file path name used, which can be interesting when fontconfig - is in use. + is in use. The caller is responsible for gdFree'ing the fontpath string. @@ -410,20 +427,20 @@ const gdFTEX_DISABLE_KERNING = 8; gdFTEX_XSHOW = 16; (* The default unless gdFTUseFontConfig(1); has been called: - fontlist is a full or partial font file pathname or list thereof + fontlist is a full or partial font file pathname or list thereof (i.e. just like before 2.0.29) *) gdFTEX_FONTPATHNAME = 32; (* Necessary to use fontconfig patterns instead of font pathnames - as the fontlist argument, unless gdFTUseFontConfig(1); has + as the fontlist argument, unless gdFTUseFontConfig(1); has been called. New in 2.0.29 *) gdFTEX_FONTCONFIG = 64; (* Sometimes interesting when fontconfig is used: the fontpath element of the structure above will contain a gdMalloc'd string - copy of the actual font file pathname used, if this flag is set + copy of the actual font file pathname used, if this flag is set when the call is made *) gdFTEX_RETURNFONTPATHNAME = 128; -(* If flag is nonzero, the fontlist parameter to gdImageStringFT +(* If flag is nonzero, the fontlist parameter to gdImageStringFT and gdImageStringFTEx shall be assumed to be a fontconfig font pattern if fontconfig was compiled into gd. This function returns zero if fontconfig is not available, nonzero otherwise. *) @@ -437,7 +454,8 @@ const gdFTEX_Big5 = 2; gdFTEX_Adobe_Custom = 3; -function gdImageStringFTEx(im: gdImagePtr; brect: pcint; fg: cint; fontlist: pchar; ptsize: double; angle: double; x: cint; y: cint; str: pchar; strex: gdFTStringExtraPtr): pchar; EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageStringFTEx@40'{$ENDIF}; +function gdImageStringFTEx(im: gdImagePtr; brect: pcint; fg: cint; fontlist: pchar; ptsize: double; angle: double; x: cint; y: cint; str: pchar; strex: gdFTStringExtraPtr): pchar; EXTDECL; + external gdlib {$IFDEF WINDOWS}name '_gdImageStringFTEx@40'{$ENDIF}; (* Point type for use in polygon drawing. *) type @@ -450,7 +468,7 @@ procedure gdImagePolygon(im: gdImagePtr; p: gdPointPtr; n: cint; c: cint); EXTDE procedure gdImageOpenPolygon(im: gdImagePtr; p: gdPointPtr; n: cint; c: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageOpenPolygon@16'{$ENDIF}; procedure gdImageFilledPolygon(im: gdImagePtr; p: gdPointPtr; n: cint; c: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageFilledPolygon@16'{$ENDIF}; -(* These functions still work with truecolor images, +(* These functions still work with truecolor images, for which they never return error. *) function gdImageColorAllocate(im: gdImagePtr; r: cint; g: cint; b: cint): cint; EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageColorAllocate@16'{$ENDIF}; (* gd 2.0: palette entries with non-opaque transparency are permitted. *) @@ -498,10 +516,10 @@ procedure gdImageColorDeallocate(im: gdImagePtr; color: cint); EXTDECL; external Better yet, don't use these function -- write real truecolor PNGs and JPEGs. The disk space gain of conversion to palette is not great(for small images - it can be negative) and the quality loss is ugly. + it can be negative) and the quality loss is ugly. DIFFERENCES: gdImageCreatePaletteFromTrueColor creates and - returns a new image. gdImageTrueColorToPalette modifies + returns a new image. gdImageTrueColorToPalette modifies an existing image, and the truecolor pixels are discarded. *) function gdImageCreatePaletteFromTrueColor(im: gdImagePtr; ditherFlag: cint; colorsWanted: cint): gdImagePtr; EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageCreatePaletteFromTrueColor@16'{$ENDIF}; @@ -608,7 +626,7 @@ function gdImageGd2Ptr(im: gdImagePtr; cs: cint; fmt: cint; var size: cint): poi gdArc and gdChord are mutually exclusive; gdChord just connects the starting and ending angles with a straight line, while gdArc produces - a rounded edge. gdPie is a synonym for gdArc. + a rounded edge. gdPie is a synonym for gdArc. gdNoFill indicates that the arc or chord should be outlined, not filled. gdEdged, used together with gdNoFill, indicates that the beginning and ending @@ -643,8 +661,8 @@ procedure gdImageCopyResized(dst: gdImagePtr; src: gdImagePtr; dstX: cint; dstY: destination pixel, taking into account what portion of the destination pixel each source pixel represents. This is a floating point operation, but this is not a performance issue - on modern hardware, except for some embedded devices. If the - destination is a palette image, gdImageCopyResized is + on modern hardware, except for some embedded devices. If the + destination is a palette image, gdImageCopyResized is substituted automatically. *) procedure gdImageCopyResampled(dst: gdImagePtr; src: gdImagePtr; dstX: cint; dstY: cint; srcX: cint; srcY: cint; dstW: cint; dstH: cint; srcW: cint; srcH: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageCopyResampled@40'{$ENDIF}; @@ -662,7 +680,7 @@ procedure gdImageSetTile(im: gdImagePtr; tile: gdImagePtr); EXTDECL; external gd procedure gdImageSetAntiAliased(im: gdImagePtr; c: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageSetAntiAliased@8'{$ENDIF}; procedure gdImageSetAntiAliasedDontBlend(im: gdImagePtr; c: cint; dont_blend: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageSetAntiAliasedDontBlend@12'{$ENDIF}; procedure gdImageSetStyle(im: gdImagePtr; style: pcint; noOfPixels: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageSetStyle@12'{$ENDIF}; -(* Line thickness(defaults to 1). Affects lines, ellipses, +(* Line thickness(defaults to 1). Affects lines, ellipses, rectangles, polygons and so forth. *) procedure gdImageSetThickness(im: gdImagePtr; thickness: cint); EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdImageSetThickness@8'{$ENDIF}; (* On or off(1 or 0) for all three of these. *) @@ -698,14 +716,14 @@ function gdImageTrueColorPixel(im: gdImagePtr; x, y: cint): cint; inline; function gdNewFileCtx(p: PFILE): gdIOCtxPtr; EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdNewFileCtx@4'{$ENDIF}; (* If data is null, size is ignored and an initial data buffer is - allocated automatically. NOTE: this function assumes gd has the right - to free or reallocate "data" at will! Also note that gd will free + allocated automatically. NOTE: this function assumes gd has the right + to free or reallocate "data" at will! Also note that gd will free "data" when the IO context is freed. If data is not null, it must point to memory allocated with gdMalloc, or by a call to gdImage[something]Ptr. If not, see gdNewDynamicCtxEx for an alternative. *) function gdNewDynamicCtx(size: cint; data: pointer): gdIOCtxPtr; EXTDECL; external gdlib {$IFDEF WINDOWS}name '_gdNewDynamicCtx@8'{$ENDIF}; (* 2.0.21: if freeFlag is nonzero, gd will free and/or reallocate "data" as - needed as described above. If freeFlag is zero, gd will never free + needed as described above. If freeFlag is zero, gd will never free or reallocate "data," which means that the context should only be used for *reading* an image from a memory buffer, or writing an image to a memory buffer which is already large enough. If the memory buffer is @@ -828,7 +846,7 @@ begin Result :=(c and $FF0000) shr 16; end; -function gdTrueColorGetGreen(c: cint): cint; +function gdTrueColorGetGreen(c: cint): cint; begin Result :=(c and $00FF00) shr 8; end; |
