Komponenty w AVLib++

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