
    Ogn                    
   d dl mZ d dlmZmZ  G d de      ZdZ ed      Z ed      Z	 ed      Z
 ed	      Z ed
      Z ed      Z ed      ZdZddZg dZddZddZddZddZddZdddZ	 d 	 	 	 	 	 	 	 d!dZy)"    )annotations)
NamedTupleSequencec                  "    e Zd ZU ded<   ded<   y)CommandstrnamezSequence[bytes]argsN)__name__
__module____qualname____annotations__     a/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/hpgl2/tokenizer.pyr   r      s    
I
r   r      ;%-"ABZ   c                    	 | |   t         k7  ry| |dz      t        k7  ryd}| |dz      t        k(  r|dz  }d}d| |dz      cxk  rdk  rn y| |dz      t        k(  r|S y# t        $ r Y yw xY w)	Nr               /   4   r   )ESCAPEPERCENTMINUSCHAR_B
IndexError)silengths      r   #get_enter_hpgl2_mode_command_lengthr*   !   s    Q46>QU8wQU8uFAF!a%2 	 #$AE(f"4M   s!   A A +A A 	A)(A))s   BPINs   BP;INs   INPSs   IN;PSs   INDFs   IN;DFc                @    t         D ]  }| j                  |      s y y)NTF)KNOWN_START_SEQUENCES
startswith)bstart_sequences     r   has_known_start_sequencer0   6   s%    / <<' r   c                    	 	 | j                  d|      }t        | |      }|r||z   S |dz  },# t        $ r t        |       cY S w xY w)Ns   %r   )index
ValueErrorlenr*   )r'   startr2   r)   s       r   find_hpgl2_entry_pointr6   =   s]    
	GGE5)E 5Q>6>!
   	q6M	s   . AAc                   	
 t         d	
 fd}d
 fd	dfd}g t               
t               rd}nt         d      }|
k  r |   }|}|t        k(  rt         |      }"|dk  r|dz  }-|dz   }|
k\  r | |d        	 S  || }|d	k(  r 	|t
              }|dz  }n|d
k(  r
 	|      }n ||      } | ||        |
k  r |   t
        k(  r|dz  }|
k  rS )a4  Low level plot file parser, extracts the HPGL/2 from the byte stream `b`.

    .. Important::

        This parser expects the "Enter HPGL/2 mode" escape sequence to recognize
        HPGL/2 commands. The sequence looks like this: ``[ESC]%1B``, multiple variants
        of this sequence are supported.

    c                    | k  rT|    }|t         k(  r | dz   t               } n*t        |cxk  r	t        k  sn |t        k(  s	|t        k(  r	 | S | dz  } | k  rT| S Nr   )
QUOTE_CHARCHAR_ACHAR_Z	SEMICOLONr"   )r(   c	find_markr)   r'   s     r   find_terminatorz'hpgl2_commands.<locals>.find_terminatorU   sf    &j!AJa!eZ0A''ANa6k FA &j r   c                N    | k  r|    |k7  r| dz  } | k  r	|    |k7  r| dz   S r9   r   )r(   markr)   r'   s     r   r?   z!hpgl2_commands.<locals>.find_mark_   s9    &jQqTT\FA &jQqTT\1ur   c                    | d d dk(  rt        |       dkD  r| d   y t        y j                  t        |              y )Nr   s   DT)r4   DEFAULT_TEXT_TERMINATORappendmake_command)r.   commandstext_terminators    r   append_commandz&hpgl2_commands.<locals>.append_commandd   s9    Ra5E>1vz"#A$"9OOLO,r   r       r   r   Ns   PEs   LB)r(   intreturnrK   )r(   rK   rB   rK   rL   rK   )r.   bytesrL   None)rD   r4   r0   r6   r"   r=   )r'   r@   rI   r2   charr5   index_plus_2commandrG   r?   r)   rH   s   `       @@@@r   hpgl2_commandsrR   I   s1    .O
- !HVF"&q!,
&.x6> +1e4E2:QJEqy6!1UV9%" O E,'elI6EQJElO<E $L1Equ~&6>ah)3QJEC &.D Or   c                   | st        dt                     S | d d j                         }|dk(  r$t        | dd  D cg c]
  }|dkD  s	| c}      f}n$t        d | dd  j	                  d      D              }t        ||      S c c}w )NNOOPr   PErJ   c              3      K   | ]  }|  y w)Nr   ).0r'   s     r   	<genexpr>zmake_command.<locals>.<genexpr>   s     41Q4s      ,)r   tupledecoderM   split)cmdr	   r>   r
   s       r   rF   rF      s    vuw''r7>>Dt|#ab'4QQVq4574ABd 3444 5s   
BBc                    t        | dz        S )Ngp=
ף
@)round)decimal_placess    r   fractional_bitsra      s    $&''r   c                r   |r| d|z  z  } t        |       }nt        |       }|dk\  r|dz  }nt        |      dz  dz   }t               }||k\  r)t        ||      \  }}|j	                  d|z          ||k\  r)|dk(  r|j	                  d|z          t        |      S |j	                  d|z          t        |      S )Nr   r   r   ?   @      _   )r_   abs	bytearraydivmodrE   rM   )value	frac_bitsbasexcharsrs         r   	pe_encoderp      s    i%L%LAv	QFQJNKE
t)a1R!V t) rzS1W < 	R!V<r   c                r   fd}d|z  }dk(  rd}nd}g }g t        |t        |             D ]x  }| |   }	|	dk  r||fc S |	|k\  rMj                  |	|z
          |       }
|r|j                  |
|z         J|j                  t        |
             ej                  |	dz
         z |t        |       fS )Nc                     j                          d} D ]
  }| z  |z   }  j                          | dz  r| dz
   } | dz	  } | S )Nr   r   )reverseclear)rm   frl   factorss     r   _decodezpe_decode.<locals>._decode   sW     	AD1A	q5a%AFr   r   rd   re   rf   rc   )ranger4   rE   float)r'   rk   rl   r5   rw   n
terminatorvaluesr2   rj   rm   rv   s     `        @r   	pe_decoder}      s    	 	
YArz

FGuc!f% '%2:5= JNN5:-.	Aa!e$eAh'NN52:&' 3q6>r   N)r'   rM   r(   rK   rL   rK   )r.   rM   rL   bool)r'   rM   r5   rK   rL   rK   )r'   rM   rL   zlist[Command])r]   rM   rL   r   )r`   rK   rL   rK   )r   rd   )rj   ry   rk   rK   rl   rK   rL   rM   )r   rd   r   )r'   rM   rk   rK   r5   rK   rL   ztuple[list[float], int])
__future__r   typingr   r   r   r"   ordr=   r#   r$   r:   r;   r%   r<   rD   r*   r,   r0   r6   rR   rF   ra   rp   r}   r   r   r   <module>r      s    # 'j 
 
H	
c(CX
	S	S	S $ R 	M`(. 9:"""25""r   