parameters: (bline_list, pos, index_loop, bline_loop, fr)
return_statement: return int_pos + pl/tl-one
docstring: Synfig function: https://github.com/synfig/synfig/blob/15607089680af560ad031465d31878425af927eb/synfig-core/src/synfig/valuenodes/valuenode_bline.cpp#L292
  
      Args:
          bline_list (list[common.BlinePoint.BlinePoint]): Synfig format bline list
          pos (Float):
          index_loop (Bool):
          bline_loop (Bool):
          fr (Int): Frame number currently processing
  
      Returns:
          (Float)
docstring_summary: Synfig function: https://github.com/synfig/synfig/blob/15607089680af560ad031465d31878425af927eb/synfig-core/src/synfig/valuenodes/valuenode_bline.cpp#L292
docstring_tokens: Synfig function : https : // github . com / synfig / synfig / blob / 15607089680af560ad031465d31878425af927eb / synfig - core / src / synfig / valuenodes / valuenode_bline . cpp#L292
function: def std_to_hom(bline_list, pos, index_loop, bline_loop, fr):
      """
      Synfig function: https://github.com/synfig/synfig/blob/15607089680af560ad031465d31878425af927eb/synfig-core/src/synfig/valuenodes/valuenode_bline.cpp#L292
  
      Args:
          bline_list (list[common.BlinePoint.BlinePoint]): Synfig format bline list
          pos (Float):
          index_loop (Bool):
          bline_loop (Bool):
          fr (Int): Frame number currently processing
  
      Returns:
          (Float)
      """
      size = len(bline_list)
      if pos == 0.0 or pos == 1.0:
          return pos
      if not bline_loop:
          size -= 1
      if size < 1:
          return 0.0
      int_pos = int(pos)
      one = 0.0
  
      if index_loop:
          pos = pos - int_pos
          if pos < 0:
              pos += 1
              one = 1.0
      else:
          if pos < 0: pos = 0
          if pos > 1: pos = 1
  
      tl = 0
      pl = 0
      lengths = []
      tl = bline_length(bline_list, bline_loop, lengths, fr)
      if tl == 0.0:   return pos
      from_vertex = int(pos*size)
  
      liter = 0
      i = 0
      while i < from_vertex:
          pl += lengths[liter]
          i += 1
          liter += 1
  
      nxt = 0 # bline.begin()
      itr = 0
      if bline_loop:
          itr = len(bline_list) - 1
      else:
          itr = nxt
          nxt = nxt + 1
      if from_vertex > size - 1:
          from_vertex = size - 1
      bline_point0 = bline_list[nxt+from_vertex-1] if from_vertex else bline_list[itr]
      bline_point1 = bline_list[nxt+from_vertex]
      curve = Hermite(bline_point0.get_vertex(),
                      bline_point1.get_vertex(),
                      bline_point0.get_tangent2(),
                      bline_point1.get_tangent1())
      pl += curve.find_distance(0.0, pos*size - from_vertex)
  
      return int_pos + pl/tl-one
function_tokens: def std_to_hom ( bline_list , pos , index_loop , bline_loop , fr ) : size = len ( bline_list ) if pos == 0.0 or pos == 1.0 : return pos if not bline_loop : size -= 1 if size < 1 : return 0.0 int_pos = int ( pos ) one = 0.0 if index_loop : pos = pos - int_pos if pos < 0 : pos += 1 one = 1.0 else : if pos < 0 : pos = 0 if pos > 1 : pos = 1 tl = 0 pl = 0 lengths = [ ] tl = bline_length ( bline_list , bline_loop , lengths , fr ) if tl == 0.0 : return pos from_vertex = int ( pos * size ) liter = 0 i = 0 while i < from_vertex : pl += lengths [ liter ] i += 1 liter += 1 nxt = 0 # bline.begin() itr = 0 if bline_loop : itr = len ( bline_list ) - 1 else : itr = nxt nxt = nxt + 1 if from_vertex > size - 1 : from_vertex = size - 1 bline_point0 = bline_list [ nxt + from_vertex - 1 ] if from_vertex else bline_list [ itr ] bline_point1 = bline_list [ nxt + from_vertex ] curve = Hermite ( bline_point0 . get_vertex ( ) , bline_point1 . get_vertex ( ) , bline_point0 . get_tangent2 ( ) , bline_point1 . get_tangent1 ( ) ) pl += curve . find_distance ( 0.0 , pos * size - from_vertex ) return int_pos + pl / tl - one