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> >