
    <j&                         d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZmZ ddlmZ  G d d	e      Zd
 Zd Zd ZddZ e       j3                   e              ddedddddfdZy))setFontpathNumTruncprocessGlyphtext2PathDescription	text2PathRenderPMError    )getFont
unicode2T1stringWidth)	ShapedStr)open_and_readisBytesrl_exec   )_baseGFontName_PATH_OP_ARG_COUNT_PATH_OP_NAMES
definePath)exc_infoc                       e Zd Zy)r   N)__name__
__module____qualname__     O/opt/lfcs-signon/.venv/lib/python3.12/site-packages/reportlab/graphics/utils.pyr   r      s    r   r   c                    t        t        t        t               d d             \  }}ddlm} |j                  dk\  rdd l}|j                  j                  |j                  j                  |j                        d      }t        d|d|j                  |             dD ]&  }t        d|d	t        t        ||                   ( d
t        |       dt        |      d|d|d	}|dz  }t!        |t#        t$                     y )N   r   )	rl_configfontsz!!!!! z: )T1SearchPathTTFSearchPathz!!!!! rl_config.z = z&raise RenderPMError("Error in setFont(,z$) missing the T1 files?\nOriginally z")z
 from None)r   )listmapstrr   	reportlabr   verboseospathjoindirname__file__printlistdirreprgetattrr   dictr   )fontNamefontSizes1s2r   r)   _codes           r   
_errorDumpr9      s    #c(*Ra.)*FB#!GGLL););<WE"**Q-011 	NAqgi6J1KLM	Nimnviwx|  ~F  yG  HJ  KM  NDLDDM23r   c                 n    	 | j                  ||       y # t        $ r}t        ||       Y d }~y d }~ww xY wN)r   
ValueErrorr9   )gsr3   r4   es       r   r   r      s2    &


8H% &8H%%&s    	4/4c                 L    t        |       | k(  rt        |       S t        | d      S )N   )intround)ns    r   r   r   1   s!    
1vqyQ-1:r   Nc           	      \   	 ddl m}m}   }|dk(  rd n||v r| nt        d|d       ft	         fd|D              z   D ]>    dk(  s		 dd ldd l	 G 	fdd	      ddt        d
dddd ffd	}t        |      c S  fd}t        ||||      S # t        $ r Y `w xY w)Nr   )	textPathsrenderPMBackendbackendfreetypez
textPaths=z( should be one of 'backend', 'freetype')c              3   .   K   | ]  }|k7  s	|  y wr;   r   ).0r7   tps     r   	<genexpr>z(__makeTextPathsCode__.<locals>.<genexpr>?   s     0a!R%0s   
c                       e Zd ZW  j                  W  j                  z  W  j
                  z  Zd Z fdZd Z	d Z
d Zd ZddZd	d	ed
fdZy))__makeTextPathsCode__.<locals>.FTTextPathc                     i | _         y r;   )faces)selfs    r   __init__z2__makeTextPathsCode__.<locals>.FTTextPath.__init__I   s	    !#DJr   c                    || j                   vrt        |      }|st        d|d      |j                  r(|j                  j
                  }j                  |      }n3t        |j                  dd       }|s|j                  j                         }j                  |      }||f| j                   |<   | j                   |   S )Nzfont z has not been registeredpfbFileName)
rP   r	   r<   _dynamicFontface	_ttf_dataBytesIOr1   
findT1FileFace)rQ   r3   fontpath_or_streamrV   rH   ios        r   r   z1__makeTextPathsCode__.<locals>.FTTextPath.setFontL   s    tzz1&x0#",uXL@X-Y"ZZ,,-1YY-@-@N .0ZZ-GN-4TYY}T-RN#1151E1E1G'}}^<04T{

