Пример #1
0
        public virtual Vector2 Measure(Win2DRenderable renderable, ICanvasResourceCreator resourceCreator)
        {
            textRenderer.Measure(renderable, resourceCreator);

            textIconRenderSize = textRenderer.RenderSize;

            if (renderable.Node.Icon != null)
            {
                var targetSize = IconSizeSmall;

                if (renderable.Node.IconSize == IconSize.Medium)
                {
                    targetSize = IconSizeMedium;
                }
                else if (renderable.Node.IconSize == IconSize.Large)
                {
                    targetSize = IconSizeLarge;
                }

                iconRenderSize = new Vector2(renderable.Node.Icon.PixelWidth, renderable.Node.Icon.PixelHeight);

                var ratio = iconRenderSize.X / iconRenderSize.Y;

                if (iconRenderSize.X > iconRenderSize.Y)
                {
                    iconRenderSize = new Vector2(targetSize, targetSize / ratio);
                }
                else
                {
                    iconRenderSize = new Vector2(targetSize * ratio, targetSize);
                }

                if (renderable.Node.IconPosition == IconPosition.Left || renderable.Node.IconPosition == IconPosition.Right)
                {
                    textIconRenderSize.X += iconRenderSize.X;
                    textIconRenderSize.X += IconMargin;

                    textIconRenderSize.Y = Math.Max(textIconRenderSize.Y, iconRenderSize.Y);
                }
                else
                {
                    textIconRenderSize.Y += iconRenderSize.Y;
                    textIconRenderSize.Y += IconMargin;

                    textIconRenderSize.X = Math.Max(textIconRenderSize.X, iconRenderSize.X);
                }
            }

            textIconRenderSize.Y = Math.Max(MinHeight, textIconRenderSize.Y);
            textIconPadding      = CalculatePadding(textIconRenderSize);

            var totalSize = textIconRenderSize + (2 * textIconPadding);

            if (MustRenderCheckBox(renderable))
            {
                totalSize.X += CheckBoxSize + CheckBoxMargin;
            }

            return(totalSize);
        }
Пример #2
0
 public void Render(Win2DRenderable renderable, CanvasDrawingSession session, Win2DColor color, bool renderControls)
 {
     if (pathGeometries != null)
     {
         RenderInternal(session, pathGeometries, renderable.Resources.Brush(strokeColor, opacity));
     }
 }
Пример #3
0
        public override void Render(Win2DRenderable renderable, CanvasDrawingSession session, Win2DColor color, bool renderControls)
        {
            var borderBrush = renderable.Resources.ThemeDarkBrush(color);

            var lineBrush = renderable.Resources.Brush(pathColor, 1);

            var left = new Vector2(
                (float)Math.Round(renderable.RenderBounds.Left - 1),
                (float)Math.Round(renderable.RenderBounds.CenterY) + verticalOffset);

            var right = new Vector2(
                (float)Math.Round(renderable.RenderBounds.Right + 1),
                (float)Math.Round(renderable.RenderBounds.CenterY) + verticalOffset);

            session.DrawLine(left, right, lineBrush, 2, StrokeStyle);

            RenderIcon(renderable, session);
            RenderText(renderable, session);

            RenderCheckBox(renderable, session);

            if (!renderControls)
            {
                return;
            }

            if (renderable.Node.IsSelected)
            {
                session.DrawRoundedRectangle(renderable.RenderBounds.ToRect(), 5, 5, borderBrush, 2f, SelectionStrokeStyle);
            }

            RenderExpandButton(renderable, session);
            RenderNotesButton(renderable, session);
        }
Пример #4
0
        public override Vector2 Measure(Win2DRenderable renderable, ICanvasResourceCreator resourceCreator)
        {
            var size = base.Measure(renderable, resourceCreator);

            verticalOffset = (size.Y - VerticalOffsetPadding) - (0.5f * size.Y);

            return(size);
        }
Пример #5
0
        protected void RenderCheckBox(Win2DRenderable renderable, CanvasDrawingSession session)
        {
            if (!MustRenderCheckBox(renderable))
            {
                return;
            }

            checkBox.Render(renderable, session);
        }
Пример #6
0
        protected void RenderExpandButton(Win2DRenderable renderable, CanvasDrawingSession session)
        {
            if (!MustRenderExpandButton(renderable))
            {
                return;
            }

            expandButton.Render(renderable, session);
        }
Пример #7
0
        public void Render(Win2DRenderable renderable, CanvasDrawingSession session)
        {
#if DRAW_OUTLINE
            session.DrawRectangle(renderBounds.ToRect(), Colors.Turquoise);
#endif
            var color = renderable.Node.HasNotes ? Colors.Black : Colors.Gray;

            session.DrawText(Glyph, renderPosition.X, renderPosition.Y, color, TextFormat);
        }
