
     hC#                         d dl Z d dlZd dlmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ  G d de          Z G d d	e          Zd
ededededee         f
dZdS )    N)ListOptional)	BaseImage)
PdfContent)rdc                   V    e Zd ZdZdZdZdZd Zd Zd Z	d Z
d	 Zd
 ZddZd Zd ZdS )PdfStreamQRImagezc
    Quick-and-dirty implementation of the Image interface required
    by the qrcode package.
    PDF)r
   )r   r   r   c                     g S N )selfkwargss     P/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/pyhanko/pdf_utils/qr.py	new_imagezPdfStreamQRImage.new_image   s    	    c                 >    | j                             ||f           d S r   )_imgappendr   rowcols      r   drawrectzPdfStreamQRImage.drawrect   s"    	#s$$$$$r   c                 :    |                     d||fz             d S )Ns   %g %g 1 1 re)r   r   command_streamr   r   s       r   append_single_rectz#PdfStreamQRImage.append_single_rect   s%    oc
:;;;;;r   c                 ,    d| j         z  d| j         z  z   S )Ns   %g %g %g rg
s   %g %g %g RG)qr_colorr   s    r   format_qr_colorz PdfStreamQRImage.format_qr_color   s      4=0T]*
 	
r   c                 6   t          | j        | j        z            }t          | j        | j        z            }t          | j                   dt          | j                    d| d||z    d}d|                                 |                    d          fz  S )N 0 0   cms   %s
%sascii)r   borderbox_sizewidthr!   encode)r   brdydiffcms       r   setup_drawing_areaz#PdfStreamQRImage.setup_drawing_area$   s     t},--4:-..4=!!SSDM):):(:SSSSS3;SSSD0022BIIg4F4FGGGr   c                     |                                  g}| j        D ]\  }}|                     |||           |                    d           d                    |          S )N   f   
)r.   r   r   r   joinr   s       r   render_command_streamz&PdfStreamQRImage.render_command_stream,   sl    11334	 	> 	>HC##NC====d###zz.)))r   Nc                     t           r   NotImplementedErrorr   streamkinds      r   savezPdfStreamQRImage.save4       !!r   c                     t           r   r5   r    s    r   processzPdfStreamQRImage.process7   r;   r   c                 .    |                      ||          S r   )r   )r   r   r   activecontexts        r   drawrect_contextz!PdfStreamQRImage.drawrect_context:   s    }}S#&&&r   r   )__name__
__module____qualname____doc__r9   allowed_kindsr   r   r   r   r!   r.   r3   r:   r=   rA   r   r   r   r	   r	      s         
 DMH  % % %< < <
 
 

H H H* * *" " " "" " "' ' ' ' 'r   r	   c                        e Zd ZdZdddee         f fdZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Z fdZ fdZ xZS )PdfFancyQRImageg?N)center_imagerI   c                \     t                      j        |||fi | || _        || _        d S r   )super__init___version_centerpiece)	r   r'   r)   r(   versionrI   _argsr   	__class__s	           r   rL   zPdfFancyQRImage.__init__A   s=     	;;F;;;(r   c                     t           r   r5   r7   s      r   r:   zPdfFancyQRImage.saveO   r;   r   c                     t           r   r5   r    s    r   r=   zPdfFancyQRImage.processR   r;   r   c                     |                      ||          rd S |                    t          ||dd                     d S )Ng?g333333?)is_position_patternextendrounded_squarer   s       r   r   z"PdfFancyQRImage.append_single_rectU   sG    ##C-- 	FnS#sC@@AAAAAr   c                 j    |dk     r|dk     p'|| j         dz
  k    o|dk     p|dk     o|| j         dz
  k    S )N      )r)   r   s      r   is_major_position_patternz)PdfFancyQRImage.is_major_position_patternZ   sO    1W q 4tzA~%2374a2S4:>1	
r   c              #      K   t           j                            | j                  }t	          j        ||          D ]"\  }}|                     ||          r||fV  #d S r   )qrcodeutilpattern_positionrM   	itertoolsproductr[   )r   adj_ptnsprpcs       r   _enumerate_alignment_patternsz-PdfFancyQRImage._enumerate_alignment_patternsa   ss      ;//>>'(;; 	 	FB --b"55 b&LLLL	 	r   c                     |                                rdS t          fd|                                 D                       S )NTc              3   v   K   | ]3\  }}t          |z
            d k    ot          |z
            d k    V  4dS )   N)abs).0rc   rd   r   r   s      r   	<genexpr>z6PdfFancyQRImage.is_position_pattern.<locals>.<genexpr>n   s^       
 
B bMMQ53sRx==A#5
 
 
 
 
 
r   )r[   anyre   r   s    ``r   rU   z#PdfFancyQRImage.is_position_patternj   sj    ))#s33 	4 
 
 
 
 
<<>>
 
 
 
 
 	
r   c           	      |   dg}| j         }|                    t          dddd                     |                    t          d|dz
  dd                     |                    t          |dz
  ddd                     |                                 D ]0\  }}|                    t          |dz
  |dz
  dd                     1|                    d	           |                    t          ddd
d                     |                    t          d|dz
  dz   d
d                     |                    t          |dz
  dz   dd
d                     |                                 D ]*\  }}|                    t          ||dd                     +|                    d           d                    |          S )Ns   q
1 0 0 1 0.5 0.5 cm
0.7 wr         rY   rh      gffffff?s   S
Q   g333333?g?r0   r1   )r)   rV   rW   re   r   r2   )r   r   szrc   rd   s        r   draw_position_patternsz&PdfFancyQRImage.draw_position_patternss   s    ::ZnQ1a88999nQQ1==>>>nR!VQ1==>>>88:: 	J 	JFB!!.aaC"H"HIIIIg&&& 	nQ1c::;;;nQQ
AsCCDDDnR!VaZAsCCDDD88:: 	B 	BFB!!.RC"@"@AAAAd###zz.)))r   c                    |                                  \  }}}| j        j        j        }| j        j        j        }ddg}|                    t          |||| j        |z                       |                    d           t          ||z            }t          ||z            }d}	t          d|	z
  |z  dz            }
t          d|	z
  |z  dz            }|                    ||	z   d| |	z   d||
|z  z    d||z   ||z  z
   d	
                    d
                     |                    | j                                                   |                    d           d                    |          S )N   q   0.2 ws   S
Q
qg333333?ro   rh   r#   r$   r%   r&      Qr1   )_measure_out_centerpiecerN   boxr)   heightrV   rW   centerpiece_corner_radiusr   r   r*   renderr2   )r   c_xc_yc_szc_wc_hcenterpiece_commandsx_scaley_scaleshrinkx_shifty_shifts               r   draw_centerpiecez PdfFancyQRImage.draw_centerpiece   s   6688S$#)#* !%h/##S$ > E 	
 	
 	

 	##J/// TCZ..TCZ..
 a&jC'!+,,a&jC'!+,,##  wh&7  Ww&& ),tg6G)G  &//	
 	
 	
 	##D$5$<$<$>$>???##D)))zz.///r   c                     d| j         z  }| j         |z
  dz  }| j         |z
  dz  }t          |          t          |          t          |          fS )NgQ?rh   )r)   r   )r   r   r}   r~   s       r   rx   z(PdfFancyQRImage._measure_out_centerpiece   sQ     dj zD A%zD A%#ww3D))r   c                    t                                                      }|g}| j        t          | j                  }|                    d           |                    d           |                    d| d| d| d| d	                    d                     |                                 \  }}}|                    t          |||| j
        |z                       |                    d           d	                    |          S )
Nru   rv   z0 0 m 0 z l r$   z 0 l hr&   s   W nr1   )rK   r.   rN   r   r)   r   r*   rx   rV   rW   r{   r2   )r   basic_setupcommandswr}   r~   r   rQ   s          r   r.   z"PdfFancyQRImage.setup_drawing_area   s   gg0022=( 4:AOOD!!!OOH%%%OO414444Q441444;;GDD   "::<<NCdOOdD$BT$I   
 OOF###zz(###r   c                    t                                                      |                                 g}| j        r<|                    d           |                    |                                            d                    |          S )Nrw   r1   )rK   r3   rs   rN   r   r   r2   )r   partsrQ   s     r   r3   z%PdfFancyQRImage.render_command_stream   sv    ..00$2M2M2O2OP 	2LLLL..00111zz%   r   r   )rB   rC   rD   r{   r   r   rL   r:   r=   r   r[   re   rU   rs   r   rx   r.   r3   __classcell__)rQ   s   @r   rH   rH   >   s#        # .2) ) ) z*) ) ) ) ) )" " " "" " "B B B

 
 
  
 
 
* * *.#0 #0 #0J* * *$ $ $ $ $4! ! ! ! ! ! ! ! !r   rH   x_posy_posrr   radreturnc                     dt          j        d          dz
  z  dz  |z  }g  fddt          ffdfd} ||d	d
            |||z
  d	d            ||z
  d	f||f||fgd            ||||z
  d            |||z
  f||z
  |f||z
  |fgd            |||d            ||fd	||z
  fd	||z
  fgd            |d	|d            d	|f|d	f|d	fgd                               d           S )a  
    Add a subpath of a square with rounded corners at the given position.
    Doesn't include any painting or clipping operations.

    The path is drawn counterclockwise.

    :param x_pos:
        The x-coordinate of the enveloping square's lower left corner.
    :param y_pos:
        The y-coordinate of the enveloping square's lower left corner.
    :param sz:
        The side length of the enveloping square.
    :param rad:
        The corner radius.

    :return:
        A list of graphics operators.
    rp   rh   ro   rq   c                     t          | z             }t          |z             }                    | d| d                    d                     d S )Nr$   r&   )r   r   r*   )xypxpyresultr   r   s       r   fmtzrounded_square.<locals>.fmt   sS    	]]	]]mmbmmm**73344444r   opcc                     | D ]\  }} ||                                |                    d                     d S )Nr&   )r   r*   )ptsr   r   r   r   r   s       r   opzrounded_square.<locals>.op   sK     	 	DAqC1IIIIcjj))*****r   c                 &     | |fg|           d S r   r   )r   r   r   r   s      r   uopzrounded_square.<locals>.uop   s!    
QF8Sr   r   mlc   h)mathsqrtstrr   )	r   r   rr   r   c_offr   r   r   r   s	   ``    @@@r   rW   rW      s   , $)A,,"#a'3.EF5 5 5 5 5 5 5
+S + + + + + + +
     CQCS!SBeQ"er3i0#666CBHcBR%Z2:r*R#XrN;SAAACRBae_q"s(m4c:::C3BE
UAJa)3///
MM$Mr   )r`   r   typingr   r   qrcode.utilr]   qrcode.image.baser   pyhanko.pdf_utils.contentr   pyhanko.pdf_utils.miscr   r	   rH   floatbytesrW   r   r   r   <module>r      s        ! ! ! ! ! ! ! !     ' ' ' ' ' ' 0 0 0 0 0 0 % % % % % %/' /' /' /' /'y /' /' /'dY! Y! Y! Y! Y!& Y! Y! Y!x111$)1051	%[1 1 1 1 1 1r   