Hi,

Great! Alex? :)

About your question: the effect looks as if the rectangle is drawn with multiple lines, and thus when overlapping, the colors are composed.

Cheers,
Doru



On Thu, Oct 10, 2013 at 10:49 PM, roberto.minelli@usi.ch <roberto.minelli@usi.ch> wrote:
Hi,

I renamed all the classes which compose the tree map builder to RO* and they are ready for prime time (i.e., integration in Roassal or Moose).

In addition I provided a ROTreeMapBuilderExample with 10-ish examples on how to use the builder. I should comment the code, but I will do that tomorrow ;) I also committed a specialization of the ROBorder, a ROInnerBorder. As the class name says, it creates the border within the element's shape (i.e., better when lay outing). It's not fully functional, but I already tried out on my tree map and most of the times is ok ;)

Waiting for your feedback and comments.

P.s.: Why if a ROLine is filled with a translucent color its begin and end points are shaded-ish?
Here's a screenshot @ https://dl.dropboxusercontent.com/u/6281855/gradient-begin-end.png

Cheers,
Roby


On Oct 10, 2013, at 8:26 AM, roberto.minelli@usi.ch wrote:

>
> On Oct 9, 2013, at 9:31 PM, Tudor Girba <tudor@tudorgirba.com> wrote:
>
>> Nice! I want this integrated in Roassal, or at least in Moose. Alex?
>
> Would be cool!
>
>> About LinearColorNormalizer vs. mix:shades:.
>>
>> LinearColorNormalizer is better in that it does not create the actual colors. Imagine that you have 2 nodes: one with weight 1 and one with weight 10000. Using mix:shades: you will generate 10000 shades. With LinearColorNormalizer you will generate exactly 2.
>
> Oh, I see. I will probably switch to the color normalizer then!
>
>>
>> Doru
>>
>>
>>
>> On Wed, Oct 9, 2013 at 11:43 AM, roberto.minelli@usi.ch <roberto.minelli@usi.ch> wrote:
>> Now you can shade strokes with the message #withShadedFramesFromColor:toColor:.
>> HoweverI kept the default shading with the message #withShadedFrames with hardcoded strategy & color.
>>
>> Cheers,
>> Roby
>>
>> On Oct 9, 2013, at 11:28 AM, "roberto.minelli@usi.ch" <roberto.minelli@usi.ch>
>> wrote:
>>
>>> Hi Doru,
>>>
>>> I just added options for shading (on nodes this time) so that you do not have to care about the colors explicitly.
>>>
>>> Now we have the messages for:
>>> - #withShadesOnWeightFromColor:toColor: --> Applies the shading on the weight of the node
>>> - #withShadesOnNestingFromColor:toColor: --> Applies the shading on the nesting level of the node
>>>
>>> What's the real difference between a LinearColorNormalizer and #mix:shades: I really like  #mix:shades: :D
>>>
>>> In a minute I will also provide what you said for the shaded frames: #withShadedFrames was an example on how to produce framed tree maps with a single message ;)
>>>
>>> Cheers,
>>> Roby
>>>
>>> On Oct 9, 2013, at 10:47 AM, Tudor Girba <tudor@tudorgirba.com> wrote:
>>>
>>>> Ok, I took a closer look and you already implemented almost what I said :).
>>>>
>>>> So, let's take a look:
>>>> withShadedFrames
>>>>     self inset: 1.
>>>>     self strokeAllNodesWithColorBlock: [ :el |
>>>>             Color darkGray darker adjustSaturation: (-0.03 * el depth) brightness: (el depth * 0.08).
>>>>     ].
>>>>
>>>> This is a good start, but:
>>>> - Color darkGray should not be hardcoded
>>>> - The actual darkening strategy should not be hardcoded either
>>>>
>>>> I would suggest to use a LinearColorNormalizer instead. This allows you to specify both the min and max color. What do you say?
>>>>
>>>> Cheers,
>>>> Doru
>>>>
>>>>
>>>>
>>>> On Wed, Oct 9, 2013 at 10:11 AM, Tudor Girba <tudor@tudorgirba.com> wrote:
>>>> Nice!
>>>>
>>>> I just do not understand why colors has the same size as the nodes collection. It should have the same size as the max nesting level. What do I get wrong?
>>>>
>>>> In any case, I think for shading we need also strategy that hides the implementation details (so, no explicit color creation). I think that we can just give a min and a max and then simply use a linear color normalizer internally. Of course, we also need a way to marry such an implicit strategy with the possibility of custom colors :). Proposals?
>>>>
>>>> Doru
>>>>
>>>>
>>>> On Wed, Oct 9, 2013 at 10:02 AM, roberto.minelli@usi.ch <roberto.minelli@usi.ch> wrote:
>>>> Sorry, DropBox messed up the image name. I updated the file ;)
>>>>
>>>> On Oct 9, 2013, at 9:57 AM, Yuriy Tymchuk <yuriy.tymchuk@me.com> wrote:
>>>>
>>>>> 404 on dropbox
>>>>>
>>>>> On Oct 9, 2013, at 9:30 AM, roberto.minelli@usi.ch wrote:
>>>>>
>>>>>> Here is another way to visualize the nesting, with frames. It's enough to call #withShadedFrames. How cool is that?
>>>>>>
>>>>>> Here's a sample visualization @ https://dl.dropboxusercontent.com/u/6281855/treemap-frames.png
>>>>>>
>>>>>> And here's the script:
>>>>>> =-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-
>>>>>>
>>>>>> builder := DFTreeMapBuilder new.
>>>>>> builder weightBlock: [ :el | el ].
>>>>>> builder nodes: (1 to: 100).
>>>>>> builder nestingFromAssociations: (builder nodes allButFirst collect: [:each | (each // 2) -> each ]).
>>>>>>
>>>>>> "Some optional configurations parameters"
>>>>>> colors := (Color lightBlue) mix: Color blue shades: (builder nodes size).
>>>>>> builder colorBlock: [ :el | colors at: el ].
>>>>>> builder rootColor: (Color red).
>>>>>> builder extent: 521@312.
>>>>>> builder origin: 20@20.
>>>>>>
>>>>>> builder withShadedFrames.
>>>>>>
>>>>>> builder draw.
>>>>>> =-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-=-=-=--=-=-=-
>>>>>>
>>>>>> Roby
>>>>>>
>>>>>> On Oct 9, 2013, at 8:12 AM, "roberto.minelli@usi.ch" <roberto.minelli@usi.ch>
>>>>>> wrote:
>>>>>>
>>>>>>> And yes, now the tree map builder does no longer use z-ordering to lay out the elements ;)
>>>>>>>
>>>>>>> On Oct 8, 2013, at 12:51 PM, Alexandre Bergel <alexandre.bergel@me.com> wrote:
>>>>>>>
>>>>>>>> Ok, excellent!!!
>>>>>>>>
>>>>>>>> Alexandre
>>>>>>>>
>>>>>>>>> Le 08-10-2013 à 6:44, "roberto.minelli@usi.ch" <roberto.minelli@usi.ch> a écrit :
>>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I made a couple of changes of the builder as per your suggestions. An updated usage script would be:
>>>>>>>>>
>>>>>>>>>> builder := DFTreeMapBuilder new.
>>>>>>>>>> builder weightBlock: [ :el | el ].
>>>>>>>>>> builder nodes: (1 to: 50).
>>>>>>>>>> builder nestingFromAssociations: (builder nodes allButFirst collect: [:each | (each // 2) -> each ]).
>>>>>>>>>>
>>>>>>>>>> "Some optional configurations parameters"
>>>>>>>>>> colors := Color green mix: Color blue shades: (builder nodes size).
>>>>>>>>>> builder colorBlock: [ :el | colors at: el ].
>>>>>>>>>> builder rootColor: ((Color red) alpha: 0.5).
>>>>>>>>>> builder inset: 5.
>>>>>>>>>> builder extent: 300@400.
>>>>>>>>>> builder origin: 10@30.
>>>>>>>>>>
>>>>>>>>>> "Some node-specific customization"
>>>>>>>>>> builder fillNodes: [ :n | (n > 40) ] withColor: (Color white).
>>>>>>>>>> builder fillNode: 50 withColor: (Color yellow).
>>>>>>>>>> builder fillNode: 43 withColor: (Color green).
>>>>>>>>>>
>>>>>>>>>> builder strokeNodes: [ :n | (n \\ 2) = 1 ] withColor: (Color blue).
>>>>>>>>>> builder strokeNode: 13 withColor: (Color black).
>>>>>>>>>>
>>>>>>>>>> builder strokeNodes: [ :n | (n \\ 6) = 0 ] withWidth: 2.
>>>>>>>>>> builder strokeNode: 3 withColor: (Color red).
>>>>>>>>>> builder strokeNode: 3 withWidth: 3.
>>>>>>>>>>
>>>>>>>>>> "Using the #drawOn: message for compatibility with ROMondrianViewBuilder"
>>>>>>>>>> view := ROView new.
>>>>>>>>>> view @ RODraggable.
>>>>>>>>>> builder drawOn: view.
>>>>>>>>>> view open.
>>>>>>>>>
>>>>>>>>> And the resulting tree map @ https://dl.dropboxusercontent.com/u/6281855/updated-treemap.png
>>>>>>>>>
>>>>>>>>> Now I am converting from z-ordering to nesting. Stay tuned ;)
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Roby
>>>>>>>>>
>>>>>>>>>> On Oct 7, 2013, at 7:33 PM, Alexandre Bergel <alexandre.bergel@me.com> wrote:
>>>>>>>>>>
>>>>>>>>>> Looks good to me.
>>>>>>>>>> Maybe you could have in addition to
>>>>>>>>>> DFTreeMapBuilder>>associations:
>>>>>>>>>> something
>>>>>>>>>> DFTreeMapBuilder>>parent: aBlockOrASymbol
>>>>>>>>>>
>>>>>>>>>> Also, something very important that I forgot to mention, we need a method DFTreeMapBuilder>>drawOn: aROView
>>>>>>>>>>
>>>>>>>>>> Like that, we should be able to have a treemap when using the mondrian builder. Using your example, we should have exactly the same result if we do:
>>>>>>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>>>>>>> builder := DFTreeMapBuilder new.
>>>>>>>>>> builder ... // your example here
>>>>>>>>>>
>>>>>>>>>> view := ROView new.
>>>>>>>>>> builder drawOn: view.
>>>>>>>>>> view open
>>>>>>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Alexandre
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> On Oct 7, 2013, at 1:07 PM, "roberto.minelli@usi.ch" <roberto.minelli@usi.ch> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> I finished the first version of the new tree map builder for Roassal.
>>>>>>>>>>>
>>>>>>>>>>> You can find the source code in my SmalltalkHub package 'DevFlow-View'!
>>>>>>>>>>>
>>>>>>>>>>> Gofer new
>>>>>>>>>>> smalltalkhubUser: 'RobertoMinelli' project: 'DevFlow';
>>>>>>>>>>> package: 'DevFlow-View';
>>>>>>>>>>> load.
>>>>>>>>>>>
>>>>>>>>>>> Here's an example usage:
>>>>>>>>>>>
>>>>>>>>>>> builder := DFTreeMapBuilder new.
>>>>>>>>>>> builder weightBlock: [ :el | el ].
>>>>>>>>>>> builder nodes: (1 to: 50).
>>>>>>>>>>> builder associations: (builder nodes allButFirst collect: [:each | (each // 2) -> each ]).
>>>>>>>>>>>
>>>>>>>>>>> "Some optional configurations parameters"
>>>>>>>>>>> colors := Color white mix: Color blue shades: (builder nodes size).
>>>>>>>>>>> builder colorBlock: [ :el | colors at: el ].
>>>>>>>>>>> builder rootColor: ((Color red) alpha: 0.5).
>>>>>>>>>>> builder inset: 5.
>>>>>>>>>>> builder extent: 500@300.
>>>>>>>>>>> builder origin: 10@30.
>>>>>>>>>>>
>>>>>>>>>>> builder draw.
>>>>>>>>>>>
>>>>>>>>>>> And the resulting tree map!
>>>>>>>>>>>
>>>>>>>>>>> [cid:EC2669CC-CA97-4B81-8B1B-B792FBE1C04F@mobile.usilu.net]
>>>>>>>>>>>
>>>>>>>>>>> Please tell me what do you think!
>>>>>>>>>>>
>>>>>>>>>>> The next steps are:
>>>>>>>>>>> - Add customizable interactions
>>>>>>>>>>> - Remove z-ordering and use proper nesting
>>>>>>>>>>> - Eventually unroll the recursion in the layout algorithm
>>>>>>>>>>>
>>>>>>>>>>> Cheers,
>>>>>>>>>>> Roberto
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>>>>>>> Alexandre Bergel  http://www.bergel.eu
>>>>>>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Moose-dev mailing list
>>>>>>> Moose-dev@iam.unibe.ch
>>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Moose-dev mailing list
>>>>>> Moose-dev@iam.unibe.ch
>>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Moose-dev mailing list
>>>>> Moose-dev@iam.unibe.ch
>>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>
>>>>
>>>> _______________________________________________
>>>> Moose-dev mailing list
>>>> Moose-dev@iam.unibe.ch
>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>>
>>>>
>>>>
>>>> --
>>>> www.tudorgirba.com
>>>>
>>>> "Every thing has its own flow"
>>>>
>>>>
>>>>
>>>> --
>>>> www.tudorgirba.com
>>>>
>>>> "Every thing has its own flow"
>>>> _______________________________________________
>>>> Moose-dev mailing list
>>>> Moose-dev@iam.unibe.ch
>>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>>
>>>
>>> _______________________________________________
>>> Moose-dev mailing list
>>> Moose-dev@iam.unibe.ch
>>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>
>>
>> _______________________________________________
>> Moose-dev mailing list
>> Moose-dev@iam.unibe.ch
>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>>
>>
>>
>> --
>> www.tudorgirba.com
>>
>> "Every thing has its own flow"
>> _______________________________________________
>> Moose-dev mailing list
>> Moose-dev@iam.unibe.ch
>> https://www.iam.unibe.ch/mailman/listinfo/moose-dev
>
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev@iam.unibe.ch
> https://www.iam.unibe.ch/mailman/listinfo/moose-dev




--
www.tudorgirba.com

"Every thing has its own flow"