using UnityEngine; namespace FairyGUI.Utils { /// /// /// public class HtmlInput : IHtmlObject { public GTextInput textInput { get; private set; } RichTextField _owner; HtmlElement _element; bool _hidden; public static int defaultBorderSize = 2; public static Color defaultBorderColor = ToolSet.ColorFromRGB(0xA9A9A9); public static Color defaultBackgroundColor = Color.clear; public HtmlInput() { textInput = (GTextInput)UIObjectFactory.NewObject(ObjectType.InputText); textInput.gameObjectName = "HtmlInput"; textInput.verticalAlign = VertAlignType.Middle; } public DisplayObject displayObject { get { return textInput.displayObject; } } public HtmlElement element { get { return _element; } } public float width { get { return _hidden ? 0 : textInput.width; } } public float height { get { return _hidden ? 0 : textInput.height; } } 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); int borderSize = element.GetInt("border", defaultBorderSize); Color borderColor = element.GetColor("border-color", defaultBorderColor); Color backgroundColor = element.GetColor("background-color", defaultBackgroundColor); 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; textInput.textFormat = element.format; textInput.displayAsPassword = type == "password"; textInput.maxLength = element.GetInt("maxlength", int.MaxValue); textInput.border = borderSize; textInput.borderColor = borderColor; textInput.backgroundColor = backgroundColor; textInput.SetSize(width, height); } textInput.text = element.GetString("value"); } public void SetPosition(float x, float y) { if (!_hidden) textInput.SetXY(x, y); } public void Add() { if (!_hidden) _owner.AddChild(textInput.displayObject); } public void Remove() { if (!_hidden && textInput.displayObject.parent != null) _owner.RemoveChild(textInput.displayObject); } public void Release() { textInput.RemoveEventListeners(); textInput.text = null; _owner = null; _element = null; } public void Dispose() { textInput.Dispose(); } } }