<div dir="ltr"><div>Hi Marcel,</div><div>as you like, however, 0 has the advantage of preserving bounds integrity in case of pure absolute layout, 0.0 is viral ;)<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 17 févr. 2020 à 17:03, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div id="gmail-m_-1491953942327479315__MailbirdStyleContent" style="font-size:10pt;font-family:Arial;color:rgb(0,0,0)">
                                        What about "0.0" instead of "0" for fractions to indicate the expected value?<div><br></div><div>Best,</div><div>Marcel</div><div></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px">
                        <p style="color:rgb(170,170,170);margin-top:10px">Am 17.02.2020 16:45:50 schrieb <a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>>:</p><div style="font-family:Arial,Helvetica,sans-serif">Nicolas Cellier uploaded a new version of Graphics to project The Inbox:<br><a href="http://source.squeak.org/inbox/Graphics-nice.425.mcz" target="_blank">http://source.squeak.org/inbox/Graphics-nice.425.mcz</a><br><br>==================== Summary ====================<br><br>Name: Graphics-nice.425<br>Author: nice<br>Time: 17 February 2020, 4:44:09.459532 pm<br>UUID: 39f72c43-38db-9344-857e-1a109cbedfa2<br>Ancestors: Graphics-pre.424<br><br>Expunge the nil protection out of the LayoutFrame.<br><br>Those additional states (to be or not to be nil...) are gratuitous complexifications. YAGNI.<br>Let's initialize all inst var to zero instead.<br>This will provide a reasonable default (the least surprising one).<br><br>leftOffset = rightOffset = 0 ==> pure proportional layout (no nil offset required).<br><br>leftFraction = rightFraction ==> pure absolute layout (no nil fraction required)<br><br>all zero ==> empty layout.<br><br>Every other combination is possible.<br><br>=============== Diff against Graphics-pre.424 ===============<br><br>Item was added:<br>+ ----- Method: LayoutFrame>>fixup (in category 'initialize-release') -----<br>+ fixup<br>+         "Set-up default value for un-initialized layout frames"<br>+    <br>+     "LayoutFrame allInstancesDo: [:e | e fixup]."<br>+      <br>+     leftFraction ifNil: [leftFraction := 0].<br>+     leftOffset ifNil: [leftOffset := 0].<br>+         topFraction ifNil: [topFraction := 0].<br>+       topOffset ifNil: [topOffset := 0].<br>+   rightFraction ifNil: [rightFraction := 0].<br>+   rightOffset ifNil: [rightOffset := 0].<br>+       bottomFraction ifNil: [bottomFraction := 0].<br>+         bottomOffset ifNil: [bottomOffset := 0].!<br><br>Item was added:<br>+ ----- Method: LayoutFrame>>initialize (in category 'initialize-release') -----<br>+ initialize<br>+   "By defalut, let the frame be empty"<br>+       <br>+     leftFraction := leftOffset := topFraction := topOffset := rightFraction := rightOffset := bottomFraction := bottomOffset := 0!<br><br>Item was changed:<br>  ----- Method: LayoutFrame>>layout:in: (in category 'layout') -----<br>  layout: oldBounds in: newBounds<br>    "Return the proportional rectangle insetting the given bounds"<br>+     | left right top bottom | <br>+   left := newBounds left + (newBounds width * leftFraction).<br>+   left := left + leftOffset.<br>+   right := newBounds right - (newBounds width * (1.0 - rightFraction)).<br>+        right := right + rightOffset.<br>+        top := newBounds top + (newBounds height * topFraction).<br>+     top := top + topOffset.<br>+      bottom := newBounds bottom - (newBounds height * (1.0 - bottomFraction)).<br>+    bottom := bottom + bottomOffset.<br>-     | left right top bottom |<br>-    leftFraction ifNotNil:[<br>-              left := newBounds left + (newBounds width * leftFraction).<br>-           leftOffset ifNotNil:[left := left + leftOffset]].<br>-    rightFraction ifNotNil:[<br>-             right := newBounds right - (newBounds width * (1.0 - rightFraction)).<br>-                rightOffset ifNotNil:[right := right + rightOffset]].<br>-        topFraction ifNotNil:[<br>-               top := newBounds top + (newBounds height * topFraction).<br>-             topOffset ifNotNil:[top := top + topOffset]].<br>-        bottomFraction ifNotNil:[<br>-            bottom := newBounds bottom - (newBounds height * (1.0 - bottomFraction)).<br>-            bottomOffset ifNotNil:[bottom := bottom + bottomOffset]].<br>-    left ifNil:[ right <br>-                  ifNil:[left := oldBounds left. right := oldBounds right]<br>-                     ifNotNil:[left := right - oldBounds width]].<br>-         right ifNil:[right := left + oldBounds width].<br>-       top ifNil:[ bottom <br>-                  ifNil:[top := oldBounds top. bottom := oldBounds bottom]<br>-                     ifNotNil:[top := bottom - oldBounds height]].<br>-        bottom ifNil:[bottom := top + oldBounds height].<br>      ^(left rounded @ top rounded) corner: (right rounded @ bottom rounded)!<br><br>Item was changed:<br>  ----- Method: LayoutFrame>>minHeightFrom: (in category 'layout') -----<br>  minHeightFrom: minHeight<br>      "Return the minimal extent the given bounds can be represented in"<br>+         | height |<br>+   height := bottomFraction = topFraction<br>-       | height top bottom |<br>-        top := topFraction ifNil: [0.0].<br>-     bottom := bottomFraction ifNil: [1.0].<br>-       height := bottom = top<br>                ifTrue: [0]<br>+          ifFalse: [minHeight / (bottomFraction - topFraction)].<br>+       height := height + topOffset + bottomOffset.<br>-                 ifFalse: [minHeight / (bottom - top)].<br>-       topOffset ifNotNil:[height := height + topOffset].<br>-   bottomOffset ifNotNil:[height := height + bottomOffset].<br>      ^ height truncated!<br><br>Item was changed:<br>  ----- Method: LayoutFrame>>minWidthFrom: (in category 'layout') -----<br>  minWidthFrom: minWidth<br>     "Return the minimal extent the given bounds can be represented in"<br>+         | width |<br>+    width := leftFraction = rightFraction<br>-        | width left right |<br>-         left := leftFraction ifNil: [0.0].<br>-   right := rightFraction ifNil: [1.0].<br>-         width := left = right<br>                 ifTrue: [0]<br>+          ifFalse: [minWidth / (rightFraction - leftFraction)].<br>+        width := width + leftOffset + rightOffset.<br>-           ifFalse: [minWidth / (right - left)].<br>-        leftOffset ifNotNil:[width := width + leftOffset].<br>-   rightOffset ifNotNil:[width := width + rightOffset].<br>          ^width truncated!<br><br>Item was changed:<br>  ----- Method: LayoutFrame>>printOn: (in category 'printing') -----<br>  printOn: aStream<br>  <br>    super printOn: aStream.<br>       <br>      aStream nextPutAll: '( '.<br>     <br>      { {'l'. self leftFraction. self leftOffset}. {'t'. self topFraction. self topOffset}. {'r'. self rightFraction. self rightOffset}. {'b'. self bottomFraction. self bottomOffset} } do: [:spec |<br>               aStream nextPutAll: spec first; space.<br>                <br>              spec second printOn: aStream maxDecimalPlaces: 2.<br>             <br>+             aStream nextPutAll: (spec third >= 0 ifTrue: ['+'] ifFalse: ['-']).<br>+               spec third abs printOn: aStream maxDecimalPlaces: 0]<br>-                 aStream nextPutAll: ((spec third ifNil: [0]) >= 0 ifTrue: ['+'] ifFalse: ['-']).<br>-          (spec third ifNil: [0]) abs printOn: aStream maxDecimalPlaces: 0]<br>                     separatedBy: [aStream space].<br>                         <br>      aStream nextPutAll: ' )'.!<br><br><br></div></blockquote>
                                        </div></div><br>
</blockquote></div>