% HUAAAAAAAAAAAAAAAAA konecne jsem na to prisla...
%                                                          Enjoy (-:

\documentclass[25pt,landscape]{foils} %da se zmanit velikost pisma ... 17, 20, 25 nebo 30

\usepackage{czech}

\newcommand{\nadpisek}[1]
  {\begin{center} \textcolor{mgreen}{\bfseries #1 } \end{center} \medskip}

\ifx\pdfoutput\undefined
  \usepackage[monochrome]{color}
  \usepackage[dvips]{graphicx}
\else
  \usepackage[pdftex]{color}
  \usepackage[pdftex]{graphicx}
\fi

  \usepackage{pause}
  \usepackage{background}
  \usepackage{pp4slide}
    \definecolor{dgreen}{rgb}{0,0.5,0}  % hodilo by se nadefinovat hezci
    \definecolor{mgreen}{rgb}{0,0.7,0}  % i kdyz... "ZELENA UKLIDNUJE A TICHO LECI"
    \definecolor{lgreen}{rgb}{0,0.9,0}
    \renewcommand\Black{\color{black}}  % undo pp4slide
    \renewcommand\normalcolor{\color{dgreen}}
    \renewcommand{\labelitemi}{\textcolor{mgreen}{$\bullet$}} 
% jako odrazka se muze dat jakykoliv mat. symbol (normalni tucka je \bullet)

\ifx\pdfoutput\undefined
\else
  \definecolor{bggreen}{rgb}{0.56,0.96,0.66} % barvicka na pozadi
  \color{black}
  \vpagecolor{bggreen}
\fi


\usepackage{graphicx}

\begin{document}




\foilhead{Tvorba aplikácii v C++}
\begin{center}
	\includegraphics*{img/code.jpg}
\end{center}

\begin{itemize}
	\item 	Juraj Michálek
	\item 	http://kota543.host.sk
	\item 	e-mail: georgik@host.sk

\end{itemize}


\foilhead{Čo nás čaká}
\begin{itemize}
	\item 	interaktívne aplikácie (Allegro, SDL, ClanLib)
	\item 	aplikácie s GUI (QT, FLTK, GTK)
	\item 	špeciálne knižnice (Mesa)
	\item 	nástroje na programovanie (RHIDE)
	\item 	pár rád do života

\end{itemize}


\foilhead{Prvé kroky programátora}
\begin{itemize}
	\item 	1. dostane skvelý nápad
	\item 	2. naprogramuje dokonalý program
	\item 	3. každú funkciu si naprogramuje sám
	\item 	4. zistí, že je program nepoužiteľný

\end{itemize}


\foilhead{Programátor na vlastných nohách}
\begin{itemize}
	\item 	5. pokúsi sa program opraviť
	\item 	6. zistí, že polovicu funkcii naprogramoval zle
	\item 	7. preprogramuje zlé funkcie
	\item 	8. zistí, že program je opäť nepoužiteľný
	\item 	goto 5.

\end{itemize}


\foilhead{Ako uniknúť z bludného kruhu?}
\begin{itemize}
	\item 	skúsme sa zamyslieť kde je hlavný problém
	\item 	všetky funkcie programuje sám
	\item 	väčšinu funkcíí už niekto naprogramoval
	\item 	stačí nájsť správnu knižnicu s funkciami
	\item 	výsledok -- 80\% ušetrenie času

\end{itemize}


\foilhead{Štandardné knižnice}
\begin{center}
	\includegraphics*{img/books.jpg}
\end{center}




\foilhead{Štandardné knižnice I.}
\begin{itemize}
	\item 	\#include $<$string$>$
	\item 	základné funkcie na prácu s reťazcami
	\item 	\#include $<$list$>$, \#include $<$deque$>$
	\item 	operácie nad zoznamami

\end{itemize}


\foilhead{Štandardné knižnice II.}
\begin{itemize}
	\item 	\#include $<$map$>$
	\item 	operácie s asociatívnymi poliami
	\item 	\#include $<$algorithm$>$
	\item 	špeciálne algoritmy (triedenie, výpis)

\end{itemize}


\foilhead{Obyčajná aplikácia}
\begin{itemize}
	\item 	spracovanie vstupov (klávesnica, myš)
	\item 	zozbrazenie výstupov (obrazovka)
	\item 	vystačíme vždy so štandartnými funkciami?

\end{itemize}


\foilhead{Nie}
\begin{center}
	\includegraphics*{img/no.jpg}
\end{center}




\foilhead{Spracovanie vstupu}
\begin{itemize}
	\item 	stlačil užívateľ šipku hore a vpravo?
	\item 	drží užívateľ stlačené CTRL+ALT+DEL+Any key?
	\item 	v akej súradnicovej sústave pracuje myš?
	\item 	má myš aj koliečko? v akej polohe?

\end{itemize}


\foilhead{Spracovanie výstupu}
\begin{itemize}
	\item 	vykresliť obraz v 16-bit alebo 32-bit?
	\item 	ktorú časť obrazu prekresliť?
	\item 	ako nakresliť kurzor, aby po ňom nezostávali stopy?

\end{itemize}


\foilhead{Ťažký je život programátora}
\begin{itemize}
	\item 	to všetko sa predsa naprogramovať nedá!
	\item 	nehádžme flintu do žita
	\item 	veľa programátorov riešilo podobné problémy
	\item 	a tak vnziklo niekoľko kvalitných knižníc

\end{itemize}


\foilhead{Interaktívne aplikácie}
\begin{itemize}
	\item 	aplikácie musia rýchlo reagovať na užívateľa
	\item 	musia sa prispôsobovať jeho potrebám
	\item 	najlepším príkladom je počítačová hra

\end{itemize}


\foilhead{Knižnice}
\begin{itemize}
	\item 	Allegro
	\item 	SDL
	\item 	Clanlib

\end{itemize}


\foilhead{Allegro}
\begin{center}
	\includegraphics*{img/allegro.jpg}
\end{center}




\foilhead{Allegro I.}
\begin{itemize}
	\item 	Allegro Low Level Game Routines
	\item 	vznikla na platforme Atari ST
	\item 	Atari však pod tlakom platformy PC zaniklo
	\item 	našťastie nezanikli myšlienky Allegra

\end{itemize}


\foilhead{Allegro II.}
\begin{itemize}
	\item 	bolo reimplementovane pomocou Borland C
	\item 	niekoľko "fanatikov" ho adaptovalo na DJGPP
	\item 	boli naprogramované obrovské kusy kódu
	\item 	pár "exotov" začalo písať verzie pre DirectX a XServer

\end{itemize}


\foilhead{Allegro III.}
\begin{itemize}
	\item 	Allegro sa roztrieštilo na niekoľko častí
	\item 	nakoniec sa však všetky vetvy spojili
	\item 	teraz Allegro tvorí ucelenú multiplatformovú knižnicu

\end{itemize}


\foilhead{Allegro -- aplikácia}
\begin{itemize}
	\item 	spracovanie klávesnice, myši, joysticku
	\item 	spracovanie obrazu, zvuku
	\item 	jednoduché GUI
	\item 	ovládanie časovačov
	\item 	používanie dátových súborov

\end{itemize}


\foilhead{Programovanie -- základ I.}
\begin{itemize}
	\item 	inicializácia Allegra
	\item 	{\tt allegro\_init();}
	\item 	ukončenie Allegro
	\item 	{\tt allegro\_exit();}

\end{itemize}


\foilhead{Programovanie -- základ II.}
\begin{itemize}
	\item 	za funkciou main je nutné uviesť makro
	\item 	{\tt END\_OF\_MAIN();}

\end{itemize}


\foilhead{Programovanie -- grafika I.}
\begin{itemize}
	\item 	nastavenie grafickej hĺbky
	\item 	{\tt set\_color\_depth(int depth)}
	\item 	inicializácia grafického prostredia
	\item 	{\tt set\_gfx\_mode(int card, int w, int h, int v\_w, int v\_h)}

\end{itemize}


\foilhead{Programovanie -- grafika II.}
\begin{itemize}
	\item 	{\tt BITMAP} -- všeobecná štruktúra na uloženie obrazu
	\item 	obrazovka je {\tt BITMAP} -- označenie screen
	\item 	vytvorenie obrazovej pamäte
	\item 	{\tt BITMAP *bmp = create\_bitmap(320, 200);}

\end{itemize}


\foilhead{Programovanie -- grafika III.}
\begin{itemize}
	\item 	vymazanie obrazovej pamäte
	\item 	{\tt clean(bmp);}
	\item 	vykreslenie bodu do obrazovej pamäte
	\item 	{\tt putpixel(bmp, x, y, color)}

\end{itemize}


\foilhead{Programovanie -- grafika IV.}
\begin{itemize}
	\item 	načítanie obrazu zo súboru
	\item 	{\tt BITMAP *load\_bitmap(filename, palette);}
	\item 	kopírovanie z jednej pamäte do druhej
	\item 	{\tt blit(bmp, screen, 0, 0, 0, 0, 320, 200);}

\end{itemize}


\foilhead{Programovanie -- grafika V.}
\begin{itemize}
	\item 	sprite -- okolie obrazu je transparentné
\begin{center}
	\includegraphics*{img/sprite.jpg}
\end{center}

	\item 	{\tt draw\_sprite(screen, bmp, x, y);}

\end{itemize}


\foilhead{Programovanie -- grafika VI.}
\begin{itemize}
	\item 	uvolnenie obrazovej pamäte
	\item 	{\tt destroy\_bitmap(bmp);}

\end{itemize}


\foilhead{Programovanie -- klávesnica I.}
\begin{itemize}
	\item 	zavedenie ovladača klávesnice
	\item 	{\tt install\_keyboard()}
	\item 	odstránenie ovladača klávesnice
	\item 	{\tt remove\_keyboard()}

\end{itemize}


\foilhead{Programovanie -- klávesnica II.}
\begin{itemize}
	\item 	načítanie klávesy
	\item 	{\tt readkey()}
	\item 	vymazanie zásobníka kláves
	\item 	{\tt clear\_keybuf()}

\end{itemize}


\foilhead{Programovanie -- klávesnica III.}
\begin{itemize}
	\item 	zistenie stlačenia klávesy
	\item 	{\tt int keypressed()}
	\item 	test na stlačenie konkrétne klávesy
	\item 	{\tt key[KEY\_typ]}

\end{itemize}


\foilhead{Programovenie -- časovač I.}
\begin{itemize}
	\item 	časovač zaisťuje rovnakú rýchlosť behu
	\item 	inštalácia a odstránenie ovladača časovača
	\item 	{\tt install\_timer()}
	\item 	{\tt remove\_timer()}

\end{itemize}


\foilhead{Programovanie -- časovač II.}
\begin{itemize}
	\item 	časovač implementovaný ako počítadlo
	\item 	{\tt volatile int counter;}
	\item 	v pravidelných intervaloch je volaná určitá funkcie
	\item 	{\tt void my\_timer\_handler()}

\end{itemize}


\foilhead{Programovanie -- časovač III.}
\begin{itemize}
	\item 	inštalácia funkcie volenej v pravidelných intervaloch
	\item 	{\tt install\_int\_ex(my\_timer\_handler,speed);}

\end{itemize}


\foilhead{Programovanie -- myš I.}
\begin{itemize}
	\item 	inštalácia a odstránenie ovládača myši
	\item 	{\tt install\_mouse()}
	\item 	{\tt remove\_mouse()}

\end{itemize}


\foilhead{Programovanie -- myš II.}
\begin{itemize}
	\item 	{\tt mouse\_x} -- X súradnica
	\item 	{\tt mouse\_y} -- Y súradnica
	\item 	{\tt mouse\_z} -- poloha koliečka
	\item 	{\tt mouse\_b} -- stav tlačítok

\end{itemize}


\foilhead{Programovanie -- text}
\begin{itemize}
	\item 	jednoduchý výpis textu
	\item 	textprinf(bmp, font, x, y, color, text);

\end{itemize}


\foilhead{Ďalšie vlastnosti}
\begin{itemize}
	\item 	prehrávanie samplov a MIDI
	\item 	ukladanie súborov do datafile
	\item 	jednoduchá 3D grafika -- polygony
	\item 	jednoduché GUI a vytvíranie dialógov

\end{itemize}


\foilhead{Knižnice na Allegrom}
\begin{itemize}
	\item 	Allegro má pomerne veľa funkcii
	\item 	Allegttf -- práca s True Type fontami
	\item 	AllegGL -- práca GL grafikou
	\item 	DUMB -- práca sa audiom (Vorbis/Ogg)

\end{itemize}


\foilhead{Zdroje}
\begin{itemize}
	\item 	http://alleg.sourceforge.net
	\item 	http://allegro.cc

\end{itemize}


\foilhead{Kompilácia}
\begin{itemize}
	\item 	DOS: g++ foo.cc -o foo -lalleg
	\item 	Linux, Unix, BeOS, QNX, MacOS, Windows:
	\item 	g++ foo.cc -o foo `allegro-config --libs`

\end{itemize}


\foilhead{SDL}
\begin{center}
	\includegraphics*{img/sdl.jpg}
\end{center}




\foilhead{SDL}
\begin{itemize}
	\item 	Simple Direct Media Layer
	\item 	knižnica vznikla na Linuxe
	\item 	pre veľký úspech bola prenesená na ďalšie systémy

\end{itemize}


\foilhead{SDL -- aplikácia}
\begin{itemize}
	\item 	spracovanie klávesnice, myši, joysticku
	\item 	spracovanie obrazu, zvuku
	\item 	ovládanie časovačov
	\item 	podpora udalostí a vlákien
	\item 	mplayer (Linux Movie Player)

\end{itemize}


\foilhead{SDL rozdiely}
\begin{itemize}
	\item 	kvalitne spracovaný systém udalostí
	\item 	zložitejší prístup ku grafike
	\item 	prepracovanejšie grafické funkcie
	\item 	SDL samo o sebe je low level knižnica
	\item 	používa sa nadstavbami

\end{itemize}


\foilhead{Programovanie -- základ}
\begin{itemize}
	\item 	inicializácia systému
	\item 	{\tt SDL\_init(flags)}
	\item 	ukončenie systému
	\item 	{\tt SDL\_quit()}

\end{itemize}


\foilhead{Programovanie -- grafika I.}
\begin{itemize}
	\item 	inicializácia grafického prostredia
	\item 	{\tt SDL\_SetVideoMode(width, height, video\_bpp, videoflags)}
	\item 	SDL\_SWSURFACE -- obrazové dáta v pamäti
	\item 	SDL\_HWSURFACE -- obrazové dáta vo video pamäti

\end{itemize}


\foilhead{Programovanie -- grafika II.}
\begin{itemize}
	\item 	{\tt SDL\_Surface} -- všeobecná štruktúra na uloženie obrazu
	\item 	vytvorenie obrazovej pamäte
	\item 	{\tt surface = SDL\_CreateRGBSurface(SDL\_SWSURFACE, width, height, 32, rmask, gmask, bmask, amask);}

\end{itemize}


\foilhead{Programovanie -- grafika III.}
\begin{itemize}
	\item 	vymazanie obrazovej pamäte
	\item 	{\tt SDL\_FillRect(screen, NULL, color)}

\end{itemize}


\foilhead{Programovanie -- grafika IV.}
\begin{itemize}
	\item 	načítanie obrazu zo súboru
	\item 	{\tt SDL\_Surface *SDL\_LoadBMP(const char *file)}
	\item 	kopírovanie z jednej pamäte do druhej
	\item 	{\tt SDL\_BlitSurface(src, srcrect, dst, dstrect);}

\end{itemize}


\foilhead{Programovanie -- grafika V.}
\begin{itemize}
	\item 	uvolnenie obrazovej pamäte
	\item 	{\tt SDL\_FreeSurface(SDL\_Surface *surface);}

\end{itemize}


\foilhead{Programovanie -- klávesnica}
\begin{itemize}
	\item 	stlačenie klávesy vyvolá udalosť
	\item 	na zistenie stlačenej klávesy je je nutné odchytiť udalosť
	\item 	{\tt SDL\_PollEvent(SDL\_Event *event)}
	\item 	test na stlačenie konkrétne klávesy
	\item 	{\tt event.key.keysym.sym}

\end{itemize}


\foilhead{Programovenie -- časovač}
\begin{itemize}
	\item 	časovač implementovaný ako počítadlo
	\item 	{\tt static int counter;}
	\item 	inštalácia funkcie volenej v pravidelných intervaloch
	\item 	{\tt SDL\_SetTimer(interval, tick);}

\end{itemize}


\foilhead{Programovanie -- myš}
\begin{itemize}
	\item 	zistenie stavu myši
	\item 	{\tt SDL\_GetMouseState(*x, *y);}

\end{itemize}


\foilhead{Programovanie -- text}
\begin{itemize}
	\item 	jednoduchý výpis textu nie je implementovaný

\end{itemize}


\foilhead{Ďalšie vlastnosti}
\begin{itemize}
	\item 	priama podpora GL knižníc
	\item 	má v sebe zabudovaný mechanizmus pre vlákna

\end{itemize}


\foilhead{Knižnice nad SDL}
\begin{itemize}
	\item 	SDL je samo o sebe pomerne ťažko použiteľné
	\item 	SDL\_mixer -- multikanálový mixér
	\item 	SDL\_image -- spracovanie obrazových formátov
	\item 	SDL\_net -- práca so sieťou

\end{itemize}


\foilhead{Zdroje}
\begin{itemize}
	\item 	http://www.libsdl.org
	\item 	http://www.lgames.org

\end{itemize}


\foilhead{Kompilácia}
\begin{itemize}
	\item 	{\tt g++ foo.cc -o foo `sdl-config --libs`}
	\item 	{\tt g++ foo.cc -o foo -lSDL}

\end{itemize}


\foilhead{ClanLib game SDK}
\begin{center}
	\includegraphics*{img/clanlib.jpg}
\end{center}




\foilhead{ClanLib game SDK}
\begin{itemize}
	\item 	ClanLib game Simple Development Kit
	\item 	kompletne naprogramované v C++
	\item 	vytvorené ako komplexné API

\end{itemize}


\foilhead{ClanLib -- aplikácie}
\begin{itemize}
	\item 	spracovanie 2D a 3D grafiky
	\item 	spracovanie zvuku, I/O
	\item 	spracovanie fontov (ttf)
	\item 	obsahuje nadstabu pre tvorbu GUI

\end{itemize}


\foilhead{ClanLib -- popis I.}
\begin{itemize}
	\item 	knižnica je kompletne objektová
	\item 	všetky operácie sú enkapsulované
	\item 	akákoľvek funkcia je volaná cez objektové metódy
	\item 	všetky funkcie knižnice sú teda pod kontrolou

\end{itemize}


\foilhead{ClanLib -- popis II.}
\begin{itemize}
	\item 	rozdelená na niekoľko komunikujúcich objektov
	\item 	CL\_SetupCore -- jadro knižnice
	\item 	CL\_SetupDisplay -- obsluha obrazu
	\item 	CL\_SetupSound -- obsluha zvuku
	\item 	CL\_Socket -- spracovanie siete

\end{itemize}


\foilhead{Programovanie -- základ}
\begin{itemize}
	\item 	inicializácia systému
	\item 	{\tt CL\_SetupCore::init()}
	\item 	ukončenie systému
	\item 	{\tt CL\_SetupCore::deinit();}

\end{itemize}


\foilhead{Programovanie -- grafika I.}
\begin{itemize}
	\item 	využíva niekoľko tried
	\item 	CL\_Display -- základné grafické operácie
	\item 	CL\_Surface -- zobrazovanie textúr
	\item 	CL\_Canvas -- vykresľovancie funkcie

\end{itemize}


\foilhead{Programovanie -- grafika II.}
\begin{itemize}
	\item 	inicializácia grafického prostredia
	\item 	CL\_Display::set\_videomode(width, height, depth)
	\item 	vytvorenie plátna
	\item 	CL\_Canvas canvas(width, height);

\end{itemize}


\foilhead{Programovanie -- GUI I.}
\begin{itemize}
	\item 	CL\_Component -- základná jednotka pre stavbu GUI
	\item 	CL\_ComponentStyle -- aplikácia tém
	\item 	CL\_ComponentManager -- správa komponentov GUI
	\item 	CL\_GUIManager -- spracovanie GUI na najvyššej úrovni

\end{itemize}


\foilhead{Prgramovanie -- GUI II.}
\begin{itemize}
	\item 	GUI definition files (.gui)
	\item 	definíciu GUI je možné oddeliť od kódu
	\item 	za behu programu je možné nahrávať GUI popisy
	\item 	popis má štruktúru kódu v jazyku C

\end{itemize}


\foilhead{Programovanie -- GL}
\begin{itemize}
	\item 	CL\_Textures -- základná správa textúr
	\item 	CL\_SetupGL -- nastavenie GL vlastnistí
	\item 	CL\_OpenGL -- efekty OpenGL

\end{itemize}


\foilhead{Ďalšie vlastnosti}
\begin{itemize}
	\item 	prehrávanie samplov a MIDI
	\item 	podpora pre JavaScript
	\item 	implementovaný MikMod -- prehrávanie music modules
	\item 	podpora prehrávania OggVorbis
	\item 	priama podpora sieťovania, správa signálov

\end{itemize}


\foilhead{Zdroje}
\begin{itemize}
	\item 	http://www.clanlib.org

\end{itemize}


\foilhead{Kompilácia}
\begin{itemize}
	\item 	g++ foo.cc -o foo -LclanApp

\end{itemize}


\foilhead{http://games.linux.sk}
\begin{center}
	\includegraphics*{img/games.jpg}
\end{center}




\foilhead{GUI}
\begin{itemize}
	\item 	Graphic User Interface
	\item 	okná, tlačítka, zoznamy, menu
	\item 	jednduchá definícia rozhrania
	\item 	editor grafického rozhrania

\end{itemize}


\foilhead{Knižnice a prostredia}
\begin{itemize}
	\item 	QT
	\item 	FLTK
	\item 	GTK

\end{itemize}


\foilhead{QT}
\begin{center}
	\includegraphics*{img/qt.jpg}
\end{center}




\foilhead{QT}
\begin{itemize}
	\item 	produkt firmy Trolltech
	\item 	bezplatné použitie pre Open Source software
	\item 	knižnica vznikla v roku 1996
	\item 	je postavená na C++

\end{itemize}


\foilhead{QT -- platformy}
\begin{itemize}
	\item 	MS/Windows - 95, 98, NT 4.0, ME, 2000, XP
	\item 	Unix/X11 - Linux, Sun Solaris, HP-UX, Compaq Tru64 UNIX, IBM AIX, SGI
	\item 	IRIX and a wide range of others
	\item 	Macintosh - Mac OS X
	\item 	Embedded - Linux platforms with framebuffer support. 

\end{itemize}


\foilhead{QT -- moduly I.}
\begin{itemize}
	\item 	Network Module, 
	\item 	OpenGL Module
	\item 	SQL Module
	\item 	Workspace (MDI) Module, XML Module

\end{itemize}


\foilhead{QT -- Canvas Module}
\begin{center}
	\includegraphics*{img/qt-canvas.jpg}
\end{center}




\foilhead{QT -- IconView Module}
\begin{center}
	\includegraphics*{img/qt-icon.jpg}
\end{center}




\foilhead{QT -- Table Module}
\begin{center}
	\includegraphics*{img/qt-table.jpg}
\end{center}




\foilhead{QT -- Designer}
\begin{itemize}
	\item 	nástroj na tvorbu GUI
	\item 	rozvrhnutú plochu ukladá do XML súboru
	\item 	z XML definície sa generuje kód programu

\end{itemize}


\foilhead{QT -- kompilácia}
\begin{itemize}
	\item 	uloženie projektu
	\item 	{\tt qmake -o Makefile test.pro}
	\item 	{\tt make}

\end{itemize}


\foilhead{QT -- Linguist}
\begin{itemize}
	\item 	nástroj na preklad aplikácii
	\item 	umožňuje oddeliť kód od textov
	\item 	prekladateľ a programátor pracujú samostatne

\end{itemize}


\foilhead{QT -- Assistant}
\begin{itemize}
	\item 	prepracovaný systém nápovedy
	\item 	ukážky kódu k funkciam
	\item 	stručné a jasné návody

\end{itemize}


\foilhead{QT -- zdroj}
\begin{itemize}
	\item 	http://www.troltech.com

\end{itemize}


\foilhead{KDE}
\begin{center}
	\includegraphics*{img/kde.jpg}
\end{center}




\foilhead{Opie}
\begin{center}
	\includegraphics*{img/opie.jpg}
\end{center}




\foilhead{FLTK}
\begin{itemize}
	\item 	Autor: Bill Spitzak
	\item 	venoval sa vývoju rozhraní pre Sun Microsystems
	\item 	veľa myšlienok zjednodušil a vložil do kitu
	\item 	o projekt sa momentálne stará vývojový tím FLTK

\end{itemize}


\foilhead{FLTK -- platformy}
\begin{itemize}
	\item 	Unix, Linux
	\item 	Microsoft Windows
	\item 	MacOS
	\item 	s podporou OpenGL a GLUT

\end{itemize}


\foilhead{FLTK -- vlastnosti}
\begin{itemize}
	\item 	kompletný objektový návrh
	\item 	optimalizované na statické kompilácie
	\item 	nízkoúrovňová kompaktibilita -- 10\% odlišnosti
	\item 	Emacsové skratky pre ikony

\end{itemize}


\foilhead{FLTK -- spracovanie udalostí}
\begin{itemize}
	\item 	pohyb myšou
	\item 	zmena stavu tlačítka
	\item 	zachytávanie klávesnice

\end{itemize}


\foilhead{FLUID}
\begin{itemize}
	\item 	Fast Light User-Interface Designer
	\item 	jednoduchý designer na tvorbu GUI

\end{itemize}


\foilhead{FLTK -- zdroj}
\begin{itemize}
	\item 	http://www.fltk.org

\end{itemize}


\foilhead{GTK}
\begin{center}
	\includegraphics*{img/gtk.jpg}
\end{center}




\foilhead{GTK}
\begin{itemize}
	\item 	GIMP ToolKit
	\item 	najbežnejši používaná knižnica pre GUI
	\item 	povodne vznikla ako súčasť GIMPu
	\item 	je na nej postavené obrovské množstvo projektov

\end{itemize}


\foilhead{GTK II.}
\begin{itemize}
	\item 	Peter Mattis, Spencer Kimball, Josh MacDonald
	\item 	GNU Network Object Model Environment (GNOME)
	\item 	C++, Guile, Perl, Python, TOM, Ada95, 
	\item 	Objective C, Free Pascal, Eiffel
	\item 	komplexne riešená knižnica

\end{itemize}


\foilhead{GTK -- zdroj}
\begin{itemize}
	\item 	http://www.gtk.org

\end{itemize}


\foilhead{Mesa}
\begin{center}
	\includegraphics*{img/mesa.jpg}
\end{center}




\foilhead{Mesa}
\begin{itemize}
	\item 	open source implementácia OpenGL
	\item 	vysokoúrovňová knižnica
	\item 	grafické programy
	\item 	grafické servre a clustery

\end{itemize}


\foilhead{Mesa}
\begin{itemize}
	\item 	http://mesa3d.sourceforge.net

\end{itemize}


\foilhead{Platformova nezávislosť}
\begin{itemize}
	\item 	kompilátory z Free softvare foundation
	\item 	DJGGP od Delorie (http://www.delorie.com)
	\item 	(RHIDE -- IDE pre DJGPP)
	\item 	CygWin (http://www.cygwin.com)

\end{itemize}


\foilhead{Pár rád do života}
\begin{itemize}
	\item 	používajte objekty
	\item 	vytvárajte jednoduchý kód
	\item 	rozdeľujte bloky kódu do funkcii
	\item 	na formátovanie neprehľadného kódu použite indent

\end{itemize}


\foilhead{Projekt}
\begin{itemize}
	\item 	SourceForge -- http://sourceforge.net
	\item 	FreshMeat -- http://freshmeat.net
	\item 	otvoriť program svetu - Open Source
	\item 	niekto može vo vašej práci pokračovať
	\item 	doležitá je kritika verejnosti

\end{itemize}


\foilhead{C\#}
\begin{itemize}
	\item 	.NET od M\$
	\item 	DotGNU a Portable.NET
	\item 	http://www.dotgnu.org

\end{itemize}


\foilhead{Ďakujem za pozornosť}
\begin{center}
	\includegraphics*{img/code.jpg}
\end{center}

\begin{itemize}
	\item 	Juraj Michálek
	\item 	http://kota543.host.sk
	\item 	e-mail: georgik@host.sk

\end{itemize}
\end{document}

