DIRECTORY CD, CDBasics, CDOrient; CDApplications: CEDAR DEFINITIONS IMPORTS CDBasics, CDOrient = BEGIN PointToO: PROC [pos: CD.DesignPosition, aptr: CD.ApplicationPtr] RETURNS [BOOLEAN] = INLINE {RETURN [CDBasics.InsidePos[pos, ARectO[aptr]]]}; PointToI: PROC [pos: CD.DesignPosition, aptr: CD.ApplicationPtr] RETURNS [BOOLEAN]; ARectO: PROC [aptr: CD.ApplicationPtr] RETURNS [CD.DesignRect] = INLINE {RETURN [CDOrient.RectAt[aptr.location, aptr.ob.size, aptr.orientation]]}; ARectI: PROC [aptr: CD.ApplicationPtr] RETURNS [CD.DesignRect]; NewApplicationI: PROC [ob: CD.ObPtr, location: CD.DesignPosition_[0,0], orientation: CD.Orientation_0, selected: BOOLEAN _ FALSE, properties: CD.Properties_NIL] RETURNS [CD.ApplicationPtr]; Transform: PROC [aptr: CD.ApplicationPtr, cellRect: CD.DesignRect, transformation: CD.Orientation]; Translate: PROC [aptr: CD.ApplicationPtr, offset: CD.DesignPosition] = INLINE {aptr.location _ CDBasics.AddPoints[aptr.location, offset]}; BoundingRectO: PROC[list: CD.ApplicationList, selectedOnly: BOOLEAN_FALSE] RETURNS [CD.DesignRect]; BoundingRectI: PROC[list: CD.ApplicationList, selectedOnly: BOOLEAN_FALSE] RETURNS [CD.DesignRect]; AplicationAt: PROC [al: CD.ApplicationList, pos: CD.DesignPosition, selectedOnly: BOOL_FALSE] RETURNS [CD.ApplicationPtr]; TransformList: PROC[al: CD.ApplicationList, cellRect: CD.DesignRect, transformation: CD.Orientation]; TranslateList: PROC[al: CD.ApplicationList, offset: CD.DesignPosition]; DeSelectList: PROC [list: CD.ApplicationList]; AppendToList: PROC [app, to: CD.ApplicationList] RETURNS [CD.ApplicationList]; SplitPointed: PROC [from: CD.ApplicationList, pos: CD.DesignPosition] RETURNS [pointed, others: CD.ApplicationList]; SplitSelected: PROC [from: CD.ApplicationList] RETURNS [selected, others: CD.ApplicationList]; OnlySelected: PROC[al: CD.ApplicationList] RETURNS [selected: CD.ApplicationList]; CopyList: PROC[al: CD.ApplicationList] RETURNS [CD.ApplicationList]; ComposedCopy: PROC[al: CD.ApplicationList, cellPos, cellSize: CD.DesignPosition, cellOrient: CD.Orientation] RETURNS [CD.ApplicationList]; DeComposedCopy: PROC[al: CD.ApplicationList, cellPos, cellSize: CD.DesignPosition, cellOrient: CD.Orientation] RETURNS [CD.ApplicationList]; END. ŽCDApplications.mesa (A ChipNDale module) Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, May 12, 1983 12:22 pm last edited by Christian Jacobi, April 15, 1985 4:04:33 pm PST --Procedures with vanilla stuff around applications --be carefull, ApplicationList's are lists of pointers, distinguish between: --procedures which modify the application list, from procedures which don't --procedures which modify the applications pointed to, from procedures which don't --procedures which modify an application list, from procedures which modify the applications --procedures around one application --returns "pos points to the application aptr", using its virtual coordinates --returns "pos points to the application aptr", using its virtual coordinates --interrest rect --creates a new application, does neither draw nor include it into any world --modifies location such that interest-rect is at original location --performs "transformation" to "aptr"; the transformation occurs to the rect "cellRect". --"cellRect" and "aptr" in the same coordinate system --transformation group NOT abelsch --translates aptr^ by offset; aptr, offset in same coordinate system --procedures inspecting an application list --real coordinates --uses outer area's --real coordinates --uses interest area's --returns a reference to an application at location pos (or NIL if there is none) --uses interest area's --procedures which modify the applications referenced by a list --composes the lists "app" and "to" --the original list "to" might be destroyed and must be replaced by the returned list --the original list "app" is not touched --procedures which handle the application list but don't modify the applications --copyes the pointed application references from "from" to "pointed" --finds maximal 1 pointed application --copyes the non-pointed application references from "from" to "others" --does not make copies of the real applications --copyes the selected application references from "from" to "selected" --copyes the non-selected application references from "from" to "others" --returns new lists but same applications --returns new list but same applications --procedures which create a new application list, with new applications --creates a new list with new applications --makes a copy of "al" with world coordinates assumed that "al" has cell coordinates --cellSize in cell coordinates, cellPos in world cordinates --the new list points to new applications --makes a copy of "al" with cell coordinates assumed al has world coordinates --cellSize in cell coordinates --cellPos, cellOrient in world coordinates --the new list points to new applications Ê´˜šœ+™+Jšœ Ïmœ7™BJšœ+™+Jšœ>™>J˜—Jšœ3™3J˜šÏk ˜ Jšžœ˜Jšœ ˜ J˜ J˜—šÏnœžœž œ˜"Jšžœ˜—Jšž˜J˜JšœL™LJšœK™KJšœR™RJšœ\™\J˜J˜Jšœ#™#J˜š Ÿœžœžœžœžœžœ˜UJšœM™MJšžœžœ*˜8J˜—š Ÿœžœžœžœžœžœ˜SJšœM™MJ˜—J˜š Ÿœžœžœžœžœ˜@JšžœžœC˜QJ˜—š Ÿœžœžœžœžœ ˜?Jšœ™J˜—šŸœžœžœ˜%Jšœ žœ$žœ˜AJš œ žœžœžœ žœžœžœ˜WJšœL™LJšœC™CJ˜—J˜šŸ œžœžœ˜*Jšœ žœžœ˜9JšœX™XJšœ5™5Jšœ"™"J˜—šŸ œžœžœžœ˜FJšœD™DJšžœ=˜CJ˜J˜—Jšœ+™+J˜š Ÿ œžœžœ žœžœ˜KJšžœžœ ˜Jšœ™J™J™—š Ÿ œžœžœ žœžœ˜KJšžœžœ ˜Jšœ™J™—J™šŸ œžœžœžœžœžœžœžœ˜zJšœQ™QJ™J˜—™J˜—Jšœ?™?J˜šŸ œžœžœ˜,Jšœ žœžœ˜9J˜—JšŸ œžœžœžœ˜GJ˜JšŸ œžœžœ˜.J˜š Ÿ œžœ žœžœžœ˜NJšœ#™#JšœU™UJšœ)™)J˜—J™JšœP™PJ˜š Ÿ œžœžœžœžœžœ˜tJšœD™DJ™%JšœG™GJšœ/™/—J™š Ÿ œžœžœžœžœ˜^JšœF™FJšœH™HJšœ)™)—J™š Ÿ œžœžœžœ žœ˜RJšœ(™(J˜—JšœG™GJ˜š Ÿœžœžœžœžœ˜DJšœ*™*J˜—šŸ œžœžœ˜+Jš œžœžœžœžœ˜_JšœT™TJšœ;™;Jšœ)™)J˜—šŸœžœžœ˜-Jš œžœžœžœžœ˜_JšœM™MJšœ™Jšœ*™*Jšœ)™)J˜—Jšžœ˜—…—ì.