# This file has been autogenerated by the pywayland scanner # Copyright © 2008-2011 Kristian Høgsberg # Copyright © 2010-2011 Intel Corporation # Copyright © 2012-2013 Collabora, Ltd. # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation files # (the "Software"), to deal in the Software without restriction, # including without limitation the rights to use, copy, modify, merge, # publish, distribute, sublicense, and/or sell copies of the Software, # and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # # The above copyright notice and this permission notice (including the # next paragraph) shall be included in all copies or substantial # portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. from __future__ import annotations import enum from pywayland.protocol_core import ( Argument, ArgumentType, Global, Interface, Proxy, Resource, ) from .wl_shm_pool import WlShmPool class WlShm(Interface): """Shared memory support A singleton global object that provides support for shared memory. Clients can create :class:`~pywayland.protocol.wayland.WlShmPool` objects using the create_pool request. On binding the :class:`WlShm` object one or more format events are emitted to inform clients about the valid pixel formats that can be used for buffers. """ name = "wl_shm" version = 1 class error(enum.IntEnum): invalid_format = 0 invalid_stride = 1 invalid_fd = 2 class format(enum.IntEnum): argb8888 = 0 xrgb8888 = 1 c8 = 0x20203843 rgb332 = 0x38424752 bgr233 = 0x38524742 xrgb4444 = 0x32315258 xbgr4444 = 0x32314258 rgbx4444 = 0x32315852 bgrx4444 = 0x32315842 argb4444 = 0x32315241 abgr4444 = 0x32314241 rgba4444 = 0x32314152 bgra4444 = 0x32314142 xrgb1555 = 0x35315258 xbgr1555 = 0x35314258 rgbx5551 = 0x35315852 bgrx5551 = 0x35315842 argb1555 = 0x35315241 abgr1555 = 0x35314241 rgba5551 = 0x35314152 bgra5551 = 0x35314142 rgb565 = 0x36314752 bgr565 = 0x36314742 rgb888 = 0x34324752 bgr888 = 0x34324742 xbgr8888 = 0x34324258 rgbx8888 = 0x34325852 bgrx8888 = 0x34325842 abgr8888 = 0x34324241 rgba8888 = 0x34324152 bgra8888 = 0x34324142 xrgb2101010 = 0x30335258 xbgr2101010 = 0x30334258 rgbx1010102 = 0x30335852 bgrx1010102 = 0x30335842 argb2101010 = 0x30335241 abgr2101010 = 0x30334241 rgba1010102 = 0x30334152 bgra1010102 = 0x30334142 yuyv = 0x56595559 yvyu = 0x55595659 uyvy = 0x59565955 vyuy = 0x59555956 ayuv = 0x56555941 nv12 = 0x3231564E nv21 = 0x3132564E nv16 = 0x3631564E nv61 = 0x3136564E yuv410 = 0x39565559 yvu410 = 0x39555659 yuv411 = 0x31315559 yvu411 = 0x31315659 yuv420 = 0x32315559 yvu420 = 0x32315659 yuv422 = 0x36315559 yvu422 = 0x36315659 yuv444 = 0x34325559 yvu444 = 0x34325659 r8 = 0x20203852 r16 = 0x20363152 rg88 = 0x38384752 gr88 = 0x38385247 rg1616 = 0x32334752 gr1616 = 0x32335247 xrgb16161616f = 0x48345258 xbgr16161616f = 0x48344258 argb16161616f = 0x48345241 abgr16161616f = 0x48344241 xyuv8888 = 0x56555958 vuy888 = 0x34325556 vuy101010 = 0x30335556 y210 = 0x30313259 y212 = 0x32313259 y216 = 0x36313259 y410 = 0x30313459 y412 = 0x32313459 y416 = 0x36313459 xvyu2101010 = 0x30335658 xvyu12_16161616 = 0x36335658 xvyu16161616 = 0x38345658 y0l0 = 0x304C3059 x0l0 = 0x304C3058 y0l2 = 0x324C3059 x0l2 = 0x324C3058 yuv420_8bit = 0x38305559 yuv420_10bit = 0x30315559 xrgb8888_a8 = 0x38415258 xbgr8888_a8 = 0x38414258 rgbx8888_a8 = 0x38415852 bgrx8888_a8 = 0x38415842 rgb888_a8 = 0x38413852 bgr888_a8 = 0x38413842 rgb565_a8 = 0x38413552 bgr565_a8 = 0x38413542 nv24 = 0x3432564E nv42 = 0x3234564E p210 = 0x30313250 p010 = 0x30313050 p012 = 0x32313050 p016 = 0x36313050 axbxgxrx106106106106 = 0x30314241 nv15 = 0x3531564E q410 = 0x30313451 q401 = 0x31303451 xrgb16161616 = 0x38345258 xbgr16161616 = 0x38344258 argb16161616 = 0x38345241 abgr16161616 = 0x38344241 class WlShmProxy(Proxy[WlShm]): interface = WlShm @WlShm.request( Argument(ArgumentType.NewId, interface=WlShmPool), Argument(ArgumentType.FileDescriptor), Argument(ArgumentType.Int), ) def create_pool(self, fd: int, size: int) -> Proxy[WlShmPool]: """Create a shm pool Create a new :class:`~pywayland.protocol.wayland.WlShmPool` object. The pool can be used to create shared memory based buffer objects. The server will mmap size bytes of the passed file descriptor, to use as backing memory for the pool. :param fd: file descriptor for the pool :type fd: `ArgumentType.FileDescriptor` :param size: pool size, in bytes :type size: `ArgumentType.Int` :returns: :class:`~pywayland.protocol.wayland.WlShmPool` -- pool to create """ id = self._marshal_constructor(0, WlShmPool, fd, size) return id class WlShmResource(Resource): interface = WlShm @WlShm.event( Argument(ArgumentType.Uint), ) def format(self, format: int) -> None: """Pixel format description Informs the client about a valid pixel format that can be used for buffers. Known formats include argb8888 and xrgb8888. :param format: buffer pixel format :type format: `ArgumentType.Uint` """ self._post_event(0, format) class WlShmGlobal(Global): interface = WlShm WlShm._gen_c() WlShm.proxy_class = WlShmProxy WlShm.resource_class = WlShmResource WlShm.global_class = WlShmGlobal