Kreslení obrazovky Apple Watch
Pro tuto úlohu využijte stuktury a funkce pro zápis obrázku formátu TGA do souboru.
Vše má svůj příběh a tak tedy započněme naši cestu např. ve firmě Apple…
Představte si, že jste vývojářem/kou ve firmě Apple a Steve Jobs Vás pověří programátorským úkolem.
Firma aktuálně pracuje na super tajném projektu nových smart hodinek, které chce uvést na trh. Vašim úkolem je pod přímým vedením Steva Jobse (původního zakladatele firmy) naprogramovat digitální ciferník nových hodinek.
Technické specifikace displeje
Displej hodinek má rozlišení 368x448
px (pixelů).
Schéma pro zobrazení znaků
Na obrázku níže je rozklesleno, jak by se měl zobrazovat čas na hodinkách.
První řádek slouží pro zobrazeni hodin, druhý řádek pro zobrazení minut. Tloušťky jednotlivých segmentů a rozestupy jsou také zakresleny. Modře je znázorněna oblast, kde se nevykreslují číslice, ale je možno kreslit pozadí ciferníku. Jsou znázorněna jen čtyři čísla, zbytek si již odvodíte sami.
Funkce a struktury na implementaci
Postupně naimplementujte následující funkce a struktury.
Funkce pro vykreslení času
void watch_draw_time(TGAImage* self, const int hours, const int minutes);
Funkce nakreslí do obrázku self
čas zadaný pomocí času v hodinách (hours
) a minutách (minutes
).
Barvu čísel si zvolte libovolně, stejně jako barvu pozadí.
Struktura pro reprezentaci barvy pixelu (RGBA
)
Barva se do každého pixelu zapisuje jako čtveřice bajtů BGRA
(B
- Blue, G
- Green, R
- Red,
A
- Alpha). Nadefinujte si strukturu RGBA
, která bude tyto bajty reprezentovat pomocí čtyř
proměnných: r
, g
, b
, a
patřičného datového typu.
Funkce pro vykreslení času s určením barev
void watch_draw_time_color(
TGAImage* self,
const int hours,
const int minutes,
const RGBA* fg_color,
const RGBA* bg_color
);
Funkce nakreslí do obrázku self
čas zadaný pomocí času v hodinách (hours
) a minutách (minutes
).
Barva čísel je předána parametrem fg_color
, barva pozadí pak parametrem bg_color
.