Przejdź do treści

Platformy ​

Platforma w Lopaka to docelowa biblioteka rysowania lub środowisko uruchomieniowe, które otrzymuje wygenerowany kod. Wybór platformy robi trzy rzeczy:

  1. Ogranicza edytor do modelu kolorów i czcionek, które rozumie biblioteka docelowa.
  2. Steruje generatorem kodu — każda platforma tworzy własną składnię i deklaracje.
  3. Określa, które ustawienia kodu są dostępne (funkcja opakowująca, deklaracje zmiennych, format eksportu obrazów itd.).

Platformę wybiera się przy tworzeniu projektu i nie można jej później zmienić: Ustawienia projektu pokazują ją jako tylko do odczytu. Aby użyć innej biblioteki, utwórz nowy projekt z tą platformą.

Wybór platformy ​

  • OLED / monochromatyczny LCD (SSD1306, SH1106, SSD1309) — U8g2 lub AdafruitGFX Mono
  • Kolorowy TFT (ILI9341, ST7789, GC9A01) — TFT_eSPI, ArduinoGFX lub AdafruitGFX Color
  • Bogaty interfejs dotykowy na ESP32/STM32 — LVGL
  • Flipper Zero / One — platforma Flipper
  • Urządzenie inteligentnego domu ESPHome — ESPHome
  • Wyświetlacz e-paper — GxEPD2
  • RP2040 / ESP32 z MicroPython — MicroPython
  • Płytka CircuitPython — CircuitPython
  • Makieta lub tylko eksport obrazu — Rysowanie swobodne

Porównanie platform ​

PlatformaWyjścieModel kolorówCzcionkiObrazy
U8g2C / C++Monochromatyczny (1-bitowy)BDF (duży zestaw)XBMP
TFT_eSPI / M5 / LovyanC++RGB565GFXXBMP, RGB565
AdafruitGFX ColorC++RGB565GFXXBMP, RGB565
AdafruitGFX MonoC++Monochromatyczny (1-bitowy)GFXXBMP
ArduinoGFXC++RGB565GFXXBMP, RGB565
LVGLCRGB + alfaMontserrat (TTF)RGB565
Flipper Zero / OneCMonochromatyczny (1-bitowy)4 stałe czcionkiXBMP
ESPHomeYAML + lambda C++RGBGoogle Fonts (TTF)XBMP
MicroPythonPythonMonochromatyczny (1-bitowy)Stała (Petme 8×8)Surowy bufor
CircuitPythonPythonRGBTerminus (BDF)Surowy bufor
GxEPD2C++Paleta indeksowanaGFXXBMP
Rysowanie swobodne—RGBWszystkie czcionki—

Narzędzia rysowania ​

To, które narzędzia pojawiają się na pasku narzędzi, zależy od aktywnej platformy. LVGL otrzymuje zestaw oparty na widżetach; wszystkie pozostałe platformy współdzielą zestaw rysowania prymitywów z drobnymi różnicami.

NarzędzieU8g2TFT_eSPIAdaGFXAdaMonoArduGFXLVGLFlipperESPHomeµPyCPyGxEPD2
Linia✅✅✅✅✅—✅✅✅✅✅
Prostokąt✅✅✅✅✅—✅✅✅✅✅
Okrąg——✅✅——✅✅—✅✅
Elipsa✅✅——✅———✅——
Trójkąt✅✅✅✅✅——✅✅✅✅
Wielokąt✅✅✅✅✅—✅✅✅✅—
Łuk—✅—————————
Łuk LVGL—————✅—————
Tekst✅✅✅✅✅✅✅✅✅✅✅
Malowanie✅✅✅✅✅✅✅✅✅✅✅
Panel—————✅—————
Przycisk—————✅—————
Suwak—————✅—————
Przełącznik—————✅—————
Pole wyboru—————✅—————
Obszar tekstowy—————✅—————

Obrót tekstu ​

U8g2, Flipper Zero / One, CircuitPython i LVGL obsługują natywny obrót tekstu o 0°, 90°, 180° lub 270°. Zaznacz warstwę tekstową i użyj przycisków obrotu w inspektorze.

Platformy ​

U8g2 ​

Kierowana do biblioteki monochromatycznych wyświetlaczy U8g2. Generuje kod C++ (Arduino) lub C (ESP-IDF).

Pełny opis konfiguracji i integracji znajdziesz w przewodniku U8g2.

Kolor: binarny — biały (1) lub czarny (0). Dostępny tryb odwróconych kolorów.

