Свойства контроллера

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

Объект lcd. готов работать с широким спектром дисплеев, и некоторые из них на самом деле не относятся к типу LCD. Поэтому правильнее было бы назвать этот объект «объектом дисплея». Тем не менее в Tibbo решили оставить прежнее название - «lcd» печатать быстрее, да и пользуются им уже давно.

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

  • lcd.paneltype показывает, монохромная это панель (или с градациями серого) или цветная.
  • lcd.bitsperpixel сообщает, сколько бит в памяти контроллера дисплея отведено на каждый пиксель. Разумеется, чем больше бит на пиксель, тем выше качество изображения.
  • У дисплеев с 1, 2 или 4 битами на пиксель один байт памяти содержит данные 8, 4 или 2 пикселей. Свойство lcd.pixelpacking сообщает, как пиксели упакованы в байты памяти: по вертикали или по горизонтали (см. рисунок ниже). Эта информация нужна для более быстрого вывода текста.
Схема упаковки пикселей в байты памяти.

Цветные дисплеи

Для цветных дисплеев (lcd.paneltype = 1 - PL_LCD_PANELTYPE_COLOR) три дополнительных свойства только для чтения - lcd.redbits, lcd.greenbits и lcd.bluebits - показывают, сколько бит доступно в каждом цветовом канале, а также как три цветовых поля объединяются в слово, описывающее итоговый цвет пикселя. Эти сведения нужны при установке пикселей, а также при задании цвета переднего плана и фона для рисования линий и прямоугольников, заливки областей и вывода текста (см. Работа с пикселями и цветами).

Эти три свойства имеют тип word. В каждом 16-битном значении упакованы два 8-битных параметра: число бит на пиксель для данного цветового канала (старший байт) и позиция поля в цветовом слове (младший байт). Например, если lcd.redbits = &h0500, lcd.bluebits = &h0605, а lcd.greenbits = &h050B, можно восстановить состав красных, зелёных и синих бит в слове:

Схема состава красных, зелёных и синих бит в слове.

В этом примере красное поле находится первым справа, за ним идут синее поле (начинается с бита 5) и зелёное поле (начинается с бита 11, или 7hB). Теперь известно и то, что для красного и зелёного цвета существует 52 = 32 уровня яркости, а для синего - 64 уровня.

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

Dim color_red, color_green, color_blue As word
...
lcd_red=val("&b"+strgen(lcd.redbits/&hFF,"1")+strgen(lcd.redbits And &hFF,"0"))
lcd_green=val("&b"+strgen(lcd.greenbits/&hFF,"1")+strgen(lcd.greenbits And &hFF,"0"))
lcd_blue=val("&b"+strgen(lcd.bluebits/&hFF,"1")+strgen(lcd.bluebits And &hFF,"0"))

Теперь константу белого цвета можно вычислить вполне строго:

...
lcd_white=lcd_red+lcd_green+lcd_blue
Совет

На самом деле вычислять color_white таким способом не обязательно. Просто возьмите максимально возможное значение (&hFFFF) - это и будет белый цвет.

Исходный материал Tibbo обновлён 3 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке