Author: JirkaH Date: 2010-02-28 20:56:36 +0100 (Sun, 28 Feb 2010) New Revision: 1945 Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex others/dokumentace/technicalGuide/architecture/6clientapp.tex Log: pdf rendering diagram added Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-28 19:30:26 UTC (rev 1944) +++ others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-28 19:56:36 UTC (rev 1945) @@ -83,7 +83,7 @@ \tableofcontents \clearpage - + \include{1preface} \include{2hardware} \include{3management} Modified: others/dokumentace/technicalGuide/architecture/6clientapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-28 19:30:26 UTC (rev 1944) +++ others/dokumentace/technicalGuide/architecture/6clientapp.tex 2010-02-28 19:56:36 UTC (rev 1945) @@ -48,12 +48,24 @@ Vzhledem k tomu, že tvorba obrázku v daném rozlišení z PDF souboru je poměrně náročná operace, bylo rozhodnuto generovat jednotlivé strany dokumentů v různých vláknech, čímž se zajístí schopnost odezvy aplikace i při načítání PDF. - Načítání PDF tedy probíhá na žádost. Zobrazovací vlákno (GUI), které kešuje zobrazované stránky (pixmapy) vyvolá signál, když daná stránka v keši není. To vzbudí pracovní vlákno, které danou stránku vygeneruje a - předá zobrazovacímu vláknu, ktéra jej vloží do paměti. Cache pixmap je globální pro celou aplikaci, její správu a tedy vymazávání starých dat má na starosti framework Qt. Samotné pracovní vlákno své data také cachuje, + Načítání PDF tedy probíhá na žádost. Zobrazovací vlákno (GUI, třída PDF Viewer), které cachuje zobrazované stránky (pixmapy) vyvolá signál, když daná stránka v cachi není. To vzbudí pracovní vlákno, které danou stránku vygeneruje a + předá zobrazovacímu vláknu, ktéra jej vloží do paměti. Cache pixmap je globální pro celou aplikaci, její správu a tedy vymazávání starých dat má na starosti framework Qt. Samotné pracovní vlákno (PDF Filler) + své data také cachuje, tato cache je však omezené, menší velikosti a své data maže při přepnutí kategorií, tj. když daný dokument není zobrazen. - TODO nejake schema, jak to funguje! + Celý proces znázorňuje diagram \ref{kiosk_pdfrendering}.\\ + \begin{figure}[!h] + \label{kiosk_pdfrendering} + \begin{center} + \includegraphics[width=1.0\textwidth]{imgs/pdf_rendering.png} + \caption{UML diagram renderování PDF dokumentů} + \end{center} + \end{figure} + + Vzhledem k tomu, že je celý proces asynchronní, a že typicky přijde více \verb!paintEventů! než se stihne daná stránka načíst, je nutné kontrolovat i po načtení zda stránka v globální + pixmap je či není. Vkládání do cache si vyžaduje změnu reprezentace obrázku, což je poměrně drahá operace, a proto je výhodnější tento způsob. + \subsubsection{Zobrazení v náhledech a zvětšování} PDF dokumenty jsou ve výchozím zobrazení zobrazeny jako náhledy zvolených stran (většinou prvních, to však lze ve webové aplikaci měnit). Prostor, ve kterém je dokument zobrazen je dán pozicí, na kterou je naplánován. Dle požadavků uvedeným v \textit{Analýze} je nutné, aby byl při zobrazování vždy zachován poměr stran, tj. nedocházelo k deformaci. Po načtení první strany se tedy daná pozice vizuálně zmenší,