
    j&                     z    d Z ddlmZmZmZ ddlmZmZmZ ddl	m
Z
mZmZmZmZ ddlmZ ddlmZ d Zd	 ZddZdS )z
Text drawers.

    )cosradianssin   )EMPTY_BOUNDING_BOXextend_bounding_boxis_valid_bounding_box)distance	normalizepoint_anglesizezip_letters)cairo)	parse_urlc                     d}| D ]p}|d         t           j        k    r	|d         }!|d         t           j        k    r9|d         }t          |d         |d         |d         |d                   }||z  }|}q|S )zGet the length of ``path``.r   r   )r   PATH_MOVE_TOPATH_LINE_TOr
   )pathtotal_lengthitem	old_point	new_pointlengths         T/home/ubuntu/budget-transfer-bot/.venv/lib/python3.11/site-packages/cairosvg/text.pypath_lengthr      s    L " "7e(((QII!W***QI!ilIaL)A,H HFF"L!I    c                    d}| D ]}|d         t           j        k    r	|d         }!|d         t           j        k    r|d         }t          |d         |d         |d         |d                   }||z  }||k     r|}w|||z
  z  }t	          |d         |d         |d         |d                   }t          |          |z  |d         z   }t          |          |z  |d         z   }	||	fc S dS )z0Get the point at ``width`` distance on ``path``.r   r   N)r   r   r   r
   r   r   r   )
r   widthr   r   r   r   r   anglexys
             r   point_following_pathr"      s   L  7e(((QII!W***QI!ilIaL)A,H HFF"Le##%		,..#aL)A,	!ilL LJJ')A,6JJ')A,6!t + r   Fc                     |                     d          pd                    d          d                             d          }t          t          d|                     d                                           t          j                  }|                     d          }|r)|                                rt          |          d	k    rd
}t          t          d|                                 t          j	                  } j
                            |||            j
                             j                    j
                                        \  }}}	}
}t          |                                p|j                                        pd          }|j        r  j                             |j                  }nd}t)           |                     d                    } j
                            |j                  dd         \  }}}}g g g g dgf\  }}}}}d|v rF fdt/          |d                                                                       d          D             }d|v rF fdt/          |d                                                                       d          D             }d|v rF fdt/          |d                                                                       d          D             }d|v rF fdt/          |d                                                                       d          D             }d|v rDd t/          |d                                                                       d          D             }|d         }t1          ||||||j                  }d}d}|                     d          }|dk    r3|dz  |z    }|r'|j        r |t3          |j                  dz
  |z  dz  z  }n2|d k    r,||z    }|r$|j        r|t3          |j                  dz
  |z  z  }|
dk    r|dk    r|                     d!          }|                     d"          p|                     d#          }|dk    r
| dz  |z
  }nk|d$k    r| }na|d%k    r| |z
  }nT|d&k    s|dk    r||z   dz  |z
  }n<|d'k    s|d(k    s|d$k    s|d)k    s|d*k    r|}n|d+k    s|d,k    s|d%k    s|d-k    r| }t4          }|r j
                                         d. _                             |           d/ _         j
                                        }  j
                                         t?          |           |z   }!t)           |                     d0d          |!          }"|j         d1k    r xj!        |"z  c_!         xj!        |z  c_!        tE          ||"dff          }|j        rktG          |          D ]Y\  }#\  \  }}}}}$}%|r
d j$        d<   |r
d j$        d<    j$        dxx         |pdz  cc<    j$        dxx         |pdz  cc<    j
                            |%          }&|&d         }'|r; j!         j$        d         z   }(tK          | |(          })|(|'dz  z   }*tK          | |*          }+|(|'z   },tK          | |,          }-|#r|'|z  }' xj!        |'z  c_!        tM          |)|+|-f          sd|*cxk    r|!k    sn  j
        '                                   j
        j(        |)   j
        )                    tU          |)|-z                j
        (                    d j$        d                     j
        +                    dd           tE          ||-d         |&d2         ff          }n7 j
        '                                 | j,        d         n|}| j,        d         n|}|#r||z  } j
        +                    ||           ||'z   |f}.  j
        j-         j$           j
        -                    ||            j
        )                    |$|n|$           |.d         |z    j$        d         z   |.d         |z    j$        d         z   f|.d         |z   |&d         z    j$        d         z   |.d         |z   |&d2         z    j$        d         z   ff}/tE          ||/          }|%.                                s7|r j
        /                    |%           n j
        0                    |%            j
        1                                 |s|. _,        [nU|r|d         n j,        d         }|r|d         n j,        d         }|r|d         nd}|r|d         nd}||z   ||z   f _,        te          |          r||d3<   dS dS )4zDraw a text ``node``.zfont-familyz
