a
    èÞJb_2  ã                   @   s(   d dl Z d dlmZ G dd„ deƒZdS )é    N)Úwarnc                       sˆ   e Zd ZdZ‡ fdd„Zdd„ Zedd„ ƒZedd	„ ƒZed
d„ ƒZ	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZ‡  ZS )ÚShapez>
    A class for to represent Excel XLSX shape objects.


    c                    sÊ   t t| ƒ ¡  || _|| _d| _d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d| _g | _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _|   |¡ dS )z
        Constructor.

        r   Ú é   éÿÿÿÿNF)!Úsuperr   Ú__init__ÚnameÚ
shape_typeZconnectZdrawingZedit_asÚidÚtextÚtextlinkZstencilÚelementÚstartÚstart_indexÚendZ	end_indexZadjustmentsZ
start_sideZend_sideZflip_hZflip_vZrotationÚtext_rotationZtextboxÚalignÚfillÚfontÚformatÚlineZurl_rel_indexZtipÚ_set_options)Úselfr
   r	   Úoptions©Ú	__class__© ú/lib/python3.9/site-packages/xlsxwriter/shape.pyr      s>    zShape.__init__c                 C   sº   |   | d¡¡| _|  | d¡¡| _|  | d¡¡| _|  | d¡¡| _|  	| d¡¡| _
| dd¡| _| dd	¡| _| j d
¡r| j d
¡| _| d¡rª|  	|d ¡| _
| jr¶d | _d S )Nr   r   r   Úgradientr   r   r   r   r   ú=Zborder)Ú_get_align_propertiesÚgetr   Ú_get_fill_propertiesr   Ú_get_font_propertiesr   Ú_get_gradient_propertiesr   Ú_get_line_propertiesr   r   r   Ú
startswithÚlstrip)r   r   r   r   r   r   F   s    
zShape._set_optionsc                 C   sv   | sddiS t  | ¡} ddddddd	d
ddddœ}|  d¡}|d urj||v rZ|| | d< ntd| ƒ d S d| d< | S )NÚdefinedFÚsolidZsysDotZsysDashÚdashZdashDotZlgDashZ	lgDashDotZlgDashDotDotÚdotZ
sysDashDotZsysDashDotDot)r*   Z	round_dotZ
square_dotr+   Zdash_dotZ	long_dashZlong_dash_dotZlong_dash_dot_dotr,   Zsystem_dash_dotZsystem_dash_dot_dotÚ	dash_typezUnknown dash type '%s'T©ÚcopyÚdeepcopyr"   r   )r   Z
dash_typesr-   r   r   r   r&   a   s.    
õ
zShape._get_line_propertiesc                 C   s"   | sddiS t  | ¡} d| d< | S )Nr)   FT)r/   r0   )r   r   r   r   r#   ‡   s
    
zShape._get_fill_propertiesc              1   C   sè   | sd S t  | ¡} |  d¡s(tdƒ d S |  d¡s>tdƒ d S ddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5œ0}| d |vrÄtd6| d  ƒ d S || d  | d< |  d7d8¡| d7< | S )9NÚpatternzPattern must include 'pattern'Zfg_colorzPattern must include 'fg_color'Zpct5Zpct10Zpct20Zpct25Zpct30Zpct40Zpct50Zpct60Zpct70Zpct75Zpct80Zpct90ZltDnDiagZltUpDiagZdkDnDiagZdkUpDiagZwdDnDiagZwdUpDiagZltVertZltHorzZnarVertZnarHorzZdkVertZdkHorzZ
dashDnDiagZ
dashUpDiagZdashHorzZdashVertZ
smConfettiZ
lgConfettiZzigZagÚwaveZ	diagBrickZ	horzBrickÚweaveÚplaidÚdivotZdotGridZdotDmndÚshingleÚtrellisÚsphereZsmGridZlgGridZsmCheckZlgCheckZopenDmndZ	solidDmnd)0Z	percent_5Z
percent_10Z
percent_20Z
percent_25Z
percent_30Z
percent_40Z
percent_50Z
percent_60Z
percent_70Z
percent_75Z
percent_80Z
percent_90Zlight_downward_diagonalZlight_upward_diagonalZdark_downward_diagonalZdark_upward_diagonalZwide_downward_diagonalZwide_upward_diagonalZlight_verticalZlight_horizontalZnarrow_verticalZnarrow_horizontalZdark_verticalZdark_horizontalZdashed_downward_diagonalZdashed_upward_diagonalZdashed_horizontalZdashed_verticalZsmall_confettiZlarge_confettiZzigzagr2   Zdiagonal_brickZhorizontal_brickr3   r4   r5   Zdotted_gridZdotted_diamondr6   r7   r8   Z
small_gridZ
large_gridZsmall_checkZlarge_checkZoutlined_diamondZsolid_diamondzunknown pattern type '%s'Zbg_colorz#FFFFFFr.   )r1   Útypesr   r   r   Ú_get_pattern_properties•   s€    


