
    i06                         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                                 e                       ddedddddfdZdS ))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dS )r   N)__name__
__module____qualname__     h/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/reportlab/graphics/utils.pyr   r      s        Dr   r   c                 n   t          t          t          t                      d d                             \  }}ddlm} |j        dk    rdd l}|j        	                    |j        
                    |j                  d          }t          d|d|                    |                     dD ]2}t          d|d	t          t          ||                               3d
t          |           dt          |          d|d|d	}|dz  }t!          |t#          t$                               d S )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      su   #c(**RaR.))**FB######!			GLL);<<WEE"**Q---01111 	N 	NAEqqqgi6J6J1K1K1KLMMMMimnviwiwiwiwx|  ~F  yG  yG  yG  yG  HJ  HJ  HJ  KM  KM  KM  NDLDDM22233333r   c                    	 |                      ||           d S # t          $ r}|j        d                             d          st	          ||           ddlm} 	 t          |          } |||j        	                                |j
        j        t                     n#  t	          ||           Y nxY w|                      ||           Y d }~d S d }~ww xY w)Nr   zCan't find font!)
makeT1Font)r   
ValueErrorargsendswithr9   _rl_renderPMr;   r	   face
findT1Fileencodingvectorr   )gsr3   r4   er;   fs         r   r   r      s   &


8H%%%%% 
& 
& 
&vay!!"455 	*x)))++++++	*!!AJx 1 1 3 3AJ4EmTTTT	*x)))))


8H%%%%%%%%%
&s-    
C6CABCB31CCc                 f    t          |           | k    rt          |           S t          | d          S )N   )intround)ns    r   r   r   .   s)    
1vvqyyQ-1::r   Nfreetype	_renderPMc           	      8   	
 ddl m}m}   }|dk    r|dk    rdnd n||v r| nt          d|d           ft	           fd	|D                       z   D ]  dk    rP	 dd l	n# t          $ r Y w xY wdd l
 G 	
fd
d          ddt          ddddd ffd	}t          |          c S  dk    rF	 dd l
}n# t          $ r Y pw xY wddddt          ddddd ffd	}t          |t                    c S fd}t          ||||          S )Nr   )	textPathsrenderPMBackendbackend	rlPyCairorM   rN   z
textPaths=z7 should be one of 'backend', 'freetype' or '_renderPM')c              3   (   K   | ]}|k    |V  d S Nr   ).0r7   tps     r   	<genexpr>z(__makeTextPathsCode__.<locals>.<genexpr><   s'      00a!R%%%%%%00r   c                       e Zd Z j         j        z   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dS ))__makeTextPathsCode__.<locals>.FTTextPathc                     i | _         d S rU   )faces)selfs    r   __init__z2__makeTextPathsCode__.<locals>.FTTextPath.__init__F   s    !#DJJJr   c                 n   || j         vrt          |          }|st          d|d          |j        r"|j        j        }                    |          }n1t          |j        dd           }|s|j                                        }	                    |          }||f| j         |<   | j         |         S )Nzfont z has not been registeredpfbFileName)
r\   r	   r<   _dynamicFontr@   	_ttf_dataBytesIOr1   rA   Face)r]   r3   fontpath_or_streamr@   rM   ios        r   r   z1__makeTextPathsCode__.<locals>.FTTextPath.setFontI   s    tz11&x00# [",-YX-Y-Y-Y"Z"ZZ, 	H-1Y-@N .0ZZ-G-GNN-4TY}T-R-RN#1 H151E1E1G1G'}}^<<04T{
8,:h//r   c                     | j         r|                     d           |                     d|                     |j                  |                     |j                  f           d S )N	closePathmoveTo)PP_appendxptxyptyr]   actxs      r   move_toz1__makeTextPathsCode__.<locals>.FTTextPath.move_to\   sR    v<t}}^<<<MM8DHHQSMM$((13--"HIIIIIr   c                     |                      d|                     |j                  |                     |j                  f           d S )NlineTorm   rn   ro   rp   rq   rr   s      r   line_toz1__makeTextPathsCode__.<locals>.FTTextPath.line_to`   s9    MM8DHHQSMM$((13--"HIIIIIr   c           	         | j         r| j         d         dd         n|j        |j        f\  }}|                     |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           dS )zusing the cubic equivalentNcurveTor      )rl   ro   rq   rn   rp   rm   )
r]   rs   brt   x0y0x1y1x2y2s
             r   conic_toz2__makeTextPathsCode__.<locals>.FTTextPath.conic_toc   s    /3vEDF2JrssOOAC:EBr!#B!#B!#B!#BMM9R"R%A-=b2b5!)Q>NrSUVXSXZ[R[|\^`bce`egh_h\hikln"opppppr   c                 ^   |                      d|                     |j                  |                     |j                  |                     |j                  |                     |j                  |                     |j                  |                     |j                  f           d S )Nr}   rx   )r]   rs   r   crt   s        r   cubic_toz2__makeTextPathsCode__.<locals>.FTTextPath.cubic_tol   s    MM9TXXac]]488AC==RSRUW[W_W_`a`cWdWdeiememnonqerersws{s{|}|  tA  tA  #B  C  C  C  C  Cr   Nc                 :    | j                             d           d S )Nri   )rl   append)r]   rt   s     r   
