diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..eee3c07
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+# Build folder
+IntelliPhoto/build-IntelliPhoto-Desktop_Qt_5_12_5_MinGW_64_bit-Debug/
+
+# macOS Environment Files
+.DS_STORE
diff --git a/Abgabe/Aufgabe 1/Req0001/Req_0001A.txt b/Abgabe/Aufgabe 1/Req0001/Req_0001A.txt
deleted file mode 100644
index ce4e8a4..0000000
--- a/Abgabe/Aufgabe 1/Req0001/Req_0001A.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-Req-ID:
- 0001A
-Req-Type:
- Nicht-Funktional
-Events/UCs:
- -Speicherung eines Bildes
- -Pixel wird mit einem Byte dargestellt
- -Overhead für Metainformationen erlaubt
- -Keine seperate abhandlung von "RasterImage" und "ShapedImage"
-Description:
- -Ein Bild wird mit maximal einem Byte pro Pixel kodiert
- -Repräsentation im folgenden:
- 0b0000'0000, wobei die 0 nach dem Prefix 0b als Bit 7 Indiziert ist, und jedes rechtere Bit
- davon um eins Dekrementiert Indiziert wird
- -Minimale RGB-A Darstellung des Bildes mittel einem Byte
- -Codierungsmöglichkeit nach folgendem Schema:
- -Bit 7,6 werden Benutz um den Alpha-Kanal zu codieren:
- -0b00 -> Bit ist 100% Transparent (Transparent)
- -0b01 -> Bit ist 66% Transparent
- -0b10 -> Bit ist 33% Transparent
- -0b11 -> Bit ist 0% Transparent
- -Bit 5,4 werden Benutz um den Rot-Kanal zu codieren:
- -0b00 -> Bit ist 0% Rot (Schwarz)
- -0b01 -> Bit ist 33% Rot
- -0b10 -> Bit ist 66% Rot
- -0b11 -> Bit ist 100% Rot (Rot)
- -Bit 3,2 werden Benutz um den Grün-Kanal zu codieren:
- -0b00 -> Bit ist 0% Grün (Schwarz)
- -0b01 -> Bit ist 33% Grün
- -0b10 -> Bit ist 66% Grün
- -0b11 -> Bit ist 100% Grün (Grün)
- -Bit 1,0 werden Benutz um den Blau-Kanal zu codieren:
- -0b00 -> Bit ist 0% Blau (Schwarz)
- -0b01 -> Bit ist 33% Blau
- -0b10 -> Bit ist 66% Blau
- -0b11 -> Bit ist 100% Blau (Blau)
- Definitionen der benutzen Farben nach RGB-A Modell:
- Schwarz (0b0000'0000, 0b0000'0000, 0b0000'0000, 0b1111'1111)
- Rot (0b1111'1111, 0b0000'0000, 0b0000'0000, 0b1111'1111)
- Grün (0b0000'0000, 0b1111'1111, 0b0000'0000, 0b1111'1111)
- Blau (0b0000'0000, 0b0000'0000, 0b1111'1111, 0b1111'1111)
- Transparent (0b0000'0000, 0b0000'0000, 0b0000'0000, 0b0000'0000)
- -verschiedene Transparenzstufen, bis auf 0b11, werden als einzelne Farbstufen gezählt: 2^(8)-1 verschiede Farbstufen
-Originator:
- Jonas Mucke
-Fit Criterion:
- -Darstellung von mindestens 250 paarweise verschiedenen Farbstufen
- -Darstellung einen transparenten Bits (Alpha Kanal = 0b0000'0000)
- -Verarbeitungsmöglichkeit für 2^10 Pixel in unter 0.1 Sekunde beim Einlesen und Speichern
-Priority:
- 100
-Support Material:
- Ubungsblat_01.pdf
-Conflicts:
- Noch keine Einigung auf Farbkodierung (0001A-0001C)-> Rücksprache mit dem Kunden
- (Ein Byte deckt einen sehr kleinen Farbbereich ab und ist nicht sehr elegant -> Rücksprache mit dem Kunden ob 4 Byte akzeptabel wären)
-History:
- -Erstellt am 30.10.2019 um 21:59, von Jonas Mucke
diff --git a/Abgabe/Aufgabe 1/Req0001/Req_0001B.txt b/Abgabe/Aufgabe 1/Req0001/Req_0001B.txt
deleted file mode 100644
index 906b810..0000000
--- a/Abgabe/Aufgabe 1/Req0001/Req_0001B.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Req-ID:
- 0001B
-Req-Type:
- Nicht-Funktional
-Events/UCs:
- -Speicherung eines Bildes
- -Pixel wird mit einem Byte dargestellt
- -Overhead für Metainformationen erlaubt
- -Keine seperate abhandlung von "RasterImage" und "ShapedImage"
-Description:
- -Ein Bild wird mit maximal einem Byte pro Pixel kodiert
- -Repräsentation im folgenden:
- 0b0000'0000, wobei die 0 nach dem Prefix 0b als Bit 7 Indiziert ist, und jedes rechtere Bit
- davon um eins Dekrementiert Indiziert wird
- -Codierungsmöglichkeit nach folgendem Schema:
- -0b0000'0000, wird als Transparents-Codierung definiert
- -Alle weiteren Binären Codierung werden per Hand, in Abstimmung mit dem Kunden und dem Team,
- einer Farbe zugeordnet -> 2^(8)-1 mögliche Farben + Transparenz
- Definitionen der benutzen Farben nach RGB-A Modell:
- Transparent (0b0000'0000, 0b0000'0000, 0b0000'0000, 0b0000'0000)
-Originator:
- Jonas Mucke
-Fit Criterion:
- -Darstellung von mindestens 250 paarweise verschiedenen Farbstufen
- -Darstellung einen transparenten Bits (Alpha Kanal = 1)
- -Verarbeitungsmöglichkeit für 2^10 Pixel in unter 0.1 Sekunde beim Einlesen und Speichern
-Priority:
- 100
-Support Material:
- Ubungsblat_01.pdf
-Conflicts:
- Noch keine Einigung auf Farbkodierung (0001A-0001C)-> Rücksprache mit dem Kunden
- (Ein Byte deckt einen sehr kleinen Farbbereich ab und ist nicht sehr elegant -> Rücksprache mit dem Kunden ob 4 Byte akzeptabel wären)
-History:
- -Erstellt am 30.10.2019 um 21:58, von Jonas Mucke
diff --git a/Abgabe/Aufgabe 1/Req0001/Req_0001C.txt b/Abgabe/Aufgabe 1/Req0001/Req_0001C.txt
deleted file mode 100644
index b847c41..0000000
--- a/Abgabe/Aufgabe 1/Req0001/Req_0001C.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-Req-ID:
- 0001C
-Req-Type:
- Nicht-Funktional
-Events/UCs:
- -Speicherung eines Bildes
- -Pixel wird mit einem Byte dargestellt
- -Overhead für Metainformationen erlaubt
- -Keine seperate abhandlung von "RasterImage" und "ShapedImage"
-Description:
- -Ein Bild wird mit maximal einem Byte pro Pixel kodiert
- -Repräsentation im folgenden:
- 0b0000'0000, wobei die 0 nach dem Prefix 0b als Bit 7 Indiziert ist, und jedes rechtere Bit
- davon um eins Dekrementiert Indiziert wird
- -Die Bits 7,6 werden benutzt um einen Farbchannel zu setzen. Bei einem Farbchannel handelt es sich um einen
- Schalter, welcher zwischen den Channeln "Rot", "Grün", "Blau", "Grau/Alpha" Handelt.
- Wenn ein Channel gesetzt ist, für ein Pixel, so wird dieses Pixel nur mittels einer Farbstufe dieses Channels
- Dargestellt.
- -Codierungsmöglichkeit nach folgendem Schema:
- -0b00XX'XXXX entspricht dem "Grau/Alpha" Channel
- 0b0000'0000 entspricht dem Transparenzwert 100% (Transparent)
- 0b0000'0001 enstpricht den Farbwert Schwarz (Schwarz)
- 0b0011'1111 enstpricht dem Farbwert Weiß (Weiß)
- Dazwischen exestiert eine uniform partitionierte Farbkurve
- -0b01XX'XXXX entspricht dem "Rot" Channel:
- 0b0111'1111 entspricht dem intensivstem Rot(Rot)
- 0b0100'0000 enstpricht dem blasesten Rot(Schwarz-Rot)
- Dazwischen exestiert eine uniform partitionierte Farbkurve
- -0b10XX'XXXX entspricht dem "Grün" Channel:
- 0b1011'1111 entspricht dem intensivstem Grün (Grün)
- 0b1000'0000 enstpricht dem blasesten Grün(Schwarz-Grün)
- Dazwischen exestiert eine uniform partitionierte Farbkurve
- -0b11XX'XXXX entspricht dem "Blau" Channel:
- 0b1111'1111 entspricht dem intensivstem Blau (Blau)
- 0b1100'0000 enstpricht dem blasesten Blau(Schwarz-Blau)
- Dazwischen exestiert eine uniform partitionierte Farbkurve
- Definitionen der benutzen Farben nach RGB-A Modell:
- Weiß (0b1111'1111, 0b1111'1111, 0b1111'1111, 0b1111'1111)
- Schwarz (0b0000'0000, 0b0000'0000, 0b0000'0000, 0b1111'1111)
- Rot (0b1111'1111, 0b0000'0000, 0b0000'0000, 0b1111'1111)
- Grün (0b0000'0000, 0b1111'1111, 0b0000'0000, 0b1111'1111)
- Blau (0b0000'0000, 0b0000'0000, 0b1111'1111, 0b1111'1111)
- (Schwarz-Rot) (0b0000'0001, 0b0000'0000, 0b0000'0000, 0b1111'1111)
- (Schwarz-Grün) (0b0000'0000, 0b0000'0001, 0b0000'0000, 0b1111'1111)
- (Schwarz-Blau) (0b0000'0000, 0b0000'0000, 0b0000'0001, 0b1111'1111)
- Transparent (0b0000'0000, 0b0000'0000, 0b0000'0000, 0b0000'0000)
- -Nach diesem Prinzip können nur die Grundfarben der Additiven Farbdarstellung projeziert werden,
- dies hat ein sehr bunt beschränktes Farbshema zur folgendem
- -Es können insgesamt [3*2^(6)]+[2^(6)-1] = 2^(8)-1 Farbstufen dargestellt werden + Transparenz
-Originator:
- Jonas Mucke
-Fit Criterion:
- -Darstellung von mindestens 250 paarweise verschiedenen Farbstufen
- -Darstellung einen transparenten Bits (Alpha Kanal = 1)
- -Verarbeitungsmöglichkeit für 2^10 Pixel in unter 0.1 Sekunde beim Einlesen und Speichern
-Priority:
- 100
-Support Material:
- Ubungsblat_01.pdf
-Conflicts:
- Noch keine Einigung auf Farbkodierung (0001A-0001C)-> Rücksprache mit dem Kunden
- (Ein Byte deckt einen sehr kleinen Farbbereich ab und ist nicht sehr elegant -> Rücksprache mit dem Kunden ob 4 Byte akzeptabel wären)
-History:
- -Erstellt am 30.10.2019 um 22:04, von Jonas Mucke
diff --git a/Abgabe/Aufgabe 1/Req0002/Req_0002.txt b/Abgabe/Aufgabe 1/Req0002/Req_0002.txt
deleted file mode 100644
index dc98763..0000000
--- a/Abgabe/Aufgabe 1/Req0002/Req_0002.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-Req-ID:
- 0002
-Req-Type:
- Funktional
-Events/UCs:
- -Bearbeitung des Bildes mit einer Betriebssystem unterstützen Eingabemöglichkeit, zum Beispiel Maus oder Stift bzw. Ähnliche
- -Bearbeitung mittels verschiedener Zeichen-Tools
- -Freiwählbare Farbe aus dem möglichen Farbbereich
-Description:
- -Ein Farbwert, auch Transparent, welcher durch die genutzte Codierung (siehe Req_0001) darstellbar sein. Dies soll mittels Tools
- gesetzt werden können, wobei diese spezifizieren was "gesetzt" bedeutet.
- -Tools:
- Pinsel:
- -Der Pinsel ist ein Tool, welches um seinen Mittelpunkt alles in einem gewissen Pixelradius einfärbt.
- Der Pixelradius geht dabei von 1-Pixel bis zu 10-Pixel.
- Formen:
- -Linie:
- Das Tool Formen (Linie), soll es einem ermöglichen eine Linie in der gewählten Farbe zwischen 2 Punkten zu
- ziehen. Dabei wird am ersten Punkt angesetzt und zum Zielpunkt gezogen, dabei verändert sich die Linie live.
- Sobald das Eingabegerät getogglet wird, so wird die aktuelle Stelle als Endpunkt angenommen. Zwischen
- Start und Endpunkt wird die Linie gezeichnet.
- Es exestieren verschiedene Linien-Formen:
- -durchgezogene Linie (eine Linie ohne Lücken)
- -gestrichelte Linie (auf der Linie werden nur Striche in regelmäßigen Abständen gezeichnet)
- -gepunktete Linie (auf der Linie wird punktweise zwischen Farbig und Transparent alterniert)
- Die Linie kann mittels dem Breite-Attribut verändert werden (Breite zwischen 1 und 10 Pixel)
- -Rechteck:
- Das Tool Formen (Rechteck), soll es einem ermöglichen ein Rechteck in ein einer gewählten Farbe aufzuspannen.
- Dabei wird am ersten Punkt angesetzt und zum Zielpunkt gezogen. Dabei verändert sich das Rechteck live.
- Sobald das Eingabegerät getogglet wird, so wird die aktuelle Stelle als Endpunkt angenommen. Zwiscehn Start und Endpunkt
- wird das Rechteck aufgespannt.
- Das Rechteck besitzt 2 Farbattribute, den Rand und die Füllung. Der Rand ist um das Rechteck gesetzt und kann
- im Bezug auf Breite und Farbe eingesetellt werden. Die Füllung ist innerhalb der Fläche, welcher vom Rand aufgespannt wird,
- und kann im Bezug auf die Farbe eingestellt werden.
- -Konvexe Form:
- Das Tool Formen (Konvex), soll einem ermöglichen beliebige, konvexe Formen zu erstellen.
- Dabei werden Punkte gesetzt, welche durch toggeln des Eingabegeräts, an der Stelle des Cursors gesetzt werden.
- Sollte ein Punkt im Radius von 10 Pixel zum Startpunkt sein, so wird die Erstellung abgeschlossen. Danach werden Linien
- zwischen den gesetzten Punkten (in korrekter Reihenfolge) gezeichnet und der Zwischenraum gefüllt.
- Dabei besitzt die konvexe Form 2 Farbattribute, den Rand und die Füllung. Der Rand ist um die konvexe Form
- gesetzt und kann im Bezug auf Breite und Farbe eingesetellt werden. Die Füllung ist innerhalb der Fläche, welche durch den Rand
- aufgespannt wird, und kann im Bezug auf die Farbe eingestellt werden.
- FloodFill:
- -Das Floodfill Tool, bei diesem wird ein Pixel ausgewählt. Alle Pixel die mit diesem Pixel in einer Äquivalenzklasse
- im Bezug auf Farbe und Nachbarschafts-Relation stehen, werden in die gewählte Farbe eingefärbt.
- Einfarbig:
- -Das Einfarbig Tool färbt das gesamte Bild in die gewählte Farbe ein.
- Reverse:
- -Der letzte State des Bildes wird wieder hergestellt. (Speicherung von mindestens 10 alten Zuständen).
-Originator:
- Jonas Mucke
-Fit Criterion:
- -Das Setzten eines Pixels, in einer beliebigen Farbe, funktioniert in 99,9% in unter 0.01 Sekunden.
- -Der Vollständige Farbbreich ist frei wählbar.
- -Es müssen mindestens 3 Tools benutzbar sein, das bedeutet eine 99,9% richtiges Verhalten in unter 0.1 Sekunden.
- -Tools besitzen in 100% der Fälle das gewünschte Verhalten
-Priority:
- 80
-Support Material:
- Ubungsblat_01.pdf
-Conflicts:
- -keine Bekannten Konflikte(stand: 30.10.2019 22:10)
-History:
- -Erstellt am 30.10.2019 um 22:10, von Jonas Mucke
diff --git a/Abgabe/Aufgabe 2/Klassen_Verantwortlichkeiten_und_Kollaborationen.txt b/Abgabe/Aufgabe 2/Klassen_Verantwortlichkeiten_und_Kollaborationen.txt
deleted file mode 100644
index 6c77ca5..0000000
--- a/Abgabe/Aufgabe 2/Klassen_Verantwortlichkeiten_und_Kollaborationen.txt
+++ /dev/null
@@ -1,303 +0,0 @@
-Klasse: Bild (abstrakt)
- Vererbung:
- -
- Verantwortlichkeiten:
- - Speicherung der Daten in einem 2d-Array
- - Speicherung der Farbdaten jedes einzelnen Pixels
- Kollaborationen:
- - Der Anwender will ein Bild öffnen und speichern können, ohne sich darüber Gedanken machen zu müssen
-
-Klasse: Bilddimensionen
- Vererbung:
- - Bild
- Verantwortlichkeiten:
- - Wissen über die Größe des Bildes
- Kollaborationen:
- - Nutzer kann die Anzahl der Pixel in x und y Richtung abfragen
-
-Klasse: RasterImage
- Vererbung:
- - Bild
- Verantwortlichkeiten:
- - Darstellung des gezeichneten Bildes
- - Speicherung der Daten in einem 2d-Array
- - Speicherung der Farbdaten jedes einzelnen Pixels (je ein Bit pro Pixel)
- Kollaborationen:
- - Der Anwender will ein Bild öffnen, bearbeiten und speichern können, ohne sich darüber Gedanken machen zu müssen
-
-Klasse: ShapedImage
- Vererbung:
- - RasterImage
- Verantwortlichkeiten:
- - Speicherung der Daten in einem 2d-Array
- - Speicherung der Farbdaten jedes einzelnen Pixels -> Transparenz
- - Speicherung der Polygondaten
- - Darstellung der Transparenz außerhalb des Polygons und des Bildes innerhalb des Polygons
- Kollaborationen:
- - Der Anwender will ein Bild öffnen, bearbeiten und speichern können, ohne sich darüber Gedanken machen zu müssen
-
-Klasse: Tool (abstrakt)
- Vererbung:
- -
- Verantwortlichkeiten:
- - Name, Beschreibung, Tooltip und Icon des Tools speichern
- - Veränderung der Pixeldaten des Bildes
- Kollaborationen:
- - Der Anwender will ein Bild bearbeiten können
-
-Klasse: Set-Color-Tool (abstrakt)
- Vererbung:
- - Tool
- Verantwortlichkeiten:
- - Verwalten der Farbcodierung und deren Darstellung
- - Bearbeiten des Bildes durch Verändern von Farbcodes an bestimmten Pixeln
- - Darstellung der Farbpallette
- Kollaborationen:
- - Der Anwender möchte das Bild farblich gezielt verändern
- - Der Anwender möchte die Farbwerte der einzelnen Pixel abfragen
-
-Klasse: Un-/Redo-Tool
- Vererbung:
- - Set-Color-Tool
- Verantwortlichkeiten:
- - 20 Operationen speichern
- - die letzten (bis zu 10) Änderungen rückgängig machen
- - die letzten (bis zu 10) Undo-Aufforderungen rückgängig machen
- - sobald gezeichnet wird, werden alle Redo-Einträge gelöscht
- Kollaborationen:
- - Der Anwender möchte eine Tool Änderung rückgängig machen
- - Der Anwender möchte eine Undo Aktivität rückgängig machen
-
-Klasse: Dreh-Tool
- Vererbung:
- - Tool
- Verantwortlichkeiten:
- - Rotation des angezeigten Bildes
- - Ändern der Farbwerte, so dass sie mit dem rotierten Bild übereinstimmen
- Kollaborationen:
- - Möglichkeit für den Nutzer das Bild zu drehen
- - Der Anwender möchte das Bild gedreht speichern
-
-Klasse: Size-Tool
- Vererbung:
- - Tool
- Verantwortlichkeiten:
- - Vergrößerung des Bildes (Werte)
- - Verkleinerung des Bildes (Werte)
- - Skalieren
- Kollaborationen:
- - Der Anwender möchte die Auflösung des Bildes vergrößern
- - Der Anwender möchte die Auflösung des Bildes verkleinern
-
-
-Klasse: Merge-Tool
- Vererbung:
- - Tool
- Verantwortlichkeiten:
- - Das Zusammenfügen zweier Bilder in eine neue Datei (Abspeichern der neuen Farbwerte)
- - Das Zusammenfügen übereinander oder nebeneinander (wenn Alpha-Kanal vorhanden)
- Kollaborationen:
- - Der Anwender möchte ein Bild neben einem anderen Bild speichern
- - Der Anwender möchte ein Bild über einem anderen speichern
-
-Klass: View-Tool(abstrakt)
- Vererbung:
- -Tool
- Verantwortlichkeiten:
- -Verändern der Ansicht des Bilder
- Kollaborationen:
- -Der User möchte das Bild anders Anzeigen lassen
-
-Klasse: Zoom-Tool
- Vererbung:
- - View-Tool
- Verantwortlichkeiten:
- - Vergrößerung des Bildes (Ansicht)
- - Verkleinerung des Bildes (Ansicht)
- - Zoomen
- Kollaborationen:
- - Der Anwender möchte in ein Bild zoomen
- - Der Anwender möchte aus dem Bild heraus zoomen
-
-Klasse: Merge-View-Tool
- Vererbung:
- - View-Tool
- Verantwortlichkeiten:
- - Das Anzeigen zweier Bilder in der Datei
- Kollaborationen:
- - Der Anwender möchte ein Bild neben einem anderen Bild anzeigen
- - Der Anwender möchte ein Bild über einem anderen anzeigen lassen
-
-Klasse: Pen-Tool
- Vererbung:
- - Set-Color-Tool
- Verantwortlichkeiten:
- - Speicherung des eingestellten Radius
- - Setzen von Pixelwerten um die Cursor-Stelle in einen auswählbaren Radius in einer auswählbaren Farbe
- Kollaborationen:
- - Der Anwender möchte Freihand in einer freiwählbaren Farbe in einem freiwählbaren Radius zeichnen, ohne Beschränkung innerhalb des Bildes
-
-Klasse: FloodFill-Tool
- Vererbung:
- - Set-Color-Tool
- Verantwortlichkeiten:
- - alle Pixel in einer Äquivalenzklasse zum aktuellen Pixel in eine freiwählbare Farbe einfärben
- Kollaborationen:
- - Der Anwender möchte eine Fläche einer Farbe komplett umfärben
-
-Klasse: Plain-Tool
- Vererbung:
- - Set-Color-Tool
- Verantwortlichkeiten:
- - alle Pixel des Bildes in eine Farbe ändern
- Kollaborationen:
- - Der Anwender möchte das Bild einfarbig einfärben
-
-Klasse: Formen-Tool (abstrakt)
- Vererbung:
- - Set-Color-Tool
- Verantwortlichkeiten:
- - Zeichnen eines geometrischen Primitives
- - vereinheitlichte Darstellung der Formauswahl und Ränder
- Kollaborationen:
- - Der Anwender möchte ein/e Rechteck/Linie oder eine konvexe Form zeichnen
-
-Klasse: Linien-Tool
- Vererbung:
- - Formen-Tool
- Verantwortlichkeiten:
- - Zeichnen einer Linie in einer wählbaren Dicke und Farbe
- - Die Linie kann durchgängig, gestrichelt oder gepunktet gezeichnet werden
- Kollaborationen:
- - Der Anwender möchte eine durchgezogene Linie zeichnen
- - Der Anwender möchte eine gestrichelte Linie zeichnen
- - Der Anwender möchte eine gepunktete Linie zeichnen
-
-Klasse: Rechteck-Tool
- Vererbung:
- - Formen-Tool
- Verantwortlichkeiten:
- - Aufspannen eines Rechtecks zwischen zwei Punkten, der Rand und die Fläche sind in der Farbe frei wählbar,
- diese Wählbarkeit ist separat vom anderen Zustand möglich
- - Der Rand kann in der Dicke eingestellt werden
- Kollaborationen:
- - Der Anwender möchte ein Rechteck zeichnen, die innere Fläche soll Transparenz speichern
- - Der Anwender möchte ein Rechteck zeichnen, die innere Fläche soll eine Farbe haben, der Rand soll eine gewisse Breite und Farbe haben
-
-Klasse: Konvexe-Form-Tool
- Vererbung:
- - Formen-Tool
- Verantwortlichkeiten:
- - Aufspannen einer konvexen Form mittels Punkten (max 100)
- - Die konvexe Form hat einen Rand und eine interne Fläche, deren Farbe separat gewählt werden kann
- - Der Rand kann im Bezug auf seine Dicke eingestellt werden
- Kollaborationen:
- - Der Anwender möchte ein n-Eck zeichnen, dazu berührt er auf dem Bildschirm n-Punkte und am Schluss den Anfangspunkt (10pxl Radius?)
- - In der berührten Reihenfolge werden Linien gezogen, die die Form aufspannen und je nach Einstellungen wird der Rand und die interne Fläche dargestellt
-
-Klasse: Polygon-Form-Tool
- Vererbung:
- - Formen-Tool
- Verantwortlichkeiten:
- - Aufspannen eines Polygons über das Bild
- - Das Polygon hat einen Rand und eine interne Fläche, deren Farbe separat gewählt werden kann
- - Der Rand kann im Bezug auf seine Dicke eingestellt werden
- Kollaborationen:
- - Der Anwender möchte ein Polygon zeichnen
-
-Klasse: Kreis-Tool
- Vererbung:
- - Set-Color-Tool
- Verantwortlichkeiten:
- - Erstellen einer Kreisform in dem man den Mittelpunkt bestimmt und zwei Radien festlegen kann (NS und WO Radius)
- - Die Dicke des Randes des Kreises ist freiwählbar, sowie die Art des Randes (Gepunktet, etc.), genauso wie die Farbe des Kreises und des Randes
- Kollaborationen:
- - Der Anwender möchte einen beliebigen Kreis und eine beliebige Ellipse zeichnen können
-
-Klasse: Selection-Tool(abstrakt)
- Vererbung:
- -Tool
- Verantwortlichkeiten:
- -Auswählen von einem Bereich(beliebiger Bereich)
- Kollaborationen:
- - Der Anwender möchte ein Bereich Auswählen (quadratisch)
-
-Klasse: Cut-Tool
- Vererbung:
- -Selection-Tool
- Verantwortlichkeiten:
- -Auswählen von Bildern und das ausschneiden dieser
- Kollaborationen
- - Der Anwender möchte ein Bild auswählen und bewegen oder löschen
-
-Klasse: Korrektur-Tool(abstrakt)
- Vererbung:
- -Tool
- Verantwortlichkeiten:
- -Verändern von Bild Daten (Korrektur)
- Kollaborationen:
- -Der Anwender möchte ein Bild verändern und dies mit Korrektur
-
-Klasse: Helligkeits-Tool
- Vererbung:
- Korrektur-Tool
- Verantwortlichkeiten
- Verändert die Helligkeits Werte
- Kollaboration:
- Der Anwender möchte das Bild verdunkeln oder aufhellen
-
-Klasse: Farbton-Tool
- Vererbung:
- Korrektur-Tool
- Verantwortlichkeiten:
- Verändert die Sättigung von Farbdaten
- Kollaborationen:
- Der User möchte ein Bild sättigen oder verblassen
-
-Klasse: Gradations-Tool
- Vererbung:
- Korrektur-Tool:
- Verantwortlichkeiten:
- Setzen einer Gradationskurve
- Kollaboration:
- Der User möchte eine Gradationskurve eines Farbschemas Erstellen
-
-Klasse: 3D-Objekt
- Vererbung:
- -
- Verantwortlichkeiten:
- -Wissen über die Vertices und das Managen dieser
- Kollaborationen:
- -Der User möchte ein 3D Objekt laden
-
-Klassen: 3D-Inspector
- Vererbung:
- -
- Verantwortlichkeiten:
- -Darstellen eines 3D Objekts und der Projezierung (RayTracer)
- Kollaborationen:
- -Der User möchte ein 3D Objekt auf das Layer projezieren
-
-Klasse: Layer
- Vererbung:
- -
- Verantwortlichkeiten:
- -Darstellung eines Bildes und Sichtbarkeit auf sich selbst
- Kollaborationen:
- -Der User möchte ein Bild auf einem Layer darstellen
-
-Klasse: Layer-Manager
- Vererbung:
- -
- Verantwortlichkeiten:
- -Sichtbarkeit und Darstellung der Bilder auf verschiedenen Layern
- -Projektion auf ein Bild
- Kollaborationen:
- -Der User möchte ein Layer über das andere schieben
- -Der User möchte die Layer löschen
- -neues Layer erstellen
-
-
-
-
-
\ No newline at end of file
diff --git a/Abgabe/Aufgabe 3/UML.pdf b/Abgabe/Aufgabe 3/UML.pdf
deleted file mode 100644
index e379a3e..0000000
Binary files a/Abgabe/Aufgabe 3/UML.pdf and /dev/null differ
diff --git a/Abgabe/Aufgabe 3/UML.uxf b/Abgabe/Aufgabe 3/UML.uxf
deleted file mode 100644
index 2ccb1a4..0000000
--- a/Abgabe/Aufgabe 3/UML.uxf
+++ /dev/null
@@ -1,757 +0,0 @@
-
-
- 9
-
- UMLClass
-
- 2106
- 171
- 171
- 81
-
- /*Image*/
---
-+pixel_data: byte[][]
-+size: Vector2
---
-+clear_image(Color)
-
-
-
- UMLClass
-
- 2115
- 450
- 162
- 36
-
- *RasterImage*
---
---
-
-
-
- UMLClass
-
- 2106
- 702
- 189
- 99
-
- *ShapedImage*
---
--polygon_data: byte[][]
---
-+create_vertex(Vector2)
-+remove_vertex(Vector2)
-+clear_polygon()
-
-
-
- UMLClass
-
- 450
- 171
- 261
- 171
-
- /*Tool*/
---
-+effected_area_border_color: Color
-+effected_area_border_radius: int
-+effected_area_border_line_type: LineType
-+name: String
-+icon: Sprite
-+tooltip: String
-+description: String
-...
---
-/+handleImageClick(Vector2): void/
-
-
-
- Relation
-
- 2187
- 243
- 27
- 225
-
- lt=<<-
- 10.0;10.0;10.0;230.0
-
-
- Relation
-
- 2187
- 477
- 27
- 243
-
- lt=<<-
- 10.0;10.0;10.0;250.0
-
-
- UMLClass
-
- 468
- 450
- 225
- 153
-
- /*SetColorTool*/
---
-+colors: Color[255]
-+selected_colors: Color[2]
---
-+renderColorPalette(): void
-+setMainColor(Color): void
-+setSecondaryColor(Color): void
-+getMainColor(): Color
-+getSecondaryColor(): Color
-
-
-
- UMLClass
-
- 0
- 450
- 225
- 117
-
- *HistoryTool*
---
--history: HistoryAction[20]
--current_location: int
---
-+undo(): bool
-+redo(): bool
-+clearRedo(): void
-+addUndo(HistoryAction): void
-
-
-
- UMLClass
-
- 945
- 171
- 216
- 117
-
- <<Enumeration>>
-*LineType*
---
- Solid
- Dotted
- Dashed
- LongDash
- ...
-
-
-
- Relation
-
- 99
- 558
- 27
- 162
-
- lt=<<<<-
- 10.0;10.0;10.0;160.0
-
-
- UMLClass
-
- 0
- 702
- 225
- 45
-
- *HistoryAction*
---
-+string action_data[]
---
-
-
-
- UMLClass
-
- 0
- 864
- 225
- 99
-
- <<Enumeration>>
-*HistoryActionType*
---
- ColorChange
- Deletion
- PolygonVertex
- ....
-
-
-
- Relation
-
- 99
- 738
- 99
- 144
-
- lt=<-
-+action_type
- 10.0;140.0;10.0;10.0
-
-
- UMLClass
-
- 468
- 702
- 225
- 45
-
- *FloodFillTool*
---
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 234
- 702
- 225
- 45
-
- *PlainTool*
---
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 702
- 702
- 225
- 90
-
- /*FormsTool*/
---
-+edge_display_line_type: LineType
-+edge_display_color: Color
-+edge_display_thickness: int
---
-
-
-
- UMLClass
-
- 936
- 702
- 225
- 63
-
- *PenTool*
---
--radius: int
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 702
- 864
- 225
- 90
-
- *RectangleTool*
---
-+edge_thickness: int
-+edge_line_type: LineType
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 1179
- 864
- 216
- 72
-
- *LineTool*
---
-+thickness: int
-+line_type: LineType
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 936
- 864
- 234
- 90
-
- *ConvexFormsTool*
---
-+edge_thickness: int
-+edge_line_type: LineType
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 468
- 864
- 225
- 90
-
- *PolygonTool*
---
-+edge_thickness: int
-+edge_line_type: LineType
---
-+handleImageClick(Vector2): void
-
-
-
- Relation
-
- 648
- 594
- 423
- 126
-
- lt=<<-
- 10.0;10.0;450.0;120.0
-
-
- Relation
-
- 612
- 594
- 225
- 126
-
- lt=<<-
- 10.0;10.0;230.0;120.0
-
-
- Relation
-
- 567
- 594
- 27
- 126
-
- lt=<<-
- 10.0;10.0;10.0;120.0
-
-
- Relation
-
- 333
- 594
- 225
- 126
-
- lt=<<-
- 230.0;10.0;10.0;120.0
-
-
- Relation
-
- 576
- 333
- 27
- 135
-
- lt=<<-
- 10.0;10.0;10.0;130.0
-
-
- Relation
-
- 837
- 783
- 225
- 99
-
- lt=<<-
- 10.0;10.0;230.0;90.0
-
-
- Relation
-
- 810
- 774
- 27
- 108
-
- lt=<<-
- 10.0;10.0;10.0;100.0
-
-
- Relation
-
- 882
- 783
- 423
- 99
-
- lt=<<-
- 10.0;10.0;450.0;90.0
-
-
- Relation
-
- 558
- 783
- 252
- 99
-
- lt=<<-
- 260.0;10.0;10.0;90.0
-
-
- Relation
-
- 99
- 333
- 414
- 135
-
- lt=<<-
- 440.0;10.0;10.0;130.0
-
-
- UMLClass
-
- 234
- 864
- 225
- 81
-
- *CircleTool*
---
-+edge_thickness: int
-+edge_line_type: LineType
---
-+handleImageClick(Vector2): void
-
-
-
- Relation
-
- 324
- 783
- 459
- 99
-
- lt=<<-
- 490.0;10.0;10.0;90.0
-
-
- UMLClass
-
- 234
- 450
- 225
- 63
-
- *MergeTool*
---
-+import_file: DataStream<File>
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 702
- 450
- 225
- 45
-
- *RotateTool*
---
---
-+handleImageClick(Vector2): void
-
-
-
- UMLClass
-
- 936
- 450
- 225
- 45
-
- *ResizeTool*
---
---
-+handleImageClick(Vector2): void
-
-
-
- Relation
-
- 621
- 333
- 216
- 135
-
- lt=<<-
- 10.0;10.0;220.0;130.0
-
-
- Relation
-
- 666
- 333
- 405
- 135
-
- lt=<<-
- 10.0;10.0;430.0;130.0
-
-
- Relation
-
- 333
- 333
- 225
- 135
-
- lt=<<-
- 230.0;10.0;10.0;130.0
-
-
- UMLClass
-
- 1170
- 450
- 225
- 54
-
- *SelectionTool*
---
-+pos1: int
-+pos2: int
---
-
-
-
-
- Relation
-
- 684
- 333
- 630
- 135
-
- lt=<<-
- 10.0;10.0;680.0;130.0
-
-
- UMLClass
-
- 1170
- 702
- 225
- 36
-
- *CutTool*
---
---
-
-
-
-
- Relation
-
- 1278
- 495
- 27
- 225
-
- lt=<<-
- 10.0;10.0;10.0;230.0
-
-
- UMLClass
-
- 1404
- 450
- 225
- 90
-
- *KorrekturTool*
---
-+Value: int
---
-+increse(Value)
-+decrese(Value)
-
-
-
- Relation
-
- 702
- 333
- 837
- 135
-
- lt=<<-
- 10.0;10.0;910.0;130.0
-
-
- UMLClass
-
- 1404
- 702
- 225
- 36
-
- *HelligkeitsTool*
---
---
-
-
-
- Relation
-
- 1512
- 531
- 27
- 189
-
- lt=<<-
- 10.0;10.0;10.0;190.0
-
-
- UMLClass
-
- 1638
- 702
- 225
- 36
-
- *FarbtonTool*
---
---
-
-
-
-
- Relation
-
- 1539
- 531
- 234
- 189
-
- lt=<<-
- 10.0;10.0;240.0;190.0
-
-
- UMLClass
-
- 1872
- 702
- 225
- 54
-
- *GradationsTool*
---
---
-+generate_gradient(): void
-
-
-
- Relation
-
- 1575
- 531
- 432
- 189
-
- lt=<<-
- 10.0;10.0;460.0;190.0
-
-
- UMLClass
-
- 1170
- 171
- 225
- 72
-
- *3D-object*
---
-+vertices
---
-+load_3D(Object): void
-
-
-
-
- UMLClass
-
- 1404
- 171
- 225
- 54
-
- *3D-inspector*
---
---
-+generate_3D(): void
-
-
-
-
- UMLClass
-
- 1872
- 171
- 225
- 81
-
- *Layer-Manager*
---
---
-+generate_layer(): void
-+delete_layer(int): void
-+overlab_layer(): void
-
-
-
-
- UMLClass
-
- 1638
- 171
- 225
- 54
-
- *Layer*
---
---
-+display_layer(): void
-
-
-
-
diff --git a/Abgabe/Aufgabe 3/Use_case.pdf b/Abgabe/Aufgabe 3/Use_case.pdf
deleted file mode 100644
index cffc003..0000000
Binary files a/Abgabe/Aufgabe 3/Use_case.pdf and /dev/null differ
diff --git a/Abgabe/Aufgabe 3/Use_case.uxf b/Abgabe/Aufgabe 3/Use_case.uxf
deleted file mode 100644
index 251c8b9..0000000
--- a/Abgabe/Aufgabe 3/Use_case.uxf
+++ /dev/null
@@ -1,405 +0,0 @@
-
-
- 17
-
- UMLActor
-
- 17
- 459
- 170
- 187
-
- 3D-Künstler
-bg=green
-
-
-
- UMLActor
-
- 68
- 714
- 136
- 187
-
- Einsteiger
-bg=red
-
-
-
- UMLUseCase
-
- 646
- 391
- 204
- 119
-
- Zusammenfügen
-von Bildern
-bg=red
-
-
-
- UMLUseCase
-
- 646
- 527
- 204
- 119
-
- Ändern der
-Bilderauflösung
-bg=red
-
-
-
- UMLUseCase
-
- 646
- 663
- 204
- 119
-
- Drehen von
-Bildern
-bg=red
-
-
-
- UMLUseCase
-
- 646
- 969
- 204
- 119
-
- Retuschieren
-der Bilder
-bg=magenta
-
-
-
- UMLActor
-
- 51
- 1037
- 170
- 187
-
- Casual User
-bg=red
-
-
-
- Relation
-
- 119
- 442
- 561
- 306
-
-
- 310.0;10.0;10.0;160.0
-
-
- Relation
-
- 119
- 561
- 561
- 187
-
-
- 310.0;10.0;10.0;90.0
-
-
- Relation
-
- 119
- 680
- 561
- 68
-
-
- 310.0;20.0;10.0;20.0
-
-
- Relation
-
- 119
- 442
- 561
- 629
-
-
- 310.0;10.0;10.0;350.0
-
-
- Relation
-
- 119
- 561
- 561
- 510
-
-
- 310.0;10.0;10.0;280.0
-
-
- Relation
-
- 119
- 697
- 561
- 374
-
-
- 310.0;10.0;10.0;200.0
-
-
- Relation
-
- 119
- 986
- 561
- 85
-
-
- 310.0;20.0;10.0;30.0
-
-
- Relation
-
- 136
- 1003
- 544
- 408
-
-
- 300.0;10.0;10.0;220.0
-
-
- UMLUseCase
-
- 646
- 1394
- 204
- 119
-
- Korrektur-
-werkzeuge
-bg=blue
-
-
-
- UMLNote
-
- 629
- 1547
- 238
- 119
-
- Helligkeit/Kontrast
-Farbton/Sättigung
-Gradationskurven
-bg=blue
-
-
-
- Relation
-
- 136
- 1360
- 544
- 119
-
-
- 300.0;50.0;10.0;10.0
-
-
- Relation
-
- 731
- 1496
- 51
- 85
-
-
- 10.0;10.0;10.0;30.0
-
-
- UMLUseCase
-
- 646
- 1122
- 204
- 119
-
- Pinsel
-bg=blue
-
-
-
- UMLUseCase
-
- 646
- 1258
- 204
- 119
-
- Auswahl-
-werkzeuge
-bg=blue
-
-
-
- Relation
-
- 136
- 1292
- 544
- 119
-
-
- 300.0;10.0;10.0;50.0
-
-
- Relation
-
- 136
- 1156
- 544
- 255
-
-
- 300.0;10.0;10.0;130.0
-
-
- UMLActor
-
- 0
- 1377
- 306
- 187
-
- Freiberufliche Fotografen
-bg=blue
-
-
-
- UMLUseCase
-
- 646
- 816
- 204
- 119
-
- Layerstruktur
-bg=dark_gray
-
-
-
- Relation
-
- 85
- 272
- 595
- 221
-
-
- 330.0;10.0;10.0;110.0
-
-
- UMLUseCase
-
- 646
- 238
- 204
- 119
-
- Schnittstelle
-für 3D-Modelle
-bg=green
-
-
-
- Relation
-
- 85
- 136
- 595
- 357
-
-
- 330.0;10.0;10.0;190.0
-
-
- UMLUseCase
-
- 646
- 102
- 204
- 119
-
- Erzeugen von
-3D-Objekten
-bg=green
-
-
-
- Relation
-
- 136
- 867
- 544
- 544
-
-
- 300.0;10.0;10.0;300.0
-
-
- Relation
-
- 119
- 867
- 561
- 204
-
-
- 310.0;10.0;10.0;100.0
-
-
- Relation
-
- 119
- 697
- 561
- 221
-
-
- 310.0;110.0;10.0;10.0
-
-
- Relation
-
- 85
- 442
- 595
- 476
-
-
- 330.0;260.0;10.0;10.0
-
-
- UMLClass
-
- 527
- 0
- 459
- 1836
-
- lw=2
-IntelliPhoto Benchmark 1.0
-bg=gray
-
-
-
diff --git a/Examples/biggest_flex_featureimage.jpg b/Examples/biggest_flex_featureimage.jpg
new file mode 100644
index 0000000..e830e0a
Binary files /dev/null and b/Examples/biggest_flex_featureimage.jpg differ
diff --git a/Examples/farbkreis_featuredimage.png b/Examples/farbkreis_featuredimage.png
new file mode 100644
index 0000000..10e2872
Binary files /dev/null and b/Examples/farbkreis_featuredimage.png differ
diff --git a/IntelliPhoto/Painting/GUI/IntelliPhotoGui.cpp b/IntelliPhoto/Painting/GUI/IntelliPhotoGui.cpp
new file mode 100644
index 0000000..1c13e71
--- /dev/null
+++ b/IntelliPhoto/Painting/GUI/IntelliPhotoGui.cpp
@@ -0,0 +1,423 @@
+// ---------- IntelliPhotoGui.cpp ----------
+
+#include
+#include
+
+#include "IntelliPhotoGui.h"
+#include "Layer/PaintingArea.h"
+
+// IntelliPhotoGui constructor
+IntelliPhotoGui::IntelliPhotoGui()
+{
+ //create Gui elemnts and lay them out
+ createGui();
+ // Create actions
+ createActions();
+ //create Menus
+ createMenus();
+ //set style of the gui
+ setIntelliStyle();
+
+ // Size the app
+ resize(500, 500);
+}
+
+
+// User tried to close the app
+void IntelliPhotoGui::closeEvent(QCloseEvent *event)
+{
+ // If they try to close maybeSave() returns true
+ // if no changes have been made and the app closes
+ if (maybeSave()) {
+ event->accept();
+ } else {
+
+ // If there have been changes ignore the event
+ event->ignore();
+ }
+}
+
+// Check if the current image has been changed and then
+// open a dialog to open a file
+void IntelliPhotoGui::open()
+{
+ // Check if changes have been made since last save
+ // maybeSave() returns true if no changes have been made
+ if (maybeSave()) {
+
+ // Get the file to open from a dialog
+ // tr sets the window title to Open File
+ // QDir opens the current dirctory
+ QString fileName = QFileDialog::getOpenFileName(this,
+ tr("Open File"), QDir::currentPath());
+
+ // If we have a file name load the image and place
+ // it in the paintingArea
+ if (!fileName.isEmpty())
+ paintingArea->openImage(fileName);
+ }
+}
+
+// Called when the user clicks Save As in the menu
+void IntelliPhotoGui::save()
+{
+ // A QAction represents the action of the user clicking
+ QAction *action = qobject_cast(sender());
+
+ // Stores the array of bytes of the users data
+ QByteArray fileFormat = action->data().toByteArray();
+
+ // Pass it to be saved
+ saveFile(fileFormat);
+}
+
+// Opens a dialog to change the pen color
+void IntelliPhotoGui::penColor()
+{
+ // Store the chosen color from the dialog
+ QColor newColor = QColorDialog::getColor(paintingArea->penColor());
+
+ // If a valid color set it
+ if (newColor.isValid())
+ paintingArea->setPenColor(newColor);
+}
+
+// Opens a dialog that allows the user to change the pen width
+void IntelliPhotoGui::penWidth()
+{
+ // Stores button value
+ bool ok;
+
+ // tr("Painting") is the title
+ // the next tr is the text to display
+ // Get the current pen width
+ // Define the min, max, step and ok button
+ int newWidth = QInputDialog::getInt(this, tr("Painting"),
+ tr("Select pen width:"),
+ paintingArea->penWidth(),
+ 1, 500, 1, &ok);
+ // Change the pen width
+ if (ok)
+ paintingArea->setPenWidth(newWidth);
+}
+
+// Open an about dialog
+void IntelliPhotoGui::about()
+{
+ // Window title and text to display
+ QMessageBox::about(this, tr("About Painting"),
+ tr("