Analysis of “LADDER, a sketching language for user interface developers”
Comments Made Elsewhere:
Summary:
Created the LADDER language for describing a shape, the editing behaviors allowed, and how to display it when recognized. Language/specification is parsed and converted to Java code for use by primitive recognizer to become a domain-specific tool. Can specify with hard (must exist) and soft (not required) constraints. User study showed that geometric descriptions were more important that feature-based (i.e Rubine). Can’t use to describe objects with curves because they’re hard to define. Also, shape must be described using primitives only (not lots of detail).
Shapes can be declared like classes in OOP (abstract shapes, domain groups = packages). Predefined shapes exist (e.g. “shape”, “point”, “line”, etc.). Each shape has basic properties/attributes (”bounding box”, etc.). Rich syntax for constraints. Editing behaviors are defined by a trigger and what to do when triggered. For display, can show original, cleaned up, ideal strokes (no signal noise), or replace with picture. Can also define “vectors” or how two components of a shape are joined (e.g. two lines of a PolyLine).
For primitive recognition, a bottom-up approach that works to guarantee that the higher-level, domain shape recognizer only chooses one shape per primitive found. For domain shape recognition, a shape must satisfy a Jess rule, leaving unrecognized shapes to be determined on each new stroke. Editing gestures are triggered by double taps or click and holds. Discussion of the constraint solver that uses Mathematica functions for determining the ideal beautifed shape. Discussion on the code generation that occurs from the LADDER defintions.
Discussion:
From the listings in their related works, this is definitely not the first attempt at this. The beauty of LADDER appears to lie in its hierarchical structure, use of geometric features, and rich syntax. It really opens up the possibilities for anyone wanting to incorporate a sketch recognition system.
Can a designer specify what to do with an ambiguous shape/primitive found? Turn it a color or something until the system can later determine what it might be?
Since it’s obviously already setup to go from definition to code, what’s to keep a GUI from being created that producing a LADDER definition for you based on your drawing?
Obviously to scale to more detailed shapes, the LADDER language/specification will have to allow for grouping of soft constraints for each way a detail shape might be drawn (e.g. a stick figure drawn with a circle head and line segments for a body, versus one drawn with all circles and ellipses).
Comments(0)