Ë
    ¡ëiæ   ã                   óä  — 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"                  j%                  ej"                  j'                  ej(                  «      dd«      Zej"                  j-                  e«      sJ d«       ‚de_         eedd«      Z ej2                  «       Z edej8                  «        eej;                  e«      «       yy)z3.3.0z@
Image functionality sliced out of canvas.py for generalization
é    N)Ú	rl_config)Úpdfutils)Úpdfdoc)ÚisStr)Úfp_strÚasciiBase85Encode)ÚaspectRatioFixc                   óP   — 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y)Ú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).Nc                 ó¾   — || _         || _        || _        || _        || _        d | _        || _        d| _        d| _        g | _	        d | _
        | j                  «        y )NÚ	DeviceRGBé   )ÚimageÚxÚyÚwidthÚheightÚfilenameÚimageCachingÚ
colorSpaceÚbitsPerComponentÚfiltersÚsourceÚgetImageData)Úselfr   r   r   r   r   Úcachings          úZ/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/pdfgen/pdfimages.pyÚ__init__zPDFImage.__init__   s_   € ØˆŒ
ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØ#ˆÔð &ˆŒØ !ˆÔØˆŒØˆŒØ×ÑÕó    c                 ó    — t        | j                  d«      }	 | j                  |«      }|j                  «        |S # |j                  «        w xY w)NÚrb)Úopenr   Ú_jpg_imagedataÚclose)r   ÚfpÚresults      r   Újpg_imagedatazPDFImage.jpg_imagedata*   sD   € ô �$—*‘*˜dÓ#ˆð	Ø×(Ñ(¨Ó,ˆFà�H‰HŒJØˆøð �H‰H�Jús	   ˜; »Ac                 ó®  — t        j                  |«      }d| _        |d   |d   }}|d   dk(  rd}n|d   dk(  rd}nd}|j                  d«       g }|j	                  d	|||t
        j                  xr d
