MIDAS
Loading...
Searching...
No Matches
GD Graphics Library

Classes

struct  gdImageStruct
 
struct  gdGifBufferStruct
 
struct  gdFont
 
struct  gdPoint
 

Macros

#define gdMaxColors   256
 
#define gdDashSize   4
 
#define gdStyled   (-2)
 
#define gdBrushed   (-3)
 
#define gdStyledBrushed   (-4)
 
#define gdTiled   (-5)
 
#define gdTransparent   (-6)
 
#define gdImageSX(im)   ((im)->sx)
 
#define gdImageSY(im)   ((im)->sy)
 
#define gdImageColorsTotal(im)   ((im)->colorsTotal)
 
#define gdImageRed(im, c)   ((im)->red[(c)])
 
#define gdImageGreen(im, c)   ((im)->green[(c)])
 
#define gdImageBlue(im, c)   ((im)->blue[(c)])
 
#define gdImageGetTransparent(im)   ((im)->transparent)
 
#define gdImageGetInterlaced(im)   ((im)->interlace)
 

Typedefs

typedef struct gdImageStruct gdImage
 
typedef gdImagegdImagePtr
 
typedef struct gdGifBufferStruct gdGifBuffer
 
typedef gdFontgdFontPtr
 
typedef struct gdPointgdPointPtr
 

Functions

gdImagePtr gdImageCreate (int sx, int sy)
 
gdImagePtr gdImageCreateFromGif (FILE *fd)
 
void gdImageDestroy (gdImagePtr im)
 
void gdImageSetPixel (gdImagePtr im, int x, int y, int color)
 
int gdImageGetPixel (gdImagePtr im, int x, int y)
 
void gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 
void gdImageDashedLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 
void gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 
void gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 
int gdImageBoundsSafe (gdImagePtr im, int x, int y)
 
void gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
 
void gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, char c, int color)
 
void gdImageString (gdImagePtr im, gdFontPtr f, int x, int y, const char *s, int color)
 
void gdImageStringUp (gdImagePtr im, gdFontPtr f, int x, int y, const char *s, int color)
 
void gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c)
 
void gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
 
int gdImageColorAllocate (gdImagePtr im, int r, int g, int b)
 
int gdImageColorClosest (gdImagePtr im, int r, int g, int b)
 
int gdImageColorExact (gdImagePtr im, int r, int g, int b)
 
void gdImageColorDeallocate (gdImagePtr im, int color)
 
void gdImageColorTransparent (gdImagePtr im, int color)
 
void gdImageGif (gdImagePtr im, gdGifBuffer *buffer)
 
void gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color)
 
void gdImageFill (gdImagePtr im, int x, int y, int color)
 
void gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h)
 
void gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)
 
void gdImageSetBrush (gdImagePtr im, gdImagePtr brush)
 
void gdImageSetTile (gdImagePtr im, gdImagePtr tile)
 
void gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels)
 
void gdImageInterlace (gdImagePtr im, int interlaceArg)
 

Variables

unsigned char ** gdImageStruct::pixels
 
int gdImageStruct::sx
 
int gdImageStruct::sy
 
int gdImageStruct::colorsTotal
 
int gdImageStruct::red [gdMaxColors]
 
int gdImageStruct::green [gdMaxColors]
 
int gdImageStruct::blue [gdMaxColors]
 
int gdImageStruct::open [gdMaxColors]
 
int gdImageStruct::transparent
 
intgdImageStruct::polyInts
 
int gdImageStruct::polyAllocated
 
struct gdImageStructgdImageStruct::brush
 
struct gdImageStructgdImageStruct::tile
 
int gdImageStruct::brushColorMap [gdMaxColors]
 
int gdImageStruct::tileColorMap [gdMaxColors]
 
int gdImageStruct::styleLength
 
int gdImageStruct::stylePos
 
intgdImageStruct::style
 
int gdImageStruct::interlace
 
chargdGifBufferStruct::data
 
int gdGifBufferStruct::size
 
int gdFont::nchars
 
int gdFont::offset
 
int gdFont::w
 
int gdFont::h
 
intgdFont::data
 
gdFontPtr gdFontMediumBold
 
gdFontPtr gdFontGiant
 
gdFontPtr gdFontSmall
 
int gdPoint::x
 
int gdPoint::y
 

Detailed Description


Macro Definition Documentation

◆ gdBrushed

#define gdBrushed   (-3)

Definition at line 88 of file mgd.h.

◆ gdDashSize

#define gdDashSize   4

Definition at line 83 of file mgd.h.

◆ gdImageBlue

#define gdImageBlue (   im,
  c 
)    ((im)->blue[(c)])

Definition at line 153 of file mgd.h.

◆ gdImageColorsTotal

#define gdImageColorsTotal (   im)    ((im)->colorsTotal)

Definition at line 150 of file mgd.h.

◆ gdImageGetInterlaced

#define gdImageGetInterlaced (   im)    ((im)->interlace)

Definition at line 155 of file mgd.h.

◆ gdImageGetTransparent

#define gdImageGetTransparent (   im)    ((im)->transparent)

Definition at line 154 of file mgd.h.

◆ gdImageGreen

#define gdImageGreen (   im,
  c 
)    ((im)->green[(c)])

Definition at line 152 of file mgd.h.

◆ gdImageRed

#define gdImageRed (   im,
  c 
)    ((im)->red[(c)])

Definition at line 151 of file mgd.h.

◆ gdImageSX

#define gdImageSX (   im)    ((im)->sx)

Definition at line 148 of file mgd.h.

◆ gdImageSY

#define gdImageSY (   im)    ((im)->sy)

Definition at line 149 of file mgd.h.

◆ gdMaxColors

#define gdMaxColors   256

Definition at line 22 of file mgd.h.

◆ gdStyled

#define gdStyled   (-2)

Definition at line 87 of file mgd.h.

◆ gdStyledBrushed

#define gdStyledBrushed   (-4)

Definition at line 89 of file mgd.h.

◆ gdTiled

#define gdTiled   (-5)

