class_docstr: Abstract edge drawer object from which all concrete edge drawer
  implementations are derived.
class_docstr_tok: ["Abstract","edge","drawer","object","from","which","all","concrete","edge","drawer","implementations","are","derived","."]
docstr: Get the rotation angle of the label to align with the edge.
  
  @param edge: the edge to be drawn. visual properties of the edge
    are defined by the attributes of this object.
  @param src_vertex: the source vertex. visual properties are given
    again as attributes.
  @param dest_vertex: the target vertex. visual properties are given
    again as attributes.
  @return: a float with the desired angle, in degrees (out of 360).
docstr_tok: ["Get","the","rotation","angle","of","the","label","to","align","with","the","edge",".","@","param","edge",":","the","edge","to","be","drawn",".","visual","properties","of","the","edge","are","defined","by","the","attributes","of","this","object",".","@","param","src_vertex",":","the","source","vertex",".","visual","properties","are","given","again","as","attributes",".","@","param","dest_vertex",":","the","target","vertex",".","visual","properties","are","given","again","as","attributes",".","@","return",":","a","float","with","the","desired","angle",",","in","degrees","(","out","of","360",")","."]
code: def get_label_rotation(self, edge, src_vertex, dest_vertex):
      """Get the rotation angle of the label to align with the edge.
  
      @param edge: the edge to be drawn. visual properties of the edge
        are defined by the attributes of this object.
      @param src_vertex: the source vertex. visual properties are given
        again as attributes.
      @param dest_vertex: the target vertex. visual properties are given
        again as attributes.
      @return: a float with the desired angle, in degrees (out of 360).
      """
      (x1, y1), (x2, y2) = src_vertex.position, dest_vertex.position
      rotation = (360 + 180.0 / pi * atan2(y2 - y1, x2 - x1)) % 360
      # Try to keep text on its head
      if 90 < rotation <= 270:
          rotation = (180 + rotation) % 360
      return rotation
  
imports: from abc import ABCMeta, abstractmethod
  from math import atan2, pi
  from .text import TextAlignment
  from .utils import get_bezier_control_points_for_curved_edge, evaluate_cubic_bezier
label_desc: Use image node_id 5 for calling the AbstractEdgeDrawer obj's underlying member method code with example usage: obj.get_label_rotation(edge, src_vertex, dest_vertex) and returns: rotation