Ë
    £èhŽh  ã                  óÜ  — d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlZd ZdZd	Zd
ZdZd ZdZd	Zd
ZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'd	Z(dZ)d Z*d Z+dZ,dZ-dZ.dZ/g d¢Z0dZ1dZ2dZ3dZ4d7d „Z5d8d!„Z6 G d"„ d#«      Z7 G d$„ d%«      Z8 G d&„ d'e8«      Z9 G d(„ d)e8«      Z:d9d*„Z;d:d+„Z<	 	 	 	 d;d,„Z=d<d-„Z>d=d.„Z?d>d/„Z@d?d0„ZA G d1„ d2«      ZBd@d3„ZCdAd4„ZDe3fdBd5„ZEdCd6„ZFy)Dé    )Úannotations)ÚUnionÚOptionalÚBinaryIOÚTextIOÚIterableÚIteratorÚAnyN)Úabstractmethod)ÚStringIO)Úarray)Úpacké   é   é   é   é   é@   éA   éB   éC   éD   éE   éF   éG   éH   éI   é   éÿÿÿÿiÿÿÿÃéÿ   )ç        gš™™™™™©?g
×£p=
·?gš™™™™™¹?g¤p=
×£À?g333333Ã?g
×£p=
Ç?gš™™™™™É?g      Ð?g333333Ó?gffffffÖ?gš™™™™™Ù?gÍÌÌÌÌÌÜ?ç      à?gö(\�Âõà?g333333ã?gÍÌÌÌÌÌä?gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?ç      ð?gö(\�Âõð?g333333ó?gffffffö?gHáz®Gù?g       @gáz®Gá @éÀ   éÁ   éÂ   éÃ   c                ó   — d| dz   z  S )NzColor_%dr   © ©Úindexs    ú4lib/python3.12/site-packages/ezdxf/addons/acadctb.pyÚ
color_namer-   f   s   € Ø˜ ™Ñ#Ð#ó    c                ó˜   — t        | t        «      r9| j                  «       }|dk(  rd} | S |dk(  rd} | S t        dt        | «      z  «      ‚| S )NÚTRUETÚFALSEFzUnknown bool value '%s'.)Ú
isinstanceÚstrÚupperÚ
ValueError)ÚvalueÚupperstrs     r,   Úget_boolr8   j   s]   € Ü�%œÔØ—;‘;“=ˆØ�vÒØˆEð
 €Lð	 ˜Ò ØˆEð €Lô Ð7¼#¸e»*ÑDÓEÐEØ€Lr.   c                  ót  — e Zd Z	 	 d	 	 	 	 	 dd„Zedd„«       Zej                  dd„«       Zed„ «       Zej                  dd„«       Zdd„Zdd„Z	dd	„Z
dd
„Zedd„«       Zedd„«       Zej                  dd„«       Zedd„«       Zej                  dd„«       Zedd„«       Zej                  dd„«       Zdd„Zy)Ú	PlotStyleNc                óú  — |xs i }|| _         t        |«      | _        t        |j	                  dt        |«      «      «      | _        t        |j	                  dt        |«      «      «      | _        t        |j	                  dd«      «      | _        t        |j	                  dt        «      «      | _
        t        | _        | j                  t        k7  r*t        |j	                  d| j                  «      «      | _        t        |j	                  dt        «      «      | _        t        |j	                  dt         «      «      | _        t        |j	                  d	t         «      «      | _        t        |j	                  d
