Sunday, October 17, 2010

Reading #11 LADDER, a sketching language for user interface developers. (Hammond)

Comments on others

Jonathan

Summary

LADDER is a language that allows describing shapes in a high level almost natural language and then from this description automatically generates Sketch-based interfaces. These interfaces allow the user to draw shapes in a natural way and these shapes will be recognized, beautified and allow editing as described in LADDER language. The paper shows some related work but it seems there is nothing really alike LADDER to be formally compared; as a complete system is very innovative. Thus its contributions are very important to the field of sketch recognition, introducing the need of higher level languages to quickly generate sketch based interfaces and to reach a wider audience when it comes to the development of such interfaces.
LADDER does not intend to be a universal sketch recognizer builder; it is focused in diagram-like sketch interfaces with a fixed graphical grammar. A Shape in LADDER is defined by its components, constraints, aliases, editing behaviors and display methods. There are many features in LADDER that allow easy description of these attributes and methods: Hierarchical shape definition, abstract shapes and shape groups. This comes along with useful predefined shapes, constraints and display methods. A predefined shape beautification is also available based on the specified constraints using equation solving an ideal shape can be extracted out of a rough sketch.


(define shape OpenArrow
(description "An arrow with an open head")
(components
(Line shaft)
(Line head1)
(Line head2))
(constraints
(coincident shaft.p1 head1.p1)
(coincident shaft.p1 head2.p1)
(coincident head1.p1 head2.p1)
(equal-length head1 head2)
(acute-meet head1 shaft)
(acute-meet shaft head2))
(aliases
(Point head shaft.p1)
(Point tail shaft.p2))
(editing
( (trigger (click_hold_drag shaft))
(action
(translate this)
(set-cursor DRAG)
(show-handle MOVE tail head)))
( (trigger (click_hold_drag head))
(action
(rubber-band this head tail)
(show-handle MOVE head)
(set-cursor DRAG)))
( (trigger (click_hold_drag tail))
(action
(rubber-band this tail head)
(show-handle MOVE tail)
(set-cursor DRAG))))
(display (original-strokes)))

Discussion

By the time of this paper LADDER was still an early prototype considering its potential. The idea of a language able to describe shapes that is useful to automatically generate sketch recognizers to a particular domain is very powerful. The results and prototypes obtained with LADDER already show this power and also show that LADDER itself is a very good implementation of such idea. One of the usual tradeoffs in this kind of high level languages is between ease of use and scope of the language. As more complex domains are included either the language goes short of expressiveness or the language goes more complex. However since the scope of LADDER is limited the language is easy or natural enough to use by most developers and yet covers a very high range of its scope if not all.

No comments:

Post a Comment