
    kf                         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 ddlm	Z	 ddl
mZmZ dd	lmZ  G d
 d          Zedk    rej                            ej                            ej                  dd          Zej                            e          s
J d            de_         eedd          Z ej                    Z edej                    ee                    e                     dS dS )z3.3.0z@
Image functionality sliced out of canvas.py for generalization
    N)	rl_config)pdfutils)pdfdoc)isStr)fp_strasciiBase85Encode)aspectRatioFixc                   R    e Zd ZdZddZd Zd Zd Zd Zd	 Z	ddZ
	 	 ddZd ZdS )PDFImagezWrapper 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).Nr   c                     || _         || _        || _        || _        || _        d | _        || _        d| _        d| _        g | _	        d | _
        |                                  d S )N	DeviceRGB   )imagexywidthheightfilenameimageCaching
colorSpacebitsPerComponentfilterssourcegetImageData)selfr   r   r   r   r   cachings          Z/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/pdfgen/pdfimages.py__init__zPDFImage.__init__   sk    

# & !    c                     t          | j        d          }	 |                     |          }|                                 n# |                                 w xY w|S )Nrb)openr   _jpg_imagedataclose)r   fpresults      r   jpg_imagedatazPDFImage.jpg_imagedata*   sS     $*d##	((,,FHHJJJJBHHJJJJs   A Ac                    t          j        |          }d| _        |d         |d         }}|d         dk    rd}n|d         dk    rd}nd}|                    d           g }|                    d	|||t
          j        rd
pdfz             |                                }t
          j        rt          |          }t          j	        ||           |                    d           |||fS )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#   zPDFImage._jpg_imagedata4   s   $Y//"1gtAw)7a<<%JJ!W\\$JJ%Jq	G8U^`jlul|  mI  BI  mO  MO  KP  P  	Q  	Q  	Q~~ 	+$T**D$y)))8Y//r   c                 b   | j         }t          j        |          st          j        |           t          j                            |          d         t          j        rdpdz   }t          |d          
                                }t          t          t          j        |                    }|S )Nr   z.a85z.binr!   )r   r   cachedImageExistscacheImageFileospathsplitextr   r5   r"   	readlineslistmapstrstrip)r   r   
cachednamer<   s       r   cache_imagedatazPDFImage.cache_imagedataJ   s    
)%00 	+#E*** W%%e,,Q/93C3N3XRXY
D))3355	SY	2233	r   c                    dd l }| j        }|j        dk    r1|j        }|                    d           |                     |          S d| _        d}|j        dk    r|}d}d}n?|j        dk    r	|}d	}d
}d
}n+|j        dk    r|}d	}d
}n|                    d          }d}d}|j	        \  }}	d||	||t          j        rdpdfz  g}
 t          |d          r|j        n|j                    }||z  |z  dz   dz	  }t          |          ||	z  k    s
J d            |                    |          }t          j        rt#          |          }t%          j        ||
           |
                    d           |
||	fS )Nr   r)   PILr   CMYKr.      1r,   r*   LRGBr-   z,BI /W %d /H %d /BPC %d /CS /%s /F [%s/Fl] IDr/   r0   tobytes   zWrong amount of data for imager1   )zlibr   formatr%   r3   r#   r   modeconvertsizer   r5   hasattrrR   tostringlencompressr   r   r7   r4   )r   rT   r   r%   bpcmyimager   bppr:   r;   r<   raw	rowstrider=   s                 r   PIL_imagedatazPDFImage.PIL_imagedataV   s   
<xBGGAJJJ&&r***:G%JCCZ3G%JCCCZ3G%JCCmmE**GJC%l) BXyZ]_iktk{  lH  AH  lN  LN  EO  O  P	 S'')"<"<Rw'BRUUc\#%a'!+	3xx9Y....0P...}}S!! 	+$T**D$y)))8Y//r   c                     | j         st          j        |d          }n|                                 }|d                                         }t          |d                   }t          |d                   }|||fS )Nr*   )returnInMemoryr-   )r   r   r@   rJ   splitint)r   r   r<   wordsr:   r;   s         r   non_jpg_imagedatazPDFImage.non_jpg_imagedata   su      	/ /QGGGII,,..I!""$$uQx==aMM	(I--r   Fc                    | j         }t          |          r|| _        t          j                            |          d         dv r:	 |                                 \  }}}nR#  |                     |          \  }}}Y n5xY w|                     |          \  }}}n|                                 \  }}}|| _	        || _
        || _        | j        p|| _        | j        p|| _        dS )z1Gets data, height, width - whatever type of imager*   )z.jpgz.JPGz.jpegz.JPEGN)r   r   r   rA   rB   rC   r'   rh   rb   	imageDatar:   r;   r   r   )r   preserveAspectRatior   r<   r:   r;   s         r   r   zPDFImage.getImageData   s    
<< 
	B!DMw&&q)-OOOS595G5G5I5I2IxS595K5KE5R5R2Ix151G1G1N1N.	8YY-1-?-?-A-A*Ix" "Z+8
k.Ys   A A<swc                    | j         }| j        }|dk     s|dk     rdS t          ||| j        | j        ||| j        | j        |	  	        \  }	}
| _         | _        }|j        s|
|z   }
|j        	                    dt          | j                   dt          | j        |	|
          d           | j         }| j        }| j        D ]}|j        	                    |           |j        	                    d           |r|                    ||	|
||           |r.|                                D ]}t                      |         ||<   dS )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_coder4   r   rj   drawBoundarykeysvars)r   canvasrk   anchor
anchorAtXYshowBoundaryextraReturnr   r   r   r   scaledlineks                 r   drawInlineImagezPDFImage.drawInlineImage   s{    
::UU-;<OPVW[W]^b^dejkqrvr  AE  AO  PZ  .[  .[*!DJt{F,AfHtz0B0B0B0BF4;XY[\D]D]D]D]^___
N 	& 	&DL%%%%C    	?Qqv>>> 	+ %%'' + +!%Atr   c                 F   t          j                    }d|d<   d|d<   | j        |d<   | j        |d<   d|d<   t          j        | j                  |d	<   d
                    | j        dd                   d
z   }t          j        ||          }|	                    |          S )ztAllow 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
r-   )
dictionarycontent)
r   PDFDictionaryr   r   PDFNamer   joinrj   	PDFStreamrU   )r   documentdictr   strms        r   rU   zPDFImage.format   s     #%%!V"Y
WX#$ #^DO<<\))DN1R4011D84AAA{{8$$$r   )NNr   )F)Frl   FFN)__name__
__module____qualname____doc__r   r'   r#   rJ   rb   rh   r   r|   rU    r   r   r   r      s        6 6
   "  0 0 0,
 
 
,0 ,0 ,0\. . ./ / / /* Y^59   4% % % % %r   r   __main__testzpythonpowered.gifzimage not foundr*   d   zsource=)__version__r   rA   	reportlabr   reportlab.pdfbaser   r   reportlab.lib.utilsr   reportlab.lib.rl_accelr   r   reportlab.lib.boxstuffr	   r   r   rB   r   dirname__file__srcfileisfile
LongFormatimgPDFDocumentdocprintr   rU   r   r   r   <module>r      s   	 
			           & & & & & & $ $ $ $ $ $ % % % % % % < < < < < < < < 1 1 1 1 1 1w% w% w% w% w% w% w% w%r Zgll	 233# G
 7>>'""55$5555F
(7C
%
%C
&


C	E)CJ	E#**S// r   