d«      «      | _        t)        |j	                  dd«      «      | _        t        |j	                  dt,        «      «      | _        t1        |j	                  dd«      «      | _        t        |j	                  dt4        «      «      | _        t        |j	                  dt8        «      «      | _        t        |j	                  dt<        «      «      | _        t        |j	                  dt@        «      «      | _!        y )NÚnameÚlocalized_nameÚdescriptionÚ ÚcolorÚ
mode_colorÚcolor_policyÚphysical_pen_numberÚvirtual_pen_numberÚscreenéd   Úlinepattern_sizer"   ÚlinetypeÚadaptive_linetypeTÚ
lineweightÚ	end_styleÚ
join_styleÚ
fill_style)"ÚparentÚintr+   r3   Úgetr-   r<   r=   r>   ÚOBJECT_COLORÚ_colorÚ	COLOR_RGBÚ_color_typeÚ_mode_colorÚDITHERING_ONÚ_color_policyÚ	AUTOMATICrC   rD   rE   ÚfloatrG   ÚOBJECT_LINETYPErH   r8   rI   ÚOBJECT_LINEWEIGHTrJ   ÚEND_STYLE_OBJECTrK   ÚJOIN_STYLE_OBJECTrL   ÚFILL_STYLE_OBJECTrM   )Úselfr+   ÚdatarN   s       r,   Ú__init__zPlotStyle.__init__w   sÆ  € ð Šz�rˆØˆŒÜ˜“ZˆŒ
Ü˜Ÿ™ ¬°EÓ):Ó;Ó<ˆŒ	Ü! $§(¡(Ð+;¼ZÈÓ=NÓ"OÓPˆÔÜ˜tŸx™x¨°rÓ:Ó;ˆÔô ˜$Ÿ(™( 7¬LÓ9Ó:ˆŒÜ$ˆÔØ�;‰;œ,Ò&Ü" 4§8¡8¨L¸$¿+¹+Ó#FÓGˆDÔÜ  §¡¨.¼,Ó!GÓHˆÔÜ#& t§x¡xÐ0EÄyÓ'QÓ#RˆÔ Ü"% d§h¡hÐ/CÄYÓ&OÓ"PˆÔÜ˜$Ÿ(™( 8¨SÓ1Ó2ˆŒÜ % d§h¡hÐ/AÀ3Ó&GÓ HˆÔÜ˜DŸH™H Z´ÓAÓBˆŒÜ!)¨$¯(©(Ð3FÈÓ*MÓ!NˆÔô ˜dŸh™h |Ô5FÓGÓHˆŒÜ˜TŸX™X kÔ3CÓDÓEˆŒÜ˜dŸh™h |Ô5FÓGÓHˆŒÜ˜dŸh™h |Ô5FÓGÓHˆ�r.   c                óT   — | j                  «       ryt        | j                  «      dd S )z_Get style color as ``(r, g, b)`` tuple or ``None``, if style has
        object color.
        Nr   )Úhas_object_colorÚ	int2colorrU   ©r_   s    r,   r@   zPlotStyle.color—   s+   € ð
 × Ñ Ô"Øä˜T×-Ñ-Ó.¨r°Ð2Ð2r.   c                ón   — |\  }}}t        |||| j                  ¬«      | _        | j                  | _        y)zSet color as RGB values.)Ú
color_typeN)Úmode_color2intrT   rU   rR   )r_   ÚrgbÚrÚgÚbs        r,   r@   zPlotStyle.color¡   s7   € ð ‰ˆˆ1ˆaô *¨!¨Q°¸d×>NÑ>NÔOˆÔØ×&Ñ&ˆ�r.   c                ó<   — | j                  «       ry | j                  S ©N)rc   rT   re   s    r,   rg   zPlotStyle.color_type®   s   € à× Ñ Ô"Øà×#Ñ#Ð#r.   c                ó   — || _         y rn   )rT   )r_   r6   s     r,   rg   zPlotStyle.color_typeµ   s
   € à ˆÕr.   c                ó0   — t         | _        t         | _        y)zSet color to object color.N)rQ   rR   rU   re   s    r,   Úset_object_colorzPlotStyle.set_object_color¹   s   € ä"ˆŒÜ'ˆÕr.   c                ó`   — | j                   €J ‚| j                   j                  |«      | _        y)zZSet `lineweight` in millimeters. Use ``0.0`` to set lineweight by
        object.
        N)rN   Úget_lineweight_indexrJ   ©r_   rJ   s     r,   Úset_lineweightzPlotStyle.set_lineweight¾   s*   € ð �{‰{Ð&Ð&Ð&ØŸ+™+×:Ñ:¸:ÓFˆ�r.   c                ód   — | j                   €J ‚| j                   j                  | j                     S )zZReturns the lineweight in millimeters or `0.0` for use entity
        lineweight.
        )rN   ÚlineweightsrJ   re   s    r,   Úget_lineweightzPlotStyle.get_lineweightÅ   s-   € ð �{‰{Ð&Ð&Ð&Ø�{‰{×&Ñ& t§¡Ñ7Ð7r.   c                ó2   — | j                   t        t        fv S )z#``True`` if style has object color.)rR   rQ   ÚOBJECT_COLOR2re   s    r,   rc   zPlotStyle.has_object_colorÌ   s   € à�{‰{œ|¬]Ð;Ð;Ð;r.   c                ó    — | j                   dz   S )zg:ref:`ACI` in range from ``1`` to ``255``. Has no meaning for named
        plot styles. (int)
        r   r*   re   s    r,   ÚacizPlotStyle.aciÐ   s   € ð
 �z‰z˜A‰~Ðr.   c                ó:   — t        | j                  t        z  «      S )uy  Depending on the capabilities of your plotter, dithering approximates
        the colors with dot patterns. When this option is ``False``, the colors
        are mapped to the nearest color, resulting in a smaller range of
        colors when plotting.

        Dithering is available only whether you select the objectâ€™s color or
        assign a plot style color.

        )ÚboolrW   rV   re   s    r,   Ú	ditheringzPlotStyle.dithering×   s   € ô �D×&Ñ&¬Ñ5Ó6Ð6r.   c                óp   — |r| xj                   t        z  c_         y | xj                   t         z  c_         y rn   )rW   rV   ©r_   Ústatuss     r,   r   zPlotStyle.ditheringä   ó)   € áØ×Ò¤,Ñ.Öà×Ò¤< -Ñ/Ör.   c                ó:   — t        | j                  t        z  «      S )z Plot colors in grayscale. (bool))r~   rW   ÚGRAYSCALE_ONre   s    r,   Ú	grayscalezPlotStyle.grayscaleë   s   € ô �D×&Ñ&¬Ñ5Ó6Ð6r.   c                óp   — |r| xj                   t        z  c_         y | xj                   t         z  c_         y rn   )rW   r…   r�   s     r,   r†   zPlotStyle.grayscaleð   rƒ   r.   c                ó:   — t        | j                  t        z  «      S rn   )r~   rW   ÚNAMED_COLORre   s    r,   Únamed_colorzPlotStyle.named_color÷   s   € ä�D×&Ñ&¬Ñ4Ó5Ð5r.   c                óp   — |r| xj                   t        z  c_         y | xj                   t         z  c_         y rn   )rW   r‰   r�   s     r,   rŠ   zPlotStyle.named_colorû   s)   € áØ×Ò¤+Ñ-Öà×Ò¤; ,Ñ.Ör.   c                ó°  — | j                   }|j                  d|z  «       |j                  d| j                  z  «       |j                  d| j                  z  «       |j                  d| j                  z  «       |j                  d| j
                  z  «       | j
                  t        k7  r|j                  d| j                  z  «       |j                  d| j                  z  «       |j                  d| j                  z  «       |j                  d	| j                  z  «       |j                  d
