Begin forwarded message:

From: Michael Lucas-Smith <michael.lucassmith@gmail.com>
Subject: Re: [vwnc] Doodling with Cairo...
Date: July 24, 2013 12:31:24 PM GMT+02:00
To: stewart@xtra.co.nz
Cc: vwnc@cs.uiuc.edu

Hi Stewart,

Gizmo was just something Travis Griggs and I made to experiment with CairoGraphics. We wanted to see how it would perform, what kinds of issues we might run in to using Cairo resources in widgets, that sort of thing.

The doodle layout algorithm is a variant of the CSS layout algorithm, significantly simplified, by me as a way to avoid having to do a full on layout algorithm but still get the majority of what we needed to experimenting. This approach to layout is not the future for the UI, we have other plans there using a constraint based solver that has been proven in production code both in Smalltalk and in other languages.

As an experiment, it was a complete success - we sold ourselves on the idea that Cairo was completely viable for our customers to use for this kind of work (ie: custom widgets) and potentially for doing the core widgets too. Some of the people in the community have gone even further, making graphics contexts that use CairoGraphics and whole suits of widgets. It's inspiring and very cool.

So, you've stumbled upon some of the humble beginnings - I frankly didn't realise we'd put that stuff in the open repository, I thought we'd left it in our private repository. Have fun with it if you want.. somewhere in there is my fancy clock that moves the numbers instead of the clock hands and also a Dr. Who animation.

Cheers,
Michael

On 10/01/2008, at 2:34 AM, Stewart MacLean <stewart@xtra.co.nz> wrote:

Hi,

 

I�ve been experimenting with the various Cairo bits and pieces trying to figure out how to get a nice looking tree/UI � some interesting stuff! (thanks for the previous pointers, everyone).

 

One of which is the Gizmo � which on first impression I wondered what�s with all these pink rectangles?

 

But delving deeper it looks like a pretty cool open ended framework � I�ve been experimenting with nesting and it sort of works, but not sure if I�m configuring it correctly.

 

The Cairo Wrapper Kit is a piece of art, but I�m struggling to get my head around it � wrapper hell?

 

Anyway, I was wondering where the �Doodle Layout Algorithm� came from? � all I can find are references to a constraint based object visualization system from the mid 90�s.

 

BTW, I know Smalltalk is generally self documenting code, but some �big picture� class/package documentation with these lovely experiments would make them a lot more accessible!

 

Cheers,

 

Stewart

 

 

Gizmo>>layoutFromIndex: index

            "** The Doodle Layout Algorithm **

1) Use desiredLayoutBlock to find out what we want as our bounds inside the availableExtent given to us. Store this in @desired.

2) Figure out what extent we want to offer our children based on our @desired bounds. Store this in @offered.

            @desired may contain a width/height of BlockClosure. In this case, we offer the

            available space for that dimension to our children

3) Offer the @offered space to each child, storing their @requested space

4) Keep a record of the @maximum extent that our children reach inside us so that we can decide how to clip correctly.

5) <pluggable> Use our child layout algorithm to position and size the @requested space as the @bounds of the child

6) Return our @desired bounds to our parent as a requested space replacing any BlockClosure with details from our children's @maximum extent.

."

 

 

_______________________________________________
vwnc mailing list
vwnc@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
vwnc@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc