Colors - Painter(v)


Одной из задач при рисовании сенсоров через сценарии 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 задается три группы цветовых констант:

  1. colx11.crc, описание colx11.htm: Константы, используемые в X11, т.е. Linux.

  2. colweb.crc, описание colweb.htm: Константы, используемые в Web, т.е. в HTML.
    В случае конфликта имен этим константам отдается предпочтение перед константами X11.

  3. 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                ; задание цвета фонта