close_pathz4__makeTextPathsCode__.<locals>.FTTextPath.close_patho   s    FMM.11111r   r     c                    |                      |          \  }}||j        z  |z  |z  g | _        | j        j        | _        |                    dd          }	|	rfd| _        fd| _        nfd| _        fd| _        |dz  z  }
| j        }t          |t                    r|j        }|j        dz  }|j        j        }nd }t          |          D ]\  }}|d	k    rd|
z  |rP||         }|j        |z  }|j        |z  }|z  |z  |                    |t%          |                   |           n|                    ||           |j        j                            | | j        | j        | j        | j        
           |r
|z  |z  |r
|j        |z  n|j        j        j        z  | j        r|                     d           | j        S )Ntruncater   c                 .    t          | z   z            S rU   r   ro   __dx__scales    r   <lambda>zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>{       \%6:J-K-K r   c                 .    t          | z   z            S rU   r   rq   __dy__r   s    r   r   zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>|   r   r   c                     | z   z  S rU   r   r   s    r   r   zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>~       UAJ-? r   c                     | z   z  S rU   r   r   s    r   r   zF__makeTextPathsCode__.<locals>.FTTextPath._text2Path.<locals>.<lambda>   r   r   g333333?r   
)ru   ry   r   r   ri   )r   units_per_EMrl   r   rm   poprn   rp   ftLFlags
isinstancer   __shapeData__r@   charToGlyph	enumeratex_offsety_offset
load_glyphord	load_charglyphoutline	decomposeru   ry   r   r   	x_advancemetricshoriAdvance)r]   textro   rq   r3   r4   kwdsr@   re   r   
lineHeightr   sdatadscalefontC2Gir   sd
sdx_offset
sdy_offsetr   r   r   s                       @@@r   
_text2Pathz4__makeTextPathsCode__.<locals>.FTTextPath._text2Pathr   sN   !%h!7!7JD$$T%66EuWFuWFDF$(FMDM#xx
155H @#K#K#K#K#K#K#K#K#K#K#?#?#?#?#?#?#?#?#?#?!)#e!3J#}H!$y11 % $ 2!%!2T!9"&)"7 $( c c!d77%&F"j0F$  8!&qB)+V);J)+V);J"j0F"j0F OOGCFFOHEEEE NN1h777
*44T4<Y]Yeptp}  IM  IV4  W  W  W  1"j0F"j0F"b",v"5"5DJDVDbbv<t}}^<<<6Mr   rU   )r   r   r   FT_LOAD_DEFAULTFT_LOAD_NO_SCALEFT_LOAD_NO_BITMAPr   r^   r   ru   ry   r   r   r   r   r   )rM   rg   s   r   
FTTextPathrZ   D   s        #3h6OORZRll$ $ $0 0 0 0 0 0&J J JJ J Jq q qC C C2 2 2 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' |
|                    | ||||||                     nat          |           r	 |                     d          } n# t          $ rs}|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t          | |	g|	j        z             }t          |          dz
  }t          |          D ]\  }\  }}t!          |t"                    r|                    |j                  } |
|                    ||||j        |||                     ||k    r||                    ||          z  }|
j        S )zfreetype text2PathDescription(text, x=0, y=0, fontName='fontname',
                                    fontSize=1000, font = 'fontName',
                                    anchor='start', truncate=1, pathReverse=0, gs=None)
                =text2PathDescription doesn't support multi byte fonts like %rr   endmiddle       @N)ro   rq   r3   r4   r   pathReverseutf8r      r   
   r   --><--r   )r	   
_multiBytera   r<   extendr   r   r   decodeUnicodeDecodeErrorr=   maxr
   substitutionFontslenr   r   bytesencNamer3   __self__)r   ro   rq   r3   r4   anchorr   r   rD   re   P_extendtextLenrE   r   jFTnm1rF   tr   s                      r   r   z3__makeTextPathsCode__.<locals>.text2PathDescription   s    x((? q4+< q$%dgo%oppp9w)$(CCGu}}gI))
