Ejemplo n.º 1
0
        VgVisualElement CreateImage(VgVisualElement parentNode, SvgImageSpec imgspec)
        {
            VgVisualElement vgImg = new VgVisualElement(WellknownSvgElementName.Image, imgspec, _vgVisualDoc);

            using (VectorToolBox.Borrow(out SimpleRect rectTool))
                using (VxsTemp.Borrow(out var v1))
                {
                    ReEvaluateArgs a = new ReEvaluateArgs(_containerWidth, _containerHeight, _emHeight); //temp fix
                    vgImg._imgX = ConvertToPx(imgspec.X, ref a);
                    vgImg._imgY = ConvertToPx(imgspec.Y, ref a);
                    vgImg._imgW = ConvertToPx(imgspec.Width, ref a);
                    vgImg._imgH = ConvertToPx(imgspec.Height, ref a);
                    //
                    rectTool.SetRect(
                        vgImg._imgX,
                        vgImg._imgY + vgImg._imgH,
                        vgImg._imgX + vgImg._imgW,
                        vgImg._imgY);
                    vgImg.VxsPath = rectTool.MakeVxs(v1).CreateTrim();
                    //
                    AssignAttributes(imgspec);
                    //
                    return(vgImg);
                }
        }
Ejemplo n.º 2
0
        public override void CustomRecomputedValue(CssBox containingBlock)
        {
            var svgElement = this.SvgSpec;
            //recompute value if need
            var            cnode      = svgElement.GetFirstNode();
            ReEvaluateArgs reEvalArgs = new ReEvaluateArgs(
                containingBlock.VisualWidth,
                100,//temp
                containingBlock.GetEmHeight());

            while (cnode != null)
            {
                cnode.Value.ReEvaluateComputeValue(ref reEvalArgs);
                cnode = cnode.Next;
            }

            this.SetVisualSize(500, 500);
        }
Ejemplo n.º 3
0
        VgVisualElement CreateCircle(VgVisualElement parentNode, SvgCircleSpec cirSpec)
        {
            VgVisualElement cir = new VgVisualElement(WellknownSvgElementName.Circle, cirSpec, _vgVisualDoc);

            using (VectorToolBox.Borrow(out Ellipse ellipse))
                using (VxsTemp.Borrow(out var v1))
                {
                    ReEvaluateArgs a = new ReEvaluateArgs(_containerWidth, _containerHeight, _emHeight); //temp fix
                    double         x = ConvertToPx(cirSpec.X, ref a);
                    double         y = ConvertToPx(cirSpec.Y, ref a);
                    double         r = ConvertToPx(cirSpec.Radius, ref a);

                    ellipse.Set(x, y, r, r);////TODO: review here => temp fix for ellipse step
                    cir.VxsPath = ellipse.MakeVxs(v1).CreateTrim();
                    AssignAttributes(cirSpec);
                    return(cir);
                }
        }
Ejemplo n.º 4
0
        VgVisualElement CreateRect(VgVisualElement parentNode, SvgRectSpec rectSpec)
        {
            VgVisualElement rect = new VgVisualElement(WellknownSvgElementName.Rect, rectSpec, _vgVisualDoc);


            if (!rectSpec.CornerRadiusX.IsEmpty || !rectSpec.CornerRadiusY.IsEmpty)
            {
                using (VectorToolBox.Borrow(out RoundedRect roundRect))
                    using (VxsTemp.Borrow(out var v1))
                    {
                        ReEvaluateArgs a = new ReEvaluateArgs(_containerWidth, _containerHeight, _emHeight); //temp fix
                        roundRect.SetRect(
                            ConvertToPx(rectSpec.X, ref a),
                            ConvertToPx(rectSpec.Y, ref a) + ConvertToPx(rectSpec.Height, ref a),
                            ConvertToPx(rectSpec.X, ref a) + ConvertToPx(rectSpec.Width, ref a),
                            ConvertToPx(rectSpec.Y, ref a));

                        roundRect.SetRadius(
                            ConvertToPx(rectSpec.CornerRadiusX, ref a),
                            ConvertToPx(rectSpec.CornerRadiusY, ref a));

                        rect.VxsPath = roundRect.MakeVxs(v1).CreateTrim();
                    }
            }
            else
            {
                using (VectorToolBox.Borrow(out SimpleRect rectTool))
                    using (VxsTemp.Borrow(out var v1))
                    {
                        ReEvaluateArgs a = new ReEvaluateArgs(_containerWidth, _containerHeight, _emHeight); //temp fix
                        rectTool.SetRect(
                            ConvertToPx(rectSpec.X, ref a),
                            ConvertToPx(rectSpec.Y, ref a) + ConvertToPx(rectSpec.Height, ref a),
                            ConvertToPx(rectSpec.X, ref a) + ConvertToPx(rectSpec.Width, ref a),
                            ConvertToPx(rectSpec.Y, ref a));
                        //

                        rect.VxsPath = rectTool.MakeVxs(v1).CreateTrim();
                    }
            }

            AssignAttributes(rectSpec);
            return(rect);
        }
