+
    ‰vj#  ã                   ó:   € Rt ^ RIt^ RIt^ RIHt  ! R R 4      tR# )Ú	PdfMatrixNc                   óž   a € ] tR t^t o RtRR ltR tR t]R 4       t	R t
]R 4       tR tR	 tR
 tR tRR ltR tRR ltR tR tRtV tR# )r   a_  
PDF transformation matrix helper class.

See the PDF 1.7 specification, Section 8.3.3 ("Common Transformations").

Note:
    * The PDF format uses row vectors.
    * Transformations operate from the origin of the coordinate system
      (PDF coordinates: commonly bottom left, but can be any corner in principle. Device coordinates: top left).
    * Matrix calculations are implemented independently in Python.
    * Matrix objects are immutable, so transforming methods return a new matrix.
    * Matrix objects implement ctypes auto-conversion to ``FS_MATRIX`` for easy use as C function parameter.

Attributes:
    a (float): Matrix value [0][0].
    b (float): Matrix value [0][1].
    c (float): Matrix value [1][0].
    d (float): Matrix value [1][1].
    e (float): Matrix value [2][0] (X translation).
    f (float): Matrix value [2][1] (Y translation).
c                óZ   € WW4WV3w  V n         V n        V n        V n        V n        V n        R # ©N©ÚaÚbÚcÚdÚeÚf)Úselfr   r   r	   r
   r   r   s   &&&&&&&Ú]/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/pypdfium2/_helpers/matrix.pyÚ__init__ÚPdfMatrix.__init__&   s'   € Ø9:¸qÀQÐ9IÑ6ˆŒ�”˜œ ¤¨¬°¶ó    c                ó(   € R V P                  4        2# ©r   )Úget©r   s   &r   Ú__repr__ÚPdfMatrix.__repr__)   s   € Ø˜4Ÿ8™8›:˜,Ð'Ð'r   c                óx   € \        V 4      \        V4      Jd   R # V P                  4       VP                  4       8H  # ©F)Útyper   ©r   Úothers   &&r   Ú__eq__ÚPdfMatrix.__eq__,   s,   € Ü�‹:œT %›[Ó(ÙØ�x‰x‹z˜UŸY™Y›[Ñ(Ð(r   c                óJ   € \         P                  ! V P                  4       4      # r   )ÚctypesÚbyrefÚto_rawr   s   &r   Ú_as_parameter_ÚPdfMatrix._as_parameter_1   s   € ä�|Š|˜TŸ[™[›]Ó,Ð,r   c                óŠ   € V P                   V P                  V P                  V P                  V P                  V P
                  3# )z9
Get the matrix as tuple of the form (a, b, c, d, e, f).
r   r   s   &r   r   ÚPdfMatrix.get6   s/   € ð —‘˜Ÿ™ §¡¨¯©°·±¸¿¹Ð?Ð?r   c                ó”   € V ! VP                   VP                  VP                  VP                  VP                  VP
                  4      # )zB
Load a :class:`.PdfMatrix` from a raw :class:`FS_MATRIX` object.
r   )ÚclsÚraws   &&r   Úfrom_rawÚPdfMatrix.from_raw=   s1   € ñ
 �3—5‘5˜#Ÿ%™% §¡¨¯©¨s¯u©u°c·e±eÓ<Ð<r   c                óF   € \         P                  ! V P                  4       !  # )z8
Convert the matrix to a raw :class:`FS_MATRIX` object.
)Úpdfium_cÚ	FS_MATRIXr   r   s   &r   r"   ÚPdfMatrix.to_rawE   s   € ô ×!Ò! 4§8¡8£:Ñ.Ð.r   c           
     óD  € \        V P                  VP                  ,          V P                  VP                  ,          ,           V P                  VP                  ,          V P                  VP                  ,          ,           V P                  VP                  ,          V P                  VP                  ,          ,           V P                  VP                  ,          V P                  VP                  ,          ,           V P
                  VP                  ,          V P                  VP                  ,          ,           VP
                  ,           V P
                  VP                  ,          V P                  VP                  ,          ,           VP                  ,           R7      # )zV
Multiply this matrix by another :class:`.PdfMatrix`, to concatenate transformations.
r   )r   r   r   r	   r
   r   r   r   s   &&r   ÚmultiplyÚPdfMatrix.multiplyL   sã   € ô Ø—‘�u—w‘w• §¡¨¯©¥Õ/Ø—‘�u—w‘w• §¡¨¯©¥Õ/Ø—‘�u—w‘w• §¡¨¯©¥Õ/Ø—‘�u—w‘w• §¡¨¯©¥Õ/à—‘�u—w‘w• §¡¨¯©¥Õ/°%·'±'Õ9Ø—‘�u—w‘w• §¡¨¯©¥Õ/°%·'±'Õ9ô
ð 	
r   c           
     ó>   € V P                  \        ^^ ^ ^W4      4      # )zc
Parameters:
    x (float): Horizontal shift (<0: left, >0: right).
    y (float): Vertical shift.
©r1   r   ©r   ÚxÚys   &&&r   Ú	translateÚPdfMatrix.translate_   s    € ð �}‰}œi¨¨1¨a°°AÓ9Ó;Ð;r   c                ó<   € V P                  \        V^ ^ V4      4      # )zƒ
Parameters:
    x (float): A factor to scale the X axis (<1: compress, >1: stretch).
    y (float): A factor to scale the Y axis.
