internal void NotifyTileCacheFinishedRendering <TEnumerable>(TEnumerable finishedTileOffsets) where TEnumerable : IEnumerable <PointInt32>
 {
     base.VerifyAccess();
     if (this.IsActive)
     {
         RectInt32 num      = this.canvasView.GetVisibleCanvasBounds().Int32Bound;
         RectInt32?nullable = null;
         foreach (PointInt32 num3 in finishedTileOffsets)
         {
             this.isDeviceBitmapCurrent[num3.Y][num3.X] = false;
             RectInt32 tileSourceRect = this.tileMathHelper.GetTileSourceRect(num3);
             if (num.IntersectsWith(tileSourceRect))
             {
                 nullable = new RectInt32?(RectInt32Util.Union(nullable, tileSourceRect));
             }
             else
             {
                 this.ReleaseDeviceBitmap(num3);
             }
             this.nonCurrentTileOffsets.TryEnqueue(num3, QueueSide.Back);
         }
         if (nullable.HasValue)
         {
             this.canvasView.Invalidate(nullable.Value);
         }
     }
     else
     {
         foreach (PointInt32 num5 in finishedTileOffsets)
         {
             this.ReleaseDeviceBitmap(num5);
         }
     }
 }
Esempio n. 2
0
        public void ReplaceLayerOverlay(Layer layer, DocumentLayerOverlay oldOverlay, DocumentLayerOverlay newOverlay, RectInt32?invalidateRect)
        {
            DocumentLayerOverlay overlay;

            base.VerifyAccess();
            if ((oldOverlay == null) && (newOverlay == null))
            {
                throw new ArgumentNullException();
            }
            this.overlays.TryGetValue(layer, out overlay);
            if (overlay != oldOverlay)
            {
                throw new InvalidOperationException();
            }
            if ((oldOverlay == null) && (newOverlay != null))
            {
                this.SetLayerOverlay(layer, newOverlay, invalidateRect);
            }
            else if (newOverlay == null)
            {
                this.RemoveLayerOverlay(layer, overlay, invalidateRect);
            }
            else
            {
                if (newOverlay.IsCancellationRequested)
                {
                    throw new InvalidOperationException("Cannot set an overlay which is already cancelled");
                }
                this.overlays[layer] = newOverlay;
                this.documentRenderer.ReplaceLayerOverlay(layer, newOverlay);
                oldOverlay.Cancel();
                if (invalidateRect.HasValue)
                {
                    if (invalidateRect.Value.HasPositiveArea)
                    {
                        layer.Invalidate(invalidateRect.Value);
                    }
                }
                else
                {
                    RectInt32?nullable  = (oldOverlay == null) ? null : new RectInt32?(oldOverlay.AffectedBounds);
                    RectInt32?nullable2 = (newOverlay == null) ? null : new RectInt32?(newOverlay.AffectedBounds);
                    RectInt32?nullable3 = RectInt32Util.Union(nullable, nullable2);
                    if (nullable3.HasValue && nullable3.Value.HasPositiveArea)
                    {
                        layer.Invalidate(nullable3.Value);
                    }
                }
            }
        }
Esempio n. 3
0
        protected override void OnMouseMove(MouseEventArgsF e)
        {
            base.OnMouseMove(e);
            PointInt32 b = new PointInt32(e.X, e.Y);

            if (this.moveOffsetMode)
            {
                VectorInt32 num2 = (VectorInt32)(b - this.lastPt);
                this.downPt.X += num2.X;
                this.downPt.Y += num2.Y;
            }
            if ((e.Button == MouseButtons.Left) && (this.mouseDown == MouseButtons.Left))
            {
                VectorDouble num3 = (VectorDouble)(b - this.downPt);
                if (num3.Length >= 10.0)
                {
                    goto Label_00B1;
                }
            }
            if (!this.rect.HasPositiveArea)
            {
                if ((e.Button == MouseButtons.Middle) && (this.mouseDown == MouseButtons.Middle))
                {
                    PointDouble documentScrollPosition = base.DocumentWorkspace.DocumentScrollPosition;
                    documentScrollPosition.X += b.X - this.lastPt.X;
                    documentScrollPosition.Y += b.Y - this.lastPt.Y;
                    base.DocumentWorkspace.DocumentScrollPosition = documentScrollPosition;
                    base.Update();
                }
                else
                {
                    this.rect = RectInt32.Zero;
                }
                goto Label_0173;
            }
Label_00B1:
            this.rect = RectInt32Util.FromPixelPoints(this.downPt, b);
            this.rect = RectInt32.Intersect(this.rect, base.ActiveLayer.Bounds());
            this.UpdateDrawnRect();
Label_0173:
            this.lastPt = b;
        }
Esempio n. 4
0
 private void ProcessInvalidationQueue()
 {
     if (!base.IsDisposed)
     {
         RectInt32 num2;
         base.VerifyAccess();
         int       count    = this.invalidationQueue.Count;
         RectInt32?nullable = null;
         while ((count > 0) && this.invalidationQueue.TryDequeue(out num2))
         {
             nullable = new RectInt32?(RectInt32Util.Union(nullable, num2));
             count--;
         }
         if (nullable.HasValue)
         {
             RectInt32 invalidRect = RectInt32.Intersect(this.Document.Bounds(), nullable.Value);
             this.InvalidateCore(invalidRect);
         }
     }
 }