Ejemplo n.º 1
0
        public static double FitToWidth(Canvas canvas)
        {
            if (canvas == null)
            {
                return(0.0);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(0.0);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(0.0);
            }

            core.FitToWidth(canvas.Parent.Handle);
            core.Zoom = core.Zoom - 1; // 暫定
#if CUBE_ASYNC
            CanvasPolicy.AsyncRender(canvas, true);
#else
            CanvasPolicyA.Render(canvas, true);
#endif
            return(core.Zoom);
        }
Ejemplo n.º 2
0
        /// http://msdn.microsoft.com/ja-jp/library/c5kehkcz%28VS.80%29.aspx
        private static bool Render(Canvas canvas, bool adjust)
        {
            if (canvas == null)
            {
                return(false);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(false);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(false);
            }

            lock (core)
            {
                var status = core.RenderPage(IntPtr.Zero, false, false);
                if (status && adjust)
                {
                    CanvasPolicyA.Adjust(canvas);
                }
                canvas.Invalidate();
                return(status);
            }
        }
Ejemplo n.º 3
0
        public static int LastPage(Canvas canvas)
        {
            if (canvas == null)
            {
                return(0);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(0);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(0);
            }

            core.CurrentPage = core.PageCount;
#if CUBE_ASYNC
            CanvasPolicy.AsyncRender(canvas, false);
            var control = (ScrollableControl)canvas.Parent;
            control.AutoScrollPosition = new Point(0, 0);
#else
            if (CanvasPolicyA.Render(canvas, false))
            {
                engine.UpdateURL();
                var control = (ScrollableControl)canvas.Parent;
                control.AutoScrollPosition = new Point(0, 0);
            }
#endif
            return(core.CurrentPage);
        }
Ejemplo n.º 4
0
        public static double ZoomOut(Canvas canvas)
        {
            if (canvas == null)
            {
                return(0.0);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(0.0);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(0.0);
            }

            var prev = canvas.Size;

            core.ZoomOut();
#if CUBE_ASYNC
            CanvasPolicy.AsyncRender(canvas, true);
#else
            CanvasPolicyA.Render(canvas, true);
#endif
            return(core.Zoom);
        }
Ejemplo n.º 5
0
        public static double Zoom(Canvas canvas, double percent)
        {
            if (canvas == null)
            {
                return(0.0);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(0.0);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(0.0);
            }

            var prev = canvas.Size;

            if (percent < core.Zoom || core.Zoom < 400)
            {
                core.Zoom = Math.Min(percent, 400);
#if CUBE_ASYNC
                CanvasPolicy.AsyncRender(canvas, true);
#else
                CanvasPolicyA.Render(canvas, true);
#endif
            }
            return(core.Zoom);
        }
Ejemplo n.º 6
0
        private static void MouseMoveHandler(object sender, MouseEventArgs e)
        {
            var canvas = sender as Canvas;

            if (canvas == null)
            {
                return;
            }

            if (is_mouse_down_ && e.Button == MouseButtons.Left)
            {
                var control = (ScrollableControl)canvas.Parent;
                var current = canvas.PointToScreen(e.Location);
                int x       = current.X - origin_.X;
                int y       = current.Y - origin_.Y;
                control.AutoScrollPosition = new Point(-x, -y);
                var cursor = CanvasPolicyA.GetHandCursor();
                if (cursor != null)
                {
                    canvas.Cursor = cursor;
                }
            }
            else
            {
                var engine = canvas.Tag as CanvasEngine;
                if (engine == null)
                {
                    return;
                }
                var core = engine.Core;
                if (core == null)
                {
                    return;
                }

                lock (core)
                {
                    var pos    = new Point((int)(e.Location.X * 72.0 / core.RenderDPI), (int)(e.Location.Y * 72.0 / core.RenderDPI));
                    var result = engine.GetURL(pos);
                    if (result != null)
                    {
                        if (canvas.Cursor == Cursors.Default)
                        {
                            canvas.Cursor = Cursors.Hand;
                            tooltip_.Show(result, canvas, 3000);
                        }
                    }
                    else
                    {
                        canvas.Cursor = Cursors.Default;
                        tooltip_.Hide(canvas);
                    }
                }
            }
        }