Czcionki: dołączona duża biblioteka czcionek BDF. Nazwy czcionek kompilują się do u8g2_font_<name>_tr.

Obrazy: bitmapy XBMP deklarowane jako tablice image_<Name>_bits (U8X8_PROGMEM na Arduino) lub wyodrębniane do pobranego pliku zasobu .h.

Animacje: obsługiwane są wbudowane animacje monochromatyczne.

Szablony: Arduino (C++) i ESP-IDF (C) — każdy z przełącznikiem progmem.

Inspektor: wybór koloru jest ukryty — kolor jest zawsze binarny (ustawiany przez logikę wypełnienia/odwrócenia, a nie pole koloru). Warstwy trójkątów podążają za prymitywem U8g2 i są zawsze wypełnione, więc nie jest dla nich pokazywany przełącznik wypełnienia.

Ograniczenia: brak RGB. Brak własnych rozmiarów czcionek — rozmiar czcionki określa plik BDF.


TFT_eSPI / M5 / Lovyan ​

Obejmuje TFT_eSPI, M5Stack GFX i LovyanGFX — wszystkie mają tę samą powierzchnię API.

Pełny opis konfiguracji i integracji znajdziesz w przewodniku TFT_eSPI.

Kolor: pełny RGB, spakowany jako RGB565 (0xRRGG).

Czcionki: wbudowane Adafruit oraz czcionki GFX. Własne czcionki TrueType (.ttf, .otf, .woff) i BDF można przesyłać; przy imporcie są konwertowane do formatu GFX.

Obrazy: tablice pikseli XBMP (1-bitowe) lub RGB565 (image_<Name>_bits / image_<Name>_pixels), w tekście lub jako pobrane pliki zasobów .h. Przezroczyste piksele są wypełniane tłem ekranu, chyba że opcja Przezroczystość obrazu jest włączona; wtedy jednobitowa maska zachowuje ich przezroczystość (tft.pushMaskedImage).

Łuki: narzędzie Łuk generuje łuki w stylu TFT_eSPI z kolorami pierwszego planu i tła, konfigurowalnymi kątami i szerokością oraz opcjonalnie gładkimi krawędziami.

Szablony: Arduino (C++) lub ESP-IDF (C++). Szablon ESP-IDF pomija PROGMEM, millis() oraz setup() / loop() i mierzy czas animacji za pomocą esp_timer_get_time().

Ograniczenia: tylko RGB565 — brak częściowej alfy: przezroczysty piksel jest albo w pełni przezroczysty (przy włączonej Przezroczystości), albo wypełniony. Pozycja Y czcionek GFX jest dostosowywana automatycznie; sprawdź wyrównanie przy użyciu wielu czcionek.


AdafruitGFX Color ​

Kierowana do biblioteki Adafruit GFX na wyświetlaczach kolorowych.

Kolor: RGB565.

Czcionki: wbudowane Adafruit oraz czcionki GFX. Własne czcionki TrueType (.ttf, .otf, .woff) i BDF można przesyłać; przy imporcie są konwertowane do formatu GFX.

Obrazy: tablice pikseli XBMP lub RGB565 (image_<Name>_bits / image_<Name>_pixels), w tekście lub jako pobrane pliki zasobów .h. Przezroczyste piksele są wypełniane tłem ekranu, chyba że opcja Przezroczystość obrazu jest włączona; wtedy jednobitowa maska zachowuje ich przezroczystość (drawRGBBitmap z maską).

Animacje: obsługiwane są wbudowane animacje monochromatyczne.

Szablony: Arduino (C++) lub ESP-IDF (C++). Szablon ESP-IDF pomija PROGMEM, millis() oraz setup() / loop() i mierzy czas animacji za pomocą esp_timer_get_time().

Ograniczenia: zduplikowane deklaracje czcionek nie są deduplikowane — sprawdź wyjście, jeśli używasz tej samej czcionki na wielu warstwach.


AdafruitGFX Mono ​

Tak samo jak AdafruitGFX Color, ale dla monochromatycznych wyświetlaczy OLED/LCD (SSD1306, SH1106 itd.).

Kolor: binarny — 1 (biały) lub 0 (czarny). Paleta jest ustalona na #000000 / #ffffff.

Czcionki: ta sama biblioteka czcionek GFX co AdafruitGFX Color

Czyszczenie ekranu: wywołuje clearDisplay() zamiast fillScreen().

Animacje: obsługiwane są wbudowane animacje monochromatyczne.

