o
    à’OjJ
  ã                   @   sœ   d Z dZddlmZmZmZmZ dd„ Zd"dd„Zd#d	d
„Z	d$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d„ Zdd„ Zdd „ Zd!S )%z'functions for 2D affine transformations)ÚnullTransformÚ	translateÚscaleÚrotateÚskewXÚskewYÚmmultÚcombineTransformsÚinverseÚzTransformPointÚtransformPointÚtransformPointsÚzTransformPointsé    )ÚcosÚsinÚtanÚradiansc                   C   s   dS )N)é   r   r   r   r   r   © r   r   r   úb/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/reportlab/graphics/transform.pyr      s   r   c                 C   s   dddd| |fS ©Nr   r   r   )ÚdxÚdyr   r   r   r      ó   r   r   c                 C   s   | dd|ddfS )Nr   r   )ÚsxÚsyr   r   r   r      r   r   c                 C   s*   t | ƒ}t|ƒ}t|ƒ}||| |||fS ©N)r   r   r   )ÚangleÚcxÚcyÚaÚsinaÚcosar   r   r   r      s   r   c                 C   s   ddt t| ƒƒdddfS r   ©r   r   ©r   r   r   r   r   #   ó   r   c                 C   s   dt t| ƒƒddddfS r   r#   r$   r   r   r   r   &   r%   r   c                 C   s   |rt t| ƒt|ƒƒS t| ƒS r   )r   r   r   )ÚaxÚayr   r   r   Úskew)   s   r(   c              	   C   sÈ   | d |d  | d |d   | d |d  | d |d   | d |d  | d |d   | d |d  | d |d   | d |d  | d |d   | d  | d |d  | d |d   | d  fS )zA postmultiplied by Br   é   r   é   é   é   r   )ÚAÚBr   r   r   r   /   s   &&ûr   c                  G   sd   t | ƒ}|dkrt| d | d ƒS |dkr'tt| dd… Ž t| d | d ƒƒS |dkr/| d S tƒ S )a	  
    given transform matrices in the order they should be applied generate
    a combined transform.

    combineTransforms(T0,T1,T2) == mmult(T2,mmult(T1,T0))
                                == T2*T1*T0
    so that T0 is applied first, then T1 and finally T2.
    r)   r   r   N)Úlenr   r   r   )ÚTÚnTr   r   r   r   =   s   	ÿ*þýür   c                 C   s    t | d | d  | d | d   ƒ}| d | | d  | | d  | | d | g}t||d  | d  |d | d   |d  | d  |d | d   g ƒS )zBFor A affine 2D represented as 6vec return 6vec version of A**(-1)r   r*   r)   r   r+   r,   )ÚfloatÚtuple)r-   ÚdetÚRr   r   r   r	   N   s   $0Lr	   c                 C   s@   | d |d  | d |d   | d |d  | d |d   fS )zBApply the homogenous part of atransformation a to vector v --> A*vr   r)   r   r*   r   ©r-   Úvr   r   r   r
   U   s   @r
   c                 C   sP   | d |d  | d |d   | d  | d |d  | d |d   | d  fS )z*Apply transformation a to vector v --> A*vr   r)   r   r+   r*   r,   r   r6   r   r   r   r   Y   s   Pr   c                    s(   ‡ fdd„|D ƒ}t |tƒrt|ƒ}|S )Nc                    s   g | ]}t ˆ |ƒ‘qS r   )r   )Ú.0r7   ©Úmatrixr   r   Ú
<listcomp>^   s    z#transformPoints.<locals>.<listcomp>)Ú
isinstancer3   )r:   ÚVÚrr   r9   r   r   ]   s   r   c                 C   s   t t| fdd„|ƒƒS )Nc                 S   s
   t || ƒS r   )r
   )Úxr:   r   r   r   Ú<lambda>c   s   
 z"zTransformPoints.<locals>.<lambda>)ÚlistÚmap)r:   r=   r   r   r   r   b   s   r   N)r   )r   )r   r   )Ú__doc__Ú__all__Úmathr   r   r   r   r   r   r   r   r   r   r(   r   r   r	   r
   r   r   r   r   r   r   r   Ú<module>   s"    



