docs: def _calculate_pen_down_strokes(self, pointlist, times=None):
          """Calculate the intervall borders 'times' that contain the information
             when a stroke started, when it ended and how it should be
             interpolated."""
          if times is None:
              times = []
          for stroke in pointlist:
              stroke_info = {"start": stroke[0]['time'],
                             "end": stroke[-1]['time'],
                             "pen_down": True}
              # set up variables for interpolation
              x, y, t = [], [], []
              for point in stroke:
                  if point['time'] not in t:
                      x.append(point['x'])
                      y.append(point['y'])
                      t.append(point['time'])
              x, y = numpy.array(x), numpy.array(y)
              if len(t) == 1:
                  # constant interpolation
                  fx, fy = lambda x: float(x), lambda y: float(y)
              elif len(t) == 2:
                  # linear interpolation
                  fx, fy = interp1d(t, x, 'linear'), interp1d(t, y, 'linear')
              elif len(t) == 3:
                  # quadratic interpolation
                  fx = interp1d(t, x, 'quadratic')
                  fy = interp1d(t, y, 'quadratic')
              else:
                  fx, fy = interp1d(t, x, self.kind), interp1d(t, y, self.kind)
              stroke_info['fx'] = fx
              stroke_info['fy'] = fy
              times.append(stroke_info)
          return times