public HtmlLink() { _shape = new SelectionShape(); _shape.gameObject.name = "HtmlLink"; _clickHandler = (EventContext context) => { _owner.onClickLink.BubbleCall(_element.GetString("href")); }; _rolloverHandler = (EventContext context) => { context.CaptureTouch(); if (_owner.htmlParseOptions.linkHoverBgColor.a > 0) { _shape.color = _owner.htmlParseOptions.linkHoverBgColor; } }; _rolloutHandler = () => { if (_owner.htmlParseOptions.linkHoverBgColor.a > 0) { _shape.color = _owner.htmlParseOptions.linkBgColor; } }; }
static public int GetString(IntPtr l) { try { int argc = LuaDLL.lua_gettop(l); if (argc == 2) { FairyGUI.Utils.HtmlElement self = (FairyGUI.Utils.HtmlElement)checkSelf(l); System.String a1; checkType(l, 2, out a1); var ret = self.GetString(a1); pushValue(l, true); pushValue(l, ret); return(2); } else if (argc == 3) { FairyGUI.Utils.HtmlElement self = (FairyGUI.Utils.HtmlElement)checkSelf(l); System.String a1; checkType(l, 2, out a1); System.String a2; checkType(l, 3, out a2); var ret = self.GetString(a1, a2); pushValue(l, true); pushValue(l, ret); return(2); } pushValue(l, false); LuaDLL.lua_pushstring(l, "No matched override function to call"); return(2); } catch (Exception e) { return(error(l, e)); } }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; if (comboBox == null) { return; } int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); if (width == 0) { width = comboBox.sourceWidth; } if (height == 0) { height = comboBox.sourceHeight; } comboBox.SetSize(width, height); comboBox.items = (string[])element.Get("items"); comboBox.values = (string[])element.Get("values"); comboBox.value = element.GetString("value"); }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; if (button == null) { return; } button.onClick.Add(_clickHandler); int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); if (width == 0) { width = button.sourceWidth; } if (height == 0) { height = button.sourceHeight; } button.SetSize(width, height); button.text = element.GetString("value"); }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; string type = element.GetString("type"); if (type != null) type = type.ToLower(); _hidden = type == "hidden"; if (!_hidden) { int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); _borderSize = element.GetInt("border", defaultBorderSize); Color borderColor = element.GetColor("border-color", defaultBorderColor); if (width == 0) { width = element.space - _borderSize * 2; if (width > _owner.width / 2 || width < 100) width = (int)_owner.width / 2; } if (height == 0) height = element.format.size + 10 + _borderSize * 2; textInput.textFormat = element.format; textInput.displayAsPassword = type == "password"; textInput.SetSize(width - _borderSize * 2, height - _borderSize * 2); textInput.maxLength = element.GetInt("maxlength", int.MaxValue); _border.size = new Vector2(width, height); _border.DrawRect(_borderSize, borderColor, new Color(0, 0, 0, 0)); } textInput.text = element.GetString("value"); }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; string type = element.GetString("type"); if (type != null) { type = type.ToLower(); } _hidden = type == "hidden"; if (!_hidden) { int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); _borderSize = element.GetInt("border", defaultBorderSize); Color borderColor = element.GetColor("border-color", defaultBorderColor); if (width == 0) { width = element.space; if (width > _owner.width / 2 || width < 100) { width = (int)_owner.width / 2; } } if (height == 0) { height = element.format.size + 10 + _borderSize * 2; } textInput.textFormat = element.format; textInput.displayAsPassword = type == "password"; textInput.SetSize(width - _borderSize * 2, height - _borderSize * 2); textInput.maxLength = element.GetInt("maxlength", int.MaxValue); _border.SetXY(-_borderSize, -_borderSize); _border.SetSize(width, height); _border.DrawRect(_borderSize, borderColor, new Color(0, 0, 0, 0)); } textInput.text = element.GetString("value"); }
public virtual IHtmlObject CreateObject(RichTextField owner, HtmlElement element) { IHtmlObject ret = null; if (element.type == HtmlElementType.Image) { if (_imagePool.Count > 0 && Application.isPlaying) ret = _imagePool.Pop(); else ret = new HtmlImage(); } else if (element.type == HtmlElementType.Link) { if (_linkPool.Count > 0 && Application.isPlaying) ret = _linkPool.Pop(); else ret = new HtmlLink(); } else if (element.type == HtmlElementType.Input) { string type = element.GetString("type"); if (type != null) type = type.ToLower(); if (type == "button" || type == "submit") { if (_buttonPool.Count > 0 && Application.isPlaying) ret = _buttonPool.Pop(); else ret = new HtmlButton(); } else { if (_inputPool.Count > 0 && Application.isPlaying) ret = _inputPool.Pop(); else ret = new HtmlInput(); } } else if (element.type == HtmlElementType.Select) { if (_selectPool.Count > 0 && Application.isPlaying) ret = _selectPool.Pop(); else ret = new HtmlSelect(); } if (ret != null) { ret.Create(owner, element); if (ret.displayObject != null) ret.displayObject.home = owner.cachedTransform; } return ret; }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); NTexture texture = owner.htmlPageContext.GetImageTexture(this); if (texture != null) { if (width == 0) { width = texture.width; } if (height == 0) { height = texture.height; } loader.SetSize(width, height); loader.texture = texture; _externalTexture = true; } else { string src = element.GetString("src"); if (src != null && (width == 0 || height == 0)) { PackageItem pi = UIPackage.GetItemByURL(src); if (pi != null) { width = pi.width; height = pi.height; } } if (width == 0) { width = 5; } if (height == 0) { height = 10; } loader.SetSize(width, height); loader.url = src; _externalTexture = false; } }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); NTexture texture = owner.htmlPageContext.GetImageTexture(this); if (texture != null) { if (width == 0) width = texture.width; if (height == 0) height = texture.height; loader.SetSize(width, height); loader.texture = texture; _externalTexture = true; } else { string src = element.GetString("src"); if (src != null && (width == 0 || height == 0)) { PackageItem pi = UIPackage.GetItemByURL(src); if (pi != null) { width = pi.width; height = pi.height; } } if (width == 0) width = 5; if (height == 0) height = 10; loader.SetSize(width, height); loader.url = src; _externalTexture = false; } }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; if (comboBox == null) { return; } comboBox.onChanged.Add(_changeHandler); int width = element.GetInt("width", comboBox.sourceWidth); int height = element.GetInt("height", comboBox.sourceHeight); comboBox.SetSize(width, height); comboBox.items = (string[])element.Get("items"); comboBox.values = (string[])element.Get("values"); comboBox.value = element.GetString("value"); }
public HtmlLink() { shape = new Shape(); _clickHandler = (EventContext context) => { _owner.onClickLink.Call(_element.GetString("href")); }; _rolloverHandler = (EventContext context) => { context.CaptureTouch(); if (_owner.htmlParseOptions.linkHoverBgColor.a > 0) { shape.graphics.Tint(_owner.htmlParseOptions.linkHoverBgColor); } }; _rolloutHandler = () => { if (_owner.htmlParseOptions.linkBgColor.a > 0) { shape.graphics.Tint(_owner.htmlParseOptions.linkBgColor); } }; }
public HtmlLink() { _shape = new SelectionShape(); _clickHandler = (EventContext context) => { _owner.BubbleEvent("onClickLink", _element.GetString("href")); }; _rolloverHandler = (EventContext context) => { if (_owner.htmlParseOptions.linkHoverBgColor.A > 0) { _shape.color = _owner.htmlParseOptions.linkHoverBgColor; } }; _rolloutHandler = () => { if (_owner.htmlParseOptions.linkHoverBgColor.A > 0) { _shape.color = _owner.htmlParseOptions.linkBgColor; } }; }
virtual public IHtmlObject CreateObject(RichTextField owner, HtmlElement element) { IHtmlObject ret = null; if (element.type == HtmlElementType.Image) { if (_imagePool.Count > 0) { ret = _imagePool.Pop(); } else { ret = new HtmlImage(); } } else if (element.type == HtmlElementType.Link) { if (_linkPool.Count > 0) { ret = _linkPool.Pop(); } else { ret = new HtmlLink(); } } else if (element.type == HtmlElementType.Input) { string type = element.GetString("type"); if (type != null) { type = type.ToLower(); } if (type == "button" || type == "submit") { if (_buttonPool.Count > 0) { ret = _buttonPool.Pop(); } else { ret = new HtmlButton(); } } else { if (_inputPool.Count > 0) { ret = _inputPool.Pop(); } else { ret = new HtmlInput(); } } } else if (element.type == HtmlElementType.Select) { if (_selectPool.Count > 0) { ret = _selectPool.Pop(); } else { ret = new HtmlSelect(); } } if (ret != null) { ret.Create(owner, element); if (ret.displayObject != null) { ret.displayObject.home = owner.cachedTransform; } } return(ret); }
public void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; if (button == null) return; button.onClick.Add(_clickHandler); int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); if (width == 0) width = button.sourceWidth; if (height == 0) height = button.sourceHeight; button.SetSize(width, height); button.text = element.GetString("value"); }
virtual public IHtmlObject CreateObject(RichTextField owner, HtmlElement element) { IHtmlObject ret = null; if (element.type == HtmlElementType.Image) { if (_imagePool.Count > 0 && Application.isPlaying) { ret = _imagePool.Pop(); } else { ret = new HtmlImage(); } } else if (element.type == HtmlElementType.Input) { string type = element.GetString("type"); if (type != null) { type = type.ToLower(); } if (type == "button" || type == "submit") { if (_buttonPool.Count > 0 && Application.isPlaying) { ret = _buttonPool.Pop(); } else { ret = new HtmlButton(); } } else { if (_inputPool.Count > 0 && Application.isPlaying) { ret = _inputPool.Pop(); } else { ret = new HtmlInput(); } } } else if (element.type == HtmlElementType.Select) { if (_selectPool.Count > 0 && Application.isPlaying) { ret = _selectPool.Pop(); } else { ret = new HtmlSelect(); } } if (ret != null) { ret.Create(owner, element); } return(ret); }
virtual public IHtmlObject CreateObject(RichTextField owner, HtmlElement element) { IHtmlObject ret = null; bool fromPool = false; if (element.type == HtmlElementType.Image) { if (_imagePool.Count > 0 && _poolManager != null) { ret = _imagePool.Pop(); fromPool = true; } else { ret = new HtmlImage(); } } else if (element.type == HtmlElementType.Link) { if (_linkPool.Count > 0 && _poolManager != null) { ret = _linkPool.Pop(); fromPool = true; } else { ret = new HtmlLink(); } } else if (element.type == HtmlElementType.Input) { string type = element.GetString("type"); if (type != null) { type = type.ToLower(); } if (type == "button" || type == "submit") { if (_buttonPool.Count > 0 && _poolManager != null) { ret = _buttonPool.Pop(); fromPool = true; } else { ret = new HtmlButton(); } } else { if (_inputPool.Count > 0 && _poolManager != null) { ret = _inputPool.Pop(); fromPool = true; } else { ret = new HtmlInput(); } } } else if (element.type == HtmlElementType.Select) { if (_selectPool.Count > 0 && _poolManager != null) { ret = _selectPool.Pop(); fromPool = true; } else { ret = new HtmlSelect(); } } //Debug.Log("from=" + fromPool); if (ret != null) { //可能已经被GameObject tree deleted了,不再使用 if (fromPool && ret.displayObject != null && ret.displayObject.isDisposed) { ret.Dispose(); return(CreateObject(owner, element)); } ret.Create(owner, element); if (ret.displayObject != null) { ret.displayObject.home = owner.cachedTransform; } } return(ret); }
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 void Create(RichTextField owner, HtmlElement element) { _owner = owner; _element = element; if (comboBox == null) return; comboBox.onChanged.Add(_changeHandler); int width = element.GetInt("width", 0); int height = element.GetInt("height", 0); if (width == 0) width = comboBox.sourceWidth; if (height == 0) height = comboBox.sourceHeight; comboBox.SetSize(width, height); comboBox.items = (string[])element.Get("items"); comboBox.values = (string[])element.Get("values"); comboBox.value = element.GetString("value"); }