§
    £”jæ   ã                   óò  — 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    r±e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 )ÚPDFImagezùWrapper 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          úi/var/www/finuniver-perm.ru/html/portfolio/venv/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à�HŠH‰JŒJˆJˆJøˆB�HŠH‰JŒJˆJˆJøøøØˆ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Ñ/Ô/ˆØˆŒØ" 1œg t¨A¤w�)ˆØ�Œ7�aŠ<ˆ<Ø%ˆJˆJØ�!ŒW˜Š\ˆ\Ø$ˆJˆJà%ˆJØ�Š�qÑÔÐØˆ	à×ÒÐGÈ8ÐU^Ð`jÕluÔl|ð  mIð  BIð  mOð  MOð  KPñ  Pñ  	Qô  	Qð  	Qà�~Š~ÑÔˆÝÔð 	+Ý$ TÑ*Ô*ˆDÝÔ˜$˜yÑ)Ô)Ð)Ø×Ò˜ÑÔÐØ˜8 YÐ/Ð/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Ô/µ9Ô3CÐ3NÈÐ3XÐRXÑYˆ
Ý˜ DÑ)Ô)×3Ò3Ñ5Ô5ˆ	å��SœY¨	Ñ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ä  € ØˆˆˆØ”
ˆØŒ<˜ÒÐØŒxˆBØ�GŠG�A‰JŒJˆJØ×&Ò& rÑ*Ô*Ð*ØˆŒàˆàŒ:˜ÒÐØˆGØ%ˆJØˆCˆCØŒZ˜3ÒÐØˆGØ%ˆJØˆCØˆCˆCØŒZ˜3ÒÐØˆGØ%ˆJØˆCˆCà—m’m EÑ*Ô*ˆGØˆJØˆCØ%œlÑˆ�)ð BÀXÈyÐZ]Ð_iÕktÔk{ð  lHð  AHð  lNð  LNð  EOñ  Oð  Pˆ	ð S¥'¨'°)Ñ"<Ô"<ÐRˆwŒˆÀ'ÔBRÑUÔUˆØ˜c‘\ #Ñ% aÑ'¨!Ñ+ˆ	Ý�3‰xŒx˜9 YÑ.Ò.Ð.Ð.Ð0PÑ.Ô.Ð.Ø�}Š}˜SÑ!Ô!ˆÝÔð 	+Ý$ TÑ*Ô*ˆDåÔ˜$˜yÑ)Ô)Ð)Ø×Ò˜ÑÔÐØ˜8 YÐ/Ð/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ÔGˆIˆIà×,Ò,Ñ.Ô.ˆIØ˜!”×"Ò"Ñ$Ô$ˆÝ�u˜Q”x‘=”=ˆÝ˜˜aœ‘M”Mˆ	Ø˜( 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Ø!ˆDŒMÝŒw×Ò Ñ&Ô& qÔ)Ð-OÐOÐOðSØ59×5GÒ5GÑ5IÔ5IÑ2�I˜x¨¨øðSØ59×5KÒ5KÈEÑ5RÔ5RÑ2�I˜x¨¨¨øøøà15×1GÒ1GÈÑ1NÔ1NÑ.�	˜8 Y Yà-1×-?Ò-?Ñ-AÔ-AÑ*ˆI�x Ø"ˆŒØ ˆŒØ"ˆŒØ”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 )zØDraw 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{  € ð ”
ˆØ”ˆØ�Š:ˆ:˜ š˜¨U¨UÝ-;Ð<OÐPVÐW[ÔW]Ð^bÔ^dÐejÐkqÐrvÔrð  AEô  AOð  PZñ  .[ô  .[Ñ*ˆˆ!ˆDŒJ�t”{ FàŒÐ, A f¡H ØŒ×ÒÐµ°t´zÑ0BÔ0BÐ0BÐ0BÅFÈ4Ì;ÐXYÐ[\ÑD]ÔD]ÐD]ÐD]Ð^Ñ_Ô_Ð_Ø”
ˆØ”ˆà”Nð 	&ð 	&ˆDØŒL×Ò Ñ%Ô%Ð%Ð%ØŒ×Ò˜CÑ Ô Ð Øð 	?Ø×Ò ¨Q¨q°°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‰Ø#$ˆÐÑ Ý#œ^¨D¬OÑ<Ô<ˆˆ\ÑØ—)’)˜DœN¨1¨R¨4Ô0Ñ1Ô1°DÑ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ÒÐØŒg�lŠlØ”—’ 	Ô 2Ñ3Ô3ØØ#ñô €Gð
 Œ7�>Š>˜'Ñ"Ô"Ð5Ð5Ð$5Ñ5Ô5Ð5Ø€FÔØ
ˆ(�7˜C Ñ
%Ô
%€CØ
ˆ&Ô
Ñ
Ô
€CØ	€Eˆ)�C”JÑÔÐØ	€Eˆ#�*Š*�S‰/Œ/ÑÔÐÐÐð Ðr   