sans-serif,r   z"' font_slant_z
font-stylezfont-weighti&  boldfont_weight_ Nzletter-spacing   r    c                 2    g | ]}t          |d           S r    r   .0isurfaces     r   
<listcomp>ztext.<locals>.<listcomp>R   5     ? ? ? '1c"" ? ? ?r    r!   c                 2    g | ]}t          |d           S r!   r,   r-   s     r   r1   ztext.<locals>.<listcomp>U   r2   r   dxc                 2    g | ]}t          |d           S r+   r,   r-   s     r   r1   ztext.<locals>.<listcomp>X   ;     A A A 7As## A A Ar   dyc                 2    g | ]}t          |d           S r5   r,   r-   s     r   r1   ztext.<locals>.<listcomp>[   r8   r   rotatec                 N    g | ]"}|rt          t          |                    nd #S )r   )r   float)r.   r/   s     r   r1   ztext.<locals>.<listcomp>^   sF     I I I ()/'%((###a I I Ir   ztext-anchormiddle   r   endzdisplay-anchorzdominant-baselinezalignment-baselinetopbottomcentralztext-before-edgebefore_edgehangingztext-topztext-after-edge
after_edgeztext-bottomFTstartOffsettextPath   text_bounding_box)3getsplitstripgetattrr   upperFONT_SLANT_NORMALisdigitintFONT_WEIGHT_NORMALcontextselect_font_faceset_font_size	font_sizefont_extentsr   get_hrefparentfragmentpathsr   text_extentstextr   r   lenr   new_pathstroke_and_filldrawcopy_path_flatr   tagtext_path_widthr   	enumeratecursor_d_positionr"   allsave	translater;   r   move_tocursor_positionrel_move_toisspace	show_text	text_pathrestorer	   )0r0   nodedraw_as_textfont_family
font_stylenode_font_weightfont_weightascentdescent_max_x_advancemax_y_advancetext_path_hrefrq   letter_spacing	x_bearing	y_bearingr   heightr    r!   r6   r9   r;   last_rletters_positionsx_aligny_aligntext_anchordisplay_anchoralignment_baselinebounding_box
cairo_pathr   start_offsetr/   rletterr^   extentsstartstart_pointr?   middle_pointrA   	end_pointrm   pointss0   `                                               r   r_   r_   4   sq    
-	 	 	0L77<<Q?EEfMM 5TXXl3355;;==! !J xx.. "-5577 "$%%,,!1/117799 " "K O$$[*kJJJO!!'"3444$$&& 5FGQ} t}}N$+2F2F2H2HNBOON M%%n&=>>			'488,<#=#=>>N$$TY//3 (Iy% r2rA3.Aq"b&
d{{? ? ? ?S	**002288==? ? ?
d{{? ? ? ?S	**002288==? ? ?t||A A A A d,,2244::3??A A At||A A A A d,,2244::3??A A A4I I$T(^44::<<BB3GGI I IBZF#Aq"b&$)DDGG((=))KhQY*+ 	Adi 	ADI*n<q@@G			Y&' 	=di 	=DI*n<<G q]a//"233"hh':;; ="hh';<< 	X%%gkI-GGu$$ jGGx''g	)GG I-- H,, '1,w6GG $666 M11 E)) I-- J..GG $555 L00 H,, M11hG%L O  """"'Y"&_3355
  """Z((94GTXXmQ%?%?HH8z!!##|3##7**<<:K9MNNy C3.78I.J.J <	: <	:*A*!Ar2q6 1/0)!, 1/0)!,%a(((BG!3(((%a(((BG!3((("?77??L"1oG )I/'2KA2NN2:uEE1,3JGGgo0SAA	 .~-G''72''KyABB F,,,,f,,,,$$&&&));77&&{[95L'NOOO))!W-Fq-IJJJ''1---2 IaL,q/#B"D F  F $$&&&23)G+A..23)G+A.. ('A''1---"#g+q.++W-FGG++GW===&&vvBBB$Q''1.q12$Q''1.q123 %Q''1LOC.q12$Q''1LOC.q1234  3<HH >>## 6 6O--f5555O--f555O##%%% :*9'y<	:| 5AaDD72155AaDD7215RUUaRUUa#$r61r6"2 \** 1$0 !!!1 1r   N)F)__doc__mathr   r   r   r   r   r   r	   helpersr
   r   r   r   r   r0   r   urlr   r   r"   r_    r   r   <module>r      s    
 # " " " " " " " " "D D D D D D D D D D H H H H H H H H H H H H H H                ,t1 t1 t1 t1 t1 t1r   