
    Kwg'                         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	Zd
dddZddddZddZddZddZd Zd ZddZd Zd Zd dZd Z G d d      Zy)!z3.3.0     N)BytesIO)	rl_config)ImageReader	isUnicode)asciiBase85EncodeasciiBase85Decode<   c                 j    t        dt        |       |      D ]  }|j                  | |||z            |S Nr   )rangelenappend)srcdst	chunkSizeis       Q/var/www/horilla/myenv/lib/python3.12/site-packages/reportlab/pdfbase/pdfutils.py_chunkerr      s:    1SXi( '

3q9%&'J    RGBCMYKG)r   r   L         c           	         dd l }t        |       }|$|j                  |       |r|j                         ry |j	                         \  }}|j                         }g }|j                  }	 |	d        |	d|d|dt        |j                     d        |	d       t        |      ||z  t        |j                     z  k(  sJ d       |j                  |      }
t        |
      }t        ||        |	d	       |S )
Nr   BI/W  /H  /BPC 8 /CS /z /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encodeds               r   makeA85Imager8      s    
h
C


3#++-++-Hi
..
CD[[F
4L
9XVYV^V^M_`a
4Ls8x)+Ichh,???aAaa?s#J
+G WT
4LKr   c           	         dd l }t        |       }|$|j                  |       |r|j                         ry |j	                         \  }}|j                         }g }|j                  }	 |	d        |	d|d|dt        |j                     d        |	d       t        |      ||z  t        |j                     z  k(  sJ d       |j                  |      }
t        |
|        |	d	       |S )
Nr   r   r    r!   r"   z	 /F [/Fl]r#   r$   r%   )r&   r   r   r'   r(   r)   r*   r+   r   r,   r-   r   )r.   r/   r0   r&   r1   r2   r3   r4   r5   r   r6   s              r   makeRawImager:   9   s    
h
C


3#++-++-Hi
..
CD[[F
4L
HiQTQYQYHZ[\
4Ls8x)+Ichh,???aAaa?s#J Z
4LKr   c                 <   t         j                  j                  |       d   t        j                  xr dxs dz   }| |k(  rQt        |       r7ddlm} |r=t        d ||      j                         j                  d            S t        d| z        yt        j                  rt        | |      }nt        | |      }|r|S t        |d      }|j                  dj!                  |      dz          |j#                          t        j$                  rt'        d	|z         yy)
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.utilsr=   filterreadsplitIOErrorr8   r:   openwritejoincloseverboseprint)r.   returnInMemoryr/   
cachednamer=   r5   fs          r   cacheImageFilerS   T   s     !!(+A.)2B2B2Mv2WQWXJX&9fT-
2K2P2P2R2X2XY_2`&aa3h>??  -D-D$; D!	D!&()		&34 r   c                     ddl }t        | t              r|j                  |       }n| }|D ]8  }t        |      r t        j
                  st        d|z         .t        |       : y)zPreprocesses 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strrD   r   rN   rO   rS   )specrU   filelistr.   s       r   preProcessImagesrZ   m   sY     $s99T? %X&  ;hFG8$%r   c                 &   t         j                  j                  |       d   t        j                  xr dxs dz   }t         j                  j                  |      r7t        j                  |       d   }t        j                  |      d   }||kD  ryyy)zDetermines 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   r<   bin   r   )r@   rA   rB   r   rC   isfilestat)r.   rQ   original_datecached_dates       r   rD   rD      sz    
 !!(+A.)2B2B2Mv2VQVWJ	ww~~j!)!,ggj)!,;&r   c                     | j                  d|      j                  d|      j                  d|      j                  ||      S )zzNormalizes different line end character(s).

    Ensures all instances of CR, LF and CRLF end up as
    the specified one.r>   
)replace)textdesiredunlikelys      r   _normalizeLineEndsri      s<     WVX&WT8$WT8$WXw'	)r   c                     t        |       r| j                  d      } t               }|j                  t	        j
                  |              |j                  d       |j                         S )zEncodes 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   rK   binasciib2a_hexgetvalue)inputoutputs     r   _AsciiHexEncoders      sQ     W%YF
