
    eG                        d dl mZ 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 Z
 G d dej
                        Z ej                  ej                  ee
        ej                  ej                  d       y)    )annotationsN   )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                .    | d d t         j                  k(  S )N   )olefileMAGIC)prefixs    4/usr/lib/python3/dist-packages/PIL/FpxImagePlugin.py_acceptr   ,   s    "1:&&    c                  L     e Zd ZdZdZd Zd	dZd
dZd Z fdZ	 fdZ
 xZS )FpxImageFileFPXFlashPixc                   	 t        j                  | j                        | _        | j                  j                  j                  dk7  rd}t        |      | j                  d       y # t        $ r}d}t        |      |d }~ww xY w)Nz!not an FPX file; invalid OLE filez$56616700-C154-11CE-8553-00AA00A1F95Bznot an FPX file; bad root CLSIDr   )	r   	OleFileIOfpoleOSErrorSyntaxErrorrootclsid_open_index)selfemsgs      r   _openzFpxImageFile._open8   sx    
	*((1DH
 88=="HH3Cc""  	*5Cc")	*s   $A( (	B1A??Bc                F  	 | j                   j                  d|ddg      }|d   |d   f| _        t        | j                        }d}|dkD  r|dz  }|dz  }|dkD  r|dz
  | _        | j
                  d	z  }|d
|z     	t        	d      }|dkD  rd}t        |      t        	fdt        |      D              }t        |   \  | _        | _        i | _        t        d      D ]!  }d|d	z  z  }||v s||   | j                  |<   # | j                  d| j
                         y )NData Object Store 06dzImage Contentsi  i  r   @         i     zInvalid number of bandsc              3  H   K   | ]  }t        d |dz  z         dz    yw)r   r,   iN)i32).0iss     r   	<genexpr>z+FpxImageFile._open_index.<locals>.<genexpr>l   s%     L!s1a!a%i(:5Ls   "   i  )r   getproperties_sizemaxsizemaxidr.   r   tuplerangeMODES_moderawmodejpeg_open_subimage)
r"   indexpropr7   r0   idbandsr$   colorsr1   s
            @r   r!   zFpxImageFile._open_indexI   sA    xx%%!%-/CD
 )_d9o5
499~Ri!8DFA Ri U
 ZZ2R Aq	19+C#, LuU|LL#(= 
DL 	s 	(Aa2g&BTz#Bx		!	(
 	Atzz*r   c           
        d|dd|ddg}| j                   j                  |      }|j                  d       |j                  d      }t        |d      t        |d	      f}t        |d
      t        |d      f}t        |d      }t        |d      }	|| j                  k7  rd}
t        |
      |j                  d|z          |j                  t        |d      |	z        }dx}}|\  }}|\  }}g | _        t        dt        |      |	      D ]S  }t        |||z         }t        |||z         }t        ||d	z         }|dk(  r<| j                  j                  d||||ft        ||      dz   | j                  ff       n|dk(  r@| j                  j                  d||||ft        ||      dz   | j                  |dd
 ff       n|dk(  rq|d   }|d   }| j                  }|r|dk(  rd\  }}nd }n|}| j                  j                  d||||ft        ||      dz   ||ff       |r"| j                  |   | _        nd}
t        |
      ||z   }||k\  sFd||z   }}||k\  sT n || _        | j                   | _        d | _        y )Nr'   r(   zResolution 04dzSubimage 0000 Header   $   r,   r   r+          zsubimage mismatch   r   rawr   fillr*         r
   )YCbCrKCMYKr>   zunknown/invalid compression)r   
openstreamreadr.   r7   r   seektiler:   lenminappendr=   r>   tile_prefixstreamr   _fp)r"   r@   subimagerZ   r   r1   r7   tilesizeoffsetlengthr$   xyxsizeysizextileytiler0   x1y1compressioninternal_color_conversionjpeg_tablesr=   jpegmodes                            r   r?   zFpxImageFile._open_subimagey   s   
 !s,(3("
 XX  ( 	 GGBK1ay#a)#q":s1bz)QQ499%C#, 	VGGC2J'(	Auu	q#a&&) E	AUAI&BUAI&BaQ-Ka		  Ar2Aq	B	 !		  Ar2Aq	BqBx0	 !,-bE)e,,,&( -=)'#'  'H		  Ar2Aq	B (+	 '+yy'=D$ 4cl"E	AEz!e)1:KE	N 77r   c                    | j                   s1| j                  j                  | j                  d d dgz         | _         t        j                  j                  |       S )Nr*   zSubimage 0000 Data)r   r   rR   rZ   r   load)r"   s    r   rm   zFpxImageFile.load   sI    wwhh))$++bq/=Q<R*RSDG""''--r   c                V    | j                   j                          t        |           y N)r   closesuper)r"   	__class__s    r   rp   zFpxImageFile.close   s    r   c                V    | j                   j                          t        |           y ro   )r   rp   rq   __exit__)r"   argsrr   s     r   rt   zFpxImageFile.__exit__   s    r   )r   )r   r   )__name__
__module____qualname__formatformat_descriptionr%   r!   r?   rm   rp   rt   __classcell__)rr   s   @r   r   r   4   s4    F#".+`ob. r   r   z.fpx)
__future__r   r    r   r   _binaryr   r.   r;   r   r   register_openry   register_extension r   r   <module>r      s   " #   !
 ,*:6H*86F	&'B9&& BR   L''w ?   ,,f 5r   