
    Q?h2                        S r SrSrSSKJr  SSKJrJrJrJ	r	J
r
JrJrJr  SSKJr  SSKJr  S rS	 rS
 rS r " S S\5      r " S S\5      r\S:X  am  SSKrS rS rS rSSKJrJr  \" 5       r \ S   r!\" S\!S9r"S\"l#        SS\"SSS4SS\"SSS4SS\ S    SS!S"44 H  u  r$r%r&r'r(r)\)(       d  M  \" \$\&\%\'\(5        M!     gg)#)XPreformattedPythonPreformattedz3.5.20z:A 'rich preformatted text' widget allowing internal markup    )	PyFontify)	Paragraph_handleBulletWidth	ParaLines_getFragWordsstringWidthgetAscentDescent	imgVRangeimgNormV)isSeq)	_dedenterc                    / n/ nU S S  nU/ :w  a  US   nUR                   nUS	 UR                  S5      nUS:  aa  XVS-   S  nUR                  UR                  US U S95        UR                  U5        / nUS:w  a  UR	                  SUR                  US95        OUR                  U5        U/ :w  a  M  U/ :w  a  UR                  U5        U$ )Nr   
   text )r   findappendcloneinsert)fragslinesclineWwtitlefts           R/var/www/html/env/lib/python3.13/site-packages/reportlab/platypus/xpreformatted.py_getFragLinesr#      s    EEaA
