setallpalette

Функция            Изменяет всю палитру красок.

Синтаксис          #include 
                   void far setallpalette(struct palettetype
                   far *palette);

Файл, содержащий   graphics.h
прототип

Описание           setallpalette устанавлмвает текущую политру
                   в значения, заданные в структуре palettetype, на
                   которую указывает параметр palette. Вы можете
                   частично (или полностью) изменить цвета политры
                   EGA/VGA c помощью функции setallpalette.

                   Константа MAXCOLORS и структура palettetype ис-
                   пользуемые в setallpalette, определены в
                   graphics.h следующим образом:

                      #define MAXCOLORS 15

                      struct palettetype{
                         unsigned char size;
                         signed char colors[MAXCOLORS+1];
                      };

                   size содержит количество цветов в палитре для те-
                   кущего графического драйвера в текущем режиме.

                   colors -массив из size байтов, содержащий ряд но-
                   меров цветов для каждого элемента палитры. Если
                   элемент в массиве colors равен -1, то цвет палит-
                   ры для этого элемента не изменяется.

                   Элементы массива colors, используемые в
                   setallpalette, могут быть представлены в виде
                   символических констант, определенных в graphics.h

          -----------------------------------------------------
                    Таблица доступных цветов
          -----------------------------------------------------
                 CGA                         EGA/VGA
          Имя               Знач      Имя               Знач.
          -----------------------------------------------------
          BLACK                0    EGA_BLACK              0
          BLUE                 1    EGA_BLUE               1
          GREEN                2    EGA_GREEN              2
          CYAN                 3    EGA_CYAN               3
          RED                  4    EGA_RED                4
          MAGENTA              5    EGA_MAGENTA            5
          BROWN                6    EGA_LIGHTGRAY          7
          LIGHTGRAY            7    EGA_BROWN             20
          DARKGRAY             8    EGA_DARKGRAY          56
          LIGHTBLUE            9    EGA_LIGHTBLUE         57
          LIGHTGREEN          10    EGA_LIGHTGREEN        58
          LIGHTCYAN           11    EGA_LIGHTCYAN         59
          LIGHTRED            12    EGA_LIGHTRED          60
          LIGHTMAGENTA        13    EGA_LIGHTMAGENTA      61
          YELLOW              14    EGA_YELLOW            62
          WHITE               15    EGA_WHITE             63
          -----------------------------------------------------

                   Заметим, что цвета зависят от текущих графическо-
                   го драйвера и графического режима.

                   Изменения, произведенные в палитре, сразу же мо-
                   гут быть увидены на экране. При изменении цвета в
                   палитре, все на экране, окрашенное в этот цвет,
                   станет окрашенным в новый цвет.

                   Замечание. setallpalette не может использоваться
                   с драйвером IBM-8514.

Возвращаемое       Если в setallpalette передается ошибочное
значение           значение, graphresult возвратит -11(grError)
                   а текущая палитра останется без изменений.

Переносимость       Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

Смотрите также       getpalette getpalettesize graphresult
                     setbkcolor setcolor setpalette

Пример:

#include 
#include 
#include 
#include 

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
struct palettetype pal;
int color,maxcolor,ht;
int y=10;
char msg[80];

/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */

{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
maxcolor = getmaxcolor();
ht = 2*textheight("W");
/* получить копию палитры */
getpalette(&pal);
/* вывести значения цветов палитры */
for(color = 1; color <= maxcolor; color++)
{
   setcolor(color);
   sprintf(msg,"Color %d",color);
   outtextxy(1,y,msg);
   y += ht;
}
/* ожидать нажатия клавиши */
getch();
/* присвоить всем у[цветам значение черного */
for(color = 1; color <= maxcolor; color++)
{
   setpalette(color,BLACK);
   getch();
}
/* восстановить цвета палитры */
setallpalette(&pal);
/* очистка */
getch();
closegraph();
return 0;
}