Hi, This issue is still pending: https://pharo.fogbugz.com/f/cases/7077/LayoutFrame-refactoring
Let us fix the Glamour issues and then we can deprecate it. Cheers, Doru > On Jan 9, 2016, at 11:54 AM, Thierry Goubier <[email protected]> > wrote: > > Stef, > > could you deprecate the use of fractions:offsets: ? It's a nice way of > shooting oneself in the foot. > > Create a LayoutFrame taking all space: > > LayoutFrame fractions: (0@0 corner: 1@1) > > right? > > Create a layout frame taking all space with an inset of three, so an offset > of +3 left and above, and -3 right and bottom: > > LayoutFrame fractions: (0@0 corner: 1@1) offsets: (3@3 extent: -3@ -3) > > Fail! > > See what I mean? You have to forbid the use of a rectangle for offsets! > > (Note: I think the easiest API is the one used by Spec and Morphic: Rectangle > asLayoutFrame topOffset: / bottomOffset ...) > > Thierry > > Le 09/01/2016 09:56, stepharo a écrit : >> 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> >> >> > > -- www.tudorgirba.com www.feenk.com "The coherence of a trip is given by the clearness of the goal."
