B .^ @sddlZddlmZmZmZddlmZmZm Z dddddd ddd d Z d d Z GdddejZ ddZddZee je e ee jddS)N)Image ImageFile ImagePalette)i8i16bei32be)1r)Lr)Pr)RGB)CMYK)ZLABr ) )rr)r)rr)r)r r)rr)r)rr) rcCs|dddkS)Nrs8BPS)prefixrr6/tmp/pip-install-mwhup7aw/Pillow/PIL/PsdImagePlugin.py_accept*src@sXeZdZdZdZdZddZeddZedd Z d d Z d d Z ddZ ddZ dS) PsdImageFileZPSDzAdobe PhotoshopFc Cs.|jj}|d}|dddks4t|dddkrr?r0r*rGrJrrrrr2sM  rc Csfg}|j}xttt|dD]}t|d}t|d}t|d}t|d}g}g} ttt|d} t| dkrq"xR| D]J}t|d} | dkrd} nd| } | | t|d} || | fqW| | dgkrd} n2| dd dgkrd } n| ddd dgkrd} nd} |d d }t|d} d }| r| | }t|d}|rr| |dt j ||d7}t|d}|r| |t j ||d7}t |d}|r||dd}||d7}| |||| ||||ffq"Wd }x^|D]V\}} }g}x,| D]$} t|| |d}|r||qW|| ||f||<|d7}qW|S)NrriAZRGBARr BGr rrrzlatin-1replace)r rangeabsr!r&listr+r,sortr*r0ioSEEK_CURrdecoder1extend)filer.r iZy0Zx0y1x1r-r%typestypemr2r<ZcombinedZdata_endlengthrCr3trrrr/st                    r/cCsNd}|j}t|d}|d|d}|d|d}|} |dkrg}xt|D]:} || } |dkrp| d7} |d|| | f| ||} qTWn|dkr.d} g}|||d} |} xnt|D]b} || } |dkr| d7} |d|| | fx2t|D]&}| t| | | d} | d7} qWqW|| | d@rJ|d|S) Nrrr rrz;Ir(Zpackbits)r r!r*rXr,r0)r`r%rCr8r3r compressionZxsizeZysizeoffsetZchannelrBraZ bytecountyrrrr1s>    r1z.psd)r\rUrrr_binaryrrr!rr&r#rrr/r1Z register_openrNZregister_extensionrrrrs$T3