Example #1
0
        /// <summary>
        /// Set the page ranges.
        /// </summary>
        /// <remarks>
        /// See also the original CEF documentation in
        /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_print_settings_capi.h">cef/include/capi/cef_print_settings_capi.h</see>.
        /// </remarks>
        public void SetPageRanges(CfxPageRange[] ranges)
        {
            int ranges_length;

            IntPtr[] ranges_ptrs;
            if (ranges != null)
            {
                ranges_length = ranges.Length;
                ranges_ptrs   = new IntPtr[ranges_length];
                for (int i = 0; i < ranges_length; ++i)
                {
                    ranges_ptrs[i] = CfxPageRange.Unwrap(ranges[i]);
                }
            }
            else
            {
                ranges_length = 0;
                ranges_ptrs   = null;
            }
            PinnedObject ranges_pinned = new PinnedObject(ranges_ptrs);
            int          ranges_nomem;

            CfxApi.cfx_print_settings_set_page_ranges(NativePtr, ranges_length, ranges_pinned.PinnedPtr, out ranges_nomem);
            ranges_pinned.Free();
            if (ranges_nomem != 0)
            {
                throw new OutOfMemoryException();
            }
        }
Example #2
0
        /// <summary>
        /// Retrieve the page ranges.
        /// </summary>
        /// <remarks>
        /// See also the original CEF documentation in
        /// <see href="https://bitbucket.org/chromiumfx/chromiumfx/src/tip/cef/include/capi/cef_print_settings_capi.h">cef/include/capi/cef_print_settings_capi.h</see>.
        /// </remarks>
        public CfxPageRange[] GetPageRanges()
        {
            int rangesCount = CfxApi.cfx_print_settings_get_page_ranges_count(NativePtr);

            IntPtr[]     pp        = new IntPtr[rangesCount];
            PinnedObject pp_pinned = new PinnedObject(pp);
            int          ranges_nomem;

            CfxApi.cfx_print_settings_get_page_ranges(NativePtr, ref rangesCount, pp_pinned.PinnedPtr, out ranges_nomem);
            pp_pinned.Free();
            if (ranges_nomem != 0)
            {
                throw new OutOfMemoryException();
            }
            var retval = new CfxPageRange[rangesCount];

            for (int i = 0; i < rangesCount; ++i)
            {
                retval[i] = CfxPageRange.WrapOwned(pp[i]);
            }
            return(retval);
        }