class_docstr: Abstract base class for Visual-specific filters to implement a
  primitive-picking mode.
  
  Subclasses must (and usually only need to) implement
  :py:meth:`_get_picking_ids`.
class_docstr_tok: ["Abstract","base","class","for","Visual-specific","filters","to","implement","a","primitive-picking","mode",".","Subclasses","must","(","and","usually","only","need","to",")","implement",":","py",":","meth",":","`","_get_picking_ids","`","."]
docstr: Return a 1D array of picking IDs for the vertices in the visual.
  
  Generally, this method should be implemented to:
      1. Calculate the number of primitives in the visual (may be
      persisted in `self._n_primitives`).
      2. Calculate a range of picking ids for each primitive in the
      visual. IDs should start from 1, reserving 0 for the background. If
      primitives comprise multiple vertices (triangles), ids may need to
      be repeated.
  
  The return value should be an array of uint32 with shape
  (num_vertices,).
  
  If no change to the picking IDs is needed (for example, the number of
  primitives has not changed), this method should return `None`.
docstr_tok: ["Return","a","1D","array","of","picking","IDs","for","the","vertices","in","the","visual",".","Generally",",","this","method","should","be","implemented","to",":","1",".","Calculate","the","number","of","primitives","in","the","visual","(","may","be","persisted","in","`","self._n_primitives","`",")",".","2",".","Calculate","a","range","of","picking","ids","for","each","primitive","in","the","visual",".","IDs","should","start","from","1",",","reserving","0","for","the","background",".","If","primitives","comprise","multiple","vertices","(","triangles",")",",","ids","may","need","to","be","repeated",".","The","return","value","should","be","an","array","of","uint32","with","shape","(","num_vertices",",",")",".","If","no","change","to","the","picking","IDs","is","needed","(","for","example",",","the","number","of","primitives","has","not","changed",")",",","this","method","should","return","`","None","`","."]
code: def _get_picking_ids(self):
      """Return a 1D array of picking IDs for the vertices in the visual.
  
      Generally, this method should be implemented to:
          1. Calculate the number of primitives in the visual (may be
          persisted in `self._n_primitives`).
          2. Calculate a range of picking ids for each primitive in the
          visual. IDs should start from 1, reserving 0 for the background. If
          primitives comprise multiple vertices (triangles), ids may need to
          be repeated.
  
      The return value should be an array of uint32 with shape
      (num_vertices,).
  
      If no change to the picking IDs is needed (for example, the number of
      primitives has not changed), this method should return `None`.
      """
      raise NotImplementedError(self)
  
imports: from abc import ABCMeta, abstractmethod
  import numpy
  from vispy.gloo import VertexBuffer
  from ..shaders import Function
label_desc: Use image node_id 2 for calling the PrimitivePickingFilter obj's underlying member method code with example usage: obj._get_picking_ids() without return types