r4   r5   s   &&&r   ÚscaleÚPdfMatrix.scalei   s   € ð �}‰}œi¨¨1¨a°Ó3Ó5Ð5r   c                ó   € V'       g   \         P                  ! V4      p\         P                  ! V4      \         P                  ! V4      rTT P	                  V'       d   \        WEV) V4      4      # \        WE) WT4      4      # )z±
Parameters:
    angle (float): Angle by which to rotate the matrix.
    ccw (bool): If True, rotate counter-clockwise.
    rad (bool): If True, interpret the angle as radians.
)ÚmathÚradiansÚcosÚsinr1   r   )r   ÚangleÚccwÚradr	   Úss   &&&&  r   ÚrotateÚPdfMatrix.rotates   sZ   € ÷ Ü—L’L Ó'ˆEÜ�xŠx˜‹¤§¢¨£ˆ1Ø�}‰}¿œi¨¨q¨b°!Ó4ÓYÐYÄÈ1ÈbÐRSÓAWÓYÐYr   c                óZ   € T P                  V'       d   RM^V'       d   RR7      # ^R7      # )aR  
Parameters:
    invert_x (bool): If True, invert X coordinates (horizontal transform). Corresponds to flipping around the Y axis.
    invert_y (bool): If True, invert Y coordinates (vertical transform). Corresponds to flipping around the X axis.
Note:
    Flipping around a vertical axis leads to a horizontal transform, and vice versa.
)r6   r7   éÿÿÿÿ)r;   )r   Úinvert_xÚinvert_ys   &&&r   ÚmirrorÚPdfMatrix.mirror€   s'   € ð �z‰z§8™R°¿h¸ˆzÓOÐOÈAˆzÓOÐOr   c           	     óô   € V'       g-   \         P                  ! V4      p\         P                  ! V4      pV P                  \        ^\         P                  ! V4      \         P                  ! V4      ^4      4      # )z±
Parameters:
    x_angle (float): Inner angle to skew the X axis.
    y_angle (float): Inner angle to skew the Y axis.
    rad (bool): If True, interpret the angles as radians.
)r>   r?   r1   r   Útan)r   Úx_angleÚy_anglerD   s   &&&&r   ÚskewÚPdfMatrix.skew‹   sP   € ÷ Ü—l’l 7Ó+ˆGÜ—l’l 7Ó+ˆGØ�}‰}œi¨¬4¯8ª8°GÓ+<¼d¿hºhÀwÓ>OÐQRÓSÓUÐUr   c                óò   € V P                   V,          V P                  V,          ,           V P                  ,           V P                  V,          V P                  V,          ,           V P
                  ,           3# )z1
Returns:
    (float, float): Transformed point.
)r   r	   r   r   r
   r   r5   s   &&&r   Úon_pointÚPdfMatrix.on_point˜   sP   € ð �F‰F�1�H�t—v‘v˜a•xÕ $§&¡&Õ(Ø�F‰F�1�H�t—v‘v˜a•xÕ $§&¡&Õ(ð
ð 	
r   c                ó  € V P                  W4      V P                  W4      V P                  W44      V P                  W24      3p\        R V 4       4      \        R V 4       4      \        R V 4       4      \        R V 4       4      3# )zC
Returns:
    (float, float, float, float): Transformed rectangle.
c              3   ó2   "  € T F  q^ ,          x € K  	  R# 5i©é    N© ©Ú.0Úps   & r   Ú	<genexpr>Ú$PdfMatrix.on_rect.<locals>.<genexpr>°   ó   é € Ð%™f˜�!—’›fùó   ‚c              3   ó2   "  € T F  q^,          x € K  	  R# 5i©é   Nr[   r\   s   & r   r_   r`   ±   ra   rb   c              3   ó2   "  € T F  q^ ,          x € K  	  R# 5irY   r[   r\   s   & r   r_   r`   ²   ra   rb   c              3   ó2   "  € T F  q^,          x € K  	  R# 5ird   r[   r\   s   & r   r_   r`   ³   ra   rb   )rU   ÚminÚmax)r   ÚleftÚbottomÚrightÚtopÚpointss   &&&&& r   Úon_rectÚPdfMatrix.on_rect¤   s   € ð �M‰M˜$Ó$Ø�M‰M˜$Ó'Ø�M‰M˜%Ó%Ø�M‰M˜%Ó(ð	
ˆô Ñ%™fÓ%Ó%ÜÑ%™fÓ%Ó%ÜÑ%™fÓ%Ó%ÜÑ%™fÓ%Ó%ð	
ð 	
r   r   N)re   rZ   rZ   re   rZ   rZ   )FFr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Úpropertyr#   r   Úclassmethodr*   r"   r1   r8   r;   rF   rL   rR   rU   ro   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s}   ø‡ € ñô0Jò(ò)ð
 ñ-ó ð-ò@ð ñ=ó ð=ò/ò
ò&<ò6ô
ZòPô
Vò	
÷
ð 
r   r   )Ú__all__r>   r    Úpypdfium2.rawr)   r-   r   r[   r   r   Ú<module>r}      s!   ðð €ã Û Ý  ÷
g
ó g
r   