forked from Lainports/opnsense-ports
391 lines
10 KiB
Text
391 lines
10 KiB
Text
--- gd.c 2014-03-25 04:10:42.000000000 -0400
|
|
+++ gd.c 2021-02-16 11:58:57.946320000 -0500
|
|
@@ -9,5 +9,11 @@
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
-#include "gd.h"
|
|
+#include <gd.h>
|
|
+#include <gdfontg.h>
|
|
+#include <gdfontl.h>
|
|
+#include <gdfontmb.h>
|
|
+#include <gdfonts.h>
|
|
+#include <gdfontt.h>
|
|
+
|
|
#include "siod.h"
|
|
|
|
@@ -17,15 +23,9 @@
|
|
NIL);}
|
|
|
|
-long tc_gdimage = 0;
|
|
-long tc_gdfont = 0;
|
|
-long tc_gdpoint = 0;
|
|
-
|
|
-extern gdFontPtr gdFontGiant;
|
|
-extern gdFontPtr gdFontLarge;
|
|
-extern gdFontPtr gdFontMediumBold;
|
|
-extern gdFontPtr gdFontSmall;
|
|
-extern gdFontPtr gdFontTiny;
|
|
+static long tc_gdimage = 0;
|
|
+static long tc_gdfont = 0;
|
|
+static long tc_gdpoint = 0;
|
|
|
|
-LISP lgdImageCreate(LISP sx,LISP sy)
|
|
+static LISP lgdImageCreate(LISP sx,LISP sy)
|
|
{LISP result;
|
|
long iflag;
|
|
@@ -38,5 +38,5 @@
|
|
return(result);}
|
|
|
|
-LISP lgdImageCreateFromGif(LISP f)
|
|
+static LISP lgdImageCreateFromGif(LISP f)
|
|
{LISP result;
|
|
long iflag;
|
|
@@ -49,5 +49,5 @@
|
|
return(result);}
|
|
|
|
-LISP lgdImageCreateFromXbm(LISP f)
|
|
+static LISP lgdImageCreateFromXbm(LISP f)
|
|
{LISP result;
|
|
long iflag;
|
|
@@ -61,13 +61,13 @@
|
|
|
|
|
|
-gdImagePtr get_gdImagePtr(LISP ptr)
|
|
+static gdImagePtr get_gdImagePtr(LISP ptr)
|
|
{gdImagePtr im;
|
|
if (NTYPEP(ptr,tc_gdimage))
|
|
err("not a gdImage",ptr);
|
|
- if (!(im = (gdImagePtr) ptr->storage_as.string.data))
|
|
+ if (!(im = (gdImagePtr)(void *)ptr->storage_as.string.data))
|
|
err("gd Image deallocated",ptr);
|
|
return(im);}
|
|
|
|
-LISP lcgdFontCreate(gdFontPtr font)
|
|
+static LISP lcgdFontCreate(gdFontPtr font)
|
|
{LISP result;
|
|
long iflag;
|
|
@@ -80,13 +80,13 @@
|
|
return(result);}
|
|
|
|
-gdFontPtr get_gdFontPtr(LISP ptr)
|
|
+static gdFontPtr get_gdFontPtr(LISP ptr)
|
|
{gdFontPtr fn;
|
|
if (NTYPEP(ptr,tc_gdfont))
|
|
err("not a gdFont",ptr);
|
|
- if (!(fn = (gdFontPtr) ptr->storage_as.string.data))
|
|
+ if (!(fn = (gdFontPtr)(void *)ptr->storage_as.string.data))
|
|
err("gd Font deallocated",ptr);
|
|
return(fn);}
|
|
|
|
-LISP lgdPoint(LISP args)
|
|
+static LISP lgdPoint(LISP args)
|
|
{LISP result,l;
|
|
long iflag,j,m,n = nlength(args);
|
|
@@ -98,5 +98,5 @@
|
|
result->type = tc_gdpoint;
|
|
iflag = no_interrupt(1);
|
|
- pt = (gdPointPtr) must_malloc(sizeof(gdPoint) * m);
|
|
+ pt = must_malloc(sizeof(gdPoint) * m);
|
|
result->storage_as.string.data = (char *) pt;
|
|
result->storage_as.string.dim = m;
|
|
@@ -107,14 +107,14 @@
|
|
return(result);}
|
|
|
|
-gdPointPtr get_gdPointPtr(LISP ptr,long *n)
|
|
+static gdPointPtr get_gdPointPtr(LISP ptr,long *n)
|
|
{gdPointPtr pt;
|
|
if (NTYPEP(ptr,tc_gdpoint))
|
|
err("not a gdPoint",ptr);
|
|
- if (!(pt = (gdPointPtr) ptr->storage_as.string.data))
|
|
+ if (!(pt = (gdPointPtr)(void *)ptr->storage_as.string.data))
|
|
err("gd point deallocated",ptr);
|
|
*n = ptr->storage_as.string.dim;
|
|
return(pt);}
|
|
|
|
-LISP lgdPointx(LISP ptr,LISP j,LISP value)
|
|
+static LISP lgdPointx(LISP ptr,LISP j,LISP value)
|
|
{long n,i;
|
|
gdPointPtr pt;
|
|
@@ -129,5 +129,5 @@
|
|
|
|
|
|
-LISP lgdPointy(LISP ptr,LISP j,LISP value)
|
|
+static LISP lgdPointy(LISP ptr,LISP j,LISP value)
|
|
{long n,i;
|
|
gdPointPtr pt;
|
|
@@ -141,5 +141,5 @@
|
|
return(value);}
|
|
|
|
-LISP lgdImageGif(LISP im,LISP f)
|
|
+static LISP lgdImageGif(LISP im,LISP f)
|
|
{long iflag;
|
|
iflag = no_interrupt(1);
|
|
@@ -156,19 +156,22 @@
|
|
#include <unistd.h>
|
|
|
|
-void gdImageGifmem(gdImagePtr im, char *buffer, size_t *len)
|
|
+static void gdImageGifmem(gdImagePtr im, char *buffer, size_t *len)
|
|
{FILE *f;
|
|
char tmpname[32];
|
|
struct stat sb;
|
|
- strcpy(tmpname, "/tmp/gd.XXXXXX");
|
|
- mktemp(tmpname);
|
|
- if ((f = fopen(tmpname, "wb+")) != NULL) {
|
|
- gdImageGif(im, f);
|
|
- fstat(fileno(f), &sb);
|
|
- if (sb.st_size < *len) *len = sb.st_size;
|
|
- rewind(f);
|
|
- fread(buffer, 1, *len, f);
|
|
+ int fd;
|
|
+ strcpy(tmpname, "/tmp/gd.XXXXXX.gif");
|
|
+ fd = mkstemps(tmpname, 4);
|
|
+ if (fd != -1 && (f = fdopen(fd, "wb+")) != NULL) {
|
|
+ gdImageGif(im, f); /* XXX no error-checking from here on */
|
|
+ if (fstat(fileno(f), &sb) == 0 && sb.st_size <= (off_t)*len) {
|
|
+ *len = sb.st_size;
|
|
+ rewind(f);
|
|
+ *len = fread(buffer, 1, *len, f);
|
|
+ } else
|
|
+ *len = 0;
|
|
fclose(f);
|
|
} else {
|
|
- *len = 0;
|
|
+ *len = 0; /* XXX and no reporting for what little checking there is */
|
|
}
|
|
unlink(tmpname);
|
|
@@ -177,10 +180,10 @@
|
|
#endif
|
|
|
|
-LISP lgdImageGifmem(LISP im,LISP b)
|
|
-{long iflag,dim;
|
|
+static LISP lgdImageGifmem(LISP im, LISP b)
|
|
+{long iflag;
|
|
size_t len;
|
|
char *buffer;
|
|
- buffer = get_c_string_dim(b,&dim);
|
|
- len = dim;
|
|
+ buffer = get_string_data(b);
|
|
+ len = b->storage_as.string.dim;
|
|
iflag = no_interrupt(1);
|
|
gdImageGifmem(get_gdImagePtr(im),buffer,&len);
|
|
@@ -188,5 +191,5 @@
|
|
return(flocons(len));}
|
|
|
|
-LISP lgdImageColorAllocate(LISP l)
|
|
+static LISP lgdImageColorAllocate(LISP l)
|
|
{long iflag;
|
|
int result;
|
|
@@ -202,5 +205,5 @@
|
|
return(flocons(result));}
|
|
|
|
-LISP lgdImageColorClosest(LISP l)
|
|
+static LISP lgdImageColorClosest(LISP l)
|
|
{long iflag;
|
|
int result;
|
|
@@ -216,5 +219,5 @@
|
|
return(flocons(result));}
|
|
|
|
-LISP lgdImageColorExact(LISP l)
|
|
+static LISP lgdImageColorExact(LISP l)
|
|
{long iflag;
|
|
int result;
|
|
@@ -230,5 +233,5 @@
|
|
return(flocons(result));}
|
|
|
|
-LISP lgdImageLine(LISP l)
|
|
+static LISP lgdImageLine(LISP l)
|
|
{gdImagePtr im;
|
|
int x1,y1,x2,y2,color;
|
|
@@ -242,5 +245,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageSetPixel(LISP l)
|
|
+static LISP lgdImageSetPixel(LISP l)
|
|
{gdImagePtr im;
|
|
int x,y,color;
|
|
@@ -252,5 +255,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImagePolygon(LISP im,LISP points,LISP color)
|
|
+static LISP lgdImagePolygon(LISP im,LISP points,LISP color)
|
|
{gdPointPtr pt;
|
|
long n;
|
|
@@ -262,5 +265,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageFilledPolygon(LISP im,LISP points,LISP color)
|
|
+static LISP lgdImageFilledPolygon(LISP im,LISP points,LISP color)
|
|
{gdPointPtr pt;
|
|
long n;
|
|
@@ -272,5 +275,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageRectangle(LISP l)
|
|
+static LISP lgdImageRectangle(LISP l)
|
|
{gdImagePtr im;
|
|
int x1,y1,x2,y2,color;
|
|
@@ -284,5 +287,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageFilledRectangle(LISP l)
|
|
+static LISP lgdImageFilledRectangle(LISP l)
|
|
{gdImagePtr im;
|
|
int x1,y1,x2,y2,color;
|
|
@@ -296,5 +299,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageArc(LISP l)
|
|
+static LISP lgdImageArc(LISP l)
|
|
{gdImagePtr im;
|
|
int cx,cy,w,h,s,e,color;
|
|
@@ -311,5 +314,5 @@
|
|
|
|
|
|
-LISP lgdImageFillToBorder(LISP l)
|
|
+static LISP lgdImageFillToBorder(LISP l)
|
|
{gdImagePtr im;
|
|
int x,y,border,color;
|
|
@@ -322,5 +325,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageFill(LISP l)
|
|
+static LISP lgdImageFill(LISP l)
|
|
{gdImagePtr im;
|
|
int x,y,color;
|
|
@@ -331,14 +334,6 @@
|
|
gdImageFill(im,x,y,color);
|
|
return(NIL);}
|
|
-
|
|
-/*
|
|
|
|
-void gdImageSetBrush(gdImagePtr im, gdImagePtr brush)
|
|
-void gdImageSetTile(gdImagePtr im, gdImagePtr tile)
|
|
-void gdImageSetStyle(gdImagePtr im, int *style, int styleLength)
|
|
-
|
|
-*/
|
|
-
|
|
-LISP lgdImageChar(LISP l)
|
|
+static LISP lgdImageChar(LISP l)
|
|
{gdImagePtr im;
|
|
gdFontPtr font;
|
|
@@ -353,5 +348,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageCharUp(LISP l)
|
|
+static LISP lgdImageCharUp(LISP l)
|
|
{gdImagePtr im;
|
|
gdFontPtr font;
|
|
@@ -366,5 +361,5 @@
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageString(LISP l)
|
|
+static LISP lgdImageString(LISP l)
|
|
{gdImagePtr im;
|
|
gdFontPtr font;
|
|
@@ -375,10 +370,10 @@
|
|
x = get_c_long(poparg(&l,NIL));
|
|
y = get_c_long(poparg(&l,NIL));
|
|
- c = get_c_string(poparg(&l,NIL));
|
|
+ c = get_string_data(poparg(&l, NIL));
|
|
color = get_c_long(poparg(&l,NIL));
|
|
gdImageString(im,font,x,y,c,color);
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageStringUp(LISP l)
|
|
+static LISP lgdImageStringUp(LISP l)
|
|
{gdImagePtr im;
|
|
gdFontPtr font;
|
|
@@ -389,21 +384,21 @@
|
|
x = get_c_long(poparg(&l,NIL));
|
|
y = get_c_long(poparg(&l,NIL));
|
|
- c = get_c_string(poparg(&l,NIL));
|
|
+ c = get_string_data(poparg(&l, NIL));
|
|
color = get_c_long(poparg(&l,NIL));
|
|
gdImageStringUp(im,font,x,y,c,color);
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageColorTransparent(LISP im,LISP color)
|
|
+static LISP lgdImageColorTransparent(LISP im,LISP color)
|
|
{gdImageColorTransparent(get_gdImagePtr(im),get_c_long(color));
|
|
return(NIL);}
|
|
|
|
-LISP lgdImageInterlace(LISP im,LISP interlace)
|
|
+static LISP lgdImageInterlace(LISP im,LISP interlace)
|
|
{gdImageInterlace(get_gdImagePtr(im),get_c_long(interlace));
|
|
return(NIL);}
|
|
|
|
-void gdimage_prin1(LISP ptr,struct gen_printio *f)
|
|
+static void gdimage_prin1(LISP ptr,struct gen_printio *f)
|
|
{char buff[256];
|
|
gdImagePtr im;
|
|
- if ((im = (gdImagePtr) ptr->storage_as.string.data))
|
|
+ if ((im = (gdImagePtr)(void *)ptr->storage_as.string.data))
|
|
sprintf(buff,"#<GDIMAGE %p %d by %d>",
|
|
im,im->sx,im->sy);
|
|
@@ -412,14 +407,14 @@
|
|
gput_st(f,buff);}
|
|
|
|
-void gdimage_gc_free(LISP ptr)
|
|
+static void gdimage_gc_free(LISP ptr)
|
|
{gdImagePtr im;
|
|
- if ((im = (gdImagePtr) ptr->storage_as.string.data))
|
|
+ if ((im = (gdImagePtr)(void *)ptr->storage_as.string.data))
|
|
{gdImageDestroy(im);
|
|
ptr->storage_as.string.data = NULL;}}
|
|
|
|
-void gdfont_prin1(LISP ptr,struct gen_printio *f)
|
|
+static void gdfont_prin1(LISP ptr,struct gen_printio *f)
|
|
{char buff[256];
|
|
gdFontPtr fnt;
|
|
- if ((fnt = (gdFontPtr) ptr->storage_as.string.data))
|
|
+ if ((fnt = (gdFontPtr)(void *)ptr->storage_as.string.data))
|
|
sprintf(buff,"#<GDFONT %p %d by %d>",
|
|
fnt,fnt->w,fnt->h);
|
|
@@ -428,7 +423,7 @@
|
|
gput_st(f,buff);}
|
|
|
|
-void gdfont_gc_free(LISP ptr)
|
|
+static void gdfont_gc_free(LISP ptr)
|
|
{gdFontPtr fnt;
|
|
- if ((fnt = (gdFontPtr) ptr->storage_as.string.data) &&
|
|
+ if ((fnt = (gdFontPtr)(void *)ptr->storage_as.string.data) &&
|
|
ptr->storage_as.string.dim)
|
|
/* there is no api in gd 1.2 for loading a file from a file.
|
|
@@ -437,29 +432,31 @@
|
|
}
|
|
|
|
-void gdpoint_prin1(LISP ptr,struct gen_printio *f)
|
|
+static void gdpoint_prin1(LISP ptr,struct gen_printio *f)
|
|
{char buff[256];
|
|
gdPointPtr pt;
|
|
- pt = (gdPointPtr) ptr->storage_as.string.data;
|
|
+ pt = (gdPointPtr)(void *)ptr->storage_as.string.data;
|
|
sprintf(buff,"#<GDPOINT %p %ld>",
|
|
pt,ptr->storage_as.string.dim);
|
|
gput_st(f,buff);}
|
|
|
|
-void gdpoint_gc_free(LISP ptr)
|
|
+static void gdpoint_gc_free(LISP ptr)
|
|
{gdPointPtr pt;
|
|
- if ((pt = (gdPointPtr) ptr->storage_as.string.data))
|
|
+ if ((pt = (gdPointPtr)(void *)ptr->storage_as.string.data))
|
|
{free(pt);
|
|
ptr->storage_as.string.data = NULL;
|
|
ptr->storage_as.string.dim = 0;}}
|
|
|
|
-LISP gdfont_w(LISP ptr)
|
|
+static LISP gdfont_w(LISP ptr)
|
|
{gdFontPtr font;
|
|
font = get_gdFontPtr(ptr);
|
|
return(flocons(font->w));}
|
|
|
|
-LISP gdfont_h(LISP ptr)
|
|
+static LISP gdfont_h(LISP ptr)
|
|
{gdFontPtr font;
|
|
font = get_gdFontPtr(ptr);
|
|
return(flocons(font->h));}
|
|
|
|
+void init_gd(void); /* Module entry point - our sole exported function */
|
|
+
|
|
void init_gd(void)
|
|
{long j;
|