
    j0                         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dS )z
Images manager.

    N)BytesIO)ImageImageOps   )node_formatpreserve_ratiosize)Tree)cairo)	parse_url)optimizeQualityoptimizeSpeedc                    |                     d          }|s.|j        r't          j                            |j                  dz   }t          |                                |          }|                    |d          }t          |          dk     rdS t          | |                     d          d          t          | |                     d          d          }}t          | |                     d          d          }t          | |                     d	          d          }|
                    d
          r| j        st          |          }	ni|
                    d          sd|v rd|v r|d= d|v r|d= t          |                                |j        || j        |j                  }
t%          | |
d          \  }}}|r||d         z  }||d         z  }n|x}|
d<   |x}|
d	<   dx}}|p||_        |p||_        t+          | |          \  }}}}| j                            ||||           | j                                         | j                                         | j                            ||            | j        j        | j                                          | j                            ||z  ||z             | j                            ||           |                     |
           | j                                         dS t                      }	t?          j         tC          j"        t          |                              }| j        r|                     |          }|j#        dk    r|$                    d          }|                    |	d           |	%                    d           tL          j'        (                    |	          }tM          j)        |          |_*        |j*        +                    tX                               |                     d          tL          j-                             |.                                |_        |/                                |_        |p|j        }|p|j        }t+          | |||          \  }}}}|dk    r"|dk    r|||j        z  k    r|||j        z  k    s6| j                            ||||           | j                                         ta          |                     dd                    }| j                                         | j                            ||           | j                            ||           | j                            ||           | j        1                    |j*                   | j        2                    |           | j                                         dS )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                          U/home/ubuntu/budget-transfer-bot/.venv/lib/python3.11/site-packages/cairosvg/image.pyrW   rW      s   xxDEEH 3 37??48,,s2
DMMOOX
.
.C..i00K
;!#,,d7DHHSMM3.O.OqA$((7++S11E'488H--s33Fj)) 2'2C 2;''JKK0k!!$;;S	$;;S	

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

8U###a&66x@@M!0??M$$_%8%8"##U%6&8 &8 9 9 9 %..00D%0022D%T%E(t(F1?uf2& 2&.GWk; 11Wt////g 1111!!!Qv666 DHHY**++GOOa###O'7+++Ok;777O}4555O$$W---O    c                     |                      d                                          ^ }}t          j        dg t	          t
          j        |          |R           S )zInvert the colors of an image.RGBA)r:   splitr   mergemapr   invert)imgrgbas      rY   invert_imagerd   x   sO    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      s    
                6 6 6 6 6 6 6 6 6 6                   (& _ _ _D@ @ @ @ @rZ   