コード例 #1
0
        public int GetResolution(IWICBitmapSourceImpl *pinst, double *pDpiX, double *pDpiY)
        {
            *pDpiX = 96d;
            *pDpiY = 96d;

            return(S_OK);
        }
コード例 #2
0
        public int GetPixelFormat(IWICBitmapSourceImpl *pinst, Guid *pPixelFormat)
        {
            var ps = (PixelSource)GCHandle.FromIntPtr(pinst->source).Target !;

            *pPixelFormat = ps.Format.FormatGuid;

            return(S_OK);
        }
コード例 #3
0
        public int GetSize(IWICBitmapSourceImpl *pinst, uint *puiWidth, uint *puiHeight)
        {
            var ps = (PixelSource)GCHandle.FromIntPtr(pinst->source).Target !;

            *puiWidth  = (uint)ps.Width;
            *puiHeight = (uint)ps.Height;

            return(S_OK);
        }
コード例 #4
0
        public int CopyPixels(IWICBitmapSourceImpl *pinst, WICRect *prc, uint cbStride, uint cbBufferSize, byte *pbBuffer)
        {
            var ps   = (PixelSource)GCHandle.FromIntPtr(pinst->source).Target !;
            var area = prc is not null ? new PixelArea(prc->X, prc->Y, prc->Width, prc->Height) : ps.Area;

            ps.CopyPixels(area, (int)cbStride, (int)cbBufferSize, (IntPtr)pbBuffer);

            return(S_OK);
        }
コード例 #5
0
        public int QueryInterface(IWICBitmapSourceImpl *pinst, Guid *riid, void **ppvObject)
        {
            var iid = *riid;

            if (iid == __uuidof <IWICBitmapSource>() || iid == __uuidof <IUnknown>())
            {
                *ppvObject = pinst;
                return(S_OK);
            }

            return(E_NOINTERFACE);
        }
コード例 #6
0
 public uint Release(IWICBitmapSourceImpl *pinst) => 1;
コード例 #7
0
 public uint AddRef(IWICBitmapSourceImpl *pinst) => 1;
コード例 #8
0
 public int CopyPalette(IWICBitmapSourceImpl *pinst, IWICPalette *pIPalette) => E_NOTIMPL;