code: def drawOval(self, tetra):
          
          if len(tetra) != 4:
              raise ValueError("invalid arg length")
          if hasattr(tetra[0], "__float__"):
              q = Rect(tetra).quad
          else:
              q = Quad(tetra)
  
          mt = q.ul + (q.ur - q.ul) * 0.5
          mr = q.ur + (q.lr - q.ur) * 0.5
          mb = q.ll + (q.lr - q.ll) * 0.5
          ml = q.ul + (q.ll - q.ul) * 0.5
          if not (self.lastPoint == ml):
              self.draw_cont += "%g %g m\n" % JM_TUPLE(ml * self.ipctm)
              self.lastPoint = ml
          self.drawCurve(ml, q.ll, mb)
          self.drawCurve(mb, q.lr, mr)
          self.drawCurve(mr, q.ur, mt)
          self.drawCurve(mt, q.ul, ml)
          self.updateRect(q.rect)
          self.lastPoint = ml
          return self.lastPoint
docs: Draw an ellipse inside a tetrapod.