480 likes | 556 Views
Jason Hong and James Landay University of California Berkeley Group for User Interface Research. Motivation. Sketching is useful in many settings. Survey of Informal Ink Apps. Whiteboard Tivoli Flatland. Creative / Design SILK Music Notepad Knight Elec. Cocktail Napkin Teddy
E N D
Jason Hong and James Landay University of California Berkeley Group for User Interface Research
Motivation • Sketching is useful in many settings
Survey of Informal Ink Apps • Whiteboard • Tivoli • Flatland • Creative / Design • SILK • Music Notepad • Knight • Elec. Cocktail Napkin • Teddy • PatchWork • Capture • ZenPad • NotePals • Dynomite • FiloChat • Others • Pegasus • XLibris • PerSketch • Kramer's Patches
Example - Elec. Cocktail Napkin Gross and Do (UIST96)
Example - Flatland Igarashi, Edwards, LaMarca, and Mynatt (AVI2000)
Common Features • Pen input as ink or gesture • Stroke is pen input from dragging • Ink is a stroke that stays on-screen • Gesture is a stroke that activates a command • Recognize ink as objects • Transformation / clean-up of ink • Immediate / deferred processing of ink erase me
Common Features • Contain objects in addition to ink • Selecting and moving objects • Grouping of objects • Layering of objects
Related Work • Commercial Software Support • Newton OS • PenPoint • Microsoft Windows for Pen Computing • Windows CE • Palm OS • Problems • Form-based and handwriting interfaces • Not easily extensible for building informal ink apps
Related Work • Research Software Support • ArtKit (Henry et. al. 1990) • Garnet Pen Int. (Landay et. al. 1993) • Patches (Kramer, 1994) • OOPS (Mankoff et. al. 2000) • Problems • Need more reusable libraries for handling and processing strokes • Need more extensibility so lots of kinds of informal ink apps can be built
Problems • Software infrastructure support for informal ink apps rudimentary • Pen-based interaction techniques difficult to implement • Similar to GUI development in 1980s • Lots of applications + interaction techniques • Need cohesive frameworks + toolkits
Goals of SATIN • Toolkit support for informal ink apps • Provide reusable mechanisms for handling + processing strokes • Separate mechanism from policy • Be extensible for new kinds of apps • Reusable widgets for pens • Distribute this toolkit for use
Overview • Motivation • Survey of Informal Ink Applications • Two Applications Built with SATIN • SATIN Architecture Overview • Conclusions
Overview • Motivation • Survey of Informal Ink Applications • Two Applications Built with SATIN • SATIN Architecture Overview • Conclusions
Architecture Overview Application SATIN relies on Java2D and Swing Applications use SATIN, can use Java2D and Swing SATIN Swing Java2D Java Core Classes Java Virtual Machine
Architecture Overview SATIN can be broken into twelve concepts Recognizers Views Transitions Interpreters Scenegraph Rendering Stroke Libraries Events Notification Widgets Command Clipboard
Recognizers 0.86 0.65 0.63 Cut Copy Undo • Problem - many recognition techniques • Recognizers let new recognition technologies be plugged into SATIN • Given a stroke, return n-best list • No actions taken • SATIN comes with Rubine's Recognizer (implemented by Chris Long) Recognizer
Interpreters erase me • Problem – many ways of handling strokes • Interpreters let new ways of handling strokes be plugged into SATIN • e.g. straighten a line • e.g. issue a command Ink Interpreter Gesture Interpreter
Interpreters and Recognizers 0.86 0.65 0.63 Cut Copy Undo • Decoupled recognition (Recognizers) from actions (Interpreters) • Interpreters can use recognizers • Both are modules that can be plugged into apps built with SATIN Interpreter Recognizer Cut
Multi-Interpreters • Problem – Hard to combine and extend existing interpreters • Multi-Interpreters are a collection of interpreters + dispatch policy • e.g. dispatch to chain of interpreters • e.g. disable some interpreters on context … Default Multi Interpreter Intrp A Intrp B Intrp Z … Semantic Zoom Multi Interpreter Intrp A Intrp B Intrp Z
Scenegraph Sheet Denim Label (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke Sheet Denim Label (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke …
Stroke Dispatching • Needed an approach that enabled: • Individual objects handle strokes on own • Priority to gestures over ink • Default policy is top-down dispatch • Process stroke with its gesture interpreter • Re-dispatch stroke to one of its children • Process stroke with its ink interpreter • Handle stroke in object itself
Stroke Dispatching Sheet Denim Label (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke
Stroke Dispatching • 1. Process stroke with gesture interpreter Sheet Sheet Denim Label (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke … Default Multi Interpreter Hold Select Intrp Standard Gesture Intrp
Stroke Dispatching Sheet Denim Label (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke
Stroke Dispatching • 1. Process stroke with gesture interpreter Sheet Sheet Denim Label (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke … Default Multi Interpreter Hold Select Intrp Standard Gesture Intrp
Stroke Dispatching • 2. Re-dispatch stroke to children Sheet Denim Label (Patch) Denim Sketch (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke
Stroke Dispatching • 1. Process stroke with gesture interpreter Sheet Denim Label (Patch) Denim Sketch (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke
Stroke Dispatching • 2. Re-dispatch stroke to children Sheet Denim Label (Patch) Denim Sketch (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke
Stroke Dispatching • 3. Process stroke with ink interpreter Sheet Denim Label (Patch) Denim Sketch (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke Phrase Interpreter
Stroke Dispatching • 4. Handle stroke in object Sheet Denim Label (Patch) Denim Sketch (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke
Stroke Dispatching Sheet Denim Label (Patch) Denim Sketch (Patch) Phrase (Patch) Timed Stroke
Reusable Stroke Libraries Straighten Merge
Reusable Stroke Libraries Split Simplify
Widgets • Pie Menus • Pen PLAF • Swing "Pluggable Look And Feel" • Larger and clickable sliders • Single-click file opener
Conclusions • SATIN - Java toolkit for informal ink apps • Extensible thru Recognizers, Interpreters, and Multi-Interpreters • Separates mechanism from policy for strokes • Offers reusable libraries for manipulating ink • Reusable widgets for pens
Download SATIN Download SATIN at http://guir.berkeley.edu/projects/satin http://guir.berkeley.edu
Survey of Informal Ink Apps • Elec. Cocktail Napkin • Flatland • Pegasus • FiloChat • Zenpad • PerSketch • Teddy • PatchWork • XLibris • NotePals • Dynomite • SILK • Tivoli • Kramer's Patches • Music Notepad • Knight
Architecture Overview Recognizers Interpreters Scenegraph Stroke Libraries Widgets Views SATIN can be broken into twelve concepts • Rendering • Transitions • Clipboard • Notifications • Commands • Events