| j                  z  «       |j                  dt        | j                  «      z  «       |j                  d| j                  z  «       |j                  dt        t        | j                   «      «      j#                  «       z  «       |j                  dt        | j$                  «      z  «       |j                  d| j&                  z  «       |j                  d| j(                  z  «       |j                  d| j*                  z  «       |j                  d«       y)z.Write style data to file-like object `stream`.z %d{
z  name="%s
z  localized_name="%s
z  description="%s
z  color=%d
z  mode_color=%d
z  color_policy=%d
z  physical_pen_number=%d
z  virtual_pen_number=%d
z  screen=%d
z  linepattern_size=%s
z  linetype=%d
z  adaptive_linetype=%s
z  lineweight=%s
z  fill_style=%d
z  end_style=%d
z  join_style=%d
z }
N)r+   Úwriter<   r=   r>   rR   rQ   rU   rW   rC   rD   rE   r3   rG   rH   r~   rI   r4   rJ   rM   rK   rL   )r_   Ústreamr+   s      r,   r�   zPlotStyle.write  sÂ  € à—
‘
ˆØ�‰�X Ñ%Ô&Ø�‰�^ d§i¡iÑ/Ô0Ø�‰Ð-°×0CÑ0CÑCÔDØ�‰Ð*¨T×-=Ñ-=Ñ=Ô>Ø�‰�^ d§k¡kÑ1Ô2Ø�;‰;œ,Ò&Ø�L‰LÐ,¨t×/?Ñ/?Ñ?Ô@Ø�‰Ð*¨T×-?Ñ-?Ñ?Ô@Ø�‰Ð1°D×4LÑ4LÑLÔMØ�‰Ð0°4×3JÑ3JÑJÔKØ�‰�_ t§{¡{Ñ2Ô3Ø�‰Ð.´°T×5JÑ5JÓ1KÑKÔLØ�‰Ð&¨¯©Ñ6Ô7Ø�‰Ø&¬¬T°$×2HÑ2HÓ-IÓ)J×)PÑ)PÓ)RÑRô	
ð 	�‰Ð(¬3¨t¯©Ó+?Ñ?Ô@Ø�‰Ð(¨4¯?©?Ñ:Ô;Ø�‰Ð'¨$¯.©.Ñ8Ô9Ø�‰Ð(¨4¯?©?Ñ:Ô;Ø�‰�VÕr.   ©NN)r+   rO   r`   úOptional[dict]rN   zOptional[PlotStyleTable])ÚreturnzOptional[tuple[int, int, int]])ri   ztuple[int, int, int]r‘   ÚNone)r6   rO   )r‘   r’   )rJ   rY   r‘   r’   )r‘   rY   )r‘   r~   )r‘   rO   )r‚   r~   r‘   r’   ©rŽ   r   r‘   r’   )Ú__name__Ú
__module__Ú__qualname__ra   Úpropertyr@   Úsetterrg   rq   ru   rx   rc   r|   r   r†   rŠ   r�   r)   r.   r,   r:   r:   v   sB  „ ð  $Ø+/ð	IàðIð ðIð )ó	Ið@ ò3ó ð3ð ‡\�\ò
'ó ð
'ð ñ$ó ð$ð ×Ñò!ó ð!ó(ó
Gó8ó<ð òó ðð ò
7ó ð
7ð ×Ñò0ó ð0ð ò7ó ð7ð ×Ñò0ó ð0ð ò6ó ð6ð ×Ñò/ó ð/ôr.   r:   c                  ó„   — e Zd ZdZ	 	 	 d	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	e
dd„«       Zdd	„Zdd
„Ze
d„ «       Zy)ÚPlotStyleTablezPlotStyle containerc                óf   — || _         || _        || _        d| _        t	        dt
        «      | _        y )Nr   Úf)r>   Úscale_factorÚapply_factorÚcustom_lineweight_display_unitsr   ÚDEFAULT_LINE_WEIGHTSrw   )r_   r>   r�   rž   s       r,   ra   zPlotStyleTable.__init__  s6   € ð 'ˆÔØ(ˆÔØ(ˆÔð 01ˆÔ,Ü  Ô&:Ó;ˆÕr.   c                ó¾   — 	 | j                   j                  |«      S # t        $ r6 | j                   j                  |«       t	        | j                   «      dz
  cY S w xY w)znGet index of `lineweight` in the lineweight table or append
        `lineweight` to lineweight table.
        r   )rw   r+   r5   ÚappendÚlenrt   s     r,   rs   z#PlotStyleTable.get_lineweight_index.  sW   € ð	-Ø×#Ñ#×)Ñ)¨*Ó5Ð5øÜò 	-Ø×Ñ×#Ñ# JÔ/Ü�t×'Ñ'Ó(¨1Ñ,Ò,ð	-ús   ‚ �<AÁAc                óª   — 	 || j                   |<   |S # t        $ r6 | j                   j                  |«       t        | j                   «      dz
  cY S w xY w)zÌArgument `index` is the lineweight table index, not the :ref:`ACI`.

        Args:
            index: lineweight table index = :attr:`PlotStyle.lineweight`
            lineweight: in millimeters

        r   )rw   Ú
IndexErrorr¢   r£   )r_   r+   rJ   s      r,   Úset_table_lineweightz#PlotStyleTable.set_table_lineweight8  sU   € ð	-Ø&0ˆD×Ñ˜UÑ#ØˆLøÜò 	-Ø×Ñ×#Ñ# JÔ/Ü�t×'Ñ'Ó(¨1Ñ,Ò,ð	-ús   ‚ “<AÁAc                ó    — | j                   |   S )zúReturns lineweight in millimeters of lineweight table entry `index`.

        Args:
            index: lineweight table index = :attr:`PlotStyle.lineweight`

        Returns:
            lineweight in mm or ``0.0`` for use entity lineweight

        )rw   )r_   r+   s     r,   Úget_table_lineweightz#PlotStyleTable.get_table_lineweightG  s   € ð ×Ñ Ñ&Ð&r.   c                óh   — t        |d«      5 }| j                  |«       ddd«       y# 1 sw Y   yxY w)z6Save CTB or STB file as `filename` to the file system.ÚwbN)Úopenr�   )r_   ÚfilenamerŽ   s      r,   ÚsavezPlotStyleTable.saveS  s&   € ä�(˜DÔ! VØ�J‰J�vÔ÷ "×!Ñ!ús   �(¨1c                óÆ   — t        «       }| j                  |«       |j                  t        d«      «       |j	                  «       }|j                  «        t        ||«       y)z:Compress and write the CTB or STB file to binary `stream`.r   N)r   Úwrite_contentr�   ÚchrÚgetvalueÚcloseÚ	_compress)r_   rŽ   ÚmemfileÚbodys       r,   r�   zPlotStyleTable.writeX  sH   € ä“*ˆØ×Ñ˜7Ô#Ø�‰”c˜!“fÔØ×ÑÓ!ˆØ�‰ŒÜ�&˜$Õr.   c                 ó   — y rn   r)   ©r_   rŽ   s     r,   r¯   zPlotStyleTable.write_contenta  ó   € àr.   c                ó®   — |j                  d«       t        | j                  «      D ]  \  }}|j                  d||fz  «       Œ |j                  d«       y)z/Write custom lineweight table to text `stream`.zcustom_lineweight_table{
