Description
Implement a 2d-shape editor to support following shapes:
• Line
• Triangle
• Square
• Rectangle
• Circle
• Ellipse
• Curve
• Poly-line
• Polygon
It should be possible to do following operations:
• New – to clear and start a new diagram [should provide Save option if “dirty”]
• Selection
• Translation
• Scaling
• Rotation
• Unlimited Undo – via Undo button and ctrl-z
• copy object(s) via Copy button and ctrl-c
• paste object(s) via Paste button and ctrl-v
•
•
• Save as image—JPEG format
• Support multiple thickness
• Support multiple color
The editor should not limit the number of shapes drawn in a canvas. Design appropriate
menus/selection mechanisms to support different shapes. Interaction should be intuitive and user
friendly.
You may use an Editor such as the Chrome extension Gliffy (https://www.gliffy.com) as the basis for
your implementation.
You can use any open source API for certain aspects of the project [eg. save as image, export as pdf,
etc.] but will need to document it with full information.
Extra Credit
• [SMALL] Multi-select
• [SMALL] grouping objects and select
Programming Project [5 points]
Handed out on 4/13/2022
• [MEDIUM] operations on group as a whole
• [SMALL] Draw grid
• [SMALL] Snap to grid
• [SMALL] text
• [SMALL] zoom in/zoom out
• [SMALL] pan/scrollbar
• [SMALL] Additional shape families
• Export as pdf
• Export as Latex
• Clipboard copy-paste support
• etc
Deliverables
• Source files
• Sample Input/output
• 1-2 page report : Write about issues faced, lessons learned, any remaining bugs etc.
Deadline and Late Submissions
• The assignment is due on the date specified above at 11:59:59 PM
• Each day late will incur a penalty of 5% of the grade for the assignment; for example, if the
assignment is 3 days late, the maximum grade will be 85 out of 100—15 will be subtracted
from whatever grade is assigned.