Change file for SATIN http://guir.berkeley.edu/projects/satin -------------------------------------------------------------------------------- Changes in SATIN v2.3 (Feb 11, 2001) NOTABLE - Better gesture recognition. It seems that you can sometimes get better recognition from Rubine's recognizer if you simplify the stroke first (using the simplification algorithm included with SATIN). By default, simplification is turned off, but you can turn it on in the constructor to RubineInterpreter. Thanks to Michael Thomsen (who is visiting us this semester from Aarhus) for this idea. - Quill, the tool for designing gestures, has been updated. Cleaner user interface, more useful messages, the whole works. - This version should also fix any problems with SATIN reading in gesture files created by Quill. If you still encounter any date exception problems, the temporary workaround is to just edit the gesture file (*.gsa) and edit out any dates. MINOR CHANGES - Fixed edu.berkeley.guir.lib.awt.image.ImageLib so that the toGif() method will close() streams after converting an image to a GIF file. - In Satin's Sheet class, added methods setLeftCurrentStyle() and setRightCurrentStyle() to set how strokes look while being rendered. - Added two methods to Satin's GraphicalObject interface, initAfterAdd() and initAfterAddToSheet(). These methods are called after a GraphicalObject is added to a group or to a Sheet, respectively. - Added method getParentAbsXforms() to Satin's Clipboard class. This method lets you get the original transforms that a GraphicalObject had when it was copied or cut to the clipboard. - Modified PasteCommand to reflect the change above - Fixed InsertCommand's redo() method so that it correctly adds things. - Added PhantomMoveCommand, which lets you undo move commands. This is useful if you want to drag things around, but don't want to store the intermediate coordinates (ie, all you really care about are the start and end positions when saving info for undo). - MoveSelectedInterpreter has been modified to use PhantomMoveCommand. - Added to class SatinEvent a classification String which lets you specify what happened to the event. For example, it'd be nice to be able to say things like "this stroke event was recognized as a cut command". So we just store the String "Cut" here. - StandardGestureInterpreter has been modified to reflect the above change, setting the String value in SatinEvent accordingly (e.g. "Cut", "Paste", and so on). - HoldSelectInterpreter modified to check for relative distance instead of absolute distance. The problem was that HoldSelectInterpreter used to check the total length of a stroke and ignored the stroke if it was too long. However, it's really hard to hold a pen still, and sometimes the pen would move too far. So now we use relative distance, meaning that the pen has to be a certain distance from the original point before it gets ignored. - TapSelectInterpreter modified the same way as above. - GraphicalObjectWrapper, StickyGraphicalObjectWrapper, StickyStyleGraphicalObjectWrapper, StickyXYGraphicalObjectWrapper, and StickyZGraphicalObjectWrapper added. These are experimental classes to see if we can move from having sticky views to sticky graphical objects. -------------------------------------------------------------------------------- Changes in SATIN v2.2 (Nov 17, 2000) NOTABLE - A tutorial (and lots of new documentation) is now available at: http://guir.cs.berkeley.edu/projects/satin/tutorial/ - SATIN now ships with Quill, a tool for designing new gestures! - There's a new Rubine's Recognizer, thanks to my research colleague Chris Long MAJOR CHANGES - Now using a new Rubine's Recognizer. It's backwards compatible with old data files, but should be used with the new Quill tool for designing gestures. - Added class LineArrow as a basic arrow object for SATIN MINOR CHANGES - Fixed redo method for MacroCommand to work properly - TimedStroke now has method clearPoints() to remove all points - StrokeLib * Added method computeApproxDirection() to figure out about which way a TimedStroke is pointing (for arrowhead purposes) * Fixed a bug in StrokeLib.computeSpatialDistance() which would give incorrect values because of parentheses in wrong place * Fixed StrokeLib.hideCenterLengths() - StrokeAssembler * Changed so that auto-panning only occurs if you drag outside of the Sheet's bounds - StandardGestureInterpreter * Modified handleCut() so that cut gestures cut everything the gesture touches - StrokeEvent * Added method setStroke() to let you change a stroke when dispatching -------------------------------------------------------------------------------- Changes in SATIN v2.1 (Aug 11, 2000) - Initial Release