setallpalette


Syntax

#include <graphics.h>

void setallpalette(struct palettetype *palette);

Description
setallpalette sets the current palette to the values given in the palettetype structure pointed to by palette.

You can partially (or completely) change the colors in the EGA/VGA palette with setallpalette.

The MAXCOLORS constant and the palettetype structure used by setallpalette 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. If an element of colors is -1, the palette color for that entry is not changed.

The elements in the colors array used by setallpalette can be represented by symbolic constants which are defined in graphics.h. See Actual Color Table given here:
NameValue
BLACK 0
BLUE1
GREEN2
CYAN3
RED4
MAGENTA5
BROWN6
LIGHTGRAY7
DARKGRAY8
LIGHTBLUE9
LIGHTGREEN10
LIGHTCYAN11
LIGHTRED12
LIGHTMAGENTA13
YELLOW14
WHITE15
EGA_BROWN20
EGA_DARKGRAY56
EGA_LIGHTBLUE57
EGA_LIGHTGREEN58
EGA_LIGHTCYAN59
EGA_LIGHTRED60
EGA_LIGHTMAGENTA61
EGA_YELLOW62
EGA_WHITE63
Changes made to the palette are seen immediately onscreen. Each time a palette color is changed, all occurrences of that color onscreen change to the new color value.

Note: Valid colors depend on the current graphics driver and current graphics mode.

setallpalette cannot be used with the IBM-8514 driver.

Return Value
If invalid input is passed to setallpalette, graphresult returns -11 (grError), and the current palette remains unchanged.

Windows Notes [WIN]
The winbgim version of setallpalette expects a palettetype object of up to 16 colors. Each color is one of the 16 BGI color numbers (0 through 15). If you want to set a palette color to an RGB color, then use setrgbpalette.

In the windows version, changing the palette effects only future drawing. Currently drawn pixels do not change their color when the palette changes (no "palette animation").

See also
getpalette
getpalettesize
graphresult
setbkcolor
setcolor
setpalette

Example



See also
getpalette
getpalettesize
graphresult
setbkcolor
setcolor
setpalette

Example

/* setallpalette example */ 



#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>



int main(void)

{

   /* request autodetection */

   int gdriver = DETECT, gmode, errorcode;

   struct palettetype pal;

   int color, maxcolor, ht;

   int y = 10;

   char msg[80];



   /* 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 */

   }



   maxcolor = getmaxcolor();

   ht = 2 * textheight("W");



   /* grab a copy of the palette */

   getpalette(&pal);



   /* display the default palette colors */

   for (color=1; color<=maxcolor; color++) {

      setcolor(color);

      sprintf(msg, "Color: %d", color);



      outtextxy(1, y, msg);

      y += ht;

   }



   /* wait for a key */

   getch();



   /* black out the colors one by one */

   for (color=1; color<=maxcolor; color++) {

      setpalette(color, BLACK);

      getch();

   }



   /* restore the palette colors */

   setallpalette(&pal);



   /* clean up */

   getch();

   closegraph();

   return 0;

}


Back to index