o
    ]oiL                     @   s"   d dl mZ G dd dejZdS )   )	xmlwriterc                       sr  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__ V/var/www/html/kuke-dev/django-kuke/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_tagZ
_xml_close)r   data_idZvml_shape_idZcomments_dataZbuttons_dataZ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_points[   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:Zvmlzoffice:officezoffice:excelzxmlns:vzxmlns:ozxmlns:xr   )_xml_start_tag)r   ZschemaZxmlnsZxmlns_oZxmlns_x
attributesr
   r
   r   r   m   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   r'   r
   r
   r   r   |   s   
zVml._write_shapelayoutc                 C   s   dd|fg}|  d| d S )Nr(   datazo:idmap_xml_empty_tagr,   r
   r
   r   r+      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 )NZ_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_idr4   sptr6   r'   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 )
NZ_x0000_t201r0      r2   r3   r4   r5   r6   r7   )r&   r:   _write_button_path_write_shapetype_lockr   r<   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 )NZ
_x0000_t75r0   K   r8   zm@4@5l@4@11@9@11@9@5xefr3   r4   r5   zo:preferrelativer6   filledstrokedr7   )r&   r:   _write_formulas_write_image_path_write_aspect_ratio_lockr   )	r   r=   r4   r>   Zo_preferrelativer6   rD   rE   r'   r
   r
   r   r      s*   
zVml._write_image_shapetypec                 C      d}d|fg}|  d| d S )NZmiter	joinstylezv:stroker.   )r   rJ   r'   r
   r
   r   r:         
zVml._write_strokec                 C   s0   g }|r	| d | d|f | d| d S )N)gradientshapeokr8   o:connecttypev:path)appendr/   )r   rL   connecttyper'   r
   r
   r   r;      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 )	NrC   r9   shadowoko:extrusionokstrokeokfillokrM   rN   r.   )r   rQ   extrusionokrS   rT   rP   r'   r
   r
   r   r@      s   zVml._write_button_pathc                 C   s2   d}d}d}d|fd|fd|fg}|  d| d S )NrC   r8   r9   rR   rL   rM   rN   r.   )r   rU   rL   rP   r'   r
   r
   r   rG        zVml._write_image_pathc                 C   (   d}d}d|fd|fg}|  d| d S )Nr*   r8   r)   	shapetypeo:lockr.   )r   extrX   r'   r
   r
   r   rA        zVml._write_shapetype_lockc                 C   rW   )Nr*   r8   r)   rotationrY   r.   )r   rZ   r\   r'   r
   r
   r   _write_rotation_lock&  r[   zVml._write_rotation_lockc                 C   rW   )Nr*   r8   r)   aspectratiorY   r.   )r   rZ   r^   r'   r
   r
   r   rH   2  r[   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autoZhidden_x0000_s    r         	   visibleznposition:absolute;margin-left:%.15gpt;margin-top:%.15gpt;width:%.15gpt;height:%.15gpt;z-index:%d;visibility:%sr3   typestyle	fillcoloro:insetmodev:shapenone)	strr%   r&   _write_comment_fill_write_shadowr;   _write_comment_textbox_write_comment_client_datar   )r   r=   r   r   
shape_typeZ	insetmodeZ
visibilityrowcolre   rh   r    r!   r"   r#   r$   rg   r'   r
   r
   r   r   >  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_t201r`   r    zuposition:absolute;margin-left:%.15gpt;margin-top:%.15gpt;width:%.15gpt;height:%.15gpt;z-index:%d;mso-wrap-style:tightr3   rf   descriptionZaltrg   )zo:buttonr8   )rh   buttonFace [67])ZstrokecolorzwindowText [64])ri   r_   rj   font)
rl   r%   getrO   r&   _write_button_fillr]   _write_button_textbox_write_button_client_datar   )r   r=   r   r   rq   r    r!   r"   r#   r$   rg   r'   r
   r
   r   r   y  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_t75r`   ra   r         rb   rc      g      R@r   g      X@H   g      ?zTposition:absolute;margin-left:0;margin-top:0;width:%.15gpt;height:%.15gpt;z-index:%dr3   zo:spidrf   rg   rj   )rl   intr&   _write_imagedatar]   r   )r   r=   r   Z
