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:

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 points) Allowing the users to fill primitives with a polkadot
pattern defined in a BufferedImage (which you define).

(2 points) Add "mouse-tracking" capability to show the coordinates
of the position of the mouse cursor.

(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 points) Allow the user to select several objects (by enclosing
them by a "selection" rectagle for example), then cut, copy, and paste
those objects.

(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.

(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).

(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).

(3 points) Provide context sensitive help for all the menu items.

(? 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. &amp 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.