z	 %d=%.2f
ú}
N)r�   Ú	enumeraterw   )r_   rŽ   r+   Úweights       r,   Ú_write_lineweightsz!PlotStyleTable._write_lineweightse  sI   € à�‰Ð1Ô2Ü& t×'7Ñ'7Ö8‰MˆE�6Ø�L‰L˜¨°¨Ñ7Õ8ð 9à�‰�UÕr.   c                ó†  ‡ — ˆ fd„}t        |«      }|j                  dd«      ‰ _        t        |j                  dd«      «      ‰ _        t        |j                  dd«      «      ‰ _        t        |j                  dd	«      «      ‰ _         ||j                  d
d«      «       ‰ j                  |j                  di «      «       y)z)Parse plot styles from CTB string `text`.c                óº   •— | €y t        ddgt        | «      z  «      ‰_        | j                  «       D ]&  \  }}t	        |«      ‰j                  t        |«      <   Œ( y )Nrœ   r!   )r   r£   rw   ÚitemsrY   rO   )rw   Úkeyr6   r_   s      €r,   Úset_lineweightsz-PlotStyleTable.parse.<locals>.set_lineweightso  sV   ø€ ØÐ"ØÜ$ S¨3¨%´#°kÓ2BÑ*BÓCˆDÔØ)×/Ñ/Ö1‘
��UÜ-2°5«\�× Ñ ¤ S£Ò*ñ 2r.   r>   r?   r�   r#   rž   TrŸ   r   Úcustom_lineweight_tableNÚ
plot_style)
ÚPlotStyleFileParserrP   r>   rY   r�   r8   rž   rO   rŸ   Úload_styles)r_   ÚtextrÂ   Úparsers   `   r,   ÚparsezPlotStyleTable.parsel  s¢   ø€ ô	:ô % TÓ*ˆØ!Ÿ:™: m°RÓ8ˆÔÜ! &§*¡*¨^¸SÓ"AÓBˆÔÜ$ V§Z¡Z°ÀÓ%EÓFˆÔÜ/2Ø�J‰JÐ8¸!Ó<ó0
ˆÔ,ñ 	˜Ÿ
™
Ð#<¸dÓCÔDØ×Ñ˜Ÿ™ L°"Ó5Õ6r.   c                 ó   — y rn   r)   )r_   Ústyless     r,   rÆ   zPlotStyleTable.load_styles€  r¸   r.   N©r?   r#   F©r>   r3   r�   rY   rž   r~   )rJ   rY   r‘   rO   )r+   rO   rJ   rY   r‘   rO   )r+   rO   r‘   rY   )r¬   ústr | os.PathLiker‘   r’   )rŽ   r   r‘   r’   r“   )rÇ   r3   r‘   r’   )r”   r•   r–   Ú__doc__ra   rs   r¦   r¨   r­   r�   r   r¯   r½   rÉ   rÆ   r)   r.   r,   rš   rš     s|   „ Ùð Ø!Ø"ð	<àð<ð ð<ð ó	<ó-ó-ó
'óó
 ð òó ðóó7ð( ñó ñr.   rš   c                  ó€   ‡ — e Zd Z	 	 	 d	 	 	 	 	 dˆ fd„Zdd„Zdd„Zd„ Zddd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zd„ Zˆ xZS )ÚColorDependentPlotStylesc                óÖ   •— t         ‰| �  |||«       t        t        «      D �cg c]  }t	        || ¬«      ‘Œ c}| _        | j
                  j                  dt	        d«      «       y c c}w )N)rN   r   é   )Úsuperra   ÚrangeÚSTYLE_COUNTr:   Ú_stylesÚinsert)r_   r>   r�   rž   r+   Ú	__class__s        €r,   ra   z!ColorDependentPlotStyles.__init__†  s`   ø€ ô 	‰Ñ˜ l°LÔAä7<¼[Ô7Ió)
Ù7I¨eŒI�e DÖ)Ð7Iñ)
ˆŒð 	�‰×ÑØŒy˜‹~õ	
ùò)
s   ¤A&c                óf   — d|cxk  rdk  rn t        |«      ‚| j                   |   S t        |«      ‚)z0Returns :class:`PlotStyle` for :ref:`ACI` `aci`.r   rÓ   )r×   r¥   )r_   r|   s     r,   Ú__getitem__z$ColorDependentPlotStyles.__getitem__”  s4   € àˆsŒ=�SŒ=ô ˜S“/Ð!ð —<‘< Ñ$Ð$ä˜S“/Ð!r.   c                óv   — d|cxk  rdk  r$n t        |«      ‚| |_         || j                  |<   yt        |«      ‚)zSet plot `style` for `aci`.r   rÓ   N)rN   r×   r¥   )r_   r|   Ústyles      r,   Ú__setitem__z$ColorDependentPlotStyles.__setitem__›  s:   € àˆsŒ=�SŒ=ô ˜S“/Ð!ð  ˆEŒLØ %ˆD�L‰L˜Òä˜S“/Ð!r.   c                ó2   — t        | j                  dd «      S )zIterable of all plot styles.r   N)Úiterr×   re   s    r,   Ú__iter__z!ColorDependentPlotStyles.__iter__£  s   € ä�D—L‘L  Ð$Ó%Ð%r.   c                óF   — t        |dz
  |¬«      }t        |_        || |<   |S )aw  Set `aci` to new attributes defined by `data` dict.

        Args:
            aci: :ref:`ACI`
            data: ``dict`` of :class:`PlotStyle` attributes: description, color,
                physical_pen_number, virtual_pen_number, screen,
                linepattern_size, linetype, adaptive_linetype,
                lineweight, end_style, join_style, fill_style

        r   )r+   r`   )r:   rS   rg   )r_   r|   r`   rÝ   s       r,   Ú	new_stylez"ColorDependentPlotStyles.new_style§  s*   € ô   a¡¨dÔ3ˆÜ$ˆÔØˆˆS‰	Øˆr.   c                ó<   — | |   }|j                  «       }|dk(  ry|S )z\Returns the assigned lineweight for :class:`PlotStyle` `aci` in
        millimeter.
        r!   N©rx   )r_   r|   rÝ   rJ   s       r,   rx   z'ColorDependentPlotStyles.get_lineweight¹  s,   € ð �S‘	ˆØ×)Ñ)Ó+ˆ