Definition at line 90 of file mgd.h.

◆ gdTransparent

#define gdTransparent   (-6)

Definition at line 94 of file mgd.h.

Typedef Documentation

◆ gdFontPtr

Definition at line 73 of file mgd.h.

◆ gdGifBuffer

◆ gdImage

◆ gdImagePtr

Definition at line 51 of file mgd.h.

◆ gdPointPtr

Function Documentation

◆ gdImageBoundsSafe()

int gdImageBoundsSafe ( gdImagePtr  im,
int  x,
int  y 
)

Definition at line 826 of file mgd.cxx.

827{
828 return (!(((y < 0) || (y >= im->sy)) || ((x < 0) || (x >= im->sx))));
829}
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageChar()

void gdImageChar ( gdImagePtr  im,
gdFontPtr  f,
int  x,
int  y,
int  c,
int  color 
)

Definition at line 831 of file mgd.cxx.

832{
833 int cx, cy;
834 int px, py;
835 int fline;
836 cx = 0;
837 cy = 0;
838 if ((c < f->offset) || (c >= (f->offset + f->nchars))) {
839 return;
840 }
841 fline = (c - f->offset) * f->h;
842 for (py = y; (py < (y + f->h)); py++) {
843 for (px = x; (px < (x + f->w)); px++) {
844 if (f->data[fline + cy] & (1 << cx)) {
846 }
847 cx++;
848 }
849 cx = 0;
850 cy++;
851 }
852}
int offset
Definition mgd.h:62
int w
Definition mgd.h:64
int nchars
Definition mgd.h:60
int h
Definition mgd.h:65
void gdImageSetPixel(gdImagePtr im, int x, int y, int color)
Definition mgd.cxx:538
int * data
Definition mgd.h:69
char color[][16]
Definition mchart.cxx:32
static int offset
Definition mgd.cxx:1500
char c
Definition system.cxx:1310
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageCharUp()

void gdImageCharUp ( gdImagePtr  im,
gdFontPtr  f,
int  x,
int  y,
char  c,
int  color 
)

Definition at line 854 of file mgd.cxx.

855{
856 int cx, cy;
857 int px, py;
858 int fline;
859 cx = 0;
860 cy = 0;
861 if ((c < f->offset) || (c >= (f->offset + f->nchars))) {
862 return;
863 }
864 fline = (c - f->offset) * f->h;
865 for (py = y; (py > (y - f->w)); py--) {
866 for (px = x; (px < (x + f->h)); px++) {
867 if (f->data[fline + cy] & (1 << cx)) {
869 }
870 cy++;
871 }
872 cy = 0;
873 cx++;
874 }
875}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageColorAllocate()

int gdImageColorAllocate ( gdImagePtr  im,
int  r,
int  g,
int  b 
)

Definition at line 492 of file mgd.cxx.

493{
494 int i;
495 int ct = (-1);
496
497 /* check if color exists already */
498 for (i = 0; (i < (im->colorsTotal)); i++) {
499 if (!im->open[i] &&
500 im->red[i] == r &&
501 im->green[i] == g &&
502 im->blue[i] == b) {
503 return i;
504 }
505 }
506
507 for (i = 0; (i < (im->colorsTotal)); i++) {
508 if (im->open[i]) {
509 ct = i;
510 break;
511 }
512 }
513 if (ct == (-1)) {
514 ct = im->colorsTotal;
515 if (ct == gdMaxColors) {
516 return -1;
517 }
518 im->colorsTotal++;
519 }
520 im->red[ct] = r;
521 im->green[ct] = g;
522 im->blue[ct] = b;
523 im->open[ct] = 0;
524 return ct;
525}
#define gdMaxColors
Definition mgd.h:22
INT i
Definition mdump.cxx:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageColorClosest()

int gdImageColorClosest ( gdImagePtr  im,
int  r,
int  g,
int  b 
)

Definition at line 455 of file mgd.cxx.

456{
457 int i;
458 long rd, gd, bd;
459 int ct = (-1);
460 long mindist = 0;
461 for (i = 0; (i < (im->colorsTotal)); i++) {
462 long dist;
463 if (im->open[i]) {
464 continue;
465 }
466 rd = (im->red[i] - r);
467 gd = (im->green[i] - g);
468 bd = (im->blue[i] - b);
469 dist = rd * rd + gd * gd + bd * bd;
470 if ((i == 0) || (dist < mindist)) {
471 mindist = dist;
472 ct = i;
473 }
474 }
475 return ct;
476}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageColorDeallocate()

void gdImageColorDeallocate ( gdImagePtr  im,
int  color 
)

Definition at line 527 of file mgd.cxx.

528{
529 /* Mark it open. */
530 im->open[color] = 1;
531}
Here is the call graph for this function:

◆ gdImageColorExact()

int gdImageColorExact ( gdImagePtr  im,
int  r,
int  g,
int  b 
)

Definition at line 478 of file mgd.cxx.

479{
480 int i;
481 for (i = 0; (i < (im->colorsTotal)); i++) {
482 if (im->open[i]) {
483 continue;
484 }
485 if ((im->red[i] == r) && (im->green[i] == g) && (im->blue[i] == b)) {
486 return i;
487 }
488 }
489 return -1;
490}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageColorTransparent()

void gdImageColorTransparent ( gdImagePtr  im,
int  color 
)

Definition at line 533 of file mgd.cxx.

534{
535 im->transparent = color;
536}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageCopy()

void gdImageCopy ( gdImagePtr  dst,
gdImagePtr  src,
int  dstX,
int  dstY,
int  srcX,
int  srcY,
int  w,
int  h 
)

Definition at line 2317 of file mgd.cxx.

