ruleset and its subgroups
Example #1
0
        public void Merge(CssRuleSetGroup another)
        {
            //merge
            //------------
            if (another._assignments != null)
            {
                if (this._assignments == null)
                {
                    this._assignments = new CssPropertyAssignmentCollection(this);
                }
                //merge decl
                this._assignments.MergeProperties(another._assignments);
            }

            //find subgroup
            if (another._subGroups != null)
            {
                if (this._subGroups == null)
                {
                    this._subGroups = new List <CssRuleSetGroup>();
                }
                foreach (CssRuleSetGroup ruleSetGroup in another._subGroups)
                {
                    //merge to this group
                    CssRuleSetGroup exiting = GetOrCreateSubgroup(ruleSetGroup._originalSelector);
                    exiting.Merge(ruleSetGroup);
                }
            }
        }
Example #2
0
 private CssRuleSetGroup(CssRuleSetGroup parent, string name, WebDom.CssSimpleElementSelector simpleSelector)
 {
     //if (dbugId == 170)
     //{
     //}
     this.Name              = name;
     this._parent           = parent;
     this._originalSelector = simpleSelector;
 }
Example #3
0
 static CssRuleSetGroup GetGroupOrCreateIfNotExists(Dictionary<string, CssRuleSetGroup> dic,
     WebDom.CssSimpleElementSelector simpleSelector)
 {
     CssRuleSetGroup ruleSetGroup;
     if (!dic.TryGetValue(simpleSelector.Name, out ruleSetGroup))
     {
         ruleSetGroup = new CssRuleSetGroup(simpleSelector.Name);
         dic.Add(simpleSelector.Name, ruleSetGroup);
     }
     //-------------
     if (simpleSelector.Parent != null)
     {
         //get or create subgroup
         return ruleSetGroup.GetOrCreateSubgroup(simpleSelector);
     }
     //-------------  
     return ruleSetGroup;
 }
Example #4
0
        static CssRuleSetGroup GetGroupOrCreateIfNotExists(Dictionary <string, CssRuleSetGroup> dic,
                                                           WebDom.CssSimpleElementSelector simpleSelector)
        {
            CssRuleSetGroup ruleSetGroup;

            if (!dic.TryGetValue(simpleSelector.Name, out ruleSetGroup))
            {
                ruleSetGroup = new CssRuleSetGroup(simpleSelector.Name);
                dic.Add(simpleSelector.Name, ruleSetGroup);
            }
            //-------------
            if (simpleSelector.Parent != null)
            {
                //get or create subgroup
                return(ruleSetGroup.GetOrCreateSubgroup(simpleSelector));
            }
            //-------------
            return(ruleSetGroup);
        }
Example #5
0
        public CssRuleSetGroup Clone()
        {
            CssRuleSetGroup newGroup = new CssRuleSetGroup(this.Name);

            newGroup._originalSelector = this._originalSelector;
            if (this._assignments != null)
            {
                newGroup._assignments = this._assignments.Clone(newGroup);
            }
            if (this._subGroups != null)
            {
                foreach (var subgroup in this._subGroups)
                {
                    var subclone = subgroup.Clone();
                    subclone._parent = newGroup;
                }
            }
            return(newGroup);
        }
Example #6
0
        public CssRuleSetGroup GetOrCreateSubgroup(WebDom.CssSimpleElementSelector simpleSelector)
        {
            if (_subGroups == null)
            {
                _subGroups = new List <CssRuleSetGroup>();
            }
            int j = _subGroups.Count;

            for (int i = 0; i < j; ++i)
            {
                //find sub group for specific selector
                WebDom.CssSimpleElementSelector selector = _subGroups[i]._originalSelector;
                if (WebDom.CssSimpleElementSelector.IsCompatible(selector, simpleSelector))
                {
                    //found
                    return(_subGroups[i]);
                }
            }
            //if not found then create new one
            CssRuleSetGroup newSubgroup = new CssRuleSetGroup(this, this.Name, simpleSelector);

            this._subGroups.Add(newSubgroup);
            return(newSubgroup);
        }
Example #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);
        }
Example #8
0
        public void Merge(CssRuleSetGroup another)
        {
            //merge 
            //------------  
            if (another._assignments != null)
            {
                if (this._assignments == null)
                {
                    this._assignments = new CssPropertyAssignmentCollection(this);
                }
                //merge decl 
                this._assignments.MergeProperties(another._assignments);
            }

            //find subgroup
            if (another._subGroups != null)
            {
                if (this._subGroups == null)
                {
                    this._subGroups = new List<CssRuleSetGroup>();
                }
                foreach (CssRuleSetGroup ruleSetGroup in another._subGroups)
                {
                    //merge to this group
                    CssRuleSetGroup exiting = GetOrCreateSubgroup(ruleSetGroup._originalSelector);
                    exiting.Merge(ruleSetGroup);
                }
            }
        }
Example #9
0
        public CssRuleSetGroup Clone()
        {

            CssRuleSetGroup newGroup = new CssRuleSetGroup(this.Name);
            newGroup._originalSelector = this._originalSelector;
            if (this._assignments != null)
            {
                newGroup._assignments = this._assignments.Clone(newGroup);
            }
            if (this._subGroups != null)
            {
                foreach (var subgroup in this._subGroups)
                {
                    var subclone = subgroup.Clone();
                    subclone._parent = newGroup;
                }
            }
            return newGroup;
        }
Example #10
0
 public CssRuleSetGroup GetOrCreateSubgroup(WebDom.CssSimpleElementSelector simpleSelector)
 {
     if (_subGroups == null)
     {
         _subGroups = new List<CssRuleSetGroup>();
     }
     int j = _subGroups.Count;
     for (int i = 0; i < j; ++i)
     {
         //find sub group for specific selector 
         WebDom.CssSimpleElementSelector selector = _subGroups[i]._originalSelector;
         if (WebDom.CssSimpleElementSelector.IsCompatible(selector, simpleSelector))
         {
             //found
             return _subGroups[i];
         }
     }
     //if not found then create new one
     CssRuleSetGroup newSubgroup = new CssRuleSetGroup(this, this.Name, simpleSelector);
     this._subGroups.Add(newSubgroup);
     return newSubgroup;
 }
Example #11
0
        private CssRuleSetGroup(CssRuleSetGroup parent, string name, WebDom.CssSimpleElementSelector simpleSelector)
        {
            this.Name = name;
            this._parent = parent;
            this._originalSelector = simpleSelector;

        }