that’s important. 
I never understood LayoutFrame… I always finish doing random stuff until I have 
something that “more or less” works :)

> On 09 Jan 2016, at 09:56, stepharo <steph...@free.fr> wrote:
> 
> Here is the new class comments I'm trying to write.
> I hope that it will help people to understand the circumstances under which 
> they should use fractions:offset: creation API.
> 
> 
> 
> I define a transformation frame relative to some rectangle. I'm basic data 
> structure used for graphics.
> I represent two groups of distances:
> - The fractional distance (between 0 and 1) to place the morph in its owner's 
> bounds
> - Fixed pixel offset to apply after fractional positioning (e.g., "10 pixel 
> right of the center of the owner")
> 
> !! API usage
> It is important to understand that it is better to use the fine grained API 
> using elementary distances (bottomFraction:, bottomOffset:, leftFraction: 
> ....) than the ones (historical) using points and rectangles 
> (fractions:offsets:)
> 
> The reason is that the old API (fractions:offsets:) is only interesting if 
> you already have a rectangle and points at hand. If you need to create new 
> ones, then they are created for nothing because they will be destructured to 
> extract their information to be feed into the layoutFrame.
> So please do not blindly copy and paste code!
> 
> Example:
> Favor
> 
>    (LayoutFrame identity
>                leftFraction: 0;
>                yourself);
> 
>    (LayoutFrame identity
>            leftFraction: 0.5;
>            rightFraction: 0.95;
> 
>    (LayoutFrame identity
>            topOffset: topHeight;
>            bottomFraction: 0;
>            bottomOffset: self buttonsBarHeight;
>            leftOffset: -1;
>            rightOffset: 1)
> over
> 
>    (LayoutFrame fractions: (0 @ 0 corner: 1 @ 1))
> 
> because you are creating for nothing a new rectangle and some points.
> 
> 
> 
> !! Implementation
> 
> Instance variables:
> The fractional distance (between 0 and 1) to place the morph in its owner's 
> bounds is represented by the following instance variables:
>    leftFraction
>    topFraction
>    rightFraction
>    bottomFraction     <Float>
> 
> 
> Fixed pixel offset to apply after fractional positioning (e.g., "10 pixel 
> right of the center of the owner")  is represented by the following instance 
> variables:
>    leftOffset
>    topOffset
>    rightOffset
>    bottomOffset     <Integer>
> 


Reply via email to