Exemplo n.º 1
0
        public VgVisualDoc CreateVgVisualDoc(VgDocument svgdoc, VgVisualDocHost docHost)
        {
            //
            //reset some value
            _containerWidth  = 500;
            _containerHeight = 500;
            _emHeight        = 17;
            _waitingList.Clear();

            //
            _svgdoc       = svgdoc;
            _activeSheet1 = svgdoc.CssActiveSheet;

            _vgVisualDoc = new VgVisualDoc(docHost);

            _defsList            = _vgVisualDoc._defsList;
            _styleList           = _vgVisualDoc._styleList;
            _registeredElemsById = _vgVisualDoc._registeredElemsById;

            //---------------------------

            //create visual tree for svg nodes
            SvgElement      rootElem         = svgdoc.Root;
            VgVisualElement vgVisualRootElem = new VgVisualElement(WellknownSvgElementName.RootSvg, null, _vgVisualDoc);

            _vgVisualDoc.VgRootElem = vgVisualRootElem;//**

            int childCount = rootElem.ChildCount;

            for (int i = 0; i < childCount; ++i)
            {
                CreateSvgVisualElement(vgVisualRootElem, rootElem.GetChild(i));
            }

            //resolve
            int j = _waitingList.Count;

            BuildDefinitionNodes();
            for (int i = 0; i < j; ++i)
            {
                //resolve
                VgUseVisualElement useNodeVisElem = (VgUseVisualElement)_waitingList[i];
                if (useNodeVisElem.HRefSvgRenderElement == null)
                {
                    //resolve
                    SvgUseSpec useSpec = (SvgUseSpec)useNodeVisElem._visualSpec;
                    if (_registeredElemsById.TryGetValue(useSpec.Href.Value, out VgVisualElement result))
                    {
                        useNodeVisElem.HRefSvgRenderElement = result;
                    }
                    else
                    {
                    }
                }
            }
            return(_vgVisualDoc);
        }
Exemplo n.º 2
0
        VgVisualElement CreateUseElement(VgVisualElement parentNode, SvgUseSpec spec)
        {
            VgUseVisualElement vgVisElem = new VgUseVisualElement(spec, _vgVisualDoc);

            AssignAttributes(spec);
            if (spec.Href != null)
            {
                //add to waiting list
                _waitingList.Add(vgVisElem);
            }

            //text x,y
            parentNode.AddChildElement(vgVisElem);
            return(vgVisElem);
        }