Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Čtvrtý bonusový úkol

Odevzdání

Úkol odevzdejte mailem (adresu najdete na webu katedry), s předmětem ZP2 - Bonusový úkol 4, jako přílohu soubor se zdrojovým kódem (a nic dalšího). Odevzdávejte nejpozději 27. 4. ve 23:59.

Body

Za úkol lze získat 4 body.

Zadání

PBM je textový formát pro uložený černobílého obrázku (každý pixel je buď černý nebo bílý).

  • Řádky začínající znakem # jsou komentáře, ty mohou být pouze na začátku souboru.
  • První platný řádek obsahuje řetězec "P1".
  • Druhý platný řádek obsahuje dvě čísla v desítkové soustavě oddělená mezerou, tato čísla udávají šiřku a výšku obrázku (v pixelech).
  • Počínaje třetím řádkem obsahuje soubor pixelová data. Jeden pixel je buď 0 nebo 1. Pixely jsou zapsány za sebou po řádcích odshora obrázku, jeden řádek obrázky na jeden řádek souboru. Mezi pixely na jednom řádku je mezera. Příklad: .pbm.

Doplňte chybející kód v následujícím. (Je povoleno přidat si pomocné funkce atd.)

//
// struktura pro černobílý obrázek
//
typedef struct 
{

  //@TODO

} Picture;

// 
// nahraje obrázek ze souboru ve formátu pbm
// můžete předpokládat korektní formát.
//
Picture load_from_pbm(char *filename)
{

  //@TODO

}

//
//  zrcadlově obrátí obrázek podle svislé osy
//
void mirror_picture(picture *pict) 
{
  //@TODO
}


//
// uloží obrázek do souboru v pbm formátu
//
void save_to_pbm(char *filename, picture src) 
{
  //@TODO
}

int main()
{
  Picture pict = load_from_pbm("test.pbm");
  mirror_picture(&pict);
  save_to_pbm("foo.pbm", pict);
  return 0;
}