§
    þìNgu  ã                  ó,  — U d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZmZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ ej        dk    rddl
mZ eZded<   ndZ G d„ de¦  «        Z G d„ de¦  «        Z e¦   «         aded<   dd„Zdd„Z dS )zwIntegrate JBIG2 image decoding.

Requires third-party JBIG2 decoder in the form of an external program, like
jbig2dec.
é    )ÚannotationsN)ÚABCÚabstractmethod)ÚPath)ÚDEVNULLÚPIPEÚCalledProcessErrorÚrun)ÚTemporaryDirectory)ÚInvalidVersionÚVersion)ÚImage)ÚDependencyErrorÚwin32)ÚCREATE_NO_WINDOWÚintÚCREATION_FLAGSc                  óJ   — e Zd ZdZedd„¦   «         Zedd„¦   «         Zdd
„ZdS )ÚJBIG2DecoderInterfacezFpikepdf's C++ expects this Python interface to be available for JBIG2.ÚreturnÚNonec                ó   — dS )z=Check if decoder is available. Throws DependencyError if not.N© ©Úselfs    úI/var/www/html/ai-engine/env/lib/python3.11/site-packages/pikepdf/jbig2.pyÚcheck_availablez%JBIG2DecoderInterface.check_available#   ó   € € € ó    Újbig2ÚbytesÚjbig2_globalsc                ó   — dS )z=Decode JBIG2 from jbig2 and globals, returning decoded bytes.Nr   )r   r    r"   s      r   Údecode_jbig2z"JBIG2DecoderInterface.decode_jbig2'   r   r   Úboolc                óR   — 	 |                       ¦   «          dS # t          $ r Y dS w xY w)z$Return True if decoder is available.TF)r   r   r   s    r   Ú	availablezJBIG2DecoderInterface.available+   sD   € ð	Ø× Ò Ñ"Ô"Ð"ð 4øõ ð 	ð 	ð 	Ø55ð	øøøs   ‚ ˜
&¥&N©r   r   ©r    r!   r"   r!   r   r!   )r   r%   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r$   r'   r   r   r   r   r       st   € € € € € ØPÐPàðLð Lð Lñ „^ðLð ðLð Lð Lñ „^ðLðð ð ð ð ð r   r   c                  ó8   — e Zd ZdZeedœd„Zdd„Zdd
„Zdd„Z	dS )ÚJBIG2DecoderzJBIG2 decoder implementation.)Úsubprocess_runÚcreationflagsc               ó"   — || _         || _        dS )zInitialize the decoder.N)Ú_runÚ_creationflags)r   r0   r1   s      r   Ú__init__zJBIG2Decoder.__init__8   s   € à"ˆŒ	Ø+ˆÔÐÐr   r   r   c                óz   — |                       ¦   «         }|"|t          d¦  «        k     rt          d¦  «        ‚dS dS )z*Check if jbig2dec is installed and usable.Nz0.15z-jbig2dec is too old (older than version 0.15))Ú_versionr   r   )r   Úversions     r   r   zJBIG2Decoder.check_available=   sB   € à—-’-‘/”/ˆØÐ 7­W°V©_¬_Ò#<Ð#<Ý!Ð"QÑRÔRÐRð ÐÐ#<Ð#<r   r    r!   r"   c           	     óð  — t          dd¬¦  «        5 }t          |¦  «        dz  }t          |¦  «        dz  }t          |¦  «        dz  }ddd	d
dt          j        |¦  «        g}|                     |¦  «         t          |¦  «        dk    r<|                     |¦  «         |                     t          j        |¦  «        ¦  «         |                     t          j        |¦  «        ¦  «         |                      |t          d| j	        ¬¦  «         t          j        |¦  «        5 }|                     ¦   «         cddd¦  «         cddd¦  «         S # 1 swxY w Y   	 ddd¦  «         dS # 1 swxY w Y   dS )z6Decode JBIG2 from binary data, returning decode bytes.zpikepdf-z.jbig2)ÚprefixÚsuffixÚimageÚglobalÚoutfileÚjbig2decz
--embeddedz--formatÚpngz--outputr   T)ÚstdoutÚcheckr1   N)r   r   ÚosÚfspathÚwrite_bytesÚlenÚappendr3   r   r4   r   ÚopenÚtobytes)	r   r    r"   ÚtmpdirÚ
image_pathÚglobal_pathÚoutput_pathÚargsÚims	            r   r$   zJBIG2Decoder.decode_jbig2C   s  € å z¸(ÐCÑCÔCð 	$ÀvÝ˜f™œ¨Ñ/ˆJÝ˜v™,œ,¨Ñ1ˆKÝ˜v™,œ,¨Ñ2ˆKð ØØØØÝ”	˜+Ñ&Ô&ðˆDð ×"Ò" 5Ñ)Ô)Ð)å=Ñ!Ô! AÒ%Ð%Ø×'Ò'¨Ñ6Ô6Ð6Ø—’BœI kÑ2Ô2Ñ3Ô3Ð3àKŠKœ	 *Ñ-Ô-Ñ.Ô.Ð.àIŠIØW¨DÀÔ@Sð ñ ô ð õ ”˜KÑ(Ô(ð $¨BØ—z’z‘|”|ð$ð $ð $ð $ñ $ô $ð $ð;	$ð 	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð:$ð $ð $ð $øøøð $ð $ð $ð $ð $ð;	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$s6   ’DE+Ä%EÄ9E+ÅE	ÅE+ÅE	ÅE+Å+E/Å2E/úVersion | Nonec                óB  — 	 |                       ddgt          dd| j        ¬¦  «        }|j        }|                     dd¦  «                             ¦   «         }	 t          |¦  «        S # t          $ r Y d S w xY w# t          t          f$ r}t          d¦  «        |‚d }~ww xY w)Nr?   z	--versionTÚascii)rA   rB   Úencodingr1   Ú z%jbig2dec - not installed or not found)r3   r   r4   rA   ÚreplaceÚstripr   r   r	   ÚFileNotFoundErrorr   )r   ÚprocÚresultÚversion_strÚes        r   r7   zJBIG2Decoder._versione   sÕ   € ð	Ø—9’9Ø˜[Ð)ÝØØ Ø"Ô1ð ñ ô ˆDð ”[ˆFØ Ÿ.š.Ø˜Bñô çŠe‰gŒgð ðÝ˜{Ñ+Ô+Ð+øÝ!ð ð ð Øttðøøøøõ #Õ$5Ð6ð 	Rð 	Rð 	RÝ!Ð"IÑJÔJÐPQÐQøøøøð	Røøøs)   ‚&A8 ÁA' Á'
A5Á4A5Á8BÂ	BÂBNr(   r)   )r   rP   )
r*   r+   r,   r-   r
   r   r5   r   r$   r7   r   r   r   r/   r/   5   sy   € € € € € Ø'Ð'à),¸Nð ,ð ,ð ,ð ,ð ,ð
