U
    ͔`                     @   st   d dl mZmZmZmZ dd Zdd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )    )alig_locationformat_info_strversion_info_strlindexc                    s   | d d d   fddt  D }t| t| | t| t| | dd |D }t|| t||\}}t| ||| |S )N         c                    s   g | ]}d g  qS N .0iZnumr
   4/tmp/photos/amazing-qr-master/amzqr/mylibs/matrix.py
<listcomp>   s     z get_qrmatrix.<locals>.<listcomp>c                 S   s   g | ]}|d d  qS r	   r
   r   r
   r
   r   r      s     )rangeadd_finder_and_separatoradd_alignment
add_timingadd_dark_and_reserving
place_bitsmaskadd_format_and_version_string)vereclbitsqrmatrixZ
maskmatrixmask_numr
   r   r   get_qrmatrix   s    


r   c                 C   s&  t dD ]}t dD ]}|dkrb|dkr0dnd | | |<  | | d  |< | | | d < q|dkr|dkrvdnd | | |<  | | d  |< | | | d < q|dkrd | | |<  | | d  |< | | | d < q|dkrdnd | | |<  | | d  |< | | | d < qqd S )N   )r         r   r   )r      )r   r"   r!   r   )mr   jr
   r
   r   r   #   s    >>2r   c                 C   sH   | dkrDt | d  }|D ]*}|D ] }|| | d kr t||| q qd S )Nr      )r   add_an_alignment)r   r$   Zcoordinatesr   r%   r
   r
   r   r   /   s    r   c                 C   sx   t | d | d D ]T}t |d |d D ]<}|| d | d fksT||d |d fkrXdnd|| |< q(qd||  |< d S )Nr&      r   r   r#   )rowcolumnr$   r   r%   r
   r
   r   r'   7   s    <r'   c                 C   sD   t dt| d D ],}|d dkr&dnd | | d< | d |< qd S )Nr   r&   r   r   r    r   len)r$   r   r
   r
   r   r   =   s    r   c                 C   s   t dD ]@}d |d |<  |d | d <  || d< || d  d< qd|d d< d |d d<  |d d< |d d< | dkrt dD ]&}dD ]}d || |< || |< qqd S )Nr   r   r   r    iiir#   )r   r$   r%   r   r
   r
   r   r   A   s    >$r   c                 C   s   dd | D }d}t t|d ddD ]~}|dkr:|d n|}|rVt t|d ddn
t t|}|D ]6}||d fD ]$}|| | d krvt||| |< qvqf| }q&d S )	Nc                 s   s   | ]}t |V  qd S r	   intr   r
   r
   r   	<genexpr>M   s     zplace_bits.<locals>.<genexpr>Tr   r   r    )r   r,   next)r   r$   ZbitZupaZiranger   r%   r
   r
   r   r   L   s    $r   c                 C   s   t | }g }|D ]V}tt|D ]6}tt|D ]$}|| | || | A || |< q0q |t| q|t|}||| fS r	   )get_mask_patternsr   r,   appendcompute_scoreindexmin)mmr$   mpsZscoresmpr   r%   Zbestr
   r
   r   r   Y   s    $r   c                 C   s   dd }d | d d< t t| D ]>}t t| D ],}| | | d k	rHdn
| | | | | |< q0q g }t dD ]l}dd | D }t t|D ]B}t t|D ]0}|| | d kr||||rdnd|| |< qq|| ql|S )	Nc                 S   s   | dkr|| d dkS | dkr,|d dkS | dkr@|d dkS | dkrX|| d dkS | dkrx|d |d  d dkS | dkr|| d || d  dkS | dkr|| d || d  d dkS | dkr|| d || d  d dkS d S )	Nr   r&   r   r(   r   r"   r    r!   r
   )r   r)   r*   r
   r
   r   formulae   s      z"get_mask_patterns.<locals>.formular-   r   r   c                 S   s   g | ]}|d d  qS r	   r
   )r   Ziir
   r
   r   r   }   s     z%get_mask_patterns.<locals>.<listcomp>r   )r   r,   r7   )r;   r>   r   r%   r<   r=   r)   r*   r
   r
   r   r6   d   s    ,0r6   c                 C   sD   dd }dd }dd }dd }|| ||  ||  ||  }|S )	Nc                 S   s&   dd }|| |t tt t|   S )Nc                 S   s   d}| D ]}d}|t |d k rd}|||| d  dg|d  dg|d  fkr^|d7 }q$|dkrz|| d || fn
||d f\}}qq|S )Nr   r   r   r&   r,   )mascmir%   nr
   r
   r   ev1   s    0
0z/compute_score.<locals>.evaluation1.<locals>.ev1listmapzip)r$   rD   r
   r
   r   evaluation1   s    
z"compute_score.<locals>.evaluation1c                 S   s   d}t t| d D ]x}t t| d D ]b}|| | | | |d  |   kr|| | |d    kr|| |d  |d  krn ndnd7 }q(q|S )Nr   r   r(   r+   )r$   rA   r   r%   r
   r
   r   evaluation2   s
    bz"compute_score.<locals>.evaluation2c                 S   s&   dd }|| |t tt t|   S )Nc                 S   s   d}| D ]}d}|t |d k r|||d  dddddddddddgkr\|d7 }|d7 }q|||d  dddddddddddgkr|d7 }|d7 }q|d7 }qq|S )Nr   
      r   (   r!   r   r?   )r@   rA   rB   r%   r
   r
   r   ev3   s    *
*
z/compute_score.<locals>.evaluation3.<locals>.ev3rE   )r$   rN   r
   r
   r   evaluation3   s    z"compute_score.<locals>.evaluation3c                 S   sZ   d}| D ]}|t |7 }q|t| d  d }td| d d }|dkrRd| S d| S )Nr   r&   d   2   r"   r2   )sumr,   r0   )r$   Zdarknumr   Zpercentsr
   r
   r   evaluation4   s    z"compute_score.<locals>.evaluation4r
   )r$   rI   rJ   rO   rT   Zscorer
   r
   r   r8      s     r8   c                 C   s"  dd t t|  | D }tdD ]N}||  |d |< || d  d< || d   |d | d < || d< q"|d  |d d< |d d< |d  |d d< |d d< |d  |d d< |d d< | dkrd	d
 t| d  D }tdddD ]*}dD ] }t| || |< || |< qqd S )Nc                 S   s   g | ]}t |qS r
   r/   r   r
   r
   r   r      s     z1add_format_and_version_string.<locals>.<listcomp>r    r   r   r!   ir-   c                 s   s   | ]}t |V  qd S r	   r/   r   r
   r
   r   r1      s     z0add_format_and_version_string.<locals>.<genexpr>r"   r3   r.   )r   r   r   r   r4   )r   r   r   r$   Zfsr%   Zvsr   r
   r
   r   r      s    "*
r   N)amzqr.mylibs.constantr   r   r   r   r   r   r   r'   r   r   r   r   r6   r8   r   r
   r
   r
   r   <module>   s   !1