zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
U
T±dÍ'ã@s¼ddlZddlZz$ddlmZdZeƒZe e¡Wn:ek
rnZzddl    m
Z
e
eƒZZW5dZ[XYnXe  e ¡Z Gdd„dƒZGdd    „d    eƒZGd
d „d eƒZGd d „d eƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZeeeeeeeeeeeeeeeeedœZejdkr†eed<eed<eed <eed!<eed"<n(eed<eed<eed <eed!<eed"<d&d$d%„ZdS)'éN)ÚFFIz|
    struct Pixel_RGBA {
        unsigned char r,g,b,a;
    };
    struct Pixel_I16 {
        unsigned char l,r;
    };
    é)Ú DeferredErrorc@s>eZdZd dd„Zdd„Zdd„Zdd    „ZeZeZd
d „Z    d S)ÚPyAccessFcCs†t|jjƒ}||_t d|d¡|_t d|d¡|_t d|d¡|_|jj    \|_
|_ ||_ |j|_ |j jdkrz|j|_| ¡dS)Nzunsigned char **Úimage8zint **Úimage32Úimage©ÚPÚPA)ÚdictZimZ unsafe_ptrsÚreadonlyÚffiÚcastrrrÚsizeÚxsizeÚysizeÚ_imgÚ_imÚmodeZpaletteÚ_paletteÚ
_post_init)ÚselfÚimgr Úvals©rúCd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/PyAccess.pyÚ__init__1s  zPyAccess.__init__cCsdS©Nr)rrrrrDszPyAccess._post_initcCsØ|jrd}t|ƒ‚|\}}|dkr,|j|}|dkr>|j|}| ||f¡\}}|jjdkrÊt|tt    fƒrÊt
|ƒdkrÊ|jjdkr¦t
|ƒdkr–|dnd}|d    d…}|j   ||j ¡}|jjdkrÊ||f}| |||¡S)
a0
        Modifies the pixel at x,y. The color is given as a single
        numerical value for single band images, and a tuple for
        multi-band images
 
        :param xy: The pixel coordinate, given as (x, y). See
           :ref:`coordinate-system`.
        :param color: The pixel value.
        z%Attempt to putpixel a read only imagerr    )éér r réÿN)r Ú
ValueErrorrrÚcheck_xyrrÚ
isinstanceÚlistÚtupleÚlenrZgetcolorrÚ    set_pixel)rÚxyÚcolorÚmsgÚxÚyÚalpharrrÚ __setitem__Gs,
 
 
 
ÿ þ
ý   zPyAccess.__setitem__cCsJ|\}}|dkr|j|}|dkr,|j|}| ||f¡\}}| ||¡S)aq
        Returns the pixel at x,y. The pixel is returned as a single
        value for single band images or a tuple for multiple band
        images
 
        :param xy: The pixel coordinate, given as (x, y). See
          :ref:`coordinate-system`.
        :returns: a pixel value for single band images, a tuple of
          pixel values for multiband images.
        r)rrr#Ú    get_pixel)rr)r,r-rrrÚ __getitem__js 
 
