
    Og^                    P    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
y)
    )annotations)SequenceN   )Vec2NULLVEC2i  (   c                      e Z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d	Zdd
ZddZddZddZddZy)Pagec                    t        |      | _        t        |      | _        t        | _        t        ||      | _        d| _        d| _        d| _	        t        | _
        y )NF      ?)intsize_xsize_yr   p1r   p2user_scalinguser_scale_xuser_scale_yuser_origin)selfr   r   s      \/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/hpgl2/page.py__init__zPage.__init__   sM    &k&kvv&!#&#&#    c                d    | j                          t        |      | _        t        |      | _        y N)reset_scalingr   r   r   )r   r   r   s      r   set_scaling_pointszPage.set_scaling_points   s$    r(r(r   c                r    | j                  | j                  | j                  |z  | j                  |z         y r   )set_ucsr   r   r   )r   sxsys      r   apply_scaling_factorszPage.apply_scaling_factors"   s/    T%%t'8'82'=t?P?PSU?UVr   c                    | j                   | j                  z
  }t        | j                  |z  | j                  |z        }| j                  |||z          y r   )r   r   r   r   r   r   )r   xp1yp1sizer   s        r   set_scaling_points_relative_1z"Page.set_scaling_points_relative_1%   sF    ww $++#T[[3%67BI.r   c                    t        | j                  |z  | j                  |z        }t        | j                  |z  | j                  |z        }| j                  ||       y r   )r   r   r   r   )r   r$   r%   xp2yp2r   r   s          r   set_scaling_points_relative_2z"Page.set_scaling_points_relative_2*   sP     $++#T[[3%67$++#T[[3%67B'r   c                    t         | _        t        | j                  | j                        | _        | j                  t                y r   )r   r   r   r   r   r   r   )r   s    r   r   zPage.reset_scaling1   s+    t{{DKK0Xr   c                d   | j                   | j                  z
  }||z
  }||z
  }	d}
t        |      dkD  r|j                  |z  }
d}t        |	      dkD  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
  }| j                  t        ||      |
|       y Nr   g&.>)
r   r   absxyminmathcopysignr   r   )r   x_minx_maxy_miny_max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    ww %-%-w<$ffw&Gw<$ffw&GCL#g,/--w/--w/FFWw..$6FFWw..&87799x'%'/97799x'%'/9T(H-w@r   c                p   | j                   | j                  z
  }||z
  }||z
  }d}t        |      dkD  r|j                  |z  }d}	t        |      dkD  r|j                  |z  }	| j                  j                  ||z  z
  }
| j                  j                  ||	z  z
  }| j                  t        |
|      ||	       y r.   )r   r   r/   r0   r1   r   r   )r   r5   r6   r7   r8   r&   r;   r<   r=   r>   rB   rC   s               r   set_anisotropic_scalingzPage.set_anisotropic_scalingR   s     ww %-%-w<$ffw&Gw<$ffw&G7799uw.7799uw.T(H-w@r   c                ~   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| _        y d| _        y )Ngư>r   FT)	r   r   floatr   r   r/   r3   iscloser   )r   originr    r!   s       r   r   zPage.set_ucsb   s    <!"I!"It  !D( #Dt  !D( #D<<))3/DLLs5
 !&D $Dr   c                @    | j                  ||      | j                  z   S )z9Returns the page location as page point in plotter units.)page_vectorr   r   r0   r1   s      r   
page_pointzPage.page_pointq   s     1%(8(888r   c                n    | j                   r| j                  |z  }| j                  |z  }t        ||      S )z8Returns the user vector in page vector in plotter units.)r   r   r   r   rM   s      r   rL   zPage.page_vectoru   s7    !!A%A!!A%AAqzr   c                t    |D cg c](  }| j                  |j                  |j                        * c}S c c}w )z8Returns all user points as page points in plotter units.)rN   r0   r1   )r   pointsps      r   page_pointszPage.page_points|   s)    39:aQSS):::   -5c                t    |D cg c](  }| j                  |j                  |j                        * c}S c c}w )z:Returns all user vectors as page vectors in plotter units.)rL   r0   r1   )r   vectorsrR   s      r   page_vectorszPage.page_vectors   s+    4;<q  acc*<<<rT   c                >    || j                   z  || j                  z  fS )zJScale a length in user units to plotter units, scaling can be non-uniform.)r   r   )r   lengths     r   scale_lengthzPage.scale_length   s#    )))6D4E4E+EEEr   N)r   r   r   r   )r   r   r   r   returnNone)r    rH   r!   rH   r[   r\   )r$   rH   r%   rH   r[   r\   )
r$   rH   r%   rH   r)   rH   r*   rH   r[   r\   )r[   r\   )      ?r]   )
r5   rH   r6   rH   r7   rH   r8   rH   r[   r\   )r   r   )rJ   r   r    rH   r!   rH   )r0   rH   r1   rH   r[   r   )rQ   Sequence[Vec2]r[   
list[Vec2])rV   r^   r[   r_   )rY   rH   r[   ztuple[float, float])__name__
__module____qualname__r   r   r"   r'   r+   r   rD   rF   r   rN   rL   rS   rW   rZ    r   r   r
   r
      s    	$
W/
(($(+0(7<(	( AA A 	A
 A 
A8AA#(A16A?DA	A %9;=Fr   r
   )
__future__r   typingr   r3   depsr   r   INCH_TO_PLU	MM_TO_PLUr
   rc   r   r   <module>ri      s+    #    	uF uFr   