8,::h//r   c                     | j                   r| j                  d       | j                  d| j                  |j                        | j	                  |j
                        f       y )N	closePathmoveTo)PP_appendxptxyptyrQ   actxs      r   move_toz1__makeTextPathsCode__.<locals>.FTTextPath.move_to_   s?    vvt}}^<MM8DHHQSSM$((133-"HIr   c                     | j                  d| j                  |j                        | j                  |j                        f       y )NlineTorc   rd   re   rf   rg   rh   s      r   line_toz1__makeTextPathsCode__.<locals>.FTTextPath.line_toc   s-    MM8DHHQSSM$((133-"HIr   c           	         | j                   r| j                   d   dd n|j                  |j                  f\  }}| j                  |j                        }| j	                  |j                        }| j                  |j                        }| j	                  |j                        }	| j                  d|||z
  dz  dz  z   |||z
  dz  dz  z   |||z
  dz  z   ||	|z
  dz  z   ||	f       y)zusing the cubic equivalentNcurveTor      )rb   re   rg   rd   rf   rc   )
rQ   ri   brj   x0y0x1y1x2y2s
             r   conic_toz2__makeTextPathsCode__.<locals>.FTTextPath.conic_tof   s    /3vvDFF2JrsOACC:EBr!##B!##B!##B!##BMM9R"R%A-=b2b5!)Q>NrSUVXSXZ[R[|\^`bce`egh_h\hikln"opr   c                 `   | j                  d| j                  |j                        | j                  |j                        | j                  |j                        | j                  |j                        | j                  |j                        | j                  |j                        f       y )Nrs   rn   )rQ   ri   ru   crj   s        r   cubic_toz2__makeTextPathsCode__.<locals>.FTTextPath.cubic_too   s    MM9TXXacc]488ACC=RSRURUW[W_W_`a`c`cWdeiememnonqnqersws{s{|}||  tA  #B  Cr   Nc                 :    | j                   j                  d       y )Nr_   )rb   append)rQ   rj   s     r   
close_pathz4__makeTextPathsCode__.<locals>.FTTextPath.close_pathr   s    FFMM.1r   r     c                 R   | j                  |      \  }}||j                  z  |z  |z  g | _        | j                  j                  | _        |j                  dd      }	|	rfd| _        fd| _        nfd| _        fd| _        |dz  z  }
| j                  }t        |t              r2|j                  }|j                  dz  }|j                  j                  }nd }t        |      D ]  \  }}|d	k(  rd|
z  |rL||   }|j                  z  }|j                   |z  }|z  |z  |j#                  t%        |         |       n|j'                  ||       |j(                  j*                  j-                  | | j.                  | j0                  | j2                  | j4                  
       |r
z  z  |rj6                  z  n|j(                  j8                  j:                  z   | j                  r| j	                  d       | j                  S )Ntruncater   c                 &    t        | z   z        S r;   r   re   __dx__scales    r   <lambda>zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>~       \%6:J-K r   c                 &    t        | z   z        S r;   r   rg   __dy__r   s    r   r   zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>   r   r   c                     | z   z  S r;   r   r   s    r   r   zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>       UAJ-? r   c                     | z   z  S r;   r   r   s    r   r   zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>   r   r   g333333?r   
)rk   ro   r|   r   r_   )r   units_per_EMrb   r   rc   poprd   rf   ftLFlags
isinstancer   __shapeData__rV   charToGlyph	enumeratex_offsety_offset
load_glyphord	load_charglyphoutline	decomposerk   ro   r|   r   	x_advancemetricshoriAdvance)rQ   textre   rg   r3   r4   kwdsrV   r[   r   
lineHeightr   sdatadscalefontC2Gir~   sd
sdx_offset
sdy_offsetr   r   r   s                       @@@r   
_text2Pathz4__makeTextPathsCode__.<locals>.FTTextPath._text2Pathu   s   !%h!7JD$$T%6%66EuWFuWFDF$(FFMMDM#xx
15H#K#K#?#?!)#e!3J#}}H!$y1 $ 2 2!%!2!2T!9"&))"7"7 $( c!d7%&F"j0F$ !&qB)+V);J)+V);J"j0F"j0F OOGCFOHE NN1h7

**44T4<<Y]YeYeptp}p}  IM  IV  IV4  W "j0F"j0F",,v"5DJJDVDVDbDbb%c& vvt}}^<66Mr   r;   )r   r   r   FT_LOAD_DEFAULTFT_LOAD_NO_SCALEFT_LOAD_NO_BITMAPr   rR   r   rk   ro   r|   r   r   r   r   )rH   r]   s   r   
FTTextPathrN   G   s]    #33h6O6OORZRlRll$0&JJqC2 ./!nW[ +"r   r   r   startr   c	                    t        |      }	|	j                  r|	j                  st        d|z        g j                  }
|dk(  s%t        | ||      }|dk(  r||z
  }n|dk(  r||dz  z
  }|        }|	j                  r* |
