Day by day implementation needs of Gargoyle. Projects discussed May 4, 1988 Clusters Like Outlines Communication between children Fill Colors of parents and children Children's children. Spline Performance TextToSplines makes lots Bottleneck Performance General Improving Imager Object Cache. Multi-line segment cache. More visible painting (screen to chunking). Using bitmaps for scrolling (in BufferedRefresh). Imager.Object indirection. Multi-Page Gargoyle Interactive Color Maple board? New Imager contexts. Background in full color. Everything else on overlay. Color Indirection. Scripts Produce a new set of scripts to test: 1) The correctness of all features. 2) The performance of critical features. Important OnGoing Projects MergeIPEditable should do something sensible with all of Interpress 3.0, including Line Ends. Parity Fill. MaskBits. DrawBits. Clipping. CORRECT operator. -- Bier, November 30, 1986 Get rid of all dependencies of GGEventImplB on AtomButtons by moving AtomButtons calls to GGStateImpl. Filled boxes, filled with colors, Tioga text, or IP slices This project would unify the Interpress, and Box slices into a single slice that could be filled with a variety of different media. Text filling of the Box slice class is already implemented. Gargoyle performance on large scenes. Easy ways to do common things: arrowheads, ... Shape libraries ?? An optimized refresh queue. Currently, we have a "SlackProcess" package that manages a queue of input events. Some of these input events are optional and can be ignored when Gargoyle refresh is falling behind. The proposal is to have a second queue, of refresh events, when some refresh events can be ignored (even though the user actions that generated them could not be ignored). Recent good ideas from graphic artists. October 15, 1988 Unambiguous unnamed viewers Link opening/closing/destroying of panel/picture/history viewers Linked viewers with a single icon Implement IP heuristic for closed/filled outlines User operation to put a mark in the history list Recent good ideas from graphic artists. October 12, 1990 Tools for finding out the color of a pixel (e.g., produced by a wash). Box creation sized by selecting numbers. Select multiple numbers at once to add to the Radius alignment menu. High Priority -- Embarrassing Bugs When you do Clear/Get/Restore and the picture is iconic, the backing maps are not invalidated and the old picture appears if you grow the icon. Fix by changing the call to ViewerOps.PaintViewer in GGWindowImpl.RestoreScreenAndInvariants to call into GGRefresh instead. Let GGRefresh do the work formerly done by implication by the paint proc. Requires and interface change. KAP March 24, 1989 When old files are read in, the alignment menus come up backwards. -- Bier, April 26, 1988 I'll fix this. -- Bier, August 19, 1988 The attractor feedback appears to over-write the selection feedback in some cases. -- ??? before August 19, 1988. Shortfalls from the cluster cataclysm Why does DropAnchor make EDITED=TRUE? Check with Eric. Color washed clusters may not lock down the color ?? reported by Wallgren Anchor not in scripted state or file state. Walking selections at top level unimplemented. Make Shrink/Grow selection work for joints/segs/cps/ Implement BSorDeleteCaretSeg Deficiencies: all or nothing refresh. Frozen unimplemented. Unmake holes from an outline that is in a cluster loses hotness because GGOutline.SaveSelectionsInOutlineAllClasses only works for top level outlines. High Priority -- Important Features Implement a class for MaskPixel calls, so that they can be given a color. -- Murphy, August 1988. DONE (partly, not a class) by Bier, ~ December 1, 1988. Making separations automatically. -- Wallgren, May 10, 1988 We would like to be able to automatically make separations (e.g., for T-shirts) that use other primaries besides cyan, magenta, yellow. Having chosen a set of printing colors, it would be handy to be able to specify colors that should be made of particular primaries (e.g., solid pantone red, or a mix of pantone red and pantone yellow). Set/Show Horizontal -- Bier, Before 1988 Allowing the user to redefine "horizontal" to be some arbitrary slope would allow the slope menus to be re-used on rotated images. Simple arrowheads for straight line segments. Wallgren. January 28, 1987 Arrowheads. Compute line/spline intersections. -- Bier, May 87. A SelectWithBox command that selects every part (joint, control point, segment) that is completely contained in the box. This could be used to select 2 or more joints that occupy the same point. -- Kessler, February 5, 1987, Wallgren, April 88. Box Select should extend the current selection. -- Bier, April 1986 Gargoyle should report the number of objects that are in the scene (after Get, Merge, Save, and Store) and should report the number of objects selected after select and extend select. An Imager.Object cache of single segment trajectories. -- Bier, June 87 Optical scaling. -- Bier, November 8, 1987 Provide a mode. If optical scaling is ON, both the scale in the Transform menu and interactive scale would scale line widths as well as centerline geometry. What to do with skewing is a tricky question. Command Line operators, GGApplyScript that applies a named script to named files and GGFromIP that creates a set of gargoyle files from a set of name interpress files. -- Wallgren, August 1988 MatchSelectedRGB should capture the input focus, so that it can be immediately followed by coloring operations that use a color palette. -- Wallgren, August 1988. Integrate Eisenman's DrawCurve function. The Adobe style stuff is hard to use. -- Wallgren, August 1988. Implement the box selection commands indicated below. -- ?? before August 19, 1988 Single Left Middle Right Plain: SelectJoint SelectSegment ExtendSelect Shift: CaretPos AddLine AddBezier Ctrl: Drag Rotate Scale Ctrl-Shift: DeselectJoint DeselectSegment (ExtendDesel) Double Left Middle Right Plain: SelectTopLevl SelectTraj SelectWithBox Shift: NoOp AddLine AddBox Ctrl: CopyAndDrag NoOp Skew Ctrl-Shift: DeseleTopLevl DeselectTraj NoOp => DeselectWithBox Meta Left Middle Right Plain: ExtSelJoint ExtSelSegment ExtendSelect => ExtSelPartsBox Meta Double Left Middle Right Plain: ExtSelTopLevl ExtSelTraj SelectWithBox => ExtSelWithBox High Priority -- Code Structuring GGSequence.NextSegment and GGSlice.NextSegment should be merged (and do the right thing regardless of how the SegGenerator was formed!) -- Kurlander, August 6, 1987 High Priority -- Performance Many event routines that process the current selection don't check for NoSelections to avoid extra refresh calls. They should. -- ???, before August 19, 1988 Many event routines that process a subset based on type (e.g. $Text) of the current selection don't specify the type when calling GGSelect.SelectedSlices. They should. -- ???, before August 19, 1988 Put a Delete benchmark in GGPerformance. Implement fast gravity for conics using algorithms suggested by Vaugh Pratt. -- bier, January 15, 1988 GGTrajImpl.Filein should be fixed to use something faster than GGTrajImpl.AddSegment, since a large amount of time is being spent translating segments. Make the color display work as fast as the Mac II. -- Wallgren, August 1988 Easy Have the viewer show something less obnoxious than "THIS VIEWER NO PICTURE". -- Wallgren, August 1988 In the Units Menu, add a 0.1 inch button. -- Wallgren, April 1988. In the Units Menu, allow architectural scale, such as 1 foot = 1/4 inch, where the alignment menus are then thought of as feet by the designer, but represent fractions of 1/4 inch internally. Add a grid slice class. -- Bier, 1986 Update GGModelTypes.SceneObj to refer to GGSceneType. Boxes should draw themselves as a single MaskStroke if all strokes are the same. -- Bier, April 1987. Mirror and Scale Menu Ops should use the bounding box centerlines when there is no anchor. Add ButtEnd, MiterEnd, RoundEnd, SquareJoint, BevelJoint, RoundJoint buttons to the Stroke Menu. Moderate Priority -- Bugs Selection cycling is lost after Extend selection. KAP. October 15, 1988 SelectEntireSlice should SetExtendMode[ggData, slice], but doesn't have ggData. Save/Restore anchor orientation in GG file. MergeIPEditable on user-defined fonts doesn't work. Typing text sometimes shows control point feedback. It shouldn't. Bier, March 3, 1987. Replace Segment only works for lines and Bezier segments. The other curve types just move a control point to the caret. -- Stone AreaSelectNewWithDelete deletes more than it has to. You click Save, then the [Edited] status does not change to [Saving], you click Store then the [Edited] status never changes. Beach, 22 Jan 87 Mitered joint bound boxes are wrong. Adding a joint next to a hot joint makes the joint cold. AtomButtons.BuildEnumTypeSelection doesn't fail gracefully when the button name specified in the default field is not in also in the buttonNames argument. resulted in Viewer LockUp! convention that the first name in the buttonNames list is also the default? -- kurlander, 24 Aug 87 Moderate Priority -- Features Show the default font and color and allow the user to set it using the same operations as for regular font and color setting. Have SelectUnseeableObjects do a better job by using zero area code from SVPolygon2dImpl.SignedArea Separator tool, like Adobe Illustrator. -- August 25, 1988 Allow a "pixel picking" command that identifies the color underneath the cursor. -- Wallgren, August 1988 Provide a "perspective" transformation command, that allows objects to be transformed in a non-affine manner. -- Wallgren, August 1988. Have viewers and control panels open and close as a unit. -- Wallgren, August 1988 A MergeAll button that merges objects to the bottom of the overlap order, instead of the top. -- Wallgren, August 1988. A way to round the corners of Box slices. -- Wallgren, August 1988. Wrap Text onto arcs. -- Wallgren, August 1988 Wrap Text onto arbitrary curves. -- Wallgren, April 88 Washes that follow arbitrary curves. -- Wallgren, August 1988 A "Cut" operation which adds a joint wherever a special object (perhaps selected last) intersects the selected objects, and deletes that joint. This will lead to an implementation for the Interpress clipping operation. Add a page number option to the Interpress Menu to read a particular page of a multi-page master (just read in page 1 to start with). Store this page number in the .gargoyle file. Multi-page gargoyle files. -- Wallgren, Aug 87. Allow fractions in buttons, e.g. "1/18" to be added by the user. -- Before, before June 87 Add single step replay capability to session logs. The ability to change the hue of a set of selected objects, while leaving the saturation and value of each individual object as it is. Also, the ability to rotate the hue relative to its current value rather than setting it to a particular hue. Wallgren and Bier, Aug. 87. Drop shadows that don't optically scale. -- Wallgren, Aug 87. Group membership should not be copied. -- Wallgren, Aug 87. Reinstitute thicker-lines feedback for selected segments. -- Kurlander, Aug. 87. A DunnSnap button. Wallgren. July 10, 1987. A Print button. Wallgren. July 10, 1987. Compute the intersection of alignment lines with trajectories (i.e. all Segment Classes). During rotate, caret should stick to selected point and track the circle of rotation. [I will automatically draw the circle of rotation. That is more general. Bier] --Atkinson, before November 30, 1986 Make filled outlines appear not filled during dragging. This will allow some performance optimizations in GGRefresh. Rotate-Drag operation (combines both). Show the origin of arcs (for Eric). Automatic alignments are a new type of alignment, not triggered by hot objects. Make GGEvent.Make(All)Hot incrementally update trigger bags for slices as well as sequences. Improve the Gargoyle FSM so the during part of adding and dragging are optional -- Bier, November 30, 1986. CloseWithSegment should not be able to create illegal trajectories. -- Bier Add functionality to make it possible to select an opaque fence (or a slice) by clicking in its interior. Objects actually in the interior would take selection precedence. Selecting thru holes would get the object(s) underneath. Could not select objects filled with "none" -- Beach Make a way to select the "interior" of an IPSlice when not near an edge -- Wyatt Extending selection to large number of circles slows way down. This is because every circle is redrawn twice (DuringExtend and EndExtend) for every extend operation. Can this be done incrementally when extending, since you know it only adds selections. [Will be done when we add a backing bitMap for selection feedback] -- Beach Use the NEXT/ShNEXT key to move the (latest) selection around an object. Move to next joint/previous joint, etc. Help solve ambiguity problems when joints overlap. [Good idea. Bier] --Atkinson Moderate Priority -- Code Structuring Move FeatureData definition to GGInterfaceTypes. Bier, March 11, 1987 Moderate Priority -- Performance Implement a ContinueCaretPos that works like ContinueAdd. Dragging a joint should be fast for unfilled, closed, outlines. Low Priority Tiling pattern generation facility, like Adobe Illustrator. -- Bier, August 25, 1988 Symmetry operations and alignment lines. -- Bier, before June, 1987 Have the Help menu remember the last number used as a argument to a button (such as 15 degrees, or a scale factor of 2) and use this number until another number is specified. -- Wallgren, August 19, 1988 Provide operations that derive a perspective 3D view from several projections, using simple rules. -- Wallgren, April 26, 1988 Store entire GG state including hot objects in .gargoyle files. -- Pier, mid 1987. An automatic corner-rounding operation. -- Steve Wallgren, June 26, 1987 Single-point trajectories. Absolute Coordinates as alignment triggers. Distinguish between Deselect where not selected is an ERROR, and EnsureNotSelected, where it is OK. Have a keystroke to move the caret to the midpoint of the currently selected segment --Atkinson Make Cntrl/ShSpace kill gravity only for the current operation, not permanently. -- Wyatt Cyclic B-Splines don't appear to close properly. -- Crow Closed, smooth curves (cyclic splines) probably don't work, right? We need them for Griffin compatibility -- Stone Trying different curve formulations repeatedly on the same curve makes a more complicated curve. -- Crow Close should work on all selected trajectories, not just the chair. -- Bier Consolidate GGVector and Vector2. -- Bier On circles and conics, once you click Conic or Arc on the menu, select the control point, since moving that point seems to be the most common thing one wants to do next. -- Stone Document the Gargoyle action atoms so users can put them in their own tip tables. -- Beach Integrated 3D (for Eric). -- Bier, December 2, 1986 The gravity value graphics button now moves right for increasing values of gravity and left for decreasing values of gravity. Well then, how about a better graphic? Maybe even just curving the left wall of the button would indicate which way the ``surface'' was. Maybe you need a graphic of a tractor beam coming out of the left wall to indicate which way the ``suck'' is? -- PeterKessler, 31 Aug 87 Done Make a debugging typescript. Patch selection mechanism. Implement Translational alignments for dragging objects. Implement a new kind of selection called "Hot" selection, where Hot objects trigger alignment lines. Fix "Already on Overlay" bug. Fix the Refresh problems caused by alignment lines. Implement ShowPoints/HidePoints (and fix joint display in general) Deleting an object must remove it from its touching constraints. Remove objects from the Hot List when they are deleted (be careful with sequences). (I think I did this.) Circle intersection bug. Done: August 19, 1985 Slopes from Scene/Numbers. Let the user add a slope of interest by pointing to a segment. Done: August 19, 1985 Radius from Scene. Done: August 19, 1985 Scaling. Done: August 19, 1985 Merge Groups. Implement this routine in GGTouch. Done: August 19, 1985 * Write User's Manual. Done: August 20, 1985 * Fix session log to playback REALs and NATs. Done: August 20, 1985 * Turn refresh off (for impatient users). Especially useful for SessionLog Playback. Done: August 21, 1985 Joints Hidden by default. Done: August 20, 1985 TIP Table Menu (make a pop up menu which displays the TIP table as a form of on-line documentation). Done: August 19, 1985 seq.parts.rest in GGSelect.SelectSequence. Done: August 21, 1985 5:42:50 pm PDT Surpress the appearance of joints and carets in interpress files. DONE. KAP December 6, 1985 Disallow dragging objects to trigger alignment lines. Done Bier before January 6, 1986. Prettier Anchors. Done. before January 6, 1986. Delete for sequences. Done, Bier January 28, 1986 The elusive bug where an invisible vertical line becomes gravity sensitive? Record lastCaret/currentCaret coordinates in inches. -- Done Bier February 4, 1986 Implement Rotational Alignments (Gravity on angles) This may not be necessary at all. -- not necessary Bier February 4, 1986 11:30:11 am PST Write GGObjectsImpl.ClosedCombineSequences (like OpenCombineSequences). -- Was done when the new Sequence type was implemented (noted Bier February 4, 1986) Solve the page-boundary problem when alignment lines are drawn to Interpress contexts. -- Done last week. Bier February 4, 1986. Implement priority ordering. -- Done by KAP weeks ago February 4, 1986 Bounding Boxes. Use bounding boxes more often for refresh. Done by KAP last month February 4, 1986. Colinear line alignment lines. -- Not needed (noted Bier February 4, 1986) Space is gravity suppress. Done (crudely) Anchor is gravity sensitive. Done. Throw out the "multiple entities selected kludge". Text Select Feedback. -- Bier, February 18, 1986 Segment boundboxes allow for control points. -- Bier Fix the 9999 bug in GGGravityImpl -- Bier Pass a hint to the ClosestPointProc (SegmentClass) so it can quickly rule itself out. -- Bier Add extraPoints: LIST OF Joint to TYPE Cluster, TYPE Traj. -- Bier, February 20, 1986 Make GGGravity.FeatureData be a variant record. -- DONE, Before June 20, 1986 Faster Arcs. -- Done June 20, 1986, Bier Implement angle operations. Before June 20, 1986, DJK and Pier Fix the aliasing problem (alignment lines at 45 degrees don't always appear). Before June 20, 1986. Pier and Bier. Implement Weld. Before June 20, 1986. Bier Slices should be given the option of placing the caret on a vertex after segment select, just the way trajectories do. DONE before June 29, 1986, KAP Add the angle line type to feature types for consistency. DONE before June 29, 1986, KAP Change angle defaults to 90, 60, 45, 30, 0, -30 -45, -60 -90 DONE, KAP When you Get! or Add! a value which is already on the list, select it. DONE, KAP Angle alignment lines should say "Caret on angle line" when they are hit. DONE, KAP force selection of: newly welded trajectories, newly closed trajectories. DONE, KAP Feedback to show what's hot. DONE FOR JOINTS. Bug: once a segment is hot, a joint cannot be made hot in the same trajectory, NOT in the same segment. DONE make WeldToSelf => A special close operation which doesn't add any segments. It checks to see if the two ends of the selected open trajectory are coincident, and then throws one out and makes the role be fence. This will require implementing the procedure GGObjects.Weld for the case when fixed and moving are the same traj. DONE Implement the Get command in addition to Merge. DONE Implement the Reset command. DONE I like to distinguish between angles and slopes. Slopes are always positive. Angles, being the difference between two slopes can be either. I still get negative slopes when I measure DONE The caret moves to the Weld point on a Weld operation. DONE Implement color to color tool for copying colors around. DONE Fast box select: The area select menu is better than nothing, but everyone will soon wish that there was a rubberbanding box, as in PreView. DONE. use Plain Double Right for SelectWithBox Windows should be initialized (all alignments off, heuristics in a known state), as part of the OpenLog, PlayLog, and FastPlay commands (for Eric to do). -- DONE GGWindow.Restore... should implement the sceneBag case (for Eric). -- DONE Alignments off implemented at the GGAlign level. -- DONE IMPLEMENTED BEZIERS AND NATURAL SPLINES. -- DONE RunsFromOutline bombs when the run is the whole trajectory. -- DONE We still don't have a Disk Segment to Circle Slice Converter. NOT NEEDED filin/fileout is badly broken. Check everything. -- DONE. New incompatible formats Holes adjust their trajs to anti-clockwise -- DONE Text is still too slow. We need a fast case for when text is added to the topmost overlap order. -- DONE make SlowPaint not paint redundantly -- DONE Make sure session logs don't say they're done until they are. Make them flush the queue on abort. -- Done, Bier, July 7, 1986 GGSelect.SaveSelection... should store control points too (for Eric). DONE. Bier, July 7, 1986. Fix interactive add (et. al.) to have Continue procs which keep the screen from flashing alignment objects (for Eric). Done. July 8, 1986. Bier. Fix the delete refresh bug. DONE. Bier, July 8, 1986. Implement Copy Drag. Done. Objects with holes. Done. Make regular polygons available as primitives. Done. Use the color tool. Done. Get rid of GGRefresh.DrawSegArray's. Done. Modify GGButtons to not use Menus. Done. Delete Slope/Delete Radius. -- Remove a Slope/Radius button. Done. Selection Modes. (e.g. what level do you extend to). Done. Bullet Proof against obsolete sequences (for Eric). Done. Fix FSM so that dragging the mouse out of the GG viewer before completing an operation causes an ABORT when the user returns to the GG viewer (for Eric). Done. Put backslashes in text strings before fileout (or find a proc that already does). DONE User message if ColorTool or Combiner are not loaded when ColorToolFill or Combine is invoked. DONE Include control points in Clockwise test, so that holes made of two arcs will always work properly. DONE Segment split: Add a new joint in the middle of an existing segment. Start with a Split entry in the Hierarchy menu; later this should probably be bound to a mouse button. Reasonable behaviour for straight segments is easy. Other segments will be more difficult. DONE UNDELETE. One level undelete DONE. Fix the fast clicks misinterpreted as double clicks problem. Experiment with TIP table. DONE Extend selection of control points not working. DONE Dynamic recalculation of wrap direction of holes. DONE New extend selection scheme using META key. DONE Bounding Box Selection of Text should use the smaller bound box. DONE Revised scheme for dead simple Undelete. DONE little fixups to user interface. DONE eliminate interactive AddCircle; move to shapes menu. DONE Add Box to shapes menu. DONE changed name and sex of QuickPaint to ShowColors everywhere in code. DONE New kind of META extensions plus retaining old kind of interTrajectory extensions. DONE add GG state to filin/fileout. Done. Fix spaces in Session Log text strings before fileout (or find a proc that already does). Done. Store slopes, radii, angles, and line distances in .gargoyle files. DONE Make sure TopLevelSelect doesn't bomb when you are over a control point. DONE Add an accelerator for MakeAllCold. DONE Make the anchor gravity active. DONE (but not real clean) The Gargoyle icon needs a border around it, or the desktop background. DONE. The Gargoyle tutorial refers to [Cyan] instead of the CedarChest version. DONE. In [Pop Up Menus], the phrase "If the first click is made with the right mouse button" should clariify that it refers to clicking over the menu name and not any object in the menu! DONE. Close should not add zero length segments. DONE. Find window.log DONE The stationary parts of boxes and circles should trigger alignments while other parts move. DONE. change keep to 2 on gargoyle files. DONE The Hierarchy menu should be updated to mention CTRL-W on the Weld entry. DONE Everything should be able to be typed in and read out: FontNames, linewidths, colors. DONE Change text so that corners generate alignment lines. DONE Change boxes so that making an edge hot makes the corresponding corners hot. DONE Change hit testing of slices to take a slice Descriptor in sliceClosestXXX instead of a slice and only test on the parts in the descriptor. DONE Gravity Bug: Square from shapes memory has ghost segment parallel to the left edge FIXED Draw Control Points of Slices separately. DONE Change outline field to parent in trajectory data types. DONE. Move TYPE SegmentGenerator and SequenceGenerator and JointGenerator to GGSequence. DONE. Fix the "ABORT log" bug with gargoyleData.aborted set. DONE Closing Trajectories. Check to see if the endpoints are already touching. DONE Wyatt: Trajectories reverting from splines to joints get double joints on each end. Kurlander fixed this. DONE. Wyatt: DuringScale crossing anchor blows up. Fix: Ignore DuringScale.newVector if it is tiny. DONE. Pier: Segment select over smalles possible box blows up. Fix: don't allow it. DONE. Wyatt: ScreenStyle button push during Session logging blows up EnterAction. DONE. Wyatt: two alignment circles were almost identical but passed the coincident test in SameCircle. However, the intersection calculation blew up trying to take SqrRt of a negative number. Propose fix: have SameCircle use Real.AlmostEqual instead of =. Look around for similar problems with = compare of reals. DONE. Beach: Phantom hot objects from boxes that were made hot and later deleted. Fix: DeselectEntityAllClasses must be called before any DeleteSlice. DeleteSlice currently can only delete an entire slice (no parts). FIXED. Bier: The new text slices are not gravity active for purposes of dragging. I haven't tried to find out why yet. DONE Bier: TEXT: You can make the joints hot and the hot squares appear, but they don't trigger alignments. DONE Stone: Changing curve types loses stroke width and color. FIXED. Beach: Add Frame to Shapes Menu (a box: 8.5" X 11" at origin) DONE Beach: Add PreviousPlace function, analogous to Tioga. Have to remember what an "operation" is (BiScrollers operations are not operations; selection is not an operation, ....) DONE Ken: Maybe Abort! should abort painting. ShiftSWAT aborts painting, playback, gravtesting. DONE Ken: Add a STUFF button to go directly from GG to Tioga. DONE Stone: Using the splines, it is essential to be able to remove the control points. Otherwise, you can't really see the shape of the curve DONE Stone: It would be nice to have a way to turn the control points of a spline back into joints OR a way to splice control points into splines. DONE Stone: Need a way to put points in the scene and make them hot. Maybe use grid points which can be selected and heated like joints. DONE Stone: On closed, smooth curves the first/last point doesn't always show as a control point. You folks XORing somewhere? DONE Bier: Performance Bug: DeselectTopLevel with crowded scene DONE. Bier: Get should load the alignment lines from the file and clear the ones already there. DONE Bier: Clear and Reset should do the right thing re: alignment lines DONE Bier: Maybe button: Restore Default Alignments => just like a blank viewer DONE Restore File Alignments => just like after reading file DONE Bier: Fix typescripts so a new one opens if the old one has gone away, and so that gargoyleData is not needed by the mechanism. No need. DONE. Atkinson: Precision is lost because viewers hold rounded off values, so Add loses precision while Get keeps precision. DONE. KAP. August 19, 1986 Rename Outline.whyOnOverlay to Outline.movingParts. Done. Bier, September, 1986 Make some Gargoyle user profile entries. Done. Bier, October, 1986 Traj-Alignment intersections. Released initial verson. Early October, 1986. Bier. Spreitzer: CopyAndDrag destroys the ordering of parts. Fixed. Bier, Sept. 1986 Sturgis, 3 Sep 86: A warning in the tutorial about how to get alignment buttons back after you have deleted them. Done. Sep 86. Bier. Crow: The 8.5 x 11 shape appears in a strange place (apparently some 40 inches below the current working area after something has already been drawn). It doesn't appear to do anything if there is nothing yet drawn. Added documentation. Bier, October 19, 1986. Atkinson: Make caret snap to nearest control point or joint during trajectory/topLevel selects. Currently only snaps to joints. Done. Kurlander. Aug 86. Stone: When selecting a control point near an endpoint, the closest endpoint is often selected, as if there were a routine checking for that case first, and using a more powerful gravity function for it. An artifact of PreferPoints? Done. Kurlander. Aug 86. Maybe move Abort checking to SlackProcess instead of PaintProc ?? Done. Pier Nov. 86 There is an enormous performance bug when hit testing while any circle is in the scene with any of its control points selected! I haven't tried to find it yet.Done. Pier Nov. 86 Pier: BoxMovingParts is too conservative and wrong for the case of a single edge plus its two corners moving. Pier: Bad performance bug for caret motions along trajectory whenever a circle is present and one or more of its joints is selected! When there is nothing in the scene but a Box, and you drag it, it doesn't stick to the anchor. -- Bier Arrowheads are rounded on one barb and flat on the other. -- Kessler (Imager bug. Will be fixed in Cedar7.0). Release as general package: SlackProcess. -- Bier AddJoint bug: The caret must stop using the old segment as a chair once it is replaced. -- Bier, January 13, 1987. Compute traj-traj intersections on the fly. -- Bier, January 13, 1987 Time how long it takes to Playback a script. -- Bier, December 4, 1986 Store distance, angle, and line distance numbers as reals in ScalarButtons rather than as ropes. -- Bier, January 13, 1987 Add an extra space in Gargoyle masters after IPFileout. -- Bier, January 13, 1987 Store amplifySpace information in .gargoyle files. -- Bier, January 13, 1987 Carets -- the chair should be an outline or slice. -- Bier, January 15, 1987 It should not be possible to select NO parts of a Circle slice. Bier, January 15, 1987 Keep statistics about how much time refresh takes. Relabel Reset to be Restore Modify icon to have label and code to set the label. AddJoint doesn't leave the caret on the new joint. -- Bier, January 13, 1987. Done January 19, 1987. CMY colors vs. black toner. Store the difference in the .gargoyle file. For now, we can at least distinguish black. Done. Bier, January 27, 1987. Carefully code GGCircles.CircleMeetsLine to handle the tangency case. -- Bier, November 30, 1986. Done. Bier, January 27, 1987. Splice and SetNatural don't work if more than one run of a traj is selected. Something weird is happening to the active selection bits. Done. Bier, January 27, 1987 Include version numbers when IP Slices are stored by reference. -- Bier, Jan. 1987 Split GGMouseEventImplA.mesa into two smaller files. -- Bier, November 1986, Done Bier, March 4, 1987 Add a procedure "partsOnOverlay" to the SliceClass machinery as a replacement for "movingParts". Comment: I have more elaborate thoughts on this now, Eric, January 28, 1987. Done, Bier, March 11, 1987 Incremental alignment bag building (for Eric). -- Bier, December 2, 1986. The hooks are in place. Bier, March 11, 1987 Release as general package: The Buttons in GGButtons. Done. before March 11, 1987. Release as general package: The Graphics Buttons in GGGraphicsButton. Done before March 11, 1987. The hot point of a Box slice moves around if you drag one of its control points. -- Bier, January 27, 1987. Done. Bier, March 11, 1987. The new Font world. -- Bier, November 30, 1986. Done. Pier. before March 11, 1987. StrokeJoints and StrokeEnds. Done. Pier, March 11, 1987. Get rid of gargoyleData.debug.typescriptOut. It is no longer maintained. Done Bier March 11, 1987. "Add Text" should select the text automatically. stone, 1 Apr 87. Done before November 2, 1987. For first 7.0 release: Select a joint and request "ShowValue" from the Width menu and you get SIGNAL GGErrorImpl.Problem[msg: "No segments to get a stroke width from"], Beach, 22 Jan 87 DONE. GGFromImager.ShowText DONE. Fix anchor in bag problem. DONE. Update Tutorial. DONE. Clean up DF file; archive and delete as planned DONE. Fix drop shadows. DONE. Test and revise tutorial scripts as needed. DONE. LineWidth bound boxes don't update. DONE. Curve changing loses trajectory joints. DONE. ViewerAbort replaces local garbage. Careful about AbortProc in SlackProcess. Test! DONE. GGFromImager STOP after one IP file page. RED HERRING. Better FontParseError messages. DONE. Abort message from all abort places: SessionLog, Refresh, GGAbortProc. DONE. ColorTool DONE. SawStartOp terminates FollowColorTool. DONE. SIGNALS from NoOpProcs: implement, say nothing, or changed to messages. DONE. Rename GGObjects to GGScene. -- Bier, December 23, 1986, Done. Before April 14, 1987. Have Gargoyle detect the case where it is being opened in a column of the same size that it last occupied. Use the old bitmaps in this case. DONE. Pier, 26 Mar 87 SelectSegment should select one of the two segments when the caret snaps to a joint, rather than selecting nothing. DONE. Bier, April 1987 Aborting CopyAndDrag only aborts the drag. -- Spreitzer DONE. Bier, Early April 1987. OnGoing Projects. Store all state information in GG files. DONE Pier, June 19, 1987 OnGoing Projects. Outlines become Slices. -- Bier, December 4, 1986. DONE Pier, June 8, 1987 Font failure message is wiped out in feedback line. Pier June 17, 1987 FIXED most Slices do not drawAttractorFeedback properly. Pier June 17, 1987 FIXED Extend selection is broken. FIXED. Pier, June 15, 1987 Adding a joint changes priority order. -- Bier, January 27, 1987 FIXED. Pier, June 8, 1987 LitShot and SnapShot are broken. FIXED. Pier, June 8, 1987 The various "FindMatching" commands should work for slices as well as outlines. DONE Write the selected objects to a file. -- Bier, April 1986. DONE Pier, June 15, 1987 Let the user set the eccentricity value of Conics. Eventually, we'll want an interactive interface where you drag a control point, but setting the number will always be useful in any case. -- Bier, January 29, 1987. DONE. June 1987. Bier. Clean up the deselect and extend select code. Extract out common functions. Partly done. Bier, March 11, 1987. DONE. Bier, before June 1987. Make AtomButtons use PopUpButtons. -- Bier, 1986 DONE Change DoSaveAll to DoSave. DONE LOOK should not start a Text string, even when is not one of {a, b, l, n, z}. FIXED. Pier, June 8, 1987 Groups don't work for slices. -- Bier, December 23, 1986 FIXED. Pier, June 8, 1987 Implement complete priority scheme. DONE. Pier, June 8, 1987 Implement caret looks for extending trajectories and default looks for all style parameters (keep them in GGState). DONE. Pier, June 8, 1987 Maintaining trigger and align bags should be more incremental and more carefully separated into stages. DONE. Before June 1987. Bier Get rid of GList dependencies (none left except GGMouseEventImpl* and GGOutlineImpl*). Bier, July 9, 1987. DONE. Bier, July 9, 1987. FRAMES ARE IN THE WRONG PLACE AND WRONG SIZE DONE. Changing overlap order of part of a traj has a refresh bug. -- Bier, March 17, 1987 DONE. WYSIWYG display mode isn't. Pier, June 16, 1987 DONE. Fill: FollowColorTool. Seems to work no longer. -- Bloomenthal, 20 Aug 87 DONE. Copy and Drag with Text. The file /qv/mackinlay/gargoyle/jdmvocab.gargoyle did it. It has text in the Lucida font but I had not done ImagerIKtypeface so the font was substituted. When I tried to copy-drag the word "color" the bug manifested. It worked just fine when the font was not substituted. -- mackinlay, 1 Sep 87. DONE Put Box accelerator on PlainRight in Shapes menu. Bier. October 12, 1987 DONE. KAP. Get rid of GGEvent. Make it a documentation file instead. Have GGEventImpl* do registration. Remove registration from GGUserInputImpl* and collapse into GGUserInputImpl.mesa again. DONE. KAP. October 2, 1987 Have the oriented anchor generate angle and distance lines. DONE. KAP. October 2, 1987 The merged objects should be selected (this used to work). -- Bier, September 5, 1987. DONE, October 19, 1987 Pier Automatic scripting and roll forward. -- Bier, July 87. DONE, October 19, 1987 Bier Scripts should store the default font in the preamble. January 19, 1987. DONE. Bier, October 19, 1987 Find out why [Ivy]Artshow>birdsketch.gargoyle takes around 30 seconds to paint, and it doesn't seem that complicated to me (I was planning to make it a lot more complicated). -- Stone, 14 August, 1987. DONE, Bier, October 19, 1987 Scripts should mention a default font. -- Bier, April 1987. DONE, Bier, before October 19, 1987 The popup Curves menu says that Conic takes a Gargoyle selection (with [G]). In fact, it also takes a Tioga selection to give it the eccentricity. -- PeterKessler, Wed, 19 Aug 87. DONE. Pier. Before October 19, 1987 Overlap order change when part of a traj is selected has bound box refresh bug (e.g. try MenuTest1.script). -- Bier, December 23, 1986. DONE, Pier, before October 19, 1987 Redo for Copy. -- suggested by Steve Wallgren as a way to get symmetry. before January 28, 1987. DONE before October 19, 1987 Midpoints are not triggered by hot objects. DONE long before October 19, 1987 Compute tangent information for the segment types. DONE Eisenman. Before October 19, 1987. Fix GGParseImpl so that all syntax and parsing errors raise SyntaxError. DONE. Pier. Before October 19, 1987 Get rid of GGInterface.mesa by having GGObjects manage selections. DONE. Bier. Long before October 19, 1987. Make the session log serve as a file format. Abandoned before October 19, 1987. Bier. Give the caret an orientation as well as a position (for Eric). -- Bier, December 2, 1986 DONE before October 19, 1987. Eisenman. Reduce GFI count. Bloomenthal. 23 May 87. Done before November 2, 1987. 78 GFI. Add a user profile option: Gargoyle.IncludeIPByValue: FALSE. Done before November 2, 1987. Make all Merge operations, regardless of source, do DeselectAll followed by selection of all merged slices. DONE. Pier. November 12, 1987 Fix bad storage leaks. Add MakeSceneGarbage to GGScene and implement. Call by GGEventImplD.ClearAux. In turn calls GGSceneImpl.MakeEntityListGarbage once for each scene stack entry and for the scene itself. Modify GGSceneImpl.PopScene to garbage the current scene before popping. This should take care of destroying circular structures during Get, Reset, Clear. DONE. Pier. November 12, 1987 The 6 point transformation opens an ERROR window when a degenerate transformation is requested. An error message would be more polite. Eisenman. November 6, 1987. DONE. Clean up quick click mode to have the right sex. DONE. Pier. November 12, 1987 Doing a Get on a gargoyle file with Store-By-Reference Interpress Slice, gives you a picture with no Interpress Slice instead of giving you an Interpress Slice with an empty ImagerMemory. DONE. Pier. November 12, 1987 GGUserInpuImpl.Get*FromSelection returns [-1] if its parse fails. It should return something like Real.LargestNumber, because -1 is a legitimate value for some of its clients like Slope, Angle, and LineDistance.DONE. Pier. Before November 12, 1987 Display BiScrollers transformations to user at all times DONE Copy from one viewer to another. -- Bier, before January 29, 1987 DONE. Pier. November 12, 1987 Alignment object Get procs in GGEventImplB can only use Sequences for slope, angle, and distances, but can use all slices for radius. Inconsistent: recode for all slices. DONE. Pier. November 12, 1987 Trajectory as full slice class. DONE, January 14, 1988 Get rid of the fence concept. Outlines should become collections of oriented trajectories. DONE, January 14, 1988 Find problem with BiScrollers keeping top of viewer stationary when resizing viewer. PROBLEM is an interaction between BiScrollers and GGContainer. -- Ken, DONE Pier, early 1988 The ability to save all the changes since the beginning of the session and perform them on another file. Wallgren, December 4, 1986. DONE, in 1987, Bier. I am making a figure with an eliptical hole. But, the standard ellipse (a scaled circle) is a slice, not a trajectory. I'd like some easy way to make it into a hole. -- Wyatt 31 Jul 86, Stone ? 86 -- DONE, Pier, 23 Feb 88 Allow spline outlines of text to be derived at a button press. -- Wallgren, July. 87. -- Done, Bier, 2 May 88 Many storage pools need to be monitored. GGFileIn scratch streams need to be a pool. I propose a GGStoragePool module that maintains a StoragePool MONITORED record. Pier, Dec. 1. Bier, January 8, 1987. -- Created, April 1988 Performance: Reading in alignment numbers from .gargoyle files is n-squared. -- Fixed, Bier, Before April 1988 Feature: Store Sampled Color in GG files. Wallgren. January 28, 1987. -- Done, Bier and Pier, 13 Apr 88 Performance: Filing in alignment menus is still much too slow. -- Bier, January 15, 1988. Fixed, Bier, April 1988 Added Caret menu: PositionFromSelection, AngleFromSelection, ShowCaretValues, ShowAnchorValues, GrabInputFocus. Moved Delete/Undelete to Edit menu. -- Wyatt, June 7, 1988 Non-scaling control points, anchor and caret (plus a solution to the swamping problem). DONE, Bier, March 1988. Gargoyle interactive on color display. -- Done, Wyatt, June, 1988 Do drop shadows still have bound box refresh problems? -- Atkinson, 31 Mar 87. Seems to be fixed. Bier, early 1988 Faster bounding boxes for cubics. -- Done, Bier, before June, 1988. Quicker selection feedback for trajectories, ala Griffin. -- Bier, January 29, 1987. Halfway there before September 3, 1987. What's left is to take large trajectories into account. -- Done, Bier, before June 1988. Get rid of all List.Nconc and GList.Nconc calls and replace them with a tail pointer scheme like the one used in GGScene for Scene. This should make dragging large numbers of objects go faster. in GGAlignImpl, GGRefreshImpl (and other places). -- Done, Bier, before June 19, 1988 Repair performance bug in Get and Restore, where the Filein code selects all of the objects and then GGEventImplD.GetMergeAux deselects it all again. -- Bier, January 15, 1988. DONE, Pier, before June 1988 0 degree Angle lines can produce line braiding. -- not really a problem, August 19, 1988 Backspacing on color display with ShowColors Off loses keystrokes. Celtics says InputNotifyProc is not being called the right number of times. -- DONE. This was not our bug. Before June 1988. Have ContinueAdd build the foreground bitmap incrementally. -- DONE, Bier, early 1988 UNDO. -- Done, Pier, August 19, 1988 Incremental foreground updating fails after extending joint selection to other trajectories and dragging. Alignment lines are in the bag, but only the first selected segment triggers are displayed in the foreground. Eric FIXED If "Gargoyle Filename" is invoked and then type-ahead continued in the command tool, the input focus switches into the history tool, even if the tool is created iconic. The tool builder code does not explicitly capture the input focus. Weird! FIXED. FastPlayback is broken. Does this mean SurpressRefresh is broken? No. ClearAux was resetting SurpressRefresh FIXED MergeOptions fails to merge defaults and other options. FIXED Items from the cluster cataclysm, December 15, 1988: color menus are inconsistent and have old rgb syntax StrokeSetDefaults is unguarded from NoSel Match/Show Priority need better messages MatchPriority displays level = 0 if Match>Top PutInFront, PutBehind, PutAtSelection: change refresh atom to $ObjectChangedInPlace GetFromTioga is broken. Leaves cleared viewer. ChangeCurveType reselects entire scene bogusly. FrozenClusters should display NYI. Shapes, CenterSel not guarded against No Caret. Caret props from selection not guarded against No Caret or bogus input (GGEventImplE). PrintStrokeValues not guarded against no GG selections WidthFromSelection message bogus for 1 pt and 0 pt in menus Gravity message is in inches only. Only way to display gravity value is to change it (DUMB). Use a button instead of a label. TrajSetStrokeWidth returns a NIL box!! make showcolors show all representations DropAnchor not guarded against No Caret. Guard all user operations from no GG selections Guard all user operations from no Tioga selection Change all messages to initially display menu string used to invoke the operation. Change all complaints to initially display menu string used to invoke the operation and the string "failed". GGOutlineImplB.SetTextFill is broken. Recode and test. Verify documentation in FillBoxesFromSelection. One case fails: UnmakeHoles of a fully selected filled object empties all but the first box in the object when the first object is not a box. Loses fill. FIXED LGGToDo.tioga Bier on November 8, 1987 6:51:06 pm PST Pier, March 24, 1989 5:07:43 pm PST Last edited by: David Kurlander - August 6, 1987 3:13:37 pm PDT Bier, October 12, 1990 6:29 pm PDT Doug Wyatt, June 7, 1988 2:36:08 pm PDT TestGravity should show alignment lines. During dragging, alignment classes should be reported. ÊO˜head1šœ ™ Icodešœ'™'Lšœ#™#L™?L™#L™'—J˜Jšœ,˜,J˜J˜˜šÏy˜Jš ˜ Jš˜Jš#˜#Jš˜—˜J˜J˜ —˜ J˜J˜J˜J˜+J˜1J˜—J˜˜J˜ J˜J˜6J˜—˜J˜tJ˜——šÏb˜J˜JšœS œœC˜¶J˜f˜:J˜À—J˜%J˜.J˜˜J˜ã——J˜šž8˜8J˜J˜@J˜!J˜1J˜0—šž8˜8J˜FJ˜(J˜DJ˜—šž"˜"J˜JšœŠ˜Š˜ZJ˜'—J˜qJ˜—šž%˜%J˜J˜7J˜IJ˜+J˜.J˜4J˜J˜%J˜J˜–J˜—J˜Jšž#˜#˜Jšœbžœ3˜™˜;J˜Ò—˜(J˜‚—J˜JšœI˜IJšœ ˜ J˜3Jšœõ˜õJšœC˜CJ˜·JšœH˜H˜*J˜Ì—J˜ÀJ˜¢J˜iJ˜RJ˜J–1.4 in tabStopsš›@‚@ÐozÑboz ¡ ¡˜J–1.4 in tabStopsšÐbo ÏoÐos'˜3J–1.4 in tabStopsš¢ £¤˜'J–1.4 in tabStopsš¢ £¤˜J–1.4 in tabStopsš¢£¤-˜>J–1.4 in tabStops˜J–1.4 in tabStopsšŸ ¡˜J–1.4 in tabStopsš¢ £¤'˜3J–1.4 in tabStopsš¢ £¤˜ J–1.4 in tabStopsš¢ £¤˜"J–1.4 in tabStopsš¢£¤ Ñbos˜EJ–1.4 in tabStops˜J–1.4 in tabStopsšŸ ¡ ¡ ¡˜J–1.4 in tabStopsš¢ £¤(¥˜EJ–1.4 in tabStops˜J–1.4 in tabStopsšŸ  ¡˜J–1.4 in tabStopsš¢ £¤(¥˜DJ–1.4 in tabStops˜J˜—šž!˜!J˜Jšœ¤˜¤—J˜šž˜J˜J˜JšœÆ˜ÆJ˜(J˜fJšœ—˜—J˜L—J˜šž˜J˜J˜eJ˜BJ˜¿Jšœ%˜%Jšœ5˜5J˜eJ˜ZJ˜`—head2šœ˜J˜GJ˜OJ˜+J˜3J˜XJ˜J˜4Jšœ˜Jšœ$˜$J˜8Jšœœ˜œ—šœ˜J˜}JšœYÏn ˜cJšœ;˜;J˜iJ˜‡J˜RJ˜wJ˜CJ˜-J˜6J˜=J˜ÛJ˜´J˜0J˜ZJ˜2J˜’J˜=J˜;J˜PJ˜,J˜)JšœY˜YJ˜ÌJ˜uJšœ&˜&Jšœ#˜#JšœO˜OJšœ\˜\J˜kJ˜KJ˜œJ˜PJšœÊ˜ÊJ˜Ã—šœž˜%JšœF˜F—šœ ˜ J˜9J˜?J˜—šž ˜ J˜J˜UJ˜CJ˜ËJ˜~JšœS˜SJ˜IJšœ˜Jšœ+˜+Jšœ6Ïkœ%§œ˜cJ˜_J˜YJ˜8J˜sJ˜hJ˜KJ˜)J˜²J˜ZJ˜3Jšœ’˜’—šœ˜Jšœ˜Jšœ˜Jšœ8˜8Jšœd˜dJšœ˜Jšœ3˜3Jšœ(™(Jšœ6™6JšœB˜BJšœ@˜@Jšœj˜jJšœ¦œ˜/Jšœ\¦œ˜qJšœ¦œ˜)Jšœ ¦œ˜Jšœ3¦œ˜HJšœ¦œ˜-Jšœ/¦œ˜DJšœW¦œ˜lJšœ¦œ˜0Jš§œ3§œ-¦œ˜{Jšœ+¦œ§˜OJšœB§œ§œ˜\JšœX˜XJšœ1˜1Jšœ2˜2JšœK˜KJšœ5Ïc˜RJšœV¨6˜ŒJšœH¨T˜œJšœW¨)˜€Jšœ¨)˜FJšœD§œ˜dJšœ¨+˜JJšœ*˜*Jšœ"˜"Jšœ2˜2Jšœ¨˜1Jšœ-¨˜4Jšœ"¨˜)JšœV¨˜^Jš œ§œ§œ §œ §œ¨˜UJšœ0¨˜MJšœ ¨˜(Jšœ3§œ ˜?Jšœt˜tJšœ+˜+Jšœx§œ§˜–Jšœ:§œ§˜XJšœ=§œ§˜FJšœG§œ§˜PJšœJ§œ§˜SJšœJ§œ§˜SšœÐbkœ©ž©œ˜-JšœO§œ©˜l—JšœÈ©˜ÌJšœ0©˜4Jšœ©˜!Jšœº©˜¾Jšœ8©˜JšœŽ©œ*˜¼Jšœš¨Ðbc˜¡JšœC¨ª˜JJšœ4ª˜8Jšœ0˜0Jšœ?ž˜CJšžH˜HJšž1œ¨ªž˜SJšœ,¨ª˜3Jšœb¨ª˜iJšœ%¨ª˜,Jšœ~˜~JšœG§œ˜`J˜‘J˜7Jšœ˜Jšœ˜Jšœ5˜5Jšœ˜Jšœ+˜+Jšœ)˜)Jšœ¨'˜DJšœ;˜;Jšœ:˜:Jšœ ˜ JšœW˜WJšœc˜cJ˜hJšœ˜J˜"J˜\J˜4J˜6J˜0J˜EJ˜-J˜&J˜;J˜J˜IJ˜WJšœ%˜%Jšœ`˜`JšœH˜HJ˜MJšœ$ž˜(Jšœ žœ˜9JšœGžœ˜LJšœTžœ˜YJšœµžœ˜ºJšœ+žœ˜0Jšœž˜Jšœ\žœ˜aJšœ$ž˜(JšœJž˜NJšœXžœ˜ZJšœ6ž˜:JšœMž˜QJšœŒž˜JšœSž˜XJšœ*ž˜.Jšœ9žœ˜>Jšœ§œJžœ˜XJšœ7ž˜;JšœKž˜OJšœjžœ˜oJšœ_žœ˜dJšœNžœ˜SJšœLžœ˜QJšœ¶žœ˜»JšœÖžœ˜ÜJšœrž˜vJšœhž˜lJšœ:žœ˜AJšœ>ž˜BJšœ°ž˜´Jšœ[ž˜_Jšœ;ž˜?Jšœ‹ž˜JšœŽž˜’Jšœ…ž˜‰Jšœzž˜~Jšœ;žœ˜@JšœZž˜^JšœDž˜HšœKž˜OJšœ8ž˜<—Jšœ€ž˜Jšœwžœ˜‘JšœQ˜QJšœC˜CJšœS˜SJ˜QJšœ‰˜‰J˜‡J˜žJ˜†J˜UJ˜²J˜mJ˜„J˜fJ˜nJšœ1˜1J˜sJšœE˜EJ˜FJšœz˜zJšœR˜RJšœM˜MJšœM˜MJ˜WJšœ2˜2J˜J˜4J˜eJ˜•J˜J˜¦JšœR˜RJšœe˜eJ˜ËJ˜xJšœS˜SJšœb˜bJ˜ŠJ˜UJ˜:J˜dJšœa˜a˜Jšœ£žœ˜¨Jšœžœ˜Jšœžœ˜ Jšœžœ˜Jšœ0žœ˜5Jšœžœ˜Jšœ,žœ˜1Jšœ$žœ˜)Jšœ(žœ˜-JšœUžœ˜ZJšœ*ž ˜6Jšœ žœ˜%JšœGžœ˜LJšœ žœ˜Jšœ'žœ˜,JšœHžœ˜MJ˜WJšœŽžœ˜¤Jšœtžœ˜‹Jšœ9žœ˜W—Jšžœ+žœ˜SJšžœ5žœ˜\JšœGž˜LJšœFž˜KJšœžœ˜6JšœBžœ˜[Jšœ!žœ˜:JšœPž˜TJšœ;žœ˜SJšœžœ©žœ˜òJšœsžœ˜‘Jšœ1ž˜5Jšœž˜ Jšœ`žœ˜yJšœ9žœ˜RJšœ$žœ˜