o
    kƒU[ñ@  ã                   @   sú   d Z dZdZddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZm Z!m"Z# e
eddƒZ$e
eddƒZ%e
eddƒZ&G d	d
„ d
ƒZ'G dd„ de'ƒZ(G dd„ de'ƒZ)G dd„ de'ƒZ*e+ƒ Z,G dd„ dƒZ-dd„ Z.dd„ Z/dS )z3.3.0a›  Classes for ParagraphStyle and similar things.

A style is a collection of attributes, but with some extra features
to allow 'inheritance' from a parent, and to ensure nobody makes
changes after construction.

ParagraphStyle shows all the attributes available for formatting
paragraphs.

getSampleStyleSheet()  returns a stylesheet you can use for initial
development, with a few basic heading and text styles.
)ÚPropertySetÚParagraphStyleÚ	LineStyleÚ	ListStyleÚStyleSheet1ÚgetSampleStyleSheeté    )ÚwhiteÚblack)ÚTA_LEFTÚ	TA_CENTER)Útt2ps)Úcanvas_basefontnameÚunderlineWidthÚunderlineOffsetÚunderlineGapÚstrikeWidthÚstrikeOffsetÚ	strikeGapÚspaceShrinkageÚplatypus_link_underlineÚhyphenationLangÚuriWasteReduceÚembeddedHyphenationé   c                   @   sF   e Zd Zi Zddd„Zdd„ Zdd„ Zdd	„ Zddd„Zddd„Z	dS )r   Nc                 K   s‚   d| j vs	J dƒ‚d| j vsJ dƒ‚|r&|j| jks&J d|jj| jjf ƒ‚|| _|| _| j | j ¡ |  ¡  | jdi |¤Ž dS )zÎWhen initialized, it copies the class defaults;
        then takes a copy of the attributes of the parent
        if any.  All the work is done in init - styles
        should cost little to use at runtime.Únamez1Class Defaults may not contain a 'name' attributeÚparentz3Class Defaults may not contain a 'parent' attributez4Parent style %s must have same class as new style %sN© )	ÚdefaultsÚ	__class__Ú__name__r   r   Ú__dict__ÚupdateÚrefreshÚ_setKwds)Úselfr   r   Úkwr   r   úF/var/www/html/env/lib/python3.10/site-packages/reportlab/lib/styles.pyÚ__init__4   s   $zPropertySet.__init__c                 K   s    |  ¡ D ]	\}}|| j|< qd S ©N)Úitemsr    )r$   r%   ÚkeyÚvaluer   r   r&   r#   J   s   ÿzPropertySet._setKwdsc                 C   s   d| j j| jf S )Nz	<%s '%s'>)r   r   r   ©r$   r   r   r&   Ú__repr__O   s   zPropertySet.__repr__c                 C   s6   | j r| j j ¡ D ]\}}|dvr|| j|< q	dS dS )zƒre-fetches attributes from the parent on demand;
        use if you have been hacking the styles.  This is
        used by __init__)r   r   N)r   r    r)   )r$   r*   r+   r   r   r&   r"   R   s   
€ýzPropertySet.refreshÚ c                 C   sz   t |d | jƒ t |d | jƒ t| j ¡ ƒ}| ¡  | d¡ | d¡ |D ]}| j |d ¡}t |d||f  ƒ q'd S )Nzname =zparent =r   r   z%s = %s)	Úprintr   r   Úlistr    ÚkeysÚsortÚremoveÚget)r$   ÚindentÚkeylistr*   r+   r   r   r&   Ú	listAttrs[   s   

þzPropertySet.listAttrsc                 K   sD   |   ||¡}| j ¡ |_||_|d u r| p||_|jdi |¤Ž |S )Nr   )r   r    Úcopyr   r   r#   )r$   r   r   ÚkwdsÚrr   r   r&   Úclonef   s   zPropertySet.cloner(   )r.   )
r   Ú
__module__Ú__qualname__r   r'   r#   r-   r"   r7   r;   r   r   r   r&   r   1   s    

	r   c                   @   sî   e Zd Zi de“dd“dd“dd“dd“d	d“d
