Функция
Изменяет всю палитру красок.
Синтаксис
#include <graphics.h>
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, то цвет палитры для этого элемента не изменяется.
Возвращаемое значение
Если в setallpalette передается ошибочное значение, graphresult возвратит -11(grError) а текущая палитра останется без изменений.
Переносимость
Функция уникальна для Borland C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим. Функция не совместима с Windows.
Пример
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
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",grapherrormessage(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;
}