Synopsis OOP '98 opdracht: Java Paint Deluxe
Naam |
Sander Hahn |
Student nummer |
1003747 |
e-mail |
shahn@cs.vu.nl |
Universiteit |
Vrije Universiteit Amsterdam |
Studie |
Informatica |
Jaar |
1996 |
Java Paint Deluxe
Tegenwoordig zijn er veel grafische pakketten te krijgen. Een heel goed
en zelfs gratis pakket is Gimp (GNU IMage
Processor). Dit soort programma's zijn erg gebaseerd op Image Processing
algorithmes waarmee je foto's kunt bewerken. Het programma dat ik wil maken
zal niet de nadruk leggen op het bewerken van bestaande plaatjes. Het zal een
tool zijn waarin je zelf plaatjes kunt maken. Dit betekent niet dat de
mogelijkheid tot Image Processing Plug-ins zal ontbreken, maar de nadruk zal
er zeker niet op worden gelegd. Er bestaan immers al andere programma's die
waarschijnlijk veel beter geschikt zijn voor dit soort taken.
Requirements (in MoSCoW)
Must-Have:
-
Position / Shape Plug-in entrance: deze opzet is voor de Toolbox
met primaire teken-operaties: zoals Point, Line, Curve, Circle, Elipse,
Rectangle en/of Polygon. Het moet dus mogelijk zijn een plug-in te schrijven
die een vorm bepaalt. Deze plug-ins hebben niets te maken met wat er
eigenlijk getekend wordt in het scherm.
-
Brush Producer Plug-in entrance: de brush is het elementaire
tekenobject. Een lijn wordt getekend door middel van de Brush vorm. Een
Brush is eigenlijk gewoon een Picture die gebruikt wordt om te tekenen.
-
Image Processing Plug-in entrance: het is zo mogelijk om willekeurige
Image Processing algorithmes uit te voeren op Pictures, Brushes of een
combinatie van beiden. Voorbeelden zijn verschillende tekenmodi, zoals:
Blur, Wave, Edge Detect, Rotate, etc.
-
Color Selector: hier kun je in een window erg precies de kleurwaarde
waarmee je wilt tekenen opgeven.
-
Color Palette: hier kun je de kleuren die je vaker gebruikt inzetten.
Zo kun je makkelijk switchen tussen meerdere kleuren zonder de hele tijd
de Color Selector te openen.
-
Status Bar: hier kun je informatie zien die op dat moment relevant
is (x, y coördinaat, etc.)
-
Menu Bar: hier komen functies als Load / Save en dergelijke.
Should-Have:
-
Placement Helper Functions: zoals Airbrush en Grid.
-
Graphical Toolbox: hier zijn kleine iconen te zien voor de verschillende
Position / Shape Plug-ins en Brush Producer Plug-ins.
-
Text Brush Producer Plug-in: voor het plaatsen van teksten.
Could-Have:
-
Online Documentation: misschien in de vorm van een document. Het
is ook mogelijk dat de Plug-ins een eigen Help procedure moeten hebben.
Won't-Have:
-
Te veel Plug-ins, de nadruk ligt op de onderliggende structuur. De Plug-ins
zijn alleen om te laten zien dat het systeem werkt.
Design
Er zal een verschil zijn tussen de User Interface en de werkelijke getekende
effecten. Doordat veel effecten niet snel op het scherm zijn te zetten.
Zo zal voor het scherm een Graphics Java object worden gebruikt en voor
de Pictures / Brushes een Image Java object.
Voor de Plug-ins zal gebruik worden gemaakt van de Java Bean mogelijkheden
die Java biedt. De Componenten die geschreven worden voor het programma
zullen ook voldoen aan de design patterns die voor Java Beans gelden. Een
standaard Plug-in zal kunnen worden overloaded om zo makkelijk Plug-ins
te maken.
Notes
De Requirements specification zal in HTML worden gemaakt. Het programma
zelf zal geschreven worden in Java, de Design specification zal gemaakt
worden m.b.v. het programma Javadoc.
Het programma werkt met True Color, dus kan het programma het beste
draaien op een computer die zo'n grafische mode ondersteund.
Het programma zal een onderliggende structuur vormen die aangevuld kan
worden met Plug-ins. De Plug-ins die gedurende dit practicum zullen worden
geproduceerd zijn bedoeld om de werking van het systeem te demonstreren.
Zo zijn de Plug-ins die zijn opgenoemd in het stukje Requirements voorbeelden
die gemaakt kunnen worden. Het is niet de bedoeling om ze ook werkelijk
allemaal in het programma te verwerken.