GGToDo.tioga
Bier on January 29, 1987 5:04:02 pm PST
Day by day implementation needs of Gargoyle.
Important OnGoing Projects
MergeIPEditable should do something sensible with all of Interpress 3.0, including Line Ends. Parity Fill. MaskBits. DrawBits. Clipping. -- Bier, November 30, 1986
Outlines become Slices. -- Bier, December 4, 1986
Store all state information in GG files. -- Pier, January 15, 1987
High Priority -- Embarrassing Bugs
The hot point of a Box slice moves around if you drag one of its control points. -- Bier, January 27, 1987.
Adding a joint changes priority order. -- Bier, January 27, 1987
SelectSegment should select one of the two segments when the caret snaps to a joint, rather than selecting nothing.
High Priority -- Important Features
The new Font world. -- Bier, November 30, 1986
The various "FindMatching" commands should work for slices as well as outlines.
Store unit information in GG files. Beach, January 15, 1987
Scripts should store the default font in the preamble., Bier, January 19, 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.
StrokeJoints and StrokeEnds.
Simple arrowheads for straight line segments. Wallgren. January 28, 1987
Store Sampled Color in GG files. Wallgren. January 28, 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
High Priority -- Code Structuring
Create a Slice class ColoredBox to subsume the functionality of IP, Box, Sampled Color, and TiogaBox slices.
Clean up the deselect and extend select code. Extract out common functions.
High Priority -- Performance
Quicker selection feedback for trajectories, ala Griffin. -- Bier, January 29, 1987
Easy
Add a grid slice class.
Split GGMouseEventImplA.mesa into two smaller files. -- Bier, November 1986
Make GGButtons use PopUpButtons.
Include version numbers when IP Slices are stored by reference.
Rename GGObjects to GGScene. -- Bier, December 23, 1986
Moderate Priority -- Bugs
Aborting CopyAndDrag only aborts the drag. -- Spreitzer
LOOK <mumble> should not start a Text string, even when <mumble> is not one of {a, b, l, n, z}.
Replace Segment only works for lines and Bezier segments. The other curve types just move a control point to the caret. -- Stone
0 degree Angle lines can produce line braiding.
AreaSelectNewWithDelete deletes more than it has to.
Overlap order change when part of a traj is selected has bound box refresh bug (e.g. try MenuTest1.script). -- Bier, December 23, 1986
Groups don't work for slices. -- Bier, December 23, 1986
Moderate Priority -- Features
Redo for Copy. -- suggested by Steve Wallgren as a way to get symmetry. before January 28, 1987.
Copy from one viewer to another. -- Bier, before January 29, 1987
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
Allow fractions in buttons, e.g. "1/18" to be added by the user.
Implement complete priority scheme.
Make filled outlines appear not filled during dragging. This will allow some performance optimizations in GGRefresh.
Rotate-Drag operation (combines both).
Compute the intersection of alignment lines with trajectories (i.e. all Segment Classes).
Arrowheads.
Maintaining trigger and object bags should be more incremental and more carefully separated into stages.
Add single step replay capability to session logs.
Have ContinueAdd build the foreground bitmap incrementally.
Show the origin of arcs (for Eric).
Release as general package: The Buttons in GGButtons.
Release as general package: The Graphics Buttons in GGGraphicsButton.
Midpoints and 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.
Make the during part of adding and dragging optional -- Bier, November 30, 1986.
CloseWithSegment should not be able to create illegal trajectories. -- Bier
We need to be able to edit the scalar parameter of Conics. -- 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. -- Stone
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
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
UNDO
Make a Cluster class
Improve the Gargoyle FSM so that all During actions are optional. -- Bier, December 2, 1986
Compute tangent information for the segment types.
Moderate Priority -- Code Structuring
Get rid of GGInterface.mesa by having GGObjects manage selections.
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.
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
Moderate Priority -- Performance
Implement a ContinueCaretPos that works like ContinueAdd.
Reading in alignment numbers from .gargoyle files is n-squared.
Dragging a joint should be fast for unfilled, closed, outlines.
Incremental alignment bag building (for Eric). -- Bier, December 2, 1986
Low Priority
Allow user to specify StrokeJoint styles.
Store entire GG state including hot objects in .gargoyle files.
Single-point trajectories.
Make the session log serve as a file format.
Absolute Coordinates as alignment triggers.
Distinguish between Deselect where not selected is an ERROR, and EnsureNotSelected, where it is OK.
Find problem with BiScrollers keeping top of viewer stationary when resizing viewer. PROBLEM is an interaction between BiScrollers and GGContainer. -- Ken
Deselection of objects should terminate FollowColorTool. -- Glassner
Have a keystroke to move the caret to the midpoint of the currently selected segment --Atkinson
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
Make Cntrl/ShSpace kill gravity only for the current operation, not permanently. -- Wyatt
Make a way to select the "interior" of an IPSlice when not near an edge -- Wyatt
A way to select the joints in an area. -- Spreitzer
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
The "Union Combine" operation combines all my polygons into nothing. -- 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
Give the caret an orientation as well as a position (for Eric). -- Bier, December 2, 1986
Integrated 3D (for Eric). -- Bier, December 2, 1986
The ability to save all the changes since the beginning of the session and perform them on another file. Wallgren, December 4, 1986
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.
TestGravity should show alignment lines.
During dragging, alignment classes should be reported.
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]<Gargoyle> 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
Some ToDo for Release notes, July 24, 1986 1:30:30 pm PDT by Pier.
From Ken:
From Glassner:
From Russ Atkinson:
From Doug Wyatt:
From Rick Beach:
From Maureen Stone:
From Eric Bier:
From Frank, Fri 29 Aug.
From Howard Sturgis, Wed, 3 Sep 86
From Mike Spreitzer:
From Peter Kessler:
From Lissy Bland:
How about renaming the Scale button, Magnification.
From BJackson:
Having 'get' recognize foo.ip (or foo.interpress) would be helpful.