Project Implementation - Phase II
(Phase I - Proposal: Due Friday, Nov. 30)
First Demo (10 points): Thursday, December 6 in the lab session
Final Demo: Thursday, December 13 in the lab session
Extra Credit Demo : can be scheduled until Friday, December 14 at 5 p.m.
Writeup Due Friday, December 14
CS 5551, Fall Semester, 2012
30 Points (including Phase I)

If you extend your drawing program, your project implementation should at least maintain its original functionality --- unless you are substantially changing its organization.

Beyond that, you should implement at least 12 points worth of additional features. You may work individually or in groups of two. A group of 2 people should implement at least 18 points worth of additional features. Both individuals and people in groups get 12 points in items 13 and 14 below for implementing the minimum (12 or 18 points) -- any points above the minimum count as extra credit (see below).

Possible features to be added:

  1. Implement other graphics objects:
    (a) (3+ points) Implement text. Typing input at the keyboard would earn the minimum # of points; using a 1-line text editor or multiline edit window, and/or allowing font selection (change size/shape etc.) would earn more points.
    (b) (1-2 points) Implement "round" circles and "square" squares. (1 points for one, 2 points for both)
    (c) (2-3 points) Implement Arcs and Filled Arcs (i.e. parts of ellipses). (2 points for one, 3 points for both)
    (d) (5-9 points) Implement polygons, polylines, or "polypoints" (5 points for one, 2 points for each additional one).
    (e) (3-4 points) Implement tilted rectangles (either unfilled, filled or both). One nice way is to establish an anchor point, then rubberband a line from the anchor point which forms the base of the rectangle, clicking ends that rubberbanding and starts a new rubber line that is constrained to be perpendicular to the base. A final click fixes the perpendicular line and establishes the rectangle.
    (f) (4 points) Implement tilted ellipses. This is similar to tilted rectangles, except that the ellipses have to be approximated by polygons and filled ellipses are approximated by filled polygons.
    (n) (1 point) Have appropriate icons on the toolbar for the items above.
  2. (2 points) Allowing the users to fill primitives with a polkadot pattern defined in a BufferedImage (which you define).
  3. (2 points) Add "mouse-tracking" capability to show the coordinates of the position of the mouse cursor.
  4. (3+ points) Implement undo-redo of addition of the last object or last action. (3 points for undo, 4 points for both undo & redo of last object; same for an action: 5 and 7 points respectively for undo and redo of either/both)
  5. (5 points) Allow the user to select several objects (by enclosing them by a "selection" rectagle for example), then cut, copy, and paste those objects.
  6. (3 points) Allow the user to select a "poly" or tilted object and an anchor point and rotate the object by any angle about the anchor point.
  7. (2+ points) Allow the user edit an individual object by changing its color (2 points), moving vertices of objects (4 points), or adding or deleting vertices of "poly" objects (7 points).
  8. (5+ points) Implement a zoom feature. This should maintain the aspect ratio of the work window (use a rubber rectangle to outline the zoomed area), and there should also be a way to return to full size. If you keep track of successive zooms, you could allow the user to step back through previous zooms (I don't know how useful this is, but being able to go back one step is useful).
  9. (1 points) Implement a "move-to-front" operation on an object that would place it in front of all other objects (i.e. at the end of the display list).
  10. (3 points) Provide context sensitive help for all the menu items.
  11. (? points) Other useful features for a drawing program that are not listed above. Note: the first person to suggest such a feature before before the first Demo date will get 1 or 2 points per proposed feature, and then those features will be made available for everyone (including the proposer) to implement if they like (for more points).

Additional points: will be awarded for semantic enhancement features such as highlighting the borders of selected features (color or fill pattern etc.), giving instructions/ specifying the state of the system in a message area, showing "target points" or sequentially highlighting for selection, changing the cursor shape appropriately (e.g.: to a stopwatch when the program is computing) etc.

Extra Credit: extra credit will be harder to earn: 1 point of extra credit = 3 points of normal credit. Extra credit points can be earned by adding more than the required 12 points of features (or 18 points for a 2-person group) -- e.g.: if you implement 24 points worth of the above features, you would receive 16 points = 12 base points + 12/3 extra points (members of a 2-person team would each earn 14 points = 12 base points + 6/3 extra points).

What to turn in: Turn in the following items from the Computer Science Lab Report Format:
0. (2 points) -- the proposal.
1. (1 point) The Basic Information (your name, class, section, TA's name, assignment number, and date) can be on a separate cover sheet or as (highlighted) comments at the top of your main program file.
3. & 4. (3 points) the form of data structures and data files you used, or the changes you made to the data structures or data files of the draw program.
5. (3 points) -- give a brief description of algorithms you used; for the draw program this would be just for the additional features.
9. (points as above) Document the all the Extra Credit of your program if you did it (by a demo and coded/hand-written comments and highlighting).
11. (5 points) Listings: turn in program listings.
13. & 14. (12 points) Testing: demonstrate your program to the TA -- this is how you earn the points for the features listed above.
*Additional extra credit can be demo-ed up to 5 p.m. Thursday afternoon (Dec. 13).
15. Include a description of any Known Bugs if needed. You may be able to gain back lost points by a careful analysis of what went wrong and possible fixes.
16. (2 points) Improvements: indicate which feature(s) you would like to add or would be most useful to add if you had more time (or got paid to do it!).
17. (2 points) Comments: Please write a couple of sentences about what you learned from the project.

Turn in one report for your group.

Page URL: /~ddunham/cs5551f12/assignments/project/implement.html
Page Author: Doug Dunham
Last Modified: Thursday, 08-Nov-2012 15:39:29 CST
Comments to: