public ModernPastelRenderer(Document document, ICanvasControl canvas)
     : base(document, canvas)
 {
     Resources.AddThemeColors(
         0xF7977A,
         0xF9AD81,
         0xFDC68A,
         0xFFF79A,
         0xC4DF9B,
         0xF26C4F,
         0xF68E55,
         0xFBAF5C,
         0xFFF467,
         0xACD372,
         0xA2D39C,
         0x82CA9D,
         0x7BCDC8,
         0x6ECFF6,
         0x7EA7D8,
         0x7CC576,
         0x3BB878,
         0x1ABBB4,
         0x00BFF3,
         0x438CCA,
         0x8493CA,
         0x8882BE,
         0xBC8DBF,
         0xF49AC2,
         0xF6989D,
         0x605CA8,
         0x855FA8,
         0xA763A8,
         0xF06EA9,
         0xF26D7D);
 }
Esempio n. 2
0
        public Win2DIcon(INodeIcon icon, ICanvasControl canvasControl)
        {
            Guard.NotNull(icon, nameof(icon));

            name = icon.Name;

            LoadFile(icon, canvasControl.Device).ContinueWith(task => AttachBitmap(canvasControl, task));
        }
Esempio n. 3
0
 protected override IDynamicInputer OnCreateInputer(PointBase drawObject, ICanvasControl canvasControl)
 {
     return(new LengthAndAngleDynamicInputer <PointBase>(
                drawObject,
                canvasControl,
                NumberBoxService.Current
                ));
 }
Esempio n. 4
0
        public Win2DRenderer CreateRenderer(Document document, ICanvasControl canvas)
        {
            Current = new ModernPastelRenderer(document, canvas);

            RendererCreated?.Invoke(this, EventArgs.Empty);

            return(Current);
        }
        public IDynamicInputer CreateInputer(ICanvasControl canvasControl)
        {
            if (!(canvasControl.CurrentEditTool is SingleLineEditTool singleLineEditTool))
            {
                return(null);
            }

            return(new LengthAndAngleDynamicInputer <SingleLineEditTool>(singleLineEditTool, canvasControl, NumberBoxService.Current));
        }
Esempio n. 6
0
        private void AttachBitmap(ICanvasControl canvasControl, Task <CanvasBitmap> task)
        {
            canvasControl.Dispatcher.RunAsync(CoreDispatcherPriority.High, canvasControl.Invalidate).AsTask();

            if (IsDisposed)
            {
                task.Result.Dispose();
            }
            else
            {
                bitmap = task.Result;
            }
        }
Esempio n. 7
0
        public NumberBoxesDynamicInputer(
            NumberBoxInteractionHandlerContainer numberBoxInteractionHandler,
            ICanvasControl canvasControl,
            INumberBoxService numberBoxService
            ) : base(canvasControl)
        {
            _numberBoxService   = numberBoxService ?? throw new ArgumentNullException(nameof(numberBoxService));
            _numberBoxContainer = _numberBoxService.CreateContainer();

            NumberBoxInteractionHandlerContainer = numberBoxInteractionHandler ?? throw new ArgumentNullException(nameof(numberBoxInteractionHandler));

            Initialize();
        }
Esempio n. 8
0
        /// <summary>
        /// Convert canvas coordinates to values
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="input"></param>
        public virtual Point GetValues(ICanvasControl panel, Point input)
        {
            // Convert to values

            var deltaX = input.X / panel.W;
            var deltaY = input.Y / panel.H;

            // Percentage to values, Y is inverted

            input.X = MinIndex + (MaxIndex - MinIndex) * deltaX;
            input.Y = MaxValue - (MaxValue - MinValue) * deltaY;

            return(input);
        }
Esempio n. 9
0
        protected Win2DRenderer(Document document, ICanvasControl canvas)
        {
            Guard.NotNull(document, nameof(document));
            Guard.NotNull(canvas, nameof(canvas));

            this.canvas   = canvas;
            this.document = document;

            scene = new Win2DScene(document, CreatePreviewNode(), CreateRenderNode);

            InitializeCanvas();
            InitializeDocument();

            resources = new Win2DResourceManager(canvas);
        }
Esempio n. 10
0
        protected override IDynamicInputer OnCreateInputer(LineBase line, ICanvasControl canvasControl)
        {
            if (line.MousePositionTracker.LastMouseDownPosition.IsAlmostEqualTo(line.Line2D.Start) ||
                line.MousePositionTracker.LastMouseDownPosition.IsAlmostEqualTo(line.Line2D.End))
            {
                var haveMousePositionWrapper = new HaveMousePositionTrackerForLineBase(line);
                var inputer = new LengthAndAngleDynamicInputer <HaveMousePositionTrackerForLineBase>(haveMousePositionWrapper, canvasControl, NumberBoxService.Current);
                inputer.Disposed += (sender, e) => haveMousePositionWrapper.Dispose();

                return(inputer);
            }

            return(new LengthAndAngleDynamicInputer <LineBase>(
                       line,
                       canvasControl,
                       NumberBoxService.Current
                       ));
        }
