class_docstr: Base class for retrieving the outline in a segment-oriented
  way. The PointPen protocol is simple yet also a little tricky,
  so when you need an outline presented as segments but you have
  as points, do use this base implementation as it properly takes
  care of all the edge cases.
class_docstr_tok: ["Base","class","for","retrieving","the","outline","in","a","segment-oriented","way",".","The","PointPen","protocol","is","simple","yet","also","a","little","tricky",",","so","when","you","need","an","outline","presented","as","segments","but","you","have","as","points",",","do","use","this","base","implementation","as","it","properly","takes","care","of","all","the","edge","cases","."]
docstr: Override this method.
  
  It will be called for each non-empty sub path with a list
  of segments: the 'segments' argument.
  
  The segments list contains tuples of length 2:
          (segmentType, points)
  
  segmentType is one of "move", "line", "curve" or "qcurve".
  "move" may only occur as the first segment, and it signifies
  an OPEN path. A CLOSED path does NOT start with a "move", in
  fact it will not contain a "move" at ALL.
  
  The 'points' field in the 2-tuple is a list of point info
  tuples. The list has 1 or more items, a point tuple has
  four items:
          (point, smooth, name, kwargs)
  'point' is an (x, y) coordinate pair.
  
  For a closed path, the initial moveTo point is defined as
  the last point of the last segment.
  
  The 'points' list of "move" and "line" segments always contains
  exactly one point tuple.
docstr_tok: ["Override","this","method",".","It","will","be","called","for","each","non-empty","sub","path","with","a","list","of","segments",":","the","'segments","'","argument",".","The","segments","list","contains","tuples","of","length","2",":","(","segmentType",",","points",")","segmentType","is","one","of","``","move","''",",","``","line","''",",","``","curve","''","or","``","qcurve","''",".","``","move","''","may","only","occur","as","the","first","segment",",","and","it","signifies","an","OPEN","path",".","A","CLOSED","path","does","NOT","start","with","a","``","move","''",",","in","fact","it","will","not","contain","a","``","move","''","at","ALL",".","The","'points","'","field","in","the","2-tuple","is","a","list","of","point","info","tuples",".","The","list","has","1","or","more","items",",","a","point","tuple","has","four","items",":","(","point",",","smooth",",","name",",","kwargs",")","'point","'","is","an","(","x",",","y",")","coordinate","pair",".","For","a","closed","path",",","the","initial","moveTo","point","is","defined","as","the","last","point","of","the","last","segment",".","The","'points","'","list","of","``","move","''","and","``","line","''","segments","always","contains","exactly","one","point","tuple","."]
code: def _flushContour(self, segments):
      """Override this method.
  
      It will be called for each non-empty sub path with a list
      of segments: the 'segments' argument.
  
      The segments list contains tuples of length 2:
              (segmentType, points)
  
      segmentType is one of "move", "line", "curve" or "qcurve".
      "move" may only occur as the first segment, and it signifies
      an OPEN path. A CLOSED path does NOT start with a "move", in
      fact it will not contain a "move" at ALL.
  
      The 'points' field in the 2-tuple is a list of point info
      tuples. The list has 1 or more items, a point tuple has
      four items:
              (point, smooth, name, kwargs)
      'point' is an (x, y) coordinate pair.
  
      For a closed path, the initial moveTo point is defined as
      the last point of the last segment.
  
      The 'points' list of "move" and "line" segments always contains
      exactly one point tuple.
      """
      raise NotImplementedError
  
imports: import math
  from typing import Any, Optional, Tuple, Dict
  from fontTools.pens.basePen import AbstractPen, PenError
  from fontTools.misc.transform import DecomposedTransform
label_desc: Use image node_id 3 for calling the BasePointToSegmentPen obj's underlying member method code with example usage: obj._flushContour(segments) without return types