Одной из задач при рисовании сенсоров через сценарии Painter(v) является задание цветов. Для задания цветов можно использовать разные способы. Можно использовать функцию rgb(r,g,b). Можно использовать числовые константы RGB вида $BBGGRR, например $FFD0C0 эквивалентно rgb($C0,$D0,$FF). Обратите внимание на обратный порядок байтов в записи RGB: один и тот же цвет записывается как rgb($RR,$GG,$BB) или $BBGGRR. Это связано с тем, что при записи чисел старшие байты пишутся вперед. В HTML принят обратный порядок записи - #RRGGBB. В общем, чтобы не путаться с порядком записи и для "читабельности" удобнее использовать именованные цветовые константы. Например, clRed, clGreen, clBlue. Файл painter.crc включает в себя большой набор цветовых констант colors.crc, которые можно использовать для задания цвета карандаша (setPen), кисти (setBrush) и фонта (@font).
Актуальная Таблица Цветов, доступных по именам, находится в файле crw-daq-colors.htm. Этот файл обновляется в каждом сеансе работы пакета, т.е. содержит актуальную таблицу цветов. В нем, в частности, определены функциональные цвета, которые обозначаются не именем цвета, а именем графического элемента или функции, с которыми связан цвет. Функциональные цвета отличаются тем, что их значение не является строгой константой, а зависит от настройки Windows, т.е. определяется во время исполнения. Такие цвета в пакете имеют имена, начинающиеся с знака подчеркивания. Например, цвет фона кнопки имеет имя _BtnFace. Соответственно, имя цвета в Painter будет cl_BtnFace. Для удобства поддерживаются также названия без знака подчеркивания, например, clBtnFace, который имеет то же значение.
Цветовые константы имеют вид clName, где Name - имя цвета. Префикс cl указывает на то, что эта константа задает цвет (color).
В файле colors.crc задается три группы цветовых констант:
colx11.crc, описание colx11.htm: Константы, используемые в X11, т.е. Linux.
colweb.crc, описание colweb.htm:
Константы, используемые в Web, т.е. в HTML.
В случае конфликта имен этим константам отдается предпочтение перед константами X11.
colwin.crc, описание colwin.htm:
Константы, используемые в Windows.
В случае конфликта имен этим константам отдается предпочтение перед константами X11 и Web.
Наличие нескольких частично совпадающих, хотя слегка конфликтующих цветовых схем связано с историческими причинами. Стандартизацией цветовых констант занималось параллельно несколько организаций (x.org, w3.org, vesa.org), преследуя разные цели. В одних случаях они иногда определяли одноименные цвета немного по-разному, а в других давали одинаковым цветам разные имена. Одновременно с этим Microsoft разрабатывал Windows, ориентируясь на эти стандарты и создавая свои фирменные соглашения. Большинство одноименных цветов в разных цветовых схемах совпадает, но некоторые цвета все же конфликтуют, т.к. определены по-разному. Чтобы избежать неопределенностей, используется приоритет: наивысший приоритет в случае конфликта имен имеют цвета Windows, затем Web, затем X11.
Пример задания цветов:
color1=$FF00FF ; задание RGB цвета HEX числом color2=rgb(192,0,192) ; задание RGB цвета функцией color3=clLime ; задание цвета по имени setPen(color1,psSolid,pmCopy,1) ; задание уставок Карандаша setBrush(color2,bsSolid) ; задание уставок Кисти @font color %color3 ; задание цвета фонта