The goal of this project is for you to
get comfortable using the Tablet computer, Windows Presentation
Foundataion, C#, Visual Studio, and anything else you might not have a
lot of experience with. WPF can be a bit daunting at first, but
with a little practice, you'll get the hang of it.
In this assignment you will build a Windows Journal style application
that lets the user input, manupulate, save and load ink. This
assignment has a set of basic required functionality as well as a
number of optional extensions. Because this is the first time I
am teaching this class, I am going to try to keep the basic
requirements modest, however, I do hope that you will try the optional
extensions because they are what make the assignment really fun!
Also as with most assignments, I will tell you what your application
needs to do, and it's up to you to decide exactly how to implement it.
Feel free to talk with anyone else in the class about your design
and strategy, although this particular assignment should be coded
individually.
Basic Functionality
Your application should support the following functionality:
Application Functionality [15 points]
- Load and save notes in ISF (ink serialized format)
- Exit the application
- Let the user choose between blank, lined and graph paper background
Ink Functionality [30 points]
- Let the user choose between at least 3 different ink colors
- Let the user turn the pen into a highlighter with at least 2 different colors
- Let the user enter selection mode, where their stylus selects strokes rather than drawing ink
- Turn the pen into an erase and support erase-by-point and erase-by-stroke mode
For the basic application, the simplest implementation here is fine.
It's OK to have 7 different buttons, one for each of the above
functionalities.
Data Requirements [5 points]
- Collect ink with timestamps on each point. Store the timestamps as extended properties on each stroke.
Recognition Functionality [20 points]
- Support ink deletion using the scratchout gesture
- Allow the user to select a group of strokes and then convert those strokes to text using the InkAnalyzer
Advanced Functionality [up to 15 points extra credit]
For additional credit, implement any or all of the following extensions
(fyi, implementing 1 well is enough to get full credit on this
assignment):
Sophisticated Controls
Take advantage of the sophisticated styling and data binding features
of XAML to provide slick drop-down radio button menus that change their
appearance according to what mode the button is in (a la the pen
selector in Windows Journal)
More Recognition
Support a broader range of recognition. Recognize shapes and
convert them into their 2D (or 3D) equivalents. Map other
gestures to commands.
Data Collection
Support an option to save the ink as an MIT XML document (the
format we discussed in class, described here). Allow the user to
input N symbols of a given class and save the ink as labeled
ink data.
Writeup [30 points]
Create a README document that contains the following:
- Your application's functionality, describing any Advanced Functionality in detail.
- An overview of your design
- Any known bugs in your application
- A discussion of what was the most challenging part of the assignment
What to submit
Submit all of your C#, XAML and Visual Studio project files (i.e.,
everything I need to run your code--and look at it), and your README
through the Sakai page.
Grading
Approximately 70% of your grade will be based on functionality.
30% will be based on your design and your writeup. This
breakdown is indicated by the points above. The extensions are
worth up to 15 points of extra credit (but the real reason to do them
is because they are fun!).