Вот такая красота теперь возможна благодаря моей новой либе charts. Пока что имеем гистограммчики и прогрессбары. У обоих точность до 1/8 символа.
Документация
Контейнер
Сидит в charts.Container. Его задача: хранить базовые параметры типа цвета по умолчанию, самого графика. Собственно, это абстракция над объектами графика.
Атрибуты
Container.gpu — прокси видеокарты, на которой рисовать график.
Container.fg — цвет "текста" по умолчанию.
Container.bg — цвет фона по умолчанию.
Container.x и Container.y — это координаты левого верхнего угла контейнера.
Container.payloadX, Container.payloadY — координаты графика относительно левого верхнего угла контейнера. Пока лучше не трогать, потом что-нибудь с ними придумаю.
Container.width, Container.height — ширина и высота, соответственно, графика.
Container.payload — сам объект графика.
Методы
Container:draw() — рисует график.
Так как сам по себе бесполезен, пример кода здесь не нужен.
Стороны
Спит и живёт в charts.sides. Это таблица, которая содержит четыре значения: sides.TOP, sides.BOTTOM, sides.LEFT, sides.RIGHT. Требуется для настройки графиков.
Гистограмма
Очень прикольная вещь. Рисует вертикальные столбцы шириной в 1 символ с высотой в соответствии с числовым значением из таблицы.
Атрибуты
Histogram.values — таблица значений гистограммы.
Histogram.align — указывает, как брать значения гистограммы. Если здесь выставить sides.LEFT, то будут браться первые w (по ширине контейнера) значений из таблицы и рисоваться в том же порядке. Если же тут будет sides.RIGHT, то будут браться последние w значений из таблицы и рисоваться в том же порядке, но справа. Короче, проще взять и попробовать.
Histogram.colorFunc — это задаваемая функция для рассчёта значений цвета столбца и фона в зависимости. Возвращает цвет столбца и цвет фона. Принимает следующие параметры, по порядку:
Индекс элемента в таблице значений.
Нормализованное значение (от нуля до единицы), или, если хотите, отношение значения к максимальному.
Само значение.
Объект гистограммы.
Объект контейнера.
Histogram.min — самое что ни на есть минимальнейшее возможное значение гистограммы. Все значения должны быть больше или равны этому.
Histogram.max — самое что ни на есть максимальнейшее возможное значение гистограммы. Все значения должны быть меньше или равны этому.
Histogram.level.y — это высота уровня голограммы. По умолчанию равно нулю, так что все столбцы растут вверх, но можно поднять его. Значение ≥ 1 поднимает уровень на соответствующее число символов. Значение в полуинтервале [0; 1) задают нормализованную высоту уровня (например, 0.5 — это посередине гистограммы). Значения меньше нуля отсчитывают уровень с самой верхней позиции, где -1 — это самая высокая точка.
Histogram.level.value — это число, значения ниже которого будут отображаться столбиками, направленными вниз, а значения выше — столбиками, направленными вверх.
Примеры кода
Прогресс бар
Это прогресс бар.
Атрибуты
ProgressBar.value — числовое значение прогрессбара.
ProgressBar.max — максимальное значение прогрессбара.
ProgressBar.min — минимальное значение прогрессбара.
ProgressBar.direction — направление прогрессбара. Туда будет стремиться полоска, с этой стороны будет конец прогрессбара. Не запутайтесь: это не сторона начала.
ProgressBar.colorFunc — функция, возвращающая цвет полоски и фона прогрессбара для переданных аргументов:
Самое значение прогрессбара.
Нормализованное значение.
Объект прогрессбара.
Объект контейнера.
Пример кода
Это были два вида графического представления данных, самых распространённых в программах для OpenComputers. Так что теперь вам, слава коду, не придётся больше никогда писать опять свои ловисипеды для этого. Либу, однако, я продолжу допиливать. У меня есть ещё несколько идей насчёт очень крутых фич, которые я как-нибудь потом реализую.
Установка
Установите hpm: http://computercraft.ru/topic/1855-repozitorii-programm-hel/?do=findComment&comment=27287
Поставьте пакет с помощью данной команды: hpm install charts.