
    %^g                     N    d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d de      Z	y)	z+
Wand (>=v0.3.0) engine for Sorl-thumbnail
    )
exceptions)Image)MAGICK_VERSION_NUMBER)
EngineBasec                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 ZddZy
)Enginec                 6    t        |j                               S )Nblob)r   read)selfsources     f/var/www/html/webapps/promises/venv/lib/python3.12/site-packages/sorl/thumbnail/engines/wand_engine.py	get_imagezEngine.get_image   s    &++-((    c                     |j                   S N)sizer   images     r   get_image_sizezEngine.get_image_size   s    zzr   c                 p    	 t        |       y# t        j                  t        j                  f$ r Y yw xY w)z
        Wand library makes sure when opening any image that is fine, when
        the image is corrupted raises an exception.
        r
   TF)r   r   CorruptImageErrorMissingDelegateError)r   raw_datas     r   is_valid_imagezEngine.is_valid_image   s5    	x ,,j.M.MN 		s    #55c                    |j                   }|dk(  r|j                          n|dk(  r|j                  d       n|dk(  r|j                          n|dk(  r#|j                  d       |j                          nW|dk(  r|j                  d       n?|d	k(  r#|j                  d
       |j                          n|dk(  r|j                  d
       d|_         |S )N	top_rightbottom_right   )degreebottom_leftleft_topZ   	right_topright_bottomileft_bottomtop_left)orientationfloprotateflip)r   r   r)   s      r   _orientationzEngine._orientation   s    ''+%JJLN*LLL$M)JJLJ&LLL#JJLK'LLL#N*LLL$JJLM)LLL$&r   c                     |j                   dv S )N)r#   r%   r&   r'   )r)   r   s     r   _flip_dimensionszEngine._flip_dimensions4   s      $\\\r   c                     |dk(  r0|j                   rt        dk  r	d|_        |S d|_        |S d|_        |S |dk(  r0|j                   rt        dk  r	d|_        |S d|_        |S d	|_        |S |S )
NRGBi   truecolormattetruecoloralpha	truecolorGRAYgrayscalemattegrayscalealpha	grayscale)alpha_channelr   type)r   r   
colorspaces      r   _colorspacezEngine._colorspace7   s    ""(50!1EJ  "2EJ  )
  6!""(50!1EJ  "2EJ
  )
  Lr   c                 *    |j                  ||       |S r   )resize)r   r   widthheights       r   _scalezEngine._scaleL   s    UF#r   c                 0    |j                  ||||       |S N)lefttopr?   r@   crop)r   r   r?   r@   x_offsety_offsets         r   _cropzEngine._cropP   s    

heF
Kr   c                 <    |j                  ||||z
  ||z
         |S rC   rF   )r   r   xyx2y2s         r   _cropboxzEngine._cropboxT   s#    

qQrAv
>r   Nc                 z    ||_         |dk(  r|rd|_        |j                         S ||_        |j                         S )NJPEGpjpeg)compression_qualityformat	make_blob)r   r   format_quality
image_infoprogressives         r   _get_raw_datazEngine._get_raw_dataX   s@    $+!f"EL    #EL  r   )NF)__name__
__module____qualname__r   r   r   r-   r/   r<   rA   rJ   rP   r[    r   r   r   r      s5    )
*]*!r   r   N)
__doc__wandr   
wand.imager   wand.versionr   sorl.thumbnail.engines.baser   r   r_   r   r   <module>re      s&      . 2R!Z R!r   