o
    à’Oj—'  ã                   @   sâ   d Z dZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZ g dfd	d
„ZddddœZddddœZd+dd„Zd+dd„Zd,dd„Zdd„ Zdd„ Zd-dd „Zd!d"„ Zd#d$„ Zd.d%d&„Zd'd(„ ZG d)d*„ d*ƒZdS )/z3.3.0Ú é    N)ÚBytesIO)Ú	rl_config)ÚImageReaderÚ	isUnicode)ÚasciiBase85EncodeÚasciiBase85Decodeé<   c                 C   s0   t dt| ƒ|ƒD ]}| | ||| … ¡ q|S ©Nr   )ÚrangeÚlenÚappend)ÚsrcÚdstÚ	chunkSizeÚi© r   ú`/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/reportlab/pdfbase/pdfutils.pyÚ_chunker   s   r   ÚRGBÚCMYKÚG)r   r   ÚLé   é   é   Fc                 C   sÂ   dd l }t| ƒ}|d ur| |¡ |r| ¡ rd S | ¡ \}}| ¡ }g }|j}	|	dƒ |	d||t|j f ƒ |	dƒ t|ƒ|| t	|j  ksMJ dƒ‚| 
|¡}
t|
ƒ}t||ƒ |	dƒ |S )Nr   ÚBIz(/W %s /H %s /BPC 8 /CS /%s /F [/A85 /Fl]ÚIDúWrong amount of data for imageÚEI)Úzlibr   r   Újpeg_fhÚgetSizeÚ
getRGBDataÚ_mode2csÚmoder   Ú	_mode2bppÚcompressr   r   )ÚfilenameÚIMGÚ
detectJpegr    ÚimgÚimgwidthÚ	imgheightÚrawÚcoder   Ú
compressedÚencodedr   r   r   ÚmakeA85Image   s&   
"

r2   c                 C   sº   dd l }t| ƒ}|d ur| |¡ |r| ¡ rd S | ¡ \}}| ¡ }g }|j}	|	dƒ |	d||t|j f ƒ |	dƒ t|ƒ|| t	|j  ksMJ dƒ‚| 
|¡}
t|
|ƒ |	dƒ |S )Nr   r   z#/W %s /H %s /BPC 8 /CS /%s /F [/Fl]r   r   r   )r    r   r   r!   r"   r#   r$   r%   r   r&   r'   r   )r(   r)   r*   r    r+   r,   r-   r.   r/   r   r0   r   r   r   ÚmakeRawImage9   s$   
"

r3   c                 C   sÊ   t j | ¡d tjrdpd }| |kr3t| ƒr-ddlm} |r+td||ƒ 	¡  
d¡ƒS dS td|  ƒ‚tjr<t| |ƒ}nt| |ƒ}|rE|S t|dƒ}| d |¡d ¡ | ¡  tjrctd	| ƒ dS dS )
zHProcesses image as if for encoding, saves to a file with .a85 extension.r   ú.a85z.bin)Úopen_for_readNú
zNo such cached image %sÚwbzcached image as %s)ÚosÚpathÚsplitextr   ÚuseA85ÚcachedImageExistsÚreportlab.lib.utilsr5   ÚfilterÚreadÚsplitÚIOErrorr2   r3   ÚopenÚwriteÚjoinÚcloseÚverboseÚprint)r(   ÚreturnInMemoryr)   Ú
cachednamer5   r/   Úfr   r   r   ÚcacheImageFileT   s     

ÿrK   c                 C   sT   ddl }t| tƒr|  | ¡}n| }|D ]}t|ƒr#tjr"td| ƒ qt|ƒ qdS )zòPreprocesses one or more image files.

    Accepts either a filespec ('C:\mydir\*.jpg') or a list
    of image filenames, crunches them all to save time.  Run this
    to save huge amounts of time when repeatedly building image
    documents.r   Nz#cached version of %s already exists)ÚglobÚ
isinstanceÚstrr<   r   rF   rG   rK   )ÚspecrL   Úfilelistr(   r   r   r   ÚpreProcessImagesm   s   
€
ûrQ   c                 C   sZ   t j | ¡d tjrdpd }t j |¡r+t  | ¡d }t  |¡d }||kr)dS dS dS )z­Determines if a cached image already exists for a given file.

    Determines if a cached image exists which has the same name
    and equal or newer date to the given file.r   r4   Úbiné   r   )r8   r9   r:   r   r;   ÚisfileÚstat)r(   rI   Úoriginal_dateÚcached_dater   r   r   r<   „   s   r<   r6   ú c                 C   s$   |   d|¡  d|¡  d|¡  ||¡S )zzNormalizes different line end character(s).

    Ensures all instances of CR, LF and CRLF end up as
    the specified one.r6   úÚ
)Úreplace)ÚtextÚdesiredÚunlikelyr   r   r   Ú_normalizeLineEndsœ   s   ür_   c                 C   s:   t | ƒr	|  d¡} tƒ }| t | ¡¡ | d¡ | ¡ S )zÂEncodes input using ASCII-Hex coding.

    This is a verbose encoding used for binary data within
    a PDF file.  One byte binary becomes two bytes of ASCII.
    Helper function used by images.úutf-8ó   >)r   Úencoder   rC   ÚbinasciiÚb2a_hexÚgetvalue)ÚinputÚoutputr   r   r   Ú_AsciiHexEncode¨   s   