Ø˜ÒØàÐr.   c                óŒ   — | j                  |«       | j                  |«       | j                  |«       | j                  |«       y)z$Write the CTB-file to text `stream`.N)Ú_write_headerÚ_write_aci_tableÚ_write_plot_stylesr½   r·   s     r,   r¯   z&ColorDependentPlotStyles.write_contentÄ  s:   € à×Ñ˜6Ô"Ø×Ñ˜fÔ%Ø×Ñ Ô'Ø×Ñ Õ'r.   c                óV  — |j                  d| j                  z  «       |j                  d«       |j                  d| j                  z  «       |j                  dt        | j                  «      j                  «       z  «       |j                  dt        | j                  «      z  «       y)ú1Write header values of CTB-file to text `stream`.údescription="%s
zaci_table_available=TRUE
úscale_factor=%.1f
úapply_factor=%s
ú#custom_lineweight_display_units=%s
N©r�   r>   r�   r3   rž   r4   rŸ   r·   s     r,   rç   z&ColorDependentPlotStyles._write_headerË  s‡   € à�‰Ð(¨4×+;Ñ+;Ñ;Ô<Ø�‰Ð1Ô2Ø�‰Ð*¨T×->Ñ->Ñ>Ô?Ø�‰Ð(¬3¨t×/@Ñ/@Ó+A×+GÑ+GÓ+IÑIÔJØ�‰Ø2Ü�$×6Ñ6Ó7ñ8õ	
r.   c                ó¬   — |j                  d«       | D ]-  }|j                  }|j                  d|t        |«      fz  «       Œ/ |j                  d«       y)z1Write AutoCAD Color Index table to text `stream`.zaci_table{
z %d="%s
rº   N)r�   r+   r-   )r_   rŽ   rÝ   r+   s       r,   rè   z)ColorDependentPlotStyles._write_aci_tableÖ  sJ   € à�‰�^Ô$ÛˆEØ—K‘KˆEØ�L‰L˜¨¬z¸%Ó/@Ð'AÑAÕBð ð 	�‰�UÕr.   c                óx   — |j                  d«       | D ]  }|j                  |«       Œ |j                  d«       y©z#Write user styles to text `stream`.zplot_style{
rº   N)r�   )r_   rŽ   rÝ   s      r,   ré   z+ColorDependentPlotStyles._write_plot_stylesÞ  s0   € à�‰�_Ô%ÛˆEØ�K‰K˜Õð à�‰�UÕr.   c                óŒ   — |j                  «       D ]1  \  }}t        |«      }t        ||«      }t        |_        |dz   }|| |<   Œ3 y )Nr   )rÀ   rO   r:   rS   rg   )r_   rË   r+   rÝ   r|   s        r,   rÆ   z$ColorDependentPlotStyles.load_styleså  sE   € Ø"ŸL™LžN‰LˆE�5Ü˜“JˆEÜ˜e UÓ+ˆEÜ(ˆEÔØ˜!‘)ˆCØˆD�ŠIñ +r.   rÌ   rÍ   )r|   rO   r‘   r:   )r|   rO   rÝ   r:   rn   )r|   rO   r`   r�   r‘   r:   )r|   rO   r“   )r”   r•   r–   ra   rÛ   rÞ   rá   rã   rx   r¯   rç   rè   ré   rÆ   Ú__classcell__©rÙ   s   @r,   rÑ   rÑ   …  sa   ø„ ð Ø!Ø"ð	
àð
ð ð
ð õ	
ó"ó"ò&ôó$	ó(ó	
óóör.   rÑ   c                  ó¤   ‡ — e Zd Z	 	 	 d	 	 	 	 	 dˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z		 	 d	 	 	 	 	 	 	 dd„Z
dd	„Zdd
„Zdd„Zdd„Zd„ Zˆ xZS )ÚNamedPlotStylesc                óZ   •— t         ‰| �  |||«       t        ddddœ¬«      }d|i| _        y )Nr   ÚNormal)r<   r=   )r`   )rÔ   ra   r:   r×   )r_   r>   r�   rž   ÚnormalrÙ   s        €r,   ra   zNamedPlotStyles.__init__ï  s<   ø€ ô 	‰Ñ˜ l°LÔAÜØà Ø"*ñô
ˆð /7¸Ð-?ˆ�r.   c                ó"   — | j                  «       S )ú!Iterable of all plot style names.)Úkeysre   s    r,   rá   zNamedPlotStyles.__iter__ÿ  s   € à�y‰y‹{Ðr.   c                ó    — | j                   |   S )z%Returns :class:`PlotStyle` by `name`.)r×   ©r_   r<   s     r,   rÛ   zNamedPlotStyles.__getitem__  s   € à�|‰|˜DÑ!Ð!r.   c                ó>   — |dk7  r| j                   |= yt        d«      ‚)zCDelete plot style `name`. Plot style ``'Normal'`` is not deletable.rú   z"Can't delete plot style 'Normal'. N)r×   r5   r   s     r,   Ú__delitem__zNamedPlotStyles.__delitem__  s"   € à�8ÒØ—‘˜TÑ"äÐAÓBÐBr.   c                óº   — t        | j                  j                  «       «      }|j                  d«       dg}|j	                  t        |«      «       t        |«      S )rý   rú   )Úsetr×   rþ   ÚdiscardÚextendÚsortedrà   )r_   rþ   Úresults      r,   rþ   zNamedPlotStyles.keys  sF   € ä�4—<‘<×$Ñ$Ó&Ó'ˆØ�‰�XÔØ�ˆØ�‰”f˜T“lÔ#Ü�F‹|Ðr.   c              #  ó\   K  — | j                  «       D ]  }|| j                  |   f–— Œ y­w)zDIterable of all plot styles as (``name``, class:`PlotStyle`) tuples.N)rþ   r×   )r_   rÁ   s     r,   rÀ   zNamedPlotStyles.items  s*   è ø€ à—9‘9–;ˆCØ�t—|‘| CÑ(Ð(Ó(ñ ùs   ‚*,c              #  óD   K  — | j                  «       D ]	  \  }}|–— Œ y­w)z*Iterable of all class:`PlotStyle` objects.N)rÀ   )r_   rÁ   r6   s      r,   ÚvalueszNamedPlotStyles.values  s   è ø€ àŸ*™*ž,‰JˆC�Ø‹Kñ 'ùs   ‚ c                óò   — |j                  «       dk(  rt        d«      ‚|xs i }||d<   |xs ||d<   t        | j                  «      }t	        ||| ¬«      }t
        |_        d|_        || j                  |<   |S )a  Create new class:`PlotStyle` `name` by attribute dict `data`, replaces
        existing class:`PlotStyle` objects.

        Args:
            name: plot style name
            localized_name: name shown in plot style editor, uses `name` if ``None``
            data: ``dict`` of :class:`PlotStyle` attributes: description, color,
                physical_pen_number, virtual_pen_number, screen,
                linepattern_size, linetype, adaptive_linetype, lineweight,
                end_style, join_style, fill_style

        rú   z-Can't replace or modify plot style 'Normal'. r<   r=   )r+   r`   rN   T)Úlowerr5   r£   r×   r:   Ú	COLOR_ACIrg   rŠ   )r_   r<   r`   r=   r+   rÝ   s         r,   rã   zNamedPlotStyles.new_style   s   € ð$ �:‰:‹<˜8Ò#ÜÐLÓMÐMØŠz�rˆØˆˆV‰Ø!/Ò!7°4ˆÐÑÜ�D—L‘LÓ!ˆÜ ¨D¸Ô>ˆÜ$ˆÔØ ˆÔØ"ˆ�‰�TÑØˆr.   c                ó<   — | |   }|j                  «       }|dk(  ry|S )z]Returns the assigned lineweight for :class:`PlotStyle` `name` in
        millimeter.
        r!   Nrå   )r_   r<   rÝ   rJ   s       r,   rx   zNamedPlotStyles.get_lineweight>  s,   € ð �T‘
ˆØ×)Ñ)Ó+ˆ
Ø˜ÒØàÐr.   c                ój   — | j                  |«       | j                  |«       | j                  |«       y)z$Write the STB-file to text `stream`.N)rç   ré   r½   r·   s     r,   r¯   zNamedPlotStyles.write_contentI  s,   € à×Ñ˜6Ô"Ø×Ñ Ô'Ø×Ñ Õ'r.   c                óV  — |j                  d| j                  z  «       |j                  d«       |j                  d| j                  z  «       |j                  dt        | j                  «      j                  «       z  «       |j                  dt        | j                  «      z  «       y)rë   rì   zaci_table_available=FALSE
rí   rî   rï   Nrð   r·   s     r,   rç   zNamedPlotStyles._write_headerO  s‡   € à�‰Ð(¨4×+;Ñ+;Ñ;Ô<Ø�‰Ð2Ô3Ø�‰Ð*¨T×->Ñ->Ñ>Ô?Ø�‰Ð(¬3¨t×/@Ñ/@Ó+A×+GÑ+GÓ+IÑIÔJØ�‰Ø2Ü�$×6Ñ6Ó7ñ8õ	
r.   c                óº   — |j                  d«       t        | j                  «       «      D ]  \  }}||_        |j                  |«       Œ |j                  d«       yró   )r�   r»   r  r+   )r_   rŽ   r+   rÝ   s       r,   ré   z"NamedPlotStyles._write_plot_stylesZ  sH   € à�‰�_Ô%Ü% d§k¡k£mÖ4‰LˆE�5ØˆEŒKØ�K‰K˜Õð 5ð 	�‰�UÕr.   c                óª   — |j                  «       D ]@  \  }}t        |«      }t        ||«      }t        |_        || j
                  |j                  <   ŒB y rn   )rÀ   rO   r:   r  rg   r×   r<   )r_   rË   r+   rÝ   s       r,   rÆ   zNamedPlotStyles.load_stylesb  sE   € Ø"ŸL™LžN‰LˆE�5Ü˜“JˆEÜ˜e UÓ+ˆEÜ(ˆEÔØ',ˆD�L‰L˜Ÿ™Ò$ñ	 +r.   rÌ   rÍ   )r‘   zIterable[str])r<   r3   r‘   r:   )r<   r3   r‘   r’   )r‘   zIterator[tuple[str, PlotStyle]])r‘   zIterable[PlotStyle]r�   )r<   r3   r`   r�   r=   zOptional[str]r‘   r:   )r<   r3   r“   )r”   r•   r–   ra   rá   rÛ   r  rþ   rÀ   r  rã   rx   r¯   rç   ré   rÆ   rõ   rö   s   @r,   rø   rø   î  sž   ø„ ð Ø!Ø"ð	@àð@ð ð@ð õ	@ó ó"óCóó)ó
