My question was less about compositing and more about ROCircleLayout, so I've split my response into two posts. 

About compositing, really I'm not sure yet.  However I have a couple of thoughts that may be easier prior to full compositing.  Referring to the attached images, you can see that the children shapes overlap the label shape of the parent, and also multiples within the one shape overlap.  IT would help to have a way to offset shapes, and as a default the children should be offset below the label.  One way to do that would be being able to specify an offset for shapes, and have some way for the user to set up the specific linking of the bounds.  For instance, perhaps adding two label shapes at the top with the children nodes below.  The user would have to specifically define the offset of the

Take for instance this code for Roassal Easel...
    n1 := ROElement spriteOn: 'XX___'.
    n1 + (ROLabel new text: #model).
    n1 + (ROLabel new text: #bounds ).
    rawView add: n1.

...where the two labels overlap.  I think you would gain a lot if you could do something like the following...
    n1 := ROElement spriteOn: 'XX___'.
    n1 + (shape1 := ROLabel new text: #model).
    n1 + (ROLabel new text: #bounds; offset: [ shape1 bottomLeftCorner ] ).
    rawView add: n1.

This should handle shape1 being a multi-line label.

As a second stage, there should be some way to add text under the children nodes.  The perhaps (only a wild guess) means that ROChildrenShape should not inherit from RONullShape to be forced to appear at the end of the list of shapes. Or perhaps since ROChildrenShape might be more coupled to the internals than other shapes, something like....
    n1 := ROElement spriteOn: 'XX___'
    n1 + (shape1 := ROLabel new text: #model).
    n1 + (ROLabel new text: #bounds; offset: [ (shape1 bottomLeftCorner) + (n1 childrenShape bottomLeftCorner) ] ).
    rawView add: n1.

Perhaps this is fairly rough - but it at least makes things possible. 

hope that makes sense :)
cheers -ben

Alexandre Bergel wrote:
Hi Ben,

Currently no. We definitely need a better way to specific layouts and their composition. However this will take time before we have this. 

How would you like to specific the layout?

Cheers,
Alexandre


On Aug 30, 2012, at 6:10 PM, Ben Coman <btc@openInWorld.com> wrote:

  
I have been looking at the ROExample "Nesting" examples and expanded #nesting2 with another level as shown in the code below, such that there is the outer view, middle "#1" nodes and inner "#2" nodes. However the initial state of this has much of the middle node1 and inner node2 nodes overlapping. 
How can these be made for the circle layout to leave spacing between the middle node1 nodes?

cheers -ben

--------------------
  | view nodes1 |
  view := ROView new.
  view add: (ROElement sprite addAll: (nodes1 := ROElement spritesOn: (1 to: 10))).
  nodes1 do: [:n | n addShape: ROLabel].
  nodes1 do:
  [     :node1 |
      ( (node1 model) *100+1 to: (node1 model)*100+5 ) do:
      [    :x |
          node1 add: ( (ROElement spriteOn: x) addShape: ROLabel).
      ].
  ROGridLayout on: node1 elements.
  ].

  ROCircleLayout on: nodes1.
  view openInWindow.
_______________________________________________
Moose-dev mailing list
Moose-dev@iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev