Π‘Π»Π΅Π΄ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠΏΠΎΡΠ΅Π½ ΡΡΡΠ΄ Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ 0.15 Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π·Π° Π²Π΅ΠΊΡΠΎΡΠ½Π° Π³ΡΠ°ΡΠΈΠΊΠ° ThorVG, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° C++ (ΡΡΠ°Π½Π΄Π°ΡΡ C++14) ΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Π½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· MIT. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½Π° Π³ΡΠ°ΡΠΈΠΊΠ° Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΠ°ΡΠΎ Tizen OS, Godot Engine, LVGL ΠΈ ΠΏΠ»Π΅Π΅ΡΠΈΡΠ΅ dotLottie.
Thor Vector Graphics (ThorVG) Π΅ Π»Π΅ΠΊΠ° ΠΈ ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΡΡΠ΅Π½ΠΈ ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ° ΡΠΎΡΠΌΠ°ΡΠΈ SVG Tiny 1.2, Lottie ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°Ρ TVG (SVG, ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½ Ρ Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° LZW).
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ΄ΠΎΠ±Π½ΠΈ API Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅, ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π²Π΅ΠΊΡΠΎΡΠ½Π° Π³ΡΠ°ΡΠΈΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° Π½Π΅ΠΉΠ½ΠΈΡ Π΅ΠΊΡΠΏΠΎΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ Ρ ΠΏΡΠ°Π²ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅:
#include "Example.h" using namespace std; void exportGif() { auto animation = tvg::Animation::gen(); auto picture = animation->picture(); if (!tvgexam::verify(picture->load(EXAMPLE_DIR"/lottie/walker.json"))) return; picture->size(800, 800); auto saver = tvg::Saver::gen(); if (!tvgexam::verify(saver->save(std::move(animation), "./test.gif"))) return; saver->sync(); cout << "Successfully exported to test.gif." << endl; } int main(int argc, char **argv) { if (tvgexam::verify(tvg::Initializer::init(0))) { exportGif(); tvg::Initializer::term(); } return 0; }
Π‘ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΈ ΡΡΠΈΠ»ΠΈΡΠΈ Π·Π° lottie2gif, svg2png ΠΈ svg2tvg.
ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΡΠ΄ΡΡΠΆΠ° ΡΠ΅Π΄ΠΈΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ:
- Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ Π½Π° WebGPU Π΄Π²ΠΈΠΆΠΊΠ°;
- ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΈ ΠΏΡΡΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠΈΡ ΠΎΠ²Π΅;
- ΠΏΠΎΠ²ΠΈΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅;
- Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° GPU ΠΏΠ°ΠΌΠ΅ΡΡΠ°;
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ·Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²ΠΈΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° Π΅ΠΊΡΠ°Π½Π°;
- Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Lottie Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ;
- Π½Π°ΠΉ-Π³ΠΎΠ»ΡΠΌΠΎΡΠΎ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π² ThorVG Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅ Π² Lottie Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ;
- Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² Lottie Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ;
- ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ Π°Π½ΠΈΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΠΊΡΡ;
- ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ Π΅ Π°Π»Π³ΠΎΡΠΈΡΡΠΌΡΡ Π·Π° ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΠ΅Π·ΠΈΠ΅ ΠΊΡΠΈΠ²ΠΈ ΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅;
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ Π½Π° ΠΏΠΎΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΡΡΡ Ρ ΡΡΠ΅Π½Π°ΡΠ°;
- Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΈ Π³Π»ΠΈΡΠΎΠ²Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠ°;
- Π² OpenGL Π΄Π²ΠΈΠΆΠΊΠ° Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈΡΠ΅;
- Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ API;
- ΠΎΡΡΡΡΠ°Π½Π΅Π½ΠΈ ΡΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±ΡΠ³ΠΎΠ²Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
