o
    h                     @   s  d Z ddlmZ ddl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mZ ddlmZ ddlmZ ddlmZ G dd dejZG d	d
 d
ejZG dd dejZG dd deZee e	dgdddd Z e	dgde! dkr~dndddd Z"dS )z)
Testing that skewed Axes properly work.
    )	ExitStackN)image_comparison)Axes)register_projectionc                       s$   e Zd Z fddZdd Z  ZS )	SkewXTickc                    s   t  g}| j| j| j| j| jfD ]}||j|  qt	
| jj|  }t	
| jj|  }| j| j o9| | j| j oD| | j| j oO| | j| j oZ| t | W d    d S 1 smw   Y  d S N)r   gridline	tick1line	tick2linelabel1label2callbackset_visibleget_visible
transformsinterval_containsaxes
lower_xlimget_loc
upper_xlimsuperdraw)selfrendererstackartistneeds_lowerneeds_upper	__class__ n/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/tests/test_skew.pyr      s2   "zSkewXTick.drawc                 C   s   | j j S r   )r   xaxisget_view_intervalr   r    r    r!   r#   *   s   zSkewXTick.get_view_interval)__name__
__module____qualname__r   r#   __classcell__r    r    r   r!   r      s    r   c                   @   s   e Zd Zdd Zdd ZdS )	SkewXAxisc                 C   s   t | jd |dS )N)major)r   r   )r   r*   r    r    r!   	_get_tick1   s   zSkewXAxis._get_tickc                 C   s   | j jd | j jd fS )Nr      )r   r   r   r$   r    r    r!   r#   4   s   zSkewXAxis.get_view_intervalN)r%   r&   r'   r+   r#   r    r    r    r!   r)   0   s    r)   c                   @   s   e Zd Zdd ZdS )	SkewSpinec                 C   sB   | j j}| jdkr| jj|d d df< d S | jj|d d df< d S )Ntopr   )_pathvertices
spine_typer   r   r   r   ptsr    r    r!   _adjust_location<   s   
zSkewSpine._adjust_locationN)r%   r&   r'   r4   r    r    r    r!   r-   ;   s    r-   c                       sH   e Zd ZdZdd Zdd Z fddZedd	 Zed
d Z	  Z
S )	SkewXAxesskewxc                 C   sZ   t | | _| jj| j | jj| j t| | _| jj	| j | jj
| j d S r   )r)   r"   spinesr.   register_axisbottommaxisYAxisyaxisleftrightr$   r    r    r!   
_init_axisL   s   
zSkewXAxes._init_axisc                 C   s8   t | dtj| dtj| dtj| dd}|S )Nr.   r9   r=   r>   )r.   r9   r=   r>   )r-   linear_spinemspinesSpine)r   r7   r    r    r!   _gen_axes_spinesU   s   
zSkewXAxes._gen_axes_spinesc                    sn   d}t    | j| jt |d  | _| j| j | _	t
| j| j t t |d | j | _dS )z
        This is called once when the plot is created to set up all the
        transforms for the data, text and grids.
           r   N)r   _set_lim_and_transforms
transScaletransLimitsr   Affine2Dskew_degtransDataToAxes	transAxes	transDatablended_transform_factoryIdentityTransform_xaxis_transform)r   rotr   r    r!   rE   \   s    


z!SkewXAxes._set_lim_and_transformsc                 C   s
   | j jjS r   )r   viewLim	intervalxr$   r    r    r!   r   y   s   
zSkewXAxes.lower_xlimc                 C   s,   ddgddgg}| j  |d d df S )Ng        g      ?r   )rJ   inverted	transformr2   r    r    r!   r   }   s   zSkewXAxes.upper_xlim)r%   r&   r'   namer?   rC   rE   propertyr   r   r(   r    r    r   r!   r5   G   s    	
r5   	skew_axesT)remove_textc                  C   sN   t  } | jddddd}|dd |dd |d |jddd	 d S )
Nr,   r6   )
projectioni2   Tr   b)color)pltfigureadd_subplotset_xlimset_ylimgridaxvline)figaxr    r    r!   test_set_line_coll_dash_image   s   
rf   
skew_rectsx86_64g;On?)rX   tolc            	      C   s   t jdddddd\} }|j}ttjg ddd}|d d	d
g |d d	d
g |d jddd t	||D ]6\}\}}d| d| }}t
 ||}|d| d| d |tjddgdd||j ddd q:t jdddddd d S )N   T)   rk   )sharexshareyfigsize)r   r,         )repeatr   ro   rq   equal)share-   zSkew of z
 in X and z in Yrp   g      ?coral)rT   alpha	facecolorg{Gz?gGz?)wspacer=   r>   r9   r.   )r]   subplotsflatlist	itertoolsproductr`   ra   
set_aspectzipr   rH   rI   	set_title	add_patchmpatch	RectanglerL   subplots_adjust)	fixr   	rotationsre   xrotsyrotsxdegydegtr    r    r!   test_skew_rectangle   s   
r   )#__doc__
contextlibr   r~   platformmatplotlib.pyplotpyplotr]   matplotlib.testing.decoratorsr   matplotlib.axesr   matplotlib.transformsr   matplotlib.axisaxisr:   matplotlib.spinesr7   rA   matplotlib.patchespatchesr   matplotlib.projectionsr   XTickr   XAxisr)   rB   r-   r5   rf   machiner   r    r    r    r!   <module>   s.    >