2319{
2320 int c;
2321 int x, y;
2322 int tox, toy;
2323 int i;
2324 int colorMap[gdMaxColors];
2325 for (i = 0; (i < gdMaxColors); i++) {
2326 colorMap[i] = (-1);
2327 }
2328 toy = dstY;
2329 for (y = srcY; (y < (srcY + h)); y++) {
2330 tox = dstX;
2331 for (x = srcX; (x < (srcX + w)); x++) {
2332 int nc;
2333 c = gdImageGetPixel(src, x, y);
2334 /* Added 7/24/95: support transparent copies */
2335 if (gdImageGetTransparent(src) == c) {
2336 tox++;
2337 continue;
2338 }
2339 /* Have we established a mapping for this color? */
2340 if (colorMap[c] == (-1)) {
2341 /* If it's the same image, mapping is trivial */
2342 if (dst == src) {
2343 nc = c;
2344 } else {
2345 /* First look for an exact match */
2346 nc = gdImageColorExact(dst, src->red[c], src->green[c], src->blue[c]);
2347 }
2348 if (nc == (-1)) {
2349 /* No, so try to allocate it */
2350 nc = gdImageColorAllocate(dst, src->red[c], src->green[c], src->blue[c]);
2351 /* If we're out of colors, go for the
2352 closest color */
2353 if (nc == (-1)) {
2354 nc = gdImageColorClosest(dst, src->red[c], src->green[c], src->blue[c]);
2355 }
2356 }
2357 colorMap[c] = nc;
2358 }
2359 gdImageSetPixel(dst, tox, toy, colorMap[c]);
2360 tox++;
2361 }
2362 toy++;
2363 }
2364}
int red[gdMaxColors]
Definition mgd.h:34
int gdImageGetPixel(gdImagePtr im, int x, int y)
Definition mgd.cxx:627
int blue[gdMaxColors]
Definition mgd.h:36
#define gdImageGetTransparent(im)
Definition mgd.h:154
int gdImageColorExact(gdImagePtr im, int r, int g, int b)
Definition mgd.cxx:478
int gdImageColorClosest(gdImagePtr im, int r, int g, int b)
Definition mgd.cxx:455
int gdImageColorAllocate(gdImagePtr im, int r, int g, int b)
Definition mgd.cxx:492
int green[gdMaxColors]
Definition mgd.h:35
Here is the call graph for this function:

◆ gdImageCopyResized()

void gdImageCopyResized ( gdImagePtr  dst,
gdImagePtr  src,
int  dstX,
int  dstY,
int  srcX,
int  srcY,
int  dstW,
int  dstH,
int  srcW,
int  srcH 
)

Definition at line 2366 of file mgd.cxx.

2368{
2369 int c;
2370 int x, y;
2371 int tox, toy;
2372 int ydest;
2373 int i;
2374 int colorMap[gdMaxColors];
2375 /* Stretch vectors */
2376 int *stx;
2377 int *sty;
2378 /* We only need to use floating point to determine the correct
2379 stretch vector for one line's worth. */
2380 double accum;
2381 stx = (int *) M_MALLOC(sizeof(int) * srcW);
2382 sty = (int *) M_MALLOC(sizeof(int) * srcH);
2383 accum = 0;
2384 for (i = 0; (i < srcW); i++) {
2385 int got;
2386 accum += (double) dstW / (double) srcW;
2387 got = (int) floor(accum);
2388 stx[i] = got;
2389 accum -= got;
2390 }
2391 accum = 0;
2392 for (i = 0; (i < srcH); i++) {
2393 int got;
2394 accum += (double) dstH / (double) srcH;
2395 got = (int) floor(accum);
2396 sty[i] = got;
2397 accum -= got;
2398 }
2399 for (i = 0; (i < gdMaxColors); i++) {
2400 colorMap[i] = (-1);
2401 }
2402 toy = dstY;
2403 for (y = srcY; (y < (srcY + srcH)); y++) {
2404 for (ydest = 0; (ydest < sty[y - srcY]); ydest++) {
2405 tox = dstX;
2406 for (x = srcX; (x < (srcX + srcW)); x++) {
2407 int nc;
2408 if (!stx[x - srcX]) {
2409 continue;
2410 }
2411 c = gdImageGetPixel(src, x, y);
2412 /* Added 7/24/95: support transparent copies */
2413 if (gdImageGetTransparent(src) == c) {
2414 tox += stx[x - srcX];
2415 continue;
2416 }
2417 /* Have we established a mapping for this color? */
2418 if (colorMap[c] == (-1)) {
2419 /* If it's the same image, mapping is trivial */
2420 if (dst == src) {
2421 nc = c;
2422 } else {
2423 /* First look for an exact match */
2424 nc = gdImageColorExact(dst, src->red[c], src->green[c], src->blue[c]);
2425 }
2426 if (nc == (-1)) {
2427 /* No, so try to allocate it */
2428 nc = gdImageColorAllocate(dst,
2429 src->red[c], src->green[c], src->blue[c]);
2430 /* If we're out of colors, go for the
2431 closest color */
2432 if (nc == (-1)) {
2433 nc = gdImageColorClosest(dst,
2434 src->red[c], src->green[c], src->blue[c]);
2435 }
2436 }
2437 colorMap[c] = nc;
2438 }
2439 for (i = 0; (i < stx[x - srcX]); i++) {
2440 gdImageSetPixel(dst, tox, toy, colorMap[c]);
2441 tox++;
2442 }
2443 }
2444 toy++;
2445 }
2446 }
2447 M_FREE(stx);
2448 M_FREE(sty);
2449}
static char accum[256]
Definition mgd.cxx:1768
#define M_MALLOC(x)
Definition midas.h:1552
#define M_FREE(x)
Definition midas.h:1554
Here is the call graph for this function:

◆ gdImageCreate()

gdImagePtr gdImageCreate ( int  sx,
int  sy 
)

Definition at line 417 of file mgd.cxx.

418{
419 int i;
421 im = (gdImage *) M_MALLOC(sizeof(gdImage));
422 im->pixels = (unsigned char **) M_MALLOC(sizeof(unsigned char *) * sx);
423 im->polyInts = 0;
424 im->polyAllocated = 0;
425 im->brush = 0;
426 im->tile = 0;
427 im->style = 0;
428 for (i = 0; (i < sx); i++) {
429 im->pixels[i] = (unsigned char *) M_CALLOC(sy, sizeof(unsigned char));
430 }
431 im->sx = sx;
432 im->sy = sy;
433 im->colorsTotal = 0;
434 im->transparent = (-1);
435 im->interlace = 0;
436 return im;
437}
unsigned char ** pixels
Definition mgd.h:30
#define M_CALLOC(x, y)
Definition midas.h:1553
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageCreateFromGif()

