<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        +1<div class="mb_sig"></div><blockquote class='history_container' type='cite' style='border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;'>
                        <p style='color: #AAAAAA; margin-top: 10px;'>Am 19.08.2022 15:55:42 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style='font-family:Arial,Helvetica,sans-serif'>Nicolas Cellier uploaded a new version of Graphics to project The Inbox:<br>http://source.squeak.org/inbox/Graphics-nice.535.mcz<br><br>==================== Summary ====================<br><br>Name: Graphics-nice.535<br>Author: nice<br>Time: 19 August 2022, 3:55:21.336121 pm<br>UUID: 51ad8137-3d54-2a4e-b30b-c30462a833ed<br>Ancestors: Graphics-mt.534<br><br>Fix Color mercury (scaled components missing a range spec),<br>provide an accelerated constructor for Color,<br>and use it for some named colors.<br><br>Comparing these:<br><br>    {<br>    [Color r: 16r04/255 g: 16r02/255 b: 16rFF/255] bench.<br>    [Color r: 16r04 g: 16r02 b: 16rFF range: 255] bench.<br>    }<br><br>I get near 9x acceleration on Spur64<br><br>=============== Diff against Graphics-mt.534 ===============<br><br>Item was changed:<br>  ----- Method: Color class>>aluminum (in category 'named colors - crayons') -----<br>  aluminum<br>  <br>+     ^ Color r: 153 g: 153 b: 153 range: 255!<br>-     ^ Color r: 153/255 g: 153/255 b: 153/255!<br><br>Item was changed:<br>  ----- Method: Color class>>aqua (in category 'named colors - crayons') -----<br>  aqua<br>  <br>+     ^ Color r: 0 g: 128 b: 255 range: 255!<br>-       ^ Color r: 0.0 g: 128/255 b: 1.0!<br><br>Item was changed:<br>  ----- Method: Color class>>asparagus (in category 'named colors - crayons') -----<br>  asparagus<br>  <br>+   ^ Color r: 128 g: 128 b: 0 range: 255!<br>-       ^ Color r: 128/255 g: 128/255 b: 0.0!<br><br>Item was changed:<br>  ----- Method: Color class>>banana (in category 'named colors - crayons') -----<br>  banana<br>  <br>+     ^ Color r: 255 g: 255 b: 102 range: 255!<br>-     ^ Color r: 1.0 g: 1.0 b: 102/255!<br><br>Item was changed:<br>  ----- Method: Color class>>bubblegum (in category 'named colors - crayons') -----<br>  bubblegum<br>  <br>+   ^ Color r: 255 g: 102  b: 255 range: 255!<br>-    ^ Color r: 1.0 g: 102/255 b: 1.0!<br><br>Item was changed:<br>  ----- Method: Color class>>carnation (in category 'named colors - crayons') -----<br>  carnation<br>  <br>+   ^ Color r: 255 g: 111 b: 207 range: 255!<br>-     ^ Color r: 1.0 g: 111/255 b: 207/255!<br><br>Item was changed:<br>  ----- Method: Color class>>cayenne (in category 'named colors - crayons') -----<br>  cayenne<br>  <br>+   ^ Color r: 128 g: 0 b: 0 range: 255!<br>-         ^ Color r: 128/255 g: 0.0 b: 0.0!<br><br>Item was changed:<br>  ----- Method: Color class>>clover (in category 'named colors - crayons') -----<br>  clover<br>  <br>+         ^ Color r: 0 g: 128 b: 0 range: 255!<br>-         ^ Color r: 0.0 g: 128/255 b: 0.0!<br><br>Item was changed:<br>  ----- Method: Color class>>eggplant (in category 'named colors - crayons') -----<br>  eggplant<br>  <br>+     ^ Color r: 64 g: 0 b: 128 range: 255!<br>-        ^ Color r: 64/255 g: 0.0 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>fern (in category 'named colors - crayons') -----<br>  fern<br>  <br>+  ^ Color r: 64 g: 128 b: 0 range: 255!<br>-        ^ Color r: 64/255 g: 128/255 b: 0.0!<br><br>Item was changed:<br>  ----- Method: Color class>>flora (in category 'named colors - crayons') -----<br>  flora<br>  <br>+        ^ Color r: 102 g: 255 b: 102 range: 255!<br>-     ^ Color r: 102/255 g: 1.0 b: 102/255!<br><br>Item was changed:<br>  ----- Method: Color class>>grape (in category 'named colors - crayons') -----<br>  grape<br>  <br>+       ^ Color r: 128 g: 0 b: 255 range: 255!<br>-       ^ Color r: 128/255 g: 0.0 b: 1.0!<br><br>Item was changed:<br>  ----- Method: Color class>>honeydew (in category 'named colors - crayons') -----<br>  honeydew<br>  <br>+     ^ Color r: 204 g: 255 b: 102 range: 255!<br>-     ^ Color r: 204/255 g: 1.0 b: 102/255!<br><br>Item was changed:<br>  ----- Method: Color class>>ice (in category 'named colors - crayons') -----<br>  ice<br>+       ^Color r: 16r99 g: 16rFF b: 16rFF range: 255!<br>- <br>-    ^ Color r: 102/255 g: 1.0 b: 1.0!<br><br>Item was changed:<br>  ----- Method: Color class>>iron (in category 'named colors - crayons') -----<br>  iron<br>  <br>+     ^ Color r: 76 g: 76 b: 76 range: 255!<br>-        ^ Color r: 76/255 g: 76/255 b: 76/255!<br><br>Item was changed:<br>  ----- Method: Color class>>lavender (in category 'named colors - crayons') -----<br>  lavender<br>  <br>+        ^ Color r: 204 g: 102 b: 255 range: 255!<br>-     ^ Color r: 204/255 g: 102/255 b: 1.0!<br><br>Item was changed:<br>  ----- Method: Color class>>lead (in category 'named colors - crayons') -----<br>  lead<br>  <br>+         ^ Color r: 25 g: 25 b: 25 range: 255!<br>-        ^ Color r: 25/255 g: 25/255 b: 25/255!<br><br>Item was changed:<br>  ----- Method: Color class>>lime (in category 'named colors - crayons') -----<br>  lime<br>  <br>+        ^ Color r: 128 g: 255 b: 0 range: 255!<br>-       ^ Color r: 128/255 g: 1.0 b: 0.0!<br><br>Item was changed:<br>  ----- Method: Color class>>magnesium (in category 'named colors - crayons') -----<br>  magnesium<br>  <br>+   ^ Color r: 179 g: 179 b: 179 range: 255!<br>-     ^ Color r: 179/255 g: 179/255 b: 179/255!<br><br>Item was changed:<br>  ----- Method: Color class>>maroon (in category 'named colors - crayons') -----<br>  maroon<br>  <br>+         ^ Color r: 128 g: 0 b: 64 range: 255!<br>-        ^ Color r: 128/255 g: 0.0 b: 64/255!<br><br>Item was changed:<br>  ----- Method: Color class>>mercury (in category 'named colors - crayons') -----<br>  mercury<br>  <br>+    ^ Color r: 230 g: 230 b: 230 range: 255!<br>-     ^ Color r: 230.0 g: 230.0 b: 230.0!<br><br>Item was changed:<br>  ----- Method: Color class>>midnight (in category 'named colors - crayons') -----<br>  midnight<br>  <br>+   ^ Color r: 0 g: 0 b: 128 range: 255!<br>-         ^ Color r: 0.0 g: 0.0 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>mocha (in category 'named colors - crayons') -----<br>  mocha<br>  <br>+   ^ Color r: 128 g: 64 b: 0 range: 255!<br>-        ^ Color r: 128/255 g: 64/255 b: 0.0!<br><br>Item was changed:<br>  ----- Method: Color class>>moss (in category 'named colors - crayons') -----<br>  moss<br>  <br>+  ^ Color r: 0 g: 128 b: 64 range: 255!<br>-        ^ Color r: 0.0 g: 128/255 b: 64/255!<br><br>Item was changed:<br>  ----- Method: Color class>>nickel (in category 'named colors - crayons') -----<br>  nickel<br>  <br>+      ^ Color r: 128 g: 128 b: 128 range: 255!<br>-     ^ Color r: 128/255 g: 128/255 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>ocean (in category 'named colors - crayons') -----<br>  ocean<br>  <br>+   ^ Color r: 0 g: 64 b: 128 range: 255!<br>-        ^ Color r: 0.0 g: 64/255 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>orchid (in category 'named colors - crayons') -----<br>  orchid<br>  <br>+      ^ Color r: 102 g: 102 b: 255 range: 255!<br>-     ^ Color r: 102/255 g: 102/255 b: 1.0!<br><br>Item was changed:<br>  ----- Method: Color class>>plum (in category 'named colors - crayons') -----<br>  plum<br>  <br>+         ^ Color r: 128 g: 0 b: 128 range: 255!<br>-       ^ Color r: 128/255 g: 0.0 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>salmon (in category 'named colors - crayons') -----<br>  salmon<br>  <br>+     ^ Color r: 255 g: 102 b: 102 range: 255!<br>-     ^ Color r: 1.0 g: 102/255 b: 102/255!<br><br>Item was changed:<br>  ----- Method: Color class>>seaFoam (in category 'named colors - crayons') -----<br>  seaFoam<br>  <br>+   ^ Color r: 0 g: 1 b: 128 range: 255!<br>-         ^ Color r: 0.0 g: 1.0 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>silver (in category 'named colors - crayons') -----<br>  silver<br>  <br>+         ^ Color r: 204 g: 204 b: 204 range: 255!<br>-     ^ Color r: 204/255 g: 204/255 b: 204/255!<br><br>Item was changed:<br>  ----- Method: Color class>>sky (in category 'named colors - crayons') -----<br>  sky<br>  <br>+       ^ Color r: 102 g: 204 b: 255 range: 255!<br>-     ^ Color r: 102/255 g: 204/255 b: 1.0!<br><br>Item was changed:<br>  ----- Method: Color class>>spindrift (in category 'named colors - crayons') -----<br>  spindrift<br>  <br>+       ^ Color r: 102 g: 255 b: 204 range: 255!<br>-     ^ Color r: 102/255 g: 1.0 b: 204/255!<br><br>Item was changed:<br>  ----- Method: Color class>>steel (in category 'named colors - crayons') -----<br>  steel<br>  <br>+       ^ Color r: 102 g: 102 b: 102 range: 255!<br>-     ^ Color r: 102/255 g: 102/255 b: 102/255!<br><br>Item was changed:<br>  ----- Method: Color class>>strawberry (in category 'named colors - crayons') -----<br>  strawberry<br>  <br>+         ^ Color r: 255 g: 0 b: 128 range: 255!<br>-       ^ Color r: 1.0 g: 0.0 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>tangerine (in category 'named colors - crayons') -----<br>  tangerine<br>  <br>+   ^ Color r: 255 g: 128 b: 0 range: 255!<br>-       ^ Color r: 1.0 g: 128/255 b: 0.0!<br><br>Item was changed:<br>  ----- Method: Color class>>teal (in category 'named colors - crayons') -----<br>  teal<br>  <br>+     ^ Color r: 0 g: 128 b: 128 range: 255!<br>-       ^ Color r: 0.0 g: 128/255 b: 128/255!<br><br>Item was changed:<br>  ----- Method: Color class>>tin (in category 'named colors - crayons') -----<br>  tin<br>  <br>+   ^ Color r: 127 g: 127 b: 127 range: 255!<br>-     ^ Color r: 127/255 g: 127/255 b: 127/255!<br><br>Item was changed:<br>  ----- Method: Color class>>tungsten (in category 'named colors - crayons') -----<br>  tungsten<br>  <br>+     ^ Color r: 51 g: 51 b: 51 range: 255!<br>-        ^ Color r: 51/255 g: 51/255 b: 51/255!<br><br>Item was changed:<br>  ----- Method: Color>>asColorref (in category 'conversions') -----<br>  asColorref<br>+         "Convert the receiver into a colorref<br>+   See https://docs.microsoft.com/en-us/windows/win32/gdi/colorref"<br>-        "Convert the receiver into a colorref"<br>      ^ (self red * 255) rounded + ((self green * 255) rounded << 8) + ((self blue * 255) rounded << 16)!<br><br>Item was added:<br>+ ----- Method: Color>>setRed8:green8:blue8: (in category 'private') -----<br>+ setRed8: r green8: g blue8: b<br>+        "Initialize this color's r, g, and b components to the given values in the range [0..255].<br>+      Use an optimized operation rather than a slow division"<br>+         <br>+     "<br>+       self assert: ((0 to: 255) allSatisfy: [:e | (e*1023/255) rounded = (e * 16r403 + 16r81 >> 8)]).<br>+        "<br>+ <br>+   ComponentMax = 1023 ifFalse: [^self setRed: r / 255 green: g / 255 blue: b / 255].<br>+   rgb == nil ifFalse: [self attemptToMutateError].<br>+     rgb := ((r* 16r403 + 16r81 >> 8) bitShift: RedShift) <br>+          + ((g* 16r403 + 16r81 >> 8) bitShift: GreenShift) <br>+             + ((b* 16r403 + 16r81 >> 8)).<br>+  cachedDepth := nil.<br>+  cachedBitPattern := nil.!<br><br>Item was changed:<br>  ----- Method: Color>>setRed:green:blue:range: (in category 'private') -----<br>  setRed: r green: g blue: b range: range<br>        "Initialize this color's r, g, and b components to the given values in the range [0..r]."<br>  <br>+      range = 255 ifTrue: [^self setRed8: r green8: g blue8: b].<br>    ^ self setRed: r / range green: g / range blue: b / range!<br><br><br></div></blockquote>
                                        </div></body>