N:#B$ <HR]]4!aS[fn  |G]  H  H  I  I  I  It}} SS#';;v#6#6DD1 S S S"#&1+CAa"4qvbqbzYZY_`aYbYbYbcghklmnplpqrhshstuhucvcvcvw{|}~|  xA  xA  xA  BF  GH  IJ  KM  IM  GM  BN  BN  DO  CQ  8Q  #S  SS $D$0F)FGGBb''!)C%.r]] < <	6Aq%a..GAHHQY4G4G q1q!*V^iq  J  "K  "K  L  L  Lc66q(!;!;;A((s   3C	 	
EA.EE)r   r   c           
      8   g }g }g j         }| r<t          |           dk    r)| d         d         dk    rd| d         dd          z   f| z   } | pddz   D ]B}|d         }|r|dv r|d         dk    r{|d= |rK|dd d	         |dd d	         c|dd d	<   |dd d	<   |                                 |                                 |                    dd
           |                     d           d}|r"t	          t          t          |                    }|D ]J}	|t          t          j	        |	                   z   }
 ||	ft          |||
                   z              |
}Kg }g }|                     |           |                    |dd                     D|j        S )Nr   r   rw   )moveToClosedr   ))r   )rk   r   r   r   r   rk   rj   )r   r   reverseinsertr$   r%   r   r   r   indextupler   r   )Gr   r   Orl   R_appendgopr   or   s              r   r   z+__makeTextPathsCode__.<locals>.processGlyph   s   9 8QqtAw'8'8*1Q4835a7A'r;. $ $A1B R#CCCQ4// !!* ,23ADqD'!ADqD'!$Q$!$Q$ !		 !		HHQx000HH[111#Bc,q.A.A)B)BQ!" " "A !$6~7KA7N7N$O OA$HaT51Q3==%8999 !AAHHRLLLHHQqrrUOOOO((r   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
  }|ddlm}  |d	d	          }t          |||           |	j        r3|	                    | ||          D ]} |
 |||
                     nqt          |           r	 |                     d          } n# t          $ rs}|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|	}t          | |	g|	j        z             }t#          |          d	z
  }t%          |          D ]\  }\  }}||k    rt          ||j        |           |}|	                    |||          D ]} |
 |||
                     ||k    r1||                    |                    |j                  |          z  }|
j        S )z_renderPM text2PathDescription(text, x=0, y=0, fontName='fontname',
                                    fontSize=1000, font = 'fontName',
                                    anchor='start', truncate=1, pathReverse=0, gs=None)
                r   r   r   r   r   Nr   )gstater   )r   r   r   r   r   r   r   r   r   )r	   r   ra   r<   r   r   r?   r   r   _stringPathr   r   r   r=   r   r
   r   r   r   r3   r   r   )r   ro   rq   r3   r4   r   r   r   rD   re   r   r   r   r   rE   r   r   fcr   r   rF   r   r   s                         r   r   z3__makeTextPathsCode__.<locals>.text2PathDescription   s)    x((? q4+< q$%dgo%oppp9w)$(CCGu}}gI))
N:333333!B8H---$ N^^D155 \ \ ak!Z!Z!Z[[[[\ t}} SS#';;v#6#6DD1 S S S"#&1+CAa"4qvbqbzYZY_`aYbYbYbcghklmnplpqrhshstuhucvcvcvw{|}~|  xA  xA  xA  BF  GH  IJ  KM  IM  GM  BN  BN  DO  CQ  8Q  #S  SS B#D$0F)FGGBb''!)C%.r]] N N	6Aqb55#Bqz(;;;!"B!#!A!6!6 ` `A$H\\!XR]%^%^%^____c66qxx	/B/BH!M!MMA((s   C. .
E+8A.E&&E+)r   r   r   c                  (    t          d          )NzThis installation of reportLab has neither PYCAIRO or RENDERPM extras installed.
It cannot create paths from text.
Could not create text2PathDescription for using backends from )RuntimeError)r=   r   TPs     r   r7   z __makeTextPathsCode__.<locals>._  s-      H?A H  H I I Ir   )r   r   r   r   )r   r   )reportlab.rl_configrP   rQ   r<   r   rM   ImportErrorrg   r   r2   r?   r   )rW   _TPrP   rQ   r   r?   r7   r   r   rM   rg   r   s   `      @@@@@r   __makeTextPathsCode__r   3   sl   >>>>>>>>	~2y)*K77ZZ[	c		jijjjkkk
0000300011	1B YR YRz>>   IIIY" Y" Y" Y" Y" Y" Y" Y" Y" Y" Y"v ./!nW[/6PQVZ") ") ") ") ") ")F -AZXXXXXX__#####   ) ) ) ): ./!nW[/6PQVZ)) )) )) )) )) ))T -A|dkllllll[ ^	I 	I 	I 	I 	I 1qQQQQs$   (A--
A:9A:>C
CCr   r   c	                 v    |	                     dt                    }
t           |
| ||||||||	  	        fi |	S )Nr   )ro   rq   r3   r4   r   r   r   rD   )r   r   r   )r   ro   rq   r3   r4   r   r   r   rD   r   t2pds              r   r   r     sf    88*+?@@Ddd4!a%VXR]bdf f f n nhln n nr   )NrL   )__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      sc  
 J I I I I I I I I I / / / / / / ? ? ? ? ? ? ? ? ? ? R R R R R R R R R R R R      	 	 	 	 	I 	 	 	4 4 4& & &  
cR cR cR cRJ 		  &&(( ) ) )1~dn n n n n nr   