Example #1
0
        public MainWindow(IServiceProvider serviceProvider)
        {
            InitializeComponent();

            bool isClosing = false;

            _serviceProvider = serviceProvider;
            _projectEditor   = _serviceProvider.GetService <ProjectEditor>();

            _previewWindow = new SvgWindow();

            _previewWindow.svgButton.Click += (sender, e) =>
            {
                UpdateSvg();
            };

            _previewWindow.Closing += (sender, e) =>
            {
                if (!isClosing)
                {
                    _previewWindow.Hide();
                    e.Cancel = true;
                }
            };

            Loaded += (seender, e) =>
            {
                _projectEditor.CurrentTool     = _projectEditor.Tools.FirstOrDefault(t => t.Name == "Selection");
                _projectEditor.CurrentPathTool = _projectEditor.PathTools.FirstOrDefault(t => t.Name == "Line");
                _projectEditor.OnNewProject();
                _projectEditor.Invalidate = () =>
                {
                    OnRefreshRequested(null, null);
                    if (_previewWindow.svgLive.IsChecked == true)
                    {
                        UpdateSvg();
                    }
                };

                _renderer  = _projectEditor.Renderers[0];
                _container = _projectEditor.Project.CurrentContainer;
                _presenter = new EditorPresenter();

                canvas.Focusable = true;
                canvas.Focus();
                OnRefreshRequested(null, null);

                _inputProcessor = new InputProcessor(
                    new WpfInputSource(
                        canvas,
                        canvas,
                        FixPointOffset),
                    _projectEditor);
            };

            Closing += (sender, e) =>
            {
                _inputProcessor.Dispose();
                isClosing = true;
                _previewWindow.Close();
            };

            KeyDown += (sender, e) =>
            {
                bool isControl = Keyboard.Modifiers == ModifierKeys.Control;

                if (isControl)
                {
                    switch (e.Key)
                    {
                    case Key.P:
                        _previewWindow.Show();
                        break;

                    case Key.N:
                        NewProject();
                        break;

                    case Key.O:
                        OpenProject();
                        break;

                    case Key.S:
                        SaveProject();
                        break;

                    case Key.E:
                        Export(_projectEditor.Project.CurrentContainer);
                        break;

                    case Key.Z:
                        _projectEditor.OnUndo();
                        break;

                    case Key.Y:
                        _projectEditor.OnRedo();
                        break;

                    case Key.X:
                        _projectEditor.OnCut();
                        break;

                    case Key.C:
                        _projectEditor.OnCopy();
                        break;

                    case Key.V:
                        _projectEditor.OnPaste();
                        break;

                    case Key.A:
                        _projectEditor.OnSelectAll();
                        break;

                    case Key.G:
                        _projectEditor.OnGroupSelected();
                        break;

                    case Key.U:
                        _projectEditor.OnUngroupSelected();
                        break;
                    }
                }
                else
                {
                    switch (e.Key)
                    {
                    case Key.N:
                        _projectEditor.OnToolNone();
                        break;

                    case Key.S:
                        _projectEditor.OnToolSelection();
                        break;

                    case Key.P:
                        _projectEditor.OnToolPoint();
                        break;

                    case Key.L:
                        _projectEditor.OnToolLine();
                        break;

                    case Key.A:
                        _projectEditor.OnToolArc();
                        break;

                    case Key.B:
                        _projectEditor.OnToolCubicBezier();
                        break;

                    case Key.Q:
                        _projectEditor.OnToolQuadraticBezier();
                        break;

                    case Key.H:
                        _projectEditor.OnToolPath();
                        break;

                    case Key.M:
                        _projectEditor.OnToolMove();
                        break;

                    case Key.R:
                        _projectEditor.OnToolRectangle();
                        break;

                    case Key.E:
                        _projectEditor.OnToolEllipse();
                        break;

                    case Key.T:
                        _projectEditor.OnToolText();
                        break;

                    case Key.I:
                        _projectEditor.OnToolImage();
                        break;

                    case Key.K:
                        _projectEditor.OnToggleDefaultIsStroked();
                        break;

                    case Key.F:
                        _projectEditor.OnToggleDefaultIsFilled();
                        break;

                    case Key.D:
                        _projectEditor.OnToggleDefaultIsClosed();
                        break;

                    case Key.J:
                        _projectEditor.OnToggleDefaultIsSmoothJoin();
                        break;

                    case Key.G:
                        _projectEditor.OnToggleSnapToGrid();
                        break;

                    case Key.C:
                        _projectEditor.OnToggleTryToConnect();
                        break;

                    case Key.Y:
                        _projectEditor.OnToggleCloneStyle();
                        break;

                    case Key.Delete:
                        _projectEditor.OnDeleteSelected();
                        break;

                    case Key.Escape:
                        _projectEditor.OnDeselectAll();
                        break;
                    }
                }
            };
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="IcoSkiaSharpExporter"/> class.
 /// </summary>
 /// <param name="renderer">The shape renderer.</param>
 /// <param name="presenter">The container presenter.</param>
 public IcoSkiaSharpExporter(ShapeRenderer renderer, ContainerPresenter presenter)
 {
     _renderer  = renderer;
     _presenter = presenter;
 }
Example #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PdfSkiaSharpExporter"/> class.
 /// </summary>
 /// <param name="renderer">The shape renderer.</param>
 /// <param name="presenter">The container presenter.</param>
 /// <param name="targetDpi">The target renderer dpi.</param>
 public PdfSkiaSharpExporter(ShapeRenderer renderer, ContainerPresenter presenter, float targetDpi = 72.0f)
 {
     _renderer  = renderer;
     _presenter = presenter;
     _targetDpi = targetDpi;
 }