Sð Sð Sð Sð $ð  $ð  $ð  $ðDð ð ð ð ð r   r/   Ú_jbig2_decoderr   c                 ó   — t           S )z&Return an instance of a JBIG2 decoder.©r\   r   r   r   Úget_decoderr_   ~   s   € åÐr   Újbig2_decoderr   c                ó
   — | a dS )zSet the JBIG2 decoder to use.Nr^   )r`   s    r   Úset_decoderrb   ƒ   s   € ð #€N€N€Nr   )r   r   )r`   r   r   r   )!r-   Ú
__future__r   rC   ÚsysÚabcr   r   Úpathlibr   Ú
subprocessr   r   r	   r
   Útempfiler   Úpackaging.versionr   r   ÚPILr   Úpikepdf._exceptionsr   Úplatformr   r   Ú__annotations__r   r/   r\   r_   rb   r   r   r   ú<module>rn      s·  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /à„<7ÒÐØ+Ð+Ð+Ð+Ð+Ð+à*€NÐ*Ð*Ð*Ñ*Ð*à€Nðð ð ð ð ˜Cñ ô ð ð*Cð Cð Cð Cð CÐ(ñ Cô Cð CðL )5¨©¬€Ð 6Ð 6Ð 6Ñ 6ðð ð ð ð
#ð #ð #ð #ð #ð #r   