e“dd“dd“de“dd“dd“de“dd“dd“dd“dd“i dd“dd“dd“dd“dd“dd“dd“de“dd “d!d“d"d“d#e“d$e“d%e	“d&e
“d'e“d(e“¥eeeed)œ¥ZdS )*r   ÚfontNameÚfontSizeé
   Úleadingé   Ú
leftIndentr   ÚrightIndentÚfirstLineIndentÚ	alignmentÚspaceBeforeÚ
spaceAfterÚbulletFontNameÚbulletFontSizeÚbulletIndentÚ	textColorÚ	backColorNÚwordWrapÚborderWidthÚborderPaddingÚborderColorÚborderRadiusÚallowWidowsr   ÚallowOrphansÚtextTransformÚendDotsÚsplitLongWordsr   ÚbulletAnchorÚstartÚjustifyLastLineÚjustifyBreaksr   r   r   r   r   r   )ÚlinkUnderliner   r   r   )r   r<   r=   Ú_baseFontNamer
   r	   Ú_baseUnderlineWidthÚ_spaceShrinkageÚ_baseStrikeWidthÚ_baseUnderlineOffsetÚ_baseUnderlineGapÚ_baseStrikeOffsetÚ_baseStrikeGapÚ_platypus_link_underlineÚ_hyphenationLangÚ_embeddedHyphenationÚ_uriWasteReducer   r   r   r   r&   r   n   s–    ÿþýüûúùø	÷
öõôòñðìëêéèçæåâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)Òr   c                   @   s   e Zd ZdedœZdd„ ZdS )r   r   )ÚwidthÚcolorc                 C   s   |  d¡ dS )zKYou can ask a LineStyle to set up the canvas for drawing
        the lines.r   N)ÚsetLineWidth)r$   Úcanvasr   r   r&   ÚprepareCanvas¥   s   zLineStyle.prepareCanvasN)r   r<   r=   r	   r   rm   r   r   r   r&   r       s
    þr   c                   @   s,   e Zd Zeddddedddddd	d	d
�Zd	S )r   é   r   ÚleftÚ1Ú	HelveticarB   ÚautoÚltrN)rC   rD   ÚbulletAlignÚ
bulletTypeÚbulletColorrI   rJ   ÚbulletOffsetYÚbulletDedentÚ	bulletDirÚbulletFormatrY   )r   r<   r=   Údictr	   r   r   r   r   r&   r   «   s    
ôr   c                   @   sN   e Zd ZdZdd„ Zdd„ Zefdd„Zdd	„ Zd
d„ Z	ddd„Z
dd„ ZdS )r   aG  
    This may or may not be used.  The idea is to:
    
    1. slightly simplify construction of stylesheets;
    
    2. enforce rules to validate styles when added
       (e.g. we may choose to disallow having both
       'heading1' and 'Heading1' - actual rules are
       open to discussion);
       
    3. allow aliases and alternate style lookup
       mechanisms
       
    4. Have a place to hang style-manipulation
       methods (save, load, maybe support a GUI
       editor)
   
    Access is via getitem, so they can be
    compatible with plain old dictionaries.
    c                 C   s   i | _ i | _d S r(   )ÚbyNameÚbyAliasr,   r   r   r&   r'   Ó   s   
zStyleSheet1.__init__c                 C   sH   z| j | W S  ty#   z| j| W  Y S  ty"   td| ƒ‚w w )Nz"Style '%s' not found in stylesheet)r}   ÚKeyErrorr|   ©r$   r*   r   r   r&   Ú__getitem__×   s   ÿýzStyleSheet1.__getitem__c                 C   s,   z| | W S  t y   |tkr| Y S ‚ w r(   )r~   Ú_stylesheet1_undefined)r$   r*   Údefaultr   r   r&   r4   à   s   
þzStyleSheet1.getc                 C   s   || j v p	|| jv S r(   )r}   r|   r   r   r   r&   Ú__contains__ç   s   zStyleSheet1.__contains__c                 C   s   || v S r(   r   r   r   r   r&   Úhas_keyê   s   zStyleSheet1.has_keyNc                 C   s‚   |j }|| jv rtd| ƒ‚|| jv rtd| ƒ‚|r1|| jv r&td| ƒ‚|| jv r1td| ƒ‚|| j|< |r?|| j|< d S d S )Nz(Style '%s' already defined in stylesheetz1Style name '%s' is already an alias in stylesheetz1Alias name '%s' is already an alias in stylesheet)r   r|   r~   r}   )r$   ÚstyleÚaliasr*   r   r   r&   Úaddí   s   




