
     h0                         d Z ddlZddlmZ ddlmZmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZ dd	lmZ ej$                  ej&                  d
Zd Zd Zy)z
Images manager.

    N)BytesIO)ImageImageOps   )node_formatpreserve_ratiosize)Tree)cairo)	parse_url)optimizeQualityoptimizeSpeedc                 ^   |j                  d      }|s8|j                  r,t        j                  j	                  |j                        dz   }t        |j                         |      }|j                  |d      }t        |      dk  ryt        | |j                  d      d      t        | |j                  d      d      }}t        | |j                  d      d      }t        | |j                  d	      d      }|j                  d
      r| j                  st        |      }	nb|j                  d      sd|v rd|v r|d= d|v r|d= t        |j                         |j                  || j                   |j"                        }
t%        | |
d      \  }}}|r||d   z  }||d   z  }n|x}|
d<   |x}|
d	<   dx}}|xs ||_        |xs ||_        t+        | |      \  }}}}| j,                  j/                  ||||       | j,                  j1                          | j,                  j3                          | j,                  j5                  ||        | j,                  j4                  | j,                  j7                           | j,                  j9                  ||z  ||z         | j,                  j5                  ||       | j;                  |
       | j,                  j=                          yt               }	t?        j@                  tC        jD                  t        |                  }| j                  r| j                  |      }|jF                  dk(  r|jI                  d      }|j3                  |	d       |	jK                  d       tL        jN                  jQ                  |	      }tM        jR                  |      |_*        |jT                  jW                  tX        j                  |j                  d      tL        jZ                               |j]                         |_        |j_                         |_        |xs |j&                  }|xs |j(                  }t+        | |||      \  }}}}|dk(  r)|dk(  r$|||j&                  z  k(  r|||j(                  z  k(  s8| j,                  j/                  ||||       | j,                  j1                          ta        |j                  dd            }| j,                  j3                          | j,                  j5                  ||       | j,                  j9                  ||       | j,                  j5                  ||       | j,                  jc                  |jT                         | j,                  je                  |       | j,                  j=                          y)zDraw an image ``node``.z*{http://www.w3.org/XML/1998/namespace}base/zimage/*   Nxywidthheights   PNG)s   <svg s   <?xmls   <!DOCs   s   <svg)urlurl_fetcher
bytestring
tree_cacheunsafeF)	reference      r   CMYKRGBPNGr   zimage-renderingopacity)3getr   ospathdirnamer   get_href	fetch_urllenr	   
startswith	map_imager   r
   geturlr   r   r   r   image_widthimage_heightr   context	rectangleclipsave	translateget_current_pointscaledrawrestorer   exif_transposer   openmodeconvertseekr   ImageSurfacecreate_from_pngSurfacePatternpattern
set_filterIMAGE_RENDERINGFILTER_GOOD	get_width
get_heightfloat
set_sourcepaint_with_alpha)surfacenodebase_urlr   image_bytesr   r   r   r   png_filetree
tree_widthtree_heightviewboxtree_scale_xtree_scale_yscale_xscale_ytranslate_xtranslate_yimageimage_surfacer!   s                          j/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/cairosvg/image.pyrW   rW      s   xxDEH77??488,s2
DMMOX
.C..i0K
;!#,d7DHHSM3.OqA$((7+S1E'488H-s3Fj)'2C2C;'JKk!$;S	$;S	

$*:*:"w/A/A;;  ,7TU,,(
K%
2L&3L)..Jg+11K$x.*++L<%.'165CT62+{ 	!!!Qv6 	!!!Q'!!!7??#D#D#FGg4g6LM!!+{;T!9''

7;3G(HI%%e,E::MM%(E

8U#a&&66x@M!00?M$$_%8%8"#U%6%6&8 9 %..0D%002D%T%%E(t((F1?uf2&.GWk; 11Wt////g 1 111!!!Qv6 DHHY*+GOOOOa#OO'7+OOk;7OO}445OO$$W-OO    c                     | j                  d      j                         ^ }}t        j                  dg t	        t
        j                  |      |      S )zInvert the colors of an image.RGBA)r:   splitr   mergemapr   invert)imgrgbas      rY   invert_imagerd   x   sD    kk&!'')GS!;;v>X__c!:>A>??rZ   )__doc__os.pathr#   ior   PILr   r   helpersr   r   r	   parserr
   rH   r   r   r   FILTER_BESTFILTER_FASTrA   rW   rd    rZ   rY   <module>rn      sL   
    6 6    ((&&_D@rZ   