[comp.ai.shells] special graphics need.... help

schmidt@dduck.ctt.bellcore.com (Robert O Schmidt) (02/02/90)

I am looking to build a graphical user interface and am looking
for the best platform (both hardware and software).

I like object-oriented systems so am posting this to both 
comp.ai.shells and comp.graphics.


The task at hand is manipulating geographic (map) information
in the form of line segments.  ie, a street is a line that 
has a name and address range associated with it.  

Requirements:

1.  need to be able to display on order 10000 lines at once.
    certainly, this must be done programmatically.

2.  operations listed below must be do-able in short timeframes
    (<5 sec) even given 10000 lines on the screen.

3.  need infinite zoom,  need to be able to display the outline
    of the entire USA but on the same screen, zoom in on one 
    street in a given town.  line widths must automatically 
    re-scale for various zoom factors.

4.  flexible zoom..  that is, multiple ways of zooming... 
    say, a "magnify by 2" command as well as a means of selecting
    an arbitrary part of the screen to zoom in on automatically.
    A "zoom fit all" function to fit all images occurring on the 
    virtual bitplain onto the output window would be nice.


5.  the system must deal with 9 digit integer coordinates (ie, 
    the line from (74237764, 124556725) to (74237770, 124556790)
    [a system working in decimal coordinates would work....  if 
     the precision is not lost... ie, i can do division to get
     (74.237764, 124.556725) to (74.237770, 124.556790) but the
     line must be depicted with total precision, given the correct
     zoom]

6.  lines must be able to have labels associated with them.  (ie, 
    to show a street segments name)  These text fields must do
    automatic scaling given the zoom factor in use... ie, if the
    whole USA is shown, the text should be suppressed, but if 
    if only a small area with a few streets is shown, then the labels
    should be big and legible.

7.  lines must be mousable....  mouse functions must include:
     a) moving a whole line
     b) moving a lines endpoint (rubber-banding).
     c) simply select a line and returning it to a program (preferably
        as an object)
     d) means for affixing methods to a line, a simple example:
        mouse a line, middle-click to get a menu... select "highlight"

8.  any changes to a line (ie, it is position is changed by a move command)
    must appear in the the line's definition, not just on the screen.
    optimally, the line is an object that knows how to draw itself and
    collects any changes to its graphical representation.

9.  a means for "panning" about in the virtual bitplain.....  scroll
    bars would be nice, but other methods may be workable.

10.  Most important:  i dont want to do any programming to get this
    functionality.   no mouse control functions... no zoom functions..
    no font-resize functions.....  All i want to do is create an object
    to represent the line, shove in the endpoints, shove in the text
    and see it on the screen and then be able to play with it (zoom,
    move endpoint..... etc)

---------------------

I have found one system that offers all of the above functionality
with the exception of performance:  Intellicorps'  KEE.

KEE is wonderful.....  with a single statement I create an object of 
type "lines",  enter a few values in creating this object (the 
window to use, the font-size, the label string, the endpoints) and presto,
it shows up in the output window and can immediately be played with.
any changes to the line's graphical representation (ie, moving an endpoint)
are reflected immediately in the "lines" object.

The problem with KEE is performance.  I use a TI Explorer II (and have
tried a II+) with 56Mb core and performance has not been satisfactory.

10000 lines can be drawn, but it takes forever (hours.... possibly days).
deleting the window can take just as long.   a screen full of objects
can take several seconds to update (after, say a zoom)

furthermore, an Explorer II is an expensive platform on which to present
deliverables.  Yes, i know kee runs on (mega configured) PCs and Suns 
and with mac-ivory or micro-explorer, on Macintoshes....  i dont
expect usable performance on these platforms.

Thus, i am seeking alternate possibilities....  i have looked at 
CLUE/CLX/CLUE on the TI and it is too primitive (is, must do massive
programming) Also,  it seems X limits me to a 16 bit coordinate schemes 
(ie, max virtual bitplain values +/- 128k)...  not good enough for 
9 digit integers.

the symbolics CLUE/CLIM environment may well also have this 16 bit
limitation (dont know if it uses this X standard)......

in any case, the use of CLUE or CLIM will necessitate some programming
for screen manipulation.

So, Finally, I ask:  has anyone seen a system that does all of this
without costing megabucks but in a manner suitable for production
work.... ie, robust and bugless.

Any ideas (including where to look) would be most welcome.

thanks

Robert Schmidt

schmidt@flash.bellcore.com