gdImagePtr gdImageCreateFromGif ( FILE fd)

Definition at line 1888 of file mgd.cxx.

1889{
1890 int imageNumber;
1891 int BitPixel;
1892 //int ColorResolution;
1893 //int Background;
1894 //int AspectRatio;
1895 int Transparent = (-1);
1896 unsigned char buf[16];
1897 unsigned char c;
1898 unsigned char ColorMap[3][MAXCOLORMAPSIZE];
1899 unsigned char localColorMap[3][MAXCOLORMAPSIZE];
1900 int imw, imh;
1902 int bitPixel;
1903 int imageCount = 0;
1904 char version[4];
1905 gdImagePtr im = 0;
1907
1908 imageNumber = 1;
1909 if (!ReadOK(fd, buf, 6)) {
1910 return 0;
1911 }
1912 if (strncmp((char *) buf, "GIF", 3) != 0) {
1913 return 0;
1914 }
1915 strncpy(version, (char *) buf + 3, 3);
1916 version[3] = '\0';
1917
1918 if ((strcmp(version, "87a") != 0) && (strcmp(version, "89a") != 0)) {
1919 return 0;
1920 }
1921 if (!ReadOK(fd, buf, 7)) {
1922 return 0;
1923 }
1924 BitPixel = 2 << (buf[4] & 0x07);
1925 //ColorResolution = (int) (((buf[4] & 0x70) >> 3) + 1);
1926 //Background = buf[5];
1927 //AspectRatio = buf[6];
1928
1929 if (BitSet(buf[4], LOCALCOLORMAP)) { /* Global Colormap */
1930 if (ReadColorMap(fd, BitPixel, ColorMap)) {
1931 return 0;
1932 }
1933 }
1934 for (;;) {
1935 if (!ReadOK(fd, &c, 1)) {
1936 return 0;
1937 }
1938 if (c == ';') { /* GIF terminator */
1939 int i;
1940 if (imageCount < imageNumber) {
1941 return 0;
1942 }
1943 /* Terminator before any image was declared! */
1944 if (!im) {
1945 return 0;
1946 }
1947 /* Check for open colors at the end, so
1948 we can reduce colorsTotal and ultimately
1949 BitsPerPixel */
1950 for (i = ((im->colorsTotal - 1)); (i >= 0); i--) {
1951 if (im->open[i]) {
1952 im->colorsTotal--;
1953 } else {
1954 break;
1955 }
1956 }
1957 return im;
1958 }
1959
1960 if (c == '!') { /* Extension */
1961 if (!ReadOK(fd, &c, 1)) {
1962 return 0;
1963 }
1964 DoExtension(fd, c, &Transparent);
1965 continue;
1966 }
1967
1968 if (c != ',') { /* Not a valid start character */
1969 continue;
1970 }
1971
1972 ++imageCount;
1973
1974 if (!ReadOK(fd, buf, 9)) {
1975 return 0;
1976 }
1977
1979
1980 bitPixel = 1 << ((buf[8] & 0x07) + 1);
1981
1982 imw = LM_to_uint(buf[4], buf[5]);
1983 imh = LM_to_uint(buf[6], buf[7]);
1984 if (!(im = gdImageCreate(imw, imh))) {
1985 return 0;
1986 }
1987 im->interlace = BitSet(buf[8], INTERLACE);
1988 if (!useGlobalColormap) {
1990 return 0;
1991 }
1993 BitSet(buf[8], INTERLACE), imageCount != imageNumber);
1994 } else {
1995 ReadImage(im, fd, imw, imh,
1997 }
1998 if (Transparent != (-1)) {
2000 }
2001 }
2002}
gdImagePtr gdImageCreate(int sx, int sy)
Definition mgd.cxx:417
void gdImageColorTransparent(gdImagePtr im, int color)
Definition mgd.cxx:533
#define LM_to_uint(a, b)
Definition mgd.cxx:1855
#define MAXCOLORMAPSIZE
Definition mgd.cxx:1838
#define INTERLACE
Definition mgd.cxx:1849
static int DoExtension(FILE *fd, int label, int *Transparent)
Definition mgd.cxx:2023
static void ReadImage(gdImagePtr im, FILE *fd, int len, int height, unsigned char(*cmap)[256], int interlace, int ignore)
Definition mgd.cxx:2212
static int ReadColorMap(FILE *fd, int number, unsigned char(*buffer)[256])
Definition mgd.cxx:2004
#define LOCALCOLORMAP
Definition mgd.cxx:1850
#define FALSE
Definition mgd.cxx:1169
int ZeroDataBlock
Definition mgd.cxx:1886
#define BitSet(byte, bit)
Definition mgd.cxx:1851
#define ReadOK(file, buffer, len)
Definition mgd.cxx:1853
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageDashedLine()

void gdImageDashedLine ( gdImagePtr  im,
int  x1,
int  y1,
int  x2,
int  y2,
int  color 
)

Definition at line 738 of file mgd.cxx.

