public EditableText() { this.backgroundSprt = new UISprite(9); base.RootUIElement.AddChildLast(this.backgroundSprt); this.backgroundSprt.ShaderType = ShaderType.Texture; this.backgroundSprt.Image = new ImageAsset(SystemImageAsset.EditableTextBackgroundNormal); this.backgroundNinePatchMargin = AssetManager.GetNinePatchMargin(SystemImageAsset.EditableTextBackgroundNormal); this.textSprt = new UISprite(1); base.RootUIElement.AddChildLast(this.textSprt); this.textSprt.ShaderType = ShaderType.TextTexture; this.DefaultText = "Please input the text."; this.DefaultFont = UISystem.DefaultFont; this.DefaultTextColor = new UIColor(0.75f, 0.75f, 0.75f, 0.75f); this.Text = ""; this.Font = this.DefaultFont; this.TextColor = TextRenderHelper.DefaultTextColor; this.TextShadow = null; this.HorizontalAlignment = HorizontalAlignment.Left; this.VerticalAlignment = VerticalAlignment.Middle; this.LineBreak = LineBreak.Character; this.TextTrimming = TextTrimming.EllipsisCharacter; this.LineGap = 0f; this.Width = 360f; this.Height = 56f; this.PriorityHit = true; this.TextInputMode = (TextInputMode)0; this.updateFlags = (EditableText.UpdateFlags.Background | EditableText.UpdateFlags.Text); }
protected internal override void Render() { if (this.Width != 0f && this.Height != 0f) { this.UpdateBackgroundSprite(); this.UpdateTextSprite(); } this.updateFlags = (EditableText.UpdateFlags) 0; base.Render(); }
private void UpdateBackgroundSprite() { if ((this.updateFlags & EditableText.UpdateFlags.Background) == EditableText.UpdateFlags.Background) { UISpriteUnit unit = this.backgroundSprt.GetUnit(0); unit.Width = this.Width; unit.Height = this.Height; UISpriteUtility.SetupNinePatch(this.backgroundSprt, this.Width, this.Height, 0f, 0f, this.backgroundNinePatchMargin); this.updateFlags &= ~EditableText.UpdateFlags.Background; } }
private void UpdateTextSprite() { if ((this.updateFlags & EditableText.UpdateFlags.Text) == EditableText.UpdateFlags.Text) { UISpriteUnit unit = this.textSprt.GetUnit(0); unit.X = 10f; unit.Y = 4f; unit.Width = this.Width - 20f; unit.Height = this.Height - 8f; TextRenderHelper textRenderHelper = new TextRenderHelper(); textRenderHelper.HorizontalAlignment = this.HorizontalAlignment; textRenderHelper.VerticalAlignment = this.VerticalAlignment; textRenderHelper.LineBreak = this.LineBreak; textRenderHelper.TextTrimming = this.TextTrimming; textRenderHelper.LineGap = this.LineGap; if (string.IsNullOrEmpty(this.Text)) { unit.Color = this.DefaultTextColor; textRenderHelper.Font = this.DefaultFont; this.textSprt.ShaderType = ShaderType.TextTexture; if (this.textSprt.Image != null) { this.textSprt.Image.Dispose(); } this.textSprt.Image = textRenderHelper.DrawText(ref this.defaultText, (int)unit.Width, (int)unit.Height); } else { string text; if (this.TextInputMode == (TextInputMode)2) { text = new string('*', this.Text.Length); } else { text = this.Text; } unit.Color = this.TextColor; textRenderHelper.Font = this.Font; this.textSprt.ShaderType = ShaderType.TextTexture; if (this.textSprt.Image != null) { this.textSprt.Image.Dispose(); } this.textSprt.Image = textRenderHelper.DrawText(ref text, (int)unit.Width, (int)unit.Height); } if (this.TextShadow != null) { this.textSprt.InternalShaderType = InternalShaderType.TextureAlphaShadow; this.textSprt.ShaderUniforms["u_ShadowColor"] = new float[] { this.TextShadow.Color.R, this.TextShadow.Color.G, this.TextShadow.Color.B, this.TextShadow.Color.A }; this.textSprt.ShaderUniforms["u_ShadowOffset"] = new float[] { this.TextShadow.HorizontalOffset / (float)this.textSprt.Image.Width, this.TextShadow.VerticalOffset / (float)this.textSprt.Image.Height }; } this.updateFlags &= ~EditableText.UpdateFlags.Text; } }