Szablony: Arduino (C++) lub ESP-IDF (C++). Szablon ESP-IDF pomija PROGMEM, millis() oraz setup() / loop() i mierzy czas animacji za pomocą esp_timer_get_time().

Ograniczenia: brak RGB. Brak skali szarości.


ArduinoGFX ​

Kierowana do Arduino_GFX.

Kolor: RGB565, kodowanie z bajtem wysokim jako pierwszym (różni się od kolejności z bajtem niskim w Adafruit).

Czcionki: wbudowane Adafruit oraz czcionki GFX z własnym współczynnikiem skali. Własne czcionki TrueType (.ttf, .otf, .woff) i BDF można przesyłać; przy imporcie są konwertowane do formatu GFX.

Obrazy: tablice pikseli XBMP lub RGB565 (image_<Name>_bits / image_<Name>_pixels), w tekście lub jako pobrane pliki zasobów .h. Przezroczyste piksele są wypełniane tłem ekranu, chyba że opcja Przezroczystość obrazu jest włączona; wtedy jednobitowa maska zachowuje ich przezroczystość (draw16bitRGBBitmapWithMask).

Szablony: Arduino (C++) lub ESP-IDF (C++). Szablon ESP-IDF pomija PROGMEM, millis() oraz setup() / loop() i mierzy czas animacji za pomocą esp_timer_get_time().

Ograniczenia: te same ograniczenia RGB565 co TFT_eSPI. Niezgodność kolejności bajtów z Adafruit spowoduje nieprawidłowe kolory, jeśli skopiujesz bitmapy między tymi dwiema platformami.


LVGL ​

Kierowana do LVGL — bogatej w funkcje biblioteki wbudowanych interfejsów graficznych.

Kolor: pełny RGB. Obrazy RGB zachowują przezroczyste piksele dzięki płaszczyźnie alfa (RGB565A8), gdy opcja Przezroczystość obrazu jest włączona. Kolory są kodowane jako lv_color_hex(0xRRGGBB).

Czcionki: Montserrat TTF w dowolnych rozmiarach.

Widżety: obsługuje panele, przyciski, suwaki, przełączniki, pola wyboru, obszary tekstowe i widżety Łuk LVGL oprócz prymitywnych kształtów. Domyślne wartości widżetów (promień, obramowanie, kolor tła) odpowiadają domyślnym wartościom LVGL v9.

Renderer: używa gładkiego (wygładzanego) renderowania obszaru rysowania w edytorze, aby przybliżyć wyjście LVGL.

Obrazy: deskryptory obrazów RGB565 (lv_image_dsc_t) zgodne z v9, do pobrania jako plik zasobu <Name>.c.

Ograniczenia:

  • W wyborze czcionek dostępna jest tylko Montserrat
  • Własne widżety nie są obsługiwane — każda warstwa odpowiada jednemu wywołaniu lv_obj_create
  • Wygenerowany kod jest kierowany do API C LVGL (v9)

Flipper Zero / One ​

Kierowana do API obszaru rysowania GUI Flipper Zero i Flipper One (canvas_draw_*).

Kolor: monochromatyczny. Domyślny kolor rysowania to czarny na pomarańczowym tle w edytorze.

Czcionki: tylko cztery stałe czcionki — FontPrimary (Helvetica 8 pogrubiona), FontSecondary (Haxrcorp 4089), FontKeyboard (ProFont 11), FontBigNumbers (ProFont 22). Brak własnych rozmiarów czcionek.

Gotowe rozmiary wyświetlacza: Zero Horizontal (128×64), Zero Vertical (64×128), One Horizontal (256×144), One Vertical (144×256).

Obrazy: bitmapy XBMP (image_<Name>_bits), w tekście lub jako samodzielny pobrany plik zasobu .h z tablicami uint8_t.

Animacje: obsługiwane są wbudowane i importowane animacje monochromatyczne. Wygenerowane wyjście zawiera pomocnicze funkcje odtwarzania oraz nagłówki C do pobrania zawierające klatki XBM.

Ograniczenia:

  • Monochromatyczny
  • Brak własnych czcionek

ESPHome ​

Kierowana do lambdy komponentu wyświetlacza ESPHome.

Pełny opis od projektu do wgrania znajdziesz w przewodniku ESPHome.

Wyjście: YAML z osadzonymi lambdami C++. Edytor Ace używa kolorowania składni YAML.

Kolor: pełny RGB kodowany jako Color(R, G, B).

