<> <> <> <> <<>> DIRECTORY Rope; G3dEdgeBlt: CEDAR DEFINITIONS ~ BEGIN <> ROPE: TYPE ~ Rope.ROPE; EdgeDesc: TYPE ~ RECORD [ val: INT32, -- current value for incrementation, byte address or value stepsLeft: WORD _ 0, -- number of increments remaining length: WORD _ 0, -- total number of increments to make hiccups: WORD _ 0, -- number of offsets (hiccups) to make lngthIncr: INT16 _ 0, -- amount to increment by hicIncr: INT16 _ 0, -- amount to offset at hiccup bias: INT16 _ 0, -- change to # of increments to first offset (for wizards) indirect: BOOL _ TRUE, -- incrementing addresses if TRUE, else values nextEdge: CARD16 _ 0 -- next edge if part of a chain of edges (index in sequence) ]; EdgeSequence: TYPE ~ RECORD [ length: CARDINAL _ 0, element: SEQUENCE maxLength: CARDINAL OF EdgeDesc]; EdgeBltOptions: TYPE ~ RECORD [ includeStart: BOOL _ TRUE, -- include start point includeEnd: BOOL _ TRUE -- include endpoint ]; defaultOptions: EdgeBltOptions ~ [TRUE, TRUE]; EdgeBltTable: TYPE ~ RECORD [ dst, src: EdgeDesc, options: EdgeBltOptions _ defaultOptions ]; Error: SIGNAL [code: ATOM, reason: ROPE]; <> <> Incr: PROC [edge: EdgeDesc, array: REF EdgeSequence _ NIL] RETURNS [EdgeDesc]; <> <<>> Blt: PROC [ebt: EdgeBltTable]; END.