Esempio n. 11
0
        /// <summary>
        /// Create label
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="posH"></param>
        /// <returns></returns>
        private FrameworkElement CreateLabel(ICanvasControl panel, HorizontalAlignment posH)
        {
            var step = Composer.StepSize.Value;

            var label = new TextBlock
            {
                Text                = "0.0",
                FontSize            = FontSize,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = posH,
                Foreground          = new SolidColorBrush(ColorFront),
                Margin              = new Thickness(0),
                Padding             = new Thickness(0)
            };

            var container = new Border
            {
                Height          = FontSize + step,
                Child           = label,
                ClipToBounds    = true,
                Margin          = new Thickness(0),
                Padding         = new Thickness(0),
                BorderThickness = new Thickness(0),
                Background      = new SolidColorBrush(ColorBack)
            };

            if (panel != null)
            {
                container.Width = panel.W;
            }

            switch (posH)
            {
            case HorizontalAlignment.Left: container.Padding = new Thickness(step * 2, 0, 0, 0); break;

            case HorizontalAlignment.Right: container.Padding = new Thickness(0, 0, step * 2, 0); break;

            case HorizontalAlignment.Center: container.Padding = new Thickness(step, 0, step, 0); break;
            }

            return(container);
        }
Esempio n. 12
0
        public IDynamicInputer CreateInputer(ICanvasControl canvasControl)
        {
            if (canvasControl == null)
            {
                throw new ArgumentNullException(nameof(canvasControl));
            }

            if (canvasControl.CurrentEditTool == null)
            {
                return(null);
            }

            if (canvasControl.CurrentEditTool.GetType() != typeof(TEditTool))
            {
                return(null);
            }


            return(OnCreateInputer(canvasControl, (TEditTool)canvasControl.CurrentEditTool));
        }
Esempio n. 13
0
        /// <summary>
        /// Convert values to canvas coordinates
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="input"></param>
        public virtual Point GetPixels(ICanvasControl panel, Point input)
        {
            // Clip

            input.X = Math.Min(Math.Max(MinIndex, input.X), MaxIndex);
            input.Y = Math.Min(Math.Max(MinValue, input.Y), MaxValue);

            // Convert to device pixels

            var deltaX = (input.X - MinIndex) / (MaxIndex - MinIndex);
            var deltaY = (input.Y - MinValue) / (MaxValue - MinValue);
            var deltaW = panel.W;
            var deltaH = panel.H;

            // Percentage to pixels, Y is inverted

            input.X = deltaW * deltaX;
            input.Y = deltaH - deltaH * deltaY;

            return(input);
        }
        /// <summary>
        /// 当且仅当画布中的特定类型的一个且只有一个编辑对象在被编辑时,
        /// 本方法才可能返回特定的动态输入处理器;
        /// 返回的动态输入处理器具体类型,将在<see cref="OnCreateInputer(TDrawObject, ICanvasControl)"/>中实现;
        /// </summary>
        /// <param name="canvasControl"></param>
        /// <returns></returns>
        public IDynamicInputer CreateInputer(ICanvasControl canvasControl)
        {
            //编辑工具需为空;
            if (canvasControl.CurrentEditTool != null)
            {
                return(null);
            }

            //获取所有正在被编辑的绘制对象;
            var allEditingDrawObjects = canvasControl.GetAllVisibleDrawObjects().
                                        Where(p => p.IsSelected && p.IsEditing).
                                        Select(p => p as TDrawObject).Where(p => p != null);

            //当且仅当存在一个时,才能返回;
            if (allEditingDrawObjects.Count() != 1)
            {
                return(null);
            }

            var editingDrawObject = allEditingDrawObjects.First();

            return(OnCreateInputer(editingDrawObject, canvasControl));
        }
Esempio n. 15
0
 protected override IDynamicInputer OnCreateInputer(ICanvasControl canvasControl, CopyEditTool editTool)
 {
     return(new LengthAndAngleDynamicInputer <CopyEditTool>(editTool, canvasControl, NumberBoxService.Current));
 }
Esempio n. 16
0
 public LengthAndAngleDynamicInputer(THaveMousePositionTracker haveMousePositionTracker, ICanvasControl canvasControl, INumberBoxService numberBoxService) :
     base(
         LengthAndAngleNumContainerForMouseTrackable <THaveMousePositionTracker> .
         CreateFromHaveMousePositionTracker(haveMousePositionTracker, canvasControl.CanvasProxy),
         canvasControl,
         numberBoxService
         )
 {
 }
Esempio n. 17
0
 protected abstract IDynamicInputer OnCreateInputer(ICanvasControl canvasControl, TEditTool editTool);
Esempio n. 18
0
 /// <summary>
 /// Transform coordinates
 /// </summary>
 /// <param name="panel"></param>
 /// <param name="index"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public virtual Point GetPixels(ICanvasControl panel, double index, double value)
 {
     return(GetPixels(panel, new Point(index, value)));
 }
 protected abstract IDynamicInputer OnCreateInputer(TDrawObject drawObject, ICanvasControl canvasControl);
Esempio n. 20
0
        public Win2DResourceManager(ICanvasControl canvas)
        {
            Guard.NotNull(canvas, nameof(canvas));

            this.canvas = canvas;
        }
 public RoundDiameterTwoPointsEditDynamicInputer(RoundDiameterTwoPointsEditTool roundDiameterTwoPointsEditTool, ICanvasControl canvasControl, INumberBoxService numberBoxService) :
     base(roundDiameterTwoPointsEditTool, canvasControl, numberBoxService)
 {
 }
Esempio n. 22
0
 public CanvasControlDynamicInputerBase(ICanvasControl canvasControl)
 {
     CanvasControl = canvasControl ?? throw new ArgumentNullException(nameof(canvasControl));
 }
Esempio n. 23
0
 public EditToolDynamicInputerGenericBase(ICanvasControl canvasControl) : base(canvasControl)
 {
     this.EditTool = (canvasControl.CurrentEditTool as TEditTool) ?? throw new InvalidCastException();
 }