ð  $Ø(,ð	àðð ðð &ð	ð
 
óó<	ó(ó	
óö-r.   rø   c                ón   — t        | «      }t        «       }|j                  |j                  «       «       |S )z%Read a CTB-file from binary `stream`.)Ú_decompressrÑ   rÉ   Údecode©rŽ   ÚcontentrË   s      r,   Ú	_read_ctbr  j  s,   € ä  Ó(€GÜ%Ó'€FØ
‡L�L�—‘Ó!Ô"Ø€Mr.   c                ón   — t        | «      }t        «       }|j                  |j                  «       «       |S )z%Read a STB-file from binary `stream`.)r  rø   rÉ   r  r  s      r,   Ú	_read_stbr  r  s,   € ä  Ó(€GÜÓ€FØ
‡L�L�—‘Ó!Ô"Ø€Mr.   c                óJ  — t        | «      } t        | d«      5 }| j                  «       j                  d«      rt	        |«      cddd«       S | j                  «       j                  d«      rt        |«      cddd«       S t        dj                  | «      «      ‚# 1 sw Y   yxY w)z5Load the CTB or STB file `filename` from file system.Úrbz.ctbNz.stbzInvalid file type: "{}")r3   r«   r  Úendswithr  r  r5   Úformat)r¬   rŽ   s     r,   Úloadr   z  s‡   € ô �8‹}€HÜ	ˆh˜Ô	 Ø�>‰>Ó×$Ñ$ VÔ,Ü˜VÓ$÷ 
Ñ	ð �^‰^Ó×&Ñ& vÔ.Ü˜VÓ$÷	 
Ñ	ô Ð6×=Ñ=¸hÓGÓHÐH÷ 
Ð	ús   ˜*BÁ)BÁ?BÂB"c                 ó   — t        «       S )zCreate a new CTB file.)rÑ   r)   r.   r,   Únew_ctbr"  ˆ  s   € ä#Ó%Ð%r.   c                 ó   — t        «       S )zCreate a new STB file.)rø   r)   r.   r,   Únew_stbr$  �  s   € äÓÐr.   c                ó\   — | j                  «       }t        j                  |dd «      }|dd S )z:Read and decompress the file content from binray `stream`.é<   Nr   )ÚreadÚzlibÚ
decompress)rŽ   r  r`   s      r,   r  r  ’  s-   € à�k‰k‹m€GÜ�?‰?˜7 2 3˜<Ó(€DØ��ˆ9Ðr.   c           
     ó  — t        j                  |j                  «       «      }t        j                  |«      }| j	                  d«       | j	                  t        d|t        |«      t        |«      «      «       | j	                  |«       y)z0Compress `content` and write to binary `stream`.s0   PIAFILEVERSION_2.0,CTBVER1,compress
pmzlibcodecÚLLLN)r(  ÚcompressÚencodeÚadler32r�   r   r£   )rŽ   r  Ú	comp_bodyÚadler_chksums       r,   r³   r³   ™  s]   € ä—‘˜gŸn™nÓ.Ó/€IÜ—<‘< 	Ó*€LØ
‡L�LÐFÔGØ
‡L�L”�e˜\¬3¨w«<¼¸Y»ÓHÔIØ
‡L�L�Õr.   c                  ó2   — e Zd ZdZdd„Zedd„«       Zdd„Zy)rÅ   z‘A very simple CTB/STB file parser. CTB/STB files are created by
    applications, so the file structure should be correct in the most cases.
    c                ój   — i | _         t        j                  |«      D ]  \  }}|| j                   |<   Œ y rn   )r`   rÅ   Ú	iteritems)r_   rÇ   Úelementr6   s       r,   ra   zPlotStyleFileParser.__init__§  s1   € ØˆŒ	Ü1×;Ñ;¸DÖA‰NˆG�UØ!&ˆD�I‰I�gÒñ Br.   c              #  óê   ‡‡‡‡‡K  — dŠdˆˆfd„Šd	ˆˆˆˆfd„Šd
