Пример #1
0
        protected virtual IEnumerable <T> InternalCull(ImageViewState viewState)
        {
            var culler = new QuadTreeCuller(this.QuadTree);

            // because every registered item has been inserted for 4 times (see RegisterItem),
            // we use Distinct() to remove duplicated items.
            return(culler.Cull(viewState).Distinct());
        }
            public IEnumerable <T> Cull(ImageViewState viewState)
            {
                var elements = new List <T>();

                if (this.QuadTree.RootNode != null)
                {
                    var cullRect    = new Rect(0, 0, viewState.ViewportWidth, viewState.ViewportHeight);
                    var cullContext = new CullContext(cullRect, viewState);
                    CullRecursive(elements, cullContext, this.QuadTree.RootNode);
                }

                return(elements);
            }
Пример #3
0
        private void GoFullScreen()
        {
            BeginInit();

            WindowState = WindowState.Maximized;
            WindowStyle = WindowStyle.None;

            _imageScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
            _imageScrollViewer.VerticalScrollBarVisibility   = ScrollBarVisibility.Disabled;

            _imageViewState = ImageViewState.FullScreen;
            var fullScreenSize = this.GetScreenBounds();

            _image.Source = _imageFile.GetResizedImage(fullScreenSize);

            EndInit();
        }
Пример #4
0
        private void GoDetailed()
        {
            BeginInit();

            _imageScrollViewer.ScrollToHorizontalOffset(0);
            _imageScrollViewer.ScrollToVerticalOffset(0);

            WindowState = WindowState.Maximized;
            WindowStyle = WindowStyle.SingleBorderWindow;

            _imageScrollViewer.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
            _imageScrollViewer.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;

            _imageViewState = ImageViewState.Detailed;
            _image.Source   = _imageFile.GetImage();

            EndInit();
        }
Пример #5
0
        public void Cull(ImageViewState viewState)
        {
            var cullResult   = new HashSet <T>(this.InternalCull(viewState));
            var addedItems   = new List <T>();
            var removedItems = new List <T>();

            foreach (var item in cullResult)
            {
                if (!this.VisibleItems.Contains(item))
                {
                    addedItems.Add(item);
                }
            }

            foreach (var item in this.VisibleItems)
            {
                if (!cullResult.Contains(item))
                {
                    removedItems.Add(item);
                }
            }

            var countChanged = this.VisibleItems.Count != cullResult.Count;

            this.VisibleItems = cullResult;

            if (countChanged)
            {
                this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(this.Count)));
            }

            if (removedItems.Count > 0)
            {
                this.OnCollectionChanged(
                    new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, removedItems));
            }

            if (addedItems.Count > 0)
            {
                this.OnCollectionChanged(
                    new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, addedItems));
            }
        }
Пример #6
0
        public void ChangeMode(ImageViewState mode)
        {
            if (mode != this.ImageViewState)
            {
                this.MouseState = MouseState.Idle;
            }
            this.ImageViewState = mode;
            switch (mode)
            {
            case ImageViewState.Normal:
                this.Cursor = Cursors.Hand;
                break;

            case ImageViewState.Edit:
                break;

            case ImageViewState.Draw:
                break;

            default:
                break;
            }
        }
Пример #7
0
 void IOverlay.OnViewStateChanged(ImageViewState viewState)
 {
     this.OnViewStateChanged(viewState);
 }