Ejemplo n.º 1
0
        public ElementData Style(string name, string value)
        {
            if (name == null)
            {
                return(this);
            }

            name  = name.Trim();
            value = value.Trim();

            // Trim a trailing semicolon, it'll be inserted later
            if (value.EndsWith(";"))
            {
                value = value.Substring(0, value.Length - 1);
            }

            if (value == null && Styles.ContainsKey(name))
            {
                return(new ElementData(this, styles: Styles.Remove(name)));
            }
            if (value != null)
            {
                return(new ElementData(this, styles: Styles.SetItem(name, value)));
            }
            return(this);
        }
Ejemplo n.º 2
0
 public virtual void SetStyle(string name, string value)
 {
     if (Styles.ContainsKey(name))
     {
         Styles[name] = value;
     }
     else
     {
         Styles.Add(name, value);
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Appends a data set to an existing data set.
        /// </summary>
        /// <param name="data">Data set to append</param>
        public void Append(SpatialDataSet data)
        {
            if (data != null)
            {
                BoundingBox = data.BoundingBox.Join(BoundingBox);

                Geometries.AddRange(data.Geometries);

                if (data.Styles != null && data.Styles.Count > 0)
                {
                    if (Styles == null)
                    {
                        Styles = data.Styles;
                    }
                    else
                    {
                        foreach (var key in data.Styles.Keys)
                        {
                            if (!Styles.ContainsKey(key))
                            {
                                Styles.Add(key, data.Styles[key]);
                            }
                        }
                    }
                }

                if (!Metadata.HasMetadata())
                {
                    Metadata = data.Metadata;
                }

                if (!string.IsNullOrEmpty(data.Error))
                {
                    if (string.IsNullOrEmpty(Error))
                    {
                        Error = data.Error;
                    }
                    else
                    {
                        Error += "\r\n" + data.Error;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Goes through all the styles and removes duplicates.
        /// </summary>
        public void CleanUpStyles()
        {
            if (Styles != null && Geometries != null)
            {
                //key = old style key, value = new style key
                var styleMap = new Dictionary <string, string>();

                //Find duplicate styles
                foreach (var s in Styles)
                {
                    foreach (var s2 in Styles)
                    {
                        //Ensure different key and that key isn't already marked to be removed.
                        if (string.Compare(s.Key, s2.Key) != 0 && !styleMap.ContainsKey(s.Key))
                        {
                            if (s.Value.Equals(s2.Value))
                            {
                                styleMap.Add(s2.Key, s.Key);
                            }
                        }
                    }
                }

                //Update style keys on Geometries
                foreach (var g in Geometries)
                {
                    if (styleMap.ContainsKey(g.StyleKey))
                    {
                        g.StyleKey = styleMap[g.StyleKey];
                    }
                }

                //Remove old styles
                foreach (var s in styleMap)
                {
                    if (Styles.ContainsKey(s.Key))
                    {
                        Styles.Remove(s.Key);
                    }
                }
            }
        }
Ejemplo n.º 5
0
 bool IDictionary <string, string> .ContainsKey(string key)
 {
     return(HasStyleAttribute ?
            Styles.ContainsKey(HtmlData.Tokenize(key)) :
            false);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Returns true if the named style is defined
 /// </summary>
 /// <param name="styleName"></param>
 /// <returns></returns>
 public bool HasStyle(string styleName)
 {
     return(HasStyleAttribute ?
            Styles.ContainsKey(HtmlData.Tokenize(styleName)) :
            false);
 }
Ejemplo n.º 7
0
        private void dataAddedWorker_DoWork(object sender, DoWorkEventArgs args)
        {
            var worker = sender as BackgroundWorker;

            //going to modify the list so can't use a foreach.
            while (true)
            {
                if (layerDataToProcess.Count == 0)
                {
                    break;
                }

                VectorLayerData vectorLayerData = layerDataToProcess[0];
                if (worker != null && worker.CancellationPending)
                {
                    args.Cancel = true;
                    break;
                }

                StyleSpecification style   = Styles[cDefaultStyleID];
                string             styleID = (!string.IsNullOrEmpty(vectorLayerData.Style))
                                     ? vectorLayerData.Style
                                     : LayerDefinition.LayerStyleName;
                if (Styles.ContainsKey(styleID))
                {
                    style = Styles[styleID];
                }
                var wkbReader = new WKBReader(new GeometryFactory(new PrecisionModel(), 4326));
                try
                {
                    IGeometry       geo  = wkbReader.Read(vectorLayerData.Geo);
                    VectorLayerData data = vectorLayerData;
                    Dispatcher.BeginInvoke(delegate
                    {
                        var infogeo = new InfoGeometry(geo, style, MapInstance, this)
                        {
                            Label           = data.Label,
                            LabelVisibility =
                                (LayerDefinition.LabelOn)
                                    ? Visibility.Visible
                                    : Visibility.Collapsed,
                            ItemID          = data.ID,
                            EnableBalloon   = EnableBalloon,
                            EnableSelection = EnableSelection,
                            TimeStamp       = data.TimeStamp,
                        };
                        infogeo.Balloon += (o, e) =>
                        {
                            if (
                                ((InfoGeometry)o).BalloonData.Count ==
                                0)
                            {
                                Commands.LoadBalloonDataCommand.Execute(e, o);
                            }
                        };
                        infogeo.Selected += (o, e) => Commands.ItemSelectedCommand.Execute(o);
                        if (LayerDefinition.PermissionToEdit)
                        {
                            infogeo.Selected += (o, e) => Commands.EditVectorCommand.Execute(o);
                        }
                        mapLayerGeometries.Add(infogeo);
                    });
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }
                layerDataToProcess.Remove(vectorLayerData);
            }
        }
Ejemplo n.º 8
0
 bool IDictionary <string, string> .ContainsKey(string key)
 {
     return(Styles.ContainsKey(HtmlData.Tokenize(key)));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Returns true if the named style is defined
 /// </summary>
 /// <param name="styleName"></param>
 /// <returns></returns>
 public bool HasStyle(string styleName)
 {
     return(Styles.ContainsKey(HtmlData.Tokenize(styleName)));
 }
Ejemplo n.º 10
0
        private void process()
        {
            string startUbb = string.Empty, endUbb = string.Empty;

            if (Styles.ContainsKey("color"))
            {
                startUbb += "[color=" + Styles["color"] + "]";
                startUbb  = Util.ConvertRGB(startUbb);
                endUbb    = "[/color]" + endUbb;
            }

            if (Styles.ContainsKey("font-size"))
            {
                string size = Styles["font-size"].ToString();
                startUbb += "[size=" + (mapSize.ContainsKey(size) ? mapSize[size].ToString() : size) + "]";
                endUbb    = "[/size]" + endUbb;
            }

            if (Styles.ContainsKey("font-family"))
            {
                startUbb += "[font=" + Styles["font-family"] + "]";
                endUbb    = "[/font]" + endUbb;
            }

            if (Styles.ContainsKey("font-style"))
            {
                string fontStyle = Styles["font-style"] + "";
                if (fontStyle == "italic")
                {
                    startUbb += "[i]";
                    endUbb    = "[/i]" + endUbb;
                }
            }

            if (Styles.ContainsKey("font-weight"))
            {
                string fontWeight = Styles["font-weight"] + "";
                if (fontWeight != "normal")
                {
                    startUbb += "[b]";
                    endUbb    = "[/b]" + endUbb;
                }
            }

            if (Styles.ContainsKey("text-decoration"))
            {
                string dec = Styles["text-decoration"] + "";
                if (dec == "underline")
                {
                    startUbb += "[u]";
                    endUbb    = "[/u]" + endUbb;
                }
                else if (dec == "line-through")
                {
                    startUbb += "[s]";
                    endUbb    = "[/s]" + endUbb;
                }
            }

            if (Styles.ContainsKey("text-align"))
            {
                string align = Styles["text-align"].ToString();
                if (align == "left" || align == "right" || align == "center")
                {
                    startUbb += "[align=" + align + "]";
                    endUbb    = "[/align]" + endUbb;
                }
            }



            if (Styles.ContainsKey("background-color"))
            {
                startUbb += "[bgcolor=" + Styles["background-color"] + "]";
                startUbb  = Util.ConvertRGB(startUbb);
                endUbb    = "[/bgcolor]" + endUbb;
            }
            _startUbb = startUbb;
            _endUbb   = endUbb;
        }
Ejemplo n.º 11
0
        public HtmlTagBase(int index, string tagHtml, int begin)
        {
            Index = index;
            Html  = tagHtml;
            bool hasAttribute = false;

            this.Begin = begin;
            this.End   = this.Begin + Html.Length;
            if (StringUtil.EndsWith(tagHtml, "/>"))
            {
                IsSingleTag = true;
            }

            if (StringUtil.StartsWith(tagHtml, "</"))
            {
                IsEndTag = true;
            }

            tagHtml = tagHtml.Remove(0, IsEndTag ? 2 : 1);
            tagHtml = tagHtml.Remove(tagHtml.Length - (IsSingleTag ? 2 : 1), IsSingleTag ? 2 : 1);


            if (tagHtml.Contains(" "))
            {
                this.TagName = tagHtml.Substring(0, tagHtml.IndexOf(' '));
                hasAttribute = true;
            }
            else
            {
                this.TagName = tagHtml;
            }
            this.TagName = this.TagName.ToLower();
            if (hasAttribute)
            {
                tagHtml = tagHtml.Remove(0, TagName.Length);
                tagHtml = tagHtml.Trim();
                string[] attributes = regAttrSplite.Split(tagHtml);
                foreach (string s in attributes)
                {
                    if (s.Contains("=") && s.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries).Length > 1)
                    {
                        string[] temp   = new string[] { string.Empty, string.Empty };//
                        int      sIndex = s.IndexOf('=');
                        temp[0] = s.Substring(0, sIndex);
                        if (s.Length > sIndex)
                        {
                            temp[1] = s.Substring(sIndex + 1);
                        }
                        //s.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
                        string key = temp[0].Trim().ToLower();
                        if (!Attributes.ContainsKey(key))
                        {
                            Attributes.Add(key, temp[1].Trim('\"', ' '));
                        }
                    }
                }

                if (Attributes.ContainsKey("style"))
                {
                    string[] styleSet = (Attributes["style"] + "").Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                    foreach (string s in styleSet)
                    {
                        string[] styleItem = s.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                        if (styleItem.Length == 2)
                        {
                            string key = styleItem[0].Trim().ToLower();
                            if (!Styles.ContainsKey(key))
                            {
                                Styles.Add(key, styleItem[1].Trim());
                            }
                        }
                    }
                }
            }

            //if (IsSingleTag && Attributes.Count == 0)
            //{
            //    IsEndTag = true;
            //}

            if (!IsSingleTag)
            {
                IsSingleTag =
                    TagName == "img" ||
                    TagName == "br" ||
                    TagName == "hr" ||
                    TagName == "input" ||
                    TagName == "param" ||
                    TagName == "meta" ||
                    TagName == "link";
            }
        }
Ejemplo n.º 12
0
 bool IDictionary <string, string> .ContainsKey(string key)
 {
     return(Styles.ContainsKey(DomData.TokenID(key, true)));
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Returns true if the named style is defined
 /// </summary>
 /// <param name="styleName"></param>
 /// <returns></returns>
 public bool HasStyle(string styleName)
 {
     return(Styles.ContainsKey(DomData.TokenID(styleName, true)));
 }
Ejemplo n.º 14
0
        public void Load(Stream stream)
        {
            string expression = ReadStream(stream);

            String[] expressions = expression.Split('}');
            foreach (String s1 in expressions)
            {
                String expr = s1.Trim();
                if (!String.IsNullOrEmpty(expr))
                {
                    String[] arr = expr.Split('{');
                    if (arr.Length != 2)
                    {
                        throw new Exception(String.Format("Css error: ", expr));
                    }
                    String selector = arr[0].Trim().ToLower();

                    String[] sel = selector.Split(' ');
                    selector = "";
                    foreach (String selPart in sel)
                    {
                        String ss = selPart.Trim();
                        if (!String.IsNullOrEmpty(ss))
                        {
                            if (tagNames.ContainsKey(ss))
                            {
                                ss = tagNames[ss].Name.ToLower();
                            }
                            if (!String.IsNullOrEmpty(selector))
                            {
                                selector += " ";
                            }
                            selector += ss;
                        }
                    }

                    foreach (String s2 in arr[1].Split(';'))
                    {
                        String style = s2.Trim();
                        if (!String.IsNullOrEmpty(style))
                        {
                            String[] arr2 = style.Split(':');
                            if (arr2.Length != 2)
                            {
                                throw new Exception(String.Format("Css error: ", style));
                            }
                            String attr  = arr2[0].Trim();
                            String value = arr2[1].Trim();

                            if (!styleNames.ContainsKey(attr))
                            {
                                throw new Exception(String.Format("Style {0} is not found", attr));
                            }
                            Type attrType = styleNames[attr];

                            Style s = (Style)attrType.GetConstructor(new Type[] { }).Invoke(new object[] { });
                            s = s.FromString(value);

                            if (!Styles.ContainsKey(selector))
                            {
                                Styles.Add(selector, new List <Style>());
                            }
                            Styles[selector].Add(s);
                        }
                    }
                }
            }
        }