Пример #1
0
        /// <summary>
        /// Work constructor
        /// </summary>
        public PageView(RectangleF frame, int pageNumber)
            : base(frame)
        {
            // Init page scroll view
            ScrollsToTop = false;
            DelaysContentTouches = false;
            ShowsVerticalScrollIndicator = false;
            ShowsHorizontalScrollIndicator = false;
            ContentMode = UIViewContentMode.Redraw;
            AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
            UserInteractionEnabled = true;
            AutosizesSubviews = false;
            BackgroundColor = UIColor.Clear;
            ViewForZoomingInScrollView = delegate(UIScrollView sender) {
                return mPageContentContainerView;
            };

            // Create and init (calc frame size) page content view
            mPageContentView = new PageContentView(PageContentView.GetPageViewSize(pageNumber), pageNumber);

            // Create and init page content container view
            mPageContentContainerView = new UIView(mPageContentView.Bounds);
            mPageContentContainerView.AutosizesSubviews = false;
            mPageContentContainerView.UserInteractionEnabled = false;
            mPageContentContainerView.ContentMode = UIViewContentMode.Redraw;
            mPageContentContainerView.AutoresizingMask = UIViewAutoresizing.None;
            mPageContentContainerView.Layer.CornerRadius = 5;
            mPageContentContainerView.Layer.ShadowOffset = new SizeF(2.0f, 2.0f);
            mPageContentContainerView.Layer.ShadowRadius = 4.0f;
            mPageContentContainerView.Layer.ShadowOpacity = 1.0f;
            mPageContentContainerView.Layer.ShadowPath = UIBezierPath.FromRect(mPageContentContainerView.Bounds).CGPath;
            mPageContentContainerView.BackgroundColor = UIColor.White;

            // Create and init page thumb view
            mThumbView = new ThumbView(mPageContentView.Bounds, ThumbContentSize, pageNumber);

            // Add views to parents
            mPageContentContainerView.AddSubview(mThumbView);
            mPageContentContainerView.AddSubview(mPageContentView);
            AddSubview(mPageContentContainerView);

            // Set content size, offset and inset
            ContentSize = mPageContentView.Bounds.Size;
            ContentOffset = new PointF((0.0f - ContentViewPadding), (0.0f - ContentViewPadding));
            ContentInset = new UIEdgeInsets(ContentViewPadding, ContentViewPadding, ContentViewPadding, ContentViewPadding);
            ContentSize = mPageContentContainerView.Bounds.Size;

            // Setup zoom scale
            UpdateMinimumMaximumZoom();
            ZoomScale = MinimumZoomScale;
        }
Пример #2
0
        /// <summary>
        /// Working.
        /// </summary>
        public PageView(RectangleF frame, AutoScaleModes autoScaleMode, int pageNumber) : base(frame)
        {
            // Init page scroll view
            ScrollsToTop                   = false;
            DelaysContentTouches           = false;
            ShowsVerticalScrollIndicator   = false;
            ShowsHorizontalScrollIndicator = false;
            ContentMode                = UIViewContentMode.Redraw;
            AutoresizingMask           = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
            UserInteractionEnabled     = true;
            AutosizesSubviews          = false;
            BackgroundColor            = UIColor.Clear;
            ViewForZoomingInScrollView = delegate(UIScrollView sender) {
                return(_PageContentContainerView);
            };
            AutoScaleMode           = autoScaleMode;
            NeedUpdateZoomAndOffset = true;

            // Create and init (calc frame size) page content view
            _PageContentView = new PageContentView(PageContentView.GetPageViewSize(pageNumber), pageNumber);

            // Create and init page content container view
            _PageContentContainerView = new UIView(_PageContentView.Bounds);
            _PageContentContainerView.AutosizesSubviews      = false;
            _PageContentContainerView.UserInteractionEnabled = false;
            _PageContentContainerView.ContentMode            = UIViewContentMode.Redraw;
            _PageContentContainerView.AutoresizingMask       = UIViewAutoresizing.None;
            _PageContentContainerView.Layer.CornerRadius     = 5;
            _PageContentContainerView.Layer.ShadowOffset     = new SizeF(2.0f, 2.0f);
            _PageContentContainerView.Layer.ShadowRadius     = 4.0f;
            _PageContentContainerView.Layer.ShadowOpacity    = 1.0f;
            _PageContentContainerView.Layer.ShadowPath       = UIBezierPath.FromRect(_PageContentContainerView.Bounds).CGPath;
            _PageContentContainerView.BackgroundColor        = UIColor.White;

            // Create and init page thumb view
            //_ThumbView = new ThumbView(_PageContentView.Bounds, ThumbContentSize, pageNumber);

            // Add views to parents
            //_PageContentContainerView.AddSubview(_ThumbView);
            _PageContentContainerView.AddSubview(_PageContentView);
            AddSubview(_PageContentContainerView);

            // Set content size, offset and inset
            ContentSize   = _PageContentView.Bounds.Size;
            ContentOffset = new PointF((0.0f - ContentViewPadding), (0.0f - ContentViewPadding));
            ContentInset  = new UIEdgeInsets(ContentViewPadding, ContentViewPadding, ContentViewPadding, ContentViewPadding);
            ContentSize   = _PageContentContainerView.Bounds.Size;
        }
