
    h                       S SK Jr  S SKJrJrJrJrJrJrJ	r	  S SK
r
S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJrJrJr  S SKJr  S S	KJrJrJrJrJrJrJ r J!r!J"r"  S S
K#J$r$  S SK%r%\(       a"  S SK&J'r'  S SK(J)r)  S SK*J+r+  S SK#J,r,J-r-J.r.J/r/J0r0J1r1  \%Rd                  " S5      r3Sr4 " S S\55      r6 S+       S,S jjr7  S+         S-S jjr8S.S jr9S.S jr:S.S jr;S.S jr<S.S jr=S.S jr>S.S jr?S.S jr@\:S4\;S4\<S4\=S4\>S4\?S4S.rA          S/S  jrB        S0S! jrC " S" S#\5      rD " S$ S%5      rE " S& S'\E5      rFS1S( jrGS2S) jrHS3S* jrIg)4    )annotations)TYPE_CHECKINGOptionalIterableIteratorcastSequenceAnyN)IntEnum)repeat)const)bytes_to_hexstr
ByteStream	BitStream)colors)	Vec3Vec2Matrix44Z_AXISConstructionCircleConstructionArcOCSUCSX_AXIS)factory)Drawing)Tags)AbstractTagWriter)
DXFGraphicPolymeshPolyfacePolylineHatch
LWPolylineezdxf   c                      \ rS rSrSrg)ProxyGraphicError5    N)__name__
__module____qualname____firstlineno____static_attributes__r*       D/var/www/html/env/lib/python3.13/site-packages/ezdxf/proxygraphic.pyr(   r(   5   s    r0   r(   c                    U R                  X4S9 Vs/ s H!  nUR                  U:X  d  M  UR                  PM#     nn[        U5      (       a  SR	                  U5      $ S $ s  snf )N)codesr0   )pop_tagscodevaluelenjoin)tagslength_code	data_codetagbinary_datas        r1   load_proxy_graphicr>   9   si    
 =='?=@@C88y  			@  
 %($4$4388K >$>s
   A A c                   UR                   [        R                  :  d   e[        U 5      nUS:X  a  g UR	                  X$5        SnXT:  a6  [        XU[        -    5      nUR	                  X65        U[        -  nXT:  a  M5  g g )Nr   )
dxfversionr   DXF12r7   
write_tag2r   
CHUNK_SIZE)data	tagwriterr:   r;   lengthindexhex_strs          r1   export_proxy_graphicrI   D   sz     %++---YF{-E
.!$uz/A"BCY0 .r0   c                    [        U S-  5      $ )Ni  boolflagss    r1   has_prim_traitsrO   Y       r0   c                    [        U S-  5      $ )N   rK   rM   s    r1   prims_have_colorsrS   ]   rP   r0   c                    [        U S-  5      $ )N   rK   rM   s    r1   prims_have_layersrV   a   rP   r0   c                    [        U S-  5      $ )N   rK   rM   s    r1   prims_have_linetypesrY   e   rP   r0   c                    [        U S-  5      $ )N    rK   rM   s    r1   prims_have_markersr\   i   rP   r0   c                    [        U S-  5      $ )N@   rK   rM   s    r1   prims_have_visibilitiesr_   m   rP   r0   c                    [        U S-  5      $ )N   rK   rM   s    r1   prims_have_normalsrb   q   rP   r0   c                    [        U S-  5      $ )N   rK   rM   s    r1   prims_have_orientationre   u   rP   r0   RL3RD)r   layers	linetypesmarkersvisibilitiesnormalsc                   ^ ^ U U4S jnU U4S jn[        5       nU HH  n[        U   u  pU" U5      (       d  M  U	S:X  a  U" 5       Xg'   M.  U	S:X  a  U" 5       Xg'   M?  [        U	5      e   U$ )Nc                 b   > [        T5       V s/ s H  n TR                  5       PM     sn $ s  sn f N)range	read_long_bscounts    r1   read_float_list)read_prim_traits.<locals>.read_float_list   s%    (-e51555s   ,c                 t   > [        T5       V s/ s H  n [        TR                  5       5      PM     sn $ s  sn f ro   )rp   r   read_vertexrr   s    r1   read_vertices'read_prim_traits.<locals>.read_vertices   s+    05e=1R^^%&===s   #5rg   rf   )dictTRAIT_TESTER	TypeError)
rt   types
prim_flagsru   rv   rz   rD   t
test_trait	data_types
   `  `      r1   read_prim_traitsr      sl    6> 6D ,Q
j!!E!'/d")+	**  Kr0   c                <   [        5       nU R                  5       n[        U5      (       a  [        U / SQUU5      US'   U R                  5       n[        U5      (       a  [        U / SQUU5      US'   US:  a  U R                  5       n[        U5      (       a  [        5       n[	        U5      (       a6  [        U5       V	s/ s H  n	[        U R                  5       5      PM     sn	US'   [        U5      (       a  [        U R                  5       5      US'   XS'   U$ s  sn	f )	N)r   rh   ri   rj   rk   edges)r   rh   rj   rl   rk   facesr   rl   orientationvertices)
r|   rq   rO   r   rb   rp   r   ry   re   rL   )
rt   
edge_count
face_countvertex_counttraits
edge_flags
face_flagsvertex_flagsr   rs   s
             r1   read_mesh_traitsr      s   * VFJz""*H	
w Jz""*F	
w a||~<((vH!,//49,4G'4GqD)*4G'# &l33*.r||~*>'!):M's   >#Dc                      \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S"r$S#r%S$r&S%r'S&r(S'r)S(r*S)r+g*)+ProxyGraphicTypes   rR   rU      rX               	   
                                                                  r[   !   "   #   $   %   &   ,   r*   N),r+   r,   r-   r.   EXTENTSCIRCLE	CIRCLE_3PCIRCULAR_ARCCIRCULAR_ARC_3PPOLYLINEPOLYGONMESHSHELLTEXTTEXT2XLINERAYATTRIBUTE_COLOR	UNUSED_15ATTRIBUTE_LAYER	UNUSED_17ATTRIBUTE_LINETYPEATTRIBUTE_MARKERATTRIBUTE_FILL	UNUSED_21ATTRIBUTE_TRUE_COLORATTRIBUTE_LINEWEIGHTATTRIBUTE_LTSCALEATTRIBUTE_THICKNESSATTRIBUTE_PLOT_STYLE_NAME	PUSH_CLIPPOP_CLIPPUSH_MATRIXPUSH_MATRIX2
POP_MATRIXPOLYLINE_WITH_NORMALS
LWPOLYLINEATTRIBUTE_MATERIALATTRIBUTE_MAPPERUNICODE_TEXT
UNKNOWN_37UNICODE_TEXT2ELLIPTIC_ARCr/   r*   r0   r1   r   r      s    GFILOHGDEDEE
COIOINI "IHKLJJLJMLr0   r   c                     \ rS rSr S0\R
                  S.   S1S jjjrS2S jrS3S jrS3S jr	S4S jr
S5S	 jrS5S
 jrS rS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS5S jrS rS\S.S6S jjrS5S jrS5S jr S5S  jr!S5S! jr"S5S" jr#S5S# jr$S5S$ jr%S5S% jr&S7S8S& jjr'S5S' jr(S5S( jr)S5S) jr*S5S* jr+S9S+ jr,S:S, jr-\.S7S;S- jj5       r/S<S. jr0S/r1g)=ProxyGraphic   N)r@   c                  X l         [        R                  U l        Xl        SU l        U(       a  UR                  OUU l        U R                  [        R                  :  a  SOSU l	        [        R                  U l        SU l        SU l        SU l        SU l        S U l        [        R"                  U l        SU l        S	U l        / U l        / U l        [/        5       U l        [3        5       U l        / U l        U R                   (       a  [9        S
 U R                   R*                   5       5      U l        [9        S U R                   R,                   5       5      U l        U R                   R:                   Vs0 s H-  oDR<                  R>                  UR<                  R@                  _M/     snU l        U R                   R                  U l	        g g s  snf )Nr   cp1252zutf-80BYLAYERr   F      ?        c              3  L   #    U  H  oR                   R                  v   M     g 7fro   dxfname).0layers     r1   	<genexpr>(ProxyGraphic.__init__.<locals>.<genexpr>  s     L;K%yy~~;K   "$c              3  L   #    U  H  oR                   R                  v   M     g 7fro   r   )r   linetypes     r1   r   r     s     !XDW,,"3"3DWr   )!_docr   new_factory_buffer_indexr@   r   DXF2007encodingr   colorr   r   marker_indexfill
true_colorLINEWEIGHT_DEFAULT
lineweightltscale	thicknessrh   ri   r|   
textstylessetrequired_fontsmatricesliststylesr   fontr   )selfrD   docr@   styles        r1   __init__ProxyGraphic.__init__   sN    	",/#..Z)-5==)HXg--

&!"	)-$77! #!#$&*.&(+(*99L499;K;KLLDK!!XDIIDWDW!XXDN<@II<L<L<L5				.<LDO !II..DM s   74Gc              #  ,  #    U R                   nU R                  nU[        U5      :  aT  [        R                  " SU R                  US9u  p4 [        U5      R                  nXU4v   X-  nU[        U5      :  a  MS  g g ! [         a    SU 3n N.f = f7f)N<2LoffsetUNKNOWN_TYPE_)r   r   r7   structunpack_fromr   r   
ValueError)r	  rG   buffersizetype_r   s         r1   infoProxyGraphic.info  s     c&k! ,,UDLLOKD/(/44 t##ME c&k!  /&ug./s0   A
BA? "B=B?BBBBc                "    U R                  5       $ ro   )__virtual_entities__r	  s    r1   virtual_entitiesProxyGraphic.virtual_entities*  s    ((**r0   c              #     #     U R                  5        Sh  vN   g N! [         a  n[        S[        U5       35      eSnAff = f7f)z0Implements the SupportsVirtualEntities protocol.NzProxy graphic error: )unsafe_virtual_entities	Exceptionr(   str)r	  es     r1   r  !ProxyGraphic.__virtual_entities__-  sE     	F33555 	F#&;CF8$DEE	Fs0   A  A 
AA  AAc              #    ^ #    U 4S jnT R                   nT R                  nU[        U5      :  a  [        R                  " ST R                  US9u  pE [        U5      R                  R                  5       n[        T US 5      nU(       ac  U" T R                  US-   X$-    5      n[        U[        5      (       a  U H  n	U" U	5      v   M     OU(       a
  U" U5      v   U(       a  ST l        O[        R                  SU S35        X$-  nU[        U5      :  a  M  g g ! [         a!    [        R                  SU 35        X$-  n GM&  f = f7f)	Nc                f   > TR                   (       a  U R                  TR                   S   5      $ U $ )N)r  	transform)entityr	  s    r1   r)  7ProxyGraphic.unsafe_virtual_entities.<locals>.transform5  s)    }}''b(9::r0   r  r  zUnsupported Type Code: r   Fz!Unsupported feature ProxyGraphic.z())r   r   r7   r  r  r   r   lowerr  loggerdebuggetattr
isinstancetupler   )
r	  r)  rG   r  r  r  r   methodresultr*  s
   `         r1   r!  $ProxyGraphic.unsafe_virtual_entities4  s%    	 c&k! ,,UDLLOKD(/44::<
 T4.FUQY FGfe,,"('// #)#F++ %DI@bIJME) c&k!  6ug>?s1   AE#D 7B#EE&E	EE		Ec                    [         R                  " SU5      n[        U5      nUR                  5         U R                  R                  U5        g )Nz<16d)r  unpackr   	transposer  append)r	  rD   valuesms       r1   push_matrixProxyGraphic.push_matrixS  s7    vt,V	Qr0   c                \    U R                   (       a  U R                   R                  5         g g ro   )r  popr	  rD   s     r1   
pop_matrixProxyGraphic.pop_matrixY  s    ==MM r0   c                <    [         R                  U l        S U l        g ro   )r   r   r   r   r  s    r1   reset_colorsProxyGraphic.reset_colors]  s    ]]
r0   c                    U R                  5         [        R                  " SU5      S   U l        U R                  S:  d  U R                  S:  a  [        R
                  U l        g g )N<Lr      )rC  r  r6  r   r   r   r?  s     r1   attribute_colorProxyGraphic.attribute_colora  sK    ]]4.q1
::>TZZ#-DJ .r0   c                    U R                   (       aI  [        R                  " SU5      S   nU[        U R                  5      :  a  U R                  U   U l        g g g NrF  r   )r   r  r6  r7   rh   r   r	  rD   rG   s      r1   attribute_layerProxyGraphic.attribute_layerg  sI    99MM$-a0Es4;;''![[/
 ( r0   c                    U R                   (       a3  [        R                  " SU5      S   n U R                  US-      U l        g g ! [
         a    US:X  a	  SU l         g SU l         g f = f)NrF  r   rU   i  BYBLOCKr   )r   r  r6  ri   r   
IndexErrorrL  s      r1   attribute_linetypeProxyGraphic.attribute_linetypem  sb    99MM$-a0E. $uqy 9	 
  .E>$-DM$-DM	.s   A A)A)(A)c                B    [         R                  " SU5      S   U l        g rK  )r  r6  r   r?  s     r1   attribute_markerProxyGraphic.attribute_markery  s    "MM$5a8r0   c                T    [        [        R                  " SU5      S   5      U l        g rK  )rL   r  r6  r   r?  s     r1   attribute_fillProxyGraphic.attribute_fill|  s    tT2156	r0   c                    U R                  5         [        R                  " [        R                  " SU5      S   5      u  p#U[        R
                  :X  a  [        R                  " U5      U l        g X0l        g rK  )	rC  r   decode_raw_colorr  r6  COLOR_TYPE_RGBrgb2intr   r   )r	  rD   r5   r6   s       r1   attribute_true_color!ProxyGraphic.attribute_true_color  sS    --fmmD$.G.JK6((($nnU3DOJr0   c                    [         R                  " SU5      S   nU[        R                  :  a#  [	        US-
  [        R
                  5      U l        g X l        g )NrF  r   l        )r  r6  r   MAX_VALID_LINEWEIGHTmaxr   r   )r	  rD   lws      r1   attribute_lineweight!ProxyGraphic.attribute_lineweight  sC    ]]4&q)***!"{"2E4L4LMDO Or0   c                B    [         R                  " SU5      S   U l        g Nz<dr   )r  r6  r   r?  s     r1   attribute_ltscaleProxyGraphic.attribute_ltscale  s    }}T403r0   c                B    [         R                  " SU5      S   U l        g rg  )r  r6  r  r?  s     r1   attribute_thickness ProxyGraphic.attribute_thickness  s    tT215r0   c                ^   [        U5      nU R                  5       n[        UR                  5       5      nUR	                  5       US'   [        UR                  5       5      nXSS'   UR                  [        5      (       d  [        U5      nUR                  U5      nXCS'   U R                  SUS9$ )Nradius	extrusioncenterr   
dxfattribs)
r   _build_dxf_attribsr   ry   
read_floatiscloser   r   from_wcsr   )r	  rD   rt   attribsrp  normalocss          r1   circleProxyGraphic.circle  s    ))+bnn&'MMObnn&'%~~f%%
 f+C\\&)F"}}X'}::r0   c                X   [        U5      nU R                  5       n[        UR                  5       5      n[        UR                  5       5      n[        UR                  5       5      n[        R
                  " XEU5      nUR                  US'   UR                  US'   U R                  SUS9$ )Nrp  rn  r   rq  )	r   rs  r   ry   r   from_3prp  rn  r   )r	  rD   rt   rw  p1p2p3rz  s           r1   	circle_3pProxyGraphic.circle_3p  s    ))+".."#".."#".."##++BB7"MM"MM}}X'}::r0   c                   [        U5      nU R                  5       n[        UR                  5       5      nUR	                  5       US'   [        UR                  5       5      n[        UR                  5       5      nUR	                  5       nUR                  [        5      (       d  [        XeS9n[        U5      n	U	R                  UR                  [        5      5      R                  n
[        R                  " U5      nU	R                  UR                  U5      5      R                  nXSS'   U	R                  U5      nO%UR                  n
U
[        R                  " U5      -   nXCS'   XS'   XS'   U R!                  SUS9$ )	Nrn  )uxuzro  rp  start_angle	end_angleARCrq  )r   rs  r   ry   rt  ru  r   r   r   rv  to_wcsr   	angle_deg
from_anglemathdegreesr   )r	  rD   rt   rw  rp  rx  	start_vecsweep_angleucsry  r  end_vecr  s                r1   circular_arcProxyGraphic.circular_arc  s3   ))+bnn&'MMObnn&')*	mmo ~~f%%.Cf+C,,szz&'9:DDKook2GSZZ%89CCI#)K \\&)F#--K#dll;&??I"!,(}}Uw}77r0   c                   [        U5      nU R                  5       n[        UR                  5       5      n[        UR                  5       5      n[        UR                  5       5      n[        R
                  " XFU5      nUR                  US'   UR                  US'   UR                  US'   UR                  US'   U R                  SUS9$ )Nrp  rn  r  r  r  rq  )r   rs  r   ry   r   r}  rp  rn  r  r  r   )r	  rD   rt   rw  r~  r  r  arcs           r1   circular_arc_3pProxyGraphic.circular_arc_3p  s    ))+".."#".."#".."#%%bb1JJJJ!$"}}}}Uw}77r0   c                   [        U5      nU R                  5       n[        UR                  5       5      US'   [        UR                  5       5      nXCS'   UR	                  5       nUR	                  5       nXe-  US'   UR	                  5       nUR	                  5       nUR	                  5       n	[        U5      n
U
R                  [        R                  " X5      5      nXS'   XsS'   XS'   U R                  SUS9$ )	Nrp  ro  ratio
major_axisstart_param	end_paramELLIPSErq  )	r   rs  r   ry   rt  r   r  r  r   )r	  rD   rt   rw  ro  major_axis_lengthminor_axis_lengthr  r  major_axis_anglery  r  s               r1   elliptic_arcProxyGraphic.elliptic_arc  s    ))+ !12)*	(MMOMMO,@mmoMMO	==?)nZZ0@ TU
 *!,(}}Y7};;r0   c                    [        SU R                  SUS95      n[        U5      nUR                  R	                  [
        R                  " U5      SS9  U(       a  [        SSU5      UR                  l	        U$ )Nr#   HATCHrq  T)	is_closedr   )
r   r   _get_elevationpathsadd_polyline_pathr   generater   r   	elevation)r	  r   rw  hatchr  s        r1   _filled_polygonProxyGraphic._filled_polygon  sb    WdmmGmHI"8,	%%dmmH&=%N"&q!Y"7EIIr0   F)closerx  c                  U R                  5       n[        U5      nUS:X  d"  US:X  a4  US   R                  US   5      (       a  US   US'   U R                  SUS9$ [	        U5      (       d  [
        R                  US'   [        SU R                  S	US95      nUR                  U5        U(       a  UR                  5         UR                  5         U$ )
NrR   rU   r   locationPOINTrq  rN   r"   r   )rs  r7   ru  r   is_2d_polyliner   POLYLINE_3D_POLYLINEr   append_verticesr  
new_seqend)r	  r   r  rx  rw  ru   polylines          r1   	_polylineProxyGraphic._polyline  s     ))+HA:%1*!)<)<Xa[)I)I"*1+GJ==W===h''$99GG
DMM*M$QR  *NNr0   c                D    U R                  USS9u  p#U R                  X#S9$ )NTload_normal)rx  _load_verticesr  r	  rD   r   rx  s       r1   polyline_with_normals"ProxyGraphic.polyline_with_normals  s-      ..t.F~~h~66r0   c                H    U R                  USS9u  p#U R                  U5      $ )NFr  r  r  s       r1   r  ProxyGraphic.polyline  s+      ..t.G~~h''r0   c                    U R                  USS9u  p#U R                  (       a  U R                  X R                  5       5      $ U R	                  USS9$ )NFr  T)r  )r  r   r  rs  r  r  s       r1   polygonProxyGraphic.polygon  sN    ..t.G99''2I2I2KLL~~hd~33r0   c                   U R                  5       nSnSnSnSn[        U5      nUR                  5       nUR                  5       n	U	S-  (       a  UR	                  5       US'   U	S-  (       a  UR	                  5       US'   U	S-  (       a  UR	                  5       US'   U	S	-  (       a  [        UR	                  S
5      5      US'   U	S-  (       a  SnUR                  5       n
U
S::  a  g U	S-  (       a  UR                  5       nU R                  S:  a4  U	S-  (       a  UR                  5       nU	S-  (       a  UR                  5       nUR                  S5      /nUS   n[        U
S	-
  5       H;  nUR                  US   S9nUR                  US	   S9nX4nUR                  U5        M=     [        U5       Vs/ s H  oR	                  5       PM     nn[        U5       Vs/ s H  oR                  5       PM     nn[        U5       Vs/ s H"  oR	                  5       UR	                  5       4PM$     nn[        U5      S:X  a  [        [        SU
5      5      n[        U5      S:X  a  [        [        SU
5      5      n/ n[        UUU5       H)  u  nnnUR                  US   US	   US   US	   U45        M+     [!        SU R#                  SUS95      nUR%                  U5        UUl        U$ s  snf s  snf s  snf )Nr   FrX   const_widthr   r  rU   r  rR   r   ro  i   Tr   AC1024rd   r[   r(  )default)r   r   r$   r   rq  )rs  r   read_unsigned_longread_bit_shortread_bit_doubler   read_bit_longr@   read_raw_doublerp   read_bit_double_defaultr8  r7   r  r   zipr   r   
set_pointsclosed)r	  rD   rw  
num_bulgesnum_vertex_ids	num_widthr  rt   num_data_bytesflag
num_pointsr   
prev_pointrs   xybulges
vertex_idswidthspointsvwb
lwpolylines                           r1   r  ProxyGraphic.lwpolyline!  s   ))+
		t_ 335%%'!8%'%7%7%9GM"!8#%#5#5#7GK !8#%#5#5#7GK !8#'(:(:1(=#>GK #:I%%'
?"9))+J??h&d{!#!1!1!3by,,.	 02/A/A!/D.Eb\
zA~&A**:a=*AA**:a=*AAJOOJ'	 '
 >C:=NO=N113=NO=B>=R S=R!1!1!3=R
 SBG	BR-
BRQ!2#5#5#78BR 	 -
 v;!&J/0Fv;!&45F(*8VV4GAq!MM1Q41qtQqT156 5,lw(WX
f%%
 P S-
s   4K'K,)K1c                `   [         R                  S5        [        U5      nUR                  S5      u  p4US-
  U-  US-
  U-  -   nUS-
  US-
  -  nX4-  n[	        U5       Vs/ s H  n[        UR                  5       5      PM     n	n[        5       n
 [        X%USS9n
U
(       a   U R                  5       nX;S'   XKS'   [        R                  US	'   [        S
U R                  SUS95      nUR!                  U	5        U$ s  snf ! [        R                   a    [         R                  S5         Nf = f)Nz4Untested proxy graphic entity: MESH - Need examples!r  rR   r   r   z;Structure error while parsing traits for MESH proxy graphicm_countn_countrN   r    r   rq  )r-  warningr   read_structrp   r   ry   r|   r   r  errorrs  r   POLYLINE_3D_POLYMESHr   r   r  )r	  rD   rt   rowscolumnstotal_edge_counttotal_face_counttotal_vertex_countrs   r   r   rw  polymeshs                r1   meshProxyGraphic.mesh\  s8    	MNu- 1H/7Q;$2FF 1H15!^49:L4MN4MqD)*4MN	X%&6QF
  ))+!	$	 55
DMM*M$QR  *) O || 	XLLVW	Xs   !#C<D )D-,D-c                   [        U5      nU R                  5       n[        R                  US'   [	        SU R                  SUS95      nUR                  5       n[        U5       Vs/ s H  n[        UR                  5       5      PM     nnUR                  5       n/ n	Sn
SnSnX:  a~  [        UR                  5       5      nU
SU-   -  n
[        U5       Vs/ s H  obR                  5       PM     nnU Vs/ s H  oU   PM	     nnUS-  nX-  nU	R                  U5        X:  a  M~  [        5       n [        X,USS9nUR%                  U	5        U(       ah  UR'                  S	5      nU(       aP  UR'                  S
5      nU(       a8  ["        R)                  S5        [+        U[,        5      (       d   e[/        UU5        UR1                  5         U$ s  snf s  snf s  snf ! [        R                    a    ["        R!                  S5         Nf = f)NrN   r!   r   rq  r   rR   r  z<Structure error while parsing traits for SHELL proxy graphicr   r   zLUntested proxy graphic feature for SHELL: apply face colors - Need examples!)r   rs  r   POLYLINE_POLYFACEr   r   rq   rp   r   ry   absread_signed_longr8  r|   r   r  r  r-  append_facesgetr  r0  r  _apply_face_colorsoptimize)r	  rD   rt   rw  polyfacer  rs   r   face_entry_countr   
read_countr  r  r   face_indicesrG   facer   face_traitsface_colorss                       r1   shellProxyGraphic.shell~  s    ))+ 22
DMM*M$QR\\^49:L4MN4MqD)*4MN<<>
 ! !+R0023J!j.(J49*4EF4EqLLN4ELF1=>UOD>!*LL + 	Y%&6QF
 	e$ **W-K)ooh7NN= &k48888&x=G O G> || 	YLLWX	Ys$   &#GG5G1G )H	H	c                "    U R                  USS9$ )NFunicode_textr?  s     r1   textProxyGraphic.text  s    zz$z..r0   c                "    U R                  USS9$ )NTr  r	  r?  s     r1   unicode_textProxyGraphic.unicode_text  s    zz$z--r0   c           	        [        U5      n[        UR                  5       5      n[        UR                  5       5      n[        UR                  5       5      nUR                  S5      u  pxn	Sn
U(       a   UR	                  5       n
O UR                  U R                  5      n
U R                  5       nXLS'   XS'   X|S'   XS	'   UR                  US
'   [        R                  " U	5      US'   X\S'   U R                  SUS9$ ! [
         a+  n[        R                  S[        U5       35         S nANS nAff = f! [
         a8  n[        R                  SU R                   S[        U5       35         S nANS nAff = f)N<3d z"ProxyGraphic._text(unicode=True); z,ProxyGraphic._text(unicode=False); encoding=; insertr  heightwidthrotationobliquero  r   rq  )r   r   ry   r  read_padded_unicode_stringUnicodeDecodeErrorr-  r.  r#  read_padded_stringr   rs  r  r  r  r   )r	  rD   r  rt   start_pointrx  text_directionr  width_factoroblique_angler  r$  rw  s                r1   r
  ProxyGraphic._text  sb   2>>+,bnn&'bnn./.0nnU.C+mL446,,T]];
 ))+'"',66
!\\-8	%}}V}88# & LA#a&JKKL
 & B4==/QSTWXYTZS[\ s0   5C> D6 >
D3!D..D36
E8 .E33E8c           	        U R                   n[        U5      n[        UR                  5       5      n[        UR                  5       5      n[        UR                  5       5      nSn UR	                  US9nUR                  S5      u  pUR                  S5      u  nnnnUR                  S5      u  nnnnnSnSn UR	                  US9nUR	                  US9nU R                  5       nUUS'   UUS'   UUS'   UUS'   UR                  US'   [        R                  " U5      US'   U R                  UU5      US'   SU-  SU-  -   US'   UUS'   U R                  SUS9$ ! [
         a/  n[        R                  SU S[        U5       35         S nAGNS nAff = f! [
         a.  n[        R                  S	U S
[        U5       35         S nANS nAff = f)Nr  )r   z%ProxyGraphic.text2(); text; encoding=r  <2l<4d<5LTXT.SHXz'ProxyGraphic.text2(); fonts; encoding='z'; r  r  r  r  r  r  r  rU   rX   text_generation_flagro  r   rq  )r   r   r   ry   r  r  r-  r.  r#  r  rs  r  r  r  
_get_styler   )r	  rD   r   rt   r  rx  r  r  r$  ignore_length_of_stringrawr  r  r  tracking_percentageis_backwardsis_upside_downis_verticalis_underlineis_overlinefont_filenamebig_font_filenamerw  s                          r1   text2ProxyGraphic.text2  s   ==2>>+,bnn&'bnn./	W((((;D (*~~e'<$ NN5!	
 NN5!	
&!#	1181DM " 5 5x 5 H ))+'"',66
!\\-8	??=:KL*+l*:Q=O*O&'%}}V}88K " 	WLL@
"SQRVHUVV	W, " 	LL9(3s1vhO 	s0   &E :F 
F&$FF
G"$GGc                   [        U5      n[        UR                  5       5      n[        UR                  5       5      n[        UR                  5       5      nSn UR                  5       nUR                  S5      u  pUR                  S5      u  n
nnnUR                  S5      u  nnnnnUR                  S5      u  nnnnSnSnSn UR                  5       nUR                  5       nUR                  5       nU R                  5       nUUS	'   UUS
'   U
US'   UUS'   UR                  US'   [        R                  " U5      US'   U R                  UU5      US'   SU-  SU-  -   US'   UUS'   U R                  SUS9$ ! [         a,  n[
        R                  S[        U5       35         S nAGNBS nAff = f! [         a+  n[
        R                  S[        U5       35         S nANS nAff = f)Nr  z$ProxyGraphic.unicode_text2(); text; r"  r#  r$  z<4Lr%  z%ProxyGraphic.unicode_text2(); fonts; r  r  r  r  r  r  r  rU   rX   r&  ro  r   rq  )r   r   ry   r  r  r-  r.  r#  r  rs  r  r  r  r'  r   )r	  rD   rt   r  rx  r  r  r$  r(  
ignore_rawr  r  r  r*  r+  r,  r-  r.  r/  is_bold	is_italiccharsetpitch	type_facer0  r1  rw  s                              r1   unicode_text2ProxyGraphic.unicode_text2  s
   2>>+,bnn&'bnn./	J002D /1nnU.C+ NN5!	
 NN5!	
-/^^E-B*GU	&!#	K557I99;M " = = ? ))+'"',66
!\\-8	??=:KL*+l*:Q=O*O&'%}}V}88O " 	JLL?AxHII	J4 " 	KLL@QIJJ	Ks0   E; 0F4 ;
F1!F,,F14
G)>!G$$G)c                &    U R                  US5      $ )Nr   _xliner?  s     r1   xlineProxyGraphic.xline0  s    {{4))r0   c                &    U R                  US5      $ )Nr   r>  r?  s     r1   rayProxyGraphic.ray3  s    {{4''r0   c                   [         R                  S5        [        U5      nU R                  5       n[	        UR                  5       5      n[	        UR                  5       5      nXTS'   Xe-
  R                  5       US'   U R                  X$S9$ )Nz9Untested proxy graphic entity: RAY/XLINE - Need examples!startunit_vectorrq  )r-  r  r   rs  r   ry   	normalizer   )r	  rD   r  rt   rw  r  other_points          r1   r?  ProxyGraphic._xline6  sx    RS))+2>>+,2>>+,&"-";!F!F!H}}U}77r0   c                ^   U R                   R                  U5        XR                  ;   a  U R                  U   nU$ UnU R                  (       a^  U R                  R                  R                  U5      (       d4  U R                  R                  R                  XUS.S9  X0R                  U'   U$ )N)r  bigfontrq  )r  addr  r   r  	has_entryr   )r	  r  rL  r  s       r1   r'  ProxyGraphic._get_style@  s    %??"OOD)E  Eyy!1!1!;!;E!B!B		  $$w%G %  ).%r0   c                   [         n[        U 5      nUR                  5       nU(       a  US-  n/ nUS:  a6  UR                  [	        UR                  S5      5      5        US-  nUS:  a  M6  U(       a  UR                  5       nXR4$ )NrR   r   r  )r   r   rq   r8  r   r  r>  )rD   r  rx  rt   ru   r   s         r1   r  ProxyGraphic._load_verticesM  sy    QJE!aiOOD!678QJE ai \\^Fr0   c                   [        5       nU R                  S:w  a  U R                  US'   U R                  [        R                  :w  a  U R                  US'   U R
                  S:w  a  U R
                  US'   U R                  [        R                  :w  a  U R                  US'   U R                  S:w  a  U R                  US'   U R                  b  U R                  US	'   U$ )
Nr   r   r   r   r   r   r   r   r   )
r|   r   r   r   r   r   r   r   r   r   )r	  rw  s     r1   rs  ProxyGraphic._build_dxf_attribs\  s    "&&::#zzGG::&#zzGG==I%"&--GJ??e666$(OOGL!<<3!%GI??&$(OOGL!r0   )r   r   r   r   r   r@   r   r   r   rh   r   ri   r   r   r   r  r  r  r  r   ro   rD   bytesr
  zOptional[Drawing])returnzIterable[tuple[int, int, str]])rV  zIterator[DXFGraphic])rV  zIterable[DXFGraphic]rD   rU  )r   
list[Vec3])F)rD   rU  r  rL   )rD   rU  r  r#  )r  r#  rL  r#  rV  r#  )rD   rU  rV  ztuple[list[Vec3], Vec3])rV  zdict[str, Any])2r+   r,   r-   r.   r   DXF2000r  r  r  r  r!  r;  r@  rC  rH  rM  rR  rU  rX  r^  rd  rh  rk  rz  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r
  r2  r;  r@  rC  r?  r'  staticmethodr  rs  r/   r*   r0   r1   r   r      s   48!/HM!/!/ 1!/F
+F>  '0
.97!46;"	; 8D8<( 8=V $7(49v D,\/.9:.9`/9b*(8    r0   r   c                     ^  \ rS rSrSSU 4S jjjrS rS rSS jrSS jrS r	SS jr
SU 4S	 jjrSU 4S
 jjrSU 4S jjrSU 4S jjrSU 4S jjrSU 4S jjrSU 4S jjrSrU =r$ )ProxyGraphicDebuggerim  c                ^   > [         [        U ]  X5        Uc  [        R                  nX0l        g ro   )superr\  r  sysstdout_debug_stream)r	  rD   r
  debug_stream	__class__s       r1   r  ProxyGraphicDebugger.__init__n  s(    "D24=::L)r0   c                :   U R                  SSS9  U R                  S5        U R                  SS9  U R                  5        HH  nU R                  SUR                  5        35        U R                  SUR	                  5        S35        MJ     U R                  SS	9  g )
N=FcharnewlinezCreate virtual DXF entities:ri  z
  * z  * 
rh  )log_separatorlog_messager  dxftypegraphic_properties)r	  r*  s     r1   log_entities!ProxyGraphicDebugger.log_entitiest  s    U3785)++-Fvfnn&6%789tF$=$=$?#@CD . 	$r0   c           	         U R                  SSS9  U R                  S5        U R                  SS9  U R                  5        H   u  pnU R                  SU SU SU 35        M"     U R                  SS	9  g )
Nrf  Frg  zRaw proxy commands:rj  z	Command: z Index: z Size: rl  )rm  rn  r  )r	  rG   r  cmds       r1   log_commands!ProxyGraphicDebugger.log_commands}  s|    U3./5) $		EyXeWGD6JK !,$r0   c                ^    U R                  US-  5        U(       a  U R                  S5        g g )NO   r  )rn  )r	  rh  ri  s      r1   rm  "ProxyGraphicDebugger.log_separator  s*    #R  r0   c                *    [        XR                  S9  g )N)file)printra  )r	  msgs     r1   rn   ProxyGraphicDebugger.log_message  s    c**+r0   c                H    U R                  SU R                  5       -   5        g )Nz> )rn  	get_stater  s    r1   	log_stateProxyGraphicDebugger.log_state  s     001r0   c                    SU R                    SU R                   SU R                   SU R                   SU R                   SU R
                   SU R                   3$ )Nzly: 'z', clr: z, lt: z, lw: z, ltscale: z, rgb: z, fill: )r   r   r   r   r   r   r   r  s    r1   r  ProxyGraphicDebugger.get_state  s^    DJJ<x

|6$-- I??#;t||n =OO$HTYYK9	
r0   c                f   > U R                  S5        [        TU ]	  U5        U R                  5         g )NzCommand: set COLOR)rn  r^  rH  r  r	  rD   rc  s     r1   rH  $ProxyGraphicDebugger.attribute_color  )    -.%r0   c                f   > U R                  S5        [        TU ]	  U5        U R                  5         g )NzCommand: set LAYER)rn  r^  rM  r  r  s     r1   rM  $ProxyGraphicDebugger.attribute_layer  r  r0   c                f   > U R                  S5        [        TU ]	  U5        U R                  5         g )NzCommand: set LINETYPE)rn  r^  rR  r  r  s     r1   rR  'ProxyGraphicDebugger.attribute_linetype  s)    01"4(r0   c                f   > U R                  S5        [        TU ]	  U5        U R                  5         g )NzCommand: set TRUE-COLOR)rn  r^  r^  r  r  s     r1   r^  )ProxyGraphicDebugger.attribute_true_color  )    23$T*r0   c                f   > U R                  S5        [        TU ]	  U5        U R                  5         g )NzCommand: set LINEWEIGHT)rn  r^  rd  r  r  s     r1   rd  )ProxyGraphicDebugger.attribute_lineweight  r  r0   c                f   > U R                  S5        [        TU ]	  U5        U R                  5         g )NzCommand: set LTSCALE)rn  r^  rh  r  r  s     r1   rh  &ProxyGraphicDebugger.attribute_ltscale  s)    /0!$'r0   c                f   > U R                  S5        [        TU ]	  U5        U R                  5         g )NzCommand: set FILL)rn  r^  rX  r  r  s     r1   rX  #ProxyGraphicDebugger.attribute_fill  s)    ,-t$r0   )ra  )NNrT  )-T)r}  r#  )rV  r#  rW  )r+   r,   r-   r.   r  rq  ru  rm  rn  r  r  rH  rM  rR  r^  rd  rh  rX  r/   __classcell__)rc  s   @r1   r\  r\  m  sS    * *%%!
,2






 r0   r\  c                    [        U5      nUS:X  a  g SnU R                   H5  nUR                  (       d  M  X   UR                  l        US-  nX2:  d  M5    g    g )Nr   rR   )r7   r   is_face_recordr   r   )r  r   color_countrG   vertexs        r1   r  r    sW    6{KaE##   %}FJJQJE# $r0   c                0    U (       a  U S   R                   $ g)Nr   r   )z)r   s    r1   r  r    s    {}}r0   c                l   ^ [        U 5      S:  a  gU S   R                  m[        U4S jU  5       5      $ )NrR   Tr   c              3  f   >#    U  H&  n[         R                  " TUR                  5      v   M(     g 7fro   )r  ru  r  )r   r  r  s     r1   r   !is_2d_polyline.<locals>.<genexpr>  s#     6Xt||Aqss##Xs   .1)r7   r  all)r   r  s    @r1   r  r    s0    
8}qA6X666r0   )   i6  )r9   r   r:   intr;   r  rV  zOptional[bytes])
rD   rU  rE   r   r:   r  r;   r  rV  None)rN   r  rV  rL   )
rt   r   r   zSequence[str]r   r  ru   r  rV  r|   )rt   r   r   r  r   r  r   r  )r  r!   r   z	list[int]rV  r  )rV  float)r   rX  rV  rL   )J
__future__r   typingr   r   r   r   r   r	   r
   r_  r  r  enumr   	itertoolsr   ezdxf.lldxfr   ezdxf.tools.binarydatar   r   r   r%   r   
ezdxf.mathr   r   r   r   r   r   r   r   r   ezdxf.entitiesr   loggingezdxf.documentr   ezdxf.lldxf.tagsr   ezdxf.lldxf.tagwriterr   r   r    r!   r"   r#   r$   	getLoggerr-  rC   r"  r(   r>   rI   rO   rS   rV   rY   r\   r_   rb   re   r}   r   r   r   r   r\  r  r  r  r*   r0   r1   <module>r     s   #         I I 
 
 
 # &%7  
		7	#
		 	
 :=?
? ?36?? 	
   	
 
*        
 !$' $'&-"D),d3"E*(69BE	,44 #4144DG4n' 'Tp	 p	fK< K\7r0   