o
    ȷeL                     @   s"   d dl mZ G dd dejZdS )   )	xmlwriterc                       sp  e Zd ZdZ fddZ		dWddZdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 ZdXd3d4Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-  Z.S )YVmlz8
    A class for writing the Excel XLSX Vml file.


    c                    s   t t|   dS )z
        Constructor.

        N)superr   __init__self	__class__ E/var/www/ideatree/venv/lib/python3.10/site-packages/xlsxwriter/vml.pyr      s   zVml.__init__Nc                 C   s   d}|    | | |r%|   |D ]}|d7 }| ||| |d7 }q|r?|   |D ]}|d7 }| ||| |d7 }q-|r[|   d}	|D ]}
|d7 }| ||	|
 |	d7 }	qI| d | 	  d S )Nr   xml)
_write_xml_namespace_write_shapelayout_write_button_shapetype_write_button_shape_write_comment_shapetype_write_comment_shape_write_image_shapetype_write_image_shape_xml_end_tag
_xml_close)r   data_idvml_shape_idcomments_databuttons_dataheader_images_dataz_indexbuttoncommentindeximager
   r
   r   _assemble_xml_file'   s0   




zVml._assemble_xml_filec                 C   s@   |dd \}}}}|d9 }|d9 }|d9 }|d9 }||||fS )N            ?r
   )r   verticeslefttopwidthheightr
   r
   r   _pixels_to_pointsV   s   zVml._pixels_to_pointsc                 C   sB   d}|d }|d }|d }d|fd|fd|fg}|  d| d S )	Nzurn:schemas-microsoft-com:vmlzoffice:officezoffice:excelzxmlns:vzxmlns:ozxmlns:xr   )_xml_start_tag)r   schemaxmlnsxmlns_oxmlns_x
attributesr
   r
   r   r   h   s   zVml._write_xml_namespacec                 C   s*   dg}|  d| | | | d d S )Nv:exteditzo:shapelayout)r,   _write_idmapr   r   r   r1   r
   r
   r   r   w   s   
zVml._write_shapelayoutc                 C   s   dd|fg}|  d| d S )Nr2   datazo:idmap_xml_empty_tagr6   r
   r
   r   r5      s   zVml._write_idmapc                 C   sZ   d}d}d}d}d|fd|fd|fd|fg}|  d	| |   | d
d | d	 d S )N_x0000_t20221600,21600   m,l,21600r21600,l21600,xeid	coordsizeo:sptpathv:shapetypetrect)r,   _write_stroke_write_comment_pathr   r   shape_idr?   sptrA   r1   r
   r
   r   r      s   zVml._write_comment_shapetypec                 C   s^   d}d}d}d}d|fd|fd|fd|fg}|  d	| |   |   |   | d	 d S )
N_x0000_t201r;      r=   r>   r?   r@   rA   rB   )r,   rE   _write_button_path_write_shapetype_lockr   rG   r
   r
   r   r      s   zVml._write_button_shapetypec           	      C   s   d}d}d}d}d}d}d}d|fd|fd	|fd
|fd|fd|fd|fg}|  d| |   |   |   |   | d d S )N
_x0000_t75r;   K   rC   zm@4@5l@4@11@9@11@9@5xefr>   r?   r@   zo:preferrelativerA   filledstrokedrB   )r,   rE   _write_formulas_write_image_path_write_aspect_ratio_lockr   )	r   rH   r?   rI   o_preferrelativerA   rQ   rR   r1   r
   r
   r   r      s*   
zVml._write_image_shapetypec                 C      d}d|fg}|  d| d S )Nmiter	joinstylezv:stroker8   )r   rY   r1   r
   r
   r   rE         
