
    ZMh}                        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           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 prefixbytesreturnboolc                @    |                      t          j                  S N)
startswitholefileMAGIC)r   s    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/PIL/FpxImagePlugin.py_acceptr   ,   s    W]+++    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FlashPixr   Nonec                   	 t          j        | j                  | _        n$# t          $ r}d}t          |          |d }~ww xY w| j        j        }|r|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msgr$   s       r   _openzFpxImageFile._open8   s    
	*(11DHH 	* 	* 	*5Cc"")	* x} 	#tz%KKK3Cc"""s   ! 
A=Ar   indexintc                  	 | j                             d|ddg          }t          |d         t                    sJ t          |d         t                    sJ |d         |d         f| _        t          | j                  }d}|dk    r|dz  }|dz  }|dk    |dz
  | _        | j        d	z  }|d
|z           	t          	t                    rt          	d          x}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 )   r3   iN)i32).0iss     r   	<genexpr>z+FpxImageFile._open_index.<locals>.<genexpr>n   s:      LL!s1a!a%i((:5LLLLLLr      i  )r!   getproperties
isinstancer,   _sizemaxsizemaxidr   r6   r"   tuplerangeMODES_moderawmodejpeg_open_subimage)
r'   r+   propr@   r8   idbandsr)   colorsr9   s
            @r   r&   zFpxImageFile._open_indexJ   s    x%%-%---/CD
 
 $y/3/////$y/3/////)_d9o5
49~~Rii19DFA Rii U
 Z2R !U## 	Q(:a'?'?+C#,, LLLLuU||LLLLL#(= 
DL 	s 	( 	(Aa2g&BTzz#Bx	!Atz*****r   r   subimagec                   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 ]}t          |||z             }t          |||z             }t          ||d	z             }|dk    rJ| j                            t          j        d||||ft          ||          dz   | j                             n|dk    rT| 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                            t          j        d||||ft          ||          dz   ||f                     |r| j        |         | _        nd}
t          |
          ||z   }||k    rd||z   }}||k    r n|| _        | j        | _        d | _        d S )Nr.   r/   zResolution 04dzSubimage 0000 Header   $   r3   r5   r2          zsubimage mismatch   r   rawr   fillr1         r
   )YCbCrKCMYKrG   zunknown/invalid compression)r!   
openstreamreadr6   r@   r"   seektilerC   lenminappendr   _TilerF   rG   tile_prefixstreamr    _fp)r'   r+   rM   rd   r    r9   r@   tilesizeoffsetlengthr)   xyxsizeysizextileytiler8   x1y1compressioninternal_color_conversionjpeg_tablesrF   jpegmodes                            r   rH   zFpxImageFile._open_subimage{   s`   
 -,,,((((("
 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	  OAr2Aq		B	     !!	  OAr2Aq		BqBx0	     !!,-bE)e,, '&(( -=)''#'  'H	  OAr2Aq		B (+	     >'+y'=D$ 4cll"E	AEzz!e)1::E7r   Image.core.PixelAccess | Nonec                    | j         s0| j                            | j        d d         dgz             | _         t          j                            |           S )Nr1   zSubimage 0000 Data)r    r!   r[   rd   r   load)r'   s    r   rw   zFpxImageFile.load   sN    w 	Th))$+bqb/=Q<R*RSSDG"''---r   c                z    | j                                          t                                                       d S r   )r!   closesuper)r'   	__class__s    r   ry   zFpxImageFile.close   s*    r   argsobjectc                z    | j                                          t                                                       d S r   )r!   ry   rz   __exit__)r'   r|   r{   s     r   r   zFpxImageFile.__exit__   s1    r   )r   r   )r   )r+   r,   r   r   )r   r   )r+   r,   rM   r,   r   r   )r   ru   )r|   r}   r   r   )__name__
__module____qualname__formatformat_descriptionr*   r&   rH   rw   ry   r   __classcell__)r{   s   @r   r   r   4   s        F#   $/+ /+ /+ /+ /+bo o o o ob. . . .              r   r   z.fpx)r   r   r   r   )
__future__r   r    r   r   _binaryr   r6   rD   r   r   register_openr   register_extension r   r   <module>r      s   " # " " " " "          ! ! ! ! ! !
 ,*:6H*86F	 	&, , , ,D D D D D9& D D DV  L'w ? ? ?  ,f 5 5 5 5 5r   