r'aDFFaDFF4La4cdGELLae,-LLEby1777./LLO r' byUL    c                     U R                  5       nS H   n[        X45      (       d  M  [        X45        M"     U R                  X Ul        U/$ )N)r   r   )r   hasattrdelattrr   )blParastartstopfas        r"   _split_blParar-   &   s=    A1<< ll5&AG3Jr$   c                 $    U R                  S5      $ )N )countr   s    r"   _countSpacesr1   .   s    ::c?r$   c                 F   / nSnSnU  H  nUR                   SS nUR                  XV45        [        USS5      nU(       a$  [        USS5      n[        US5      (       a  Xl        U[        XeR                  UR                  5      -  nXFR                  S5      -  nM     X4U4$ )zgiven a fragment list return a list of lists
[size, spaces, (f00,w00), ..., (f0n,w0n)]
each pair f,w represents a style and some string
r   NcbDefnwidthnormalizedValuer/   )	r   r   getattrr&   _normalizerr
   fontNamefontSizer0   )	r   maxWidthr   nsr+   r   cb_ws	            r"   _getFragWordr?   8   s    
 	A	A	Avvay	!Qx%GA&Br+,,!)	[zz1::66 	
ZZ_  7Nr$   c                   .    \ rS rSrSS jrS r\rS rSrg)r   Q   Nc                 B    XPl         U4S jnU R                  XX4U5        g )Nc                 J    SR                  [        U =(       d    SU5      5      $ )Nr   r   )joinr   )r   dedents     r"   <lambda>(XPreformatted.__init__.<locals>.<lambda>T   s    dii	$*"V8T.Ur$   )caseSensitive_setup)selfr   style
bulletTextr   rH   rE   cleaners           r"   __init__XPreformatted.__init__R   s     *&,UDG<r$   c                    SU l         [        U5      (       d  U/nOUn/ nSnX$   nU R                  n[        UR                  5      nSn[        U R                  Xb5        SU l        [        U S[        USS5      5      n	U	S;  n
U R                  n[        U5      nUS:X  Gai  US   n[        US5      (       a  UR                  nUR                  n[        X5      u  nnSnUR                  R                  S5      nU H  n[!        UX5      nUU R                   :  a  UU l         [#        UU5      nUU-
  nUR%                  UUR                  S5      U45        US-   nU[        U5      :  =(       a    X$   =(       d    US	   nM     UR'                  UUUUUS
9nOUUR(                  nUR*                  nU H'  nUS:X  a  US   nOUR,                  n[#        UU5      nM)     UR'                  UUS9n[#        U R.                  U5      U l        U$ US::  aD  [1        SUR                  UR                  UR2                  UR                  SUR                  -  / S9$ [5        U5       GH  n[7        UU5      u  nnnUS   S   nUR                  n[        UR                  U5      u  nnUR'                  5       /nUS   S   US	   l        USS  H  nUS   R'                  5       nUS   Ul        UR%                  U5        UR                  nUR                  nU
(       a]  [        USS5      n[        USS5      (       a/  [9        [;        UR                  U5      UR<                  U5      u  nnO[        X5      u  nnO[        X5      u  nn[#        UU5      n[#        UU5      n[?        UU5      nM     US-  nU[        U5      :  =(       a    X$   =(       d    US	   n[#        UU5      nUU-
  nUU R                   :  a  UU l         UR%                  [1        UUUUUUUSS95        GM     [#        U R.                  U5      U l        [1        SUS9$ )a_  
Returns a broken line structure. There are two cases

A) For the simple case of a single formatting input fragment the output is
    A fragment specifier with
        - kind = 0
        - fontName, fontSize, leading, textColor
        - lines=  A list of lines
        
            Each line has two items:
            
            1. unused width in points
            2. a list of words

B) When there is more than one input formatting fragment the out put is
    A fragment specifier with
        - kind = 1
        - lines =  A list of fragments each having fields:
        
            - extraspace (needed for justified)
            - fontSize
            - words=word list
            - each word is itself a fragment with
            - various settings

This structure can be used to easily draw paragraphs with the various alignments.
You can supply either a single width or a list of widths; the latter will have its
last item repeated until necessary. A 2-element list is useful when there is a
different first line indent; a longer list could be created to facilitate custom wraps
around irregular objects.r   autoLeadingr   )r   offr   r   r   r/   )kindr   ascentdescentr9      )rT   r   gɿ)rT   r9   r8   	textColorrU   rV   r   Nr3   r4   T)
extraSpace	wordCountwordsr9   rU   rV   currentWidthpreformatted) 
_width_maxr   rK   floatr9   r   rL   heightr6   r   lenr&   r8   r   r   splitr
   maxr   r   rT   r   r\   r4   r   rX   r#   r?   r   r   valignmin) rJ   r4   	maxWidthsr   linenor:   rK   	fFontSizerequiredWidthrQ   
calcBoundsr   nFragsr+   r9   r8   rU   rV   rT   Llr\   rY   r(   r;   r   maxSize	maxAscent
minDescentr[   r    r3   s                                    r"   
breakLinesXPreformatted.breakLinesW   s   @ U||%Yi$

%..)	 	4??5;d=}R1PQ 
2


E
19aAq  ::::"28"E&&,,t$A#.q#CL#doo5t$']$CM!),!6JLL*QWWS\,!GH#AXF%c)n4J9J[iXZmH  d%vg_ghvvAQw'(t'(~~$']$CM  d%8TZZ6DJMQY!ennu~~&+ooennUYZ_ZhZhUh"$& & #5)%1!H%="aaDG**(8G(L%	:!"1ab	12A!

AQ4AFLLO zzH zzH!!(8D!9"6'!44-6xh7WX^XeXefn-oNGF.>x.QOFG*:8*M!'(3G #If 5I!$Z!8J! $ !!#i.0FY5FW)TV- #L ?%4
$//1\4?Y*qPU`gpy  CM  [g  uy  z  {= *@ TZZ6DJ!511r$   c                     [         $ )N)r-   )rJ   s    r"   _get_split_blParaFunc#XPreformatted._get_split_blParaFunc   s    r$   )r^   rH   r`   r4   )NNr   r   )	__name__
__module____qualname____firstlineno__rN   rq   breakLinesCJKrt   __static_attributes__ r$   r"   r   r   Q   s    =
xt Mr$   r   c                   @    \ rS rSrSrSSSSSSS	.rSS jrS rS rSr	g
)r      zGUsed for syntax-colored Python code, otherwise like XPreformatted.
    )r   r   )z<font color="green"></font>)z<font color="blue"><b>z</b></font>)z<font color="black">r   )z<font color="red">r   )z<font color="gray">r   )restcommentkeyword	parameter
identifierstringNc           	      |    U(       a   U R                  U R                  U5      5      n[        R                  XX#XES9  g )N)rL   rE   r   )fontify
escapeHtmlr   rN   )rJ   r   rK   rL   rE   r   s         r"   rN   PythonPreformatted.__init__   s1    << 56Dt5far$   c                 r    UR                  SS5      nUR                  SS5      nUR                  SS5      nU$ )N&z&amp;<z&lt;>z&gt;)replace)rJ   r   r<   s      r"   r   PythonPreformatted.escapeHtml   s7    LLg&IIc6"IIc6"r$   c                     US   S:X  a  USS n[         R                  " U5      nSnSnU H+  u  pVpxX1XF -   nU R                  U   u  pX9-   XU -   U
-   nUnM-     X1US -   nU$ )z/Return a fontified version of some Python code.r   r   r   Nr   )r   r   formats)rJ   codetagsfontifiedCodeposkr    jdummyr<   es              r"   r   PythonPreformatted.fontify   s     7d?8D  &"NA!)K7M<<?DA)-q	9A=MC	 # &ST
2r$   r|   )Nr   N)
rv   rw   rx   ry   __doc__r   rN   r   r   r{   r|   r$   r"   r   r      s2      :@:89<Gb
r$   r   __main__Nc                    [        S[        U 5      -  5        U R                  R                  n[	        U5      n[
        R                  R                  n[        U5       Hj  nX   nUR                  n[	        U5      nU" SXGUR                  4-  5        [        U5       H  nU" SXU   R                  4-  5        M     [        5         Ml     g )Nz(
############dumpXPreforemattedLines(%s)zline%d: %d(%d)
  z %d:'%s')printstrr(   r   ra   sysstdoutwriteranger[   rZ   r   )	Pr   r;   outwrm   liner[   nwordsr   s	            r"   dumpXPreformattedLinesr     s    9CFBCu:ZZqA8DJJEZF%$..(AAB6]Z8== 112 #G r$   c           	         [        S[        U 5      -  5        U R                  n[        U5      n[	        U5       H  n[        SX1U   R
                  4-  5        M!     [        R                  R                  nSn[        U5       HV  nSn[        US5       H<  nU" SX2US   4-  5        US-   nUSS   H  nU" SUS   -  5        M     [        5         M>     US-   nMX     g )Nz(
############dumpXPreforemattedFrags(%s)zfrag%d: '%s'r   ih  zfrag%d.%d: size=%dr   z '%s')r   r   r   ra   r   r   r   r   r   r#   r	   )r   r   r;   rm   r   rl   r   r   s           r"   dumpXPreformattedFragsr     s    9CFBCu:qA.AQx}}#556  ZZu%AA"1S))Q1Q4L89E12A1Q4(  * AA &r$   c                     [        XUS9n[        U5        UR                  X45      u  pg[        U5        UR	                  X45      n[        U5        U H!  n	U	R                  X45        [        U	5        SnM#     g )N)rE   i  )r   r   wrapr   rb   )
r   rK   rE   aWaHr   r   hSr<   s
             r"   try_itr   #  sd    
&
1q!ffRnq!GGBNq!AFF2M"1%B r$   )getSampleStyleSheetParagraphStyleBodyTextdiscussiontext)parent	Helveticaa?  


The <font name=courier color=green>CMYK</font> or subtractive

method follows the way a printer
mixes three pigments (cyan, magenta, and yellow) to form colors.
Because mixing chemicals is more difficult than combining light there
is a fourth parameter for darkness.  For example a chemical
combination of the <font name=courier color=green>CMY</font> pigments generally never makes a perfect

black -- instead producing a muddy color -- so, to get black printers
don't use the <font name=courier color=green>CMY</font> pigments but use a direct black ink.  Because
<font name=courier color=green>CMYK</font> maps more directly to the way printer hardware works it may
be the case that &amp;| &amp; | colors specified in <font name=courier color=green>CMYK</font> will provide better fidelity
and better control when printed.


g     |@gffffffE@av  

   This is a non rearranging form of the <b>Paragraph</b> class;
   <b><font color=red>XML</font></b> tags are allowed in <i>text</i> and have the same

      meanings as for the <b>Paragraph</b> class.
   As for <b>Preformatted</b>, if dedent is non zero <font color=red size=+1>dedent</font>
       common leading spaces will be removed from the
   front of each line.

   z    <font color=blue>class </font><font color=red>FastXMLParser</font>:
        # Nonsense method
        def nonsense(self):
            self.foo = 'bar'
Codeg333333@r   )*__all____version__r   reportlab.libr   reportlab.platypus.paragraphr   r   r   r	   r
   r   r   r   reportlab.lib.utilsr   reportlab.platypus.flowablesr   r#   r-   r1   r?   r   r   rv   r   r   r   r   reportlab.lib.stylesr   r   
styleSheetBDTstyler8   r   rE   rK   r   r   activer|   r$   r"   <module>r      s-   H #R R R % 2,2DI DL' 'R Z&
 I$&J:A-a8G!G2$ gudA%1&
 wtQ
 
 z&5#q*=$0+fUBFJ 66$uVBr2K$0i r$   