ˆˆˆfd„Šˆˆfd„}| j                  d«      Š‰t        ‰«      k  r+ ‰«       } ‰«       }||f–—  |«        ‰t        ‰«      k  rŒ*yy­w)z7Iterate over all first level (start at col 0) elements.r   c                 ó¤   •— ‰‰   } | j                  d«      r| dd }|j                  «       S | j                  dd«      d   }|j                  «       S )z&Get element name of line <line_index>.Ú{Nr   Ú=r   r   )r  ÚsplitÚstrip)Úliner<   Ú
line_indexÚliness     €€r,   Úget_namez/PlotStyleFileParser.iteritems.<locals>.get_name±  sU   ø€ à˜Ñ$ˆDØ�}‰}˜SÔ!Ø˜C˜R�y�ð —:‘:“<Ðð —z‘z # qÓ)¨!Ñ,�Ø—:‘:“<Ðr.   c                 óv   •— ˆˆfd„} t        «       } | «       s ‰«       } ‰«       }|||<    | «       sŒ‰dz  Š|S )zmGet mapping of elements enclosed by { }.

            e. g. lineweights, plot_styles, aci_table

            c                 ó,   •— ‰‰    j                  d«      S )NÚ})r  ©r<  r=  s   €€r,   Úend_of_listzGPlotStyleFileParser.iteritems.<locals>.get_mapping.<locals>.end_of_listÁ  s   ø€ Ø˜ZÑ(×1Ñ1°#Ó6Ð6r.   r   )Údict)rC  r`   r<   r6   r>  Ú	get_valuer<  r=  s       €€€€r,   Úget_mappingz2PlotStyleFileParser.iteritems.<locals>.get_mappingº  sD   ø€ õ7ô “6ˆDÙ!”mÙ“z�Ù!›�Ø"��T‘
ñ "•mð ˜!‰OˆJØˆKr.   c                 ó–   •— ‰‰   } | j                  d«      r‰dz  Š ‰«       S | j                  dd«      d   }t        |«      }‰dz  Š|S )zeGet value of line <line_index> or the list that starts in line
            <line_index>.
            r7  r   r8  )r  r9  Úsanitized_value)r;  r6   rF  r<  r=  s     €€€r,   rE  z0PlotStyleFileParser.iteritems.<locals>.get_valueÍ  sY   ø€ ð
 ˜Ñ$ˆDØ�}‰}˜SÔ!Ø˜a‘�
