[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

UrShape: Some more ideas



Hi again.

On Mon, 16 Jul 2001, John Palmieri wrote:
> Can anyone recommend the best ISP I can use with
> Linux while I wait for DSL to be implemented in my area?
Where is your area? ;)

> Well on to more important stuff (comments inline as always):
> [CVS]
> Ok, there is no code there right now.  Perhaps we should get a
> snapshot of Dia in there that we can work off of and create
> patches with.  Which is best, directly from CVS or one of the tar
> balls?

> [UrShapeBehaviour]
> I would think just "draw" and "resize" should be implemented right
> now.  They both would take the calling UrShape and self as
> parameters.  Actually, only containers should have a resize
> behavior.  All other children of containers would be resized by
> the container itself.
Wait a sec...This is already defined in the Object inherited-from
Element inherited-by UrShape.
But you made UrShapeBehaviour a member of the UrShape struct. Do we
really need this?

> I'm rethinking my first everything is inherited from UrShape.  
> How about s/UrShape/UrTree/g; And a new class UrShape which has-a
> UrTree. 
I don't like making things more complex than they are. UrShapes
already implement a tree, so they don't need to [have] a tree. I don't
think we should make too much use of C OO, since the added pointer
and typecasting mayhem makes our code unreadable.

> Actually UrShape would just be a special case container. UrShape
> will inherit from element and the UrTree will cease to inherit
> from element in which case it will need the x,y,height,width
> attributes.  UrShape will act as the middleware or glue to dia
> while the UrTree can be free from any of the restraints of Dia's
> architecture (except from the fact that we still need to use C).
Well, C is no problem, if it doesn't come to OO ;)

> This way if Dia's internals change we simple make changes to
> UrShape while leaving the rest of the code intact.
That's a good point. However, I don't think the core will change that
much that it breaks Shape code.

> [Tree traversal]
Resize: Well, since this is implemented within the UrShape, it should
be no problem. It just forwards the call to all children. There is no
specified order needed.

> Draw is a different story since SVG uses a painters algorithm.  
> Pre-order would be correct here.
Yes. First the parents, then the children.

> As for mouse events a style similar to the cascade should be used.  
Agreed.

> UrShape recives the event from Dia.
How? By Callback? What actually _are_ events? I thought this would be
something like move, resize, select, etc.

The event propagation then depends on the event:
* Move does not need to be propagated, since all positions are
relative.
* Resize has to be propagated if a fixed ratio or any other constraint
is specified. Unresized UrShapes don't need to resize their children.
* Draw needs to be propagated, parents first.
* Select is propagated
  - if the shape that was selected before contains the selection in
    it's bounding-box (then it's parent is selected)
  - if no shape is selected, then the event is propagated to the
    "youngest" decessor still having the selection in its bounding
    box.
In this way, we have a cleanly defined behaviour and the user can
reach every UrShape in the tree.

> One thing I need to know is how does Dia handle drawing?  Can I
> get a piece canvas from Dia to do my drawing on or do I have to do
> everything on the main Dia canvas?  Can GTK+ widgets be placed on
> this canvas or must we cheat and place them on a layer above the
> canvas?
How do the UML comments do it?

> --J5
cu Andre
-- 
Tolerance rulez, everything else sux! -- Andre Kloss





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index] Mail converted by Mofo Magic and the Flying D

 
All trademarks and copyrights are the property of their respective owners.

Other Directory Sites: SeekWonder | Directory Owners Forum

GuideSMACK