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); } }
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); }
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); } }
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); }
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); } }
static float ConvertToPx(LayoutFarm.Css.CssLength length, ref ReEvaluateArgs args) { return(LayoutFarm.WebDom.Parser.CssValueParser.ConvertToPx(length, args.containerW, args)); }
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); }