Ù"“}Ð$à!ŸZ™Z¨¨QÓ/°Ñ2�Ü'¨Ó.�Ø˜a‘�
ØˆLr.   c                 ó”   •— ‰ t        ‰«      k  r9t        ‰‰    «      dk(  r'‰ dz  Š ‰ t        ‰«      k  rt        ‰‰    «      dk(  rŒ%y y y y )Nr   r   )r£   rB  s   €€r,   Úskip_empty_linesz7PlotStyleFileParser.iteritems.<locals>.skip_empty_linesÜ  sQ   ø€ àœs 5›zÒ)¬c°%¸
Ñ2CÓ.DÈÒ.IØ˜a‘�
ð œs 5›zÒ)¬c°%¸
Ñ2CÓ.DÈÔ.IÐ)Ð.IÐ)r.   Ú
N)r‘   r3   )r‘   rD  )r‘   zUnion[str, dict])r9  r£   )	rÇ   rJ  r<   r6   rF  r>  rE  r<  r=  s	       @@@@@r,   r3  zPlotStyleFileParser.iteritems¬  so   üè ø€ ð ˆ
ö	 ÷	ð 	÷&	õ	 ð
 —
‘
˜4Ó ˆØœ3˜u›:Ò%Ù“:ˆDÙ“KˆEØ˜�+ÒÙÔð	 œ3˜u›:Õ%ùs   ‡A)A3Á1A3c                ó:   — | j                   j                  ||«      S rn   )r`   rP   )r_   r<   Údefaults      r,   rP   zPlotStyleFileParser.getè  s   € Ø�y‰y�}‰}˜T 7Ó+Ð+r.   N)rÇ   r3   )r<   r3   rM  r
   r‘   r
   )r”   r•   r–   rÏ   ra   Ústaticmethodr3  rP   r)   r.   r,   rÅ   rÅ   ¢  s&   „ ñó'ð
 ò9ó ð9ôv,r.   rÅ   c                óœ   — | j                  «       } | j                  d«      r| dd  S | j                  d«      r| j                  d«      d   S | S )NÚ"r   Ú)Ú r   )r:  Ú
startswithr  r9  )r6   s    r,   rH  rH  ì  sN   € Ø�K‰K‹M€EØ×Ñ˜ÔØ�Q�RˆyÐð ‡~�~�cÔØ�{‰{˜3Ó Ñ"Ð"Ø€Lr.   c                óH   — | dz  dz	  }| dz  dz	  }| dz  dz	  }| dz  }||||fS )zTConvert color integer value from CTB-file to ``(r, g, b, color_type)
    tuple.
    l      ~ é   i  ÿ é   i ÿ  é   r    r)   )r@   rg   ÚredÚgreenÚblues        r,   rd   rd   ø  sH   € ð
 ˜*Ñ$¨Ñ+€JØ�8Ñ Ñ
"€CØ�V‰^ Ñ!€EØ�4‰<€DØ��t˜ZÐ'Ð'r.   c                ó    — t        | |||«       S )z:Convert mode_color (r, g, b, color_type) tuple to integer.)Ú	color2int©rX  rY  rZ  rg   s       r,   rh   rh     s   € ä�c˜5 $¨
Ó3Ð3Ð3r.   c                ó2   — |dz  | dz  z   |dz  z   |z    dz  S )z/Convert color (r, g, b, color_type) to integer.rU  rV  rW  l   ÿÿ r)   r]  s       r,   r\  r\  	  s,   € à˜BÑ 3¨"¡9Ñ-°¸!±Ñ<¸tÑCÐDÀzÑQÐQr.   )r+   rO   r‘   r3   )r6   zUnion[str, bool]r‘   r~   )rŽ   r   r‘   rÑ   )rŽ   r   r‘   rø   )r¬   rÎ   r‘   z0Union[ColorDependentPlotStyles, NamedPlotStyles])r‘   rÑ   )r‘   rø   )rŽ   r   r‘   Úbytes)rŽ   r   r  r3   )r6   r3   r‘   r3   )r@   rO   r‘   ztuple[int, int, int, int])rX  rO   rY  rO   rZ  rO   r‘   rO   )
rX  rO   rY  rO   rZ  rO   rg   rO   r‘   rO   )GÚ
__future__r   Útypingr   r   r   r   r   r	   r
   ÚosÚabcr   Úior   r   Ústructr   r(  ÚEND_STYLE_BUTTÚEND_STYLE_SQUAREÚEND_STYLE_ROUNDÚEND_STYLE_DIAMONDr\   ÚJOIN_STYLE_MITERÚJOIN_STYLE_BEVELÚJOIN_STYLE_ROUNDÚJOIN_STYLE_DIAMONDr]   ÚFILL_STYLE_SOLIDÚFILL_STYLE_CHECKERBOARDÚFILL_STYLE_CROSSHATCHÚFILL_STYLE_DIAMONDSÚFILL_STYLE_HORIZONTAL_BARSÚFILL_STYLE_SLANT_LEFTÚFILL_STYLE_SLANT_RIGHTÚFILL_STYLE_SQUARE_DOTSÚFILL_STYLE_VERICAL_BARSr^   rV   r…   r‰   rX   r[   rZ   rQ   rz   rÖ   r    ÚCOLOR_BY_LAYERÚCOLOR_BY_BLOCKrS   r  r-   r8   r:   rš   rÑ   rø   r  r  r   r"  r$  r  r³   rÅ   rH  rd   rh   r\  r)   r.   r,   Ú<module>ry     s—  ðõ
 #÷÷ ñ ó 
Ý Ý Ý Ý Û à€ØÐ Ø€ØÐ ØÐ àÐ ØÐ ØÐ ØÐ ØÐ àÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ à€Ø€Ø€à€	ØÐ Ø€Ø€Ø€à€òÐ ðB €ð €ð €	ð €	ó$ó	÷cñ c÷Lfñ fôRf˜~ô fôRy-�nô y-óxóðIØðIà5óIó&ó
ó
ó÷G,ñ G,óT	ó	(ð @Iô 4ô
Rr.   