<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Hilaire,<br>
    <br>
    On 8/15/2021 7:14 AM, Hilaire Fernandes via Cuis-dev wrote:
    <blockquote cite="mid:4a0e0ea0-8567-93ae-60a4-0141b2797b35@drgeo.eu"
      type="cite">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <p><font size="+1">Hi Juan, <br>
        </font></p>
      <p><font size="+1">I have noted that with a drawn circle[1], so
          not filled contrary to a disc, the detection method in subject
          respond true when the point is on any position <b>inside</b>
          the circle. It should be true only when the circle is filled
          (disc).<br>
        </font></p>
    </blockquote>
    <br>
    Well, we can detect with pixel precision only one morph, the visible
    one. I think you had asked about detecting all the (possibly
    overlapping) morphs that are at some point (or close to it). Adding
    a stack of morphID at each pixel is extremely memory intensive. We
    could easily need half a gigabyte of memory for a 4k display. Then I
    came up with the contour idea, that only requires a maximum of 16
    kBytes per morph (i.e. most likely never more than a couple of
    megabytes). But contours record, for each display y(i.e. for each
    line) the leftmost and rightmost affected pixels. It is a kind of
    "convex hull".<br>
    <br>
    I don't know a general, all-morphs solution that doesn't require a
    ton of RAM. If you can live with detecting only the top morph, then
    #containsGlobalPoint: (or a new method that also takes into account
    a distance), is a possible solution.<br>
    <br>
    If you absolutely need detecting all morphs, but not at
    "transparent" inner points, and, it is only for instances of a few
    classes, like line and circle, then implementing a specific method
    in those classes is an alternative. It would be quite complicated if
    you also need, for example, Beziers.<br>
    <br>
    I'm sorry I don't know a better solution.<br>
    <br>
    <blockquote cite="mid:4a0e0ea0-8567-93ae-60a4-0141b2797b35@drgeo.eu"
      type="cite">
      <p><font size="+1"> </font></p>
      <p><font size="+1">Btw, when I insert an halt in the draw method,
          it freezes the image. You fixed this issue previously, may be
          it is a regression or something else.<br>
        </font></p>
    </blockquote>
    <br>
    Right now, #drawOn: is protected against Error, but not against
    Halt. Just played a bit with an improvement. Will push it later.<br>
    <br>
    <blockquote cite="mid:4a0e0ea0-8567-93ae-60a4-0141b2797b35@drgeo.eu"
      type="cite">
      <p><font size="+1"> </font></p>
      <p><font size="+1">Best</font></p>
      <p><font size="+1">Hilaire<br>
        </font></p>
      <p><font size="+1">[1] Draw as:<br>
        </font></p>
      <p>DrGCircleMorph>>drawCircleOn: aCanvas<br>
            | center r |<br>
            center _ self drawable worldToMorph: mathItem center.<br>
            r _ self drawable worldToPixel: mathItem radius.<br>
            style isFilled <br>
                ifTrue: [    <br>
                    aCanvas strokeWidth: style borderWidth color:
        borderColor fillColor: color do: [            <br>
                        aCanvas circleCenter: center radius: r]       
            ]<br>
                ifFalse: [<br>
                    aCanvas strokeWidth: style borderWidth color:
        borderColor do: [<br>
                        aCanvas circleCenter: center  radius: r] ]<br>
      </p>
      <pre class="moz-signature" cols="72">-- 
GNU Dr. Geo
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://drgeo.eu">http://drgeo.eu</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://blog.drgeo.eu">http://blog.drgeo.eu</a></pre>
    </blockquote>
    <br>
    Cheers,<br>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
  </body>
</html>