GTK 4.22: natív SVG támogatás – és még animációkat is tudni fog

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

A GTK eddig is támogatta a SVG (Scalable Vector Graphics) ikonokat, azonban mindig a külső librsvg könyvtárra támaszkodott, ami miatt a megvalósítás nem volt teljesen natív. A Red Hat mérnöke, Matthias Clasen, az elmúlt hónapokban azon dolgozott, hogy a GTK saját natív SVG támogatást kapjon, beleértve az SVG animációkat is.

Korábbi helyzet

GTK 3 és korábbi verziók során a SVG ikonok megjelenítéséhez a következő folyamat zajlott:

  1. librsvg a SVG fájlok renderelésére, a gdk-pixbuf-on keresztül.
  2. A kapott raszterizált képet pixel szinten színezték át a témának megfelelően.

Ez működött, de elveszett az SVG skálázhatóságának előnye: egyszerűen csak pixelek maradtak, amelyek nem skálázhatóak rugalmasan a GTK 4 frakcionális skálázásának és jelenetgrafikájának kihasználására.

A változás története

  • GTK 4.20: Clasen elkezdte a saját SVG parser fejlesztését a szimbolikus ikonokhoz, képes volt feldolgozni a 99%-át az Adwaita ikonoknak.
  • GTK 4.21: Megjelent a GtkPathPaintable, amely lehetővé tette dinamikus vonalvastagság és egyszerű animációk támogatását inspirálva az Apple SF Symbols megoldásából.
  • GTK 4.22: A GtkPathPaintable-t felváltotta a GtkSvg, egy GdkPaintable, amely támogatja az SVG-t és az animációkat – legalább az ikonokhoz legrelevánsabb SVG részhalmazt.

Mit kínál az új támogatás?

  • Natív SVG renderelés a GTK-ban, külső librsvg nélkül.
  • Animációk támogatása, így mozgó ikonok is használhatók.
  • Stroke és fill kezelés, azaz a vonalak és kitöltések megfelelő megjelenítése.
  • Transzformációk, szűrők, klippek, utak és gradiensek támogatása a GTK renderelési infrastruktúrájában.

Miért fontos ez?

  • A GTK 4.22 lehetővé teszi, hogy a ikonok skálázhatósága teljes mértékben kihasználható legyen, különösen magas DPI és frakcionális skálázás mellett.
  • Az animációk révén a felhasználói felület élőbb és dinamikusabb lehet, például interaktív gomboknál vagy alkalmazásikonoknál.
  • A natív megoldás csökkenti a külső Rust-alapú librsvg függőséget, egyszerűbbé és stabilabbá téve a GTK alkalmazásokat, különösen Android és egyéb platformokon.