public Element ElementAdd(Update update, Display display, int layer, Rectangle dest_rect, Resource resource, Rectangle src_rect, Protection protection, Alpha alpha, Clamp clamp, DISPMANX_TRANSFORM_T transform) { if (update == null) { throw new ArgumentNullException(nameof(update)); } if (display == null) { throw new ArgumentNullException(nameof(display)); } if (resource == null) { throw new ArgumentNullException(nameof(resource)); } if (protection == null) { throw new ArgumentNullException(nameof(protection)); } VC_RECT_T d = new VC_RECT_T(dest_rect); VC_RECT_T s = new VC_RECT_T(src_rect); VC_DISPMANX_ALPHA_T nativeAlpha = alpha?.Native; DISPMANX_CLAMP_T nativeClamp = clamp?.Native; DISPMANX_ELEMENT_HANDLE_T handle = NativeMethods.ElementAdd(update.Handle, display.Handle, layer, ref d, resource.Handle, ref s, protection.Handle, ref nativeAlpha, ref nativeClamp, transform); if (handle.Handle == IntPtr.Zero) { return(null); } return(new Element(handle)); }
public void WriteData(VC_IMAGE_TYPE_T type, int pitch, byte[] data, Rectangle rect) { DISPMANX_STATUS_T ret; GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType.Pinned); try { VC_RECT_T vcrect = new VC_RECT_T { x = rect.X, y = rect.Y, width = rect.Width, height = rect.Height }; ret = Native.DispmanxNativeMethods.ResourceWriteData(this.m_handle, type, pitch, dataHandle.AddrOfPinnedObject(), ref vcrect); if (ret != DISPMANX_STATUS_T.SUCCESS) { throw new DispmanException($"Operation failed : {nameof(Native.DispmanxNativeMethods.ResourceWriteData)} returned {ret}"); } } finally { dataHandle.Free(); } }
extern static uint vc_dispmanx_element_add( uint update, uint display, int layer, ref VC_RECT_T dest_rect, uint src, ref VC_RECT_T src_rect, DISPMANX_PROTECTION_T protection, IntPtr /* ref VC_DISPMANX_ALPHA_T */ alpha, IntPtr /* ref DISPMANX_CLAMP_T */ clamp, DISPMANX_TRANSFORM_T transform );
public void ReadData(Rectangle rect, byte[] image, int dest_pitch) { GCHandle imageHandle = GCHandle.Alloc(image, GCHandleType.Pinned); try { VC_RECT_T vcRect = new VC_RECT_T(rect); IntPtr dst_address = imageHandle.AddrOfPinnedObject(); var ret = DispmanxNativeMethods.ResourceReadData(this.m_handle, ref vcRect, dst_address, (uint)dest_pitch); if (ret != DISPMANX_STATUS_T.SUCCESS) { throw new DispmanException($"Operation failed : {nameof(Native.DispmanxNativeMethods.ResourceReadData)} returned {ret}"); } } finally { imageHandle.Free(); } }
public static DISPMANX_ELEMENT_HANDLE_T vc_dispmanx_element_add(DISPMANX_UPDATE_HANDLE_T update, DISPMANX_DISPLAY_HANDLE_T display, Int32 layer, VC_RECT_T dest_rect, DISPMANX_RESOURCE_HANDLE_T src, VC_RECT_T src_rect, DISPMANX_PROTECTION_T protection, IntPtr alpha, IntPtr clamp, DISPMANX_TRANSFORM_T transform) { DISPMANX_ELEMENT_HANDLE_T retvalue; GCHandle dest_rectHandle = GCHandle.Alloc(dest_rect, GCHandleType.Pinned); GCHandle src_rectHandle = GCHandle.Alloc(src_rect, GCHandleType.Pinned); try { Debug.Assert(Delegates.pvc_dispmanx_element_add != null, "vc_dispmanx_element_add not implemented"); retvalue = Delegates.pvc_dispmanx_element_add(update, display, layer, dest_rectHandle.AddrOfPinnedObject(), src, src_rectHandle.AddrOfPinnedObject(), protection, alpha, clamp, transform); LogCommand("vc_dispmanx_element_add", retvalue, update, display, layer, dest_rect, src, src_rect, protection, alpha, clamp, transform); } finally { dest_rectHandle.Free(); src_rectHandle.Free(); } return(retvalue); }
public static unsafe extern IntPtr vc_dispmanx_element_add(IntPtr update, IntPtr display, int layer, VC_RECT_T *dest_rect, IntPtr src, VC_RECT_T *src_rect, uint protection, IntPtr alpha, IntPtr clamp, int transform);