class_docstr: Cairo-specific abstract edge drawer object.
class_docstr_tok: ["Cairo-specific","abstract","edge","drawer","object","."]
docstr: Constructs the edge drawer.
  
  @param context: a Cairo context on which the edges will be drawn.
  @param palette: the palette that can be used to map integer color
      indices to colors when drawing edges
docstr_tok: ["Constructs","the","edge","drawer",".","@","param","context",":","a","Cairo","context","on","which","the","edges","will","be","drawn",".","@","param","palette",":","the","palette","that","can","be","used","to","map","integer","color","indices","to","colors","when","drawing","edges"]
code: def __init__(self, context, palette):
      """Constructs the edge drawer.
  
      @param context: a Cairo context on which the edges will be drawn.
      @param palette: the palette that can be used to map integer color
          indices to colors when drawing edges
      """
      self.context = context
      self.palette = palette
      self.VisualEdgeBuilder = self._construct_visual_edge_builder()
  
imports: from math import atan2, cos, pi, sin
  from igraph.drawing.baseclasses import AbstractEdgeDrawer
  from igraph.drawing.colors import clamp
  from igraph.drawing.metamagic import AttributeCollectorBase
  from igraph.drawing.utils import euclidean_distance, get_bezier_control_points_for_curved_edge, intersect_bezier_curve_and_circle
  from .utils import find_cairo
label_desc: Use image node_id 1 to create a new AbstractCairoEdgeDrawer object from inherited base classes: AbstractEdgeDrawer with example: obj = AbstractCairoEdgeDrawer(context, palette)