
    Dho/                         d dl Z d dlZd dlZd dlmZmZmZmZmZmZm	Z	m
Z
mZmZ  e j                  e      Z G d de      ZdgZy)    N)
ffivips_libgobject_libglib_libError	_to_bytes
_to_string	type_nametype_from_nameat_least_libvipsc                   j   e Zd ZdZdZ ed      Z ed      Z ed      Z ed      Z	 ed      Z
 ed      Z ed	      Z ed
      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Zej.                  j1                           ed      Z edd      rej.                  j7                           ed      Zi ededede	de
dedededed
edededededed ed!Zed"        Zed#        Z ed$        Z!ed%        Z"d& Z#d' Z$d( Z%d) Z&y*)+GValuea  Wrap GValue in a Python class.

    This class wraps :class:`.GValue` in a convenient interface. You can use
    instances of this class to get and set :class:`.GObject` properties.

    On construction, :class:`.GValue` is all zero (empty). You can pass it to
    a get function to have it filled by :class:`.GObject`, or use init to
    set a type, set to set a value, then use it to set an object property.

    GValue lifetime is managed automatically.

    )pointergvaluegbooleangintguint64gdouble
gchararrayGEnumGFlagsGObject	VipsImageVipsArrayIntVipsArrayDoubleVipsArrayImageVipsRefStringVipsBlob
VipsSource
VipsTargetVipsBandFormat      VipsBlendModeboolintlongfloatstrImagez	list[int]zlist[float]zlist[Image]SourceTargetc                 6   t        j                  |       }|t        j                  k(  r't	        |       }|j                  d      r|dd }d| dS | t        j                  v rt        j                  |    S |t        j                  v rt        j                  |   S y)zLMap a gtype to the name of the Python type we use to represent it.

        Vips   NzUnion[str, ]z<unknown type>)r   g_type_fundamentalr   
genum_typer
   
startswith_gtype_to_python)gtypefundamentalnames      o/var/www/fastuser/data/www/generator.snapmosaic.io/flask_app/venv/lib/python3.12/site-packages/pyvips/gvalue.pygtype_to_pythonzGValue.gtype_to_pythonI   s     "44U; &+++U#Dv&ABx a((F+++**511&111**;77    c                     t        |t              rLt        j                  d| t	        |            }|dk  r%t        dj                  |t        |       |             |S |}|S )zKTurn a string into an enum value ready to be passed into libvips.

           pyvipsr   no value {0} in gtype {1} ({2}))
isinstancer)   r   vips_enum_from_nickr   r   formatr
   )r5   value
enum_values      r8   to_enumzGValue.to_enum^   sl     eS!!55i6?6FHJA~="F5)E*:EBD D
  Jr:   c                     t        j                  | |      }|t        j                  k(  rt	        d      t        |      S )z/Turn an int back into an enum string.

        zvalue not in enum)r   vips_enum_nickr   NULLr   r	   )r5   rB   r   s      r8   	from_enumzGValue.from_enumo   s9     ))%<chh+,,'""r:   c                     t        |t              rLt        j                  d| t	        |            }|dk  r%t        dj                  |t        |       |             |S |}|S )zJTurn a string into a flag value ready to be passed into libvips.

        r<   r   r=   )r>   r)   r   vips_flags_from_nickr   r   r@   r
   )r5   rA   