LL!!%()
LL??r   c                 r   t        |       s| j                  d      } dj                  | j                               }|d   dk(  sJ d       |dd }t	        |      dz  dk(  sJ d	       dj                  t        dt	        |      d      D cg c]  }t        t        |||dz    d
             c}      S c c}w )zeDecodes input using ASCII-Hex coding.

    Not used except to provide a test of the inverse function.rk   r   >z'Invalid terminator for Ascii Hex StreamN   r   z(Ascii Hex stream has odd number of bytes   )r   decoderL   rH   r   r   chrint)rq   strippedr   s      r   _AsciiHexDecoder}      s     UW%wwu{{}%HB<3I II}Hx=1!M#MM!77%#h-PQ:RSQCHQqsOB/0STTSs   "B4c                     g }t        |       }d}||z  }||k  r'|j                  | |||z           |dz   }||z  }||k  r't        |d         dk(  r|d   dd |d   d   |d   z   g|dd dj                  |      S )z>Wraps input at a given column size by inserting 
 characters.r   r   ru   Nr>   )r   r   rL   )rq   columnsrr   lengthr   poss         r   _wrapr      s    FZF	A
A+C
,eCG,-Ek ,
 6":bz#2vbz"~fRj'@Ars;;vr   c                 f   ddl }ddlm} g d}g d}g d}d}d}|s|j                  d| j	                  d	            }|d   d
k(  r|j                  d| j	                  d	            }|d   |v r| j                  dd	       |j                  d| j	                  d	            }|d   dk7  r |d      |j                  d| j	                  d            }	|	d   dz  |	d	   z   }
|j                  d| j	                  d            }	|	d   dz  |	d	   z   }|j                  d| j	                  d	            }	|	d   }||
||fS |d   dk(  r|j                  d| j	                  d            }|d   dz  |d	   z   dz
  }| j	                  |      }|j                  d|dd       }	|j                  d|dd       }|d   dz  |d	   z   |	d   dz  |	d	   z   f}n^|d   |v r |d|d   z        |d   |vrB|j                  d| j	                  d            }| j                  |d   dz  |d	   z   dz
  d	       |syy)z@Read width, height and number of components from open JPEG file.r   N)PDFError)         )
                           r   )                                 )H   r   Br      rw   r]   z#JPEG must have 8 bits per componentBB   
      z#JPEG Unsupported JPEG marker: %0.2x)structreportlab.pdfbase.pdfdocr   unpackrG   seek)imager   r   validMarkersnoParamMarkersunsupportedMarkersdpidonexyheightwidthcolorns                 r   readJPEGInfor      sY    1 &L 	G 
 	M  CDMM#uzz!}-Q44<c5::a=1At|#

1a MM#uzz!}5Q419"#HIIMM$

16A$!)qt+MM$

16A$!)qt+MM#uzz!}51feS001tMM$

16qTQY!A$&*JJqMMM$"R1MM$!B0!a1Q4'1q!A$71++DqtKLL1^+ MM$

16

QqTQY!A$.2A6= r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)_fuscc                 l    |sJ d       || _         t        |      | _        t        |      xs d| _        y )Nz'Argument k should be a non empty string   )_kr   _klenr{   _n)selfkr   s      r   __init__z_fusc.__init__  s1    ;;;qV
a&+Ar   c                     | j                  t        dj                  t        t        | j                  t        t        t        |                                    | j                        S Nr   )	_fusc__rotater   rL   maprz   _fusc__fusclistordr   r   ss     r   encryptz_fusc.encrypt  sH    }}.rwws3t{{4PSTWXYPZK[?\7]/^_`d`g`ghhr   c                     dj                  t        t        | j                  t	        t        t
        t        | j                  || j                                                             S r   )	rL   r   rz   r   r   r   r	   r   r   r   s     r   decryptz_fusc.decrypt  sI    wws3t{{4C8I$--XY[_[b[bZbJc8d0e+fghiir   c                 \    t        |      }|dk  r||z   }||z  }|s|S || d  |d ||z
   z   S r   )r   )r   r   r   ls       r   __rotatez_fusc.__rotate!  sF    FQ3AaC	Q(!va1g~r   c                     t        |      }t        t        d |t        t        t        t	        || j
                  z        dz   | j                  z  d |                         S )Nc                     | |z  S )N )r   r   s     r   <lambda>z_fusc.__fusc.<locals>.<lambda>*  s
    AE r   r   )r   r   r   r   r{   r   r   )r   r   slens      r   __fuscz_fusc.__fusc(  sT    1vC)!DS3tDJJ;OPQ;QSWSZSZ:Z\a]a9b1c,deffr   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r     s    ijgr   r   )NF)r   N)r>   z )r
   )__version____doc__r@   rn   ior   	reportlabr   rE   r   r   reportlab.lib.rl_accelr   r	   r   r*   r,   r8   r:   rS   rZ   rD   ri   rs   r}   r   r   r   r   r   r   <module>r      s    
 
    6 G"  c2aQ'	6652%.0
)U437jg gr   