
     h              
          d 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xZ
Zd	Zd
Z ej                  d      ZerD eed      r;ej#                  d      D ]'  Z eeef      5   ej*                  e       ddd       ) d Z ee	dd      Z G d de      Z G d de      ZeZej:                  eej>                  e ejB                  e ejD                  e ejF                  eiZ$d Z%d Z&d Z'd Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 	 ddl2m3Z3 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZD ddl y# 1 sw Y   xY w# e4$ r Y Aw xY w) z
    cairocffi
    ~~~~~~~~~

    CFFI-based cairo bindings for Python. See README for details.

    :copyright: Copyright 2013-2019 by Simon Sapin
    :license: BSD, see LICENSE for details.

    N)suppress)find_library   )	constants)ffiz1.7.1z1.17.2)r         CAIROCFFI_DLL_DIRECTORIESadd_dll_directory;c                 F   g }|D ]6  }t        |      }|r|g|}|j                  dj                  |             8 |D ]  }	  | j                  |      c S  dj                  d |D              }t	        |      # t        $ r}|j                  |       Y d}~[d}~ww xY w)z@Try various names for the same library, for different platforms.z no library called "{}" was foundN
c              3   2   K   | ]  }t        |        y wN)str).0	exceptions     n/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/cairocffi/__init__.py	<genexpr>zdlopen.<locals>.<genexpr>7   s      4$I4s   )r   appendformatdlopenOSErrorjoin)	r   library_names	filenames
exceptionslibrary_namelibrary_filenamefilenamer   error_messages	            r   r   r   %   s    J% I'5)6I6I299,GII  )	)3::h'') II 4(24 4M
-
    	)i((	)s   A<<	B BB )zcairo-2cairoz
libcairo-2)zlibcairo.so.2zlibcairo.2.dylibzlibcairo-2.dllc                       e Zd ZdZd Zd Zy)_keeprefz:Function wrapper that keeps a reference to another object.c                      || _         || _        y r   )reffunc)selfr&   r'   s      r   __init__z_keepref.__init__C   s    	    c                 (     | j                   |i | y r   )r'   )r(   argskwargss      r   __call__z_keepref.__call__G   s    		4"6"r*   N)__name__
__module____qualname____doc__r)   r.    r*   r   r$   r$   A   s    D#r*   r$   c                   "     e Zd ZdZ fdZ xZS )
CairoErrorz*Raised when cairo returns an error status.c                 :    t         t        |   |       || _        y r   )superr5   r)   status)r(   messager8   	__class__s      r   r)   zCairoError.__init__M   s    j$(1r*   )r/   r0   r1   r2   r)   __classcell__)r:   s   @r   r5   r5   K   s    4 r*   r5   c                    | t         j                  k7  rzt        j                  | t              }t        j                  t        j                  d|             }d|dt        j                  t        j                  |             } |||       y)zBTake a cairo status code and raise an exception if/as appropriate.cairo_status_tzcairo returned z: N)
r   STATUS_SUCCESSSTATUS_TO_EXCEPTIONgetr5   r   stringcastr"   cairo_status_to_string)r8   r   status_namer9   s       r   _check_statusrE   ]   so    )))'++FJ?	jj*:F!CDE$@$@$HIK(( *r*   c                  *    t         j                         S )a^  Return the cairo version number as a single integer,
    such as 11208 for ``1.12.8``.
    Major, minor and micro versions are "worth" 10000, 100 and 1 respectively.

    Can be useful as a guard for method not available in older cairo versions::

        if cairo_version() >= 11000:
            surface.set_mime_data('image/jpeg', jpeg_bytes)

    )r"   cairo_versionr3   r*   r   rG   rG   g   s       r*   c                  n    t        j                  t        j                               j	                  d      S )z@Return the cairo version number as a string, such as ``1.12.8``.ascii)r   rA   r"   cairo_version_stringdecoder3   r*   r   rJ   rJ   u   s%    ::e0023::7CCr*   c                  T    t         j                  t           t         j                  d<   y)u   Install cairocffi so that ``import cairo`` imports it.

    cairoffi’s API is compatible with pycairo as much as possible.

    r"   N)sysmodulesr/   r3   r*   r   install_as_pycairorO   z   s     ;;x0CKKr*   )SurfaceImageSurface
PDFSurface	PSSurface
SVGSurfaceRecordingSurfaceWin32SurfaceWin32PrintingSurface)
XCBSurface)PatternSolidPatternSurfacePatternGradientLinearGradientRadialGradient)FontFaceToyFontFace
ScaledFontFontOptions)Context)Matrix)*)Er2   osrM   
contextlibr   ctypes.utilr    r   r   VERSION__version__versionversion_infogetenvdll_directorieshasattrsplitpathr   FileNotFoundErrorr   r   r"   objectr$   	Exceptionr5   ErrorSTATUS_NO_MEMORYMemoryErrorSTATUS_READ_ERRORIOErrorSTATUS_WRITE_ERRORSTATUS_TEMP_FILE_ERRORSTATUS_FILE_NOT_FOUNDr?   rE   rG   rJ   rO   surfacesrP   rQ   rR   rS   rT   rU   rV   rW   xcbrX   ImportErrorpatternsrY   rZ   r[   r\   r]   r^   fontsr_   r`   ra   rb   contextrc   matrixrd   r3   r*   r   <module>r      s}  	 
 
  $   +
 "))78wr#67%%c* 'w 123 	' B  &	' 	''
!. 		+;	=
#v #  	   '$$g##%6 )!D
1( ( (	 4 4   g	' 	'R  		s   &D;E ;E	EE