summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormanuel <manuel@nc8430.lan>2009-05-03 19:14:28 +0200
committermanuel <manuel@nc8430.lan>2009-05-03 19:14:28 +0200
commitc92cf1a6417948e2e614c2bbfe5c8758ed93539b (patch)
tree9b9240e033a18f7f36ee7f1465cbfea16aed7187
parent280a25c018794971422c2a883f84741c0fde837f (diff)
downloadooprog-c92cf1a6417948e2e614c2bbfe5c8758ed93539b.tar.gz
ooprog-c92cf1a6417948e2e614c2bbfe5c8758ed93539b.tar.bz2
ooprog-c92cf1a6417948e2e614c2bbfe5c8758ed93539b.zip
finalizing protokoll
-rw-r--r--ue2/protokoll.pdfbin0 -> 470271 bytes
-rw-r--r--ue2/protokoll/protokoll.tex60
2 files changed, 30 insertions, 30 deletions
diff --git a/ue2/protokoll.pdf b/ue2/protokoll.pdf
new file mode 100644
index 0000000..6a01a69
--- /dev/null
+++ b/ue2/protokoll.pdf
Binary files differ
diff --git a/ue2/protokoll/protokoll.tex b/ue2/protokoll/protokoll.tex
index f97fb2b..835e886 100644
--- a/ue2/protokoll/protokoll.tex
+++ b/ue2/protokoll/protokoll.tex
@@ -40,31 +40,31 @@ Manuel Mausz, \matrnr 0728348\\
40Abbildung~\ref{fig:classdiagram1} zeigt das Klassendiagramm der Aufgabe. 40Abbildung~\ref{fig:classdiagram1} zeigt das Klassendiagramm der Aufgabe.
41 41
42\parskip 30pt 42\parskip 30pt
43Refaktorisirung: 43Refaktorisierung:
44 44
45\parskip 12pt 45\parskip 12pt
46Notwendigerweise und wie verlangt wurde die Klasse \mbox{CBitmap} zu einer abstrakten Interfaceklasse umgewandelt. 46Notwendigerweise und wie verlangt wurde die Klasse \mbox{CBitmap} zu einer abstrakten Interfaceklasse umgewandelt.
47Diese stellt nun die Oberklasse der zu unterstützenden Dateiformate dar und enthält verschieden virtuelle Methoden, die 47Diese stellt nun die Oberklasse der zu unterstützenden Dateiformate dar und enthält verschieden virtuelle Methoden, die
48von ihren Unterklassen zu implementieren sind. Dazu gehören, die schon aus Beispiel 1, bekannten Methoden \mbox{read()} und \mbox{write()}, 48von ihren Unterklassen zu implementieren sind. Dazu gehören, die schon aus Beispiel 1 bekannten Methoden \mbox{read()} und \mbox{write()},
49welche das Einlesen und Schreiben der Bilddaten realisieren. Hinzugekommen sind nun verschiedene ``getter'' Methoden, 49welche das Einlesen und Schreiben der Bilddaten realisieren. Hinzugekommen sind nun verschiedene ``getter''-Methoden,
50wie zB.: \mbox{getHeight()} oder \mbox{getWidth()}, die vom direkten Zugriff auf die Bild-Informationen im jeweiligen Header-Speicher, der als 50wie z.B. \mbox{getHeight()} oder \mbox{getWidth()}, die vom direkten Zugriff auf allgemeine Bildinformationen abstrahieren.\\
51``struct'' deklariert wurde, abstrahieren.\\ 51Die gemäß Aufgabenstellungen verlangten Befehle zur Bildbearbeiten, wurden in abstrakten Interfaceklasse CBitmap als ``protected''
52Die Methoden, zur Realisierung der einzelnen in den Aufgabenstellungen verlangten Befehle, wurden als ``protected'', in der zugehörigen cbitmap.cpp Datei, 52generisch für alle Bildformate implementiert. Mit dieser Vorgehensweise war es möglich, die zu unterstützenden Dateiformate auf ihre Eigenheiten
53generisch implementiert. Mit dieser Vorgehensweise war es möglich, die zu unterstützenden Dateiformate, auf ihre Eigenheiten 53zu beschränken, diese zu realisieren und allgemeinen Code wieder zu verwenden.
54beschränkt, zu realisieren und Code wieder zu verwenden. 54Unterklassen sind CWindowsBitmap aus Aufgabenstellung 1 und für das neu hinzugekommene Format Pixmap die Klasse CPixmap. \\
55Unterklassen sind CWindowsBitmap aus Aufgabenstellung 1 und das neu hinzugekommene Format Pixmap. \\
56 55
57\parskip 12pt 56\parskip 12pt
58Die abstrakte Interfaceklasse \mbox{CPixelFormat} wurde aus Beispiel 1 übernommen und enthält genauso, neben \mbox{getPixel()} und \mbox{setPixel()}, zusätzliche 57Die abstrakte Interfaceklasse \mbox{CPixelFormat} wurde aus Beispiel 1 übernommen und enthält nun neben \mbox{getPixel()} und \mbox{setPixel()} zusätzliche
59virtuelle Methoden, die von den Unterklassen zu implementieren sind und Informationen zu den, von ihnen zu verarbeitenden Pixelcodierung, bereitstellen. 58virtuelle Methoden, die von den Unterklassen zu implementieren sind und Informationen zu den von ihnen zu verarbeitenden Pixelcodierung bereitstellen.
60Weiters wurde eine Datenstruktur als Type, namens \mbox{RGBPIXEL}, eingeführt, welche zur Übergabe der Farbwerte, der einzelnen Pixel, dient. 59Weiters wurde die Datenstruktur \mbox{RGBPIXEL} eingeführt, welche zur Übergabe der Farbwerte der einzelnen Pixel dient.
61Unterklassen sind \mbox{CPixelformat\_brg24} aus Aufgabenstellung 1, sowie die neuen Formate \mbox{CPixelformat\_brg555} und \mbox{CPixelformat\_Indexed8}. \\ 60Unterklassen sind \mbox{CPixelformat\_BRG24} aus Beispiel 1 sowie die neuen Formate \mbox{CPixelformat\_BRG55} und \mbox{CPixelformat\_Indexed8}. \\
62 61
63\parskip 30pt 62\parskip 30pt
64Asserts: 63Asserts:
65 64
66\parskip 12pt 65\parskip 12pt
67Beim einlesen und bearbeiten von Bilddaten wurden Zusicherungen deklariert, welche die Größe und Existenz der Bilddaten validieren. 66Beim Einlesen und Bearbeiten von Bilddaten wurden Zusicherungen deklariert, welche die Größe und Existenz der Bilddaten sicherstellen.
67
68\newpage 68\newpage
69%================================================================== 69%==================================================================
70\begin{figure}[htb] 70\begin{figure}[htb]
@@ -80,29 +80,29 @@ Beim einlesen und bearbeiten von Bilddaten wurden Zusicherungen deklariert, welc
80\subsection{Verwaltung der Ressourcen} 80\subsection{Verwaltung der Ressourcen}
81 81
82Die Vorgehensweise bei der Ressourcenverwaltung wurde größtenteils von Aufgabe 1 übernommen. 82Die Vorgehensweise bei der Ressourcenverwaltung wurde größtenteils von Aufgabe 1 übernommen.
83Neu dazugekommen sind Funktionalitäten zur Verwaltung von Farbtabellen. 83Neu hinzugekommen sind Funktionalitäten zur Verwaltung von Farbtabellen.
84Dabei wurde ebenfalls ein generisches Konzept entwickelt, welches Unterschiede in der Farb-Indizierung ausgleichen soll. 84Dabei wurde ebenfalls ein generisches Konzept gewählt, welches Unterschiede in der Farbindizierung ausgleichen soll.
85Erwähnt sei, dass in der Implementierung der Klasse CPixmap vorerst nur Farbwerte in hexadezimaler Form, sowie der Pixmap eigene Darstellungs-Modus ``c'' unterstützt werden. 85Erwähnt sei, dass in der Implementierung der Klasse CPixmap vorerst nur Farbwerte in hexadezimaler Form sowie der Pixmap eigene Darstellungsmodus ``c'' unterstützt werden.
86Beim Einlesen der Pixeldaten, welche die Indizes der zugeordneten Farbwert darstellen, werden diese mit internen, allgemeineren Indizes, 86Beim Einlesen der Pixeldaten, welche die Indizes der zugeordneten Farbwert darstellen, werden diese mit internen, allgemeineren Indizes
87der Form 0,1,2 .. n ausgetauscht. Die Farbtabelle wird in einer ``map'', welche im abstrakten Interface CBitmap deklariert ist und die internen 87der Form 0,1,2 .. n ausgetauscht. Die Farbtabelle wird in einer ``\mbox{std::map}'', welche im abstrakten Interface CBitmap deklariert ist und die internen
88Indizes als Schlüssel erwartet, abgelegt. 88Indizes als Schlüssel erwartet, abgelegt.
89Farbwerte werden dabei in der, in Abschnitt 2.1 erwähnten Datenstrucktur \mbox{RGBPIXEL} organisiert, für die dynamisch Speicher alloziert wird. 89Farbwerte werden dabei in der in Abschnitt 2.1 erwähnten Datenstruktur \mbox{RGBPIXEL}, für die dynamisch Speicher alloziert werden muss, organisiert.
90Die Freigabe dieser Ressourcen erfolgt wieder im Destruktor von \mbox{CBitmap}. \\ 90Die Freigabe dieser Ressourcen erfolgt wieder im Destruktor von \mbox{CBitmap}.\\
91 91
92 92
93\subsection{Fehlerbehandlung} 93\subsection{Fehlerbehandlung}
94 94
95Die Fehlerbehandlung erfolgt nach wie vor über \mbox{CPixelFormat::PixelFormatError}, \mbox{CFile::FileError}, \mbox{CScriptParser::ParserError} 95Die Fehlerbehandlung erfolgt nach wie vor über die Übersetzung der Exceptions \mbox{CPixelFormat::PixelFormatError}, \mbox{CFile::FileError}, \mbox{CScriptParser::ParserError}
96und dem ``try-catch'' Block im Hauptprogramm. Die Header und Pixeldaten werden beim einlesn, gemäß der Spezifikation, auf Korrektheit überprüft. 96und dem ``try-catch'' Block im Hauptprogramm. Die Header und Pixeldaten werden beim Einlesen rudimentär, aber gemäß der Spezifikation, auf Korrektheit überprüft.
97Im Fehlerfall wird eine Exeception geworfen, eine Fehlerbeschreibung über stderr ausgegeben und das Programm beendet. 97Im Fehlerfall wird eine Exception geworfen, eine Fehlerbeschreibung über stderr ausgegeben und das Programm beendet.
98 98
99\subsection{Implementierung} 99\subsection{Implementierung}
100 100
101Im Folgenden werden einige Implementierungauszüge, der geforderten Funktionen, gezeigt. 101Im Folgenden werden einige Implementierungauszüge der geforderten Funktionen gezeigt.
102Siehe auch Punkt~\ref{Design} und Abbildung~\ref{fig:classdiagram1} sowie 102Siehe auch Punkt~\ref{Design} und Abbildung~\ref{fig:classdiagram1} sowie
103Punkt~\ref{Listings}. 103Punkt~\ref{Listings}.
104 104
105Im Falle eines Bildes mit Farbtabelle ist es nur notwendig, die Farbwerte in der Tabelle zu ändern. 105Im Falle eines Bildes mit Farbtabelle ist es nur notwendig die Farbwerte in der Tabelle zu ändern.
106 106
107Die Farbtabelle ist in folgender Form in der abstrakten Interfaceklasse \mbox{CBitmap} deklariert. 107Die Farbtabelle ist in folgender Form in der abstrakten Interfaceklasse \mbox{CBitmap} deklariert.
108%================================================================== 108%==================================================================
@@ -113,7 +113,7 @@ Die Farbtabelle ist in folgender Form in der abstrakten Interfaceklasse \mbox{CB
113 113
114 114
115\newpage 115\newpage
116Beim schreiben der \mbox{CPixmap} Bilddaten werden die Pixel und Indizes der Farbtabelle wieder in Characters zurückkonveriert. 116Beim Schreiben der Bilddaten für das Format Pixmap werden die Pixel und Indizes der Farbtabelle wieder in korrekte Identifier zurückkonvertiert.
117%================================================================== 117%==================================================================
118\begin{lstlisting}{} 118\begin{lstlisting}{}
119 #define PIXMAP_COLORCHARS ".#abcdefghijklmnopqrstuvwxyzABCD" \ 119 #define PIXMAP_COLORCHARS ".#abcdefghijklmnopqrstuvwxyzABCD" \
@@ -130,7 +130,7 @@ Beispiel für die Invertierung eines Farbwertes in einer Rastergrafik.
130%==== 130%====
131 131
132brightness(params): 132brightness(params):
133Beispiel für die veränderung der Helligkeit eines Bildpunktes. 133Beispiel für die Veränderung der Helligkeit eines Bildpunktes.
134%================================================================== 134%==================================================================
135\begin{lstlisting}{} 135\begin{lstlisting}{}
136 pixel.red = min(max.red, static_cast<uint32_t>(pixel.red * factor)); 136 pixel.red = min(max.red, static_cast<uint32_t>(pixel.red * factor));
@@ -141,8 +141,8 @@ Beispiel für die veränderung der Helligkeit eines Bildpunktes.
141 141
142\subsection{Probleme und Fallstricke} 142\subsection{Probleme und Fallstricke}
143 143
144Die Schwierigkeit bestand darin, einen Weg zu finden Bildformate mit Farbtabellen gleichermaßen zu behandeln, wie jene, die die Farbwerte direkt im Bildspeicher halten. 144Die Schwierigkeit bestand darin, einen Weg zu finden, Bildformate mit Farbtabellen gleichermaßen zu behandeln, wie jene, die die Farbwerte direkt im Bildspeicher halten.
145Durch die virtuelle Methode \mbox{const bool hasColorTable()} in der abstrakten Interfaceklasse \mbox{CBitmap} ist es möglich die Abarbeitung von Operationen auf den 145Durch die virtuelle Methode \mbox{const bool hasColorTable()} in der abstrakten Interfaceklasse \mbox{CBitmap} ist es möglich die Abarbeitung von Bildoperationen auf den
146Bilddaten entsprechend zu delegieren. 146Bilddaten entsprechend zu delegieren.
147 147
148\subsection{Arbeitsaufwand} 148\subsection{Arbeitsaufwand}