Ejemplo n.º 7
0
        public static bool Search(Canvas canvas, SearchArgs args)
        {
            if (canvas == null)
            {
                return(false);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(false);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(false);
            }

            core.SearchCaseSensitive = !args.IgnoreCase;
            var order = args.WholeDocument ? PDFLibNet.PDFSearchOrder.PDFSearchFromdBegin : PDFLibNet.PDFSearchOrder.PDFSearchFromCurrent;

            int result = 0;

            if (args.FromBegin)
            {
                PreviousSearchResult_ = null;
                result = core.FindFirst(args.Text, order, false, args.WholeWord);
            }
            else if (args.FindNext)
            {
                result = core.FindNext(args.Text);
            }
            else
            {
                result = core.FindPrevious(args.Text);
            }
            //else result = core.FindText(args.Text, core.CurrentPage, order, !args.IgnoreCase, !args.FindNext, true, args.WholeWord);


            var prev = core.CurrentPage;

            if (result > 0 && (PreviousSearchResult_ == null || !Equals(PreviousSearchResult_, core.SearchResults[0])))
            {
                core.CurrentPage      = core.SearchResults[0].Page;
                PreviousSearchResult_ = core.SearchResults[0];
            }
            CanvasPolicyA.Render(canvas, false);
            if (core.CurrentPage != prev)
            {
                engine.UpdateURL();
            }

            return(result > 0);
        }
Ejemplo n.º 8
0
        private static void Adjust_WorkCompletedHandler(object sender, RunWorkerCompletedEventArgs e)
        {
            var canvas = e.Result as Canvas;

            if (canvas == null)
            {
                return;
            }
            canvas.Cursor = Cursors.Default;
            CanvasPolicyA.Adjust(canvas);
            canvas.Invalidate();
        }
Ejemplo n.º 9
0
        public static void Destroy(Canvas canvas)
        {
            if (canvas == null)
            {
                return;
            }

            var parent = (ScrollableControl)canvas.Parent;

            foreach (var child in parent.Controls.Find("Canvas", false))
            {
                CanvasPolicyA.Close((Canvas)child);
                parent.Controls.Remove(child);
                child.Dispose();
            }
        }
Ejemplo n.º 10
0
        public static void Open(Canvas canvas, string path, string password, FitCondition which)
        {
            if (canvas == null)
            {
                return;
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine != null)
            {
                CanvasPolicyA.Close(canvas);
            }

            var core = new PDF();

            engine             = new CanvasEngine(core);
            canvas.Tag         = engine;
            core.UseMuPDF      = true;
            core.UserPassword  = password;
            core.OwnerPassword = password;

            if (core.LoadPDF(path))
            {
                core.CurrentPage = 1;
                if (which == FitCondition.Height)
                {
                    core.FitToHeight(canvas.Parent.Handle);
                    core.Zoom = core.Zoom - 1; // 暫定
                }
                else if (which == FitCondition.Width)
                {
                    core.FitToWidth(canvas.Parent.Handle);
                    core.Zoom = core.Zoom - 1; // 暫定
                }
                else
                {
                    core.Zoom = 100;
                }
                canvas.Parent.Text = System.IO.Path.GetFileNameWithoutExtension(path);
                canvas.Parent.Tag  = path;
                CanvasPolicyA.AsyncRender(canvas, true);
            }
        }
Ejemplo n.º 11
0
        private static void MouseClickHandler(object sender, MouseEventArgs e)
        {
            var canvas = sender as Canvas;

            if (canvas == null)
            {
                return;
            }

            if (canvas.Cursor == Cursors.Hand)
            {
                var engine = canvas.Tag as CanvasEngine;
                if (engine == null)
                {
                    return;
                }
                var core = engine.Core;
                if (core == null)
                {
                    return;
                }

                lock (core)
                {
                    var pos  = new Point((int)(e.Location.X * 72.0 / core.RenderDPI), (int)(e.Location.Y * 72.0 / core.RenderDPI));
                    var addr = engine.GetURL(pos);
                    if (addr != null)
                    {
                        System.Diagnostics.Process.Start(addr);
                    }
                }
                canvas.Cursor = Cursors.Default;
            }
            else
            {
                var cursor = CanvasPolicyA.GetHandCursor();
                if (cursor != null)
                {
                    canvas.Cursor = cursor;
                }
            }
        }
Ejemplo n.º 12
0
        public static double FitToPage(Canvas canvas)
        {
            if (canvas == null)
            {
                return(0.0);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(0.0);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(0.0);
            }

            // 横長ならばFitToWidthを、縦長ならばFitToHeightを呼ぶ
            if (GetOrientation(canvas) == Orientation.portratit)
            {
                core.FitToHeight(canvas.Parent.Handle);
            }
            else
            {
                core.FitToWidth(canvas.Parent.Handle);
            }
            core.Zoom = core.Zoom - 1; // 暫定

#if CUBE_ASYNC
            CanvasPolicy.AsyncRender(canvas, true);
#else
            CanvasPolicyA.Render(canvas, true);
#endif
            return(core.Zoom);
        }