class_docstr: Class representing a single plot curve. Instances of this class are created
  automatically as part of :class:`PlotDataItem <pyqtgraph.PlotDataItem>`; 
  these rarely need to be instantiated directly.
  
  Features:
  
    - Fast data update
    - Fill under curve
    - Mouse interaction
  
  =====================  ===============================================
  **Signals:**
  sigPlotChanged(self)   Emitted when the data being plotted has changed
  sigClicked(self, ev)   Emitted when the curve is clicked
  =====================  ===============================================
class_docstr_tok: ["Class","representing","a","single","plot","curve",".","Instances","of","this","class","are","created","automatically","as","part","of",":","class",":","`","PlotDataItem","<","pyqtgraph.PlotDataItem",">","`",";","these","rarely","need","to","be","instantiated","directly",".","Features",":","-","Fast","data","update","-","Fill","under","curve","-","Mouse","interaction","=====================","===============================================","*","*","Signals",":","*","*","sigPlotChanged","(","self",")","Emitted","when","the","data","being","plotted","has","changed","sigClicked","(","self",",","ev",")","Emitted","when","the","curve","is","clicked","=====================","==============================================="]
code: def _getFillPathList(self, widget):
      if self._fillPathList is not None:
          return self._fillPathList
  
      x, y = self.getData()
      if self.opts["stepMode"]:
          x, y = self._generateStepModeData(
              self.opts["stepMode"],
              x,
              y,
              # note that left/right vertical lines can be omitted here
              baseline=None,
          )
  
      if not self.opts["skipFiniteCheck"]:
          mask = np.isfinite(x) & np.isfinite(y)
          if not mask.all():
              # we are only supporting connect='all',
              # so remove non-finite values
              x = x[mask]
              y = y[mask]
  
      if len(x) < 2:
          return []
  
      # Set suitable chunk size for current configuration:
      #   * Without OpenGL split in small chunks
      #   * With OpenGL split in rather big chunks
      #     Note, the present code is used only if config option 'enableExperimental' is False,
      #     otherwise the 'paintGL' method is used.
      # Values were found using 'PlotSpeedTest.py' example, see #2257.
      chunksize = (
          50
          if not isinstance(widget, QtWidgets.QOpenGLWidget)
          else 5000
      )
  
      paths = self._fillPathList = []
      offset = 0
      xybuf = np.empty((chunksize + 3, 2))
      baseline = self.opts["fillLevel"]
  
      while offset < len(x) - 1:
          subx = x[offset : offset + chunksize]
          suby = y[offset : offset + chunksize]
          size = len(subx)
          xyview = xybuf[: size + 3]
          xyview[:-3, 0] = subx
          xyview[:-3, 1] = suby
          xyview[-3:, 0] = subx[[-1, 0, 0]]
          xyview[-3:, 1] = [baseline, baseline, suby[0]]
          offset += size - 1  # last point is re-used for next chunk
          # data was either declared to be all-finite OR was sanitized
          path = fn._arrayToQPath_all(
              xyview[:, 0], xyview[:, 1], finiteCheck=False
          )
          paths.append(path)
  
      return paths
  
imports: from ..Qt import QtCore, QtGui, QtWidgets
  import math
  import sys
  import warnings
  import numpy
  from ..None import Qt, debug
  from ..None import functions
  from ..None import getConfigOption
  from .GraphicsObject import GraphicsObject
label_desc: Use image node_id 28 for calling the PlotCurveItem obj's underlying member method code with example usage: obj._getFillPathList(widget) and returns: paths, self, list