ÿzStyleSheet1.addc                 C   sr   t | j ¡ ƒ}| ¡  i }t | j ¡ ƒD ]\}}|||< q|D ]\}}| |d ¡}t||ƒ | d¡ tƒ  qd S )Nz    )r0   r|   r)   r2   r}   r4   r/   r7   )r$   ÚstylesÚaliir†   r…   r   r   r   r&   r0   þ   s   


üzStyleSheet1.listr(   )r   r<   r=   Ú__doc__r'   r€   r�   r4   rƒ   r„   r‡   r0   r   r   r   r&   r   ½   s    	
r   c                  C   sJ   t dd ƒ} t| _d| _d| _|  ¡  tƒ  t d| ƒ}d|_| ¡  | |fS )NÚNormalrB   gÍÌÌÌÌÌ,@ÚLiteralÚCourier)r   r]   r>   r?   rA   r7   r/   )ÚpNormalÚpPrer   r   r&   Ú
testStyles
  s   

r�   c                  C   s
  t ƒ } |  tdtddd�¡ |  td| d dd�¡ |  td| d td	�¡ | jtd
| d tdddd�dd� | jtd| d tddtdd�dd� | jtd| d tddddd�dd� | jtd| d tddddd�dd� | jtd| d tddddd�dd� | jtd| d tddddd�d d� | jtd!| d td"d#dd$d�d%d� | jtd&| d d'd(d)�d*d� | jtd+| d d'd,d'dtd-�d.d� |  td/| d d0dd1d'd,d2d3�¡ | jtd4d5dd'd6d7t	d8dd'd9d:d5d5d;�d<d� | jtd=d5dd'd6d7t	d8dd'd9d:d5d5d;�d>d� | S )?zReturns a stylesheet objectr‹   r@   rB   )r   r>   r?   rA   ÚBodyTexté   )r   r   rG   ÚItalic)r   r   r>   ÚHeading1rn   é   )r   r   r>   r?   rA   rH   Úh1)r†   ÚTitle)r   r   r>   r?   rA   rF   rH   ÚtitleÚHeading2é   )r   r   r>   r?   rA   rG   rH   Úh2ÚHeading3Úh3ÚHeading4é   Úh4ÚHeading5é	   gš™™™™™%@é   Úh5ÚHeading6é   gÍÌÌÌÌÌ @é   Úh6ÚBulletr   é   )r   r   rE   rG   ÚbuÚ
Definitioné$   )r   r   rE   rC   rK   rG   rI   ÚdfÚCoder�   gš™™™™™!@r.   )r   r   r>   r?   rA   rE   rC   r   ÚUnorderedListNro   rp   rq   rr   rs   )r   r   rC   rD   rt   ru   rv   rI   rJ   rw   rx   ry   rz   rY   ÚulÚOrderedListÚol)
r   r‡   r   r]   Ú_baseFontNameIÚ_baseFontNameBr   Ú_baseFontNameBIr   r	   )Ú
stylesheetr   r   r&   r     s   ýþþûúúù	úù	úù	úù	úù	úù	ýüúù	ù	òðòðr   N)0Ú__version__rŠ   Ú__all__Úreportlab.lib.colorsr   r	   Úreportlab.lib.enumsr
   r   Úreportlab.lib.fontsr   Úreportlab.rl_configr   r]   r   r^   r   ra   r   rb   r   r`   r   rc   r   rd   r   r_   r   re   r   rf   r   rh   r   rg   rµ   r´   r¶   r   r   r   r   Úobjectr�   r   r�   r   r   r   r   r&   Ú<module>   s$   8=2M