Пример #8
0
        public void Render(Win2DRenderable renderable, CanvasDrawingSession session, Win2DColor color, bool renderControls)
        {
            if (hullGeometry == null)
            {
                return;
            }

            session.DrawGeometry(hullGeometry, renderable.Resources.Brush(color.Normal, 1.0f), 1f);
            session.FillGeometry(hullGeometry, renderable.Resources.Brush(color.Lighter, 0.5f));
        }
Пример #9
0
        public void Arrange(Win2DRenderable renderable, ICanvasResourceCreator resourceCreator)
        {
            ClearResources();

            var renderNode = renderable as Win2DRenderNode;

            if (renderNode != null)
            {
                hullGeometry = GeometryBuilder.ComputeHullGeometry(resourceCreator, renderable.Scene, renderNode);
            }
        }
Пример #10
0
        public void Render(Win2DRenderable renderable, CanvasDrawingSession session)
        {
            RenderCircle(session);

            var halfRadius = 0.5f * renderRadius;

            RenderHorizontal(session, halfRadius);

            if (renderable.Node.IsCollapsed)
            {
                RenderVertical(session, halfRadius);
            }
        }
Пример #11
0
        public override void Render(Win2DRenderable renderable, CanvasDrawingSession session, Win2DColor color, bool renderSelection)
        {
            var borderBrush = renderable.Resources.ThemeDarkBrush(color);

            var backgroundBrush =
                renderable.Node.IsSelected ?
                renderable.Resources.ThemeLightBrush(color) :
                renderable.Resources.ThemeNormalBrush(color);

            var bounds = renderable.RenderBounds.ToRect();

            if (borderRadius > 0)
            {
                session.FillRoundedRectangle(bounds, borderRadius, borderRadius, backgroundBrush);

                session.DrawRoundedRectangle(bounds, borderRadius, borderRadius, borderBrush);
            }
            else
            {
                session.FillRectangle(bounds, backgroundBrush);

                session.DrawRectangle(bounds, borderBrush);
            }

            RenderIcon(renderable, session);
            RenderText(renderable, session);

            RenderCheckBox(renderable, session);

            if (!renderSelection)
            {
                return;
            }

            if (renderable.Node.IsSelected)
            {
                var rect = Rect2.Deflate(renderable.RenderBounds, SelectionMargin).ToRect();

                if (borderRadius > 0)
                {
                    session.DrawRoundedRectangle(rect, borderRadius * 1.4f, borderRadius * 1.4f, borderBrush, 2f, SelectionStrokeStyle);
                }
                else
                {
                    session.DrawRectangle(rect, borderBrush, 2f, SelectionStrokeStyle);
                }
            }

            RenderExpandButton(renderable, session);
            RenderNotesButton(renderable, session);
        }
Пример #12
0
        public override void Render(Win2DRenderable renderable, CanvasDrawingSession session, Win2DColor color, bool renderControls)
        {
            var borderBrush = renderable.Resources.ThemeDarkBrush(color);

            var backgroundBrush =
                renderable.Node.IsSelected ?
                renderable.Resources.ThemeLightBrush(color) :
                renderable.Resources.ThemeNormalBrush(color);

            var radiusX = 0.5f * renderable.RenderSize.X;
            var radiusY = 0.5f * renderable.RenderSize.Y;

            session.FillEllipse(
                renderable.RenderBounds.Center,
                radiusX,
                radiusY,
                backgroundBrush);

            session.DrawEllipse(
                renderable.RenderBounds.Center,
                radiusX,
                radiusY,
                borderBrush);

            RenderIcon(renderable, session);
            RenderText(renderable, session);

            RenderCheckBox(renderable, session);

            if (!renderControls)
            {
                return;
            }

            if (renderable.Node.IsSelected)
            {
                radiusX -= SelectionMargin.X;
                radiusY -= SelectionMargin.Y;

                session.DrawEllipse(
                    renderable.RenderBounds.Center,
                    radiusX,
                    radiusY,
                    borderBrush, 2f, SelectionStrokeStyle);
            }

            RenderExpandButton(renderable, session);
            RenderNotesButton(renderable, session);
        }
Пример #13
0
        public void Render(Win2DRenderable renderable, CanvasDrawingSession session)
        {
            using (session.StackTransform(Matrix3x2.CreateTranslation(renderPosition)))
            {
#if DRAW_OUTLINE
                session.DrawRectangle(0, 0, renderSize.X, renderSize.Y, Colors.Purple);
#endif
                session.FillRectangle(0, 0, renderSize.X, renderSize.Y, Colors.White);
                session.DrawRectangle(0, 0, renderSize.X, renderSize.Y, Colors.Black);

                if (renderable.Node.IsChecked)
                {
                    RenderCheck(session);
                }
            }
        }
