Ticket #9 (closed enhancement: fixed)

Opened 13 years ago

Last modified 12 years ago

Improve selection of overlays

Reported by: sorber Owned by: sorber
Priority: minor Milestone:
Component: visbio Severity:
Keywords: overlays Cc:
Blocked By: Blocking:

Description

Come up with a way less obtrusive than the current yellow grid to indicate that overlay objects, primarily freeforms and polylines, are selected, since the grid can obscure the freeform or polyline (and potentially other overlays, should we add editing features to 'em) the user is about to edit. Potential solutions:

  1. Use a plain outline (maybe neon instead of yellow): change getSelectionGrid(...) in OverlayObject and subclasses
  2. Change the color of the object itself: add a clause to the getData(...) method of all OverlayObject subclasses

Change History

comment:1 Changed 13 years ago by sorber

New selection indicator scheme: Change the color of the selected object to yellow and highlight the outline of the object with a thicker, translucent yellow band.

Have tested this method for OverlayNodedObjects using a UnionSet of Gridded2DSets (translucent rectangles, alpha=.15) for each line segment in a noded object. The separate rectangles appear continuous if the width of the rectangles is small on screen. Looks better for Polylines than for Freeforms, but still an improvement over the yellow grid. In the future would like to use one continuous Gridded2DSet that matches the contour of the nodes, but need to devise an algorithm to calculate the grid points that doesn't create "bow-tie" boxes or automatically detects and removes them.

Going to make selection grids of other overlay types (boxes, etc) match this glowing/highlighted look. Should be possible to achieve using continuous Gridded2DSets rather than union sets for the Box, Marker, Line, and Arrow. I'm less sure what to do about the oval and furthermore, the 'filled' cases of all of these objects. For text objects, I will probably just overlay a translucent yellow box corresponding to the bounding box of the object.

comment:2 follow-ups: ↓ 3 ↓ 4 Changed 13 years ago by sorber

Completed basic selection layers for all overlay types. Would like to improve selection layers to the following types:

  • Line -- make the selection layer extend past the ends of the line (easy)
  • Noded Objects (freeforms and polylines) -- improve the method of determining the shape and orientation of the segments of the selection layer. Using trapezoids, should be able to eliminate all gaps in the layer and some of the overlapping parts (medium)
  • Oval -- make the selection layer hollow; it currently covers the entire interior of the oval (hard)

comment:3 in reply to: ↑ 2 Changed 13 years ago by sorber

  • Oval -- make the selection layer hollow; it currently covers the entire interior of the oval (hard)

Decided to leave Ovals and Boxes solid, not hollow, since a box or oval can be selected by clicking in its interior.

comment:4 in reply to: ↑ 2 Changed 13 years ago by sorber

This remains the only outstanding problem in this ticket:

  • Noded Objects (freeforms and polylines) -- improve the method of determining the shape and orientation of the segments of the selection layer. Using trapezoids, should be able to eliminate all gaps in the layer and some of the overlapping parts (medium)

comment:5 Changed 13 years ago by sorber

  • Priority changed from major to minor

comment:6 Changed 12 years ago by sorber

Employed trapezoids for OverlayUtil.getNodedLayer(). Required a fair amount of code (added many vector math methods to MathUtil.java as a result). Method currently does not detect all invalid sets itself, relying instead on VisAD's Gridded2DSet constructor to throw an exception when the set won't work.

Also added the overlay test data used to expose bugs in the method see Changeset r2909

comment:7 Changed 12 years ago by sorber

  • Status changed from new to closed
  • Resolution set to fixed
Note: See TracTickets for help on using tickets.