public System.Drawing.Rectangle textureRect; // Bounding rectangle of this element on the composite texture #endregion Fields #region Methods /// <summary>Clone an object</summary> public Element Clone() { Element e = new Element(); e.TextureIndex = this.TextureIndex; e.FontIndex = this.FontIndex; e.textFormat = this.textFormat; e.textureRect = this.textureRect; e.TextureColor = this.TextureColor; e.FontColor = this.FontColor; return e; }
/// <summary> /// Initialize the default elements for this dialog /// </summary> private void InitializeDefaultElements() { SetTexture(0, "UI\\DXUTControls.dds"); SetFont(0, "Arial", 14, FontWeight.Normal); //------------------------------------- // Element for the caption //------------------------------------- captionElement = new Element(); captionElement.SetFont(0, WhiteColorValue, DrawTextFormat.Left | DrawTextFormat.VerticalCenter); captionElement.SetTexture(0, new System.Drawing.Rectangle(17,269,224,18)); captionElement.TextureColor.States[(int)ControlState.Normal] = WhiteColorValue; captionElement.FontColor.States[(int)ControlState.Normal] = WhiteColorValue; // Pre-blend as we don't need to transition the state captionElement.TextureColor.Blend(ControlState.Normal, 10.0f); captionElement.FontColor.Blend(ControlState.Normal, 10.0f); Element e = new Element(); //------------------------------------- // StaticText //------------------------------------- e.SetFont(0); e.FontColor.States[(int)ControlState.Disabled] = new ColorValue(0.75f, 0.75f, 0.75f, 0.75f); // Assign the element SetDefaultElement(ControlType.StaticText, StaticText.TextElement, e); //------------------------------------- // Button - Button //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(0,0,136,54)); e.SetFont(0); e.TextureColor.States[(int)ControlState.Normal] = new ColorValue(1.0f, 1.0f, 1.0f, 0.55f); e.TextureColor.States[(int)ControlState.Pressed] = new ColorValue(1.0f, 1.0f, 1.0f, 0.85f); e.FontColor.States[(int)ControlState.MouseOver] = BlackColorValue; // Assign the element SetDefaultElement(ControlType.Button, Button.ButtonLayer, e); //------------------------------------- // Button - Fill Layer //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(136,0,136,54), TransparentWhite); e.TextureColor.States[(int)ControlState.MouseOver] = new ColorValue(1.0f, 1.0f, 1.0f, 0.6f); e.TextureColor.States[(int)ControlState.Pressed] = new ColorValue(0,0,0, 0.25f); e.TextureColor.States[(int)ControlState.Focus] = new ColorValue(1.0f, 1.0f, 1.0f, 0.05f); // Assign the element SetDefaultElement(ControlType.Button, Button.FillLayer, e); //------------------------------------- // CheckBox - Box //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(0,54,27,27)); e.SetFont(0, WhiteColorValue, DrawTextFormat.Left | DrawTextFormat.VerticalCenter); e.FontColor.States[(int)ControlState.Disabled] = new ColorValue(0.8f, 0.8f, 0.8f, 0.8f); e.TextureColor.States[(int)ControlState.Normal] = new ColorValue(1.0f, 1.0f, 1.0f, 0.55f); e.TextureColor.States[(int)ControlState.Focus] = new ColorValue(1.0f, 1.0f, 1.0f, 0.8f); e.TextureColor.States[(int)ControlState.Pressed] = WhiteColorValue; // Assign the element SetDefaultElement(ControlType.CheckBox, Checkbox.BoxLayer, e); //------------------------------------- // CheckBox - Check //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(27,54,27,27)); // Assign the element SetDefaultElement(ControlType.CheckBox, Checkbox.CheckLayer, e); //------------------------------------- // RadioButton - Box //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(54,54,27,27)); e.SetFont(0, WhiteColorValue, DrawTextFormat.Left | DrawTextFormat.VerticalCenter); e.FontColor.States[(int)ControlState.Disabled] = new ColorValue(0.8f, 0.8f, 0.8f, 0.8f); e.TextureColor.States[(int)ControlState.Normal] = new ColorValue(1.0f, 1.0f, 1.0f, 0.55f); e.TextureColor.States[(int)ControlState.Focus] = new ColorValue(1.0f, 1.0f, 1.0f, 0.8f); e.TextureColor.States[(int)ControlState.Pressed] = WhiteColorValue; // Assign the element SetDefaultElement(ControlType.RadioButton, RadioButton.BoxLayer, e); //------------------------------------- // RadioButton - Check //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(81,54,27,27)); // Assign the element SetDefaultElement(ControlType.RadioButton, RadioButton.CheckLayer, e); //------------------------------------- // ComboBox - Main //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(7,81, 240, 42)); e.SetFont(0); e.TextureColor.States[(int)ControlState.Normal] = new ColorValue(0.8f, 0.8f, 0.8f, 0.55f); e.TextureColor.States[(int)ControlState.Focus] = new ColorValue(0.95f, 0.95f, 0.95f, 0.6f); e.TextureColor.States[(int)ControlState.Disabled] = new ColorValue(0.8f, 0.8f, 0.8f, 0.25f); e.FontColor.States[(int)ControlState.MouseOver] = new ColorValue(0,0,0,1.0f); e.FontColor.States[(int)ControlState.Pressed] = new ColorValue(0,0,0,1.0f); e.FontColor.States[(int)ControlState.Disabled] = new ColorValue(0.8f, 0.8f, 0.8f, 0.8f); // Assign the element SetDefaultElement(ControlType.ComboBox, ComboBox.MainLayer, e); //------------------------------------- // ComboBox - Button //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(272,0, 53, 49)); e.TextureColor.States[(int)ControlState.Normal] = new ColorValue(1.0f, 1.0f, 1.0f, 0.55f); e.TextureColor.States[(int)ControlState.Pressed] = new ColorValue(0.55f, 0.55f, 0.55f, 1.0f); e.TextureColor.States[(int)ControlState.Focus] = new ColorValue(1.0f, 1.0f, 1.0f, 0.75f); e.TextureColor.States[(int)ControlState.Disabled] = new ColorValue(1.0f, 1.0f, 1.0f, 0.25f); // Assign the element SetDefaultElement(ControlType.ComboBox, ComboBox.ComboButtonLayer, e); //------------------------------------- // ComboBox - Dropdown //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(7,123,234,142)); e.SetFont(0, BlackColorValue, DrawTextFormat.Left | DrawTextFormat.Top); // Assign the element SetDefaultElement(ControlType.ComboBox, ComboBox.DropdownLayer, e); //------------------------------------- // ComboBox - Selection //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(7,266,234,23)); e.SetFont(0, WhiteColorValue, DrawTextFormat.Left | DrawTextFormat.Top); // Assign the element SetDefaultElement(ControlType.ComboBox, ComboBox.SelectionLayer, e); //------------------------------------- // Slider - Track //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(1,290,279,41)); e.TextureColor.States[(int)ControlState.Normal] = new ColorValue(1.0f, 1.0f, 1.0f, 0.55f); e.TextureColor.States[(int)ControlState.Focus] = new ColorValue(1.0f, 1.0f, 1.0f, 0.75f); e.TextureColor.States[(int)ControlState.Disabled] = new ColorValue(1.0f, 1.0f, 1.0f, 0.25f); // Assign the element SetDefaultElement(ControlType.Slider, Slider.TrackLayer, e); //------------------------------------- // Slider - Button //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(248,55,41,41)); // Assign the element SetDefaultElement(ControlType.Slider, Slider.ButtonLayer, e); //------------------------------------- // Scrollbar - Track //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(243,144,22,11)); // Assign the element SetDefaultElement(ControlType.Scrollbar, ScrollBar.TrackLayer, e); //------------------------------------- // Scrollbar - Up Arrow //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(243,124,22,20)); e.TextureColor.States[(int)ControlState.Disabled] = new ColorValue(0.8f, 0.8f, 0.8f, 1.0f); // Assign the element SetDefaultElement(ControlType.Scrollbar, ScrollBar.UpButtonLayer, e); //------------------------------------- // Scrollbar - Down Arrow //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(243,155,22,21)); e.TextureColor.States[(int)ControlState.Disabled] = new ColorValue(0.8f, 0.8f, 0.8f, 1.0f); // Assign the element SetDefaultElement(ControlType.Scrollbar, ScrollBar.DownButtonLayer, e); //------------------------------------- // Scrollbar - Button //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(266,123,20,44)); // Assign the element SetDefaultElement(ControlType.Scrollbar, ScrollBar.ThumbLayer, e); //------------------------------------- // EditBox //------------------------------------- // Element assignment: // 0 - text area // 1 - top left border // 2 - top border // 3 - top right border // 4 - left border // 5 - right border // 6 - lower left border // 7 - lower border // 8 - lower right border e.SetFont(0, BlackColorValue, DrawTextFormat.Left | DrawTextFormat.Top); // Assign the styles e.SetTexture(0, new System.Drawing.Rectangle(14,90,227,23)); SetDefaultElement(ControlType.EditBox, EditBox.TextLayer, e); e.SetTexture(0, new System.Drawing.Rectangle(8,82,6,8)); SetDefaultElement(ControlType.EditBox, EditBox.TopLeftBorder, e); e.SetTexture(0, new System.Drawing.Rectangle(14,82,227,8)); SetDefaultElement(ControlType.EditBox, EditBox.TopBorder, e); e.SetTexture(0, new System.Drawing.Rectangle(241,82,5,8)); SetDefaultElement(ControlType.EditBox, EditBox.TopRightBorder, e); e.SetTexture(0, new System.Drawing.Rectangle(8,90,6,23)); SetDefaultElement(ControlType.EditBox, EditBox.LeftBorder, e); e.SetTexture(0, new System.Drawing.Rectangle(241,90,5,23)); SetDefaultElement(ControlType.EditBox, EditBox.RightBorder, e); e.SetTexture(0, new System.Drawing.Rectangle(8,113,6,8)); SetDefaultElement(ControlType.EditBox, EditBox.LowerLeftBorder, e); e.SetTexture(0, new System.Drawing.Rectangle(14,113,227,8)); SetDefaultElement(ControlType.EditBox, EditBox.LowerBorder, e); e.SetTexture(0, new System.Drawing.Rectangle(241,113,5,8)); SetDefaultElement(ControlType.EditBox, EditBox.LowerRightBorder, e); //------------------------------------- // Listbox - Main //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(13,124,228,141)); e.SetFont(0, BlackColorValue, DrawTextFormat.Left | DrawTextFormat.Top); // Assign the element SetDefaultElement(ControlType.ListBox, ListBox.MainLayer, e); //------------------------------------- // Listbox - Selection //------------------------------------- e.SetTexture(0, new System.Drawing.Rectangle(17,269,224,18)); e.SetFont(0, WhiteColorValue, DrawTextFormat.Left | DrawTextFormat.Top); // Assign the element SetDefaultElement(ControlType.ListBox, ListBox.SelectionLayer, e); }
/// <summary> /// Sets the default element /// </summary> public void SetDefaultElement(ControlType ctype, uint index, Element e) { // If this element already exists, just update it for (int i = 0; i < defaultElementList.Count; i++) { ElementHolder holder = (ElementHolder)defaultElementList[i]; if ( (holder.ControlType == ctype) && (holder.ElementIndex == index) ) { // Found it, update it holder.Element = e.Clone(); defaultElementList[i] = holder; return; } } // Couldn't find it, add a new entry ElementHolder newEntry = new ElementHolder(); newEntry.ControlType = ctype; newEntry.ElementIndex = index; newEntry.Element = e.Clone(); // Add it now defaultElementList.Add(newEntry); }
/// <summary>Draw's some text</summary> public void DrawText(string text, Element element, System.Drawing.Rectangle rect) { this.DrawText(text, element, rect, false); }
/// <summary>Draw's some text</summary> public void DrawText(string text, Element element, System.Drawing.Rectangle rect, bool shadow) { // No need to draw fully transparant layers if (element.FontColor.Current.Alpha == 0) return; // Nothing to do System.Drawing.Rectangle screenRect = rect; screenRect.Offset(dialogX, dialogY); // If caption is enabled, offset the Y position by its height. if (hasCaption) screenRect.Offset(0, captionHeight); // Set the identity transform DialogResourceManager.GetGlobalInstance().Sprite.Transform = Matrix.Identity; // Get the font node here FontNode fNode = GetFont(element.FontIndex); if (shadow) { // Render the text shadowed System.Drawing.Rectangle shadowRect = screenRect; shadowRect.Offset(1, 1); fNode.Font.DrawText(DialogResourceManager.GetGlobalInstance().Sprite, text, shadowRect, element.textFormat, unchecked((int)0xff000000)); } fNode.Font.DrawText(DialogResourceManager.GetGlobalInstance().Sprite, text, screenRect, element.textFormat, element.FontColor.Current.ToArgb()); }
/// <summary>Draw a sprite</summary> public void DrawSprite(Element element, System.Drawing.Rectangle rect) { // No need to draw fully transparant layers if (element.TextureColor.Current.Alpha == 0) return; // Nothing to do System.Drawing.Rectangle texRect = element.textureRect; System.Drawing.Rectangle screenRect = rect; screenRect.Offset(dialogX, dialogY); // If caption is enabled, offset the Y position by its height. if (hasCaption) screenRect.Offset(0, captionHeight); // Get the texture TextureNode tNode = GetTexture(element.TextureIndex); float scaleX = (float)screenRect.Width / (float)texRect.Width; float scaleY = (float)screenRect.Height / (float)texRect.Height; // Set the scaling transform DialogResourceManager.GetGlobalInstance().Sprite.Transform = Matrix.Scaling(scaleX, scaleY, 1.0f); // Calculate the position Vector3 pos = new Vector3(screenRect.Left, screenRect.Top, 0.0f); pos.X /= scaleX; pos.Y /= scaleY; // Finally draw the sprite DialogResourceManager.GetGlobalInstance().Sprite.Draw(tNode.Texture, texRect, new Vector3(), pos, element.TextureColor.Current.ToArgb()); }