Графическая библиотека для калькуляторов CASIO

| рубрика «Программы» | автор -error-
Метки: , ,

Данная библиотека пригодится не только для калькулятора CASIO 9860, но и для любого другого, поддерживающего программирование на языке Си.

Сайт проекта на GitHub: https://github.com/errorcalc/ESLowGraphicsLibrary. Там есть несколько примеров программ и скудный кусочек документации.

Для создания своих программ и демонстраций я использую свою графическую библиотеку написанную на СИ, и работающую на нескольких платформах, некоторое время назад, я решил "хватит жадничать" и выложил библиотеку ESLGL в открытый доступ. (можно изменять и использовать, как хочется, в некоммерческих целях)

Библиотека имеет достаточно богатый список функций рисования, таких как:

  • Точки
  • Линии
  • Эллипсы (в том числе заполненные)
  • Прямоугольники (в том числе заполненные)
  • Вывод изображений, с прозрачностью, маской, масштабированием, а также частично.
  • Работа с 1-бит/4-битным изображениями
  • Моноширинный шрифт
  • Относительные координаты
  • Режим позволяющий, не дорисовывать последний пиксель, что позволяет избегать повторного закрашивания(критично при рисовании цветом "инвертирование")
  • Поворот на угол кратный 90, инверсия, отражение битмапа
  • Начальная поддержка 3д с текстурами(без перспективы), градиентами, Z-buffer
  • утилита для конвертации картинок в массив char-ов
  • ...

Рисование производится в специальный объект TBitMap, которых может быть сколько угодно (на сколько хватит ОЗУ).

Также можно рисовать непосредственно в видеопамять, главное получить адрес видеопамяти и создать статический BitMap: esCreateStaticBitMap(Ширина, Высота, ФорматПикеля, АдресВидеопамяти).

В моей демке вы наверное заметили, что графика рисуется в 16 цветах, а выводиться на монохромный экран? Да?

Так и есть, поскольку библиотека поддерживает 16 цветный режим, я рисую в нем, а на экран вывожу предварительно преобразовав в одноцветный режим, библиотечной функцией:

int Convert_pf4bit_To_pf1bit(PBitMap Dest, PBitMap Source);

Использовать ESLGL просто, взгляните на этот код:

#include "Graphics.h"

main(void)
{
  PBitMap BitMap;
  BitMap = esCreateBitMap(100, 100, pf1bit); // создаем изображение в памяти

  esClear(BitMap, 1); // заливаем белым
  esDrawRect(BitMap, 0, 0, 99, 99, 0); // черная рамка
  esFillEllipse(BitMap, 0, 0, 99, 99, 0); // эллипс
  esFillRect(BitMap, 0, 0, 99, 49, 2); // инвертируем половину экрана

  YourSystemDrawToScreenFunction(BitMap); // твоя функция копирования битмапа в видеопамять

  esFreeBitMap(BitMap); // освобождаем ресурсы
  return 0;
}

Данный код рисует такую картинку:

Как видите все действительно просто!

Если сообщество будет заинтересовано данной библиотекой, то я сделаю цикл статей о работе с ней. Пишите комментарии и описания ошибок в трекер проекта.