From 71145fd1949ef6195ebe8d5e8780dcd4cb76835b Mon Sep 17 00:00:00 2001 From: Francesco Saverio Giudice Date: Sun, 16 Sep 2007 20:23:44 +0000 Subject: [PATCH] 2007-09-16 22:30 UTC+0200 Francesco Saverio Giudice * contrib/gd/source/gdwrp.c * changed pointers handling, thanks to Przemek for code --- harbour/contrib/gd/ChangeLog | 4 + harbour/contrib/gd/gdwrp.c | 373 ++++++++++++++++++++++++++--------- 2 files changed, 281 insertions(+), 96 deletions(-) diff --git a/harbour/contrib/gd/ChangeLog b/harbour/contrib/gd/ChangeLog index 4f86a479f0..ac0f1ef0cb 100644 --- a/harbour/contrib/gd/ChangeLog +++ b/harbour/contrib/gd/ChangeLog @@ -8,6 +8,10 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2007-09-16 22:30 UTC+0200 Francesco Saverio Giudice + * contrib/gd/source/gdwrp.c + * changed pointers handling, thanks to Przemek for code + 2007-04-05 10:00 UTC+0200 Lorenzo Fiorini * ported from xHarbour/contrib/gd * changed name of the lib from gdlib to hbgd diff --git a/harbour/contrib/gd/gdwrp.c b/harbour/contrib/gd/gdwrp.c index d6ff8325cc..df36d249cb 100644 --- a/harbour/contrib/gd/gdwrp.c +++ b/harbour/contrib/gd/gdwrp.c @@ -93,6 +93,158 @@ /* Internal functions */ /* ---------------------------------------------------------------------------*/ +/* + ******************* + ** internal function for handling pointers + ** + ** Code of Przemyslaw Czerpak for gdImagePtr + ** adapted also to gdFontPtr + ******************* +*/ + +/* + gdImage ----------------------- + +*/ + +/* gdImage destructor, it's executed automatically + */ +static HB_GARBAGE_FUNC( hb_gdImage_Destructor ) +{ + /* Retrieve image pointer holder */ + gdImagePtr * imPtr = ( gdImagePtr * ) Cargo; + + /* Check if pointer is not NULL to avoid multiple freeing */ + if( * imPtr ) + { + /* Destroy the image */ + gdImageDestroy( * imPtr ); + + /* set pointer to NULL to avoid multiple freeing */ + * imPtr = NULL; + } +} + +/* ---------------------------------------------------------------------------*/ + +/* function returns gdImage pointer or NULL when wrong variable is + * passed or gdImage was freed before + */ +static gdImagePtr hb_parGdImage( int iParam ) +{ + gdImagePtr * imPtr = + ( gdImagePtr * ) hb_parptrGC( hb_gdImage_Destructor, iParam ); + + if( imPtr ) + return * imPtr; + else + return NULL; +} + +/* ---------------------------------------------------------------------------*/ + +/* function create in HVM stack return value item with gdImage pointer + */ +static void hb_retGdImage( gdImagePtr im ) +{ + gdImagePtr * imPtr; + + imPtr = ( gdImagePtr * ) hb_gcAlloc( sizeof( gdImagePtr ), + hb_gdImage_Destructor ); + * imPtr = im; + hb_retptrGC( ( void * ) imPtr ); +} + +/* ---------------------------------------------------------------------------*/ + +#if 0 +/* function returns PHB_ITEM with gdImage pointer + */ +static PHB_ITEM hb_gdImageItemNew( gdImagePtr im ) +{ + gdImagePtr * imPtr; + + imPtr = ( gdImagePtr * ) hb_gcAlloc( sizeof( gdImagePtr ), + hb_gdImage_Destructor ); + * imPtr = im; + return hb_itemPutPtrGC( NULL, ( void * ) imPtr ); +} +#endif + +/* + gdFont ----------------------- + +*/ + +/* gdFont destructor, it's executed automatically + */ +static HB_GARBAGE_FUNC( hb_gdFont_Destructor ) +{ + /* Retrieve Font pointer holder */ + gdFontPtr * fontPtr = ( gdFontPtr * ) Cargo; + + /* Check if pointer is not NULL to avoid multiple freeing */ + if( * fontPtr ) + { + /* Destroy the Font */ + /* + // do nothing, GD handles it directly and gdFontDestroy() not exists + gdFontDestroy( * fontPtr ); + */ + + /* set pointer to NULL to avoid multiple freeing */ + * fontPtr = NULL; + } +} + +/* ---------------------------------------------------------------------------*/ + +/* function returns gdFont pointer or NULL when wrong variable is + * passed or gdFont was freed before + */ +static gdFontPtr hb_parGdFont( int iParam ) +{ + gdFontPtr * fontPtr = + ( gdFontPtr * ) hb_parptrGC( hb_gdFont_Destructor, iParam ); + + if( fontPtr ) + return * fontPtr; + else + return NULL; +} + +/* ---------------------------------------------------------------------------*/ + +/* function create in HVM stack return value item with gdFont pointer + */ +static void hb_retGdFont( gdFontPtr font ) +{ + gdFontPtr * fontPtr; + + fontPtr = ( gdFontPtr * ) hb_gcAlloc( sizeof( gdFontPtr ), + hb_gdFont_Destructor ); + * fontPtr = font; + hb_retptrGC( ( void * ) fontPtr ); +} + +/* ---------------------------------------------------------------------------*/ + +#if 0 +/* function returns PHB_ITEM with gdFont pointer + */ +static PHB_ITEM hb_gdFontItemNew( gdFontPtr font ) +{ + gdFontPtr * fontPtr; + + fontPtr = ( gdFontPtr * ) hb_gcAlloc( sizeof( gdFontPtr ), + hb_gdFont_Destructor ); + * fontPtr = font; + return hb_itemPutPtrGC( NULL, ( void * ) fontPtr ); +} +#endif + +/* ---------------------------------------------------------------------------*/ + static void * LoadImageFromHandle( FHANDLE fhandle, int sz ) { void *iptr; @@ -202,7 +354,7 @@ static void GDImageCreateFrom( int nType ) { /* Retrieve image pointer */ - iptr = hb_parptr( 1 ); + iptr = hb_parGdImage( 1 ); /* Retrieve image size */ sz = hb_parni( 2 ); } @@ -258,7 +410,7 @@ static void GDImageCreateFrom( int nType ) } /* Return image pointer */ - hb_retptr( im ); + hb_retGdImage( im ); /* Free memory */ hb_xfree( iptr ); @@ -282,7 +434,7 @@ static void GDImageSaveTo( int nType ) int level = 0, fg = 0; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr(1); + im = hb_parGdImage( 1 ); /* Get file name or an output handler or NIL it I want a return string */ if ( !( ISNIL(2) || @@ -460,7 +612,7 @@ HB_FUNC( GDIMAGECREATE ) // gdImagePtr gdImageCreate(sx, sy) im = gdImageCreate( sx, sy ); /* Return image pointer */ - hb_retptr( im ); + hb_retGdImage( im ); } else { @@ -502,7 +654,7 @@ HB_FUNC( GDIMAGECREATETRUECOLOR ) // gdImageCreateTrueColor(sx, sy) im = gdImageCreateTrueColor( sx, sy ); /* Return image pointer */ - hb_retptr( im ); + hb_retGdImage( im ); } else { @@ -607,22 +759,42 @@ HB_FUNC( GDIMAGEGD ) // original: void gdImageGD(gdImagePtr im, FILE *out) /* ---------------------------------------------------------------------------*/ +/* + After Przemek changes on hb_*ptr() functions, this is a void function holded only + for compatibility with GD library. +*/ HB_FUNC( GDIMAGEDESTROY ) // gdImageDestroy(gdImagePtr im) { if ( hb_pcount() == 1 && hb_parinfo( 1 ) & HB_IT_POINTER ) { + /* gdImagePtr im; + */ /* Retrieve image pointer */ + /* im = (gdImagePtr)hb_parptr( 1 ); + */ /* Destroy the image */ + /* gdImageDestroy( im ); + */ } -} + else + { + // Parameter error + { + hb_errRT_BASE_SubstR( EG_ARG, 0, NULL, + "GDIMAGEDESTROY", 1, + hb_paramError( 1 ) ); + return; + } + } +} /* ---------------------------------------------------------------------------*/ @@ -644,7 +816,7 @@ HB_FUNC( GDIMAGESETPIXEL ) // void gdImageSetPixel(gdImagePtr im, int x, int y, int color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord values */ x = hb_parni( 2 ); @@ -687,7 +859,7 @@ HB_FUNC( GDIMAGELINE ) // void gdImageLine(gdImagePtr im, int x1, int y1, int x2 int color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord values */ x1 = hb_parni( 2 ); @@ -733,7 +905,7 @@ HB_FUNC( GDIMAGEDASHEDLINE ) // void gdImageDashedLine(gdImagePtr im, int x1, in int color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord values */ x1 = hb_parni( 2 ); @@ -783,7 +955,7 @@ HB_FUNC( GDIMAGEPOLYGON ) // original: void gdImagePolygon(gdImagePtr im, gdPoin gdPoint points[50]; // TODO: make this dynamic /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point array */ pPoints = hb_param( 2, HB_IT_ARRAY ); @@ -840,7 +1012,7 @@ HB_FUNC( GDIMAGEOPENPOLYGON ) // original: void gdImageOpenPolygon(gdImagePtr im gdPoint points[50]; // TODO: make this dynamic /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point array */ pPoints = hb_param( 2, HB_IT_ARRAY ); @@ -894,7 +1066,7 @@ HB_FUNC( GDIMAGERECTANGLE ) // void gdImageRectangle(gdImagePtr im, int x1, int int color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord values */ x1 = hb_parni( 2 ); @@ -939,7 +1111,7 @@ HB_FUNC( GDIMAGERECTANGLE ) // void gdImageRectangle(gdImagePtr im, int x1, int // int cx, cy, w, h, color; // // /* Retrieve image pointer */ -// im = (gdImagePtr) hb_parptr( 1 ); +// im = hb_parGdImage( 1 ); // // /* Retrieve point values */ // cx = hb_parni( 2 ); @@ -989,7 +1161,7 @@ HB_FUNC( GDIMAGEFILLEDPOLYGON ) // original: void gdImageFilledPolygon(gdImagePt gdPoint points[50]; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point array */ pPoints = hb_param( 2, HB_IT_ARRAY ); @@ -1042,7 +1214,7 @@ HB_FUNC( GDIMAGEFILLEDRECTANGLE ) // void gdImageFilledRectangle(gdImagePtr im, int color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord values */ x1 = hb_parni( 2 ); @@ -1089,7 +1261,7 @@ HB_FUNC( GDIMAGEARC ) // void gdImageArc(gdImagePtr im, int cx, int cy, int w, i int cx, cy, w, h, s, e, color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point values */ cx = hb_parni( 2 ); @@ -1139,7 +1311,7 @@ HB_FUNC( GDIMAGEFILLEDARC ) // void gdImageFilledArc(gdImagePtr im, int cx, int int cx, cy, w, h, s, e, color, style; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point values */ cx = hb_parni( 2 ); @@ -1191,7 +1363,7 @@ HB_FUNC( GDIMAGEFILLEDELLIPSE ) // void gdImageFilledEllipse(gdImagePtr im, int int cx, cy, w, h, color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point values */ cx = hb_parni( 2 ); @@ -1235,7 +1407,7 @@ HB_FUNC( GDIMAGEFILLTOBORDER ) // void gdImageFillToBorder(gdImagePtr im, int x, int x, y, border, color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point values */ x = hb_parni( 2 ); @@ -1279,7 +1451,7 @@ HB_FUNC( GDIMAGEELLIPSE ) // void gdImageEllipse(gdImagePtr im, int cx, int cy, int cx, cy, w, h, color; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point values */ cx = hb_parni( 2 ); @@ -1323,7 +1495,7 @@ HB_FUNC( GDIMAGEFILL ) // void gdImageFill(gdImagePtr im, int x, int y, int colo int x, y, color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve point values */ x = hb_parni( 2 ); @@ -1360,7 +1532,7 @@ HB_FUNC( GDIMAGESETANTIALIASED ) // void gdImageSetAntiAliased(gdImagePtr im, in int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve color value */ color = hb_parni( 2 ); @@ -1396,7 +1568,7 @@ HB_FUNC( GDIMAGESETANTIALIASEDDONTBLEND ) // void gdImageSetAntiAliasedDontBlend int dont_blend; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve color value */ color = hb_parni( 2 ); @@ -1433,10 +1605,10 @@ HB_FUNC( GDIMAGESETBRUSH ) // void gdImageSetBrush(gdImagePtr im, gdImagePtr bru gdImagePtr brush; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve brush pointer */ - brush = (gdImagePtr)hb_parptr( 2 ); + brush = hb_parGdImage( 2 ); /* Set Brush */ gdImageSetBrush(im, brush); @@ -1467,10 +1639,10 @@ HB_FUNC( GDIMAGESETTILE ) // void gdImageSetTile(gdImagePtr im, gdImagePtr tile) gdImagePtr tile; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve tile pointer */ - tile = (gdImagePtr)hb_parptr( 2 ); + tile = hb_parGdImage( 2 ); /* Set Tile */ gdImageSetTile(im, tile); @@ -1507,7 +1679,7 @@ HB_FUNC( GDIMAGESETSTYLE ) // original: void gdImageSetStyle(gdImagePtr im, int int styles[50]; // TODO: make this dynamic /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve style array */ pStyles = hb_param( 2, HB_IT_ARRAY ); @@ -1547,7 +1719,7 @@ HB_FUNC( GDIMAGESETTHICKNESS ) // void gdImageSetThickness(gdImagePtr im, int th int oldthick; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve thickness value */ thickness = hb_parni( 2 ); @@ -1587,7 +1759,7 @@ HB_FUNC( GDIMAGEALPHABLENDING ) // void gdImageAlphaBlending(gdImagePtr im, int int blending; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve blending value - logical */ blending = hb_parl( 2 ); @@ -1621,7 +1793,7 @@ HB_FUNC( GDIMAGESAVEALPHA ) // void gdImageSaveAlpha(gdImagePtr im, int saveFlag int saveFlag; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve saveFlag value - logical */ saveFlag = hb_parl( 2 ); @@ -1658,7 +1830,7 @@ HB_FUNC( GDIMAGESETCLIP ) // void gdImageSetClip(gdImagePtr im, int x1, int y1, int x1, y1, x2, y2; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coords value */ x1 = hb_parni( 2 ); @@ -1697,7 +1869,7 @@ HB_FUNC( GDIMAGEGETCLIP ) // original: void gdImageGetClip(gdImagePtr im, int *x PHB_ITEM pClipArray; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Get clipping rectangle */ gdImageGetClip(im, &x1, &y1, &x2, &y2); @@ -1741,7 +1913,7 @@ HB_FUNC( GDIMAGECOLORSTOTAL ) // int gdImageColorsTotal(gdImagePtr im) gdImagePtr im; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Get Colors total */ hb_retni( gdImageColorsTotal(im) ); @@ -1772,7 +1944,7 @@ HB_FUNC( GDIMAGEALPHA ) // int gdImageAlpha(gdImagePtr im, int color) int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve saveFlag value */ color = hb_parni( 2 ); @@ -1806,7 +1978,7 @@ HB_FUNC( GDIMAGERED ) // int gdImageRed(gdImagePtr im, int color) int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve saveFlag value */ color = hb_parni( 2 ); @@ -1840,7 +2012,7 @@ HB_FUNC( GDIMAGEGREEN ) // int gdImageGreen(gdImagePtr im, int color) int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve saveFlag value */ color = hb_parni( 2 ); @@ -1874,7 +2046,7 @@ HB_FUNC( GDIMAGEBLUE ) // int gdImageBlue(gdImagePtr im, int color) int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve saveFlag value */ color = hb_parni( 2 ); @@ -1906,7 +2078,7 @@ HB_FUNC( GDIMAGESX ) // int gdImageSX(gdImagePtr im) gdImagePtr im; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Get Image Width in pixels */ hb_retni( gdImageSX(im) ); @@ -1935,7 +2107,7 @@ HB_FUNC( GDIMAGESY ) // int gdImageSX(gdImagePtr im) gdImagePtr im; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Get Image Height in pixels */ hb_retni( gdImageSY(im) ); @@ -1967,7 +2139,7 @@ HB_FUNC( GDIMAGEGETPIXEL ) // int gdImageGetPixel(gdImagePtr im, int x, int y) int x,y; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord value */ x = hb_parni( 2 ); @@ -2003,7 +2175,7 @@ HB_FUNC( GDIMAGEBOUNDSSAFE ) // int gdImageBoundsSafe(gdImagePtr im, int x, int int x,y; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord value */ x = hb_parni( 2 ); @@ -2036,7 +2208,7 @@ HB_FUNC( GDIMAGEGETINTERLACED ) // int gdImageGetInterlaced(gdImagePtr im) gdImagePtr im; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Image is interlaced ? */ hb_retl( gdImageGetInterlaced(im) ); @@ -2065,7 +2237,7 @@ HB_FUNC( GDIMAGEGETTRANSPARENT ) // int gdImageGetTransparent(gdImagePtr im) gdImagePtr im; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Image is trasparent ? */ hb_retl( gdImageGetTransparent(im) ); @@ -2094,7 +2266,7 @@ HB_FUNC( GDIMAGETRUECOLOR ) // int gdImageTrueColor(gdImagePtr im) gdImagePtr im; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Is TrueColor ? */ hb_retl( gdImageTrueColor(im) ); @@ -2126,7 +2298,7 @@ HB_FUNC( GDIMAGETRUECOLORTOPALETTE ) // void gdImageTrueColorToPalette (gdImageP int ditherFlag, colorsWanted; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve ditherFlag - logical */ ditherFlag = hb_parl( 2 ); @@ -2165,7 +2337,7 @@ HB_FUNC( GDIMAGECREATEPALETTEFROMTRUECOLOR ) // gdImagePtr gdImageCreatePaletteF int ditherFlag, colorsWanted; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve ditherFlag - logical */ ditherFlag = hb_parl( 2 ); @@ -2177,7 +2349,7 @@ HB_FUNC( GDIMAGECREATEPALETTEFROMTRUECOLOR ) // gdImagePtr gdImageCreatePaletteF imNew = gdImageCreatePaletteFromTrueColor(im, ditherFlag, colorsWanted); /* Return image pointer */ - hb_retptr( imNew ); + hb_retGdImage( imNew ); } else @@ -2206,7 +2378,7 @@ HB_FUNC( GDIMAGEPALETTEPIXEL ) // int gdImagePalettePixel(gdImagePtr im, int x, int x,y; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord value */ x = hb_parni( 2 ); @@ -2242,7 +2414,7 @@ HB_FUNC( GDIMAGETRUECOLORPIXEL ) // int gdImageTrueColorPixel(gdImagePtr im, int int x,y; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve coord value */ x = hb_parni( 2 ); @@ -2275,7 +2447,7 @@ HB_FUNC( GDIMAGEGETTHICKNESS ) // void gdImageGetThickness(gdImagePtr im) gdImagePtr im; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Return previous */ hb_retni( im->thick ); @@ -2307,7 +2479,8 @@ HB_FUNC( GDFONTGETSMALL ) // gdFontPtr gdFontGetSmall(void) font = gdFontGetSmall(); /* Return font pointer */ - hb_retptr( font ); + hb_retGdFont( font ); + //hb_retptr( font ); } /* ---------------------------------------------------------------------------*/ @@ -2320,7 +2493,8 @@ HB_FUNC( GDFONTGETLARGE ) // gdFontPtr gdFontGetLarge(void) font = gdFontGetLarge(); /* Return font pointer */ - hb_retptr( font ); + hb_retGdFont( font ); + //hb_retptr( font ); } /* ---------------------------------------------------------------------------*/ @@ -2333,7 +2507,8 @@ HB_FUNC( GDFONTGETMEDIUMBOLD ) // gdFontPtr gdFontGetMediumBold(void) font = gdFontGetMediumBold(); /* Return font pointer */ - hb_retptr( font ); + hb_retGdFont( font ); + //hb_retptr( font ); } /* ---------------------------------------------------------------------------*/ @@ -2346,7 +2521,8 @@ HB_FUNC( GDFONTGETGIANT ) // gdFontPtr gdFontGetGiant(void) font = gdFontGetGiant(); /* Return font pointer */ - hb_retptr( font ); + hb_retGdFont( font ); + //hb_retptr( font ); } /* ---------------------------------------------------------------------------*/ @@ -2359,7 +2535,8 @@ HB_FUNC( GDFONTGETTINY ) // gdFontPtr gdFontGetTiny(void) font = gdFontGetTiny(); /* Return font pointer */ - hb_retptr( font ); + hb_retGdFont( font ); + //hb_retptr( font ); } /* ---------------------------------------------------------------------------*/ @@ -2382,10 +2559,11 @@ HB_FUNC( GDIMAGESTRING ) // void gdImageChar(gdImagePtr im, gdFontPtr font, int unsigned char *s; /* Retrieve image pointer */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve font pointer */ - font = (gdFontPtr)hb_parptr( 2 ); + font = hb_parGdFont( 2 ); + //font = (gdFontPtr)hb_parptr( 2 ); /* Retrieve coord value */ x = hb_parni( 3 ); @@ -2442,10 +2620,11 @@ HB_FUNC( GDIMAGESTRINGUP ) // void gdImageCharUp(gdImagePtr im, gdFontPtr font, unsigned char *s; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve font pointer */ - font = (gdFontPtr)hb_parptr( 2 ); + font = hb_parGdFont( 2 ); + //font = (gdFontPtr)hb_parptr( 2 ); /* Retrieve coord value */ x = hb_parni( 3 ); @@ -2517,7 +2696,7 @@ HB_FUNC( GDIMAGESTRINGFTEX ) int resolution; /* Retrieve image pointer */ - im = (gdImagePtr)( hb_parinfo( 1 ) & HB_IT_POINTER ? hb_parptr( 1 ) : NULL ); + im = hb_parGdImage( 1 ); //TraceLog( NULL, "Image pointer: %p\n\r", im ); /* Retrieve rectangle array */ @@ -2651,7 +2830,7 @@ HB_FUNC( GDIMAGESTRINGFTCIRCLE ) // char *gdImageStringFTCircle(gdImagePtr im, i char *err; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve pos value */ cx = hb_parni( 2 ); @@ -2727,7 +2906,8 @@ HB_FUNC( GDFONTGETWIDTH ) gdFontPtr font; /* Retrieve font pointer */ - font = (gdFontPtr)hb_parptr( 1 ); + font = hb_parGdFont( 1 ); + //font = (gdFontPtr)hb_parptr( 1 ); /* Return value */ hb_retni( font->w ); @@ -2756,7 +2936,8 @@ HB_FUNC( GDFONTGETHEIGHT ) gdFontPtr font; /* Retrieve font pointer */ - font = (gdFontPtr)hb_parptr( 1 ); + font = hb_parGdFont( 1 ); + //font = (gdFontPtr)hb_parptr( 1 ); /* Return value */ hb_retni( font->h ); @@ -2794,7 +2975,7 @@ HB_FUNC( GDIMAGECOLORALLOCATE ) // int gdImageColorAllocate(gdImagePtr im, int r int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -2833,7 +3014,7 @@ HB_FUNC( GDIMAGECOLORDEALLOCATE ) // void gdImageColorDeallocate(gdImagePtr im, int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve saveFlag value */ color = hb_parni( 2 ); @@ -2872,7 +3053,7 @@ HB_FUNC( GDIMAGECOLORALLOCATEALPHA ) // int gdImageColorAllocateAlpha(gdImagePtr int a; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -2918,7 +3099,7 @@ HB_FUNC( GDIMAGECOLORCLOSEST ) // int gdImageColorClosest(gdImagePtr im, int r, int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -2962,7 +3143,7 @@ HB_FUNC( GDIMAGECOLORCLOSESTALPHA ) // int gdImageColorClosestAlpha(gdImagePtr i int a; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -3008,7 +3189,7 @@ HB_FUNC( GDIMAGECOLORCLOSESTHWB ) // gdImageColorClosestHWB(gdImagePtr im, int int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -3050,7 +3231,7 @@ HB_FUNC( GDIMAGECOLOREXACT ) // int gdImageColorExact(gdImagePtr im, int r, int int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -3092,7 +3273,7 @@ HB_FUNC( GDIMAGECOLORRESOLVE ) // int gdImageColorResolve(gdImagePtr im, int r, int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -3136,7 +3317,7 @@ HB_FUNC( GDIMAGECOLORRESOLVEALPHA ) // int gdImageColorResolveAlpha(gdImagePtr i int a; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve RGB values */ r = hb_parni( 2 ); @@ -3179,7 +3360,7 @@ HB_FUNC( GDIMAGECOLORTRANSPARENT ) // void gdImageColorTransparent(gdImagePtr im int color; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve saveFlag value */ color = hb_parni( 2 ); @@ -3299,10 +3480,10 @@ HB_FUNC( GDIMAGECOPY ) // void gdImageCopy(gdImagePtr dst, gdImagePtr src, int d int dstX, dstY, srcX, srcY, w, h; /* Retrieve destination image pointer */ - dst = (gdImagePtr)hb_parptr( 1 ); + dst = hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Retrieve destination pos value */ dstX = hb_parni( 3 ); @@ -3356,10 +3537,10 @@ HB_FUNC( GDIMAGECOPYRESIZED ) // void gdImageCopyResized(gdImagePtr dst, gdImage int dstW, dstH, srcW, srcH; /* Retrieve destination image pointer */ - dst = (gdImagePtr)hb_parptr( 1 ); + dst = hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Retrieve destination pos value */ dstX = hb_parni( 3 ); @@ -3420,10 +3601,10 @@ HB_FUNC( GDIMAGECOPYRESAMPLED ) // void gdImageCopyResampled(gdImagePtr dst, gdI int dstW, dstH, srcW, srcH; /* Retrieve destination image pointer */ - dst = (gdImagePtr)hb_parptr( 1 ); + dst = hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Retrieve destination pos value */ dstX = hb_parni( 3 ); @@ -3483,10 +3664,10 @@ HB_FUNC( GDIMAGECOPYROTATED ) // void gdImageCopyRotated(gdImagePtr dst, gdImage int srcX, srcY, srcW, srcH, angle; /* Retrieve destination image pointer */ - dst = (gdImagePtr)hb_parptr( 1 ); + dst = hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Retrieve destination pos value */ dstX = hb_parnd( 3 ); @@ -3542,10 +3723,10 @@ HB_FUNC( GDIMAGECOPYMERGE ) // void gdImageCopyMerge(gdImagePtr dst, gdImagePtr int dstX, dstY, srcX, srcY, w, h, pct; /* Retrieve destination image pointer */ - dst =(gdImagePtr)hb_parptr( 1 ); + dst =hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Retrieve destination pos value */ dstX = hb_parni( 3 ); @@ -3601,10 +3782,10 @@ HB_FUNC( GDIMAGECOPYMERGEGRAY ) // void gdImageCopyMergeGray(gdImagePtr dst, gdI int dstX, dstY, srcX, srcY, w, h, pct; /* Retrieve destination image pointer */ - dst = (gdImagePtr)hb_parptr( 1 ); + dst = hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Retrieve destination pos value */ dstX = hb_parni( 3 ); @@ -3652,10 +3833,10 @@ HB_FUNC( GDIMAGEPALETTECOPY ) // void gdImagePaletteCopy(gdImagePtr dst, gdImage gdImagePtr dst, src; /* Retrieve destination image pointer */ - dst = (gdImagePtr)hb_parptr( 1 ); + dst = hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Perform copy */ gdImagePaletteCopy(dst, src); @@ -3685,7 +3866,7 @@ HB_FUNC( GDIMAGESQUARETOCIRCLE ) // void gdImageSquareToCircle(gdImagePtr im, in int radius; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve radius value */ radius = hb_parni( 2 ); @@ -3719,7 +3900,7 @@ HB_FUNC( GDIMAGESHARPEN ) // void gdImageSharpen(gdImagePtr im, int pct) int pct; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve percentual value */ pct = hb_parni( 2 ); @@ -3756,10 +3937,10 @@ HB_FUNC( GDIMAGECOMPARE ) // int gdImageCompare(gdImagePtr im1, gdImagePtr im2) gdImagePtr dst, src; /* Retrieve destination image pointer */ - dst = (gdImagePtr)hb_parptr( 1 ); + dst = hb_parGdImage( 1 ); /* Retrieve source image pointer */ - src = (gdImagePtr)hb_parptr( 2 ); + src = hb_parGdImage( 2 ); /* Compare images - if return <> 0 check value for infos */ hb_retni( gdImageCompare(dst, src) ); @@ -3789,7 +3970,7 @@ HB_FUNC( GDIMAGEINTERLACE ) // void gdImageInterlace(gdImagePtr im, int interlac int interlace; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve interlace value */ interlace = hb_parl( 2 ); @@ -3848,7 +4029,7 @@ HB_FUNC( GDIMAGEGIFANIMBEGIN ) int GlobalCM, Loops; /* Retrieve image pointer */ - im = (gdImagePtr) hb_parptr( 1 ); + im = hb_parGdImage( 1 ); /* Retrieve global color map value */ GlobalCM = hb_parni( 3 ); @@ -3914,14 +4095,14 @@ HB_FUNC( GDIMAGEGIFANIMADD ) int LocalCM, LeftOfs, TopOfs, Delay, Disposal; /* Retrieve parameters */ - im = (gdImagePtr)hb_parptr( 1 ); + im = hb_parGdImage( 1 ); LocalCM = hb_parni( 3 ); LeftOfs = hb_parni( 4 ); TopOfs = hb_parni( 5 ); Delay = hb_parni( 6 ); Disposal = hb_parni( 7 ); - previm = (gdImagePtr)hb_parptr( 8 ); + previm = hb_parGdImage( 8 ); /* Run function and return value */ iptr = gdImageGifAnimAddPtr(im, &size, LocalCM, LeftOfs, TopOfs, Delay, Disposal, previm);