o
    h{                     @  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ZeejdrAG dd dejZee  d$ddZG dd dejZ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handlerImageFile.StubHandler | NonereturnNonec                 C  s   | a dS )z^
    Install application-specific WMF image handler.

    :param handler: Handler object.
    N_handler)r
    r   T/var/www/html/optinet_system/venv/lib/python3.10/site-packages/PIL/WmfImagePlugin.pyregister_handler!   s   r   drawwmfc                   @  s    e Zd ZdddZddd	Zd
S )
WmfHandlerimImageFile.StubImageFiler   r   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   rawBGR   )	fpseekr   	frombytessizecorer   readr   r   r   r   r   load3   s   zWmfHandler.loadN)r   r   r   r   )r   r   r   r   )__name__
__module____qualname__r   r+   r   r   r   r   r   .   s    
r   prefixbytesboolc                 C  s
   |  dS )N)   ƚ        )
startswith)r/   r   r   r   _acceptF   s   
r5   c                      s>   e Zd ZdZdZdddZddd	Z	
dd fddZ  ZS )WmfStubImageFileWMFzWindows Metafiler   r   c                 C  s  | j d}|drft|d}|dkrd}t|||f| _t|d}t|d}t|d}t|d	}d
| jd< || | jd  | || | jd  | f}||||f| jd< |dd dkred}t|n}|dr|dd dkrt	|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< |
|f| _nd}t|d| _
|| _|  }|r||  d S d S ) N,   r2      r   zInvalid inch      
      H   dpir         s    	 zUnsupported WMF file formatr3   (   s    EMF                $   g     أ@   r"   r   zUnsupported file formatr   )r%   r*   r4   word
ValueError_inchshortr   SyntaxError_longr   _size_loadr   )r   sinchmsgx0y0x1y1r(   framexdpiydpiloaderr   r   r   _openR   sT   











$zWmfStubImageFile._openr   c                 C  s   t S Nr   )r   r   r   r   rQ      s   zWmfStubImageFile._loadNr?   "float | tuple[float, float] | NoneImage.core.PixelAccess | Nonec                   s~   |d ur:|| j d< | j d \}}}}t|ts||f}t|| |d  | jd  t|| |d  | jd  f| _t  S )Nr?   r   r   r   )r   
isinstancetupleintrL   rP   superr+   )r   r?   rU   rV   rW   rX   	__class__r   r   r+      s   


zWmfStubImageFile.load)r   r   )r   r   r^   )r?   r_   r   r`   )	r,   r-   r.   formatformat_descriptionr]   rQ   r+   __classcell__r   r   re   r   r6   N   s    

Gr6   r   r   r%   	IO[bytes]filenamestr | bytesc                 C  s0   t d u s	tt dsd}t|t | || d S )NsavezWMF save handler not installed)r   hasattrOSErrorrm   )r   r%   rk   rT   r   r   r   _save   s   rp   z.wmfz.emf)r
   r   r   r   )r/   r0   r   r1   )r   r   r%   rj   rk   rl   r   r   )
__future__r   typingr    r   r   _binaryr   rJ   r   rM   r	   rO   r   r   rn   r)   StubHandlerr   r5   StubImageFiler6   rp   register_openrg   register_saveregister_extensionsr   r   r   r   <module>   s"   




]