GGMouseEvent.mesa
Last edited by Bier on July 16, 1987 8:10:46 pm PDT
Contents: Once an event reaches the front of the slack-process queue, it is dispatched to one of the procedures in this module.
Pier, July 13, 1988 3:09:39 pm PDT
Kurlander July 13, 1986 3:09:20 pm PDT
Eisenman, October 1, 1987 9:51:57 am PDT
Bier, May 29, 1990 10:40:12 am PDT
DIRECTORY
GGBasicTypes, GGHistoryTypes, GGInterfaceTypes, GGModelTypes, GGUserInput, ImagerTransformation, Rope;
GGMouseEvent: CEDAR DEFINITIONS = BEGIN
BoundBox: TYPE = GGModelTypes.BoundBox;
Caret: TYPE = GGInterfaceTypes.Caret;
FeatureData: TYPE = GGInterfaceTypes.FeatureData;
GGData: TYPE = GGInterfaceTypes.GGData;
HistoryEvent: TYPE = GGHistoryTypes.HistoryEvent;
Point: TYPE = GGBasicTypes.Point;
Scene: TYPE = GGModelTypes.Scene;
SelectMode: TYPE = GGModelTypes.SelectMode;
Sequence: TYPE = GGModelTypes.Sequence;
Slice: TYPE = GGModelTypes.Slice;
SliceDescriptor: TYPE = GGModelTypes.SliceDescriptor;
Traj: TYPE = GGModelTypes.Traj;
TrajEnd: TYPE = GGModelTypes.TrajEnd;
TrajPartType: TYPE = GGModelTypes.TrajPartType;
UserInputProc: TYPE = GGUserInput.UserInputProc;
Vector: TYPE = GGBasicTypes.Vector;
MouseProc: TYPE = PROC [input: LIST OF REF ANY, ggData: GGData, worldPt: Point];
StartProc: TYPE = PROC [input: LIST OF REF ANY, ggData: GGData, worldPt: Point] RETURNS [success: BOOLTRUE];
SelectFeedbackProc: TYPE = PROC [feature: FeatureData, caretPt: Point, ggData: GGData];
InitializeFSM: PROC [ggData: GGData];
ResetMouseMachinery: PROC [ggData: GGData];
Called as part of Reviving Gargoyle after an ERROR window must be aborted. Restores the GGMouseEvent invariants.
HandleMouse: UserInputProc;
HandleMouseless: UserInputProc;
SelectFromFeature: PROC [ggData: GGData, testPoint: Point, point: Point, normal: Vector, feature: FeatureData, hitData: REF ANY];
Procedures for GGMouseEventImpl* communication.
In GGMouseEventImplA.SelectJoint
In GGMouseEventImplB.SetCaretAttractorEndpoint
StartSelect: StartProc;
DuringSelect: MouseProc;
EndSelect: MouseProc;
StartExtendSelect: StartProc; -- extends at a particular level
StartExtendSelection: StartProc; -- extends at the current level
DuringExtendSelection: MouseProc;
EndExtendSelection: MouseProc;
StartDeselect: StartProc;
DuringDeselect: MouseProc;
EndDeselect: MouseProc;
StartAddBezier: StartProc;
DuringBezierDrag: MouseProc;
EndBezierAdd: MouseProc;
AbortBezierAdd: PROC [input: LIST OF REF ANY, ggData: GGData, worldPt: Point];
ContinueBezierAdd: StartProc;
Used by GGMouseEventImplC
SaveSavedState: PROC [ggData: GGData];
UpdateSelectionsForAdd: PROC [scene: Scene, oldTraj, newTraj: Traj, trajEnd: TrajEnd] RETURNS [newNormal, newHot: Sequence];
UpdateCaretForAdd: PROC [caret: Caret, newOutline: Slice, newNormal: Sequence, worldPt: Point];
StartMotion: PROC [ggData: GGData, opName: Rope.ROPE, bagType: ATOM, worldPt: Point, saveState: BOOLTRUE, needAnchor: BOOLFALSE, backgroundOK: BOOLFALSE, newCurrent: BOOLTRUE] RETURNS [success: BOOLTRUE];
DragTheCaret: PROC [worldPt: Point, ggData: GGData, opName: Rope.ROPE] RETURNS [mapPoint: Point];
SafelyGetCaretTraj: PROC [caret: Caret] RETURNS [chair: SliceDescriptor, traj: Traj, jointNum: NAT];
TransformObjectsAfterMove: PROC [scene: Scene, transform: ImagerTransformation.Transformation, editConstraints: GGModelTypes.EditConstraints, history: HistoryEvent];
ContinueMotion: PROC [ggData: GGData, opName: Rope.ROPE, bagType: ATOM, worldPt: Point, startBox: BoundBox ← NIL] RETURNS [success: BOOLTRUE];
FinishAbort: PUBLIC PROC [ggData: GGData];
SetCaretAttractorEndpoint: PROC [ggData: GGData, mapPoint: Point, normal: Vector, testPoint: Point, feature: FeatureData, hitData: REF ANY];
Special Behaviors for "active" Gargoyle objects
SetStrokeColorRemote: PROC [ggData: GGData, sliceD: SliceDescriptor] RETURNS [doNormalBehavior: BOOLFALSE, done: BOOLFALSE];
SetFillColorRemote: PROC [ggData: GGData, sliceD: SliceDescriptor] RETURNS [doNormalBehavior: BOOLFALSE, done: BOOLFALSE];
END.