Source code for kiva.marker_renderer

# (C) Copyright 2005-2022 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!
from kiva._marker_renderer import (
    MarkerRendererABGR32, MarkerRendererARGB32, MarkerRendererBGR24,
    MarkerRendererBGRA32, MarkerRendererRGB24, MarkerRendererRGBA32,
)

__all__ = ["MarkerRenderer"]

_renderers = {
    "abgr32": (MarkerRendererABGR32, 4),
    "argb32": (MarkerRendererARGB32, 4),
    "bgra32": (MarkerRendererBGRA32, 4),
    "rgba32": (MarkerRendererRGBA32, 4),
    "bgr24": (MarkerRendererBGR24, 3),
    "rgb24": (MarkerRendererRGB24, 3),
}


[docs]def MarkerRenderer(buffer, pix_format="bgra32", bottom_up=True): """ MarkerRenderer(buffer, pix_format="bgra32", bottom_up=True) Create a specialized renderer for implementing ``draw_marker_at_points``. Parameters ---------- buffer : ndarray A MxNx{3,4} numpy array of uint8 to be used as the backing pixel store pix_format : str A string specifying the pixel format. Same as what it passed to ``GraphicsContext``. bottom_up : bool [optional, defaults to True] If True, the origin is bottom-left instead of top-left. Returns ------- renderer : A new MarkerRenderer instance. """ klass, components = _renderers.get(pix_format, (None, 0)) if klass is None: raise ValueError(f"{pix_format} is not a supported pixel format") if (str(buffer.dtype) != "uint8" or buffer.ndim != 3 or buffer.shape[2] != components): raise ValueError(f"Pixel buffer must be MxNx{components} and uint8") return klass(buffer, bottom_up=bottom_up)