xs dfz  «       |j                  «       }t
        j                  rt        |«      }t        j                  ||«       |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Ø�!‰W˜Š\Ø$‰Jà%ˆJØ�‰�qÔØˆ	à×ÑÐGÈ8ÐU^Ð`jÔlu×l|Ñl|ò  mIð  BIò  mOð  MOð  KPñ  Pô  	Qà�~‰~ÓˆÜ×ÒÜ$ TÓ*ˆDÜ×Ñ˜$˜yÔ)Ø×Ñ˜ÔØ˜8 YÐ/Ð/r   c                 ób  — | j                   }t        j                  |«      st        j                  |«       t        j
                  j                  |«      d   t        j                  xr dxs dz   }t        |d«      j                  «       }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Ü×#Ñ# EÔ*ô —W‘W×%Ñ% eÓ,¨QÑ/´9×3CÑ3CÒ3NÈÒ3XÐRXÑYˆ
Ü˜ DÓ)×3Ñ3Ó5ˆ	äœœSŸY™Y¨	Ó2Ó3ˆ	ØÐr   c                 ó  — dd l }| j                  }|j                  dk(  r.|j                  }|j	                  d«       | j                  |«      S d| _        d}|j                  dk(  r|}d}d}nC|j                  dk(  r	|}d	}d
}d
}n+|j                  dk(  r|}d	}d
}n|j                  d«      }d}d}|j                  \  }}	d||	||t        j                  xr dxs dfz  g}
 t        |d«      r|j                  n|j                  «       }||z  |z  dz   dz	  }t        |«      ||	z  k(  sJ d«       ‚|j!                  |«      }t        j                  rt#        |«      }t%        j&                  ||
«       |
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‰xˆBØ�G‰G�AŒJØ×&Ñ& rÓ*Ð*ØˆŒàˆà�:‰:˜ÒØˆGØ%ˆJØ‰CØ�Z‰Z˜3ÒØˆGØ%ˆJØˆCØ‰CØ�Z‰Z˜3ÒØˆGØ%ˆJØ‰Cà—m‘m EÓ*ˆGØˆJØˆCØ%Ÿl™lÑˆ�)ð BÀXÈyÐZ]Ð_iÔkt×k{Ñk{ò  lHð  AHò  lNð  LNð  EOñ  Oð  Pˆ	ð S¤'¨'°)Ô"<ˆw�ŠÀ'×BRÑBRÓUˆØ˜c‘\ #Ñ% aÑ'¨!Ñ+ˆ	Ü�3‹x˜9 YÑ.Ò.ÐPÐ0PÓPÐ.Ø�}‰}˜SÓ!ˆÜ×ÒÜ$ TÓ*ˆDä×Ñ˜$˜yÔ)Ø×Ñ˜ÔØ˜8 YÐ/Ð/r   c                 óÒ   — | j                   st        j                  |d¬«      }n| j                  «       }|d   j	                  «       }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„   sd   € Ø× Ò Ü ×/Ñ/°ÀQÔG‰Ià×,Ñ,Ó.ˆIØ˜!‘×"Ñ"Ó$ˆÜ�u˜Q‘x“=ˆÜ˜˜a™“Mˆ	Ø˜( IÐ-Ð-r   c                 ó¾  — | j                   }t        |«      rW|| _        t        j                  j                  |«      d   dv r	 | j                  «       \  }}}n*| j                  |«      \  }}}n| j                  «       \  }}}|| _	        || _
        || _        | j                  xs || _        | j                  xs || _        y#  | j                  |«      \  }}}Y ŒYxY w)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Ó   € à—
‘
ˆä�Œ<Ø!ˆDŒMÜ�w‰w×Ñ Ó& qÑ)Ð-OÑOðSØ59×5GÑ5GÓ5IÑ2�I˜x©ð 26×1GÑ1GÈÓ1NÑ.�	˜8¡Yà-1×-?Ñ-?Ó-AÑ*ˆI�x Ø"ˆŒØ ˆŒØ"ˆŒØ—Z‘ZÒ+ 8ˆŒ
Ø—k‘kÒ. Yˆ�øðSØ59×5KÑ5KÈEÓ5RÑ2�I˜xªús   ÁC ÃCc                 óÐ  — | j                   }| j                  }|dk  s|dk  ryt        ||| j                  | j                  ||| j
                  | j                  |«	      \  }	}
| _         | _        }|j                  s|
|z   }
|j                  j                  dt        | j                   «      ›dt        | j                  |	|
«      ›d�«       | j                   }| j                  }| j                  D ]  }|j                  j                  |«       Œ |j                  j                  d«       |r|j                  ||	|
||«       |r%|j                  «       D ]  }t        «       |   ||<   Œ y)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£   sO  € ð —
‘
ˆØ—‘ˆØ�Š:˜ š¨UÜ-;Ð<OÐPVÐW[×W]ÑW]Ð^b×^dÑ^dÐejÐkqÐrv×rÑrð  AE÷  AOñ  AOð  PZó  .[Ñ*ˆˆ!ˆDŒJ�t”{ Fà�Š A f¡H Ø�‰×Ò´°t·z±zÕ0BÄFÈ4Ï;É;ÐXYÐ[\ÕD]Ð^Ô_Ø—
‘
ˆØ—‘ˆà—N‘Nò 	&ˆDØ�L‰L×Ñ Õ%ð	&à�‰×Ñ˜CÔ ÙØ×Ñ ¨Q¨q°°vÔ>ÙØ ×%Ñ%Ó'ò +�Ü!%£¨¡�˜A’ð+àr   c                 óZ  — t        j                  «       }d|d<   d|d<   | j                  |d<   | j                  |d<   d|d<   t        j                  | j
                  «      |d	<   d
j                  | j                  dd «      d
z   }t        j                  ||¬«      }|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©OÓ<ˆˆ\ÑØ—)‘)˜DŸN™N¨1¨RÐ0Ó1°DÑ8ˆÜ×Ñ¨4¸ÔAˆØ�{‰{˜8Ó$Ð$r   )NNr   )F)FÚswFFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r'   r#   rJ   rb   rh   r   r{   rU   © 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’   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÷w%ñ w%ðr ˆZÒØ�g‰g�l‰lØ—‘—‘ 	× 2Ñ 2Ó3ØØ#ó€Gð
 �7‰7�>‰>˜'Ô"Ð5Ð$5Ó5Ð"Ø€FÔÙ
�7˜C Ó
%€CØ
ˆ&×
Ñ
Ó
€CÙ	ˆ)�C—J‘JÔÙ	ˆ#�*‰*�S‹/Õð r   