739{
740 int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
741 int dashStep = 0;
742 int on = 1;
743 dx = abs(x2 - x1);
744 dy = abs(y2 - y1);
745 if (dy <= dx) {
746 d = 2 * dy - dx;
747 incr1 = 2 * dy;
748 incr2 = 2 * (dy - dx);
749 if (x1 > x2) {
750 x = x2;
751 y = y2;
752 ydirflag = (-1);
753 xend = x1;
754 } else {
755 x = x1;
756 y = y1;
757 ydirflag = 1;
758 xend = x2;
759 }
760 dashedSet;
761 if (((y2 - y1) * ydirflag) > 0) {
762 while (x < xend) {
763 x++;
764 if (d < 0) {
765 d += incr1;
766 } else {
767 y++;
768 d += incr2;
769 }
770 dashedSet;
771 }
772 } else {
773 while (x < xend) {
774 x++;
775 if (d < 0) {
776 d += incr1;
777 } else {
778 y--;
779 d += incr2;
780 }
781 dashedSet;
782 }
783 }
784 } else {
785 d = 2 * dx - dy;
786 incr1 = 2 * dx;
787 incr2 = 2 * (dx - dy);
788 if (y1 > y2) {
789 y = y2;
790 x = x2;
791 yend = y1;
792 xdirflag = (-1);
793 } else {
794 y = y1;
795 x = x1;
796 yend = y2;
797 xdirflag = 1;
798 }
799 dashedSet;
800 if (((x2 - x1) * xdirflag) > 0) {
801 while (y < yend) {
802 y++;
803 if (d < 0) {
804 d += incr1;
805 } else {
806 x++;
807 d += incr2;
808 }
809 dashedSet;
810 }
811 } else {
812 while (y < yend) {
813 y++;
814 if (d < 0) {
815 d += incr1;
816 } else {
817 x--;
818 d += incr2;
819 }
820 dashedSet;
821 }
822 }
823 }
824}
#define dashedSet
Definition mgd.cxx:726
double d
Definition system.cxx:1311
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageDestroy()

void gdImageDestroy ( gdImagePtr  im)

Definition at line 439 of file mgd.cxx.

440{
441 int i;
442 for (i = 0; (i < im->sx); i++) {
443 M_FREE(im->pixels[i]);
444 }
445 M_FREE(im->pixels);
446 if (im->polyInts) {
447 M_FREE(im->polyInts);
448 }
449 if (im->style) {
450 M_FREE(im->style);
451 }
452 M_FREE(im);
453}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageFill()

void gdImageFill ( gdImagePtr  im,
int  x,
int  y,
int  color 
)

Definition at line 964 of file mgd.cxx.

965{
966 int lastBorder;
967 int old;
969 int i;
970 old = gdImageGetPixel(im, x, y);
971 if (color == gdTiled) {
972 /* Tile fill -- got to watch out! */
973 int p, tileColor;
974 int srcx, srcy;
975 if (!im->tile) {
976 return;
977 }
978 /* Refuse to flood-fill with a transparent pattern --
979 I can't do it without allocating another image */
980 if (gdImageGetTransparent(im->tile) != (-1)) {
981 return;
982 }
983 srcx = x % gdImageSX(im->tile);
984 srcy = y % gdImageSY(im->tile);
985 p = gdImageGetPixel(im->tile, srcx, srcy);
986 tileColor = im->tileColorMap[p];
987 if (old == tileColor) {
988 /* Nothing to be done */
989 return;
990 }
991 } else {
992 if (old == color) {
993 /* Nothing to be done */
994 return;
995 }
996 }
997 /* Seek left */
998 leftLimit = (-1);
999 for (i = x; (i >= 0); i--) {
1000 if (gdImageGetPixel(im, i, y) != old) {
1001 break;
1002 }
1003 gdImageSetPixel(im, i, y, color);
1004 leftLimit = i;
1005 }
1006 if (leftLimit == (-1)) {
1007 return;
1008 }
1009 /* Seek right */
1010 rightLimit = x;
1011 for (i = (x + 1); (i < im->sx); i++) {
1012 if (gdImageGetPixel(im, i, y) != old) {
1013 break;
1014 }
1015 gdImageSetPixel(im, i, y, color);
1016 rightLimit = i;
1017 }
1018 /* Look at lines above and below and start paints */
1019 /* Above */
1020 if (y > 0) {
1021 lastBorder = 1;
1022 for (i = leftLimit; (i <= rightLimit); i++) {
1023 int c;
1024 c = gdImageGetPixel(im, i, y - 1);
1025 if (lastBorder) {
1026 if (c == old) {
1027 gdImageFill(im, i, y - 1, color);
1028 lastBorder = 0;
1029 }
1030 } else if (c != old) {
1031 lastBorder = 1;
1032 }
1033 }
1034 }
1035 /* Below */
1036 if (y < ((im->sy) - 1)) {
1037 lastBorder = 1;
1038 for (i = leftLimit; (i <= rightLimit); i++) {
1039 int c;
1040 c = gdImageGetPixel(im, i, y + 1);
1041 if (lastBorder) {
1042 if (c == old) {
1043 gdImageFill(im, i, y + 1, color);
1044 lastBorder = 0;
1045 }
1046 } else if (c != old) {
1047 lastBorder = 1;
1048 }
1049 }
1050 }
1051}
#define gdImageSY(im)
Definition mgd.h:149
#define gdImageSX(im)
Definition mgd.h:148
#define gdTiled
Definition mgd.h:90
void gdImageFill(gdImagePtr im, int x, int y, int color)
Definition mgd.cxx:964
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageFilledPolygon()

void gdImageFilledPolygon ( gdImagePtr  im,
gdPointPtr  p,
int  n,
int  c 
)

Definition at line 2471 of file mgd.cxx.

