private WndWindowStateConfiguration( WndWindowDefinition wndWindow, ColorRgba textColor, ColorRgba textBorderColor, WndDrawData wndDrawData, StretchableImage image, GraphicsDevice graphicsDevice, GraphicsDevice2D graphicsDevice2D) { TextColor = textColor; TextBorderColor = textBorderColor; if (!wndWindow.Status.HasFlag(WndWindowStatusFlags.Image)) { BackgroundColor = ConversionExtensions.ToColorRgbaF(wndDrawData.Items[0].Color); } if (BackgroundColor != null || wndWindow.Status.HasFlag(WndWindowStatusFlags.Border)) { BorderColor = ConversionExtensions.ToColorRgbaF(wndDrawData.Items[0].BorderColor); } if (image != null) { ImageTexture = AddDisposable(image.RenderToTexture(graphicsDevice, graphicsDevice2D)); } }
internal WndWindowStaticText(WndWindowDefinition wndWindow, ContentManager contentManager, WndCallbackResolver callbackResolver) : base(wndWindow, contentManager, callbackResolver) { if (!wndWindow.StaticTextData.Centered) { TextAlignment = TextAlignment.Leading; } }
public Texture GetStretchableTexture( WndWindowDefinition wndWindow, WndDrawData wndDrawData, int leftIndex, int middleIndex, int rightIndex) { var cacheKey = new WndImageKey { DestinationSize = wndWindow.ScreenRect.ToRectangle().Size, LeftImage = wndDrawData.Items[leftIndex].Image, MiddleImage = wndDrawData.Items[middleIndex].Image, RightImage = wndDrawData.Items[rightIndex].Image }; if (!_cache.TryGetValue(cacheKey, out var result)) { var leftMappedImageTexture = GetMappedImage(cacheKey.LeftImage); var middleMappedImageTexture = GetMappedImage(cacheKey.MiddleImage); var rightMappedImageTexture = GetMappedImage(cacheKey.RightImage); if (leftMappedImageTexture != null && middleMappedImageTexture != null && rightMappedImageTexture != null) { result = CreateTexture( cacheKey, drawingContext => { var leftWidth = leftMappedImageTexture.SourceRect.Width; var rightWidth = rightMappedImageTexture.SourceRect.Width; var leftRect = new Rectangle(0, 0, leftWidth, cacheKey.DestinationSize.Height); drawingContext.DrawImage( leftMappedImageTexture.Texture, leftMappedImageTexture.SourceRect, leftRect); var middleRect = new Rectangle(leftRect.Right, 0, cacheKey.DestinationSize.Width - leftWidth - rightWidth, cacheKey.DestinationSize.Height); drawingContext.DrawImage( middleMappedImageTexture.Texture, middleMappedImageTexture.SourceRect, middleRect); var rightRect = new Rectangle(middleRect.Right, 0, rightWidth, cacheKey.DestinationSize.Height); drawingContext.DrawImage( rightMappedImageTexture.Texture, rightMappedImageTexture.SourceRect, rightRect); }); } else { result = null; } _cache.Add(cacheKey, result); } return(result); }
public RadioButton(WndWindowDefinition wndWindow, WndImageLoader imageLoader) { BackgroundImage = imageLoader.CreateStretchableImage(wndWindow.EnabledDrawData, 0, 1, 2); HoverBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.HiliteDrawData, 0, 1, 2); DisabledBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.DisabledDrawData, 0, 1, 2); HoverTextColor = wndWindow.TextColor.Hilite.ToColorRgbaF(); DisabledTextColor = wndWindow.TextColor.Disabled.ToColorRgbaF(); }
public TextBox(WndWindowDefinition wndWindow, ImageLoader imageLoader) { BackgroundImage = imageLoader.CreateFromStretchableWndDrawData(wndWindow.EnabledDrawData, 0, 2, 1); HoverBackgroundImage = imageLoader.CreateFromStretchableWndDrawData(wndWindow.HiliteDrawData, 0, 2, 1); DisabledBackgroundImage = imageLoader.CreateFromStretchableWndDrawData(wndWindow.DisabledDrawData, 0, 2, 1); HoverTextColor = wndWindow.TextColor.Hilite.ToColorRgbaF(); DisabledTextColor = wndWindow.TextColor.Disabled.ToColorRgbaF(); }
public Slider(WndWindowDefinition wndWindow, ImageLoader imageLoader) { HighlightedBoxImage = imageLoader.CreateFromWndDrawData(wndWindow.DisabledDrawData, 0); UnhighlightedBoxImage = imageLoader.CreateFromWndDrawData(wndWindow.DisabledDrawData, 1); MinimumValue = wndWindow.SliderData.MinValue; MaximumValue = wndWindow.SliderData.MaxValue; Value = wndWindow.SliderData.MinValue + (wndWindow.SliderData.MaxValue - wndWindow.SliderData.MinValue) / 2; }
internal WndWindowGenericWindow(WndWindowDefinition wndWindow, ContentManager contentManager, WndCallbackResolver callbackResolver) : base(wndWindow, contentManager, callbackResolver) { if (wndWindow.Status.HasFlag(WndWindowStatusFlags.Image)) { _imageTexture = contentManager.WndImageTextureCache.GetNormalTexture( wndWindow, wndWindow.EnabledDrawData, 0); } }
public static StretchableImage CreateNormalImage( WndWindowDefinition wndWindow, WndDrawData wndDrawData, ContentManager contentManager) { var image = LoadImage(wndDrawData, 0, contentManager); return(image != null ? CreateNormal(wndWindow.ScreenRect.ToRectangle().Width, image) : null); }
public CheckBox(WndWindowDefinition wndWindow, WndImageLoader imageLoader) { UncheckedImage = imageLoader.CreateNormalImage(wndWindow.EnabledDrawData, 1); CheckedImage = imageLoader.CreateNormalImage(wndWindow.EnabledDrawData, 2); HoverUncheckedImage = imageLoader.CreateNormalImage(wndWindow.HiliteDrawData, 1); HoverCheckedImage = imageLoader.CreateNormalImage(wndWindow.HiliteDrawData, 2); DisabledUncheckedImage = imageLoader.CreateNormalImage(wndWindow.DisabledDrawData, 1); DisabledCheckedImage = imageLoader.CreateNormalImage(wndWindow.DisabledDrawData, 2); }
private static WndWindow CreateElementRecursive(WndWindowDefinition wndWindow, ContentManager contentManager, WndCallbackResolver wndCallbackResolver) { var result = WndWindow.Create(wndWindow, contentManager, wndCallbackResolver); foreach (var childWindow in wndWindow.ChildWindows) { var child = CreateElementRecursive(childWindow, contentManager, wndCallbackResolver); child.Parent = result; result.Children.Add(child); } return(result); }
private static Control CreateControl(WndWindowDefinition wndWindow, ImageLoader imageLoader) { switch (wndWindow.WindowType) { case WndWindowType.CheckBox: return(new CheckBox(wndWindow, imageLoader)); case WndWindowType.ComboBox: return(new ComboBox(wndWindow, imageLoader)); case WndWindowType.HorizontalSlider: return(new Slider(wndWindow, imageLoader)); case WndWindowType.ProgressBar: return(new ProgressBar(wndWindow, imageLoader)); case WndWindowType.ListBox: return(new ListBox(wndWindow, imageLoader)); case WndWindowType.PushButton: return(new Button(wndWindow, imageLoader)); case WndWindowType.RadioButton: return(new RadioButton(wndWindow, imageLoader)); case WndWindowType.StaticText: return(new Label(wndWindow)); case WndWindowType.EntryField: return(new TextBox(wndWindow, imageLoader)); default: // TODO: Implement other window types. var control = new Control(); if (wndWindow.Status.HasFlag(WndWindowStatusFlags.Image)) { control.BackgroundImage = imageLoader.CreateFromWndDrawData(wndWindow.EnabledDrawData, 0); } else { control.BackgroundColor = wndWindow.EnabledDrawData.Items[0].Color.ToColorRgbaF(); } if (control.BackgroundImage == null) { control.BorderColor = wndWindow.EnabledDrawData.Items[0].BorderColor.ToColorRgbaF(); control.BorderWidth = 1; } return(control); } }
private WndWindowStateConfiguration( WndWindowDefinition wndWindow, ColorRgba textColor, ColorRgba textBorderColor, WndDrawData wndDrawData) { TextColor = textColor; TextBorderColor = textBorderColor; if (!wndWindow.Status.HasFlag(WndWindowStatusFlags.Image)) { BackgroundColor = ConversionExtensions.ToColorRgbaF(wndDrawData.Items[0].Color); } if (BackgroundColor != null || wndWindow.Status.HasFlag(WndWindowStatusFlags.Border)) { BorderColor = ConversionExtensions.ToColorRgbaF(wndDrawData.Items[0].BorderColor); } }
public static StretchableImage CreatePushButtonImage( WndWindowDefinition wndWindow, WndDrawData wndDrawData, ContentManager contentManager, int leftIndex, int middleIndex, int rightIndex) { var imageLeft = LoadImage(wndDrawData, leftIndex, contentManager); var imageMiddle = LoadImage(wndDrawData, middleIndex, contentManager); var imageRight = LoadImage(wndDrawData, rightIndex, contentManager); if (imageLeft != null && imageMiddle != null && imageRight != null) { return(CreateStretchable(wndWindow.ScreenRect.ToRectangle().Width, imageLeft, imageMiddle, imageRight)); } //if (imageLeft != null) // return StretchableImage.CreateNormal(wndWindow.ScreenRect.ToRectangle().Width, imageLeft); return(null); }
public static WndWindowStateConfiguration Create( WndWindowDefinition wndWindow, WndWindowState state, ContentManager contentManager) { WndDrawData wndDrawData; ColorRgba textColor, textColorBorder; switch (state) { case WndWindowState.Enabled: wndDrawData = wndWindow.EnabledDrawData; textColor = wndWindow.TextColor.Enabled; textColorBorder = wndWindow.TextColor.EnabledBorder; break; case WndWindowState.Highlighted: wndDrawData = wndWindow.HiliteDrawData; textColor = wndWindow.TextColor.Hilite; textColorBorder = wndWindow.TextColor.HiliteBorder; break; case WndWindowState.Disabled: wndDrawData = wndWindow.DisabledDrawData; textColor = wndWindow.TextColor.Disabled; textColorBorder = wndWindow.TextColor.DisabledBorder; break; default: throw new ArgumentOutOfRangeException(nameof(state)); } return(new WndWindowStateConfiguration( wndWindow, textColor, textColorBorder, wndDrawData)); }
public Texture GetNormalTexture( WndWindowDefinition wndWindow, WndDrawData wndDrawData, int index) { var cacheKey = new WndImageKey { DestinationSize = wndWindow.ScreenRect.ToRectangle().Size, LeftImage = wndDrawData.Items[index].Image }; if (!_cache.TryGetValue(cacheKey, out var result)) { var mappedImageTexture = GetMappedImage(cacheKey.LeftImage); if (mappedImageTexture != null) { result = CreateTexture( cacheKey, drawingContext => { drawingContext.DrawImage( mappedImageTexture.Texture, mappedImageTexture.SourceRect, new Rectangle(Point2D.Zero, cacheKey.DestinationSize)); }); } else { result = null; } _cache.Add(cacheKey, result); } return(result); }
public Label(WndWindowDefinition wndWindow) { TextAlignment = wndWindow.StaticTextData.Centered ? TextAlignment.Center : TextAlignment.Leading; }
public static WndWindowStateConfiguration Create( WndWindowDefinition wndWindow, WndWindowState state, ContentManager contentManager, GraphicsDevice graphicsDevice, GraphicsDevice2D graphicsDevice2D) { WndDrawData wndDrawData; ColorRgba textColor, textColorBorder; switch (state) { case WndWindowState.Enabled: wndDrawData = wndWindow.EnabledDrawData; textColor = wndWindow.TextColor.Enabled; textColorBorder = wndWindow.TextColor.EnabledBorder; break; case WndWindowState.Highlighted: case WndWindowState.HighlightedPushed: wndDrawData = wndWindow.HiliteDrawData; textColor = wndWindow.TextColor.Hilite; textColorBorder = wndWindow.TextColor.HiliteBorder; break; case WndWindowState.Disabled: wndDrawData = wndWindow.DisabledDrawData; textColor = wndWindow.TextColor.Disabled; textColorBorder = wndWindow.TextColor.DisabledBorder; break; default: throw new ArgumentOutOfRangeException(nameof(state)); } StretchableImage createImage() { switch (wndWindow.WindowType) { case WndWindowType.PushButton: switch (state) { case WndWindowState.HighlightedPushed: return(StretchableImage.CreatePushButtonImage( wndWindow, wndDrawData, contentManager, 1, 3, 4)); default: return(StretchableImage.CreatePushButtonImage( wndWindow, wndDrawData, contentManager, 0, 5, 6)); } default: return(StretchableImage.CreateNormalImage( wndWindow, wndDrawData, contentManager)); } } var image = wndWindow.Status.HasFlag(WndWindowStatusFlags.Image) ? createImage() : null; return(new WndWindowStateConfiguration( wndWindow, textColor, textColorBorder, wndDrawData, image, graphicsDevice, graphicsDevice2D)); }
private WndWindowDefinition ParseWindow() { NextToken(); var result = new WndWindowDefinition(); var childWindows = new List <WndWindowDefinition>(); while (Current.TokenType == WndTokenType.Identifier) { if (Current.StringValue == "END") { NextToken(); break; } switch (Current.StringValue) { case "WINDOWTYPE": result.WindowType = ParseProperty(ParseWindowType); break; case "SCREENRECT": result.ScreenRect = ParseProperty(ParseScreenRectValue); break; case "NAME": result.Name = ParseProperty(NextStringLiteralTokenValue); break; case "STATUS": result.Status = ParseProperty(ParseStatus); break; case "STYLE": result.Style = ParseProperty(ParseStyle); break; case "SYSTEMCALLBACK": result.SystemCallback = ParseProperty(NextStringLiteralTokenValue); break; case "INPUTCALLBACK": result.InputCallback = ParseProperty(NextStringLiteralTokenValue); break; case "TOOLTIPCALLBACK": result.TooltipCallback = ParseProperty(NextStringLiteralTokenValue); break; case "DRAWCALLBACK": result.DrawCallback = ParseProperty(NextStringLiteralTokenValue); break; case "FONT": result.Font = ParseProperty(ParseFont); break; case "HEADERTEMPLATE": result.HeaderTemplate = ParseProperty(NextStringLiteralTokenValue); break; case "TOOLTIPTEXT": result.TooltipText = ParseProperty(NextStringLiteralTokenValue); break; case "TOOLTIPDELAY": result.TooltipDelay = ParseProperty(NextIntegerLiteralTokenValue); break; case "TEXTCOLOR": result.TextColor = ParseProperty(ParseTextColor); break; case "ENABLEDDRAWDATA": result.EnabledDrawData = ParseProperty(ParseDrawData); break; case "DISABLEDDRAWDATA": result.DisabledDrawData = ParseProperty(ParseDrawData); break; case "HILITEDRAWDATA": result.HiliteDrawData = ParseProperty(ParseDrawData); break; case "CHILD": NextToken(); childWindows.Add(ParseWindow()); break; case "ENDALLCHILDREN": NextToken(); break; case "TEXT": result.Text = ParseProperty(NextStringLiteralTokenValue); break; case "TEXTENTRYDATA": result.TextEntryData = ParseProperty(ParseTextEntryData); break; case "STATICTEXTDATA": result.StaticTextData = ParseProperty(ParseStaticTextData); break; case "LISTBOXDATA": result.ListBoxData = ParseProperty(ParseListBoxData); break; case "LISTBOXENABLEDUPBUTTONDRAWDATA": result.ListBoxEnabledUpButtonDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXDISABLEDUPBUTTONDRAWDATA": result.ListBoxDisabledUpButtonDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXHILITEUPBUTTONDRAWDATA": result.ListBoxHiliteUpButtonDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXENABLEDDOWNBUTTONDRAWDATA": result.ListBoxEnabledDownButtonDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXDISABLEDDOWNBUTTONDRAWDATA": result.ListBoxDisabledDownButtonDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXHILITEDOWNBUTTONDRAWDATA": result.ListBoxHiliteDownButtonDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXENABLEDSLIDERDRAWDATA": result.ListBoxEnabledSliderDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXDISABLEDSLIDERDRAWDATA": result.ListBoxDisabledSliderDrawData = ParseProperty(ParseDrawData); break; case "LISTBOXHILITESLIDERDRAWDATA": result.ListBoxHiliteSliderDrawData = ParseProperty(ParseDrawData); break; case "SLIDERTHUMBENABLEDDRAWDATA": result.SliderThumbEnabledDrawData = ParseProperty(ParseDrawData); break; case "SLIDERTHUMBDISABLEDDRAWDATA": result.SliderThumbDisabledDrawData = ParseProperty(ParseDrawData); break; case "SLIDERTHUMBHILITEDRAWDATA": result.SliderThumbHiliteDrawData = ParseProperty(ParseDrawData); break; case "RADIOBUTTONDATA": result.RadioButtonData = ParseProperty(ParseRadioButtonData); break; case "COMBOBOXDATA": result.ComboBoxData = ParseProperty(ParseComboBoxData); break; case "COMBOBOXDROPDOWNBUTTONENABLEDDRAWDATA": result.ComboBoxDropDownButtonEnabledDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXDROPDOWNBUTTONDISABLEDDRAWDATA": result.ComboBoxDropDownButtonDisabledDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXDROPDOWNBUTTONHILITEDRAWDATA": result.ComboBoxDropDownButtonHiliteDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXEDITBOXENABLEDDRAWDATA": result.ComboBoxEditBoxEnabledDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXEDITBOXDISABLEDDRAWDATA": result.ComboBoxEditBoxDisabledDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXEDITBOXHILITEDRAWDATA": result.ComboBoxEditBoxHiliteDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXLISTBOXENABLEDDRAWDATA": result.ComboBoxListBoxEnabledDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXLISTBOXDISABLEDDRAWDATA": result.ComboBoxListBoxDisabledDrawData = ParseProperty(ParseDrawData); break; case "COMBOBOXLISTBOXHILITEDRAWDATA": result.ComboBoxListBoxHiliteDrawData = ParseProperty(ParseDrawData); break; case "SLIDERDATA": result.SliderData = ParseProperty(ParseSliderData); break; default: UnexpectedToken(Current); break; } } result.ChildWindows = childWindows.ToArray(); return(result); }
public ProgressBar(WndWindowDefinition wndWindow, ImageLoader imageLoader) { }
private static Control CreateElementRecursive(WndWindowDefinition wndWindow, ContentManager contentManager, WndCallbackResolver wndCallbackResolver, Point2D parentOffset) { var imageLoader = contentManager.WndImageLoader; Control createControl() { switch (wndWindow.WindowType) { case WndWindowType.CheckBox: return(new CheckBox { UncheckedImage = imageLoader.CreateNormalImage(wndWindow.EnabledDrawData, 1), CheckedImage = imageLoader.CreateNormalImage(wndWindow.EnabledDrawData, 2), HoverUncheckedImage = imageLoader.CreateNormalImage(wndWindow.HiliteDrawData, 1), HoverCheckedImage = imageLoader.CreateNormalImage(wndWindow.HiliteDrawData, 2), DisabledUncheckedImage = imageLoader.CreateNormalImage(wndWindow.DisabledDrawData, 1), DisabledCheckedImage = imageLoader.CreateNormalImage(wndWindow.DisabledDrawData, 2) }); case WndWindowType.ComboBox: return(new ComboBox { IsEditable = wndWindow.ComboBoxData.IsEditable, TextBoxBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.ComboBoxEditBoxEnabledDrawData, 0, 2, 1), TextBoxHoverBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.ComboBoxEditBoxHiliteDrawData, 0, 2, 1), TextBoxDisabledBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.ComboBoxEditBoxDisabledDrawData, 0, 2, 1), DropDownButtonImage = imageLoader.CreateNormalImage(wndWindow.ComboBoxDropDownButtonEnabledDrawData, 0), DropDownUpButtonImage = imageLoader.CreateNormalImage(wndWindow.ListBoxEnabledUpButtonDrawData, 0), DropDownUpButtonHoverImage = imageLoader.CreateNormalImage(wndWindow.ListBoxHiliteUpButtonDrawData, 0), DropDownDownButtonImage = imageLoader.CreateNormalImage(wndWindow.ListBoxEnabledDownButtonDrawData, 0), DropDownDownButtonHoverImage = imageLoader.CreateNormalImage(wndWindow.ListBoxHiliteDownButtonDrawData, 0), DropDownThumbImage = imageLoader.CreateNormalImage(wndWindow.SliderThumbEnabledDrawData, 0), DropDownThumbHoverImage = imageLoader.CreateNormalImage(wndWindow.SliderThumbHiliteDrawData, 0), DropDownSelectedItemBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.HiliteDrawData, 1, 3, 2) }); case WndWindowType.HorizontalSlider: return(new Slider { HighlightedBoxImage = imageLoader.CreateNormalImage(wndWindow.DisabledDrawData, 0), UnhighlightedBoxImage = imageLoader.CreateNormalImage(wndWindow.DisabledDrawData, 1), MinimumValue = wndWindow.SliderData.MinValue, MaximumValue = wndWindow.SliderData.MaxValue, Value = wndWindow.SliderData.MinValue + (wndWindow.SliderData.MaxValue - wndWindow.SliderData.MinValue) / 2 }); case WndWindowType.ListBox: var listBox = new ListBox { BorderColor = wndWindow.EnabledDrawData.Items[0].BorderColor.ToColorRgbaF(), BorderWidth = 1, SelectedItemBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.EnabledDrawData, 1, 3, 2), SelectedItemHoverBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.HiliteDrawData, 1, 3, 2), ColumnWidths = wndWindow.ListBoxData.ColumnWidths, IsScrollBarVisible = wndWindow.ListBoxData.ScrollBar }; if (wndWindow.ListBoxData.ScrollBar) { listBox.UpButtonImage = imageLoader.CreateNormalImage(wndWindow.ListBoxEnabledUpButtonDrawData, 0); listBox.UpButtonHoverImage = imageLoader.CreateNormalImage(wndWindow.ListBoxHiliteUpButtonDrawData, 0); listBox.DownButtonImage = imageLoader.CreateNormalImage(wndWindow.ListBoxEnabledDownButtonDrawData, 0); listBox.DownButtonHoverImage = imageLoader.CreateNormalImage(wndWindow.ListBoxHiliteDownButtonDrawData, 0); listBox.ThumbImage = imageLoader.CreateNormalImage(wndWindow.SliderThumbEnabledDrawData, 0); listBox.ThumbHoverImage = imageLoader.CreateNormalImage(wndWindow.SliderThumbHiliteDrawData, 0); } ; if (wndWindow.ListBoxData.ForceSelect) { listBox.SelectedIndex = 0; } return(listBox); case WndWindowType.PushButton: return(new Button { BackgroundImage = imageLoader.CreateStretchableImage(wndWindow.EnabledDrawData, 0, 5, 6), HoverBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.HiliteDrawData, 0, 5, 6), DisabledBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.DisabledDrawData, 0, 5, 6), PushedBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.HiliteDrawData, 1, 3, 4), HoverTextColor = wndWindow.TextColor.Hilite.ToColorRgbaF(), DisabledTextColor = wndWindow.TextColor.Disabled.ToColorRgbaF() }); case WndWindowType.StaticText: return(new Label { TextAlignment = wndWindow.StaticTextData.Centered ? TextAlignment.Center : TextAlignment.Leading }); case WndWindowType.EntryField: return(new TextBox { BackgroundImage = imageLoader.CreateStretchableImage(wndWindow.EnabledDrawData, 0, 2, 1), HoverBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.HiliteDrawData, 0, 2, 1), DisabledBackgroundImage = imageLoader.CreateStretchableImage(wndWindow.DisabledDrawData, 0, 2, 1), HoverTextColor = wndWindow.TextColor.Hilite.ToColorRgbaF(), DisabledTextColor = wndWindow.TextColor.Disabled.ToColorRgbaF() }); default: // TODO: Implement other window types. { var control = new Control(); if (wndWindow.Status.HasFlag(WndWindowStatusFlags.Image)) { control.BackgroundImage = imageLoader.CreateNormalImage(wndWindow.EnabledDrawData, 0); } else { control.BackgroundColor = wndWindow.EnabledDrawData.Items[0].Color.ToColorRgbaF(); } if (control.BackgroundImage == null) { control.BorderColor = wndWindow.EnabledDrawData.Items[0].BorderColor.ToColorRgbaF(); control.BorderWidth = 1; } return(control); } } } var result = createControl(); result.Name = wndWindow.Name; var wndRectangle = wndWindow.ScreenRect.ToRectangle(); result.Bounds = new Rectangle( wndRectangle.X - parentOffset.X, wndRectangle.Y - parentOffset.Y, wndRectangle.Width, wndRectangle.Height); var systemCallback = wndCallbackResolver.GetControlCallback(wndWindow.SystemCallback); if (systemCallback != null) { result.SystemCallback = systemCallback; } var inputCallback = wndCallbackResolver.GetControlCallback(wndWindow.InputCallback); if (inputCallback != null) { result.InputCallback = inputCallback; } var drawCallback = wndCallbackResolver.GetControlDrawCallback(wndWindow.DrawCallback); if (drawCallback != null) { result.DrawCallback = drawCallback; } // TODO: TooltipCallback result.Visible = !wndWindow.Status.HasFlag(WndWindowStatusFlags.Hidden); if (wndWindow.Status.HasFlag(WndWindowStatusFlags.SeeThru)) { result.BackgroundColor = ColorRgbaF.Transparent; result.BorderColor = ColorRgbaF.Transparent; } if (wndWindow.HasHeaderTemplate) { var headerTemplate = contentManager.IniDataContext.HeaderTemplates.First(x => x.Name == wndWindow.HeaderTemplate); result.Font = contentManager.GetOrCreateFont(headerTemplate.Font, headerTemplate.Point, headerTemplate.Bold ? FontWeight.Bold : FontWeight.Normal); } else { result.Font = contentManager.GetOrCreateFont(wndWindow.Font.Name, wndWindow.Font.Size, wndWindow.Font.Bold ? FontWeight.Bold : FontWeight.Normal); } result.TextColor = wndWindow.TextColor.Enabled.ToColorRgbaF(); result.Text = contentManager.TranslationManager.Lookup(wndWindow.Text); // TODO: TextBorderColor foreach (var childWindow in wndWindow.ChildWindows) { var child = CreateElementRecursive(childWindow, contentManager, wndCallbackResolver, wndRectangle.Location); result.Controls.Add(child); } return(result); }
internal static Control CreateRecursive( WndWindowDefinition wndWindow, ImageLoader imageLoader, ContentManager contentManager, AssetStore assetStore, WndCallbackResolver wndCallbackResolver, Point2D parentOffset) { var result = CreateControl(wndWindow, imageLoader); result.Name = wndWindow.Name; var wndRectangle = wndWindow.ScreenRect.ToRectangle(); result.Bounds = new Rectangle( wndRectangle.X - parentOffset.X, wndRectangle.Y - parentOffset.Y, wndRectangle.Width, wndRectangle.Height); var systemCallback = wndCallbackResolver.GetControlCallback(wndWindow.SystemCallback); if (systemCallback != null) { result.SystemCallback = systemCallback; } var inputCallback = wndCallbackResolver.GetControlCallback(wndWindow.InputCallback); if (inputCallback != null) { result.InputCallback = inputCallback; } var drawCallback = wndCallbackResolver.GetControlDrawCallback(wndWindow.DrawCallback); if (drawCallback != null) { result.DrawCallback = drawCallback; } // TODO: TooltipCallback result.Visible = !wndWindow.Status.HasFlag(WndWindowStatusFlags.Hidden); if (wndWindow.Status.HasFlag(WndWindowStatusFlags.SeeThru)) { result.BackgroundColor = ColorRgbaF.Transparent; result.BorderColor = ColorRgbaF.Transparent; } if (wndWindow.HasHeaderTemplate) { var headerTemplate = assetStore.HeaderTemplates.GetByName(wndWindow.HeaderTemplate); result.Font = contentManager.FontManager.GetOrCreateFont(headerTemplate.Font.Name, headerTemplate.Font.Size, headerTemplate.Font.Bold ? FontWeight.Bold : FontWeight.Normal); } else { result.Font = contentManager.FontManager.GetOrCreateFont(wndWindow.Font.Name, wndWindow.Font.Size, wndWindow.Font.Bold ? FontWeight.Bold : FontWeight.Normal); } result.TextColor = wndWindow.TextColor.Enabled.ToColorRgbaF(); result.Text = wndWindow.Text.Translate(); // TODO: TextBorderColor foreach (var childWindow in wndWindow.ChildWindows) { var child = CreateRecursive(childWindow, imageLoader, contentManager, assetStore, wndCallbackResolver, wndRectangle.Location); result.Controls.Add(child); } return(result); }