# Projekt: Flechtenschemabaukasten / Lichen Schematics Kit - Lastenheft ## Ziel In der Biologie werden schematische Darstellungen verwendet, um das Aussehen Pflanzen zu beschreiben. Eine solche schematische Darstellung wird auch Piktogramm genannt. Für Piktogramme von *Blütenpflanzen* gibt es etablierte Standards. Ziel dieses Projektes ist eine Software, welches das Erstellen von Piktogrammen für *Flechten* [^0] unterstützt. Die Software ist als Web-Anwendung mit HTML 5 und ECMAScript 6 umzusetzen. Software-Ziel sind moderne Desktop-Browser (Chrome 60, Firefox 55, Edge 40). Die Anwendung läuft ausschließlich im Browser ohne serverseitige aktive Komponenten. Ziel-Nutzer sind Biologen im akademischen Betrieb. [^0] https://de.wikipedia.org/wiki/Flechte ## Namensgebung Der Körper einer Flechte heißt **Thallus**. Eine Flechte kann verschiedene **Merkmale** aufweisen. Im Folgenden werden auch die schematischen Darstellungen des Thallus und die der Merkmale vereinfachend nur Thallus und Merkmale genannt. ## Darstellung Beispiele für eine Flechte bestehend aus Thallus und vielen Merkmalen sind dem beigelegten Piktogramm zu entnehmen. Thallus und Merkmale müssen digitalisiert werden, sodass sie programmatisch kombiniert und manipuliert werden können. Das Piktogramm soll exklusiv schwarz-weiß sein. Hinweis: Es bietet sich aus verschiedenen Gründen *sehr* an, dass hierfür Vektorgraphiken verwendet werden. ### Thallus Der Thallus wird als liegendes Rechteck dargestellt, dessen linkes und rechtes Ende mit Halbkreisen abgerundet sind. Variationen der Enden sind: * ohne weiteres Merkmal * mit Markierung im oberen Drittel (siehe Beispiel links und rechts) * mit Auswuchs (siehe Beispiel rechts) * weitere Formen (konkrete Informationen fehlen noch) Die Rinde des Thallus wird durch zwei Linien dargestellt. Die Dicke der Rinde des Thallus ist fix. Die Oberrinde und die Unterrinde sind bei einer Flechte ohne Merkmale glatt durchgezogene Linien. ### Merkmale > [Die Merkmale] sollten (…) gut aussehen(…): nicht (…) klobig, einfach, (…) mehr oder weniger selbsterklärend, wenn man die Merkmale mal (in der Realität) gesehen hat. > (Jedes) Merkmalssymbol (nimmt) die gleiche Breite der Ober- oder Unterseite ein, abgesehen von den Fruchtkörpern (…). Man hat also eine Standardbreite und (…) Vielfache davon. ## Aktionen ### Merkmale hinzufügen Auf der Oberrinde und auf der Unterrinde des Thallus können Merkmale eingefügt werden. Der Thallus wächst dadurch in der Breite. Es gibt einen Merkmals-Schatz, in welchem alle verfügbaren Merkmale angeboten werden. Das Einfügen eines Merkmals geschieht über „Ziehen und Fallenlassen“. Dabei wird das Merkmal aus dem Schatz auf die Wand des Thallus gezogen. Sind rechts davon bereits Merkmale vorhanden, werden sie nach rechts beiseite geschoben. > [Ein Merkmal kommt] entweder (exklusiv nur) auf der Ober- oder (exklusiv nur) auf der Unterseite vor (…). Hinweis: Wird ein Fruchtkörper hinzugefügt, ist die horizontale Achse darin, auf welcher Merkmale hinzugefügt werden können, gegenüber der des Thallus nach oben verschoben. Optional: Das hinzufügen von Merkmalen wird programmatisch auf Plausibilität kontrolliert, denn es gibt Merkmale, welche nur an bestimmten Stellen vorkommen können (konkrete Informationen fehlen noch). ### Merkmale löschen Ein Merkmal kann vom Thallus entfernt werden. ### Merkmale positionieren Ein Merkmal kann durch „Ziehen und Fallenlassen“ vom Thallus gelöst und an einer anderen Position wieder eingefügt werden. Auf merkmalslosen Wänden ist eine freie Positionierung (das Wählen eines Abstands vom links liegenden benachbarten Merkmal) möglich. > Es muß auch merkmalslose Abschnitte zum Einfügen geben, damit man die Merkmale beliebig gehäuft oder verstreut auf Ober- oder Unterseite anbringen kann. ### Minimalbreite festlegen Bei Bedarf kann eine minimale Breite (in Pixeln oder Standard-Merkmalsbreiten) für den Thallus angefordert werden. Dafür wird merkmalslose Rinde eingefügt. Modi hierbei sind: * rechts erweitern * gleichmäßig links und rechts erweitern * gleichmäßig zwischen allen Merkmalen erweitern ## Dateioperationen * SVG speichern * SVG laden (nur Dateien, welche dieses Werkzeug gespeichert hat) * Export: 24-bit PNG * Export (optional): 1-bit PNG * Export (optional): PNG mit transparentem Hintergrund ## Qualität * Die Anwendung muss so Performant sein, dass keine Beiinträchtigung der Arbeit stattfindet. Dies gilt insbesondere beim Ziehen und Fallenlassen. * Das gespeicherte SVG muss druckreif sein (keine verdeckenden Objekte). ## Dokumentation * Es gibt eine **ausführliche** Bedienungsanleitung für den Nutzer. Die Zielgruppe ist zu bedenken. * Es gibt eine Programmier-Dokumentation, auf dass künftige Entwickler das Programm leicht erweitern können. In der Programmier-Dokumentation wird nicht nur die Programm-Organisation beschrieben, sondern auch fundamentale Entscheidungen (z.B. Architektur, Auswahl externer Bibliotheken) erläutert. * Der Quelltext besticht durch sprechende Bezeichner und hilfreichen Kommentaren.