image_datarq   r#   r$   namepositionZx_dpiZy_dpiref_idrg   r'   r
   r
   r   r     s4   
zVml._write_image_shapec                 C   rI   )Nz#ffffe1color2v:fillr.   )r   color_2r'   r
   r
   r   rm     rK   zVml._write_comment_fillc                 C   rW   )Nru   r8   r   zo:detectmouseclickr   r.   )r   r   Zdetectmouseclickr'   r
   r
   r   rx     r[   zVml._write_button_fillc                 C   s2   d}d}d}d|fd|fd|fg}|  d| d S )Nr8   blackoncolorobscuredzv:shadowr.   )r   r   r   r   r'   r
   r
   r   rn     rV   zVml._write_shadowc                 C   s2   d}d|fg}|  d| | d | d d S )Nmso-direction-alt:autorg   	v:textboxr!   r&   
_write_divr   )r   rg   r'   r
   r
   r   ro     s
   

zVml._write_comment_textboxc                 C   s6   d}d|fdg}|  d| | d| | d d S )Nr   rg   )zo:singleclickrC   r   centerr   )r   rv   rg   r'   r
   r
   r   ry     s
   zVml._write_button_textboxc                 C   s:   d| }d|fg}|  d| |r| | | d d S )Nztext-align:rg   div)r&   _write_fontr   )r   alignrv   rg   r'   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captionZCalibri   z#000000facesizer   rv   _xml_data_element)r   rv   r   r   r   r   r'   r
   r
   r   r   ,  s   zVml._write_fontc                 C   sj   d}d|fg}|  d| |   |   | | |   | | | | |r.|   | d d S )NZ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   rr   rs   re   r    object_typer'   r
   r
   r   rp   ;  s   



zVml._write_comment_client_datac                 C   sl   |d }|d }d}d|fg}|  d| | | |   |   | | |   |   | d d S )Nmacror    ZButtonr   r   )r&   r   _write_print_objectr   _write_fmla_macro_write_text_halign_write_text_valignr   )r   r   r   r    r   r'   r
   r
   r   rz   [  s   


zVml._write_button_client_datac                 C      |  d d S )Nzx:MoveWithCellsr.   r   r
   r
   r   r   z     zVml._write_move_with_cellsc                 C   r   )Nzx:SizeWithCellsr.   r   r
   r
   r   r   ~  r   zVml._write_size_with_cellsc                 C   r   )Nz	x:Visibler.   r   r
   r
   r   r     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
   )rl   ).0ir
   r
   r   
<listcomp>  s    z%Vml._write_anchor.<locals>.<listcomp>z, zx:Anchor)joinr   )r   r    Z	col_startZ	row_startx1y1Zcol_endZrow_endZx2y2stringsr-   r
   r
   r   r     s
   
zVml._write_anchorc                 C   s   d}|  d| d S )NFalsez
x:AutoFillr   r   r-   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:relidZrIdzo:titlezv:imagedata)rl   r/   )r   r   Zo_titler'   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   rF     s   












zVml._write_formulasc                 C   s   d|fg}|  d| d S )Neqnzv:fr.   )r   r   r'   r
   r
   r   r     s   
zVml._write_formula)NNN)N)/__name__
__module____qualname____doc__r   r   r%   r   r   r+   r   r   r   r:   r;   r@   rG   rA   r]   rH   r   r   r   rm   rx   rn   ro   ry   r   r   rp   rz   r   r   r   r   r   r   r   r   r   r   r   r   rF   r   __classcell__r
   r
   r   r   r      s^    
4	$;62
 	r   N) r   Z	XMLwriterr   r
   r
   r
   r   <module>   s   	