We had three options for our final project for CS15: An Introduction to Object Oriented Programming. I chose the “Sketchy” assignment, where we are tasked with writing our own Java-based vector imaging program. According to the project’s specifications, our Sketchy must allow the user to move, rotate, and resize a variety of shapes with a bounding box, raise/lower shapes relative to others, change shapes’ color, allow for unlimited undo and redo of all actions, and save/load to/from external files.
For extra credit, I added a few extra bells and whistles beyond the base spec. Most notable additions are copy and paste functionality, instant updating of shape colors, keyboard shortcuts for most features, a help dialog, and the ability to export work to a lossless PNG image.
I also discovered some bugs in the bounding box support code. If the user accidentally presses more than one mouse button at a time, and/or drags the mouse outside of the bounding box while rotating, it can bug out the position and size of that shape. I added some additional code that prevents this from occurring.