Multimediálna knižnica Pixel v jazyku Go

Ročníkový projekt

Študent Vedúci
Michal Štrba Michal Forišek

Stránka na GitHub-e: https://github.com/faiface/pixel

Motivácia

Programovací jazyk Go je (relatívne) nový jazyk, ktorý sa odlišuje od iných jazykov predovšetkým tým, že neprináša žiadne revolučné vlastnosti, ale zato revolučným spôsobom spája existujúce a vytvára tak veľmi konzistentný jazyk, v ktorom je prinicipiálne jeden správny spôsob na všetko.

V Go existuje veľa knižníc na robenie webových serverov a rôznych iných “backend-ových” záležitostí, ale chýbajú dobré knižnice na grafiku, zvuk, prehrávanie videí, či robenie grafických aplikácii s tlačidlami. Totiž, existujú, ale každá existujúca má buď nejaké nedostatky, alebo je iným spôsobom zlá a zle použiteľná.

Preto som sa rozhodol vytvoriť vlastnú multimediálnu knižnicu v jazyku Go.

Ciele

2D grafika, audio, desktop

Toto trio zhrňuje hlavné vlastnosti, ktoré chce knižnica implementovať. Knižnica Pixel sa nesnaží robiť 3D grafiku, všetko prispôsobuje 2D vykresľovaniu. Chce podporovať prehrávanie zvukov a nechce bežať (aspoň zatiaľ) na ničom inom, ako počítače s operačnými systémami Windows, MacOS a Linux.

Hlavná výhoda týchto cieľov je, že sú splniteľné: 3D knižnicu by som nebol schopný spraviť sám, podpora mobilných zariadení by bolo veľa práce navyše, ktorú by nikto nevyužil.

Prepojenie so štandardnou knižnicou Go

Štandardná knižnica v Go je veľmi bohatá, funkčná a vyspelá. Pokúšať sa implementovať veci, ktoré už sú implementované v nej by bola rana do nohy.

Konkrétne sa jedná napríklad o tieto veci:

Knižnica, nie engine

Cieľom knižnice Pixel je umožniť jej používateľovi robiť veci, nie určovať, ako ich má robiť. Preto knižnica Pixel nedefinuje žiaden “strom entít”, “hierarchiu objektov”, nutnosť registrovať funkcie pre spracovanie udalostí, a podobné veci, ktoré nútia používateľa prispôsobiť sa istéj paradigme tvorby aplikácie.

Knižnica Pixel umožňuje vytvárať okná, kresliť obrázky, geometrické útvary, a podobne, v čo najflexibilnejšom API.

Flexibilita a grafické efekty

Knižnica Pixel je postavená na niekoľkých základných rozhraniach, ktoré ju robia veľmi flexibilnou. Tieto rozhrania sú Target, Triangles a Drawer. Rozoberme si ich:

Tieto rozhrania spolu tvoria veľmi silný systém. Vďaka nim je napríklad možné ľahko implementovať grafické efekty. Grafický efekt môže byť objekt typu Target, na ktorý sa kresli “rozmazane”, a tak ďalej.

Jedným z hlavných cieľov knižnice Pixel je využiť túto flexibilitu a poskytnúť bohatú zásobu grafických efektov, ľahkých na použitie.

Dosiahnutý pokrok

Zimný semester

TODO: