class_docstr: Class implementing the default visualisation of a graph.
  
  The default visualisation of a graph draws the nodes on a 2D plane
  according to a given L{Layout}, then draws a straight or curved
  edge between nodes connected by edges. This is the visualisation
  used when one invokes the L{plot()} function on a L{Graph} object.
  
  See L{Graph.__plot__()} for the keyword arguments understood by
  this drawer.
class_docstr_tok: ["Class","implementing","the","default","visualisation","of","a","graph",".","The","default","visualisation","of","a","graph","draws","the","nodes","on","a","2D","plane","according","to","a","given","L","{","Layout","}",",","then","draws","a","straight","or","curved","edge","between","nodes","connected","by","edges",".","This","is","the","visualisation","used","when","one","invokes","the","L","{","plot","(",")","}","function","on","a","L","{","Graph","}","object",".","See","L","{","Graph.__plot__","(",")","}","for","the","keyword","arguments","understood","by","this","drawer","."]
docstr: Constructs the graph drawer and associates it to the given
  Cairo context and the given L{BoundingBox}.
  
  @param context: the context on which we will draw
  @param bbox:    the bounding box within which we will draw.
                  Can be anything accepted by the constructor
                  of L{BoundingBox} (i.e., a 2-tuple, a 4-tuple
                  or a L{BoundingBox} object).
  @param vertex_drawer_factory: a factory method that returns an
                  L{AbstractCairoVertexDrawer} instance bound to a
                  given Cairo context. The factory method must take
                  four parameters: the Cairo context, the bounding
                  box of the drawing area, the palette to be
                  used for drawing colored vertices, and the graph layout.
                  The default vertex drawer is L{CairoVertexDrawer}.
  @param edge_drawer_factory: a factory method that returns an
                  L{AbstractCairoEdgeDrawer} instance bound to a
                  given Cairo context. The factory method must take
                  two parameters: the Cairo context and the palette
                  to be used for drawing colored edges. You can use
                  any of the actual L{AbstractEdgeDrawer}
                  implementations here to control the style of
                  edges drawn by igraph. The default edge drawer is
                  L{CairoArrowEdgeDrawer}.
  @param label_drawer_factory: a factory method that returns a
                  L{CairoTextDrawer} instance bound to a given Cairo
                  context. The method must take one parameter: the
                  Cairo context. The default label drawer is
                  L{CairoTextDrawer}.
docstr_tok: ["Constructs","the","graph","drawer","and","associates","it","to","the","given","Cairo","context","and","the","given","L","{","BoundingBox","}",".","@","param","context",":","the","context","on","which","we","will","draw","@","param","bbox",":","the","bounding","box","within","which","we","will","draw",".","Can","be","anything","accepted","by","the","constructor","of","L","{","BoundingBox","}","(","i.e.",",","a","2-tuple",",","a","4-tuple","or","a","L","{","BoundingBox","}","object",")",".","@","param","vertex_drawer_factory",":","a","factory","method","that","returns","an","L","{","AbstractCairoVertexDrawer","}","instance","bound","to","a","given","Cairo","context",".","The","factory","method","must","take","four","parameters",":","the","Cairo","context",",","the","bounding","box","of","the","drawing","area",",","the","palette","to","be","used","for","drawing","colored","vertices",",","and","the","graph","layout",".","The","default","vertex","drawer","is","L","{","CairoVertexDrawer","}",".","@","param","edge_drawer_factory",":","a","factory","method","that","returns","an","L","{","AbstractCairoEdgeDrawer","}","instance","bound","to","a","given","Cairo","context",".","The","factory","method","must","take","two","parameters",":","the","Cairo","context","and","the","palette","to","be","used","for","drawing","colored","edges",".","You","can","use","any","of","the","actual","L","{","AbstractEdgeDrawer","}","implementations","here","to","control","the","style","of","edges","drawn","by","igraph",".","The","default","edge","drawer","is","L","{","CairoArrowEdgeDrawer","}",".","@","param","label_drawer_factory",":","a","factory","method","that","returns","a","L","{","CairoTextDrawer","}","instance","bound","to","a","given","Cairo","context",".","The","method","must","take","one","parameter",":","the","Cairo","context",".","The","default","label","drawer","is","L","{","CairoTextDrawer","}","."]
code: def __init__(
      self,
      context,
      bbox=None,
      vertex_drawer_factory=CairoVertexDrawer,
      edge_drawer_factory=CairoArrowEdgeDrawer,
      label_drawer_factory=CairoTextDrawer,
  ):
      """Constructs the graph drawer and associates it to the given
      Cairo context and the given L{BoundingBox}.
  
      @param context: the context on which we will draw
      @param bbox:    the bounding box within which we will draw.
                      Can be anything accepted by the constructor
                      of L{BoundingBox} (i.e., a 2-tuple, a 4-tuple
                      or a L{BoundingBox} object).
      @param vertex_drawer_factory: a factory method that returns an
                      L{AbstractCairoVertexDrawer} instance bound to a
                      given Cairo context. The factory method must take
                      four parameters: the Cairo context, the bounding
                      box of the drawing area, the palette to be
                      used for drawing colored vertices, and the graph layout.
                      The default vertex drawer is L{CairoVertexDrawer}.
      @param edge_drawer_factory: a factory method that returns an
                      L{AbstractCairoEdgeDrawer} instance bound to a
                      given Cairo context. The factory method must take
                      two parameters: the Cairo context and the palette
                      to be used for drawing colored edges. You can use
                      any of the actual L{AbstractEdgeDrawer}
                      implementations here to control the style of
                      edges drawn by igraph. The default edge drawer is
                      L{CairoArrowEdgeDrawer}.
      @param label_drawer_factory: a factory method that returns a
                      L{CairoTextDrawer} instance bound to a given Cairo
                      context. The method must take one parameter: the
                      Cairo context. The default label drawer is
                      L{CairoTextDrawer}.
      """
      super().__init__(context, bbox)
      self.vertex_drawer_factory = vertex_drawer_factory
      self.edge_drawer_factory = edge_drawer_factory
      self.label_drawer_factory = label_drawer_factory
  
imports: from math import atan2, cos, pi, sin, tan
  from warnings import warn
  from igraph._igraph import convex_hull, VertexSeq
  from igraph.configuration import Configuration
  from igraph.drawing.baseclasses import AbstractGraphDrawer
  from igraph.drawing.text import TextAlignment
  from igraph.drawing.utils import Point
  from .base import AbstractCairoDrawer
  from .edge import CairoArrowEdgeDrawer
  from .polygon import CairoPolygonDrawer
  from .text import CairoTextDrawer
  from .utils import find_cairo
  from .vertex import CairoVertexDrawer
label_desc: Use image node_id 1 to create a new CairoGraphDrawer object from inherited base classes: AbstractCairoGraphDrawer with example: obj = CairoGraphDrawer(context, bbox, vertex_drawer_factory, edge_drawer_factory, label_drawer_factory)