MIDAS
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
 
int * gdImageStruct::polyInts
 
int gdImageStruct::polyAllocated
 
struct gdImageStructgdImageStruct::brush
 
struct gdImageStructgdImageStruct::tile
 
int gdImageStruct::brushColorMap [gdMaxColors]
 
int gdImageStruct::tileColorMap [gdMaxColors]
 
int gdImageStruct::styleLength
 
int gdImageStruct::stylePos
 
int * gdImageStruct::style
 
int gdImageStruct::interlace
 
char * gdGifBufferStruct::data
 
int gdGifBufferStruct::size
 
int gdFont::nchars
 
int gdFont::offset
 
int gdFont::w
 
int gdFont::h
 
int * gdFont::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

typedef gdFont* gdFontPtr

Definition at line 73 of file mgd.h.

◆ gdGifBuffer

◆ gdImage

typedef struct gdImageStruct gdImage

◆ gdImagePtr

typedef gdImage* gdImagePtr

Definition at line 51 of file mgd.h.

◆ gdPointPtr

typedef struct gdPoint * 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 }
int sy
Definition: mgd.h:32
int sx
Definition: mgd.h:31
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)) {
845  gdImageSetPixel(im, px, py, color);
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:1316
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)) {
868  gdImageSetPixel(im, px, py, color);
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 }
int red[gdMaxColors]
Definition: mgd.h:34
#define gdMaxColors
Definition: mgd.h:22
int blue[gdMaxColors]
Definition: mgd.h:36
int open[gdMaxColors]
Definition: mgd.h:37
int green[gdMaxColors]
Definition: mgd.h:35
int colorsTotal
Definition: mgd.h:33
INT i
Definition: mdump.cxx:35
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 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 }

◆ 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 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 }
int transparent
Definition: mgd.h:38
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 gdImageGetPixel(gdImagePtr im, int x, int y)
Definition: mgd.cxx:627
#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
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:1550
#define M_FREE(x)
Definition: midas.h:1552
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;
420  gdImagePtr im;
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 }
struct gdImageStruct * brush
Definition: mgd.h:41
int * style
Definition: mgd.h:47
unsigned char ** pixels
Definition: mgd.h:30
int polyAllocated
Definition: mgd.h:40
int interlace
Definition: mgd.h:48
struct gdImageStruct * tile
Definition: mgd.h:42
int * polyInts
Definition: mgd.h:39
#define M_CALLOC(x, y)
Definition: midas.h:1551
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;
1901  int useGlobalColormap;
1902  int bitPixel;
1903  int imageCount = 0;
1904  char version[4];
1905  gdImagePtr im = 0;
1906  ZeroDataBlock = FALSE;
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 
1978  useGlobalColormap = !BitSet(buf[8], LOCALCOLORMAP);
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) {
1989  if (ReadColorMap(fd, bitPixel, localColorMap)) {
1990  return 0;
1991  }
1992  ReadImage(im, fd, imw, imh, localColorMap,
1993  BitSet(buf[8], INTERLACE), imageCount != imageNumber);
1994  } else {
1995  ReadImage(im, fd, imw, imh,
1996  ColorMap, BitSet(buf[8], INTERLACE), imageCount != imageNumber);
1997  }
1998  if (Transparent != (-1)) {
1999  gdImageColorTransparent(im, Transparent);
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:1841
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:1317
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 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;
968  int leftLimit, rightLimit;
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 }
int tileColorMap[gdMaxColors]
Definition: mgd.h:44
#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 */
903  int leftLimit, rightLimit;
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  }
914  gdImageSetPixel(im, i, y, color);
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  }
926  gdImageSetPixel(im, i, y, color);
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)) {
938  gdImageFillToBorder(im, i, y - 1, border, 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)) {
954  gdImageFillToBorder(im, i, y + 1, border, 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 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;
2602  index = gdImageColorExact(im,
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
int brushColorMap[gdMaxColors]
Definition: mgd.h:43
#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)) {
561  gdImageSetPixel(im, x, y, gdBrushed);
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
int stylePos
Definition: mgd.h:46
#define gdStyledBrushed
Definition: mgd.h:89
int styleLength
Definition: mgd.h:45
#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 }

◆ 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.