
    'j@                    8   d dl mZ d dlZd dlZd dlZd dlmZ  G d dej                  Z G d dej                  Z	 eddd          Z
 ed d d           Z ed	d	d	          Z ed
d
d
          Zej         G d d                      Z G d d          ZdS )    )annotationsN)RGBc                  &    e Zd ZdZdZdZdZdZdZdS )FillTypezFill type enumeration.r               N)	__name__
__module____qualname____doc__NONESOLIDHATCHINGCROSS_HATCHINGSHADING     W/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/addons/hpgl2/properties.pyr   r   
   s-          DEHNGGGr   r   c                      e Zd ZdZdZdZdS )
FillMethodzFill method enumeration.r   r   N)r   r   r   r   EVEN_ODDNON_ZERO_WINDINGr   r   r   r   r      s!        ""Hr   r         c                  2    e Zd ZU dZded<   ded<   ded<   dS )	PenzRepresents a pen table entry.intindexfloatwidthr   colorN)r   r   r   r   __annotations__r   r   r   r   r   !   s1         ''JJJLLLJJJJJr   r   c                      e Zd ZdZ edde          Zd!dZd"dZd#d	Z	d
 Z
d!dZd$dZd%dZd&dZd'dZd(dZd)dZd*dZd+dZd+dZd S ),
Propertiesz Consolidated display properties.r   ffffff?returnNonec                    d| _         t          | _        d| _        t          j        | _        t          j        | _	        d| _
        d| _        d| _        d| _        i | _        |                                  d S )Nr   r(                 D@      Y@r   )	pen_indexRGB_NONE	pen_color	pen_widthr   r   	fill_typer   r   fill_methodfill_hatch_line_anglefill_hatch_line_spacingfill_shading_densitymax_pen_count	pen_tableresetselfs    r   __init__zProperties.__init__/   sc    ! $!%.,/".2$+0!"#)+

r   r    c           
         t          | j        | j        | j        | j        | j        | j        | j        | j        f          S N)	hashr/   r1   r2   r3   r4   r5   r6   r7   r;   s    r   r@   zProperties.hash>   sE     *,)	
 
 	
r   c                *    t          j         |           S r?   )copyr;   s    r   rB   zProperties.copyL   s    yr   c           	        t          | j                  rd S | j        }| j        j        }t	          d|t          ddd                    |d<   t	          d|t          ddd                    |d<   t	          d|t          ddd                    |d<   t	          d|t          ddd                    |d<   t	          d|t          ddd                    |d<   t	          d|t          ddd                    |d<   t	          d|t          ddd                    |d<   t	          d|t          ddd                    |d	<   d S )
Nr   r   r   r   r	   r
            )lenr9   DEFAULT_PENr#   r   r   )r<   pensr#   s      r   setup_default_pen_tablez"Properties.setup_default_pen_tableP   s/   t~ 	F~ &aCc 2 233QaAq!--QaCA//QaAsA//QaCa 0 011QaAq#//QaCC 0 011QaAsC 0 011Qr   c                   d| _         | j        j        | _        | j        j        | _        | j        j        | _        i | _        t          j
        | _        t          j        | _        d| _        d| _        d| _        |                                  d S )Nr   r,   r-   g      ?)r8   rH   r!   r/   r$   r1   r#   r2   r9   r   r   r3   r   r   r4   r5   r6   r7   rJ   r;   s    r   r:   zProperties.reset^   s|    )/)/)/!%.%("'+$$'!$$&&&&&r   r!   r   c                B    | j                             || j                  S r?   )r9   getrH   )r<   r!   s     r   get_penzProperties.get_penk   s    ~!!%)9:::r   countc                    || _         d S r?   )r8   )r<   rO   s     r   set_max_pen_countzProperties.set_max_pen_countn   s    "r   c                n    || _         |                     |          }|j        | _        |j        | _        d S r?   )r/   rN   r#   r2   r$   r1   )r<   r!   pens      r   set_current_penzProperties.set_current_penq   s0    ll5!!r   r#   r"   c                    |dk    r	|| _         d S | j                            |t          ||| j        j                            }||_        d S Nr   )r2   r9   
setdefaultr   rH   r$   r#   )r<   r!   r#   rS   s       r   set_pen_widthzProperties.set_pen_widthw   sQ    B;;"DNNN.++s5%)9)?@@ C CIIIr   rgbr   c                    |dk    r	|| _         d S | j                            |t          || j        j        |                    }||_        d S rV   )r1   r9   rW   r   rH   r#   r$   )r<   r!   rY   rS   s       r   set_pen_colorzProperties.set_pen_color   sQ    B;; DNNN.++s5$"2"8#>> C CIIIr   r3   spacinganglec                   |dk    r!t           j        | _        || _        || _        d S |dk    r!t           j        | _        || _        || _        d S |dk    rt           j        | _        || _        d S t           j        | _        d S )Nr	   r
   
   )	r   r   r3   r6   r5   r   r   r7   r   )r<   r3   r\   r]   s       r   set_fill_typezProperties.set_fill_type   s    >>%.DN+2D().D&&&!^^%4DN+2D().D&&&"__%-DN(/D%%%%^DNNNr   r4   c                .    t          |          | _        d S r?   )r   r4   )r<   r4   s     r   set_fill_methodzProperties.set_fill_method   s    %k22r   c                    | j         }|t          u r,| j                            | j        | j                  }|j        }|t          u rt          S |S )z Returns the final RGB pen color.)r1   r0   r9   rM   r/   rH   r$   	RGB_BLACK)r<   rY   rS   s      r   resolve_pen_colorzProperties.resolve_pen_color   sI    n(??.$$T^T5EFFC)C(??
r   c                F   | j         }|t          j        k    r|                                 S |t          j        k    r9t          t          dd| j        z
  z            d          }t          |||          S |t          j	        k    s|t          j
        k    rt          S t          S )z!Returns the final RGB fill color.gffffff@r.   r   )r3   r   r   re   r   minr    r7   r   r   r   
LIGHT_GREY	RGB_WHITE)r<   ftgreys      r   resolve_fill_colorzProperties.resolve_fill_color   s    ^))+++8###s454+D#DEFFLLDtT4(((8$$$h.E(E(Er   N)r)   r*   )r)   r    )r)   r'   )r!   r    r)   r   )rO   r    r)   r*   )r!   r    r)   r*   )r!   r    r#   r"   r)   r*   )r!   r    rY   r   r)   r*   )r3   r    r\   r"   r]   r"   )r4   r    r)   r*   )r)   r   )r   r   r   r   r   r0   rH   r=   r@   rB   rJ   r:   rN   rQ   rT   rX   r[   r`   rb   re   rl   r   r   r   r'   r'   *   s@       **#ax((K   
 
 
 
   2 2 2' ' ' '; ; ; ;# # # ## # # #      , , , ,3 3 3 3   
 
 
 
 
 
r   r'   )
__future__r   dataclassesenumrB   ezdxf.colorsr   IntEnumr   r   r0   rd   ri   rh   	dataclassr   r'   r   r   r   <module>rs      s_   # " " " " "                t|           3r2r??C1aLL	CS#	Sc3
        E E E E E E E E E Er   