Пример #3
0
        public PageView(RectangleF frame, AutoScaleModes autoScaleMode, int pageNumber)
            : base(frame)
        {
            ScrollsToTop = false;
            DelaysContentTouches = false;
            ShowsVerticalScrollIndicator = false;
            ShowsHorizontalScrollIndicator = false;
            ContentMode = UIViewContentMode.Redraw;
            AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
            UserInteractionEnabled = true;
            AutosizesSubviews = false;
            BackgroundColor = UIColor.Clear;
            ViewForZoomingInScrollView = delegate(UIScrollView sender) {
                return _pageContentContainerView;
            };
            AutoScaleMode = autoScaleMode;
            NeedUpdateZoomAndOffset = true;

            _pageContentView = new PageContentView(PageContentView.GetPageViewSize(pageNumber), pageNumber);

            _pageContentContainerView = new UIView(_pageContentView.Bounds);
            _pageContentContainerView.AutosizesSubviews = false;
            _pageContentContainerView.UserInteractionEnabled = false;
            _pageContentContainerView.ContentMode = UIViewContentMode.Redraw;
            _pageContentContainerView.AutoresizingMask = UIViewAutoresizing.None;
            _pageContentContainerView.Layer.CornerRadius = 5;
            _pageContentContainerView.Layer.ShadowOffset = new SizeF(2.0f, 2.0f);
            _pageContentContainerView.Layer.ShadowRadius = 4.0f;
            _pageContentContainerView.Layer.ShadowOpacity = 1.0f;
            _pageContentContainerView.Layer.ShadowPath = UIBezierPath.FromRect(_pageContentContainerView.Bounds).CGPath;
            _pageContentContainerView.BackgroundColor = UIColor.White;

            // TODO: _ThumbView = new ThumbView(_PageContentView.Bounds, ThumbContentSize, pageNumber);

            // TODO: _PageContentContainerView.AddSubview(_ThumbView);
            _pageContentContainerView.AddSubview(_pageContentView);
            AddSubview(_pageContentContainerView);

            ContentSize = _pageContentView.Bounds.Size;
            ContentOffset = new PointF((0.0f - ContentViewPadding), (0.0f - ContentViewPadding));
            ContentInset = new UIEdgeInsets(ContentViewPadding, ContentViewPadding, ContentViewPadding, ContentViewPadding);
            ContentSize = _pageContentContainerView.Bounds.Size;
        }
Пример #4
0
        /// <summary>
        /// Returns thumb image object for page
        /// </summary>
        /// <param name="thumbContentSize">Thumb content size</param>
        /// <param name="pageNumber">Page number for what will created image object</param>
        /// <returns>Page image object</returns>
        private static UIImage GetThumbImage(float thumbContentSize, int pageNumber)
        {
            if ((pageNumber <= 0) || (pageNumber > PDFDocument.PageCount))
            {
                return(null);
            }

            // Calc page view size
            var pageSize = PageContentView.GetPageViewSize(pageNumber);

            if (pageSize.Width % 2 > 0)
            {
                pageSize.Width--;
            }
            if (pageSize.Height % 2 > 0)
            {
                pageSize.Height--;
            }

            // Calc target size
            var targetSize = new Size((int)pageSize.Width, (int)pageSize.Height);

            // Draw page on CGImage
            CGImage pageImage;

            using (CGColorSpace rgb = CGColorSpace.CreateDeviceRGB()) {
                using (var context = new CGBitmapContext(null, targetSize.Width, targetSize.Height, 8, 0, rgb, CGBitmapFlags.ByteOrder32Little | CGBitmapFlags.NoneSkipFirst)) {
                    using (var pdfPage = PDFDocument.GetPage(pageNumber)) {
                        // Draw page on custom CGBitmap context
                        var thumbRect = new RectangleF(0.0f, 0.0f, targetSize.Width, targetSize.Height);
                        context.SetFillColor(1.0f, 1.0f, 1.0f, 1.0f);
                        context.FillRect(thumbRect);
                        context.ConcatCTM(pdfPage.GetDrawingTransform(CGPDFBox.Crop, thumbRect, 0, true));
                        context.SetRenderingIntent(CGColorRenderingIntent.Default);
                        context.InterpolationQuality = CGInterpolationQuality.Default;
                        context.DrawPDFPage(pdfPage);
                        // Create CGImage from custom CGBitmap context
                        pageImage = context.ToImage();
                    }
                }
            }
            return(UIImage.FromImage(pageImage));
        }