<div dir="ltr">Cool <div><br></div><div>Karl</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 17, 2015 at 2:37 PM,  <span dir="ltr">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Tim Felgentreff uploaded a new version of Graphics to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/Graphics-tfel.310.mcz" target="_blank">http://source.squeak.org/trunk/Graphics-tfel.310.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Graphics-tfel.310<br>
Author: tfel<br>
Time: 17 April 2015, 2:37:38.42 pm<br>
UUID: dcfe87bc-46ca-c04e-b99b-5a711f8a8c9e<br>
Ancestors: Graphics-tk.309<br>
<br>
add convolution to forms and some common kernels for blurring, sharpening and so on<br>
<br>
=============== Diff against Graphics-tk.309 ===============<br>
<br>
Item was added:<br>
+ ----- Method: Form&gt;&gt;approxGaussianBlur (in category &#39;processing&#39;) -----<br>
+ approxGaussianBlur<br>
+<br>
+       ^ self processUsingKernel: (Matrix rows: 3 columns: 3 contents: #(<br>
+                1 2 1<br>
+                2 4 2<br>
+                1 2 1<br>
+       ) *  0.0625)!<br>
<br>
Item was added:<br>
+ ----- Method: Form&gt;&gt;edgeDetect (in category &#39;processing&#39;) -----<br>
+ edgeDetect<br>
+<br>
+       ^ self processUsingKernel: (Matrix rows: 3 columns: 3 contents: #(<br>
+               -1 -1 -1<br>
+               -1  8 -1<br>
+               -1 -1 -1<br>
+       ))!<br>
<br>
Item was added:<br>
+ ----- Method: Form&gt;&gt;emboss (in category &#39;processing&#39;) -----<br>
+ emboss<br>
+<br>
+       ^ self processUsingKernel: (Matrix rows: 3 columns: 3 contents: #(<br>
+               -2 -1  0<br>
+               -1  1  1<br>
+                0  1  2<br>
+       ))!<br>
<br>
Item was added:<br>
+ ----- Method: Form&gt;&gt;processUsingKernel: (in category &#39;processing&#39;) -----<br>
+ processUsingKernel: filter<br>
+<br>
+       ^ self processUsingKernel: filter factor: 1.0 bias: 0.0!<br>
<br>
Item was added:<br>
+ ----- Method: Form&gt;&gt;processUsingKernel:factor:bias: (in category &#39;processing&#39;) -----<br>
+ processUsingKernel: filter factor: factor bias: bias<br>
+       | image result |<br>
+<br>
+       image := self.<br>
+       result := Form extent: image extent depth: image depth.<br>
+<br>
+       0 to: image height - 1 do: [:y |<br>
+               0 to: image width - 1 do: [:x |<br>
+                       | r g b |<br>
+                       r := g := b := 0.0.<br>
+<br>
+                       0 to: filter rowCount - 1 do: [:filterY |<br>
+                               0 to: filter columnCount - 1 do: [:filterX |<br>
+                                       | imageX imageY |<br>
+                                       imageX := (x - (filter columnCount // 2) + filterX + image width) \\<br>
+                                                               image width.<br>
+                                       imageY := (y - (filter rowCount // 2) + filterY + image height) \\<br>
+                                                               image height.<br>
+                                       r := r + ((image colorAt: imageX@imageY) red *<br>
+                                                               (filter at: filterY + 1 at: filterX + 1)).<br>
+                                       g := g + ((image colorAt: imageX@imageY) green *<br>
+                                                               (filter at: filterY + 1 at: filterX + 1)).<br>
+                                       b := b + ((image colorAt: imageX@imageY) blue *<br>
+                                                               (filter at: filterY + 1 at: filterX + 1))]].<br>
+<br>
+                       result colorAt: x@y put: (Color<br>
+                               r: ((factor * r + bias) min: 1.0 max: 0.0)<br>
+                               g: ((factor * g + bias) min: 1.0 max: 0.0)<br>
+                               b: ((factor * b + bias) min: 1.0 max: 0.0))]].<br>
+       ^ result<br>
+ !<br>
<br>
Item was added:<br>
+ ----- Method: Form&gt;&gt;sharpen (in category &#39;processing&#39;) -----<br>
+ sharpen<br>
+<br>
+       ^ self processUsingKernel: (Matrix rows: 3 columns: 3 contents: #(<br>
+                0 -1  0<br>
+               -1  5 -1<br>
+                0 -1  0<br>
+       ))!<br>
<br>
<br>
</blockquote></div><br></div>