PIPKIT · Core

Базовые helpers, на которых держится остальной GUI.

Здесь без пересказа собраны базовые helpers из API.md: размеры, цвет, очистка, clip, derive() и adaptive preview.

5. Базовые helpers

5.1. Размеры

ui.screenWidth();   // ширина вашего экрана
ui.screenHeight();  // высота вашего экрана
  • screenWidth() и screenHeight() возвращают уже активный логический размер экрана
  • удобно для центровки, адаптивных отступов и расчёта layout без хардкода

5.2. Цвет

ui.rgb(255, 255, 255);
0xFFFF;     // RGB565
0xFF6200;   // RGB888
  • Библиотека поддерживает два практических способа задания цвета:
  • ui.rgb(r, g, b) - обычный и основной способ. На вход подаётся RGB888, на выходе получается RGB565.
  • прямой hex-литерал - если ты уже знаешь нужное значение заранее
  • если метод принимает uint16_t, туда нужно передавать RGB565
  • если метод принимает uint32_t, туда нужно передавать RGB888 в виде 0xRRGGBB

Для повторно используемых системных accent-цветов есть короткие semantic-токены:

Warning; // #FF6200
Error;   // #FF0048
  • их можно передавать в color(...), fillColor(...), bgColor(...) и другие места, где ожидается RGB565

5.3. Очистка экрана

ui.clear(ui.rgb(0, 0, 0));
  • очищает весь текущий draw target указанным цветом

5.4. Клип

ui.setClip()
    .pos(10, 20)
    .size(120, 80);

// ... рисование только внутри области ...

ui.clearClip();
  • setClip() ограничивает всю последующую отрисовку прямоугольной областью
  • удобно для локальных redraw, списков, анимаций и виджетов в карточках
  • clearClip() возвращает обычную отрисовку без ограничений

5.5. Наследование стиля fluent

У fluent-объектов есть derive(). Это позволяет собрать базовый стиль один раз, а потом сделать на его основе несколько вариантов без копирования всей цепочки.

Пример:

auto base = ui.drawButton()
    .size(120, 40)
    .baseColor(ui.rgb(0, 120, 255))
    .radius(10);

auto compact = base.derive()
    .size(96, 34);

base
    .label("Main")
    .pos(20, 160);

compact
    .label("Mini")
    .pos(20, 210);

После derive() исходный fluent становится шаблоном и сам больше не коммитится. Рисуется уже производная цепочка или финальная донастройка исходного объекта.

5.6. Adaptive preview

ui.setAdaptivePreview(240, 135, 7200);
ui.clearAdaptivePreview();
  • это debug-helper для проверки адаптивности интерфейса
  • setAdaptivePreview(minWidth, minHeight, cycleMs) плавно гоняет логический размер GUI между текущим физическим экраном и указанным минимумом
  • при этом screenWidth() и screenHeight() реально меняются, поэтому layout пересчитывается по-настоящему
  • это не замена configDisplay().size(...) и не перенастройка самой панели: физический дисплей остаётся тем же, меняется только логический viewport GUI
  • clearAdaptivePreview() выключает этот режим и возвращает обычный размер экрана
Code copied