|j                  | ||||||             |
j(                  S t        |       r	 | j                  d      } t        | |	g|	j                  z         }t        |      dz
  }t        |      D ]v  \  }\  }}t!        |t"              r|j                  |j$                        } |
|j                  ||||j&                  |||             ||k7  sb||j                  ||      z  }x |
j(                  S # t        $ ra}|j                  d	d
 \  }}t        |j                  dd
 |j                  d
   d| t        |dz
  d      | d| || d| ||dz    fz    d}~ww xY w)zfreetype text2PathDescription(text, x=0, y=0, fontName='fontname',
                                    fontSize=1000, font = 'fontName',
                                    anchor='start', truncate=1, pathReverse=0, gs=None)
                z=text2PathDescription doesn't support multi byte fonts like %rr   endmiddleg       @N)re   rg   r3   r4   r   pathReverseutf8r      r   
   r   z-->z<--r   )r	   
_multiByterU   r<   extendr   r   r   decodeUnicodeDecodeErrorargsmaxr
   substitutionFontslenr   r   bytesencNamer3   __self__)r   re   rg   r3   r4   anchorr   r   r=   r[   P_extendtextLenr>   r   jFTnm1ftr   s                      r   r   z3__makeTextPathsCode__.<locals>.text2PathDescription   sQ    x(??4+<+<$%dgo%opp99w)$(CGu}gI)
N:#B$$R]]4!aS[fn  |G]  H  I  ((( t}S#';;v#6D $D$0F0F)FGBb'!)C%.r] <	6Aq%a.AHHQYY4G q1q!**V^iq  J  "K  Lc6q(!;;A	<
  (((  2 S"#&&1+CAa"4qvvbqzYZY_Y_`aYbcghklmnplpqrhstucvw{|}~  xA  BF  GH  IJ  KM  IM  BN  DO  CQ  8Q  #S  SSs   4E= =	G'AG""G')r   r   c                       t        d      )NzThis installation of reportLab has lacks PYCAIRO extra.
It cannot create paths from text.
Could not create text2PathDescription for using backends from )RuntimeError)r   r   TPs     r   r7   z __makeTextPathsCode__.<locals>._   s"     $??Af H I Ir   )r   r   r   r   )
reportlab.rl_configrE   rF   r<   tuplerH   ImportErrorr]   r   r2   )
rK   _TPrE   rF   r   r7   r   r   rH   r]   s
   `     @@@@r   __makeTextPathsCode__r   6   s    >	~2y)	c	:i]2Z[\\
0301	1B KRz> Y" Y"v ./!nW[/6PQVZ")F -AZXXKKRN	I 1qQQO  s   B	B+*B+r   r   c	                 d    |	j                  dt              }
t         |
| ||||||||	      fi |	S )Nr   )re   rg   r3   r4   r   r   r   r=   )r   r   r   )r   re   rg   r3   r4   r   r   r   r=   r   t2pds              r   r   r      sI    88*+?@Dd4!a%VXR]bdf nhln nr   )N)rH   )__all__reportlab.pdfbase.pdfmetricsr	   r
   r   reportlab.pdfbase.ttfontsr   reportlab.lib.utilsr   r   r   shapesr   r   r   r   sysr   	Exceptionr   r9   r   r   r   globalsupdater   r   r   r   <module>r      sx   
 J I / ? ? R R 	I 	4&$
URn 	  &( )1~dnr   