2472{
2473 int i;
2474 int y;
2475 int y1, y2;
2476 int ints;
2477 if (!n) {
2478 return;
2479 }
2480 if (!im->polyAllocated) {
2481 im->polyInts = (int *) M_MALLOC(sizeof(int) * n);
2482 im->polyAllocated = n;
2483 }
2484 if (im->polyAllocated < n) {
2485 while (im->polyAllocated < n) {
2486 im->polyAllocated *= 2;
2487 }
2488 im->polyInts = (int *) realloc(im->polyInts, sizeof(int) * im->polyAllocated);
2489 }
2490 y1 = p[0].y;
2491 y2 = p[0].y;
2492 for (i = 1; (i < n); i++) {
2493 if (p[i].y < y1) {
2494 y1 = p[i].y;
2495 }
2496 if (p[i].y > y2) {
2497 y2 = p[i].y;
2498 }
2499 }
2500 for (y = y1; (y <= y2); y++) {
2501 int interLast = 0;
2502 int dirLast = 0;
2503 int interFirst = 1;
2504 ints = 0;
2505 for (i = 0; (i <= n); i++) {
2506 int x1, x2;
2507 int y1, y2;
2508 int dir;
2509 int ind1, ind2;
2510 int lastInd1 = 0;
2511 if ((i == n) || (!i)) {
2512 ind1 = n - 1;
2513 ind2 = 0;
2514 } else {
2515 ind1 = i - 1;
2516 ind2 = i;
2517 }
2518 y1 = p[ind1].y;
2519 y2 = p[ind2].y;
2520 if (y1 < y2) {
2521 y1 = p[ind1].y;
2522 y2 = p[ind2].y;
2523 x1 = p[ind1].x;
2524 x2 = p[ind2].x;
2525 dir = -1;
2526 } else if (y1 > y2) {
2527 y2 = p[ind1].y;
2528 y1 = p[ind2].y;
2529 x2 = p[ind1].x;
2530 x1 = p[ind2].x;
2531 dir = 1;
2532 } else {
2533 /* Horizontal; just draw it */
2534 gdImageLine(im, p[ind1].x, y1, p[ind2].x, y1, c);
2535 continue;
2536 }
2537 if ((y >= y1) && (y <= y2)) {
2538 int inter = (y - y1) * (x2 - x1) / (y2 - y1) + x1;
2539 /* Only count intersections once
2540 except at maxima and minima. Also,
2541 if two consecutive intersections are
2542 endpoints of the same horizontal line
2543 that is not at a maxima or minima,
2544 discard the leftmost of the two. */
2545 if (!interFirst) {
2546 if ((p[ind1].y == p[lastInd1].y) && (p[ind1].x != p[lastInd1].x)) {
2547 if (dir == dirLast) {
2548 if (inter > interLast) {
2549 /* Replace the old one */
2550 im->polyInts[ints] = inter;
2551 } else {
2552 /* Discard this one */
2553 }
2554 continue;
2555 }
2556 }
2557 if (inter == interLast) {
2558 if (dir == dirLast) {
2559 continue;
2560 }
2561 }
2562 }
2563 if (i > 0) {
2564 im->polyInts[ints++] = inter;
2565 }
2566 lastInd1 = i;
2567 dirLast = dir;
2568 interLast = inter;
2569 interFirst = 0;
2570 }
2571 }
2572 qsort(im->polyInts, ints, sizeof(int), gdCompareInt);
2573 for (i = 0; (i < (ints - 1)); i += 2) {
2574 gdImageLine(im, im->polyInts[i], y, im->polyInts[i + 1], y, c);
2575 }
2576 }
2577}
void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color)
Definition mgd.cxx:638
int x
Definition mgd.h:121
int y
Definition mgd.h:121
DWORD n[4]
Definition mana.cxx:247
int gdCompareInt(const void *a, const void *b)
Definition mgd.cxx:2579
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageFilledRectangle()

void gdImageFilledRectangle ( gdImagePtr  im,
int  x1,
int  y1,
int  x2,
int  y2,
int  color 
)

Definition at line 2307 of file mgd.cxx.

2308{
2309 int x, y;
2310 for (y = y1; (y <= y2); y++) {
2311 for (x = x1; (x <= x2); x++) {
2312 gdImageSetPixel(im, x, y, color);
2313 }
2314 }
2315}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageFillToBorder()

void gdImageFillToBorder ( gdImagePtr  im,
int  x,
int  y,
int  border,
int  color 
)

Definition at line 899 of file mgd.cxx.

900{
901 int lastBorder;
902 /* Seek left */
904 int i;
905 leftLimit = (-1);
906 if (border < 0) {
907 /* Refuse to fill to a non-solid border */
908 return;
909 }
910 for (i = x; (i >= 0); i--) {
911 if (gdImageGetPixel(im, i, y) == border) {
912 break;
913 }
915 leftLimit = i;
916 }
917 if (leftLimit == (-1)) {
918 return;
919 }
920 /* Seek right */
921 rightLimit = x;
922 for (i = (x + 1); (i < im->sx); i++) {
923 if (gdImageGetPixel(im, i, y) == border) {
924 break;
925 }
927 rightLimit = i;
928 }
929 /* Look at lines above and below and start paints */
930 /* Above */
931 if (y > 0) {
932 lastBorder = 1;
933 for (i = leftLimit; (i <= rightLimit); i++) {
934 int c;
935 c = gdImageGetPixel(im, i, y - 1);
936 if (lastBorder) {
937 if ((c != border) && (c != color)) {
939 lastBorder = 0;
940 }
941 } else if ((c == border) || (c == color)) {
942 lastBorder = 1;
943 }
944 }
945 }
946 /* Below */
947 if (y < ((im->sy) - 1)) {
948 lastBorder = 1;
949 for (i = leftLimit; (i <= rightLimit); i++) {
950 int c;
951 c = gdImageGetPixel(im, i, y + 1);
952 if (lastBorder) {
953 if ((c != border) && (c != color)) {
955 lastBorder = 0;
956 }
957 } else if ((c == border) || (c == color)) {
958 lastBorder = 1;
959 }
960 }
961 }
962}
void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color)
Definition mgd.cxx:899
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageGetPixel()

int gdImageGetPixel ( gdImagePtr  im,
int  x,
int  y 
)

Definition at line 627 of file mgd.cxx.

628{
629 if (gdImageBoundsSafe(im, x, y)) {
630 return im->pixels[x][y];
631 } else {
632 return 0;
633 }
634}
int gdImageBoundsSafe(gdImagePtr im, int x, int y)
Definition mgd.cxx:826
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageGif()

void gdImageGif ( gdImagePtr  im,
gdGifBuffer buffer 
)

Definition at line 1118 of file mgd.cxx.

