<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>You are forgetting to call to super. Always consider that when
      you are overriding a method.</p>
    <p>It works. Look at screenshot attached.</p>
    <div class="moz-cite-prefix">El 15/12/24 a las 13:41, Mark Volkmann
      escribió:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAFfRWnUqhbpApqMdPG=zswvpYsoA9vAiLGUdKfhMtWC3=7Kxow@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">On Sun, Dec 15, 2024 at 7:37 AM Mariano Montone
          via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st"
            moz-do-not-send="true" class="moz-txt-link-freetext">cuis-dev@lists.cuis.st</a>>
          wrote:<br>
        </div>
        <div class="gmail_quote gmail_quote_container">
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
            <div>
              <p>Hi Mark,<br>
              </p>
              <div>El 14/12/24 a las 22:42, Mark Volkmann via Cuis-dev
                escribió:<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div>
                    <div>I'm trying to understand what is required to
                      create a subclass of<span> </span><font
                        face="monospace">BoxMorph</font>. I know I need
                      to implement the<span> </span><font
                        face="monospace">drawOn:</font><span> </span>instance
                      method. And I believe that depending on how I
                      implement that, I need to implement the<span> </span><font
                        face="monospace">requiresVectorCanvas</font><span> </span>method
                      to return true.</div>
                    <div><br>
                    </div>
                    <div>Is anything else required? I think more must be
                      required, because I can't get a basic example to
                      work doing only those things.</div>
                  </div>
                </div>
              </blockquote>
              Have you tried browsing BoxMorph hierarchy and looking at
              its subclasses?<br>
            </div>
          </blockquote>
          <div><br>
          </div>
          <div>Yes. In particular I looked at <font face="monospace">ColoredBoxMorph</font>.
            That has no class methods and 6 instance methods. The only
            method that does something not directly related to color is
            <font face="monospace">color:</font> which sends <font
              face="monospace">#redrawNeeded</font> to <font
              face="monospace">self</font> when the color is changed.
            The <font face="monospace">initialize</font> method sends <font
              face="monospace">#color:</font> with the default color, so
            I thought perhaps when subclassing <font face="monospace">BoxMorph</font>,
            I need to send <font face="monospace">#redrawNeeded</font>.
            I added the following instance method, but that didn't
            help. </div>
          <div><br>
          </div>
          <div><font face="monospace">initialize<br>
                  super initialize.<br>
                  self redrawNeeded</font><br>
          </div>
          <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
            <div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div>
                    <div><br>
                    </div>
                    <div>I'd especially appreciate it if someone can
                      tell me how I could have determined the answer on
                      my own by looking at the source. I tried to do
                      that and failed.</div>
                  </div>
                </div>
              </blockquote>
              <p>How is it failing? Perhaps attach example of what you
                are trying to do ... it shouldn't be much more than
                implementing a #drawOn: method ...</p>
            </div>
          </blockquote>
          <div><br>
          </div>
          <div>If I create the class <font face="monospace">Try1</font>
            as a subclass of <font face="monospace">Morph</font>, add
            the following <font face="monospace">drawOn:</font> method,
            and evaluate <font face="monospace">Try1</font> new
            openInWorld in a workspace, it works as expected.</div>
        </div>
        <div><br clear="all">
        </div>
        <div><font face="monospace">drawOn: aCanvas<br>
                aCanvas class name print.<br>
                aCanvas strokeWidth: 10 color: Color red do: [<br>
                    aCanvas<br>
                        moveTo: 100 @ 100;<br>
                        lineTo: 200 @ 200<br>
                ].</font><br>
        </div>
        <div><br>
        </div>
        <div>If I create the class <font face="monospace">Try2</font>
          ais a subclass or <font face="monospace">PlacedMorph</font>,
          add the same <font face="monospace">drawOn:</font> method,
          and evaluate <font face="monospace">Try2 new openInWorld</font>
          in a workspace, it also works.</div>
        <div><br>
        </div>
        <div>But if I create the class <font face="monospace">Try3</font> as
          a subclass of <font face="monospace">BoxMorph</font>, add the
          same <font face="monospace">drawOn:</font> method, and
          evaluate <font face="monospace">Try3 new openInWorld</font>
          in a workspace, it does not work. I get the error <span
            style="font-family:monospace">"MessageNotUnderstood:
            HybridCanvas>>strokeWidth:color:do:"</span><font
            face="arial, sans-serif">. I understand that is because </font><font
            face="monospace">BoxMorph</font><font
            face="arial, sans-serif"> u</font>ses <font
            face="monospace">HybridCanvas</font> by default instead of <font
            face="monospace">VectorCanvas</font>, so I added the
          instance method <font face="monospace">requiresVectorCanvas</font>
          which returns <font face="monospace">true</font>. That
          eliminates the eror, but doesn't result in rendering anything.
          So it's not clear to me what I'm missing in my <font
            face="monospace">Try3</font> class.</div>
        <div><br>
        </div>
        <span class="gmail_signature_prefix">-- </span><br>
        <div dir="ltr" class="gmail_signature">
          <div dir="ltr">
            <div>
              <div dir="ltr">
                <div>
                  <div dir="ltr">
                    <div dir="ltr">
                      <div><font face="arial, helvetica, sans-serif">R.
                          Mark Volkmann</font></div>
                      <div><span style="font-size:12.8px"><font
                            face="arial, helvetica, sans-serif">Object
                            Computing, Inc.</font></span></div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
  </body>
</html>