
    &Th1                         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)    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                 .    | d d t         j                  k(  S )N   )olefileMAGIC)prefixs    Z/home/stella.sw7ft.com/public_html/venv/lib/python3.12/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                        | _        | 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._open6   sx    
	*((1DH
 88=="HH3Cc""  	*5Cc")	*s   $A( (	B1A??Bc           	         | 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     }g }t        |d      }|dkD  rd}	t        |	      t        |      D ]&  }|j                  t        |d|dz  z         dz         ( t        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 bandsr   i   i  )r   getproperties_sizemaxsizemaxidi32r   rangeappendMODEStuplemoderawmodejpeg_open_subimage)
r!   indexpropr0   iidscolorsbandsr#   s
             r   r    zFpxImageFile._open_indexG   si    xx%%!%-/CD
 )_d9o5
499~Ri!8DFA Ri U
 ZZ2R Aq	19+C#,u 	:AMM#aQU+j89	: #(f"6	4< 	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 || _        d | _        y )Nr&   r'   zResolution 04dzSubimage 0000 Header   $   r+   r   r*          zsubimage mismatch   r   rawr   fillr)         r	   )YCbCrKCMYKr9   zunknown/invalid compression)r   
openstreamreadr2   r0   r   seektiler3   lenminr4   r8   r9   tile_prefixstreamr   )r!   r;   subimagerV   r   r?   r0   tilesizeoffsetlengthr#   xyxsizeysizextileytiler=   x1y1compressioninternal_color_conversionjpeg_tablesr8   jpegmodes                            r   r:   zFpxImageFile._open_subimagex   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 r   c                     | j                   s1| j                  j                  | j                  d d dgz         | _         t        j                  j                  |       S )Nr)   zSubimage 0000 Data)r   r   rO   rV   r   load)r!   s    r   rh   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   rk   zFpxImageFile.close   s    r   c                 V    | j                   j                          t        |           y rj   )r   rk   rl   __exit__)r!   argsrm   s     r   ro   zFpxImageFile.__exit__   s    r   )r   )r   r   )__name__
__module____qualname__formatformat_descriptionr$   r    r:   rh   rk   ro   __classcell__)rm   s   @r   r   r   2   s4    F#"/+bn`. r   r   z.fpx)r    r   r   _binaryr   r2   r5   r   r   register_openrt   register_extension r   r   <module>r|      s|   "   !
 ,*:6H*86F	&'B9&& BR   L''w ?   ,,f 5r   