a
    ¥Q•h2  ã                   @   st   d dl Z ddlmZmZ ddlmZ ddddd	d
ddœZdd„ ZG dd„ dejƒZ	e 
e	je	e¡ e e	jd¡ dS )é    Né   )ÚImageÚ	ImageFile)Úi32le)ÚAÚL)r   r   )ÚRGBAÚLA)ÚRGBzYCC;P)r   zYCCA;P)r
   r
   )r   r   ))iþ  )i   )i € iþ )i   i  i  )i € i€ i€ iþ )i   i  i  )i € i€ i€ iþ c                 C   s   | d d… t jkS )Né   )ÚolefileÚMAGIC)Úprefix© r   úK/var/www/sistema_ama/venv/lib/python3.9/site-packages/PIL/FpxImagePlugin.pyÚ_accept*   s    r   c                       sT   e Zd ZdZdZdd„ Zddd„Zdd	d
„Zdd„ Z‡ fdd„Z	‡ fdd„Z
‡  ZS )ÚFpxImageFileZFPXZFlashPixc              
   C   sn   zt  | j¡| _W n2 tyD } zd}t|ƒ|‚W Y d }~n
d }~0 0 | jjjdkr`d}t|ƒ‚|  d¡ d S )Nz!not an FPX file; invalid OLE filez$56616700-C154-11CE-8553-00AA00A1F95Bznot an FPX file; bad root CLSIDr   )	r   Z	OleFileIOÚfpÚoleÚOSErrorÚSyntaxErrorÚrootZclsidÚ_open_index)ÚselfÚeÚmsgr   r   r   Ú_open6   s     zFpxImageFile._openr   c           
      C   s  | j  d|d›�dg¡}|d |d f| _t| jƒ}d}|dkrR|d }|d7 }q8|d | _| jd	> }|d
|B  }g }t|dƒ}|dkr”d}	t|	ƒ‚t|ƒD ] }| 	t|d|d  ƒd@ ¡ qœt
t|ƒ \| _| _i | _tdƒD ]&}d|d	> B }||v rà|| | j|< qà|  d| j¡ d S )NúData Object Store Ú06dzImage Contentsi  i  r   é@   é   é   i  é   zInvalid number of bandsr   iÿÿÿé   i  )r   ZgetpropertiesÚ_sizeÚmaxÚsizeZmaxidÚi32r   ÚrangeÚappendÚMODESÚtupleÚ_modeÚrawmodeÚjpegÚ_open_subimage)
r   ÚindexÚpropr&   ÚiÚidÚsÚcolorsÚbandsr   r   r   r   r   G   s4    ÿ




zFpxImageFile._open_indexr   c              
   C   sN  d|d›�d|d›�dg}| j  |¡}| d¡ | d¡}t|dƒt|d	ƒf}t|d
ƒt|dƒf}t|dƒ}t|dƒ}	|| jkrŒd}
t|
ƒ‚| d| ¡ | t|dƒ|	 ¡}d }}|\}}|\}}g | _tdt	|ƒ|	ƒD �]^}t
||| ƒ}t
||| ƒ}t||d	 ƒ}|dk�rB| j d||||ft||ƒd | jff¡ nÎ|dk�r‚| j d||||ft||ƒd | j|dd
… ff¡ nŽ|dk�r|d }|d }| j}|�rÂ|dk�r¼d\}}nd }n|}| j d||||ft||ƒd ||ff¡ |�r| j| | _nd}
t|
ƒ‚|| }||krÜd||  }}||krÜ �q>qÜ|| _d | _d S )Nr   r   zResolution Ú04dzSubimage 0000 Headeré   é$   r"   r   r!   é   é    zsubimage mismatché   r   Úrawr   Úfillr    é   é   r   )ZYCbCrKÚCMYKr.   zunknown/invalid compression)r   Ú
openstreamÚreadr'   r&   r   ÚseekÚtiler(   ÚlenÚminr)   r-   r.   Útile_prefixÚstreamr   )r   r0   ZsubimagerI   r   r4   r&   ZtilesizeÚoffsetÚlengthr   ÚxÚyÚxsizeÚysizeZxtileZytiler2   Úx1Úy1ÚcompressionZinternal_color_conversionZjpeg_tablesr-   Zjpegmoder   r   r   r/   x   s†    

ý






üÿ	

üÿ	



üÿzFpxImageFile._open_subimagec                 C   s0   | j s$| j | jd d… dg ¡| _ tj | ¡S )Nr    zSubimage 0000 Data)r   r   rB   rI   r   Úload©r   r   r   r   rS   è   s    zFpxImageFile.loadc                    s   | j  ¡  tƒ  ¡  d S ©N)r   ÚcloseÚsuperrT   ©Ú	__class__r   r   rV   î   s    
zFpxImageFile.closec                    s   | j  ¡  tƒ  ¡  d S rU   )r   rV   rW   Ú__exit__)r   ÚargsrX   r   r   rZ   ò   s    
zFpxImageFile.__exit__)r   )r   r   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr   r   r/   rS   rV   rZ   Ú__classcell__r   r   rX   r   r   2   s   
1
pr   z.fpx)r   Ú r   r   Ú_binaryr   r'   r*   r   r   Úregister_openr_   Úregister_extensionr   r   r   r   Ú<module>   s   õ J