SVG 2 wish-list

Jon, et.al.:

Just wanted to get some wish-list items in for SVG 2.  Here they are in
order of thought/importance (to us at least :)


1) Connectors and ports
-Connectors have the following properties:
    -Line, Curve, object-like entities like pipe (w/filter effects)
    -Orthogonal with multiple knee points
    -use markers as end types
    -named types definable such as 'arrow', etc.
    -labelable
    -flow direction indicator.  Ties in with node/edge detection.

-Ports have the following properties:
    -Specific point ports.
    -Generic side/slide port.
    -Translates last visible point to outermost part of object to avoid
     connector over-draw of object components.
    -Snap to gravity.
    -visibility property.
    -use unique shape, color, etc.


2) Symbols
Be able to manipulate a symbol as though it were a single object.  This may
be a failing of the Adobe plug-in or SVG 1 but a symbol does not appear to
be manipulatable as though it was a single object.


3) True Layer support
For example, <g>...</g> remains for grouping but <layer
id='design'>...</layer> represents a layer element with it's own properties.
It could then be used (perhaps) like filter elements are now.

For example:
*********************************************************************
<svg xml:space='preserve' width='500' height='400' >
  <defs>
    <layer id='Electrical' z-order='2' visible='yes' style='fill:green'>
    </layer>
    <layer id='Wall' z-order='3' visible='no'
style='fill:none;stroke:black;stroke-width:4'>
    </layer>
    <layer id='Dimensions' z-order='1' visible='no' style='fill:blue'>
    </layer>
  </defs>

  <g id='OuterWalls' style='layer:url(#Wall)'>
    <rect x='10' y='10' width='480' height='380'/>
    ...
  </g>

  <g id='OuterDoors' ...>
    ...
  </g>

  <g id='InnerWalls' style='layer:url(#Wall)'>
  </g>

</svg>
*********************************************************************

Then, through scripting or other means the 'visible' attribute could be
toggled on/off or the 'z-order' could be changed for all elements that
belonged to this layer regardless of position within the svg document.
Note: the z-order and visible attributes could be part of the CSS style
attribute.  I'm not as concerned about where they go, as long as they are
part of this object.


4) Node/edge detection
  -Be able to identify what objects are incoming and which are outgoing.
  -Be able to activate/animate the edges leading into or out of an object.


5) Gravity and repulsion properties/attributes
Specify gravity level relative to an object or the page.  Gravity allows
sink to port location for interactive CAD/diagramming applications.
Repulsion also useful to indicate objects that can not be connected.

This property/attribute has uses for other graphic applications too (stating
the obvious I know).


6) Grid element
  -This type object can be used to create CASE diagram objects, background
grid/graph paper, etc.
  -Has to allow more dynamic capabilities than the HTML <table> element.
  -Something similar to MS-Word's table object.
  -allow port connections at mid point on outer cells
  -permit animation within cells.
  -support multiple aspects (log, Cartesian, etc.)
  -options for major and minor axis (different CSS properties, etc.)
  -poss. 3D x,y,z and 4D x,y,z,t where the time dimension hooks in with SMIL
animation effects.


7) Property Cache Mechanism
  -Named properties for style attributes.  This appears to be possible
within class or entity
  definitions but does not work consistently.


8) Text selection as lower priority
More of a concern with the SVG 1 implementation of text.  Although it is
nice to have the text be selectable.  It would also be nice if this didn't
affect the use of a text object as a label for some graphic object -- and
thus didn't effect on mouse over events (or any of the other on mouse
events).  Perhaps text selection could be a result of a double click or
(preferably) done when in a selection mode for the document.


9) Text Labels as attribute of objects
Objects in CAD, CASE and Flowchart type application usually have a textual
label associated with the object.  For example:

  *******************************************************************
  <svg width='600' height='480'>
    <rect x='20' y='20' width='100' height='100' style='fill:blue;
text-align:left; text-restriction:clip'>
      </label id='brect-label'>This is the text label for the blue
rectangle</label>
    </rect>
    <rect x='120' y='120' width='100' height='100'
            style='fill:green; text-align:center; text-restriction:wrap'>
      <label id='grect-label'>This is the green rectangle label.  It will
wrap w/in the rectangle.
      </label>
    </rect>
  </svg>
  *******************************************************************

Note:  It might make more sense to have the text-* style attributes as part
of the label tag, I'm just trying to illustrate one idea for how this might
be represented within SVG.


10) Text wrapping
This appears to be on everyone's list.  Here's my two cents.  Offer text
wrapping  within a bounding object (ellipse, rect, etc.).  Also offer an
expansion of bounding  object as text increases so the text is always
bordered by it's bounding object.  Last, offer text justification attributes
(left, right, center, vcenter, hcenter, full, etc.)


11) Arc basic shape
Stated before to Jon directly.  Would like to see an arc basic shape element
like most other graphic primitive systems provide.  I know the argument can
be made that a path element can be used to create an arc but the same
argument can be made for a rect, line, etc.  In fact the SVG 1 spec states
as much.  However, for size considerations for the svg file and to make
translation of other graphic types easier, it would be helpful.

Here's an example (creates a red pie wedge starting at angle 0 degrees
sweeping through angle 55 degrees counterclockwise using radius a and b
equal to 30 pixels:

  *******************************************************************
  <svg width='600' height='480'>
    <arc x='10' y='10' ra='30' rb='30' start='0' end='55' type='closed'
         style='fill:red; stroke-fill:black; stroke-width:1; direction:ccw'>
    </arc>
  </svg>
  *******************************************************************


Thanks,
Michael Rizzo (mikeri@crt.com)
Vice President, Distributed Systems Management
Bank of America Corporation

Received on Tuesday, 10 October 2000 11:51:50 UTC