zPyAccess.__getitem__cCsJ|\}}d|kr|jkr:nnd|kr8|jksFnd}t|ƒ‚|S)Nrzpixel location out of range)rrr")rr)r,r-r+rrrr#€s
2zPyAccess.check_xyN)F)
Ú__name__Ú
__module__Ú __qualname__rrr/r1ZputpixelZgetpixelr#rrrrr0s
#rc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú _PyAccess32_2z7PA, LA, stored in first and last bytes of a 32 bit wordcOst d|j¡|_dS©Nzstruct Pixel_RGBA **©rrrÚpixels©rÚargsÚkwargsrrrr‹sz_PyAccess32_2._post_initcCs|j||}|j|jfSr)r8ÚrÚa©rr,r-Úpixelrrrr0Žsz_PyAccess32_2.get_pixelcCs2|j||}t|ddƒ|_t|ddƒ|_dS)Nrr!r)r8Úminr<r=©rr,r-r*r?rrrr(’sz_PyAccess32_2.set_pixelN©r2r3r4Ú__doc__rr0r(rrrrr5ˆsr5c@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú _PyAccess32_3zARGB and friends, stored in the first three bytes of a 32 bit wordcOst d|j¡|_dSr6r7r9rrrrœsz_PyAccess32_3._post_initcCs|j||}|j|j|jfSr)r8r<ÚgÚbr>rrrr0Ÿsz_PyAccess32_3.get_pixelcCsH|j||}t|ddƒ|_t|ddƒ|_t|ddƒ|_d|_dS)Nrr!ré©r8r@r<rErFr=rArrrr(£s
z_PyAccess32_3.set_pixelNrBrrrrrD™srDc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú _PyAccess32_4z&RGBA etc, all 4 bytes of a 32 bit wordcOst d|j¡|_dSr6r7r9rrrr¯sz_PyAccess32_4._post_initcCs"|j||}|j|j|j|jfSr)r8r<rErFr=r>rrrr0²sz_PyAccess32_4.get_pixelcCsR|j||}t|ddƒ|_t|ddƒ|_t|ddƒ|_t|ddƒ|_dS)Nrr!rrGrrHrArrrr(¶s
z_PyAccess32_4.set_pixelNrBrrrrrI¬srIc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú
_PyAccess8z%1, L, P, 8 bit images stored as uint8cOs |j|_dSr)rr8r9rrrrÂsz_PyAccess8._post_initcCs|j||Sr©r8©rr,r-rrrr0Åsz_PyAccess8.get_pixelcCsJzt|dƒ|j||<Wn,tk
rDt|ddƒ|j||<YnXdS)Nr!r©r@r8Ú    TypeError©rr,r-r*rrrr(Èsz_PyAccess8.set_pixelNrBrrrrrJ¿srJc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú_PyAccessI16_Nz0I;16 access, native bitendian without conversioncOst d|j¡|_dS)Nzunsigned short **©rrrr8r9rrrrÔsz_PyAccessI16_N._post_initcCs|j||SrrKrLrrrr0×sz_PyAccessI16_N.get_pixelcCsJzt|dƒ|j||<Wn,tk
rDt|ddƒ|j||<YnXdS)NéÿÿrrMrOrrrr(Úsz_PyAccessI16_N.set_pixelNrBrrrrrPÑsrPc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú_PyAccessI16_LzI;16L access, with conversioncOst d|j¡|_dS©Nzstruct Pixel_I16 **rQr9rrrræsz_PyAccessI16_L._post_initcCs|j||}|j|jdS©Né©r8Úlr<r>rrrr0ész_PyAccessI16_L.get_pixelcCsX|j||}zt|dƒ}Wn"tk
r>t|ddƒ}YnX|d@|_|d?|_dS)NrRrr!é)r8r@rNrXr<rArrrr(ís
z_PyAccessI16_L.set_pixelNrBrrrrrSãsrSc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú_PyAccessI16_BzI;16B access, with conversioncOst d|j¡|_dSrTrQr9rrrrûsz_PyAccessI16_B._post_initcCs|j||}|jd|jSrUrWr>rrrr0þsz_PyAccessI16_B.get_pixelcCsX|j||}zt|dƒ}Wn"tk
r>t|ddƒ}YnX|d?|_|d@|_dS)NrRrrYr!)r8r@Ú    ExceptionrXr<rArrrr(s
z_PyAccessI16_B.set_pixelNrBrrrrrZøsrZc@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú_PyAccessI32_Nz"Signed Int32 access, native endiancOs |j|_dSr©rr8r9rrrrsz_PyAccessI32_N._post_initcCs|j||SrrKrLrrrr0sz_PyAccessI32_N.get_pixelcCs||j||<dSrrKrOrrrr(sz_PyAccessI32_N.set_pixelNrBrrrrr\ sr\c@s0eZdZdZdd„Zdd„Zdd„Zdd    „Zd
S) Ú_PyAccessI32_Swapz,I;32L/B access, with byteswapping conversioncOs |j|_dSrr]r9rrrrsz_PyAccessI32_Swap._post_initcCs\t d|¡}t d|¡}|d|d|d|df\|d<|d<|d<|d<t d|¡dS)Nzint *zunsigned char *rrGrr)rÚnewr)rÚiÚorigÚcharsrrrÚreverse s  4z_PyAccessI32_Swap.reversecCs| |j||¡Sr©rcr8rLrrrr0&sz_PyAccessI32_Swap.get_pixelcCs| |¡|j||<dSrrdrOrrrr()sz_PyAccessI32_Swap.set_pixelN)r2r3r4rCrrcr0r(rrrrr^s
r^c@s(eZdZdZdd„Zdd„Zdd„ZdS)    Ú
_PyAccessFz32 bit float accesscOst d|j¡|_dS)Nzfloat **r7r9rrrr0sz_PyAccessF._post_initcCs|j||SrrKrLrrrr03sz_PyAccessF.get_pixelcCs>z||j||<Wn&tk
r8|d|j||<YnXdS)Nr)r8rNrOrrrr(6sz_PyAccessF.set_pixelNrBrrrrre-sre)Ú1ÚLr
zI;16NZLAZLar ÚRGBZLABZHSVZYCbCrZRGBAZRGBaZRGBXZCMYKÚFÚIÚlittlezI;16zI;16LzI;16BzI;32LzI;32BFcCs.t |jd¡}|s$t d|j¡dS|||ƒS)NzPyAccess Not Implemented: %s)Úmode_mapÚgetrÚloggerÚdebug)rr Z access_typerrrr_cs
r_)F)ÚloggingÚsysZcffirZdefsrZcdefÚ ImportErrorÚexZ_utilrÚ    getLoggerr2rnrr5rDrIrJrPrSrZr\r^rerlÚ    byteorderr_rrrrÚ<module>sf  
X ï