U
    
3gw  ã                   @  sò   d dl mZ d dlmZ ddlmZmZ ddlmZ	 ddlm
Z ddlmZ dad	d
dœdd„ZeejdƒrˆG dd„ dejƒZeeƒ ƒ dddœdd„ZG dd„ dejƒZdddd
dœdd„Ze ejee¡ e eje¡ e ejddg¡ dS ) é    )Úannotations)ÚIOé   )ÚImageÚ	ImageFile)Úi16le)Úsi16le)Úsi32leNúImageFile.StubHandler | NoneÚNone)ÚhandlerÚreturnc                 C  s   | a dS )z^
    Install application-specific WMF image handler.

    :param handler: Handler object.
    N©Ú_handler)r   © r   ú6/tmp/pip-unpacked-wheel-tbvhwjp8/PIL/WmfImagePlugin.pyÚregister_handler!   s    r   Údrawwmfc                   @  s,   e Zd Zdddœdd„Zdddœdd„Zd	S )
Ú
WmfHandlerzImageFile.StubImageFiler   )Úimr   c                 C  s   d|_ |jd | _d S )NÚRGBÚwmf_bbox)Ú_modeÚinfoÚbbox©Úselfr   r   r   r   Úopen/   s    zWmfHandler.openúImage.Imagec              	   C  sL   |j  d¡ t d|jtj |j  ¡ |j| j¡dd|jd d d d@ d¡S )Nr   r   ÚrawZBGRé   éüÿÿÿéÿÿÿÿ)	ÚfpÚseekr   Z	frombytesÚsizeÚcorer   Úreadr   r   r   r   r   Úload3   s    ùzWmfHandler.loadN)Ú__name__Ú
__module__Ú__qualname__r   r(   r   r   r   r   r   .   s   r   ÚbytesÚbool)Úprefixr   c                 C  s    | d d… dkp| d d… dkS )Né   ó   ×ÍÆš  é   ó      r   )r.   r   r   r   Ú_acceptF   s    ÿr3   c                      sB   e Zd ZdZdZddœdd„Zddœdd	„Zd‡ fdd„	Z‡  ZS )ÚWmfStubImageFileZWMFzWindows Metafiler   )r   c                 C  sä  d | _ | j d¡}|d d… dkrÀt|dƒ| _ t|dƒ}t|dƒ}t|dƒ}t|dƒ}d| jd	< || | jd	  | j  || | jd	  | j  f}||||f| jd
< |dd… dkr¾d}t|ƒ‚nü|d d… dkr°|dd… dkr°t|dƒ}t|dƒ}t|dƒ}t|dƒ}t|dƒt|dƒt|dƒt|dƒf}|| || f}d||  |d |d   }	d||  |d |d   }
||||f| jd
< |	|
kr |	| jd	< n|	|
f| jd	< nd}t|ƒ‚d | _|| _	|  
¡ }|rà| | ¡ d S )!NéP   r/   r0   é   é   é
   é   éH   Údpir   é   é   s    	 zUnsupported WMF file formatr1   r2   é(   é,   s    EMFé   é   é   é   é    é$   g     Ø£@é   r   r    r   zUnsupported file formatr   )Ú_inchr#   r'   ÚwordÚshortr   ÚSyntaxErrorÚ_longr   Ú_sizeÚ_loadr   )r   ÚsÚx0Úy0Úx1Úy1r%   ÚmsgÚframeZxdpiZydpiÚloaderr   r   r   Ú_openT   sH    




þ
$



$
zWmfStubImageFile._openr
   c                 C  s   t S )Nr   )r   r   r   r   rM   ˜   s    zWmfStubImageFile._loadNc                   sj   |d k	r`| j d k	r`|| jd< | jd \}}}}|| | jd  | j  || | jd  | j  f| _tƒ  ¡ S )Nr;   r   )rG   r   rL   Úsuperr(   )r   r;   rO   rP   rQ   rR   ©Ú	__class__r   r   r(   ›   s    
þzWmfStubImageFile.load)N)	r)   r*   r+   ÚformatÚformat_descriptionrV   rM   r(   Ú__classcell__r   r   rX   r   r4   P   s
   Dr4   r   z	IO[bytes]zstr | bytes)r   r#   Úfilenamer   c                 C  s0   t d kstt dƒsd}t|ƒ‚t  | ||¡ d S )NÚsavezWMF save handler not installed)r   ÚhasattrÚOSErrorr^   )r   r#   r]   rS   r   r   r   Ú_save¦   s    ra   z.wmfz.emf)Ú
__future__r   Útypingr   Ú r   r   Ú_binaryr   rH   r   rI   r	   rK   r   r   r_   r&   ZStubHandlerr   r3   ZStubImageFiler4   ra   Zregister_openrZ   Zregister_saveZregister_extensionsr   r   r   r   Ú<module>   s    


V