class_docstr: Base class for drawing pens. You must override _moveTo, _lineTo and
  _curveToOne. You may additionally override _closePath, _endPath,
  addComponent, addVarComponent, and/or _qCurveToOne. You should not
  override any other methods.
code: def qCurveTo(self, *points):
      n = len(points) - 1  # 'n' is the number of control points
      assert n >= 0
      if points[-1] is None:
          # Special case for TrueType quadratics: it is possible to
          # define a contour with NO on-curve points. BasePen supports
          # this by allowing the final argument (the expected on-curve
          # point) to be None. We simulate the feature by making the implied
          # on-curve point between the last and the first off-curve points
          # explicit.
          x, y = points[-2]  # last off-curve point
          nx, ny = points[0]  # first off-curve point
          impliedStartPoint = (0.5 * (x + nx), 0.5 * (y + ny))
          self.__currentPoint = impliedStartPoint
          self._moveTo(impliedStartPoint)
          points = points[:-1] + (impliedStartPoint,)
      if n > 0:
          # Split the string of points into discrete quadratic curve
          # segments. Between any two consecutive off-curve points
          # there's an implied on-curve point exactly in the middle.
          # This is where the segment splits.
          _qCurveToOne = self._qCurveToOne
          for pt1, pt2 in decomposeQuadraticSegment(points):
              _qCurveToOne(pt1, pt2)
              self.__currentPoint = pt2
      else:
          self.lineTo(points[0])
  
imports: from typing import Tuple, Dict
  from fontTools.misc.loggingTools import LogMixin
  from fontTools.misc.transform import DecomposedTransform
label_desc: Use image node_id 14 for calling the BasePen obj's underlying member method code with example usage: obj.qCurveTo() without return types