static public int get_ignoreWhiteSpace(IntPtr l)
 {
     try {
         FairyGUI.Utils.HtmlParseOptions self = (FairyGUI.Utils.HtmlParseOptions)checkSelf(l);
         pushValue(l, true);
         pushValue(l, self.ignoreWhiteSpace);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int get_linkBgColor(IntPtr l)
 {
     try {
         FairyGUI.Utils.HtmlParseOptions self = (FairyGUI.Utils.HtmlParseOptions)checkSelf(l);
         pushValue(l, true);
         pushValue(l, self.linkBgColor);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int constructor(IntPtr l)
 {
     try {
         FairyGUI.Utils.HtmlParseOptions o;
         o = new FairyGUI.Utils.HtmlParseOptions();
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int set_linkBgColor(IntPtr l)
 {
     try {
         FairyGUI.Utils.HtmlParseOptions self = (FairyGUI.Utils.HtmlParseOptions)checkSelf(l);
         UnityEngine.Color v;
         checkType(l, 2, out v);
         self.linkBgColor = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int set_linkUnderline(IntPtr l)
 {
     try {
         FairyGUI.Utils.HtmlParseOptions self = (FairyGUI.Utils.HtmlParseOptions)checkSelf(l);
         System.Boolean v;
         checkType(l, 2, out v);
         self.linkUnderline = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
Example #6
0
        public RichTextField()
        {
            gameObject.name = "RichTextField";
            this.opaque = true;

            htmlPageContext = HtmlPageContext.inst;
            htmlParseOptions = new HtmlParseOptions();

            this.textField = new TextField();
            textField.EnableRichSupport(this);
            AddChild(textField);

            _refreshObjectsDelegate = InternalRefreshObjects;
        }
Example #7
0
        public RichTextField()
        {
            CreateGameObject("RichTextField");

            htmlPageContext = HtmlPageContext.inst;
            htmlParseOptions = new HtmlParseOptions();

            _textField = new TextField();
            _textField._optimizeNotTouchable = false;
            _textField._richTextField = this;
            AddChild(_textField);

            graphics = _textField.graphics;

            onClick.AddCapture(__click);
        }
        virtual public void Parse(string aSource, TextFormat defaultFormat, List <HtmlElement> elements, HtmlParseOptions parseOptions)
        {
            if (parseOptions == null)
            {
                parseOptions = _defaultOptions;
            }

            _elements           = elements;
            _textFormatStackTop = 0;
            _ignoreWhiteSpace   = parseOptions.ignoreWhiteSpace;
            _format.CopyFrom(defaultFormat);
            _format.colorChanged = false;
            string text;

            XMLIterator.Begin(aSource, true);
            while (XMLIterator.NextTag())
            {
                if (_skipText == 0)
                {
                    text = XMLIterator.GetText(_ignoreWhiteSpace);
                    if (text.Length > 0)
                    {
                        AppendText(text);
                    }
                }

                switch (XMLIterator.tagName)
                {
                case "b":
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();
                        _format.bold = true;
                    }
                    else
                    {
                        PopTextFormat();
                    }
                    break;

                case "i":
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();
                        _format.italic = true;
                    }
                    else
                    {
                        PopTextFormat();
                    }
                    break;

                case "u":
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();
                        _format.underline = true;
                    }
                    else
                    {
                        PopTextFormat();
                    }
                    break;

                case "sub":
                {
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();
                        _format.size         = Mathf.CeilToInt(_format.size * 0.58f);
                        _format.specialStyle = TextFormat.SpecialStyle.Subscript;
                    }
                    else
                    {
                        PopTextFormat();
                    }
                }
                break;

                case "sup":
                {
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();
                        _format.size         = Mathf.CeilToInt(_format.size * 0.58f);
                        _format.specialStyle = TextFormat.SpecialStyle.Superscript;
                    }
                    else
                    {
                        PopTextFormat();
                    }
                }
                break;

                case "font":
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();

                        _format.size = XMLIterator.GetAttributeInt("size", _format.size);
                        string color = XMLIterator.GetAttribute("color");
                        if (color != null)
                        {
                            string[] parts = color.Split(',');
                            if (parts.Length == 1)
                            {
                                _format.color         = ToolSet.ConvertFromHtmlColor(color);
                                _format.gradientColor = null;
                                _format.colorChanged  = true;
                            }
                            else
                            {
                                if (_format.gradientColor == null)
                                {
                                    _format.gradientColor = new Color32[4];
                                }
                                _format.gradientColor[0] = ToolSet.ConvertFromHtmlColor(parts[0]);
                                _format.gradientColor[1] = ToolSet.ConvertFromHtmlColor(parts[1]);
                                if (parts.Length > 2)
                                {
                                    _format.gradientColor[2] = ToolSet.ConvertFromHtmlColor(parts[2]);
                                    if (parts.Length > 3)
                                    {
                                        _format.gradientColor[3] = ToolSet.ConvertFromHtmlColor(parts[3]);
                                    }
                                    else
                                    {
                                        _format.gradientColor[3] = _format.gradientColor[2];
                                    }
                                }
                                else
                                {
                                    _format.gradientColor[2] = _format.gradientColor[0];
                                    _format.gradientColor[3] = _format.gradientColor[1];
                                }
                            }
                        }
                    }
                    else if (XMLIterator.tagType == XMLTagType.End)
                    {
                        PopTextFormat();
                    }
                    break;

                case "br":
                    AppendText("\n");
                    break;

                case "img":
                    if (XMLIterator.tagType == XMLTagType.Start || XMLIterator.tagType == XMLTagType.Void)
                    {
                        HtmlElement element = HtmlElement.GetElement(HtmlElementType.Image);
                        element.FetchAttributes();
                        element.name         = element.GetString("name");
                        element.format.align = _format.align;
                        _elements.Add(element);
                    }
                    break;

                case "a":
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();

                        _format.underline = _format.underline | parseOptions.linkUnderline;
                        if (!_format.colorChanged && parseOptions.linkColor.a != 0)
                        {
                            _format.color = parseOptions.linkColor;
                        }

                        HtmlElement element = HtmlElement.GetElement(HtmlElementType.Link);
                        element.FetchAttributes();
                        element.name         = element.GetString("name");
                        element.format.align = _format.align;
                        _elements.Add(element);
                    }
                    else if (XMLIterator.tagType == XMLTagType.End)
                    {
                        PopTextFormat();

                        HtmlElement element = HtmlElement.GetElement(HtmlElementType.LinkEnd);
                        _elements.Add(element);
                    }
                    break;

                case "input":
                {
                    HtmlElement element = HtmlElement.GetElement(HtmlElementType.Input);
                    element.FetchAttributes();
                    element.name = element.GetString("name");
                    element.format.CopyFrom(_format);
                    _elements.Add(element);
                }
                break;

                case "select":
                {
                    if (XMLIterator.tagType == XMLTagType.Start || XMLIterator.tagType == XMLTagType.Void)
                    {
                        HtmlElement element = HtmlElement.GetElement(HtmlElementType.Select);
                        element.FetchAttributes();
                        if (XMLIterator.tagType == XMLTagType.Start)
                        {
                            sHelperList1.Clear();
                            sHelperList2.Clear();
                            while (XMLIterator.NextTag())
                            {
                                if (XMLIterator.tagName == "select")
                                {
                                    break;
                                }

                                if (XMLIterator.tagName == "option")
                                {
                                    if (XMLIterator.tagType == XMLTagType.Start || XMLIterator.tagType == XMLTagType.Void)
                                    {
                                        sHelperList2.Add(XMLIterator.GetAttribute("value", string.Empty));
                                    }
                                    else
                                    {
                                        sHelperList1.Add(XMLIterator.GetText());
                                    }
                                }
                            }
                            element.Set("items", sHelperList1.ToArray());
                            element.Set("values", sHelperList2.ToArray());
                        }
                        element.name = element.GetString("name");
                        element.format.CopyFrom(_format);
                        _elements.Add(element);
                    }
                }
                break;

                case "p":
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        PushTextFormat();
                        string align = XMLIterator.GetAttribute("align");
                        _format.align = FieldTypes.ParseAlign(align);

                        if (!IsNewLine())
                        {
                            AppendText("\n");
                        }
                    }
                    else if (XMLIterator.tagType == XMLTagType.End)
                    {
                        if (!IsNewLine())
                        {
                            AppendText("\n");
                        }

                        PopTextFormat();
                    }
                    break;

                case "ui":
                case "div":
                case "li":
                    if (!IsNewLine())
                    {
                        AppendText("\n");
                    }
                    break;

                case "html":
                case "body":
                    //full html
                    _ignoreWhiteSpace = true;
                    break;

                case "head":
                case "style":
                case "script":
                case "form":
                    if (XMLIterator.tagType == XMLTagType.Start)
                    {
                        _skipText++;
                    }
                    else if (XMLIterator.tagType == XMLTagType.End)
                    {
                        _skipText--;
                    }
                    break;
                }
            }

            if (_skipText == 0)
            {
                text = XMLIterator.GetText(_ignoreWhiteSpace);
                if (text.Length > 0)
                {
                    AppendText(text);
                }
            }

            _elements = null;
        }
 public HtmlParser()
 {
     _textFormatStack = new List <TextFormat2>();
     _format          = new TextFormat2();
     _defaultOptions  = new HtmlParseOptions();
 }
        void Create(TextField textField)
        {
            CreateGameObject("RichTextField");
            this.opaque = true;

            onFocusIn = new EventListener(this, "onFocusIn");
            onFocusOut = new EventListener(this, "onFocusOut");
            onChanged = new EventListener(this, "onChanged");

            htmlPageContext = HtmlPageContext.inst;
            htmlParseOptions = new HtmlParseOptions();

            this.textField = textField;
            textField.richTextField = this;
            AddChild(textField);

            graphics = textField.graphics;
        }
        public virtual void Parse(string aSource, TextFormat defaultFormat, List<HtmlElement> elements, HtmlParseOptions parseOptions)
        {
            if (parseOptions == null)
                parseOptions = _defaultOptions;

            _elements = elements;
            _textFormatStackTop = 0;
            _ignoreWhiteSpace = parseOptions.ignoreWhiteSpace;
            _format.CopyFrom(defaultFormat);
            _format.colorChanged = false;
            string text;

            XMLIterator.Begin(aSource, true);
            while (XMLIterator.NextTag())
            {
                if (_skipText == 0)
                {
                    text = XMLIterator.GetText(_ignoreWhiteSpace);
                    if (text.Length > 0)
                        AppendText(text);
                }

                switch (XMLIterator.tagName)
                {
                    case "b":
                        if (XMLIterator.tagType == XMLTagType.Start)
                        {
                            PushTextFormat();
                            _format.bold = true;
                        }
                        else
                            PopTextFormat();
                        break;

                    case "i":
                        if (XMLIterator.tagType == XMLTagType.Start)
                        {
                            PushTextFormat();
                            _format.italic = true;
                        }
                        else
                            PopTextFormat();
                        break;

                    case "u":
                        if (XMLIterator.tagType == XMLTagType.Start)
                        {
                            PushTextFormat();
                            _format.underline = true;
                        }
                        else
                            PopTextFormat();
                        break;

                    case "sub":
                        break;

                    case "sup":
                        break;

                    case "font":
                        if (XMLIterator.tagType == XMLTagType.Start)
                        {
                            PushTextFormat();

                            _format.size = XMLIterator.GetAttributeInt("size", _format.size);
                            string color = XMLIterator.GetAttribute("color");
                            if (color != null)
                            {
                                string[] parts = color.Split(',');
                                if (parts.Length == 1)
                                {
                                    _format.color = ToolSet.ConvertFromHtmlColor(color);
                                    _format.gradientColor = null;
                                    _format.colorChanged = true;
                                }
                                else
                                {
                                    if (_format.gradientColor == null)
                                        _format.gradientColor = new Color32[4];
                                    _format.gradientColor[0] = ToolSet.ConvertFromHtmlColor(parts[0]);
                                    _format.gradientColor[1] = ToolSet.ConvertFromHtmlColor(parts[1]);
                                    if (parts.Length > 2)
                                    {
                                        _format.gradientColor[2] = ToolSet.ConvertFromHtmlColor(parts[2]);
                                        if (parts.Length > 3)
                                            _format.gradientColor[3] = ToolSet.ConvertFromHtmlColor(parts[3]);
                                        else
                                            _format.gradientColor[3] = _format.gradientColor[2];
                                    }
                                    else
                                    {
                                        _format.gradientColor[2] = _format.gradientColor[0];
                                        _format.gradientColor[3] = _format.gradientColor[1];
                                    }
                                }
                            }
                        }
                        else if (XMLIterator.tagType == XMLTagType.End)
                            PopTextFormat();
                        break;

                    case "br":
                        AppendText("\n");
                        break;

                    case "img":
                        if (XMLIterator.tagType == XMLTagType.Start || XMLIterator.tagType == XMLTagType.Void)
                        {
                            HtmlElement element = HtmlElement.GetElement(HtmlElementType.Image);
                            element.FetchAttributes();
                            element.name = element.GetString("name");
                            _elements.Add(element);
                        }
                        break;

                    case "a":
                        if (XMLIterator.tagType == XMLTagType.Start)
                        {
                            PushTextFormat();

                            _format.underline = _format.underline | parseOptions.linkUnderline;
                            if (!_format.colorChanged && parseOptions.linkColor.a != 0)
                                _format.color = parseOptions.linkColor;

                            HtmlElement element = HtmlElement.GetElement(HtmlElementType.Link);
                            element.FetchAttributes();
                            element.name = element.GetString("name");
                            _elements.Add(element);
                        }
                        else if (XMLIterator.tagType == XMLTagType.End)
                        {
                            PopTextFormat();

                            HtmlElement element = HtmlElement.GetElement(HtmlElementType.LinkEnd);
                            _elements.Add(element);
                        }
                        break;

                    case "input":
                        {
                            HtmlElement element = HtmlElement.GetElement(HtmlElementType.Input);
                            element.FetchAttributes();
                            element.name = element.GetString("name");
                            element.format.CopyFrom(_format);
                            _elements.Add(element);
                        }
                        break;

                    case "select":
                        {
                            if (XMLIterator.tagType == XMLTagType.Start || XMLIterator.tagType == XMLTagType.Void)
                            {
                                HtmlElement element = HtmlElement.GetElement(HtmlElementType.Select);
                                element.FetchAttributes();
                                if (XMLIterator.tagType == XMLTagType.Start)
                                {
                                    sHelperList1.Clear();
                                    sHelperList2.Clear();
                                    while (XMLIterator.NextTag())
                                    {
                                        if (XMLIterator.tagName == "select")
                                            break;

                                        if (XMLIterator.tagName == "option")
                                        {
                                            if (XMLIterator.tagType == XMLTagType.Start || XMLIterator.tagType == XMLTagType.Void)
                                                sHelperList2.Add(XMLIterator.GetAttribute("value", string.Empty));
                                            else
                                                sHelperList1.Add(XMLIterator.GetText());
                                        }
                                    }
                                    element.Set("items", sHelperList1.ToArray());
                                    element.Set("values", sHelperList2.ToArray());
                                }
                                element.name = element.GetString("name");
                                element.format.CopyFrom(_format);
                                _elements.Add(element);
                            }
                        }
                        break;

                    case "p":
                    case "ui":
                    case "div":
                    case "li":
                        if (!IsNewLine())
                            AppendText("\n");
                        break;

                    case "html":
                    case "body":
                        //full html
                        _ignoreWhiteSpace = true;
                        break;

                    case "head":
                    case "style":
                    case "script":
                    case "form":
                        if (XMLIterator.tagType == XMLTagType.Start)
                            _skipText++;
                        else if (XMLIterator.tagType == XMLTagType.End)
                            _skipText--;
                        break;
                }
            }

            if (_skipText == 0)
            {
                text = XMLIterator.GetText(_ignoreWhiteSpace);
                if (text.Length > 0)
                    AppendText(text);
            }

            _elements = null;
        }
 public HtmlParser()
 {
     _textFormatStack = new List<TextFormat2>();
     _format = new TextFormat2();
     _defaultOptions = new HtmlParseOptions();
 }