Czcionki: Google Fonts przez gfonts:// oraz inne czcionki TTF. Deklaracje czcionek trafiają do klucza YAML najwyższego poziomu font:.

Obrazy: zasoby PNG do pobrania (<Name>.png) przywoływane przez YAML jako images/<Name>.png i deklarowane jako obrazy BINARY. Umieść pliki PNG w folderze images/ obok pliku YAML.

Brak zaokrąglonych rogów: API wyświetlacza ESPHome nie ma prymitywu prostokąta z zaokrąglonymi rogami.

Ograniczenia: tylko XBMP — brak eksportu bitmap RGB. Bloki font: i image: muszą znajdować się w korzeniu YAML, a nie wewnątrz ciągu lambda:.


MicroPython ​

Kierowana do modułu framebuf MicroPython na RP2040, ESP32 i podobnych.

Sterownik: wygenerowany kod oczekuje sterownika PerfecXX MicroPython-SSD1306, którego obiekt display udostępnia swój bufor ramki jako display.framebuf i dodaje display.polygon. Elipsy są rysowane za pomocą display.framebuf.ellipse(...), więc podgląd w edytorze odpowiada urządzeniu co do piksela. Standardowy ssd1306.py z micropython-lib nie ma display.framebuf i zawodzi przy elipsach, trójkątach i wielokątach.

Wyjście: Python. Edytor Ace używa kolorowania składni Python.

Kolor: monochromatyczny — 1 (biały) lub 0 (czarny). Paleta jest ustalona na czarny i biały.

Czcionki: jedna wbudowana czcionka (Petme 8×8). Wybór czcionki nie jest dostępny.

Obrazy: surowe bufory bytearray (spakowane 1-bitowo, wiersz po wierszu) lub pobrany zasób .pbm (image_<Name>_bits.pbm), który Uwzględnij pliki obrazów wczytuje przy starcie.

Ograniczenia:

  • Monochromatyczny
  • Dostępna jest tylko wbudowana czcionka Petme 8×8
  • Zaokrąglone rogi nie są obsługiwane
  • Ograniczone prymitywy rysowania w porównaniu z innymi platformami.
  • Trójkąty są tylko konturowe.

CircuitPython ​

Kierowana do stosu displayio i vectorio CircuitPython.

Wyjście: Python. Edytor Ace używa kolorowania składni Python.

Kolor: RGB, kodowany jako 24-bitowy hex (0xRRGGBB).

Czcionki: dołączona czcionka BDF Terminus. Wybór czcionki nie jest pokazywany w interfejsie — czcionka jest stała.

Obrazy: zasoby displayio.OnDiskBitmap (image_<Name>_bits.bmp) wczytywane z systemu plików urządzenia.

Ograniczenia:

  • czcionka jest ustalona na BDF Terminus
  • Piksele obrazów znajdują się w pobranych plikach .bmp — skopiuj je obok swojego kodu

GxEPD2 ​

Kierowana do biblioteki wyświetlaczy e-paper GxEPD2. Rozszerza AdafruitGFX.

Kolor: paleta indeksowana 9 nazwanych stałych — GxEPD_BLACK, GxEPD_WHITE, GxEPD_DARKGREY, GxEPD_LIGHTGREY, GxEPD_RED, GxEPD_YELLOW, GxEPD_BLUE, GxEPD_GREEN, GxEPD_ORANGE. Kolory spoza tej palety mapują się na GxEPD_BLACK.

Czcionki: wbudowane Adafruit oraz czcionki GFX (dziedziczy po platformie Adafruit). Własne czcionki TrueType (.ttf, .otf, .woff) i BDF można przesyłać; przy imporcie są konwertowane do formatu GFX.

Obrazy: tylko XBMP, do pobrania jako plik zasobu .h.

Tło: jasnoszare tło edytora (#f8f8f8), aby przybliżyć biel e-paperu.

Ograniczenia: paleta jest stała — brak dowolnych kolorów hex. Częściowe odświeżanie i tryby aktualizacji nie są modelowane w edytorze.


Rysowanie swobodne ​

Tryb tylko do projektowania, bez eksportu kodu. Przydatny do makiet i udostępniania projektów bez kierowania do konkretnej biblioteki.

Kolor: pełny RGB.

Czcionki: dostępne są wszystkie czcionki TTF, BDF i GFX.

Kod: brak wyjścia. Panel kodu jest pusty.

Ograniczenia: nie można używać do generowania kodu. Brak obsługi importu.