1119{
1120 int interlace, transparent, BitsPerPixel;
1121 interlace = im->interlace;
1122 transparent = im->transparent;
1123
1124 /* allocate buffer */
1125 buffer->size = 0;
1126 buffer->data = gif_buffer;
1127
1128 BitsPerPixel = colorstobpp(im->colorsTotal);
1129 /* Clear any old values in statics strewn through the GIF code */
1130 init_statics();
1131 /* All set, let's do it. */
1132 GIFEncode(buffer, im->sx, im->sy, interlace, 0, transparent, BitsPerPixel,
1133 im->red, im->green, im->blue, im);
1134}
char * data
Definition mgd.h:54
static int colorstobpp(int colors)
Definition mgd.cxx:1136
static char gif_buffer[500000]
Definition mgd.cxx:1116
int transparent
Definition mgd.cxx:1871
static void GIFEncode(gdGifBuffer *buffer, int GWidth, int GHeight, int GInterlace, int Background, int Transparent, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im)
Definition mgd.cxx:1259
static void init_statics(void)
Definition mgd.cxx:1794
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageInterlace()

void gdImageInterlace ( gdImagePtr  im,
int  interlaceArg 
)

Definition at line 2619 of file mgd.cxx.

2620{
2621 im->interlace = interlaceArg;
2622}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageLine()

void gdImageLine ( gdImagePtr  im,
int  x1,
int  y1,
int  x2,
int  y2,
int  color 
)

Definition at line 638 of file mgd.cxx.

639{
640 int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
641 dx = abs(x2 - x1);
642 dy = abs(y2 - y1);
643 if (dy <= dx) {
644 d = 2 * dy - dx;
645 incr1 = 2 * dy;
646 incr2 = 2 * (dy - dx);
647 if (x1 > x2) {
648 x = x2;
649 y = y2;
650 ydirflag = (-1);
651 xend = x1;
652 } else {
653 x = x1;
654 y = y1;
655 ydirflag = 1;
656 xend = x2;
657 }
658 gdImageSetPixel(im, x, y, color);
659 if (((y2 - y1) * ydirflag) > 0) {
660 while (x < xend) {
661 x++;
662 if (d < 0) {
663 d += incr1;
664 } else {
665 y++;
666 d += incr2;
667 }
668 gdImageSetPixel(im, x, y, color);
669 }
670 } else {
671 while (x < xend) {
672 x++;
673 if (d < 0) {
674 d += incr1;
675 } else {
676 y--;
677 d += incr2;
678 }
679 gdImageSetPixel(im, x, y, color);
680 }
681 }
682 } else {
683 d = 2 * dx - dy;
684 incr1 = 2 * dx;
685 incr2 = 2 * (dx - dy);
686 if (y1 > y2) {
687 y = y2;
688 x = x2;
689 yend = y1;
690 xdirflag = (-1);
691 } else {
692 y = y1;
693 x = x1;
694 yend = y2;
695 xdirflag = 1;
696 }
697 gdImageSetPixel(im, x, y, color);
698 if (((x2 - x1) * xdirflag) > 0) {
699 while (y < yend) {
700 y++;
701 if (d < 0) {
702 d += incr1;
703 } else {
704 x++;
705 d += incr2;
706 }
707 gdImageSetPixel(im, x, y, color);
708 }
709 } else {
710 while (y < yend) {
711 y++;
712 if (d < 0) {
713 d += incr1;
714 } else {
715 x--;
716 d += incr2;
717 }
718 gdImageSetPixel(im, x, y, color);
719 }
720 }
721 }
722}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImagePolygon()

void gdImagePolygon ( gdImagePtr  im,
gdPointPtr  p,
int  n,
int  c 
)

Definition at line 2451 of file mgd.cxx.

2452{
2453 int i;
2454 int lx, ly;
2455 if (!n) {
2456 return;
2457 }
2458 lx = p->x;
2459 ly = p->y;
2460 gdImageLine(im, lx, ly, p[n - 1].x, p[n - 1].y, c);
2461 for (i = 1; (i < n); i++) {
2462 p++;
2463 gdImageLine(im, lx, ly, p->x, p->y, c);
2464 lx = p->x;
2465 ly = p->y;
2466 }
2467}
Here is the call graph for this function:

◆ gdImageRectangle()

void gdImageRectangle ( gdImagePtr  im,
int  x1,
int  y1,
int  x2,
int  y2,
int  color 
)

Definition at line 2299 of file mgd.cxx.

2300{
2301 gdImageLine(im, x1, y1, x2, y1, color);
2302 gdImageLine(im, x1, y2, x2, y2, color);
2303 gdImageLine(im, x1, y1, x1, y2, color);
2304 gdImageLine(im, x2, y1, x2, y2, color);
2305}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageSetBrush()

void gdImageSetBrush ( gdImagePtr  im,
gdImagePtr  brush 
)

Definition at line 2596 of file mgd.cxx.

2597{
2598 int i;
2599 im->brush = brush;
2600 for (i = 0; (i < gdImageColorsTotal(brush)); i++) {
2601 int index;
2603 gdImageRed(brush, i),
2604 gdImageGreen(brush, i), gdImageBlue(brush, i));
2605 if (index == (-1)) {
2607 gdImageRed(brush, i),
2608 gdImageGreen(brush, i), gdImageBlue(brush, i));
2609 if (index == (-1)) {
2611 gdImageRed(brush, i),
2612 gdImageGreen(brush, i), gdImageBlue(brush, i));
2613 }
2614 }
2615 im->brushColorMap[i] = index;
2616 }
2617}
#define gdImageBlue(im, c)
Definition mgd.h:153
#define gdImageColorsTotal(im)
Definition mgd.h:150
#define gdImageGreen(im, c)
Definition mgd.h:152
#define gdImageRed(im, c)
Definition mgd.h:151
INT index
Definition mana.cxx:271
Here is the call graph for this function:

◆ gdImageSetPixel()

void gdImageSetPixel ( gdImagePtr  im,
int  x,
int  y,
int  color 
)

Definition at line 538 of file mgd.cxx.