Ejemplo n.º 5
0
        VgVisualElement CreateEllipse(VgVisualElement parentNode, SvgEllipseSpec ellipseSpec)
        {
            VgVisualElement vgEllipse = new VgVisualElement(WellknownSvgElementName.Ellipse, ellipseSpec, _vgVisualDoc);

            using (Tools.BorrowEllipse(out var ellipse))
                using (Tools.BorrowVxs(out var v1))
                {
                    ReEvaluateArgs a  = new ReEvaluateArgs(_containerWidth, _containerHeight, _emHeight); //temp fix
                    double         x  = ConvertToPx(ellipseSpec.X, ref a);
                    double         y  = ConvertToPx(ellipseSpec.Y, ref a);
                    double         rx = ConvertToPx(ellipseSpec.RadiusX, ref a);
                    double         ry = ConvertToPx(ellipseSpec.RadiusY, ref a);

                    ellipse.Set(x, y, rx, ry);////TODO: review here => temp fix for ellipse step

                    vgEllipse.VxsPath = ellipse.MakeVxs(v1).CreateTrim();
                    AssignAttributes(ellipseSpec);
                    return(vgEllipse);
                }
        }
Ejemplo n.º 6
0
 static float ConvertToPx(LayoutFarm.Css.CssLength length, ref ReEvaluateArgs args)
 {
     return(LayoutFarm.WebDom.Parser.CssValueParser.ConvertToPx(length, args.containerW, args));
 }
Ejemplo n.º 7
0
        VgVisualElement CreateTextElem(VgVisualElement parentNode, SvgElement elem, SvgTextSpec textspec)
        {
            //text render element
            VgVisualElement vgVisElem = new VgVisualElement(WellknownSvgElementName.Text, textspec, _vgVisualDoc);

            vgVisElem.DomElem = elem;
            //some att

            if (textspec.Class != null && _activeSheet1 != null)
            {
                //resolve style definition
                LayoutFarm.WebDom.CssRuleSetGroup ruleSetGroup = _activeSheet1.GetRuleSetForClassName(textspec.Class);
                if (ruleSetGroup != null)
                {
                    //assign
                    foreach (LayoutFarm.WebDom.CssPropertyDeclaration propDecl in ruleSetGroup.GetPropertyDeclIter())
                    {
                        switch (propDecl.WellknownPropertyName)
                        {
                        case LayoutFarm.WebDom.WellknownCssPropertyName.Font:
                            //set font detail
                            break;

                        case LayoutFarm.WebDom.WellknownCssPropertyName.FontStyle:
                            //convert font style
                            break;

                        case LayoutFarm.WebDom.WellknownCssPropertyName.FontSize:
                            textspec.FontSize = propDecl.GetPropertyValue(0).AsLength();
                            break;

                        case LayoutFarm.WebDom.WellknownCssPropertyName.FontFamily:
                            textspec.FontFace = propDecl.GetPropertyValue(0).ToString();
                            break;

                        case LayoutFarm.WebDom.WellknownCssPropertyName.Fill:
                            textspec.FillColor = LayoutFarm.WebDom.Parser.CssValueParser.ParseCssColor(propDecl.GetPropertyValue(0).ToString());
                            break;

                        case LayoutFarm.WebDom.WellknownCssPropertyName.Unknown:
                        {
                            switch (propDecl.UnknownRawName)
                            {
                            case "fill":
                                //svg
                                break;
                            }
                        }
                        break;
                        }
                    }
                }
            }


            ReEvaluateArgs a = new ReEvaluateArgs(_containerWidth, _containerHeight, _emHeight); //temp fix

            textspec.ActualX = ConvertToPx(textspec.X, ref a);
            textspec.ActualY = ConvertToPx(textspec.Y, ref a);


            AssignAttributes(textspec);

            //text x,y


            parentNode.AddChildElement(vgVisElem);
            return(vgVisElem);
        }