rh   c                    s|   t | ƒs	|  d¡} d |  ¡ ¡‰ ˆ d dksJ dƒ‚ˆ dd… ‰ tˆ ƒd dks,J d	ƒ‚d ‡ fd
d„tdtˆ ƒdƒD ƒ¡S )zeDecodes input using ASCII-Hex coding.

    Not used except to provide a test of the inverse function.r`   r   éÿÿÿÿú>z'Invalid terminator for Ascii Hex StreamNé   r   z(Ascii Hex stream has odd number of bytesc                    s&   g | ]}t tˆ ||d  … dƒƒ‘qS )rk   é   )ÚchrÚint)Ú.0r   ©Ústrippedr   r   Ú
<listcomp>Ã   s   & z#_AsciiHexDecode.<locals>.<listcomp>)r   ÚdecoderD   r@   r   r   )rf   r   rp   r   Ú_AsciiHexDecode¶   s   
$rt   c                 C   s”   g }t | ƒ}d}|| }||k r'| | ||| … ¡ |d }|| }||k st |d ƒdkrE|d dd… |d d |d  g|dd…< d |¡S )z>Wraps input at a given column size by inserting 
 characters.r   r   ri   éþÿÿÿNr6   )r   r   rD   )rf   Úcolumnsrg   Úlengthr   Úposr   r   r   Ú_wrapÅ   s   ý,
ry   c                 C   s  ddl }ddlm} g d¢}g d¢}g d¢}d}d}|�s	| d|  d	¡¡}|d d
k�r| d|  d	¡¡}|d |v rŽ|  dd	¡ | d|  d	¡¡}|d dkrU|dƒ‚| d|  d¡¡}	|	d d> |	d	  }
| d|  d¡¡}	|	d d> |	d	  }| d|  d	¡¡}	|	d }||
||fS |d dkr×| d|  d¡¡}|d d> |d	  d }|  |¡}| d|dd… ¡}	| d|dd… ¡}|d d> |d	  |	d d> |	d	  f}n.|d |v rå|d|d  ƒ‚|d |v�r| d|  d¡¡}|  |d d> |d	  d d	¡ |rdS dS )z@Read width, height and number of components from open JPEG file.r   N)ÚPDFError)éÀ   éÁ   éÂ   )
éÐ   éÑ   éÒ   éÓ   éÔ   éÕ   éÖ   é×   éØ   r   )éÃ   éÅ   éÆ   éÇ   éÈ   éÉ   éÊ   éË   éÍ   éÎ   éÏ   )éH   r’   ÚBr   éÿ   rk   rS   z#JPEG must have 8 bits per componentÚBBéà   é
   é   z#JPEG Unsupported JPEG marker: %0.2x)ÚstructÚreportlab.pdfbase.pdfdocrz   Úunpackr?   Úseek)Úimager™   rz   ÚvalidMarkersÚnoParamMarkersÚunsupportedMarkersÚdpiÚdoneÚxÚyÚheightÚwidthÚcolorÚnr   r   r   ÚreadJPEGInfoß   sL   ÿÿ
* âr©   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú_fuscc                 C   s.   |sJ dƒ‚|| _ t|ƒ| _t|ƒpd| _d S )Nz'Argument k should be a non empty stringé   )Ú_kr   Ú_klenrn   Ú_n)ÚselfÚkr¨   r   r   r   Ú__init__  s   
z_fusc.__init__c                 C   s.   |   td tt|  ttt|ƒƒ¡ƒ¡ƒ| j¡S ©Nr   )	Ú_fusc__rotater   rD   Úmaprm   Ú_fusc__fuscÚlistÚordr®   ©r¯   Úsr   r   r   Úencrypt  s   .z_fusc.encryptc                 C   s0   d  tt|  tttt|  || j ¡ƒƒƒ¡ƒ¡S r²   )	rD   r´   rm   rµ   r¶   r·   r   r³   r®   r¸   r   r   r   Údecrypt  s   0z_fusc.decryptc                 C   sF   t |ƒ}|dk r|| }||; }|s|S || d … |d || …  S r
   )r   )r¯   r¹   r¨   Úlr   r   r   Ú__rotate!  s
   z_fusc.__rotatec              
   C   sB   t |ƒ}ttdd„ |tttt|| j ƒd | j d |… ƒƒƒƒS )Nc                 S   s   | |A S )Nr   )r£   r¤   r   r   r   Ú<lambda>*  s    z_fusc.__fusc.<locals>.<lambda>r   )r   r¶   r´   r·   rn   r­   r¬   )r¯   r¹   Úslenr   r   r   Ú__fusc(  s   :z_fusc.__fuscN)Ú__name__Ú
__module__Ú__qualname__r±   rº   r»   r³   rµ   r   r   r   r   rª     s    rª   )NF)r   N)r6   rX   )r	   )Ú__version__Ú__doc__r8   rc   Úior   Ú	reportlabr   r=   r   r   Úreportlab.lib.rl_accelr   r   r   r$   r&   r2   r3   rK   rQ   r<   r_   rh   rt   ry   r©   rª   r   r   r   r   Ú<module>   s,   




5