539{
540 int p;
541 switch (color) {
542 case gdStyled:
543 if (!im->style) {
544 /* Refuse to draw if no style is set. */
545 return;
546 } else {
547 p = im->style[im->stylePos++];
548 }
549 if (p != (gdTransparent)) {
550 gdImageSetPixel(im, x, y, p);
551 }
552 im->stylePos = im->stylePos % im->styleLength;
553 break;
554 case gdStyledBrushed:
555 if (!im->style) {
556 /* Refuse to draw if no style is set. */
557 return;
558 }
559 p = im->style[im->stylePos++];
560 if ((p != gdTransparent) && (p != 0)) {
562 }
563 im->stylePos = im->stylePos % im->styleLength;
564 break;
565 case gdBrushed:
566 gdImageBrushApply(im, x, y);
567 break;
568 case gdTiled:
569 gdImageTileApply(im, x, y);
570 break;
571 default:
572 if (gdImageBoundsSafe(im, x, y)) {
573 im->pixels[x][y] = color;
574 }
575 break;
576 }
577}
#define gdTransparent
Definition mgd.h:94
#define gdStyledBrushed
Definition mgd.h:89
#define gdBrushed
Definition mgd.h:88
#define gdStyled
Definition mgd.h:87
static void gdImageTileApply(gdImagePtr im, int x, int y)
Definition mgd.cxx:611
static void gdImageBrushApply(gdImagePtr im, int x, int y)
Definition mgd.cxx:579
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageSetStyle()

void gdImageSetStyle ( gdImagePtr  im,
int style,
int  noOfPixels 
)

Definition at line 2584 of file mgd.cxx.

2585{
2586 if (im->style) {
2587 M_FREE(im->style);
2588 }
2589 im->style = (int *)
2590 M_MALLOC(sizeof(int) * noOfPixels);
2591 memcpy(im->style, style, sizeof(int) * noOfPixels);
2592 im->styleLength = noOfPixels;
2593 im->stylePos = 0;
2594}
Here is the call graph for this function:

◆ gdImageSetTile()

void gdImageSetTile ( gdImagePtr  im,
gdImagePtr  tile 
)

◆ gdImageString()

void gdImageString ( gdImagePtr  im,
gdFontPtr  f,
int  x,
int  y,
const char s,
int  color 
)

Definition at line 877 of file mgd.cxx.

878{
879 int i;
880 int l;
881 l = strlen(s);
882 for (i = 0; (i < l); i++) {
883 gdImageChar(im, f, x, y, s[i], color);
884 x += f->w;
885 }
886}
void gdImageChar(gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
Definition mgd.cxx:831
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdImageStringUp()

void gdImageStringUp ( gdImagePtr  im,
gdFontPtr  f,
int  x,
int  y,
const char s,
int  color 
)

Definition at line 888 of file mgd.cxx.

889{
890 int i;
891 int l;
892 l = strlen(s);
893 for (i = 0; (i < l); i++) {
894 gdImageCharUp(im, f, x, y, s[i], color);
895 y -= f->w;
896 }
897}
void gdImageCharUp(gdImagePtr im, gdFontPtr f, int x, int y, char c, int color)
Definition mgd.cxx:854
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ blue

int gdImageStruct::blue[gdMaxColors]

Definition at line 36 of file mgd.h.

◆ brush

struct gdImageStruct* gdImageStruct::brush

Definition at line 41 of file mgd.h.

◆ brushColorMap

int gdImageStruct::brushColorMap[gdMaxColors]

Definition at line 43 of file mgd.h.

◆ colorsTotal

int gdImageStruct::colorsTotal

Definition at line 33 of file mgd.h.

◆ data [1/2]

char* gdGifBufferStruct::data

Definition at line 54 of file mgd.h.

◆ data [2/2]

int* gdFont::data

Definition at line 69 of file mgd.h.

◆ gdFontGiant

gdFontPtr gdFontGiant
extern

Definition at line 409 of file mgd.cxx.

◆ gdFontMediumBold

gdFontPtr gdFontMediumBold
extern

Definition at line 408 of file mgd.cxx.

◆ gdFontSmall

gdFontPtr gdFontSmall
extern

Definition at line 410 of file mgd.cxx.

◆ green

int gdImageStruct::green[gdMaxColors]

Definition at line 35 of file mgd.h.

◆ h

int gdFont::h

Definition at line 65 of file mgd.h.

◆ interlace

int gdImageStruct::interlace

Definition at line 48 of file mgd.h.

◆ nchars

int gdFont::nchars

Definition at line 60 of file mgd.h.

◆ offset

int gdFont::offset

Definition at line 62 of file mgd.h.

◆ open

int gdImageStruct::open[gdMaxColors]

Definition at line 37 of file mgd.h.

◆ pixels

unsigned char** gdImageStruct::pixels

Definition at line 30 of file mgd.h.

◆ polyAllocated

int gdImageStruct::polyAllocated

Definition at line 40 of file mgd.h.

◆ polyInts

int* gdImageStruct::polyInts

Definition at line 39 of file mgd.h.

◆ red

int gdImageStruct::red[gdMaxColors]

Definition at line 34 of file mgd.h.

◆ size

int gdGifBufferStruct::size

Definition at line 55 of file mgd.h.

◆ style

int* gdImageStruct::style

Definition at line 47 of file mgd.h.

◆ styleLength

int gdImageStruct::styleLength

Definition at line 45 of file mgd.h.

◆ stylePos

int gdImageStruct::stylePos

Definition at line 46 of file mgd.h.

◆ sx

int gdImageStruct::sx

Definition at line 31 of file mgd.h.

◆ sy

int gdImageStruct::sy

Definition at line 32 of file mgd.h.

◆ tile

struct gdImageStruct* gdImageStruct::tile

Definition at line 42 of file mgd.h.

◆ tileColorMap

int gdImageStruct::tileColorMap[gdMaxColors]

Definition at line 44 of file mgd.h.

◆ transparent

int gdImageStruct::transparent

Definition at line 38 of file mgd.h.

◆ w

int gdFont::w

Definition at line 64 of file mgd.h.

◆ x

int gdPoint::x

Definition at line 121 of file mgd.h.

◆ y

int gdPoint::y

Definition at line 121 of file mgd.h.