Ð4zShape._get_pattern_propertiesc                 C   sÂ  | sd S t  | ¡} dddddœ}d| vs8t| d ƒtkrDtdƒ d S dt| d ƒ  kr`d	ksnn td
ƒ d S d| v rÎt| d ƒt| d ƒkrštdƒ d S | d D ](}d|  krºdks¢n tdƒ  d S q¢njt| d ƒdkrìddg| d< nLt| d ƒdkrg d¢| d< n,t| d ƒdkr,g d¢| d< ntdƒ d S |  d¡}|rpd|  kr`dk sxn tdƒ d S nd| d< |  d¡}|d ur¶||v r¤|| | d< ntd| ƒ d S nd| d< | S )NÚlinearZcircleZrectÚshape)r;   ZradialZrectangularÚpathZcolorsz!Gradient must include colors listé   é
   z@Gradient colors list must at least 2 values and not more than 10Z	positionsz0Gradient positions not equal to number of colorsr   éd   z;Gradient position must be in the range 0 <= position <= 100é   )r   é2   r@   é   )r   é!   éB   r@   zMust specify gradient positionsÚangleih  z4Gradient angle must be in the range 0 <= angle < 360éZ   ÚtypezUnknown gradient type '%s)r/   r0   rH   Úlistr   Úlenr"   )r   r9   ÚposrF   Zgradient_typer   r   r   r%   æ   sX    
ü




zShape._get_gradient_propertiesc                 C   sˆ   | d u ri } |   d¡|   d¡|   dd¡|   d¡|   d¡|   d¡|   d¡|   d	¡|   d
d¡|   dd¡dœ
}|d r„t|d d ƒ|d< |S )Nr	   ÚcolorÚsizeé   ÚboldÚitalicÚ	underlineÚpitch_familyÚcharsetÚbaseliner   Úlangzen-US)
r	   rL   rM   rO   rP   rQ   rR   rS   rT   rU   r@   )r"   Úint)r   r   r   r   r   r$   5  s     


özShape._get_font_propertiesc                 C   s¬   g }| s|S |   d¡r(| d| d f¡ |   d¡d urL| dd| d  f¡ |   d¡d urp| dd| d  f¡ |   d¡d urˆ| d	¡ |   d
¡dkr¨| d
| d
 f¡ |S )NrM   ZszrO   Úbr   rP   ÚirQ   )ÚuZsngrT   r   )r"   Úappend©r   Z
attributesr   r   r   Ú_get_font_style_attributesN  s    

z Shape._get_font_style_attributesc                 C   sj   g }| s|S | d d ur*|  d| d f¡ | d d urH|  d| d f¡ | d d urf|  d| d f¡ |S )Nr	   ZtypefacerR   ZpitchFamilyrS   )rZ   r[   r   r   r   Ú_get_font_latin_attributesg  s    z Shape._get_font_latin_attributesc                 C   s®   | sddiS t  | ¡} d| v r\| d }ddddœ}||v rH|| | d< ntd| ƒ ddiS d	| v r¢| d	 }d
dddœ}||v rŽ|| | d	< ntd| ƒ ddiS d| d< | S )Nr)   FZverticalÚtopÚmiddleÚbottom)r^   r_   r`   zUnknown alignment type '%s'Z
horizontalÚleftÚcenterÚright)ra   rb   rc   T)r/   r0   r   )r   Z
align_typeZalign_typesr   r   r   r!   z  s2    
ýýzShape._get_align_properties)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ústaticmethodr&   r#   r:   r%   r$   r\   r]   r!   Ú__classcell__r   r   r   r   r      s&   -
%

P
N


r   )r/   Úwarningsr   Úobjectr   r   r   r   r   Ú<module>   s   