
    RfG                        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           dS )    )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                2    | d d         t           j        k    S )N   )olefileMAGIC)prefixs    D/var/www/html/env/lib/python3.11/site-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                  | _        n$# t          $ r}d}t          |          |d }~ww xY w| 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   	OleFileIOfpoleOSErrorSyntaxErrorrootclsid_open_index)selfemsgs      r   _openzFpxImageFile._open8   s    
	*(11DHH 	* 	* 	*5Cc"")	* 8="HHH3Cc"""s   ! 
A=Ar   c                z  	 | j                             d|ddg          }|d         |d         f| _        t          | j                  }d}|dk    r|dz  }|dz  }|dk    |dz
  | _        | j        d	z  }|d
|z           	t          	d          }|dk    rd}t          |          t          	fdt          |          D                       }t          |         \  | _        | _        i | _        t          d          D ]}d|d	z  z  }||v r||         | j        |<   |                     d| j                   d S )NData Object Store 06dzImage Contentsi  i  r   @         i     zInvalid number of bandsc              3  J   K   | ]}t          d |dz  z             dz  V  dS )r   r,   iN)i32).0iss     r   	<genexpr>z+FpxImageFile._open_index.<locals>.<genexpr>l   s:      LL!s1a!a%i((:5LLLLLLr      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   sm    x%%-%---/CD
 
 )_d9o5
49~~Rii!8DFA Rii U
 Z2R Aq		199+C#,, LLLLuU||LLLLL#(= 
DL 	s 	( 	(Aa2g&BTzz#Bx	!Atz*****r   r   c           
        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|z              |                    t          |d          |	z            }dx}}|\  }}|\  }}g | _        t          dt          |          |	          D ]j}t          |||z             }t          |||z             }t          ||d	z             }|dk    r:| j                            d||||ft          ||          dz   | j        ff           n|dk    rC| j                            d||||ft          ||          dz   | j        |dd
         ff           n|dk    rt|d         }|d         }| j        }|r|dk    rd\  }}nd }n|}| j                            d||||ft          ||          dz   ||ff           |r| j        |         | _        nd}
t          |
          ||z   }||k    rd||z   }}||k    r nl|| _        | j        | _        d | _        d S )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   sD   
 -,,,((((("
 X  (( 	 GGBKK1ayy#a))#q"::s1bzz)QQ49%C#,, 	VGGC2JJ'((	Auu	q#a&&&)) E	 E	AUAI&&BUAI&&BaQ--Ka	  Ar2Aq		B	    !!	  Ar2Aq		BqBx0	    !!,-bE)e,, '&(( -=)''#'  'H	  Ar2Aq		B (+	    >'+y'=D$ 4cll"E	AEzz!e)1::E7r   c                    | j         s0| j                            | j        d d         dgz             | _         t          j                            |           S )Nr*   zSubimage 0000 Data)r   r   rR   rZ   r   load)r"   s    r   rm   zFpxImageFile.load   sN    w 	Th))$+bqb/=Q<R*RSSDG"''---r   c                z    | j                                          t                                                       d S N)r   closesuper)r"   	__class__s    r   rp   zFpxImageFile.close   s*    r   c                z    | j                                          t                                                       d S ro   )r   rp   rq   __exit__)r"   argsrr   s     r   rt   zFpxImageFile.__exit__   s1    r   )r   )r   r   )__name__
__module____qualname__formatformat_descriptionr%   r!   r?   rm   rp   rt   __classcell__)rr   s   @r   r   r   4   s        F#  ".+ .+ .+ .+`o o o 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 B B B B9& B B BR  L'w ? ? ?  ,f 5 5 5 5 5r   