
    'j^                    X    d dl mZ d dlmZ d dlZddlmZmZ dZdZ	 G d d	          Z
dS )
    )annotations)SequenceN   )Vec2NULLVEC2i  (   c                      e Zd Zd.dZd/d
Zd0dZd1dZd2dZd3dZ	 	 d4d5dZ	d5dZ
d6d7dZd8d"Zd8d#Zd9d'Zd:d)Zd;d,Zd-S )<Pagesize_xintsize_yc                    t          |          | _        t          |          | _        t          | _        t          ||          | _        d| _        d| _        d| _	        t          | _
        d S )NF      ?)r   r   r   r   p1r   p2user_scalinguser_scale_xuser_scale_yuser_origin)selfr   r   s      Q/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/addons/hpgl2/page.py__init__zPage.__init__   sZ    &kk&kkvv&&!#&#&#    r   r   r   returnNonec                ~    |                                   t          |          | _        t          |          | _        d S N)reset_scalingr   r   r   )r   r   r   s      r   set_scaling_pointszPage.set_scaling_points   s2    r((r((r   sxfloatsyc                ^    |                      | j        | j        |z  | j        |z             d S r   )set_ucsr   r   r   )r   r    r"   s      r   apply_scaling_factorszPage.apply_scaling_factors"   s2    T%t'82'=t?PSU?UVVVVVr   xp1yp1c                    | j         | j        z
  }t          | j        |z  | j        |z            }|                     |||z              d S r   )r   r   r   r   r   r   )r   r&   r'   sizer   s        r   set_scaling_points_relative_1z"Page.set_scaling_points_relative_1%   sM    w $+#T[3%677BI.....r   xp2yp2c                    t          | j        |z  | j        |z            }t          | j        |z  | j        |z            }|                     ||           d S r   )r   r   r   r   )r   r&   r'   r+   r,   r   r   s          r   set_scaling_points_relative_2z"Page.set_scaling_points_relative_2*   sZ     $+#T[3%677$+#T[3%677B'''''r   c                    t           | _        t          | j        | j                  | _        |                     t                      d S r   )r   r   r   r   r   r   r$   )r   s    r   r   zPage.reset_scaling1   s6    t{DK00Xr         ?x_minx_maxy_miny_maxc                :   | j         | j        z
  }||z
  }||z
  }	d}
t          |          dk    r
|j        |z  }
d}t          |	          dk    r
|j        |	z  }t          t          |
          t          |                    }t          j        ||
          }
t          j        ||          }|j        ||
z  z
  |z  }|j        |	|z  z
  |z  }| j        j        |z   ||
z  z
  }| j        j        |z   ||z  z
  }|                     t          ||          |
|           d S Nr   g&.>)
r   r   absxyminmathcopysignr$   r   )r   r1   r2   r3   r4   leftbottomr)   delta_xdelta_yscale_xscale_yscaleoffset_xoffset_yorigin_xorigin_ys                    r   set_isotropic_scalingzPage.set_isotropic_scaling6   s%    w %-%-w<<$fw&Gw<<$fw&GCLL#g,,//-w//-w//FWw..$6FWw..&879x'%'/979x'%'/9T(H--w@@@@@r   c                F   | j         | j        z
  }||z
  }||z
  }d}t          |          dk    r
|j        |z  }d}	t          |          dk    r
|j        |z  }	| j        j        ||z  z
  }
| j        j        ||	z  z
  }|                     t          |
|          ||	           d S r6   )r   r   r7   r8   r9   r$   r   )r   r1   r2   r3   r4   r)   r?   r@   rA   rB   rF   rG   s               r   set_anisotropic_scalingzPage.set_anisotropic_scalingR   s     w %-%-w<<$fw&Gw<<$fw&G79uw.79uw.T(H--w@@@@@r   r   originc                   t          |          | _        t          |          | _        t          |          | _        t          | j                  dk     rd| _        t          | j                  dk     rd| _        t          j        | j        d          r#t          j        | j        d          r	d| _        d S d| _        d S )Ngư>r   FT)	r   r   r!   r   r   r7   r;   iscloser   )r   rK   r    r"   s       r   r$   zPage.set_ucsb   s    <<!"II!"IIt !!D(( #Dt !!D(( #D<)3// 	%DLs5
 5
 	% !&D $Dr   r8   r9   c                >    |                      ||          | j        z   S )z9Returns the page location as page point in plotter units.)page_vectorr   r   r8   r9   s      r   
page_pointzPage.page_pointq   s     1%%(888r   c                X    | j         r| j        |z  }| j        |z  }t          ||          S )z8Returns the user vector in page vector in plotter units.)r   r   r   r   rP   s      r   rO   zPage.page_vectoru   s5     	&!A%A!A%AAqzzr   pointsSequence[Vec2]
list[Vec2]c                       fd|D             S )z8Returns all user points as page points in plotter units.c                P    g | ]"}                     |j        |j                  #S  )rQ   r8   r9   .0pr   s     r   
<listcomp>z$Page.page_points.<locals>.<listcomp>~   s+    :::aQS)):::r   rX   )r   rS   s   ` r   page_pointszPage.page_points|   s    ::::6::::r   vectorsc                       fd|D             S )z:Returns all user vectors as page vectors in plotter units.c                P    g | ]"}                     |j        |j                  #S rX   )rO   r8   r9   rY   s     r   r\   z%Page.page_vectors.<locals>.<listcomp>   s-    <<<q  ac**<<<r   rX   )r   r^   s   ` r   page_vectorszPage.page_vectors   s    <<<<G<<<<r   lengthtuple[float, float]c                *    || j         z  || j        z  fS )zJScale a length in user units to plotter units, scaling can be non-uniform.)r   r   )r   rb   s     r   scale_lengthzPage.scale_length   s    ))6D4E+EEEr   N)r   r   r   r   )r   r   r   r   r   r   )r    r!   r"   r!   r   r   )r&   r!   r'   r!   r   r   )
r&   r!   r'   r!   r+   r!   r,   r!   r   r   )r   r   )r0   r0   )
r1   r!   r2   r!   r3   r!   r4   r!   r   r   )r   r   )rK   r   r    r!   r"   r!   )r8   r!   r9   r!   r   r   )rS   rT   r   rU   )r^   rT   r   rU   )rb   r!   r   rc   )__name__
__module____qualname__r   r   r%   r*   r.   r   rH   rJ   r$   rQ   rO   r]   ra   re   rX   r   r   r
   r
      sQ       	$ 	$ 	$ 	$   
W W W W/ / / /
( ( ( (    A A A A A8A A A A % % % % %9 9 9 9   ; ; ; ;= = = =F F F F F Fr   r
   )
__future__r   typingr   r;   depsr   r   INCH_TO_PLU	MM_TO_PLUr
   rX   r   r   <module>rn      s    # " " " " "                       	uF uF uF uF uF uF uF uF uF uFr   