flag_values      r8   to_flagzGValue.to_flag{   sl     eS!!66y%7@7GIJA~="F5)E*:EBD D
  Jr:   c                     t        j                  d      | _        t        j                  | j                  t        j
                        | _        y )NzGValue *)r   newr   gcr   g_value_unsetr   )selfs    r8   __init__zGValue.__init__   s0    wwz* ffT\\;+D+DEr:   c                 D    t        j                  | j                  |       y)a  Set the type of a GValue.

        GValues have a set type, fixed at creation time. Use set_type to set
        the type of a GValue before assigning to it.

        GTypes are 32 or 64-bit integers (depending on the platform). See
        type_find.

        N)r   g_value_initr   )rP   r5   s     r8   set_typezGValue.set_type   s     	  e4r:   c                 	   | j                   j                  }t        j                  |      }|t        j
                  k(  r!t        j                  | j                   |       y|t        j                  k(  r*t        j                  | j                   t        |             y|t        j                  k(  r!t        j                  | j                   |       y|t        j                  k(  r!t        j                  | j                   |       y|t        j                  k(  r5t        j                  | j                   t        j!                  ||             y|t        j"                  k(  r5t        j$                  | j                   t        j'                  ||             y|t        j(                  k(  r*t        j*                  | j                   t-        |             y|t        j.                  k(  r*t1        j2                  | j                   t-        |             y|t        j4                  k(  r+t        j6                  | j                   |j8                         y|t        j:                  k(  r^t=        |t>        j@                        r|g}tC        jD                  d|      }t1        jF                  | j                   |tI        |             y|t        jJ                  k(  r^t=        |t>        j@                        r|g}tC        jD                  d|      }t1        jL                  | j                   |tI        |             y|t        jN                  k(  rt=        |tP        jR                        r|g}t1        jT                  | j                   tI        |             t1        jV                  | j                   tB        jX                        }t[        |      D ]3  \  }}t        j\                  |j8                         |j8                  ||<   5 y|t        j^                  k(  rta        jb                  tI        |            }tC        jd                  ||tI        |             tP        jf                  sti        dd      r+t1        jj                  | j                   |tI        |             yt1        jl                  | j                   t`        jn                  |tI        |             ytq        djs                  tu        |      tu        |                  )zuSet a GValue.

        The value is converted to the type of the GValue, if possible, and
        assigned.

        zint[]zdouble[]r"   r#   z.unsupported gtype for set {0}, fundamental {1}N);r   g_typer   r1   r   
gbool_typeg_value_set_boolean	gint_typeg_value_set_intr&   guint64_typeg_value_set_uint64gdouble_typeg_value_set_doubler2   g_value_set_enumrC   gflags_typeg_value_set_flagsrK   	gstr_typeg_value_set_stringr   refstr_typer   vips_value_set_ref_stringgobject_typeg_value_set_objectr   array_int_typer>   numbersNumberr   rM   vips_value_set_array_intlenarray_double_typevips_value_set_array_doublearray_image_typepyvipsr*   vips_value_set_array_imagevips_value_get_array_imagerF   	enumerateg_object_ref	blob_typer   g_mallocmemmoveAPI_moder   vips_value_set_blob_freevips_value_set_blobg_freer   r@   r
   )rP   rA   r5   r6   arrayiimagememorys           r8   setz
GValue.set   sj    ""!44U;F%%%++DKK?f&&&''SZ@f)))**4;;>f)))**4;;>F---(()/u)EGF...))$++*0..*FHf&&&**4;;	%8HIf(((..t{{Ie<LMF///**4;;Ff+++%0GGGU+E--dkk5#e*Mf...%0GGJ.E00e14U=f---%.//SZH77SXXNE%e, )5((7 ==a) f&&& &&s5z2FKKs5z2 "21a"811$++28#e*F ,,T[[-5__-3SZA Hy/;1GHJ Jr:   c                 	   | j                   j                  }t        j                  |      }d}|t        j
                  k(  r*t        t        j                  | j                               }|S |t        j                  k(  r!t        j                  | j                         }|S |t        j                  k(  r!t        j                  | j                         }|S |t        j                  k(  r!t        j                  | j                         }|S |t        j                  k(  r3t        j                  |t        j                   | j                               S |t        j"                  k(  r!t        j$                  | j                         }|S |t        j&                  k(  r?t        j(                  | j                         }|t*        j,                  k7  rt/        |      }|S |t        j0                  k(  rBt+        j2                  d      }t5        j6                  | j                   |      }t/        |      }|S |t        j8                  k(  rat        j:                  | j                         }t+        j<                  d|      }t        j>                  |       tA        jB                  |      }|S |t        jD                  k(  rat+        j2                  d      }t5        jF                  | j                   |      }	g }tI        d|d         D ]  }
|jK                  |	|
           |S |t        jL                  k(  rat+        j2                  d      }t5        jN                  | j                   |      }	g }tI        d|d         D ]  }
|jK                  |	|
           |S |t        jP                  k(  rt+        j2                  d      }t5        jR                  | j                   |      }	g }tI        d|d         D ]B  }
|	|
   }t        j>                  |       tA        jB                  |      }|jK                  |       D |S |t        jT                  k(  rft+        j2                  d      }t5        jV                  | j                   |      }	t+        j<                  d|	      }t+        jX                  ||d         }|S t[        dj]                  t_        |                  )ziGet the contents of a GValue.

        The contents of the GValue are read out as a Python type.
        Nzsize_t *zVipsImage *zint *r   zchar*zunsupported gtype for get {0})0r   rV   r   r1   r   rW   r%   g_value_get_booleanrY   g_value_get_intr[   g_value_get_uint64r]   g_value_get_doubler2   rG   g_value_get_enumr`   g_value_get_flagsrb   g_value_get_stringr   rF   r	   rd   rM   r   vips_value_get_ref_string
image_typeg_value_get_objectcastrt   rp   r*   rh   vips_value_get_array_intrangeappendrm   vips_value_get_array_doublero   rr   ru   vips_value_get_blobunpackr   r@   r
   )rP   r5   r6   resultr   psizegovipintr|   r}   r~   bufs                r8   getz
GValue.get   s    ""!44U;F%%%+99$++FGFL K f&&& 00=FH G f))) 33DKK@FD C f))) 33DKK@F@  F---##E$/$@$@$MO OF... 224;;?Fv u f&&&!44T[[AG#(("#G,l k f(((GGJ'E88eLG  (F^ ] f''' //<B-,B
 $$R(\\"%FF E f+++777#D55dkk4HEF1d1g& (eAh'(: 7 f...777#D88dKEF1d1g& (eAh'(, ) f---777#D77TJEF1d1g& %1X((,R(e$	%  f&&&GGJ'E00eDE((7E*CZZU1X.F
  7y/02 2r:   N)'__name__
__module____qualname____doc__	__slots__r   rW   rY   r[   r]   rb   r2   r`   rf   r   rh   rm   ro   rd   ru   source_typetarget_typerp   r   vips_band_format_get_typeformat_typer   vips_blend_mode_get_typeblend_mode_typer4   staticmethodr9   rC   rG   rK   rQ   rT   r   r    r:   r8   r   r      s     &I  
+Jv&I!),L!),L|,I(J *K!),L,J#N3N&'89%&67 1Kz*I .K .K
OO--/ !12K1002$_5OF5 	f 	g	
 	5 	U 	E 	U 	i 	G 	 	= 	- 	5 	X  	X!&    (    	# 	#   F5JJXTr:   r   )loggingri   rp   r   r   r   r   r   r   r	   r
   r   r   	getLoggerr   loggerobjectr   __all__r   r:   r8   <module>r      sI         
		8	$vV vr	 *r:   