
    hn                       S SK Jr  S SKJrJr   " S S\5      rSr\" S5      r\" S5      r	\" S5      r
\" S	5      r\" S
5      r\" S5      r\" S5      rSrSS jr/ SQrSS jrSS jrSS jrSS jrSS jrSSS jjr S        S!S jjrg)"    )annotations)
NamedTupleSequencec                  *    \ rS rSr% S\S'   S\S'   Srg)Command   strnamezSequence[bytes]args N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       N/var/www/html/env/lib/python3.13/site-packages/ezdxf/addons/hpgl2/tokenizer.pyr   r      s    
I
r   r      ;%-"ABZ   c                     X   [         :w  a  gXS-      [        :w  a  gSnXS-      [        :X  a  US-  nSnSXS-      s=:  a  S:  a  O  gXS-      [        :X  a  U$ g! [         a     gf = f)	Nr               /   4   r   )ESCAPEPERCENTMINUSCHAR_B
IndexError)silengths      r   #get_enter_hpgl2_mode_command_lengthr-   !   s    46>U8wU8uFAFa%2 	 #$E(f"4M   s!   A A ,A A 
A+*A+)s   BPINs   BP;INs   INPSs   IN;PSs   INDFs   IN;DFc                N    [          H  nU R                  U5      (       d  M    g   g)NTF)KNOWN_START_SEQUENCES
startswith)bstart_sequences     r   has_known_start_sequencer3   6   s#    /<<'' 0 r   c                      U R                  SU5      n[        X5      nU(       a  X#-   $ US-  nM0  ! [         a    [        U 5      s $ f = f)Ns   %r!   )index
ValueErrorlenr-   )r*   startr5   r,   s       r   find_hpgl2_entry_pointr9   =   sY    
	GGE5)E 5Q>>!
   	q6M	s   2 A
	A
c                   ^ ^^	^
^ [         mSU	U
U 4S jjnSU
U 4S jjm	SUU4S jjn/ m[        T 5      m
[        T 5      (       a  SnO[        T S5      nUT
:  a  T U   nUnU[        :X  a  [        T U5      nM%  US::  a  US-  nM2  US-   nUT
:  a  U" T US 5         T$ T XV nUS	:X  a  T	" U[
        5      nUS-  nOUS
:X  a
  T	" UT5      nOU" U5      nU" T XS 5        UT
:  a  T U   [
        :X  a  US-  nUT
:  a  M  T$ )a   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                   > U T:  a[  TU    nU[         :X  a  T" U S-   [         5      n O.[        Us=::  a
  [        ::  d  O  U[        :X  d
  U[        :X  a   U $ U S-  n U T:  a  M[  U $ Nr   )
QUOTE_CHARCHAR_ACHAR_Z	SEMICOLONr%   )r+   c	find_markr,   r*   s     r   find_terminator'hpgl2_commands.<locals>.find_terminatorU   sf    &j!AJa!eZ0A''ANa6k FA &j r   c                X   > U T:  a  TU    U:w  a  U S-  n U T:  a  TU    U:w  a  M  U S-   $ r<   r   )r+   markr,   r*   s     r   rB   !hpgl2_commands.<locals>.find_mark_   s9    &jQqTT\FA &jQqTT\1ur   c                   > U S S S:X  a  [        U 5      S:  a  U S   mg [        mg TR                  [        U 5      5        g )Nr!   s   DT)r7   DEFAULT_TEXT_TERMINATORappendmake_command)r1   commandstext_terminators    r   append_command&hpgl2_commands.<locals>.append_commandd   s9    Ra5E>1vz"#A$"9OOLO,r   r       r   r!   Ns   PEs   LB)r+   intreturnrQ   )r+   rQ   rF   rQ   rR   rQ   )r1   bytesrR   None)rI   r7   r3   r9   r%   r@   )r*   rC   rN   r5   charr8   index_plus_2commandrL   rB   r,   rM   s   `       @@@@r   hpgl2_commandsrX   I   s?    .O  
- - !HVF""&q!,
&.x6> +1e4E2:QJEqy6!1UV9%" O E'elI6EQJElO<E $L1Eq~&6>ah)3QJEC &.D Or   c                "   U (       d  [        S[        5       5      $ U S S R                  5       nUS:X  a(  [        U SS   Vs/ s H  o"S:  d  M
  UPM     sn5      4nO$[        S U SS  R	                  S5       5       5      n[        X5      $ s  snf )NNOOPr!   PErP   c              3  $   #    U  H  ov   M     g 7f)Nr   ).0r*   s     r   	<genexpr>make_command.<locals>.<genexpr>   s     4 31Q 3s      ,)r   tupledecoderS   split)cmdr
   rA   r   s       r   rK   rK      s    vuw''r7>>Dt|#ab'4'QVq'4574ABd 3444 5s   	BBc                    [        U S-  5      $ )Ngp=
ף
@)round)decimal_placess    r   fractional_bitsrh      s    $&''r   c                j   U(       a  U SU-  -  n [        U 5      nO[        U 5      nUS:  a  US-  nO[        U5      S-  S-   n[        5       nX2:  a(  [        X25      u  p5UR	                  SU-   5        X2:  a  M(  US:X  a  UR	                  SU-   5        OUR	                  SU-   5        [        U5      $ )Nr   r   r!   ?   @      _   )rf   abs	bytearraydivmodrJ   rS   )value	frac_bitsbasexcharsrs         r   	pe_encoderw      s    i%L%LAv	QFQJNKE
)aR!V ) rzS1WR!V<r   c                  ^^ UU4S jnSU-  nTS:X  a  SnOSn/ n/ m[        U[        U 5      5       H}  nX   n	U	S:  a  Xx4s  $ X:  aR  TR                  X-
  5        U" 5       n
U(       a  UR                  X-  5        MM  UR                  [        U
5      5        Mi  TR                  U	S-
  5        M     U[        U 5      4$ )Nc                    > TR                  5         Sn T H  nU T-  U-   n M     TR                  5         U S-  (       a  U S-
  * n U S-	  n U $ )Nr   r   )reverseclear)rt   frs   factorss     r   _decodepe_decode.<locals>._decode   sR    AD1A q5a%AFr   r   rk   rl   rm   rj   )ranger7   rJ   float)r*   rr   rs   r8   r~   n
terminatorvaluesr5   rq   rt   r}   s     `        @r   	pe_decoder      s    	 	
YArz

FGuc!f%2:= NN5-.	Aae$eAh'NN52:& & 3q6>r   N)r*   rS   r+   rQ   rR   rQ   )r1   rS   rR   bool)r*   rS   r8   rQ   rR   rQ   )r*   rS   rR   zlist[Command])rd   rS   rR   r   )rg   rQ   rR   rQ   )r   rk   )rq   r   rr   rQ   rs   rQ   rR   rS   )r   rk   r   )r*   rS   rr   rQ   r8   rQ   rR   ztuple[list[float], int])
__future__r   typingr   r   r   r%   ordr@   r&   r'   r=   r>   r(   r?   rI   r-   r/   r3   r9   rX   rK   rh   rw   r   r   r   r   <module>r      s    # 'j 
 
H	
c(CX
	S	S	S $ R 	M`(. 9:"""25""r   