Пример #14
0
        protected void RenderIcon(Win2DRenderable renderable, CanvasDrawingSession session)
        {
            if (renderable.Node.Icon == null)
            {
                return;
            }

            var image = renderable.Resources.Image(renderable.Node);

            if (image == null)
            {
                return;
            }

            var rect = new Rect(
                iconRenderPosition.X,
                iconRenderPosition.Y,
                iconRenderSize.X,
                iconRenderSize.Y);

            session.DrawImage(image, rect, image.GetBounds(session), 1, CanvasImageInterpolation.HighQualityCubic);
        }
Пример #15
0
        public void Arrange(Win2DRenderable renderable, ICanvasResourceCreator resourceCreator)
        {
            var renderNode = renderable as Win2DRenderNode;

            if (renderNode?.Parent == null)
            {
                return;
            }

            var currentPosition = renderable.RenderPosition;
            var parentPosition  = renderNode.Parent.RenderPosition;

            if ((lastActualPosition == currentPosition) && (lastParentPosition == parentPosition))
            {
                return;
            }

            lastActualPosition = currentPosition;
            lastParentPosition = parentPosition;

            ClearResources();

            pathGeometries = CreateGeometries(renderNode, resourceCreator).ToArray();
        }
Пример #16
0
 public abstract void Render(Win2DRenderable renderable, CanvasDrawingSession session, Win2DColor color, bool renderControls);
Пример #17
0
 public override void Arrange(Win2DRenderable renderable, ICanvasResourceCreator resourceCreator)
 {
 }
Пример #18
0
 public override Vector2 Measure(Win2DRenderable renderable, ICanvasResourceCreator resourceCreator)
 {
     return(size);
 }
Пример #19
0
 protected void RenderText(Win2DRenderable renderable, CanvasDrawingSession session)
 {
     textRenderer.Render(renderable, session);
 }
Пример #20
0
        public virtual void Arrange(Win2DRenderable renderable, ICanvasResourceCreator resourceCreator)
        {
            var iconOffset = Vector2.Zero;
            var textOffset = Vector2.Zero;

            var textRenderSize = textRenderer.RenderSize;

            if (renderable.Node.Icon == null)
            {
                textOffset.Y = 0.5f * (textIconRenderSize.Y - textRenderSize.Y);
            }
            else if (renderable.Node.IconPosition == IconPosition.Left)
            {
                textOffset.Y = 0.5f * (textIconRenderSize.Y - textRenderSize.Y);
                textOffset.X = iconRenderSize.X + IconMargin;

                iconOffset.Y = 0.5f * (textIconRenderSize.Y - iconRenderSize.Y);
            }
            else if (renderable.Node.IconPosition == IconPosition.Right)
            {
                textOffset.Y = 0.5f * (textIconRenderSize.Y - textRenderSize.Y);

                iconOffset.X = textRenderSize.X + IconMargin;
                iconOffset.Y = 0.5f * (textIconRenderSize.Y - iconRenderSize.Y);
            }
            else if (renderable.Node.IconPosition == IconPosition.Top)
            {
                textOffset.X = 0.5f * (textIconRenderSize.X - textRenderSize.X);
                textOffset.Y = iconRenderSize.Y + IconMargin;

                iconOffset.X = 0.5f * (textIconRenderSize.X - iconRenderSize.X);
            }
            else if (renderable.Node.IconPosition == IconPosition.Bottom)
            {
                textOffset.X = 0.5f * (textIconRenderSize.X - textRenderSize.X);

                iconOffset.X = 0.5f * (textIconRenderSize.X - iconRenderSize.X);
                iconOffset.Y = textRenderSize.Y + IconMargin;
            }

            if (MustRenderNotesButton(renderable))
            {
                ArrangeNotesButton(renderable);
            }

            if (MustRenderExpandButton(renderable))
            {
                ArrangeExpandButton(renderable);
            }

            if (MustRenderCheckBox(renderable))
            {
                var checkBoxOffset = new Vector2(
                    textIconPadding.X + (0.5f * CheckBoxSize),
                    textIconPadding.Y + textOffset.Y + (0.5f * textRenderSize.Y));

                checkBox.Arrange(renderable.RenderPosition + checkBoxOffset, CheckBoxSize);

                textOffset.X += CheckBoxSize + CheckBoxMargin;
                iconOffset.X += CheckBoxSize + CheckBoxMargin;
            }

            iconRenderPosition = renderable.RenderPosition + textIconPadding + iconOffset;

            var textRenderPosition = renderable.RenderPosition + textIconPadding + textOffset;

            textRenderer.Arrange(textRenderPosition);
        }
Пример #21
0
        public override void Render(Win2DRenderable renderable, CanvasDrawingSession session, Win2DColor color, bool renderSelection)
        {
            var brush = renderable.Resources.Brush(Colors.Black, 0.5f);

            session.FillRectangle(renderable.RenderBounds.ToRect(), brush);
        }