<> <> <> <> <> <<>> DIRECTORY GGModelTypes, RefTab; GGHistoryTypesOpaque: CEDAR DEFINITIONS = BEGIN Scene: TYPE = GGModelTypes.Scene; Slice: TYPE = GGModelTypes.Slice; SliceParts: TYPE = GGModelTypes.SliceParts; <> ChangeType: TYPE = {changingprops, changingstate, capture}; -- to be expanded Change: TYPE = RECORD [ -- to be expanded SELECT kind: ChangeType FROM changingprops => [ op: ATOM, -- an atom, like $SetColor or $SetLineWidth, triggering this entry slice: Slice, -- the slice being changed parts: SliceParts, -- the slice parts being changed oldValue: REF -- the old value of the changing property ], changingstate => [ op: ATOM, -- an atom, like $SetScaleUnit scene: Scene, oldValue: REF -- the old value of the changing state variable ], capture => [ scene: Scene, virginData: LIST OF Slice, -- hiding place for data needed to undo a capture virginMap: RefTab.Ref -- key: virginSlice, value: oldSlice. Used to restore captured data to the original storage occupied when a capture occurs. ], ENDCASE ]; END.