public PDFHighlightLayer(PDFDocument pdf_document, int page)
        {
            WPFDoEvents.AssertThisCodeIsRunningInTheUIThread();

            this.pdf_document = pdf_document;
            this.page         = page;

            InitializeComponent();

            Background = Brushes.Transparent;

            Cursor = Cursors.Pen;

            drag_area_tracker = new DragAreaTracker(this, false);
            drag_area_tracker.OnDragStarted    += drag_area_tracker_OnDragStarted;
            drag_area_tracker.OnDragInProgress += drag_area_tracker_OnDragInProgress;
            drag_area_tracker.OnDragComplete   += drag_area_tracker_OnDragComplete;

            text_selection_manager = new TextSelectionManager();

            SizeChanged += PDFHighlightLayer_SizeChanged;

            SetLeft(ObjHighlightRenderer, 0);
            SetTop(ObjHighlightRenderer, 0);

            text_layer_selection_mode = TextLayerSelectionMode.Sentence;
            CurrentColourNumber       = 0;

            Loaded += PDFHighlightLayer_Loaded;
            //Unloaded += PDFHighlightLayer_Unloaded;
            Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
        }
Example #2
0
        public PDFTextSentenceLayer(PDFRendererControlStats pdf_renderer_control_stats, int page)
        {
            this.pdf_renderer_control_stats = pdf_renderer_control_stats;
            this.page = page;

            InitializeComponent();

            Focusable = true;
            KeyboardNavigation.SetDirectionalNavigation(this, KeyboardNavigationMode.Once);

            Background = Brushes.Transparent;
            Cursor     = Cursors.IBeam;

            SizeChanged += PDFTextSentenceLayer_SizeChanged;

            drag_area_tracker = new DragAreaTracker(this, false);
            drag_area_tracker.OnDragStarted    += drag_area_tracker_OnDragStarted;
            drag_area_tracker.OnDragInProgress += drag_area_tracker_OnDragInProgress;
            drag_area_tracker.OnDragComplete   += drag_area_tracker_OnDragComplete;

            text_selection_manager = new TextSelectionManager();

            PreviewMouseDown     += PDFTextSentenceLayer_PreviewMouseDown;
            PreviewKeyDown       += PDFTextLayer_PreviewKeyDown;
            RequestBringIntoView += PDFTextSentenceLayer_RequestBringIntoView;

            text_layer_selection_mode = TextLayerSelectionMode.Sentence;
        }
Example #3
0
        public PDFHighlightLayer(PDFRendererControlStats pdf_renderer_control_stats, int page)
        {
            this.pdf_renderer_control_stats = pdf_renderer_control_stats;
            this.page = page;

            InitializeComponent();

            this.Background = Brushes.Transparent;

            this.Cursor = Cursors.Pen;

            drag_area_tracker = new DragAreaTracker(this, false);
            drag_area_tracker.OnDragStarted    += drag_area_tracker_OnDragStarted;
            drag_area_tracker.OnDragInProgress += drag_area_tracker_OnDragInProgress;
            drag_area_tracker.OnDragComplete   += drag_area_tracker_OnDragComplete;

            text_selection_manager = new TextSelectionManager();

            this.SizeChanged += PDFHighlightLayer_SizeChanged;

            SetLeft(ObjHighlightRenderer, 0);
            SetTop(ObjHighlightRenderer, 0);

            this.text_layer_selection_mode = TextLayerSelectionMode.Sentence;
            this.CurrentColourNumber       = 0;

            this.Loaded += PDFHighlightLayer_Loaded;
        }
        public PDFTextSentenceLayer(PDFRendererControl pdf_renderer_control, int page)
        {
            WPFDoEvents.AssertThisCodeIsRunningInTheUIThread();

            this.pdf_renderer_control = new WeakReference <PDFRendererControl>(pdf_renderer_control);
            this.page = page;

            InitializeComponent();

            Focusable = true;
            KeyboardNavigation.SetDirectionalNavigation(this, KeyboardNavigationMode.Once);

            Background = Brushes.Transparent;
            Cursor     = Cursors.IBeam;

            SizeChanged += PDFTextSentenceLayer_SizeChanged;

            drag_area_tracker = new DragAreaTracker(this, false);
            drag_area_tracker.OnDragStarted    += drag_area_tracker_OnDragStarted;
            drag_area_tracker.OnDragInProgress += drag_area_tracker_OnDragInProgress;
            drag_area_tracker.OnDragComplete   += drag_area_tracker_OnDragComplete;

            text_selection_manager = new TextSelectionManager();

            PreviewMouseDown     += PDFTextSentenceLayer_PreviewMouseDown;
            PreviewKeyDown       += PDFTextLayer_PreviewKeyDown;
            RequestBringIntoView += PDFTextSentenceLayer_RequestBringIntoView;

            text_layer_selection_mode = TextLayerSelectionMode.Sentence;

            //Unloaded += PDFTextSentenceLayer_Unloaded;
            Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
        }
