
    Q?h                         S r SrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
JrJr  SS	KJr   " S
 S5      r\S:X  a  \R"                  R%                  \R"                  R'                  \R(                  5      SS5      r\R"                  R-                  \5      (       d   S5       eS\l        \" \SS5      r\R2                  " 5       r\" S\R8                  5        \" \R;                  \5      5        gg)z3.3.0z@
Image functionality sliced out of canvas.py for generalization
    N)	rl_config)pdfutils)pdfdoc)isStr)fp_strasciiBase85Encode)aspectRatioFixc                   ^    \ rS rSrSrSS jrS rS rS rS r	S	 r
SS
 jr  SS jrS rSrg)PDFImage   zWrapper around different "image sources".  You can make images
from a PIL Image object, a filename (in which case it uses PIL),
an image we previously cached (optimisation, hardly used these
days) or a JPEG (which PDF supports natively).Nc                     Xl         X l        X0l        X@l        XPl        S U l        X`l        SU l        SU l        / U l	        S U l
        U R                  5         g )N	DeviceRGB   )imagexywidthheightfilenameimageCaching
colorSpacebitsPerComponentfilterssourcegetImageData)selfr   r   r   r   r   cachings          L/var/www/html/env/lib/python3.13/site-packages/reportlab/pdfgen/pdfimages.py__init__PDFImage.__init__   sS    

# & !    c                     [        U R                  S5      n U R                  U5      nUR                  5         U$ ! UR                  5         f = f)Nrb)openr   _jpg_imagedataclose)r   fpresults      r   jpg_imagedataPDFImage.jpg_imagedata*   sD     $**d#	((,FHHJ HHJs	   ; Ac                    [         R                  " U5      nSU l        US   US   pCUS   S:X  a  SnOUS   S:X  a  SnOSnUR                  S5        / nUR	                  S	X4U[
        R                  =(       a    S
=(       d    S4-  5        UR                  5       n[
        R                  (       a  [        U5      n[         R                  " Xv5        UR	                  S5        XcU4$ )NJPEGr         
DeviceGray   r   
DeviceCMYKz,BI /W %d /H %d /BPC 8 /CS /%s /F [%s/DCT] ID/A85  EI)
r   readJPEGInfor   seekappendr   useA85readr   _chunker)r   	imageFileinfoimgwidth	imgheightr   	imagedatadatas           r   r%   PDFImage._jpg_imagedata4   s    $$Y/"1gtAw)7a<%J!W\$J%Jq	G8`jlul|l|  mI  BI  mO  MO  KP  P  	Q~~$T*D$)Y//r!   c                    U R                   n[        R                  " U5      (       d  [        R                  " U5        [        R
                  R                  U5      S   [        R                  =(       a    S=(       d    S-   n[        US5      R                  5       n[        [        [        R                  U5      5      nU$ )Nr   z.a85z.binr#   )r   r   cachedImageExistscacheImageFileospathsplitextr   r8   r$   	readlineslistmapstrstrip)r   r   
cachednamer?   s       r   cache_imagedataPDFImage.cache_imagedataJ   s    

))%00##E* WW%%e,Q/93C3C3N3XRXY
D)335	SYY	23	r!   c                 4   SS K nU R                  nUR                  S:X  a.  UR                  nUR	                  S5        U R                  U5      $ SU l        SnUR                  S:X  a  UnSnSnOEUR                  S:X  a	  UnS	nS
nS
nO,UR                  S:X  a  UnS	nS
nOUR                  S5      nSnSnUR                  u  pSXXF[        R                  =(       a    S=(       d    S4-  /n
[        US5      (       a  UR                  OUR                  " 5       nX-  U-  S-   S-	  n[        U5      X-  :X  d   S5       eUR!                  U5      n[        R                  (       a  [#        U5      n[$        R&                  " X5        U
R)                  S5        XU	4$ )Nr   r,   PILr   CMYKr1      1r/   r-   LRGBr0   z,BI /W %d /H %d /BPC %d /CS /%s /F [%s/Fl] IDr2   r3   tobytes   zWrong amount of data for imager4   )zlibr   formatr'   r6   r%   r   modeconvertsizer   r8   hasattrrW   tostringlencompressr   r   r:   r7   )r   rY   r   r'   bpcmyimager   bppr=   r>   r?   raw	rowstrider@   s                 r   PIL_imagedataPDFImage.PIL_imagedataV   s   

<<xxBGGAJ&&r**::G%JCZZ3G%JCCZZ3G%JCmmE*GJC%ll BXZ]ktk{k{  lH  AH  lN  LN  EO  O  P	 #*')"<"<w'BRBRRU\#%a'!+	3x9..P0PP.}}S!$T*D$)Y//r!   c                     U R                   (       d  [        R                  " USS9nOU R                  5       nUS   R	                  5       n[        US   5      n[        US   5      nX$U4$ )Nr-   )returnInMemoryr0   )r   r   rD   rN   splitint)r   r   r?   wordsr=   r>   s         r   non_jpg_imagedataPDFImage.non_jpg_imagedata   sb       //QGI,,.I!""$uQx=aM	I--r!   c                    U R                   n[        U5      (       aV  X l        [        R                  R                  U5      S   S;   a   U R                  5       u  p4nO(U R                  U5      u  p4nOU R                  5       u  p4nX0l	        X@l
        XPl        U R                  =(       d    UU l        U R                  =(       d    UU l        g!   U R                  U5      u  p4n N_= f)z1Gets data, height, width - whatever type of imager-   )z.jpgz.JPGz.jpegz.JPEGN)r   r   r   rE   rF   rG   r)   rn   rg   	imageDatar=   r>   r   r   )r   preserveAspectRatior   r?   r=   r>   s         r   r   PDFImage.getImageData   s    

<<!Mww&q)-OOS595G5G5I2I 261G1G1N.	Y-1-?-?-A*I" "ZZ+8
kk.YS595K5KE5R2Is   
C C%c                    U R                   nU R                  nUS:  d  US:  a  g[        X#U R                  U R                  XxU R
                  U R                  U5	      u  pU l         U l        nUR                  (       d  X-   n
UR                  R                  S[        U R                   5      < S[        U R                  X5      < S35        U R                   nU R                  nU R                   H  nUR                  R                  U5        M      UR                  R                  S5        U(       a  UR                  XYXU5        U(       a&  UR                  5        H  n[        5       U   Xm'   M     g)zDraw an Image into the specified rectangle.  If width and
height are omitted, they are calculated from the image size.
Also allow file names as well as images.  This allows a
caching mechanismgư>Fzq z 0 0 z cmQT)r   r   r	   r   r   r=   r>   bottomup_coder7   r   rq   drawBoundarykeysvars)r   canvasrr   anchor
anchorAtXYshowBoundaryextraReturnr   r   r   r   scaledlineks                 r   drawInlineImagePDFImage.drawInlineImage   s2    

:U-;<OW[W]W]^b^d^dejrvrr  AE  AO  AO  PZ  .[*DJt{FAHtzz0BF4;;XYD]^_

NNDLL% #C qv> %%'!% (r!   c                 X   [         R                  " 5       nSUS'   SUS'   U R                  US'   U R                  US'   SUS'   [         R                  " U R
                  5      US	'   S
R                  U R                  SS 5      S
-   n[         R                  " X#S9nUR                  U5      $ )zlAllow it to be used within pdfdoc framework.  This only
defines how it is stored, not how it is drawn later.z/XObjectTypez/ImageSubtypeWidthHeightr   BitsPerComponent
ColorSpace
r0   )
dictionarycontent)
r   PDFDictionaryr   r   PDFNamer   joinrq   	PDFStreamrZ   )r   documentdictr   strms        r   rZ   PDFImage.format   s     ##%!V"Y

WX#$ #^^DOO<\))DNN1R01D84A{{8$$r!   )r   r   r   r   r   r   r   rq   r>   r=   r   r   r   r   )NNr   )F)FswFFN)__name__
__module____qualname____firstlineno____doc__r   r)   r%   rN   rg   rn   r   r   rZ   __static_attributes__ r!   r   r   r      s?    6
"0,
,0\./* Y^594%r!   r   __main__testzpythonpowered.gifzimage not foundr-   d   zsource=)__version__r   rE   	reportlabr   reportlab.pdfbaser   r   reportlab.lib.utilsr   reportlab.lib.rl_accelr   r   reportlab.lib.boxstuffr	   r   r   rF   r   dirname__file__srcfileisfile
LongFormatimgPDFDocumentdocprintr   rZ   r   r!   r   <module>r      s    	 
   & $ % < 1w% w%r Zggll	 2 23#G
 77>>'""5$55"F
7C
%C



C	)CJJ	#**S/ r!   