zVml._write_strokec                 C   s0   g }|r	| d | d|f | d| d S )N)gradientshapeokrC   o:connecttypev:path)appendr9   )r   r[   connecttyper1   r
   r
   r   rF      s
   
zVml._write_comment_pathc                 C   sF   d}d}d}d}d}d|fd|fd|fd|fd|fg}|  d| d S )	NrP   rD   shadowoko:extrusionokstrokeokfillokr\   r]   r8   )r   r`   extrusionokrb   rc   r_   r1   r
   r
   r   rL      s   zVml._write_button_pathc                 C   s2   d}d}d}d|fd|fd|fg}|  d| d S )NrP   rC   rD   ra   r[   r\   r]   r8   )r   rd   r[   r_   r1   r
   r
   r   rT        zVml._write_image_pathc                 C   (   d}d}d|fd|fg}|  d| d S )Nr4   rC   r3   	shapetypeo:lockr8   )r   extrg   r1   r
   r
   r   rM        zVml._write_shapetype_lockc                 C   rf   )Nr4   rC   r3   rotationrh   r8   )r   ri   rk   r1   r
   r
   r   _write_rotation_lock!  rj   zVml._write_rotation_lockc                 C   rf   )Nr4   rC   r3   aspectratiorh   r8   )r   ri   rm   r1   r
   r
   r   rU   -  rj   zVml._write_aspect_ratio_lockc                 C   s   d}d}d}dt | }|d }|d }|d }	|d }
|d	 }| |\}}}}|	r-d
}d||||||f }d|fd|fd|fd|
fd|fg}| d| |   |   | d d |   | |||	| | d d S )Nz#_x0000_t202autohidden_x0000_s    r         	   visibleznposition:absolute;margin-left:%.15gpt;margin-top:%.15gpt;width:%.15gpt;height:%.15gpt;z-index:%d;visibility:%sr>   typestyle	fillcoloro:insetmodev:shapenone)	strr*   r,   _write_comment_fill_write_shadowrF   _write_comment_textbox_write_comment_client_datar   )r   rH   r   r   
shape_type	insetmode
visibilityrowcolru   rx   r%   r&   r'   r(   r)   rw   r1   r
   r
   r   r   9  s:   
zVml._write_comment_shapec                 C   s   d}dt | }|d }| |\}}}}	d||||	|f }
d|fd|fg}|dr4|d|d f |d	|
f |d
 |d |d |d | d| |   |   | |d  | | | 	d d S )Nz#_x0000_t201rp   r%   zuposition:absolute;margin-left:%.15gpt;margin-top:%.15gpt;width:%.15gpt;height:%.15gpt;z-index:%d;mso-wrap-style:tightr>   rv   descriptionaltrw   )zo:buttonrC   )rx   buttonFace [67])strokecolorzwindowText [64])ry   rn   rz   font)
r|   r*   getr^   r,   _write_button_fillrl   _write_button_textbox_write_button_client_datar   )r   rH   r   r   r   r%   r&   r'   r(   r)   rw   r1   r
   r
   r   r   s  s0   






zVml._write_button_shapec                 C   s   d}dt | }|d }|d }|d }|d }|d }	|d }
|d	 }|d
 |	 }|d
 |
 }dt|d d d  }dt|d d d  }d|||f }d|fd|fd|fd|fg}| d| | || |   | d d S )Nz#_x0000_t75rp   rq   r         rr   rs      g      R@r$   g      X@H   g      ?zTposition:absolute;margin-left:0;margin-top:0;width:%.15gpt;height:%.15gpt;z-index:%dr>   zo:spidrv   rw   rz   )r|   intr,   _write_imagedatarl   r   )r   rH   r   
image_datar   r(   r)   namepositionx_dpiy_dpiref_idrw   r1   r
   r
   r   r     s4   	zVml._write_image_shapec                 C   rW   )Nz#ffffe1color2v:fillr8   )r   color_2r1   r
   r
   r   r}     rZ   zVml._write_comment_fillc                 C   rf   )Nr   rC   r   zo:detectmouseclickr   r8   )r   r   detectmouseclickr1   r
   r
   r   r     rj   zVml._write_button_fillc                 C   s2   d}d}d}d|fd|fd|fg}|  d| d S )NrC   blackoncolorobscuredzv:shadowr8   )r   r   r   r   r1   r
   r
   r   r~     re   zVml._write_shadowc                 C   s2   d}d|fg}|  d| | d | d d S )Nmso-direction-alt:autorw   	v:textboxr&   r,   
_write_divr   )r   rw   r1   r
   r
   r   r     s
   

zVml._write_comment_textboxc                 C   s6   d}d|fdg}|  d| | d| | d d S )Nr   rw   )zo:singleclickrP   r   centerr   )r   r   rw   r1   r
   r
   r   r     s
   zVml._write_button_textboxc                 C   s:   d| }d|fg}|  d| |r| | | d d S )Nztext-align:rw   div)r,   _write_fontr   )r   alignr   rw   r1   r
   r
   r   r     s   

zVml._write_divc                 C   s<   |d }d}d}d}d|fd|fd|fg}|  d|| d S )	NcaptionCalibri   z#000000facesizer   r   _xml_data_element)r   r   r   r   r   r   r1   r
   r
   r   r   $  s   zVml._write_fontc                 C   sj   d}d|fg}|  d| |   |   | | |   | | | | |r.|   | d d S )NNote
ObjectTypex:ClientData)	r,   _write_move_with_cells_write_size_with_cells_write_anchor_write_auto_fill
_write_row_write_column_write_visibler   )r   r   r   ru   r%   object_typer1   r
   r
   r   r   3  s   



zVml._write_comment_client_datac                 C   sl   |d }|d }d}d|fg}|  d| | | |   |   | | |   |   | d d S )Nmacror%   Buttonr   r   )r,   r   _write_print_objectr   _write_fmla_macro_write_text_halign_write_text_valignr   )r   r   r   r%   r   r1   r
   r
   r   r   S  s   


zVml._write_button_client_datac                 C      |  d d S )Nzx:MoveWithCellsr8   r   r
   r
   r   r   r     zVml._write_move_with_cellsc                 C   r   )Nzx:SizeWithCellsr8   r   r
   r
   r   r   v  r   zVml._write_size_with_cellsc                 C   r   )Nz	x:Visibler8   r   r
   r
   r   r   z  r   zVml._write_visiblec                 C   sX   |d d \}}}}}}}}	||||||||	g}
dd |
D }
d |
}| d| d S )Nr"   c                 S   s   g | ]}t |qS r
   )r|   ).0ir
   r
   r   
<listcomp>  s    z%Vml._write_anchor.<locals>.<listcomp>z, zx:Anchor)joinr   )r   r%   	col_start	row_startx1y1col_endrow_endx2y2stringsr7   r
   r
   r   r   ~  s
   
zVml._write_anchorc                 C   s   d}|  d| d S )NFalsez
x:AutoFillr   r   r7   r
   r
   r   r     s   zVml._write_auto_fillc                 C      |  d| d S )Nzx:Rowr   r   r
   r
   r   r        zVml._write_rowc                 C   r   )Nzx:Columnr   r   r
   r
   r   r     r   zVml._write_columnc                 C      |  dd d S )Nzx:PrintObjectr   r   r   r
   r
   r   r     r   zVml._write_print_objectc                 C   r   )Nzx:TextHAlignCenterr   r   r
   r
   r   r     r   zVml._write_text_halignc                 C   r   )Nzx:TextVAlignr   r   r   r
   r
   r   r     r   zVml._write_text_valignc                 C   r   )Nzx:FmlaMacror   r   r
   r
   r   r     r   zVml._write_fmla_macroc                 C   s(   ddt | fd|fg}| d| d S )Nzo:relidrIdzo:titlezv:imagedata)r|   r9   )r   r   o_titler1   r
   r
   r   r     s   zVml._write_imagedatac                 C   s   |  d | d | d | d | d | d | d | d | d	 | d
 | d | d | d | d d S )Nz
v:formulaszif lineDrawn pixelLineWidth 0z
sum @0 1 0z
sum 0 0 @1zprod @2 1 2zprod @3 21600 pixelWidthzprod @3 21600 pixelHeightz
sum @0 0 1zprod @6 1 2zprod @7 21600 pixelWidthzsum @8 21600 0zprod @7 21600 pixelHeightzsum @10 21600 0)r,   _write_formular   r   r
   r
   r   rS     s   












zVml._write_formulasc                 C   s   d|fg}|  d| d S )Neqnzv:fr8   )r   r   r1   r
   r
   r   r     s   
zVml._write_formula)NNN)N)/__name__
__module____qualname____doc__r   r!   r*   r   r   r5   r   r   r   rE   rF   rL   rT   rM   rl   rU   r   r   r   r}   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   r   __classcell__r
   r
   r   r   r      s\    
/	$:51
 	r   N) r   	XMLwriterr   r
   r
   r
   r   <module>   s   	