Example #5
0
        protected virtual void Dispose(bool disposing)
        {
            Logging.Debug("PDFTextSentenceLayer::Dispose({0}) @{1}", disposing, dispose_count);

            try
            {
                if (null != drag_area_tracker)
                {
                    WPFDoEvents.InvokeInUIThread(() =>
                    {
                        try
                        {
                            foreach (var el in Children)
                            {
                                IDisposable node = el as IDisposable;
                                if (null != node)
                                {
                                    node.Dispose();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Logging.Error(ex);
                        }

                        try
                        {
                            ClearChildren();
                            Children.Clear();
                        }
                        catch (Exception ex)
                        {
                            Logging.Error(ex);
                        }

                        drag_area_tracker.OnDragStarted    -= drag_area_tracker_OnDragStarted;
                        drag_area_tracker.OnDragInProgress -= drag_area_tracker_OnDragInProgress;
                        drag_area_tracker.OnDragComplete   -= drag_area_tracker_OnDragComplete;
                    }, Dispatcher);
                }

                // Clear the references for sanity's sake
                pdf_renderer_control_stats = null;
                drag_area_tracker          = null;
                text_selection_manager     = null;

                DataContext = null;
            }
            catch (Exception ex)
            {
                Logging.Error(ex);
            }

            ++dispose_count;

            //base.Dispose(disposing);     // parent only throws an exception (intentionally), so depart from best practices and don't call base.Dispose(bool)
        }
        protected virtual void Dispose(bool disposing)
        {
            Logging.Debug("PDFTextSentenceLayer::Dispose({0}) @{1}", disposing, dispose_count);

            WPFDoEvents.InvokeInUIThread(() =>
            {
                WPFDoEvents.SafeExec(() =>
                {
                    if (dispose_count == 0)
                    {
                        foreach (var el in Children)
                        {
                            IDisposable node = el as IDisposable;
                            if (null != node)
                            {
                                node.Dispose();
                            }
                        }
                    }
                });

                WPFDoEvents.SafeExec(() =>
                {
                    ClearChildren();
                    Children.Clear();
                });

                WPFDoEvents.SafeExec(() =>
                {
                    if (drag_area_tracker != null)
                    {
                        drag_area_tracker.OnDragStarted    -= drag_area_tracker_OnDragStarted;
                        drag_area_tracker.OnDragInProgress -= drag_area_tracker_OnDragInProgress;
                        drag_area_tracker.OnDragComplete   -= drag_area_tracker_OnDragComplete;
                    }

                    Dispatcher.ShutdownStarted -= Dispatcher_ShutdownStarted;
                });

                WPFDoEvents.SafeExec(() =>
                {
                    // Clear the references for sanity's sake
                    pdf_renderer_control   = null;
                    drag_area_tracker      = null;
                    text_selection_manager = null;
                });

                WPFDoEvents.SafeExec(() =>
                {
                    DataContext = null;
                });

                ++dispose_count;

                //base.Dispose(disposing);     // parent only throws an exception (intentionally), so depart from best practices and don't call base.Dispose(bool)
            });
        }
        protected virtual void Dispose(bool disposing)
        {
            Logging.Debug("PDFAnnotationLayer::Dispose({0}) @{1}", disposing, dispose_count);

            WPFDoEvents.InvokeInUIThread(() =>
            {
                WPFDoEvents.SafeExec(() =>
                {
                    foreach (var el in Children)
                    {
                        IDisposable node = el as IDisposable;
                        if (null != node)
                        {
                            node.Dispose();
                        }
                    }
                });

                WPFDoEvents.SafeExec(() =>
                {
                    Children.Clear();
                });

                WPFDoEvents.SafeExec(() =>
                {
                    WizardDPs.ClearPointOfInterest(this);
                });

                WPFDoEvents.SafeExec(() =>
                {
                    if (drag_area_tracker != null)
                    {
                        drag_area_tracker.OnDragComplete -= drag_area_tracker_OnDragComplete;
                    }

                    Dispatcher.ShutdownStarted -= Dispatcher_ShutdownStarted;
                });

                WPFDoEvents.SafeExec(() =>
                {
                    // Clear the references for sanity's sake
                    pdf_document      = null;
                    drag_area_tracker = null;
                });

                WPFDoEvents.SafeExec(() =>
                {
                    DataContext = null;
                });

                ++dispose_count;

                //base.Dispose(disposing);     // parent only throws an exception (intentionally), so depart from best practices and don't call base.Dispose(bool)
            });
        }
Example #8
0
        public PDFCameraLayer(PDFRendererControlStats pdf_renderer_control_stats, int page)
        {
            this.pdf_renderer_control_stats = pdf_renderer_control_stats;
            this.page = page;

            InitializeComponent();

            this.Background = Brushes.Transparent;
            this.Cursor     = Cursors.Cross;

            drag_area_tracker = new DragAreaTracker(this);
            drag_area_tracker.OnDragComplete += drag_area_tracker_OnDragComplete;
        }
Example #9
0
        protected virtual void Dispose(bool disposing)
        {
            Logging.Debug("PDFHighlightLayer::Dispose({0}) @{1}", disposing, dispose_count);

            WPFDoEvents.SafeExec(() =>
            {
                foreach (var el in Children)
                {
                    IDisposable node = el as IDisposable;
                    if (null != node)
                    {
                        node.Dispose();
                    }
                }
            }, must_exec_in_UI_thread: true);

            WPFDoEvents.SafeExec(() =>
            {
                Children.Clear();
            }, must_exec_in_UI_thread: true);

            WPFDoEvents.SafeExec(() =>
            {
                if (drag_area_tracker != null)
                {
                    drag_area_tracker.OnDragStarted    -= drag_area_tracker_OnDragStarted;
                    drag_area_tracker.OnDragInProgress -= drag_area_tracker_OnDragInProgress;
                    drag_area_tracker.OnDragComplete   -= drag_area_tracker_OnDragComplete;
                }
            }, must_exec_in_UI_thread: true);

            WPFDoEvents.SafeExec(() =>
            {
                // Clear the references for sanity's sake
                pdf_renderer_control_stats = null;
                drag_area_tracker          = null;
                text_selection_manager     = null;
            });

            WPFDoEvents.SafeExec(() =>
            {
                DataContext = null;
            });

            ++dispose_count;

            //base.Dispose(disposing);     // parent only throws an exception (intentionally), so depart from best practices and don't call base.Dispose(bool)
        }
        public PDFAnnotationLayer(PDFDocument pdf_document, int page)
        {
            WPFDoEvents.AssertThisCodeIsRunningInTheUIThread();

            this.pdf_document = pdf_document;
            this.page         = page;

            InitializeComponent();

            // Wizard
            if (1 == page)
            {
                WizardDPs.SetPointOfInterest(this, "PDFReadingAnnotationLayer");
            }

            Background = Brushes.Transparent;
            Cursor     = Cursors.Cross;

            SizeChanged += PDFAnnotationLayer_SizeChanged;

            drag_area_tracker = new DragAreaTracker(this);
            drag_area_tracker.OnDragComplete += drag_area_tracker_OnDragComplete;

            // Add all the already existing annotations
            foreach (PDFAnnotation pdf_annotation in pdf_document.GetAnnotations())
            {
                if (pdf_annotation.Page == this.page)
                {
                    if (!pdf_annotation.Deleted)
                    {
                        Logging.Info("Loading annotation on page {0}", page);
                        PDFAnnotationItem pdf_annotation_item = new PDFAnnotationItem(this, pdf_annotation);
                        pdf_annotation_item.ResizeToPage(ActualWidth, ActualHeight);
                        Children.Add(pdf_annotation_item);
                    }
                    else
                    {
                        Logging.Info("Not loading deleted annotation on page {0}", page);
                    }
                }
            }

            //Unloaded += PDFAnnotationLayer_Unloaded;
            Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
        }
        public PDFCameraLayer(PDFDocument pdf_document, int page)
        {
            WPFDoEvents.AssertThisCodeIsRunningInTheUIThread();

            this.pdf_document = pdf_document;
            this.page         = page;

            InitializeComponent();

            Background = Brushes.Transparent;
            Cursor     = Cursors.Cross;

            drag_area_tracker = new DragAreaTracker(this);
            drag_area_tracker.OnDragComplete += drag_area_tracker_OnDragComplete;

            //Unloaded += PDFCameraLayer_Unloaded;
            Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
        }
        public PDFAnnotationLayer(PDFRendererControlStats pdf_renderer_control_stats, int page)
        {
            this.pdf_renderer_control_stats = pdf_renderer_control_stats;
            this.page = page;

            InitializeComponent();

            // Wizard
            if (1 == page)
            {
                WizardDPs.SetPointOfInterest(this, "PDFReadingAnnotationLayer");
            }

            Background = Brushes.Transparent;
            Cursor     = Cursors.Cross;

            SizeChanged += PDFAnnotationLayer_SizeChanged;

            drag_area_tracker = new DragAreaTracker(this);
            drag_area_tracker.OnDragComplete += drag_area_tracker_OnDragComplete;

            // Add all the already existing annotations
            foreach (PDFAnnotation pdf_annotation in pdf_renderer_control_stats.pdf_document.GetAnnotations())
            {
                if (pdf_annotation.Page == this.page)
                {
                    if (!pdf_annotation.Deleted)
                    {
                        Logging.Info("Loading annotation on page {0}", page);
                        PDFAnnotationItem pdf_annotation_item = new PDFAnnotationItem(this, pdf_annotation, pdf_renderer_control_stats);
                        pdf_annotation_item.ResizeToPage(ActualWidth, ActualHeight);
                        Children.Add(pdf_annotation_item);
                    }
                    else
                    {
                        Logging.Info("Not loading deleted annotation on page {0}", page);
                    }
                }
            }
        }