
     h&                     x    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y)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 ][  }|d   t         j                  k(  r|d   }|d   t         j                  k(  s6|d   }t        d   |d   |d   |d         }||z  }|}] |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         i/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/cairosvg/text.pypath_lengthr      s    L "7e(((QI!W***QI!ilIaL)A,HFF"L!I"     c                 r   d}| D ]  }|d   t         j                  k(  r|d   }|d   t         j                  k(  s6|d   }t        d   |d   |d   |d         }||z  }||k  r|}b|||z
  z  }t	        |d   |d   |d   |d         }t        |      |z  |d   z   }t        |      |z  |d   z   }	||	fc S  y)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I!W***QI!ilIaL)A,HFF"Le#%	,..#aL)A,	!ilLJ')A,6J')A,6!t!r   c                 b   |j                  d      xs dj                  d      d   j                  d      }t        t        d|j                  d       j                         t        j                        }|j                  d      }|r |j                         rt        |      d	k\  rd
}t        t        d| j                         t        j                        }| j                  j                  |||       | j                  j                  | j                         | j                  j                         \  }}}	}
}t        |j!                         xs |j"                  j!                         xs d      }|j$                  r&| j&                  j                  |j$                        }nd}t)        | |j                  d            }| j                  j+                  |j,                        dd \  }}}}g g g g dgf\  }}}}}d|v rCt/        |d         j                         j                  d      D cg c]  }t)        | |d       }}d|v rCt/        |d         j                         j                  d      D cg c]  }t)        | |d       }}d|v rCt/        |d         j                         j                  d      D cg c]  }t)        | |d       }}d|v rCt/        |d         j                         j                  d      D cg c]  }t)        | |d       }}d|v rNt/        |d         j                         j                  d      D cg c]  }|rt1        t3        |            nd }}|d   }t5        ||||||j,                        }d}d}|j                  d      }|dk(  r9|dz  |z    }|re|j,                  rY|t7        |j,                        dz
  |z  dz  z  }n7|dk(  r2||z    }|r*|j,                  r|t7        |j,                        dz
  |z  z  }|
dkD  r|dk(  r|j                  d      }|j                  d      xs |j                  d      }|dk(  r
| dz  |z
  }n^|dk(  r| }nU|d k(  r| |z
  }nI|d!k(  s|dk(  r||z   dz  |z
  }n3|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| }t8        } |r| j                  j;                          d)| _        | j?                  |       d*| _        | j                  jA                         }!| j                  j;                          tC        |!      |z   }"t)        | |j                  d+d      |"      }#|jD                  d,k(  r| xjF                  |#z  c_#        | xjF                  |z  c_#        tI        | |#dff      } |j,                  rtK        |      D ]s  \  }\  \  }}}}}$}%|rd| jL                  d<   |rd| jL                  d<   | jL                  dxx   |xs dz  cc<   | jL                  dxx   |xs dz  cc<   | j                  j+                  |%      }&|&d   }'|r;| jF                  | jL                  d   z   }(tO        !|(      })|(|'dz  z   }*tO        |!|*      }+|(|'z   },tO        |!|,      }-|r|'|z  }'| xjF                  |'z  c_#        tQ        |)|+|-f      sd|*cxk  r"k  sn | j                  jS                           | j                  jT                  |)  | j                  jW                  tY        |)|-z           | j                  jU                  d| jL                  d          | j                  j[                  dd       tI        | |-d   |&d-   ff      } n@| j                  jS                          || j\                  d   n|}|| j\                  d   n|}|r||z  }| j                  j[                  ||       ||'z   |f}. | j                  j^                  | jL                    | j                  j_                  ||       | j                  jW                  |$|n|$       |.d   |z   | jL                  d   z   |.d   |z   | jL                  d   z   f|.d   |z   |&d   z   | jL                  d   z   |.d   |z   |&d-   z   | jL                  d   z   ff}/tI        | |/      } |%ja                         s9|r| j                  jc                  |%       n| j                  je                  |%       | j                  jg                          |rm.| _.        v nM|r|d   n| j\                  d   }|r|d   n| j\                  d   }|r|d   nd}|r|d   nd}||z   ||z   f| _.        ti        |       r| |d.<   yyc c}w c c}w c c}w c c}w c c}w )/z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     r!   dxdyrotatez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)5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   floatr   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	   )0surfacenodedraw_as_textfont_family
font_stylenode_font_weightfont_weightascentdescent_max_x_advancemax_y_advancetext_path_hrefrb   letter_spacing	x_bearing	y_bearingr   heightr    r!   r+   r,   r-   ilast_rletters_positionsx_aligny_aligntext_anchordisplay_anchoralignment_baselinebounding_box
cairo_pathr   start_offsetrletterrN   extentsstartstart_pointr/   middle_pointr1   	end_pointr^   pointss0                                                   r   rO   rO   4   s	    
-	 	0L77<Q?EEfM TXXl345;;=!J xx.-557$%,!,/01779  "K OO$$[*kJOO!!'"3"34$$& 5FGQ} t}}N$++2F2F2HNBONMM%%n&=&=>		'488,<#=>N$$TYY/3 (Iy% r2rA3.Aq"b&
d{S	*00288=? '1c" ? ?
d{S	*00288=? '1c" ? ?t| d,224::3?A 7As# A At| d,224::3?A 7As# A A4$T(^4::<BB3GI ()'%(#a/ I IBZF#Aq"b&$))DGG((=)KhQY*+diiDII*n<q@@G		Y&'diiDII*n<<G q]a/"23"hh':; ="hh';< 	X%gkI-Gu$ jGx'g	)G I- H, '1,w6G $66 M1 E) I- J.G $55 L0 H, M1hG%L  ""'Y"&__335
  "Z(94GTXXmQ%?H88z!##|3#7**<<:K9MNyy.78I.J <	:*A*!Ar2q6/0))!,/0))!,%%a(BG!3(%%a(BG!3("??77?L"1oG//'2K2KA2NN2:uE1,3JGgo0SA	~-G''72'KyABF,f,$$&)));7&&{[95L'NO))!W-F-Fq-IJ''1-2 IaL,q/#B"D F $$&23)G++A.23)G++A.'A''1-"#g+q.+++W-F-FG++GW=&&v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 >>#OO--f5OO--f5OO##%*9'y<	:| AaD72215AaD72215RUaRUa#$r61r6"2 \*$0 ! +k??AAIs   /f6f=f"f'f,N)F)__doc__mathr   r   r   r}   r   r   r	   helpersr
   r   r   r   r   rd   r   urlr   r   r"   rO    r   r   <module>r      s:   
 # "D D H H  ,t1r   