Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ia@sddlZddlmZmZdZddZGdddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ iZx:eejD](\ZZedddkr~eeedd<q~WifddZdS)N)Image _imagingmathcCst|ttfS)N) isinstanceintfloat)vr ./tmp/tmp5hum_rxs/lib64/python/PIL/ImageMath.py _isconstantsr c@s"eZdZdZddZddZdGddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dS)H_Operandz4Wraps an image operand, providing standard operatorscCs ||_dS)N)im)selfr r r r __init__ sz_Operand.__init__cCst|trH|jjdkr"|jjdS|jjdkr4|jStd|jjn8t|rn|jjdkrntjd|jj |Stjd|jj |SdS) N1LIFzunsupported mode: )rr)rr)rrr) rr r modeconvert ValueErrorr rnewsize)rim1r r r Z__fixup#s    z_Operand.__fixupNcCs |j|}|dkrtj|p|j|jd}|jytt|d|j}Wn4tk r|}zt d|d|WYdd}~XnXtj ||j j |j j nl|j|}|j|jkr|jdkr|j d}|jdkr|j d}|j|jkrtd|j|jkrpt|jd|jdt|jd|jdf}|j|kr>|jd|}|j|krX|jd |}tj|pf|j|d}ntj|p~|j|jd}|j|jytt|d|j}Wn6tk r}zt d|d|WYdd}~XnXtj||j j |j j |j j t|S) N_zbad operand type for ''rz mode mismatchrr)rr)rr)_Operand__fixuprrrrloadgetattrrAttributeError TypeErrorZunopr idrrminZcropZbinopr )roprZim2routerr r r apply4sB $       ,  $z_Operand.applycCs|jjdk S)N)r Zgetbbox)rr r r __bool__^sz_Operand.__bool__cCs |jd|S)Nabs)r&)rr r r __abs__bsz_Operand.__abs__cCs|S)Nr )rr r r __pos__esz_Operand.__pos__cCs |jd|S)Nneg)r&)rr r r __neg__hsz_Operand.__neg__cCs|jd||S)Nadd)r&)rotherr r r __add__lsz_Operand.__add__cCs|jd||S)Nr-)r&)rr.r r r __radd__osz_Operand.__radd__cCs|jd||S)Nsub)r&)rr.r r r __sub__rsz_Operand.__sub__cCs|jd||S)Nr1)r&)rr.r r r __rsub__usz_Operand.__rsub__cCs|jd||S)Nmul)r&)rr.r r r __mul__xsz_Operand.__mul__cCs|jd||S)Nr4)r&)rr.r r r __rmul__{sz_Operand.__rmul__cCs|jd||S)Ndiv)r&)rr.r r r __truediv__~sz_Operand.__truediv__cCs|jd||S)Nr7)r&)rr.r r r __rtruediv__sz_Operand.__rtruediv__cCs|jd||S)Nmod)r&)rr.r r r __mod__sz_Operand.__mod__cCs|jd||S)Nr:)r&)rr.r r r __rmod__sz_Operand.__rmod__cCs|jd||S)Npow)r&)rr.r r r __pow__sz_Operand.__pow__cCs|jd||S)Nr=)r&)rr.r r r __rpow__sz_Operand.__rpow__cCs |jd|S)Ninvert)r&)rr r r __invert__sz_Operand.__invert__cCs|jd||S)Nand)r&)rr.r r r __and__sz_Operand.__and__cCs|jd||S)NrB)r&)rr.r r r __rand__sz_Operand.__rand__cCs|jd||S)Nor)r&)rr.r r r __or__sz_Operand.__or__cCs|jd||S)NrE)r&)rr.r r r __ror__sz_Operand.__ror__cCs|jd||S)Nxor)r&)rr.r r r __xor__sz_Operand.__xor__cCs|jd||S)NrH)r&)rr.r r r __rxor__sz_Operand.__rxor__cCs|jd||S)Nlshift)r&)rr.r r r __lshift__sz_Operand.__lshift__cCs|jd||S)Nrshift)r&)rr.r r r __rshift__sz_Operand.__rshift__cCs|jd||S)Neq)r&)rr.r r r __eq__sz_Operand.__eq__cCs|jd||S)Nne)r&)rr.r r r __ne__sz_Operand.__ne__cCs|jd||S)Nlt)r&)rr.r r r __lt__sz_Operand.__lt__cCs|jd||S)Nle)r&)rr.r r r __le__sz_Operand.__le__cCs|jd||S)Ngt)r&)rr.r r r __gt__sz_Operand.__gt__cCs|jd||S)Nge)r&)rr.r r r __ge__sz_Operand.__ge__)NN)&__name__ __module__ __qualname____doc__rrr&r'r)r*r,r/r0r2r3r5r6r8r9r;r<r>r?rArCrDrFrGrIrJrLrNrPrRrTrVrXrZr r r r r sF *r cCst|jjdS)Nr)r r r)rr r r imagemath_intsr_cCst|jjdS)Nr)r r r)rr r r imagemath_floatsr`cCs|jd||ddS)NrOr)r)r&)rr.r r r imagemath_equalsracCs|jd||ddS)NrQr)r)r&)rr.r r r imagemath_notequalsrbcCs|jd||S)Nr")r&)rr.r r r imagemath_minsrccCs|jd||S)Nmax)r&)rr.r r r imagemath_maxsrecCst|jj|S)N)r r r)rrr r r imagemath_convertsrf Z imagemath_c Ksxtj}|j||j|x.t|jD]\}}t|dr*t|||<q*Wtj||}y|j St k rr|SXdS)a Evaluates an image expression. :param expression: A string containing a Python-style expression. :param options: Values to add to the evaluation context. You can either use a dictionary, or one or more keyword arguments. :return: The evaluated expression. This is usually an image object, but can also be an integer, a floating point value, or a pixel tuple, depending on the expression. r N) opscopyupdatelistitemshasattrr builtinsevalr r)Z expression_dictkwargskrr$r r r ros    ro)rnrrVERBOSEr r r_r`rarbrcrerfrhrkglobalsrlrsrror r r r s"%