Podstawowym obiektem przechowywującym próbki obrazu jest komponent, obiekt klasy sCmp
. Obiekt tej klasy składa się z dwuwymiarowej tabelki z wartościami próbek obrazu, oraz informacji o wielkości obrazu.
Najważniejsze pola klasy:
- pel
- Wskaźnik do 2 wymiarowej tablicy zawierającej punkty komponentu linia po linii, punkt po punkcie
- dx
- Szerokość komponentu w punktach
- dy
- Wysokość komponentu w punktach
- name
- Nazwa komponentu. Przy zdefiniowanych przestrzeniach kolorów, nazwy komponentów odpowadają nazwą składowych kolorów.
Przypisanie nazwy komponentu odbywa się przez wywołanie funkcji x_cmp_set_name. - data
- Wskaźnik typu void. Umożliwia podpięcie dowolnych danych do komponentu. Obecnie nie wykorzystywane. Można przypisać
dowolną wartość - ref
- Wskaźnik na inny komponent, umoźliwia wskazanie komponentu referencyjnego.
- prev
- Wskaźnik na poprzedni komponent, używany do konstrukcji list komponentów
- next
- Wskaźnik na następny komponent, używany do konstrukcji list komponentów
Nagłówek:
x_cmp.h
Obiekt komponentu możemy utworzyć za pomocą funkcji
sCmp* x_cmp_create(
int32 dx, //Szerokość obrazu w punktach
int32 dy, //Wysokość obrazu w punktach
);
Aby usunąć komponent z pamięci wystarczy wywyołać funkcję
sCmp* x_cmp_delete(
sCmp* cmp, //Wskaźnik na Komponent do usunięcia
);
Poniżej przykład pracy z komponentami.
sCmp* cmp = x_cmp_create(1920,1088); //Utworzenie obiektu komponentu
//Przetwarzenie
for(int32 y = 0 ; y < cmp->dy ; y++) //Pętla po wszystkich liniach obrazu (wierszach)
for(int32 x = 0 ; x < cmp->dx ; x++) //Pętla po wszystkich punktach obrazu (kolumnach)
cmp->pel[y][x] = x % 255; //Ustawienie wartości próbek obrazu - rysujemy gradient od 0 do 255
x_cmp_put_bmp_to_file(cmp,"obrazek.bmp"); //Zapisanie obrazka w pliku BMP
x_cmp_delete(cmp); //Usuniecie z pamieci obiektu komponentu