
    e              
      `   d dl mZ d dlZddlmZmZmZ ddlmZ ddlm	Z
 ddlmZ ddlmZ d	d
d
dddd
d
dd	Zd Z G d dej
                        Zd Zd Z ej(                  ej*                  ee        ej,                  ej*                  d        ej.                  ej*                  d       y)    )annotationsN   )Image	ImageFileImagePalette)i8)i16be)i32be)si16be)1r   )Lr   )Pr   )RGB   )CMYK   )LABr   )	)r   r   )r      )r   r   )   r   )r   r   )r   r   )   r   )r   r   )	   r   c                    | d d dk(  S )Nr   s   8BPS )prefixs    4/usr/lib/python3/dist-packages/PIL/PsdImagePlugin.py_acceptr   .   s    "1:      c                  *    e Zd ZdZdZdZd Zd Zd Zy)PsdImageFilePSDzAdobe PhotoshopFc                h   | j                   j                  } |d      }t        |      rt        |d      dk7  rd}t	        |      t        |d      }t        |d      }t        |d      }t
        ||f   \  }}||kD  rd}t        |      |d	k(  r	|dk(  rd
}d}|| _        t        |d      t        |d      f| _	        t         |d            }	|	r- ||	      }
|dk(  r |	dk(  rt        j                  d|
      | _        g | _        t         |d            }	|	r| j                   j                         |	z   }| j                   j                         |k  r |d       t         |d            } |t         |d                  }t!        |      dz  s |d        |t         |d                  }
t!        |
      dz  r |d       | j                  j#                  |||
f       |dk(  r|
| j$                  d<   | j                   j                         |k  rg | _        t         |d            }	|	r| j                   j                         |	z   }t         |d            }	|	rDt)        j*                  t-        j.                  | j                   |	            }t1        ||	      | _        | j                   j3                  |       t!        | j&                        | _        | j4                  dkD  | _        t9        | j                   |d| j:                  z   |      | _        | j                   | _        d| _         d| _!        y )N   r   r   znot a PSD file         znot enough channelsr   RGBA      r   i   zRGB;Lr   i  icc_profile)r   r   )"fpreadr   i16SyntaxErrorMODESOSError_modei32_sizer   rawpalette	resourcestellr   lenappendinfolayersioBytesIOr   
_safe_read
_layerinfoseekn_framesis_animated	_maketilesizetile_fpframe
_min_frame)selfr+   smsgpsd_bitspsd_channelspsd_modemodechannelsrC   dataendidname_layer_datas                  r   _openzPsdImageFile._open;   s   ww||
 HqzSAY!^"Cc""q":1bzq":(34hl"'C#,5=\Q.DH
BZQ+

 47|:Ds{ts{+//>
 47|'',,.4'C'',,.3&Qa\BtAwK(D	AGCQL)t9q=G%%r4&67:/3DIIm, '',,.3&  47|'',,.4'CtAw<D jj)=)=dggt)LM(d;GGLLDKK(==1,
 dggtVdii-?J	 77
r   c                    | j                  |      sy 	 | j                  |dz
     \  }}}}|| _        || _        || _        | j
                  | _        ||fS # t        $ r}d}t        |      |d }~ww xY w)Nr   zno such layer)	_seek_checkr:   r0   rD   rF   rE   r*   
IndexErrorEOFError)rH   layerrS   rN   bboxrD   erJ   s           r   r?   zPsdImageFile.seek   s~    &		'%)[[%;"D$dDJDIDJhhDG: 	'!C3-Q&	's   A A 	A1A,,A1c                    | j                   S N)rF   )rH   s    r   r6   zPsdImageFile.tell   s    zzr   N)	__name__
__module____qualname__formatformat_description!_close_exclusive_fp_after_loadingrU   r?   r6   r   r   r   r   r   6   s$    F*(-%Rh' r   r   c           	         g } fd}t         |d            }|t        |      dz  k  rd}t        |      t        t        |            D ]7  }t	         |d            }t	         |d            }t	         |d            }	t	         |d            }
g }t         |d            }t        t        |            }t        |      dkD  ra j                  t        |      dz  dz   t        j                         t	         |d            } j                  |t        j                         |D ]9  }t         |d            }|dk(  rd	}nd
|   }|j                  |        |d       ; |j                          |dgk(  rd}n|g dk(  rd}n|g dk(  rd
}nd } |d       d}t	         |d            }|r j                         |z   }t	         |d            }|r# j                  |dz
  t        j                         t	         |d            }|r  j                  |t        j                         t         |d            }|r ||      j                  dd      } j                  |       |j                  |||||
|	ff       : t!        |      D ]=  \  }\  }}}g }|D ]$  }t#         ||d      }|s|j%                  |       & ||||f||<   ? |S )Nc                0    t        j                  |       S r^   )r   r=   )rC   r*   s    r   r+   z_layerinfo.<locals>.read   s    ##B--r   r      z4Layer block too short for number of layers requestedr      r$   i  Ar&   Rr   )BGrj   r   )ri   rk   rl   rj       r   zlatin-1replace)si16absr-   ranger1   r,   listr7   r?   r;   SEEK_CURr8   sortr6   r   decode	enumeraterB   extend)r*   ct_bytesr:   r+   ctrJ   _y0x0y1x1rN   ct_typestypesrC   typemrS   data_endlengthir[   rD   ts   `                       r   r>   r>      s   F. 
d1gB 3r7R< D#3r7^ =6a\a\a\a\ tAw<U8_%u:>GGCJNR'5tAw<DGGD"++& 		AtAw<Du}4LKKNG		 			C5=D_$D))DD 	R47|wwy4'Ha\FR[[1a\F,Q[F F|**9i@GGHtTBB#345{=6@ "+6!2 +D$ 	A"aq)AA	 $d*q	+ Mr   c                R   d }| j                   }t         |d            }|d   |d   z
  }|d   |d   z
  }| j                         }	|dk(  r?g }t        |      D ].  }
||
   }|dk(  r|dz  }|j	                  d||	|f       |	||z  z   }	0 n|dk(  rzd}g } |||z  dz        }| j                         }	t        |      D ]J  }
||
   }|dk(  r|dz  }|j	                  d||	|f       t        |      D ]  }|	t        ||      z   }	|dz  } L | j                  |	       |	dz  r |d       |S )	Nr   r   r   r   r   z;Ir3   packbits)r+   r,   r6   rr   r8   r?   )filerN   r[   rO   rD   r+   compressionxsizeysizeoffsetchannelrZ   r   	bytecountys                  r   rB   rB      sn   D99Dd1g,KGd1gEGd1gEYY[Fa X 	,GMEv~KKfe45eem+F	, 
	 E)A-.	X 	GMEv~KKT659:5\ #i"33Q	 	IIfzQKr   z.psdzimage/vnd.adobe.photoshop)
__future__r   r;   rm   r   r   r   _binaryr   r	   r,   r
   r1   r   rp   r.   r   r   r>   rB   register_openrb   register_extensionregister_mimer   r   r   <module>r      s   $ # 	 , ,  ! ! # 	$!k9&& k\Vr+d   L''w ?   ,,f 5   L'')D Er   