Beispiel #1
0
        private void InitializeStorageBasedChange(SKRectI toolSessionRect)
        {
            Document doc       = ViewModels.ViewModelMain.Current.BitmapManager.ActiveDocument;
            var      toolSize  = Toolbar.GetSetting <SizeSetting>("ToolSize");
            SKRectI  finalRect = toolSessionRect;

            if (toolSize != null && toolSize.Value > 1)
            {
                int halfSize = (int)Math.Ceiling(toolSize.Value / 2f);
                finalRect.Inflate(halfSize, halfSize);
            }

            if (toolSessionRect.IsEmpty)
            {
                finalRect = SKRectI.Create(doc.ActiveLayer.OffsetX, doc.ActiveLayer.OffsetY, doc.ActiveLayer.Width, doc.ActiveLayer.Height);
            }

            if (UseDocumentRectForUndo)
            {
                finalRect = SKRectI.Create(0, 0, doc.Width, doc.Height);
            }

            if (_customRectReported)
            {
                _customRectReported = false;
                finalRect           = _rectReportedByTool;
                _rectReportedByTool = SKRectI.Empty;
            }

            _change = new StorageBasedChange(doc, new[] { new LayerChunk(doc.ActiveLayer, finalRect) });
        }