getpalette


Syntax
#include <graphics.h>
void getpalette(struct palettetype *palette);
Description
getpalette fills the palettetype structure pointed to by palette with information about the current palette's size and colors.

The MAXCOLORS constant and the palettetype structure used by getpalette are defined in graphics.h as follows:

#define MAXCOLORS  15

struct palettetype {
   unsigned char size;
   signed char colors[MAXCOLORS + 1];
};
size gives the number of colors in the palette for the current graphics driver in the current mode.

colors is an array of size bytes containing the actual raw color numbers for each entry in the palette.

getpalette cannot be used with the IBM-8514 driver.

Return Value
None.

Windows Notes [WIN]
The winbgim version of getpalette returns a palettetype object of 16 colors. Each color is either one of the 16 BGI color numbers (0 through 15) or it is -1 to indicate that the location of the palette has been set to an RGB color.

See also
getbkcolor
getcolor
getdefaultpalette
getmaxcolor
setallpalette
setpalette

Example
/* getpalette example */ 

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int main()
{

   /* request autodetection */
   int gdriver = DETECT, gmode, errorcode;
   struct palettetype pal;
   char psize[80], pval[20];
   int i, ht;
   int y = 10;

   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk) {  /* an error occurred */

      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);               /* terminate with an error code */
   }

   /* grab a copy of the palette */
   getpalette(&pal);

   /* convert palette info into strings */
   sprintf(psize, "The palette has %d modifiable entries.", pal.size);

   /* display the information */
   outtextxy(0, y, psize);
   if (pal.size != 0) {
      ht = textheight("W");

      y += 2*ht;
      outtextxy(0, y, "Here are the current values:");
      y += 2*ht;
      for (i=0; i<pal.size; i++, y+=ht) {
         sprintf(pval, "palette[%02d]: 0x%02X", i, pal.colors[i]);
         outtextxy(0, y, pval);
      }
   }

   /* clean up */
   getch();
   closegraph();
   return 0;
}

Back to index