
    Bwgx                        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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    I/var/www/horilla/myenv/lib/python3.12/site-packages/PIL/FpxImagePlugin.py_acceptr   ,   s    "1:&&    c                  X     e Zd ZdZdZd	dZd
ddZdddZddZd	 fdZ	d fdZ
 xZS )FpxImageFileFPXFlashPixc                   	 t        j                  | j                        | _        | j                  j                  }|r|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msgr   s       r   _openzFpxImageFile._open8   s}    
	*((1DH
 xx}}tzz%KK3Cc""  	*5Cc")	*s   $A, ,	B5BBc                  	 | j                   j                  d|ddg      }t        |d   t              sJ t        |d   t              sJ |d   |d   f| _        t        | j                        }d}|dkD  r|dz  }|dz  }|dkD  r|dz
  | _        | j                  d	z  }|d
|z     	t        	t              rt        	d      x}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>n   s%     L!s1a!a%i(:5Ls   "   i  )r   getproperties
isinstanceint_sizemaxsizemaxidbytesr.   r   tuplerangeMODES_moderawmodejpeg_open_subimage)
r"   indexpropr9   r0   idbandsr$   colorsr1   s
            @r   r!   zFpxImageFile._open_indexJ   ss    xx%%!%-/CD
 $y/3///$y/3///)_d9o5
499~Ri19DFA Ri U
 ZZ2R !U#Q(:a'?+C#, LuU|LL#(= 
DL 	s 	(Aa2g&BTz#Bx		!	(
 	Atzz*r   c                p   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 ]  }t        |||z         }t        |||z         }t        ||d	z         }|dk(  rM| j                  j                  t        j                  d||||ft        ||      dz   | j                               n|dk(  rR| j                  j                  t        j                  d||||ft        ||      dz   | j                  |dd
 f             n|dk(  r|d   }|d   }| j                  }|r|dk(  rd\  }}nd }n|}| j                  j                  t        j                  d||||ft        ||      dz   ||f             |r"| j                  |   | _        nd}
t        |
      ||z   }||k\  s{d||z   }}||k\  s n || _        | j$                  | _        d | _        y )Nr'   r(   zResolution 04dzSubimage 0000 Header   $   r,   r   r+          zsubimage mismatch   r   rawr   fillr*         r
   )YCbCrKCMYKrA   zunknown/invalid compression)r   
openstreamreadr.   r9   r   seektiler=   lenminappendr   _Tiler@   rA   tile_prefixstreamr   _fp)r"   rC   subimager^   r   r1   r9   tilesizeoffsetlengthr$   xyxsizeysizextileytiler0   x1y1compressioninternal_color_conversionjpeg_tablesr@   jpegmodes                            r   rB   zFpxImageFile._open_subimage{   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		  OOAr2Aq	B	 !		  OOAr2Aq	BqBx0	 !,-bE)e,,,&( -=)'#'  'H		  OO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   rU   r^   r   load)r"   s    r   rq   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   rt   zFpxImageFile.close   s    r   c                V    | j                   j                          t        |           y rs   )r   rt   ru   __exit__)r"   argsrv   s     r   rx   zFpxImageFile.__exit__   s    r   )returnNone)r   )rC   r6   rz   r{   )r   r   )rC   r6   r`   r6   rz   r{   )rz   zImage.core.PixelAccess | None)ry   objectrz   r{   )__name__
__module____qualname__formatformat_descriptionr%   r!   rB   rq   rt   rx   __classcell__)rv   s   @r   r   r   4   s4    F#$/+bob. r   r   z.fpx)r   r;   rz   bool)
__future__r   r    r   r   _binaryr   r.   r>   r   r   register_openr   register_extension r   r   <module>r      s   " #   !
 ,*:6H*86F	&'D9&& DV   L''w ?   ,,f 5r   