Что такое код setallpalette

Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования

Название Подпрограммы классификации Подпрограммы преобразования
Анкор Справочник по функциям С++.doc
Дата 07.05.2020
Размер 3.41 Mb.
Формат файла
Имя файла Справочник по функциям С++.doc
Тип Документы
#18992
Категория Информатика. Вычислительная техника
страница 92 из 120
Подборка по базе: Автореферат_Исследования метода и стенда для контрольного погреш, Пособие Классификации основных инфекционных заболеваний — 2014.p, Особенности классификации ювелирных изделий в ТН ВЭД ЕАЭС.docx, избранные классификации внутренних болезней.doc, избранные классификации внутренних болезней.doc, Тема 2. Классификации рисков.ppt, Общая классификация аварий, их классификации и причины возникнов, готовая курсовая (конструктивные особенности изгот-я зубных прот.

setallpalette

void far setallpalette(struct palettetype

far *palette);
Прототип в graphics.h
Замечания setallpallete устанавливает текущую палитру в

соответствии со значениями, задаваемыми в

структуре palettetype, на которую указывает

palette.
С помощью функции setallpalette вы можете

полностью или частично изменить цвета палитры в

EGA/VGA.
Константа MAXCOLORS и структура palettetype,

используемые в setpalette, определяются в

graphics.h следующим образом:
#define MAXCOLORS 15

unsigned char size;

signed char colors[MAXCOLORS + 1];

>;
size определяет число цветов в палитре для

текущего графического драйвера в текущем

режиме.
colors представляет собой массив из size байт,

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

палитры для этой записи не меняется.
Элементы массива colors, используемые в

setallpalette, могут быть представлены
символическими константами, определенными в

Таблица реальных цветов

Название Код Название Код

ЧЕРНЫЙ 0 EGA_ЧЕРНЫЙ 0

ГОЛУБОЙ 1 EGA_ГОЛУБОЙ 1

ЗЕЛЕНЫЙ 2 EGA_ЗЕЛЕНЫЙ 2

СИНИЙ 3 EGA_СИНИЙ 3

КРАСНЫЙ 4 EGA_КРАСНЫЙ 4

МАЛИНОВЫЙ 5 EGA_МАЛИНОВЫЙ 5

КОРИЧНЕВЫЙ 6 EGA_КОРИЧНЕВЫЙ 7

СВЕТЛОСЕРЫЙ 7 EGA_СВЕТЛОСЕРЫЙ 20

ТЕМНОСЕРЫЙ 8 EGA_ТЕМНОСЕРЫЙ 56

СВЕТЛОГОЛУБОЙ 9 EGA_СВЕТЛОГОЛУБОЙ 57

СВЕТЛОЗЕЛЕНЫЙ 10 EGA_СВЕТЛОЗЕЛЕНЫЙ 58

СВЕТЛОСИНИЙ 11 EGA_СВЕТЛОСИНИЙ 59

РОЗОВЫЙ 12 EGA_РОЗОВЫЙ 60

СВЕТЛОМАЛИНОВЫЙ 13 EGA_СВЕТЛОМАЛИНОВЫЙ 61

ЖЕЛТЫЙ 14 EGA_ЖЕЛТЫЙ 62

БЕЛЫЙ 15 EGA_БЕЛЫЙ 63

графического режима.
Изменения палитры немедленно приводят к

изменению цветов на экране.
Примечание: setallpalette не может

использоваться с драйвером IBM-8514.
Возвращаемое При ошибках ввода функции setallpalette функция

значение graphicresult будет возвращать -11 (ошибка

графического режима grError) и текущая палитра

останется без изменений.
Переносимость Эта функция работает только на IBM PC и

совместимых компьютерах с графическими

контроллерами.
См. также getpalette,graphresult,setbkcolor,setcolor,

setaspectratio

сжатия
Синтаксис #include

void far setaspectratio(int xasp, int yasp);
Прототип в graphics.h
Замечания setaspectratio используется для изменения

графической системы. Коэффициент сжатия

используется графической системой для того,

чтобы придать окружностям правильную форму.

Если окружности похожи на эллипсы, это значит,

что монитор не настроен должным образом. Это

может быть исправлено аппаратным способом,

путем перенастройки монитора, или программным

setaspectratio для установки соответствующего

коэффициента сжатия. Для получения текущего

значения коэффициента сжатия испльзуйте вызов

функции getaspectratio.
Возвращаемое Нет.

значение
Переносимость Эта функция работает только на IBM PC и

совместимых компьютерах с графическими

контроллерами.
См. также circle, getaspectratio.

процедура SetAllPalette

Змінює одночасно кілька кольорів палітри.

Procedure SetAllPalette (var Palette)

Параметр Palette в заголовку процедури описаний як нетипізований параметр. Перший байт цього параметра повинен містити довжину N палітри, інші n байти -номери знову встановлюваних кольорів в діапазоні від 1 до MaxColors. Код «1» означає, що відповідний колір вихідної палітри не змінюється.

Розглянемо реалізацію попередньої задачі з використанням процедури SetAllPalette.

Program DemoSetPalette 2;

GrDriver, GrMode, i: integer;

pal: array [0..16] of integer;

InitGraph (GrDriver, GrMode, ‘C: | Bp | BGI’);

for i: = 0 to 16 do

Pal [i]: = Random (16);

for i: = 1 to 15 do

Line (10, 10 + 10 * i, 300, 10 + 10 * i);

Особливістю використання процедури SetAllPalette в таких конструкціях є те, що 0-колір (за замовчуванням) — колір фону як би випадає з поля зору. У програмі використовується рядок SetBkColor (1) для кращої демонстрації, оскільки за замовчуванням колір фону завжди 0 (чорний) і лінії з темними відтінками стають невидимими.

У модулі Graph визначена константа

Colors: array [0..MaxColors] of ShortInt

За допомогою наступної програми можна вивести на екран номери всіх можливих кольорів з поточної палітри.

GrDriver, GrMode, i: integer;

InitGraph (GrDriver, GrMode, ‘C: | Bp | BGI’);

for i: = 1 to 16 do

writeln (pal.colors [i]);

У цій програмі процедура SetPalette повертає розмір і кольори поточної палітри.

Procedure GetPalette (var PaletteInfo: PaletteTupe);

setallpalette

Функция setallpalette() изменяет все цвета в палитре EGA/VGA. Структура palettetype определе­на следующим образом:

Можно установить поле size равным числу цветов в палитре текущего активного графического режима и установить каждый элемент colors равным соответствующему цвету (следует обратиться к описанию функции setpalette() для списка допустимых цветов различных видеоадаптеров). Для того, чтобы оставить определенный цвет без изменения, используется величина —1.

При вызове функции setallpalette() с некорректными значениями никаких изменений палитры не произойдет.

Keyboard Shortcut for opening command palette in VS Code?

On windows 10 running VS Code how do I open the command pallete with keyboard shortcuts? Under the view menu it says the shortcut is ctrl+shift+P but doing that does not open the command palette?

1 Answer 1

Well seems like f1 works instead of control+shift+p. Don’t know why it lists that as the keyboard shortcut.

Edit: So on some of my computers ctrl + shift + p works fine. Not sure perhaps its a conflict with the mappings on particular laptops.

Иллюстрированный самоучитель по Turbo Pascal

Краски, палитры, заполнения

Процедура GetPalette

Возвращает размер и цвета текущей палитры. Заголовок:

Здесь Palettelnfo – переменная типа PaletteType, возвращающая размер и цвета палитры.

В модуле Graph определена константа:

С помощью следующей программы можно вывести на экран номера всех возможных цветов из текущей палитры.

Процедура SetAllPalette

Изменяет одновременно несколько цветов палитры. Заголовок процедуры:

Параметр Palette в заголовке процедуры описан как нетипизированный параметр. Первый байт этого параметра должен содержать длину N палитры, остальные N байты – номера вновь устанавливаемых цветов в диапазоне от -1 до MaxColors. Код -1 означает, что соответствующий цвет исходной палитры не меняется.

В следующей программе происходит одновременная смена сразу всех цветов палитры.

Программирование в СИ (стр. 3 из 8)

Для того чтобы можно было в любой момент узнать текущую установку графического окна, существует функция

void far getviewsettings(struct viewporttype far *viewport);

Данная функция помещает параметры текущего окна в структуру *viewport. Тип этой структуры определен в файле graphics.h:

Возвращаемые координаты представлены в системе координат стра­ницы.

С графическим окном связано понятие текущей графической позиции CP(current graphics position). Это графический эквивалент курсора в текстовом режиме. Текущая графическая позиция сама собой никак не отображается на экране и идентифицирует выбранный пиксель графического окна, к которому привязывается действие некоторых функций, таких как вычерчивание прямолинейных отрезков или вывод графических текстов.

При установке нового графического окна текущая позиция автоматически помещается в его начало координат. Для явного изменения положения текущей позиции используются функции

void far moveto(int x, int y);void far moverel(int dx, int dy);

Первая помещает CPпо указанным координатам графического окна. Вторая перемещает CP на вектор (dx, dy).

Координаты текущей графической позиции в системе координат графического окна возвращают функции:

int far getx(void);int far gety(void);

При переустановке графического окна функцией setviewport содержимое страницы видеопамяти не изменяется. Для очистки графического окна на активной в данный момент странице используется функция

void far clearviewport(void);

CP при этом перемещается в начало координат графического окна.

void far cleardevice(void);

очищает всю активную страницу. Установка графического окна при этом не изменяется, а CPперемещается в его начало координат.

На многих мониторах пиксель, который высвечивается на экране, имеет форму прямоугольника, вытянутого по вертикали. Это объясняется тем, что на дисплее страница видеобуфера отображается на весь экран, а пропорции экрана и страницы в режиме максимального разрешения, как правило, не совпадают (исключение – мониторы с адаптерами VGA, где в режиме с разрешением 640 х 480 точек все пиксели квадратные). Такое несоответствие приводит к возникновению анизотропности растра пикселей: горизонтальный и вертикальный отрезки, содержащие одинаковое число пикселей, на экране будут выглядеть, как отрезки разной длины.

Тем не менее, окружности и их дуги рисуются функциями библиотеки правильно, так как эти функции используют хранящийся в графической системе корректирующий коэффициент пропорциональности (aspect ratio), учитывающий “степень неквадратности” пикселя. Чтобы правильно нарисовать квадрат, необходимо произвести корректировку количества пикселей по его горизонтальной и вертикальной сторонам. Истинные пропорции пикселя на данном дисплее можно узнать с помощью функции

void far getaspectratio(int far *x_asp,int far *y_asp);

Данная функция через свои аргументы возвращает искомое значение, причем *y_asp всегда устанавливается равным 10 000, а величина *x_asp ≤ *y_asp. Отношение *x_asp к *y_asp как раз и есть отношение горизонтального и вертикального размеров пикселя. Теперь, если горизонтальная сторона квадрата представлена отрезком длиной X пикселей, то длина вертикальной стороны должна быть равна значению выражения

Y = (int)(X ∙ (float)(*x_asp) / (*y_asp)).

Заметим, что коэффициент “неквадратности” автоматически учитывается только функциями, которые рисуют окружности и их дуги, но никак не влияет на функции рисования эллипсов и их дуг.

1.4. Управление цветом

Цветовые возможности функций графической библиотеки Borland C описываются в терминах цветовой палитры режима – закона, по которому каждому допустимому значению атрибута пикселя ставится в соответствие цвет, которым этот пиксель будет отображаться на экране.

Палитру режима можно представить как таблицу, содержащую столько строк (входов), сколько значений допускается для атрибута пикселя в данном графическом режиме. Строки палитры режима нумеруются от нуля до N_palette-1. В строке с номером k содержится код цвета, которым аппаратура видеоадаптера отображает на экране все пиксели страницы, атрибуты которых равны k. Нулевой вход палитры режима, кроме того, определяет цвет фона экрана.

Все графические режимы можно разделить на три группы:

· монохромные режимы, в которых все пиксели могут быть двух цветов – основного и фонового. Палитру таких режимов изменить невозможно;

· цветные режимы с фиксированной палитрой. Для изменения палитры режима нужно менять графический режим, что приводит к потере содержимого видеопамяти;

· графические режимы, позволяющие динамически (без потери содержимого видеопамяти) изменять код цвета по любому входу палитры режима. К данным режимам относятся режимы драйверов EGA, VGA, IBM8514.

Механизм управления цветом в Borland C включает в себя важный элемент – структуру данных, называемую внутренней палитрой. При работе в графических режимах на всех дисплейных адаптерах, кроме VGA и IBM8514, она содержит коды цветов из таблицы цветов адаптера. Роль внутренней палитры при работе с адаптером VGA несколько иная и будет рассмотрена ниже. Драйвер IMB8514 вообще не пользуется внутренней палитрой, поэтому в дальнейшем все, что будет говориться о работе с внутренней палитрой, не относится к этому драйверу. Не следует путать внутреннюю палитру (обычную переменную структурного типа) графической системы с палитрой режима с законом преобразования значения пикселя в цвет.

Определение внутренней палитры как структуры данных имеет вид:

где size – это число строк внутренней палитры, разрешенное для использования в текущем графическом режиме, а colors – массив закодированных описаний цвета.

Для всех монохромных режимов и режимов с фиксированными палитрами допускается использование во внутренней палитре 16 цветов, которые в точности совпадают со стандартными цветами текстового режима. Каждый цвет палитры кодируется числом от 0 до 15. При инициализации таких графических режимов значение каждого элемента массива colors совпадает с его индексом.

В режимах с динамическим управлением внутренняя палитра содержит 16 цветов, коды которых могут лежать в диапазоне от 0 до 63
(т. е. имеется возможность менять содержание внутренней палитры). Для 16 кодов цветов стандартного набора, устанавливаемых при инициализации этих режимов (как для драйвера EGA, так и VGA), определен перечислимый тип EGA_COLORS, т. е. стандартные коды цветов имеют символические имена:

Количество динамически управляемых строк таблицы цветов для текущего графического режима можно определить при помощи функции:

int far getpalettesize(void);

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

int far getmaxcolor(void);

Непосредственное изменение внутренней палитры осуществляется с помощью функций setpalette или setallpalette. Первая изменяет содержание только одного входа палитры, а вторая всех сразу. Синтаксиспервойфункции:

void far setpalette(int num_color_pallete,int num_color);

Аргумент num_color_palette задает номер изменяемого входа внутренней палитры и должен лежать в пределах от нуля до size-1 (size – элемент структуры данных palettetype). Аргумент color задает новое значение кода цвета для этого входа в диапазоне от 0 до 63 (реально используются только шесть младших бит аргумента num_color).

Другая функция, изменяющая внутреннюю палитру, имеет синтаксис:

void far setallpalette(struct palettetype far *palette);

Аргумент ее является указателем на структуру, содержащую ва­риант желаемой палитры. Все изменения в текущей внутренней палитре, произведенные функциями setpalette и setallpalette немедленно отображаются на экране дисплея.

Цветом фона можно управлять с помощью функции

void far setbkcolor(int num_color_palette);

Действие функции заключается в том, что нулевой вход внутренней палитры связывается со входом, имеющим номер num_color_palette. Это означает, что в нулевой элемент внутренней палитры записывается значение, которое в данный момент содержится в элементе с номером num_color_palette. Кроме того, все последующие изменения содержимого элемента с номером num_color_palette будут немедленно дублироваться в нулевой элемент. Заметим, что функция setpalette(0, color) просто изменяет цвет фона, но не связывает нулевой вход ни с каким другим.

Обратной для функции установки цвета фона является функция

int far getbkcolor(void);

которая возвращает текущее назначение для фонового цвета, т.е. номер того входа внутренней палитры, с которым связан в настоящий момент нулевой вход. Если ранее при помощи функции setbkcolor не произошло связывания ни с каким входом, то getbkcolor возвращает 0.

Для получения информации о текущей внутренней палитре существует две функции:

void far getpalette(struct palettetype far *palette);struct palettetype far *getdefaultpalette(void);

Первая копирует в область памяти, на которую указывает аргумент, текущее состояние внутренней палитры. Другая возвращает указатель на хранящуюся в графической системе структуру, содержащую эталон внутренней палитры. Получив указатель на эту структуру, можно изменить сам эталон палитры. Такие изменения будут сохраняться до следующей инициализации какого-либо режима.

Все вышеописанные способы динамического управления цветом рассчитаны на адаптеры, в которых пиксель может быть представлен не более чем четырьмя битами. Однако некоторые адаптеры допускают восьмибитовую величину атрибута пикселя (IBM8414 и VGA, имеющие в таблице цветов 256 входов). Для них существует расширенная палитра, которая содержит 256 входов. Каждый вход соответствует коду цвета. Для того чтобы какому-либо коду соответствовал другой оттенок цвета, используется функция

Что такое код setallpalette

Меняет все цвета палитры на заданные.

Palette — переменная без типа, в первом байте которой помещается число N — количество цветов в палитре, а в последующих N байтах — коды задаваемых цветов, принимающих значения от -1 до 15 (см. табл. 20); если задана величина -1, исходный цвет остается без изменения.

В случае аварийной ситуации (неправильные входные параметры) процедура устанавливает код ошибки -11 и никаких изменений в палитре не происходит.

Применяется только в графическом режиме и только с драйверами EGA, EGA64 и VGA.

Procedure SetAllPalette(var Palette);

Устанавливает все цвета палитры. Переменная Palette должна быть типа PaletteType.
procedure SetPalette(ColorNum : word; Color : shortint;

Изменяет один цвет палитры, указанный через ColorNum и Color.
procedure GetPalette(var Palette : PaletteType);

Возвращает текущую палитру в переменной Palette.

function GetPaletteSize : integer;

Возвращает размер таблицы палитры.

procedure GetDefaultPalette(var Palette : PaletteType);

Возвращает аппаратную палитру в записи PaletteTyp. function GetMaxColor : word;
Возвращает максимальный цвет, который можно задать в SetColor.
procedure SetRGBPalette(ColorNum, RedValue, GreenValue, BlueValue : integer);

Позволяет модифицировать один из цветов палитры для IBM 8514 и VGA по насыщенности красного, зеленого и голубого цветов.

Динамические массивы в Паскале. Динамические массивы в Паскале не имеют заранее определенного размера. Размер динамических массивов может изменяться. Пример создания динамического массива в Паскале:

type TIntMassiv = array of Integer;
var intMassiv: TIntMassiv;

здесь создан новый тип TIntMassiv, это динамический массив, его размер не известен, и переменная данного типа intMassiv.

Размер динамического массива неизвестен, но для работы с таким массивом размер надо установить. Устанавливают размер динамического массива в Паскаль с помощью функции SetLength

здесь установлен размер два для массива intMassiv.

Отсчет индексов динамического массива в Паскале всегда ведут с нуля.

Динамическим называется массив, размер которого может меняться во время исполнения программы. Для изменения размера динамического массива язык программирования, поддерживающий такие массивы, должен предоставлять встроенную функцию или оператор. Динамические массивы дают возможность более гибкой работы с данными, так как позволяют не прогнозировать хранимые объёмы данных, а регулировать размер массива в соответствии с реально необходимыми объёмами. Обычные, не динамические массивы называют ещё статическими.

Не нашли, что искали? Воспользуйтесь поиском:

Что такое код setallpalette

Подпрограммы управления палитрой в случае CGA

Поскольку палитра CGA является предопределенной, подпрограмму setallpalette использовать в данном случае нельзя. Также не следует использовать setpalette(индекс, фактическийцвет), за исключением индекс=0. (Это альтернативный способ установки фонового цвета CGA равным фактическому цвету)

Управление цветом для EGA и VGA

В случае EGA палитра содержит 16 элементов из общего количества 64 возможных цветов, причем каждый из элементов палитры может быть задан пользователем. Доступ к текущей палитре выполняется через функцию getpalette, которая заполняет структуру, включающую в себя размер палитры (16) и массив фактических элементов палитры ( аппаратные номера цветов , хранимые в палитре). Элементы палитры можно изменять как по отдельности при помощи setpalette, либо все сразу через функцию setallpalette.

Палитра EGA по умолчанию соответствует 16 цветам CGA, которые были даны в предыдущей таблице цветов: черный равен элементу 0, голубой равен элементу 1, . , белый равен элементу 15. В graphics.h определены константы, которые содержат соответствующие цветам аппаратные значения: это EGA BLACK, EGA WHITE и т.д. Эти значения могут быть также получены через функцию getpalette.

Подпрограмма setbkcolor(цвет) на EGA работает несколько иначе, чем на CGA. На EGA setbkcolor копирует фактическое значение цвета, хранящееся в элементе #цвет, в элемент #0.

Что касается цветов, то драйвер VGA работает фактически так же, как и драйвер EGA; он просто имеет более высокое разрешение (и меньшие по размеру элементы изображения)

Обработка ошибок в графическом режиме

Ниже приведены функции обработки ошибок в графическом режиме:

Возвращает строку с сообщением об ошибке для заданного кода ошибки.

Возвращает код ошибки для последней графической операции, в которой встретилась ошибка.

Если ошибка произошла при вызове графической библиотечной функции (например, не найден шрифт, запрошенный функцией settextstyle), устанавливается внутренний код ошибки. Доступ к коду ошибки для последней графической операции, сообщившей об ошибке, выполняется при помощи функции graphresult. Вызов grapherrormsg(graphresult()) возвращает строку сообщения об ошибке из приведенных выше.

Код возврата ошибки накапливается, изменяясь только когда графическая функция сообщает об ошибке. Код возврата ошибки сбрасывается в 0 только при успешном выполнении initgraph, либо при вызове функции graphresult. Таким образом, если вы хотите знать, какая графическая функция возвратила ошибку, нужно хранить значение graphresult во временной переменной и затем проверять ее.

Код ошибки, константа графической ошибки и соответствующая строка с сообщением об ошибке приведены ниже:

No error (нет ошибки)

(BGI) graphics not installed (use initgraph) (графика не инсталлирована используйте функцию initgraph)

Graphics hardware not detecte (графическое аппаратное обеспечение не обнаружено)

Device driver file not found (не найден файл драйвера устройства)

Invalid device driver file (неверный файл драйвера устройства)

Not enough memory to load driver (не хватает памяти дя загрузки драйвера)

Out of memory in scan fill (кончилась память при сканирующем заполнении)

Out of memory in flood fill (кончилась память при лавинном заполнении)

Font file not found (файл шрифта не найден)

Not enough memory to load font (не хватает памяти для загрузки шрифта)

Invalid graphics mode for selected driver (недопустимый графический режим для выбранного драйвера)

Graphics error (графическая ошибка)

Graphics I/O error (графическая ошибка ввода-вывода)

Invalid font file (неверный файл шрифта)

Invalid font number (неверный номер шрифта)

Invalid device number (неверный номер устройства)

Selecting Colors with the Palette API

Good visual design is essential for a successful app, and color schemes are a primary component of design. The palette library is a support library that extracts prominent colors from images to help you create visually engaging apps.

You can use the palette library to design layout themes and apply custom colors to visual elements in your app. For example, you can use a palette to create a color-coordinated title card for a song based on its album cover or to adjust an app’s toolbar color when its background image changes. The Palette object gives you access to the colors in a Bitmap image while also providing six main color profiles from the bitmap to help inform your design choices.

Set up the library

To use the palette library, install or update the Android Support Library to version 24.0.0 or higher and follow the instructions for Adding Support Libraries to add the palette library to your app development project.

Make sure that the version specified in your dependency >compileSdkVersion , set in the build.gradle file:

For more information about adding the palette dependency, read about the palette feature in the support library documentation.

Create a palette

A Palette object gives you access to the primary colors in an image, as well as the corresponding colors for overlaid text. Use palettes to design your app’s style and to dynamically change your app’s color scheme based on a given source image.

To create a palette, first instantiate a Palette.Builder from a Bitmap . You can then use the Palette.Builder to customize the palette before generating it. This section will describe palette generation and customization from a bitmap image.

Generate a Palette instance

Generate a Palette instance using Palette ’s from(Bitmap bitmap) method to first create a Palette.Builder from a Bitmap . The builder can then generate the palette either synchronously or asynchronously.

Use synchronous palette generation if you want to create the palette on the same thread as the method being called. If you generate the palette asynchronously on a different thread, use the onGenerated() method to access the palette immediately after it has been created.

The following code snippet provides example methods for both types of palette generation:

Kotlin

If you need to continuously generate palettes for a sorted list of images or objects, cons >Palette instances to prevent slow UI performance. You also should not create the palettes on your main thread.

Customize your palette

The Palette.Builder allows you to customize your palette by choosing how many colors are in the resulting palette, what area of your image the builder uses to generate the palette, and what colors are allowed in the palette. For example, you can filter out the color black or ensure that the builder only uses the top half of an image to generate your palette.

Fine-tune your palette’s size and colors with the following methods from the Palette.Builder class:

addFilter() This method adds a filter that indicates what colors are allowed in the resulting palette. Pass in your own Palette.Filter and modify its isAllowed() method to determine which colors are filtered from the palette. maximumColorCount() This method sets the maximum number of colors in your palette. The default value is 16, and the optimal value depends on the source image. For landscapes, optimal values range from 8-16 while pictures with faces usually have values that fall between 24-32. The Palette.Builder takes longer to generate palettes with more colors. setRegion() This method indicates what area of the bitmap the builder uses when creating the palette. You can only use this method when generating the palette from a bitmap, and it does not affect the original image. addTarget() This method allows you to perform your own color matching by adding a Target color profile to the builder. If the default Target s are not sufficient, advanced developers can create their own Target s using a Target.Builder .

Extract color profiles

Based on the standards of material design, the palette library extracts commonly used color profiles from an image. Each profile is defined by a Target , and colors extracted from the bitmap image are scored against each profile based on saturation, luminance, and population (number of pixels in the bitmap represented by the color). For each profile, the color with the best score defines that color profile for the given image.

By default, a Palette object contains 16 primary colors from a given image. When generating your palette, you can customize its number of colors using the Palette.Builder . Extracting more colors prov >Palette.Builder to take longer when generating the palette.

The palette library attempts to extract the following six color profiles:

  • Light Vibrant
  • Vibrant
  • Dark Vibrant
  • Light Muted
  • Muted
  • Dark Muted

Each of Palette ’s get Color() methods returns the color in the palette associated with that particular profile, where is replaced by the name of one of the six color profiles. For example, the method to get the Dark Vibrant color profile is getDarkVibrantColor() . Since not all images will contain all color profiles, you must also provide a default color to return.

Figure 1 displays a photo and its corresponding color profiles from the get Color() methods.

Figure 1. An example image and its extracted color profiles given the default maximum color count (16) for the palette.

Use swatches to create color schemes

The Palette >Palette.Swatch objects for each color profile. Palette.Swatch objects contain the associated color for that profile, as well as the color’s population in pixels.

Swatches have additional methods for accessing more information about the color profile, such as HSL values and pixel population. You can use swatches to help create more comprehensive color schemes and app themes using the getBodyTextColor() and getTitleTextColor() methods. These methods return colors appropriate for use over the swatch’s color.

Each of Palette ’s get Swatch() methods returns the swatch associated with that particular profile, where is replaced by the name of one of the six color profiles. Although the palette’s get Swatch() methods do not require default value parameters, they return null if that particular profile does not exist in the image. Therefore, you should check that a swatch is not null before using it. For example, the following code gets the title text color from a palette if the Vibrant swatch is not null:

Kotlin

To access all colors in a palette, the getSwatches() method returns a list of all swatches generated from an image, including the standard six color profiles.

The following snippet of code uses the methods from the above code snippets to synchronously generate a palette, get its vibrant swatch, and change the colors of a toolbar to match the bitmap image. Figure 2 displays the resulting image and toolbar.

Kotlin

Figure 2. An example image with its vibrant-colored toolbar and corresponding title text color.

Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.

Илон Маск рекомендует:  PromptForFileName - Функция Delphi
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL