Fix C# editor

This commit is contained in:
ExMatics HydrogenC
2023-12-01 09:28:29 +08:00
parent 623f478b44
commit 3d139a241a
74 changed files with 272 additions and 213 deletions

View File

@@ -598,7 +598,7 @@ namespace FlaxEditor.Content.GUI
// Check if it's an empty thing // Check if it's an empty thing
if (_items.Count == 0) if (_items.Count == 0)
{ {
Render2D.DrawText(style.FontSmall, IsSearching ? "No results" : "Empty", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, IsSearching ? "No results" : "Empty", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
} }

View File

@@ -745,7 +745,7 @@ namespace FlaxEditor.Content
// Draw short name // Draw short name
Render2D.PushClip(ref textRect); Render2D.PushClip(ref textRect);
Render2D.DrawText(style.FontMedium, ShowFileExtension || view.ShowFileExtensions ? FileName : ShortName, textRect, style.Foreground, nameAlignment, TextAlignment.Center, TextWrapping.WrapWords, 1f, 0.95f); FallbackTextUtils.DrawText(style.FontMedium, ShowFileExtension || view.ShowFileExtensions ? FileName : ShortName, textRect, style.Foreground, nameAlignment, TextAlignment.Center, TextWrapping.WrapWords, 1f, 0.95f);
Render2D.PopClip(); Render2D.PopClip();
} }

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.GUI; using FlaxEditor.GUI;
using FlaxEditor.GUI.Drag; using FlaxEditor.GUI.Drag;
using FlaxEditor.GUI.Tree; using FlaxEditor.GUI.Tree;
@@ -151,8 +150,8 @@ namespace FlaxEditor.Content
var textRect = TextRect; var textRect = TextRect;
for (int i = 0; i < ranges.Length; i++) for (int i = 0; i < ranges.Length; i++)
{ {
var start = font.GetCharPosition(text, ranges[i].StartIndex); var start = FallbackTextUtils.GetCharPosition(font, text, ranges[i].StartIndex);
var end = font.GetCharPosition(text, ranges[i].EndIndex); var end = FallbackTextUtils.GetCharPosition(font, text, ranges[i].EndIndex);
_highlights.Add(new Rectangle(start.X + textRect.X, textRect.Y, end.X - start.X, textRect.Height)); _highlights.Add(new Rectangle(start.X + textRect.X, textRect.Y, end.X - start.X, textRect.Height));
} }
isThisVisible = true; isThisVisible = true;

View File

@@ -109,7 +109,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
{ {
// Draw name // Draw name
Render2D.PushClip(nameRect); Render2D.PushClip(nameRect);
Render2D.DrawText(style.FontMedium, _valueName, nameRect, isEnabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, _valueName, nameRect, isEnabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
Render2D.PopClip(); Render2D.PopClip();
// Draw deselect button // Draw deselect button
@@ -118,7 +118,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
else else
{ {
// Draw info // Draw info
Render2D.DrawText(style.FontMedium, "-", nameRect, isEnabled ? Color.OrangeRed : Color.DarkOrange, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "-", nameRect, isEnabled ? Color.OrangeRed : Color.DarkOrange, TextAlignment.Near, TextAlignment.Center);
} }
// Draw picker button // Draw picker button

View File

@@ -3,7 +3,6 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.Actions; using FlaxEditor.Actions;
using FlaxEditor.Content; using FlaxEditor.Content;
using FlaxEditor.GUI; using FlaxEditor.GUI;
@@ -87,7 +86,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
var size = Size; var size = Size;
// Info // Info
Render2D.DrawText(style.FontSmall, "Drag scripts here", new Rectangle(2, _addScriptsButton.Height + 4, size.X - 4, size.Y - 4 - 20), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, "Drag scripts here", new Rectangle(2, _addScriptsButton.Height + 4, size.X - 4, size.Y - 4 - 20), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
// Check if drag is over // Check if drag is over
if (IsDragOver && _dragHandlers != null && _dragHandlers.HasValidDrag) if (IsDragOver && _dragHandlers != null && _dragHandlers.HasValidDrag)

View File

@@ -226,7 +226,7 @@ namespace FlaxEditor.CustomEditors.Dedicated
if (!enabled) if (!enabled)
color *= 0.6f; color *= 0.6f;
Render2D.DrawSprite(tab._customIcon, iconRect, color); Render2D.DrawSprite(tab._customIcon, iconRect, color);
Render2D.DrawText(style.FontMedium, tab._customText, new Rectangle(0, iconSize, size.X, textHeight), color, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, tab._customText, new Rectangle(0, iconSize, size.X, textHeight), color, TextAlignment.Center, TextAlignment.Center);
} }
} }

View File

@@ -2,7 +2,6 @@
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
using System.Linq;
namespace FlaxEditor.CustomEditors.Editors namespace FlaxEditor.CustomEditors.Editors
{ {

View File

@@ -199,7 +199,7 @@ namespace FlaxEditor.CustomEditors.Editors
{ {
// Draw name // Draw name
Render2D.PushClip(nameRect); Render2D.PushClip(nameRect);
Render2D.DrawText(style.FontMedium, _valueName, nameRect, isEnabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, _valueName, nameRect, isEnabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
Render2D.PopClip(); Render2D.PopClip();
// Draw deselect button // Draw deselect button
@@ -208,7 +208,7 @@ namespace FlaxEditor.CustomEditors.Editors
else else
{ {
// Draw info // Draw info
Render2D.DrawText(style.FontMedium, "-", nameRect, isEnabled ? Color.OrangeRed : Color.DarkOrange, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "-", nameRect, isEnabled ? Color.OrangeRed : Color.DarkOrange, TextAlignment.Near, TextAlignment.Center);
} }
// Draw picker button // Draw picker button

View File

@@ -160,13 +160,13 @@ namespace FlaxEditor.CustomEditors.Editors
// Draw name // Draw name
Render2D.PushClip(nameRect); Render2D.PushClip(nameRect);
Render2D.DrawText(style.FontMedium, _valueName, nameRect, style.Foreground, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, _valueName, nameRect, style.Foreground, TextAlignment.Near, TextAlignment.Center);
Render2D.PopClip(); Render2D.PopClip();
} }
else else
{ {
// Draw info // Draw info
Render2D.DrawText(style.FontMedium, "-", nameRect, Color.OrangeRed, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "-", nameRect, Color.OrangeRed, TextAlignment.Near, TextAlignment.Center);
} }
// Draw picker button // Draw picker button

View File

@@ -139,7 +139,7 @@ namespace FlaxEditor.GUI
float sizeForTextLeft = Width - button1Rect.Right; float sizeForTextLeft = Width - button1Rect.Right;
if (sizeForTextLeft > 30) if (sizeForTextLeft > 30)
{ {
Render2D.DrawText( FallbackTextUtils.DrawText(
style.FontSmall, style.FontSmall,
Validator.SelectedItem.ShortName, Validator.SelectedItem.ShortName,
new Rectangle(button1Rect.Right + 2, 0, sizeForTextLeft, ButtonsSize), new Rectangle(button1Rect.Right + 2, 0, sizeForTextLeft, ButtonsSize),
@@ -161,7 +161,7 @@ namespace FlaxEditor.GUI
var name = Validator.SelectedAsset.GetType().Name; var name = Validator.SelectedAsset.GetType().Name;
if (Validator.SelectedAsset.IsVirtual) if (Validator.SelectedAsset.IsVirtual)
name += " (virtual)"; name += " (virtual)";
Render2D.DrawText( FallbackTextUtils.DrawText(
style.FontSmall, style.FontSmall,
name, name,
new Rectangle(button1Rect.Right + 2, 0, sizeForTextLeft, ButtonsSize), new Rectangle(button1Rect.Right + 2, 0, sizeForTextLeft, ButtonsSize),
@@ -174,7 +174,7 @@ namespace FlaxEditor.GUI
{ {
// No element selected // No element selected
Render2D.FillRectangle(iconRect, style.BackgroundNormal); Render2D.FillRectangle(iconRect, style.BackgroundNormal);
Render2D.DrawText(style.FontMedium, "No asset\nselected", iconRect, Color.Orange, TextAlignment.Center, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, Height / DefaultIconSize); FallbackTextUtils.DrawText(style.FontMedium, "No asset\nselected", iconRect, Color.Orange, TextAlignment.Center, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, Height / DefaultIconSize);
} }
// Check if drag is over // Check if drag is over

View File

@@ -554,7 +554,7 @@ namespace FlaxEditor.GUI
var textRect = new Rectangle(margin, 0, clientRect.Width - boxSize - 2.0f * margin, clientRect.Height); var textRect = new Rectangle(margin, 0, clientRect.Width - boxSize - 2.0f * margin, clientRect.Height);
Render2D.PushClip(textRect); Render2D.PushClip(textRect);
var textColor = TextColor; var textColor = TextColor;
Render2D.DrawText(Font.GetFont(), text, textRect, enabled ? textColor : textColor * 0.5f, TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, textScale); FallbackTextUtils.DrawText(Font.GetFont(), text, textRect, enabled ? textColor : textColor * 0.5f, TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, textScale);
Render2D.PopClip(); Render2D.PopClip();
} }

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
@@ -129,12 +128,12 @@ namespace FlaxEditor.GUI.ContextMenu
base.Draw(); base.Draw();
// Draw text // Draw text
Render2D.DrawText(style.FontMedium, Text, textRect, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, Text, textRect, textColor, TextAlignment.Near, TextAlignment.Center);
if (!string.IsNullOrEmpty(ShortKeys)) if (!string.IsNullOrEmpty(ShortKeys))
{ {
// Draw short keys // Draw short keys
Render2D.DrawText(style.FontMedium, ShortKeys, textRect, textColor, TextAlignment.Far, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, ShortKeys, textRect, textColor, TextAlignment.Far, TextAlignment.Center);
} }
// Draw icon // Draw icon

View File

@@ -832,7 +832,7 @@ namespace FlaxEditor.GUI
50, 50,
LabelsSize LabelsSize
); );
Render2D.DrawText(_labelsFont, label, labelRect, _labelsColor.AlphaMultiplied(strength), TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, 0.7f); FallbackTextUtils.DrawText(_labelsFont, label, labelRect, _labelsColor.AlphaMultiplied(strength), TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, 0.7f);
} }
} }
} }

View File

@@ -281,33 +281,33 @@ namespace FlaxEditor.GUI.Dialogs
// RGBA // RGBA
var rgbaR = new Rectangle(_cRed.Left - ChannelTextWidth, _cRed.Y, 10000, _cRed.Height); var rgbaR = new Rectangle(_cRed.Left - ChannelTextWidth, _cRed.Y, 10000, _cRed.Height);
Render2D.DrawText(style.FontMedium, "R", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "R", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center);
rgbaR.Location.Y = _cGreen.Y; rgbaR.Location.Y = _cGreen.Y;
Render2D.DrawText(style.FontMedium, "G", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "G", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center);
rgbaR.Location.Y = _cBlue.Y; rgbaR.Location.Y = _cBlue.Y;
Render2D.DrawText(style.FontMedium, "B", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "B", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center);
rgbaR.Location.Y = _cAlpha.Y; rgbaR.Location.Y = _cAlpha.Y;
Render2D.DrawText(style.FontMedium, "A", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "A", rgbaR, textColor, TextAlignment.Near, TextAlignment.Center);
// HSV left // HSV left
var hsvHl = new Rectangle(_cHue.Left - ChannelTextWidth, _cHue.Y, 10000, _cHue.Height); var hsvHl = new Rectangle(_cHue.Left - ChannelTextWidth, _cHue.Y, 10000, _cHue.Height);
Render2D.DrawText(style.FontMedium, "H", hsvHl, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "H", hsvHl, textColor, TextAlignment.Near, TextAlignment.Center);
hsvHl.Location.Y = _cSaturation.Y; hsvHl.Location.Y = _cSaturation.Y;
Render2D.DrawText(style.FontMedium, "S", hsvHl, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "S", hsvHl, textColor, TextAlignment.Near, TextAlignment.Center);
hsvHl.Location.Y = _cValue.Y; hsvHl.Location.Y = _cValue.Y;
Render2D.DrawText(style.FontMedium, "V", hsvHl, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "V", hsvHl, textColor, TextAlignment.Near, TextAlignment.Center);
// HSV right // HSV right
var hsvHr = new Rectangle(_cHue.Right + 2, _cHue.Y, 10000, _cHue.Height); var hsvHr = new Rectangle(_cHue.Right + 2, _cHue.Y, 10000, _cHue.Height);
Render2D.DrawText(style.FontMedium, "°", hsvHr, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "°", hsvHr, textColor, TextAlignment.Near, TextAlignment.Center);
hsvHr.Location.Y = _cSaturation.Y; hsvHr.Location.Y = _cSaturation.Y;
Render2D.DrawText(style.FontMedium, "%", hsvHr, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "%", hsvHr, textColor, TextAlignment.Near, TextAlignment.Center);
hsvHr.Location.Y = _cValue.Y; hsvHr.Location.Y = _cValue.Y;
Render2D.DrawText(style.FontMedium, "%", hsvHr, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "%", hsvHr, textColor, TextAlignment.Near, TextAlignment.Center);
// Hex // Hex
var hex = new Rectangle(_cHex.Left - 26, _cHex.Y, 10000, _cHex.Height); var hex = new Rectangle(_cHex.Left - 26, _cHex.Y, 10000, _cHex.Height);
Render2D.DrawText(style.FontMedium, "Hex", hex, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, "Hex", hex, textColor, TextAlignment.Near, TextAlignment.Center);
// Color difference // Color difference
var newRect = new Rectangle(_cOK.X, _cHex.Bottom + PickerMargin, _cCancel.Right - _cOK.Left, 0); var newRect = new Rectangle(_cOK.X, _cHex.Bottom + PickerMargin, _cCancel.Right - _cOK.Left, 0);

View File

@@ -208,7 +208,7 @@ namespace FlaxEditor.GUI.Docking
} }
// Draw text // Draw text
Render2D.DrawText( FallbackTextUtils.DrawText(
style.FontMedium, style.FontMedium,
tab.Title, tab.Title,
new Rectangle(DockPanel.DefaultLeftTextMargin + iconWidth, 0, Width - DockPanel.DefaultLeftTextMargin - DockPanel.DefaultButtonsSize - 2 * DockPanel.DefaultButtonsMargin, DockPanel.DefaultHeaderHeight), new Rectangle(DockPanel.DefaultLeftTextMargin + iconWidth, 0, Width - DockPanel.DefaultLeftTextMargin - DockPanel.DefaultButtonsSize - 2 * DockPanel.DefaultButtonsMargin, DockPanel.DefaultHeaderHeight),
@@ -271,7 +271,7 @@ namespace FlaxEditor.GUI.Docking
} }
// Draw text // Draw text
Render2D.DrawText( FallbackTextUtils.DrawText(
style.FontMedium, style.FontMedium,
tab.Title, tab.Title,
new Rectangle(x + DockPanel.DefaultLeftTextMargin + iconWidth, 0, 10000, DockPanel.DefaultHeaderHeight), new Rectangle(x + DockPanel.DefaultLeftTextMargin + iconWidth, 0, 10000, DockPanel.DefaultHeaderHeight),

View File

@@ -6,7 +6,6 @@ using FlaxEngine;
using FlaxEngine.Assertions; using FlaxEngine.Assertions;
using FlaxEngine.GUI; using FlaxEngine.GUI;
using FlaxEditor.Options; using FlaxEditor.Options;
using System.Linq;
namespace FlaxEditor.GUI.Docking namespace FlaxEditor.GUI.Docking
{ {

View File

@@ -2,7 +2,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.GUI.ContextMenu; using FlaxEditor.GUI.ContextMenu;
using FlaxEditor.GUI.Input; using FlaxEditor.GUI.Input;
using FlaxEditor.Utilities; using FlaxEditor.Utilities;
@@ -87,8 +86,8 @@ namespace FlaxEditor.GUI
var font = style.FontSmall; var font = style.FontSmall;
for (int i = 0; i < ranges.Length; i++) for (int i = 0; i < ranges.Length; i++)
{ {
var start = font.GetCharPosition(Name, ranges[i].StartIndex); var start = FallbackTextUtils.GetCharPosition(font, Name, ranges[i].StartIndex);
var end = font.GetCharPosition(Name, ranges[i].EndIndex); var end = FallbackTextUtils.GetCharPosition(font, Name, ranges[i].EndIndex);
_highlights.Add(new Rectangle(start.X + 2, 0, end.X - start.X, Height)); _highlights.Add(new Rectangle(start.X + 2, 0, end.X - start.X, Height));
} }
Visible = true; Visible = true;
@@ -137,7 +136,7 @@ namespace FlaxEditor.GUI
} }
// Draw name // Draw name
Render2D.DrawText(style.FontSmall, Name, textRect, TintColor * (Enabled ? style.Foreground : style.ForegroundDisabled), TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, Name, textRect, TintColor * (Enabled ? style.Foreground : style.ForegroundDisabled), TextAlignment.Near, TextAlignment.Center);
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@@ -2,7 +2,6 @@
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
using System.Linq;
namespace FlaxEditor.GUI namespace FlaxEditor.GUI
{ {
@@ -73,7 +72,7 @@ namespace FlaxEditor.GUI
} }
// Draw text // Draw text
Render2D.DrawText(style.FontMedium, Text, clientRect, enabled && hasChildItems ? style.Foreground : style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, Text, clientRect, enabled && hasChildItems ? style.Foreground : style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@@ -2,7 +2,6 @@
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
using System.Linq;
namespace FlaxEditor.GUI namespace FlaxEditor.GUI
{ {
@@ -58,7 +57,7 @@ namespace FlaxEditor.GUI
} }
// Draw text // Draw text
Render2D.DrawText(style.FontMedium, Text, textRect, EnabledInHierarchy ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, Text, textRect, EnabledInHierarchy ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
@@ -99,7 +98,7 @@ namespace FlaxEditor.GUI
rect.Width -= leftDepthMargin; rect.Width -= leftDepthMargin;
Render2D.PushClip(rect); Render2D.PushClip(rect);
Render2D.DrawText(style.FontMedium, text, rect, style.Foreground, column.CellAlignment, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, text, rect, style.Foreground, column.CellAlignment, TextAlignment.Center);
Render2D.PopClip(); Render2D.PopClip();
x += width; x += width;

View File

@@ -56,7 +56,7 @@ namespace FlaxEditor.GUI
Render2D.DrawSprite(style.StatusBarSizeGrip, new Rectangle(Width - 12, 10, 12, 12), style.Foreground); Render2D.DrawSprite(style.StatusBarSizeGrip, new Rectangle(Width - 12, 10, 12, 12), style.Foreground);
// Draw status text // Draw status text
Render2D.DrawText(style.FontSmall, Text, new Rectangle(4, 0, Width - 20, Height), TextColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, Text, new Rectangle(4, 0, Width - 20, Height), TextColor, TextAlignment.Near, TextAlignment.Center);
} }
} }
} }

View File

@@ -157,7 +157,7 @@ namespace FlaxEditor.GUI
{ {
Rectangle textRectangle = r; Rectangle textRectangle = r;
textRectangle.X = 4; textRectangle.X = 4;
Render2D.DrawText(style.FontMedium, "No Style", textRectangle, style.Foreground); FallbackTextUtils.DrawText(style.FontMedium, "No Style", textRectangle, style.Foreground);
} }
} }

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
@@ -131,7 +130,7 @@ namespace FlaxEditor.GUI
var style = Style.Current; var style = Style.Current;
var font = column.TitleFont ?? style.FontMedium; var font = column.TitleFont ?? style.FontMedium;
Render2D.DrawText(font, column.Title, rect, column.TitleColor, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(font, column.Title, rect, column.TitleColor, TextAlignment.Center, TextAlignment.Center);
if (columnIndex < _columns.Length - 1) if (columnIndex < _columns.Length - 1)
{ {

View File

@@ -98,7 +98,7 @@ namespace FlaxEditor.GUI.Tabs
// Draw text // Draw text
if (!string.IsNullOrEmpty(Tab.Text)) if (!string.IsNullOrEmpty(Tab.Text))
{ {
Render2D.DrawText(style.FontMedium, Tab.Text, new Rectangle(tabRect.X + textOffset, tabRect.Y, tabRect.Width - textOffset, tabRect.Height), style.Foreground, Tabs.TabsTextHorizontalAlignment, Tabs.TabsTextVerticalAlignment); FallbackTextUtils.DrawText(style.FontMedium, Tab.Text, new Rectangle(tabRect.X + textOffset, tabRect.Y, tabRect.Width - textOffset, tabRect.Height), style.Foreground, Tabs.TabsTextHorizontalAlignment, Tabs.TabsTextVerticalAlignment);
} }
} }
} }

View File

@@ -301,7 +301,7 @@ namespace FlaxEditor.GUI.Timeline.GUI
default: throw new ArgumentOutOfRangeException(); default: throw new ArgumentOutOfRangeException();
} }
var labelRect = new Rectangle(x + 2, -verticalLinesHeaderExtend * 0.8f + timeAxisHeaderOffset, 50, verticalLinesHeaderExtend); var labelRect = new Rectangle(x + 2, -verticalLinesHeaderExtend * 0.8f + timeAxisHeaderOffset, 50, verticalLinesHeaderExtend);
Render2D.DrawText(style.FontSmall, labelText, labelRect, labelColor, TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, 0.8f); FallbackTextUtils.DrawText(style.FontSmall, labelText, labelRect, labelColor, TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, 0.8f);
} }
} }
} }

View File

@@ -2,7 +2,6 @@
using System; using System;
using System.Globalization; using System.Globalization;
using System.Linq;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;

View File

@@ -965,7 +965,7 @@ namespace FlaxEditor.GUI.Timeline
} }
// Draw text // Draw text
Render2D.DrawText(style.FontSmall, Title ?? Name, textRect, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, Title ?? Name, textRect, textColor, TextAlignment.Near, TextAlignment.Center);
// Disabled overlay // Disabled overlay
DrawDisabled = Mute || (ParentTrack != null && ParentTrack.DrawDisabled); DrawDisabled = Mute || (ParentTrack != null && ParentTrack.DrawDisabled);

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
@@ -137,7 +136,7 @@ namespace FlaxEditor.GUI
if (!string.IsNullOrEmpty(_text)) if (!string.IsNullOrEmpty(_text))
{ {
textRect.Size.X = Width - DefaultMargin - textRect.Left; textRect.Size.X = Width - DefaultMargin - textRect.Left;
Render2D.DrawText(style.FontMedium, _text, textRect, enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, _text, textRect, enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
} }
} }

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
@@ -657,7 +656,7 @@ namespace FlaxEditor.GUI.Tree
} }
// Draw text // Draw text
Render2D.DrawText(TextFont.GetFont(), _text, textRect, _cachedTextColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(TextFont.GetFont(), _text, textRect, _cachedTextColor, TextAlignment.Near, TextAlignment.Center);
// Draw drag and drop effect // Draw drag and drop effect
if (IsDragOver && _tree.DraggedOverNode == this) if (IsDragOver && _tree.DraggedOverNode == this)

View File

@@ -224,7 +224,7 @@ namespace FlaxEditor.Options
} }
} }
Render2D.Fallbacks = FallbackFonts.Create(Options.Interface.Fallbacks); FallbackTextUtils.Fallbacks = FallbackFonts.Create(Options.Interface.Fallbacks);
} }
/// <summary> /// <summary>

View File

@@ -142,8 +142,8 @@ namespace FlaxEditor.SceneGraph.GUI
var textRect = TextRect; var textRect = TextRect;
for (int i = 0; i < ranges.Length; i++) for (int i = 0; i < ranges.Length; i++)
{ {
var start = font.GetCharPosition(text, ranges[i].StartIndex); var start = FallbackTextUtils.GetCharPosition(font, text, ranges[i].StartIndex);
var end = font.GetCharPosition(text, ranges[i].EndIndex); var end = FallbackTextUtils.GetCharPosition(font, text, ranges[i].EndIndex);
_highlights.Add(new Rectangle(start.X + textRect.X, textRect.Y, end.X - start.X, textRect.Height)); _highlights.Add(new Rectangle(start.X + textRect.X, textRect.Y, end.X - start.X, textRect.Height));
} }
isThisVisible = true; isThisVisible = true;

View File

@@ -379,7 +379,7 @@ namespace FlaxEditor.Surface.Archetypes
} }
// Name // Name
Render2D.DrawText(style.FontLarge, Title, _textRect, style.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, Title, _textRect, style.Foreground, TextAlignment.Center, TextAlignment.Center);
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -1128,7 +1128,7 @@ namespace FlaxEditor.Surface.Archetypes
} }
// Name // Name
Render2D.DrawText(style.FontLarge, Title, _textRect, style.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, Title, _textRect, style.Foreground, TextAlignment.Center, TextAlignment.Center);
// Close button // Close button
Render2D.DrawSprite(style.Cross, _closeButtonRect, _closeButtonRect.Contains(_mousePosition) ? style.Foreground : style.ForegroundGrey); Render2D.DrawSprite(style.Cross, _closeButtonRect, _closeButtonRect.Contains(_mousePosition) ? style.Foreground : style.ForegroundGrey);

View File

@@ -2,7 +2,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.CustomEditors.Dedicated; using FlaxEditor.CustomEditors.Dedicated;
using FlaxEditor.GUI.ContextMenu; using FlaxEditor.GUI.ContextMenu;
using FlaxEditor.GUI.Drag; using FlaxEditor.GUI.Drag;
@@ -185,7 +184,7 @@ namespace FlaxEditor.Surface.Archetypes
if (!string.IsNullOrEmpty(_debugInfo)) if (!string.IsNullOrEmpty(_debugInfo))
{ {
var style = Style.Current; var style = Style.Current;
Render2D.DrawText(style.FontSmall, _debugInfo, new Rectangle(4, _headerRect.Bottom + 4, _debugInfoSize), style.Foreground); FallbackTextUtils.DrawText(style.FontSmall, _debugInfo, new Rectangle(4, _headerRect.Bottom + 4, _debugInfoSize), style.Foreground);
} }
// Debug relevancy outline // Debug relevancy outline

View File

@@ -113,7 +113,7 @@ namespace FlaxEditor.Surface.Archetypes
var idx = (int)ModuleType; var idx = (int)ModuleType;
var headerRect = new Rectangle(0, 0, Width, 16.0f); var headerRect = new Rectangle(0, 0, Width, 16.0f);
//Render2D.FillRectangle(headerRect, Color.Red); //Render2D.FillRectangle(headerRect, Color.Red);
Render2D.DrawText(style.FontMedium, Title, headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, Title, headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center);
DrawChildren(); DrawChildren();

View File

@@ -154,7 +154,7 @@ namespace FlaxEditor.Surface.Archetypes
if (headerRect.Contains(mousePosition)) if (headerRect.Contains(mousePosition))
headerColor *= 1.07f; headerColor *= 1.07f;
Render2D.FillRectangle(headerRect, headerColor); Render2D.FillRectangle(headerRect, headerColor);
Render2D.DrawText(style.FontLarge, Names[idx], headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, Names[idx], headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center);
DrawChildren(); DrawChildren();
} }
@@ -194,7 +194,7 @@ namespace FlaxEditor.Surface.Archetypes
if (_headerRect.Contains(ref _mousePosition)) if (_headerRect.Contains(ref _mousePosition))
headerColor *= 1.07f; headerColor *= 1.07f;
Render2D.FillRectangle(_headerRect, headerColor); Render2D.FillRectangle(_headerRect, headerColor);
Render2D.DrawText(style.FontLarge, Title, _headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, Title, _headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center);
DrawChildren(); DrawChildren();

View File

@@ -141,7 +141,7 @@ namespace FlaxEditor.Surface.ContextMenu
}; };
// Title bar // Title bar
var titleFontReference = new FontReference(Style.Current.FontLarge); var titleFontReference = new FontReference(Style.Current.FontLarge.Asset, 10);
var titleLabel = new Label var titleLabel = new Label
{ {
Width = Width * 0.5f - 8f, Width = Width * 0.5f - 8f,

View File

@@ -200,8 +200,8 @@ namespace FlaxEditor.Surface.ContextMenu
var font = style.FontSmall; var font = style.FontSmall;
for (int i = 0; i < ranges.Length; i++) for (int i = 0; i < ranges.Length; i++)
{ {
var start = font.GetCharPosition(_archetype.Title, ranges[i].StartIndex); var start = FallbackTextUtils.GetCharPosition(font, _archetype.Title, ranges[i].StartIndex);
var end = font.GetCharPosition(_archetype.Title, ranges[i].EndIndex); var end = FallbackTextUtils.GetCharPosition(font, _archetype.Title, ranges[i].EndIndex);
_highlights.Add(new Rectangle(start.X + textRect.X, 0, end.X - start.X, Height)); _highlights.Add(new Rectangle(start.X + textRect.X, 0, end.X - start.X, Height));
if (ranges[i].StartIndex <= 0) if (ranges[i].StartIndex <= 0)
@@ -222,8 +222,8 @@ namespace FlaxEditor.Surface.ContextMenu
_highlights.Clear(); _highlights.Clear();
var style = Style.Current; var style = Style.Current;
var font = style.FontSmall; var font = style.FontSmall;
var start = font.GetCharPosition(_archetype.Title, 0); var start = FallbackTextUtils.GetCharPosition(font, _archetype.Title, 0);
var end = font.GetCharPosition(_archetype.Title, _archetype.Title.Length - 1); var end = FallbackTextUtils.GetCharPosition(font, _archetype.Title, _archetype.Title.Length - 1);
_highlights.Add(new Rectangle(start.X + textRect.X, 0, end.X - start.X, Height)); _highlights.Add(new Rectangle(start.X + textRect.X, 0, end.X - start.X, Height));
_isFullMatch = true; _isFullMatch = true;
Visible = true; Visible = true;
@@ -237,8 +237,8 @@ namespace FlaxEditor.Surface.ContextMenu
_highlights.Clear(); _highlights.Clear();
var style = Style.Current; var style = Style.Current;
var font = style.FontSmall; var font = style.FontSmall;
var start = font.GetCharPosition(_archetype.Title, 0); var start = FallbackTextUtils.GetCharPosition(font, _archetype.Title, 0);
var end = font.GetCharPosition(_archetype.Title, _archetype.Title.Length - 1); var end = FallbackTextUtils.GetCharPosition(font, _archetype.Title, _archetype.Title.Length - 1);
_highlights.Add(new Rectangle(start.X + textRect.X, 0, end.X - start.X, Height)); _highlights.Add(new Rectangle(start.X + textRect.X, 0, end.X - start.X, Height));
Visible = true; Visible = true;
@@ -283,19 +283,19 @@ namespace FlaxEditor.Surface.ContextMenu
} }
// Draw name // Draw name
Render2D.DrawText(style.FontSmall, _archetype.Title, textRect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, _archetype.Title, textRect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
if (_archetype.SubTitle != null) if (_archetype.SubTitle != null)
{ {
var titleLength = FallbackTextUtils.MeasureText(style.FontSmall, _archetype.Title).X; var titleLength = FallbackTextUtils.MeasureText(style.FontSmall, _archetype.Title).X;
var subTitleRect = new Rectangle(textRect.X + titleLength, textRect.Y, textRect.Width - titleLength, textRect.Height); var subTitleRect = new Rectangle(textRect.X + titleLength, textRect.Y, textRect.Width - titleLength, textRect.Height);
Render2D.DrawText(style.FontSmall, _archetype.SubTitle, subTitleRect, style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, _archetype.SubTitle, subTitleRect, style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
} }
// Reset transform and draw score mark // Reset transform and draw score mark
if (showScoreHit) if (showScoreHit)
{ {
Render2D.PopTransform(); Render2D.PopTransform();
Render2D.DrawText(style.FontSmall, "> ", textRect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, "> ", textRect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
} }
} }

View File

@@ -1443,7 +1443,7 @@ namespace FlaxEditor.Surface.Elements
// Draw text // Draw text
var style = Style.Current; var style = Style.Current;
var rect = new Rectangle(Width + 4, 0, 1410, Height); var rect = new Rectangle(Width + 4, 0, 1410, Height);
Render2D.DrawText(style.FontSmall, Text, rect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, Text, rect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Near, TextAlignment.Center);
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@@ -189,7 +189,7 @@ namespace FlaxEditor.Surface.Elements
// Draw text // Draw text
var style = Style.Current; var style = Style.Current;
var rect = new Rectangle(-100, 0, 100 - 2, Height); var rect = new Rectangle(-100, 0, 100 - 2, Height);
Render2D.DrawText(style.FontSmall, Text, rect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Far, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, Text, rect, Enabled ? style.Foreground : style.ForegroundDisabled, TextAlignment.Far, TextAlignment.Center);
} }
} }
} }

View File

@@ -25,7 +25,7 @@ namespace FlaxEditor.Surface.Elements
var style = Style.Current; var style = Style.Current;
var color = Enabled ? style.Foreground : style.ForegroundDisabled; var color = Enabled ? style.Foreground : style.ForegroundDisabled;
Render2D.DrawText(style.FontSmall, Archetype.Text, new Rectangle(Float2.Zero, Size), color, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontSmall, Archetype.Text, new Rectangle(Float2.Zero, Size), color, TextAlignment.Near, TextAlignment.Center);
} }
} }
} }

View File

@@ -169,7 +169,7 @@ namespace FlaxEditor.Surface
// Header // Header
Render2D.FillRectangle(_headerRect, headerColor); Render2D.FillRectangle(_headerRect, headerColor);
Render2D.DrawText(style.FontLarge, Title, _headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, Title, _headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center);
// Close button // Close button
Render2D.DrawSprite(style.Cross, _closeButtonRect, _closeButtonRect.Contains(_mousePosition) && Surface.CanEdit ? style.Foreground : style.ForegroundGrey); Render2D.DrawSprite(style.Cross, _closeButtonRect, _closeButtonRect.Contains(_mousePosition) && Surface.CanEdit ? style.Foreground : style.ForegroundGrey);

View File

@@ -2,7 +2,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.Scripting; using FlaxEditor.Scripting;
using FlaxEditor.Surface.Elements; using FlaxEditor.Surface.Elements;
using FlaxEditor.Surface.Undo; using FlaxEditor.Surface.Undo;
@@ -1028,7 +1027,7 @@ namespace FlaxEditor.Surface
if (_headerRect.Contains(ref _mousePosition)) if (_headerRect.Contains(ref _mousePosition))
headerColor *= 1.07f; headerColor *= 1.07f;
Render2D.FillRectangle(_headerRect, headerColor); Render2D.FillRectangle(_headerRect, headerColor);
Render2D.DrawText(style.FontLarge, Title, _headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, Title, _headerRect, style.Foreground, TextAlignment.Center, TextAlignment.Center);
// Close button // Close button
if ((Archetype.Flags & NodeFlags.NoCloseButton) == 0 && Surface.CanEdit) if ((Archetype.Flags & NodeFlags.NoCloseButton) == 0 && Surface.CanEdit)

View File

@@ -2,7 +2,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.GUI.Tabs; using FlaxEditor.GUI.Tabs;
using FlaxEditor.Modules; using FlaxEditor.Modules;
using FlaxEditor.SceneGraph.Actors; using FlaxEditor.SceneGraph.Actors;

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using FlaxEditor.GUI.Tabs; using FlaxEditor.GUI.Tabs;
using FlaxEditor.Modules; using FlaxEditor.Modules;
using FlaxEditor.SceneGraph.Actors; using FlaxEditor.SceneGraph.Actors;

View File

@@ -1233,8 +1233,8 @@ namespace FlaxEditor.Viewport
color = Color.Yellow; color = Color.Yellow;
var text = string.Format("FPS: {0}", fps); var text = string.Format("FPS: {0}", fps);
var font = Style.Current.FontMedium; var font = Style.Current.FontMedium;
Render2D.DrawText(font, text, new Rectangle(Float2.One, Size), Color.Black); FallbackTextUtils.DrawText(font, text, new Rectangle(Float2.One, Size), Color.Black);
Render2D.DrawText(font, text, new Rectangle(Float2.Zero, Size), color); FallbackTextUtils.DrawText(font, text, new Rectangle(Float2.Zero, Size), color);
} }
} }
@@ -1814,7 +1814,7 @@ namespace FlaxEditor.Viewport
{ {
var bounds = new Rectangle(Float2.Zero, Size); var bounds = new Rectangle(Float2.Zero, Size);
Render2D.FillRectangle(bounds, new Color(0.0f, 0.0f, 0.0f, 0.2f)); Render2D.FillRectangle(bounds, new Color(0.0f, 0.0f, 0.0f, 0.2f));
Render2D.DrawText(Style.Current.FontLarge, "Debugger breakpoint hit...", bounds, Color.White, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(Style.Current.FontLarge, "Debugger breakpoint hit...", bounds, Color.White, TextAlignment.Center, TextAlignment.Center);
} }
} }

View File

@@ -96,11 +96,11 @@ namespace FlaxEditor.Viewport.Previews
var skinnedModel = SkinnedModel; var skinnedModel = SkinnedModel;
if (skinnedModel == null) if (skinnedModel == null)
{ {
Render2D.DrawText(style.FontLarge, "Missing Base Model", new Rectangle(Float2.Zero, Size), Color.Red, TextAlignment.Center, TextAlignment.Center, TextWrapping.WrapWords); FallbackTextUtils.DrawText(style.FontLarge, "Missing Base Model", new Rectangle(Float2.Zero, Size), Color.Red, TextAlignment.Center, TextAlignment.Center, TextWrapping.WrapWords);
} }
else if (!skinnedModel.IsLoaded) else if (!skinnedModel.IsLoaded)
{ {
Render2D.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
} }

View File

@@ -409,8 +409,8 @@ namespace FlaxEditor.Viewport.Previews
} }
var font = Style.Current.FontMedium; var font = Style.Current.FontMedium;
var pos = new Float2(10, 50); var pos = new Float2(10, 50);
Render2D.DrawText(font, text, new Rectangle(pos + Float2.One, Size), Color.Black); FallbackTextUtils.DrawText(font, text, new Rectangle(pos + Float2.One, Size), Color.Black);
Render2D.DrawText(font, text, new Rectangle(pos, Size), Color.White); FallbackTextUtils.DrawText(font, text, new Rectangle(pos, Size), Color.White);
} }
} }

View File

@@ -254,7 +254,7 @@ namespace FlaxEditor.Viewport.Previews
if (_showParticlesCounter) if (_showParticlesCounter)
{ {
var count = _previewEffect.ParticlesCount; var count = _previewEffect.ParticlesCount;
Render2D.DrawText( FallbackTextUtils.DrawText(
Style.Current.FontSmall, Style.Current.FontSmall,
"Particles: " + count, "Particles: " + count,
new Rectangle(Float2.Zero, Size), new Rectangle(Float2.Zero, Size),

View File

@@ -161,8 +161,8 @@ namespace FlaxEditor.Viewport.Previews
} }
var font = Style.Current.FontMedium; var font = Style.Current.FontMedium;
var pos = new Float2(10, 50); var pos = new Float2(10, 50);
Render2D.DrawText(font, text, new Rectangle(pos + Float2.One, Size), Color.Black); FallbackTextUtils.DrawText(font, text, new Rectangle(pos + Float2.One, Size), Color.Black);
Render2D.DrawText(font, text, new Rectangle(pos, Size), Color.White); FallbackTextUtils.DrawText(font, text, new Rectangle(pos, Size), Color.White);
} }
} }

View File

@@ -103,7 +103,7 @@ namespace FlaxEditor.Viewport.Previews
{ {
var bounds = new Rectangle(Float2.Zero, Size); var bounds = new Rectangle(Float2.Zero, Size);
Render2D.FillRectangle(bounds, new Color(0.0f, 0.0f, 0.0f, 0.2f)); Render2D.FillRectangle(bounds, new Color(0.0f, 0.0f, 0.0f, 0.2f));
Render2D.DrawText(Style.Current.FontLarge, "Debugger breakpoint hit...", bounds, Color.White, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(Style.Current.FontLarge, "Debugger breakpoint hit...", bounds, Color.White, TextAlignment.Center, TextAlignment.Center);
} }
Render2D.PopClip(); Render2D.PopClip();

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
using FlaxEditor.GUI.ContextMenu; using FlaxEditor.GUI.ContextMenu;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
@@ -124,7 +123,7 @@ namespace FlaxEditor.Viewport.Widgets
} }
// Draw text // Draw text
Render2D.DrawText(style.FontMedium, _text, textRect, style.ForegroundViewport * (IsMouseOver ? 1.0f : 0.9f), TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, _text, textRect, style.ForegroundViewport * (IsMouseOver ? 1.0f : 0.9f), TextAlignment.Center, TextAlignment.Center);
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@@ -2,7 +2,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.GUI.Dialogs; using FlaxEditor.GUI.Dialogs;
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;

View File

@@ -51,7 +51,7 @@ namespace FlaxEditor.Windows.Assets
var style = Style.Current; var style = Style.Current;
if (_window.Asset == null || !_window.Asset.IsLoaded) if (_window.Asset == null || !_window.Asset.IsLoaded)
{ {
Render2D.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
} }
} }

View File

@@ -61,7 +61,7 @@ namespace FlaxEditor.Windows.Assets
var animation = _window.Asset; var animation = _window.Asset;
if (animation == null || !animation.IsLoaded) if (animation == null || !animation.IsLoaded)
{ {
Render2D.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
} }

View File

@@ -48,7 +48,7 @@ namespace FlaxEditor.Windows.Assets
var asset = _window.Asset; var asset = _window.Asset;
if (asset == null || !asset.IsLoaded) if (asset == null || !asset.IsLoaded)
{ {
Render2D.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
} }
} }
@@ -645,7 +645,7 @@ namespace FlaxEditor.Windows.Assets
if (!Proxy.Window._meshData.RequestMeshData(Proxy.Window._asset)) if (!Proxy.Window._meshData.RequestMeshData(Proxy.Window._asset))
{ {
Invalidate(); Invalidate();
Render2D.DrawText(Style.Current.FontMedium, "Loading...", new Rectangle(Float2.Zero, size), Color.White, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(Style.Current.FontMedium, "Loading...", new Rectangle(Float2.Zero, size), Color.White, TextAlignment.Center, TextAlignment.Center);
return; return;
} }

View File

@@ -50,7 +50,7 @@ namespace FlaxEditor.Windows.Assets
var asset = _window.Asset; var asset = _window.Asset;
if (asset == null || !asset.IsLoaded) if (asset == null || !asset.IsLoaded)
{ {
Render2D.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, "Loading...", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
} }
} }
@@ -715,7 +715,7 @@ namespace FlaxEditor.Windows.Assets
if (!Proxy.Window.RequestMeshData()) if (!Proxy.Window.RequestMeshData())
{ {
Invalidate(); Invalidate();
Render2D.DrawText(Style.Current.FontMedium, "Loading...", new Rectangle(Float2.Zero, size), Color.White, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(Style.Current.FontMedium, "Loading...", new Rectangle(Float2.Zero, size), Color.White, TextAlignment.Center, TextAlignment.Center);
return; return;
} }

View File

@@ -57,7 +57,7 @@ namespace FlaxEditor.Windows
var textRect = new Rectangle(margin, 0, clientRect.Width - boxSize - 2.0f * margin, clientRect.Height); var textRect = new Rectangle(margin, 0, clientRect.Width - boxSize - 2.0f * margin, clientRect.Height);
Render2D.PushClip(textRect); Render2D.PushClip(textRect);
var textColor = TextColor; var textColor = TextColor;
Render2D.DrawText(Font.GetFont(), "View", textRect, enabled ? textColor : textColor * 0.5f, TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, textScale); FallbackTextUtils.DrawText(Font.GetFont(), "View", textRect, enabled ? textColor : textColor * 0.5f, TextAlignment.Near, TextAlignment.Center, TextWrapping.NoWrap, 1.0f, textScale);
Render2D.PopClip(); Render2D.PopClip();
// Arrow // Arrow

View File

@@ -140,11 +140,11 @@ namespace FlaxEditor.Windows
Render2D.PushClip(ref clientRect); Render2D.PushClip(ref clientRect);
if (LogCount == 1) if (LogCount == 1)
{ {
Render2D.DrawText(style.FontMedium, Desc.Title, textRect, style.Foreground); FallbackTextUtils.DrawText(style.FontMedium, Desc.Title, textRect, style.Foreground);
} }
else if (LogCount > 1) else if (LogCount > 1)
{ {
Render2D.DrawText(style.FontMedium, $"{Desc.Title} ({LogCount})", textRect, style.Foreground); FallbackTextUtils.DrawText(style.FontMedium, $"{Desc.Title} ({LogCount})", textRect, style.Foreground);
} }
Render2D.PopClip(); Render2D.PopClip();
} }

View File

@@ -827,7 +827,7 @@ namespace FlaxEditor.Windows
if (Camera.MainCamera == null) if (Camera.MainCamera == null)
{ {
var style = Style.Current; var style = Style.Current;
Render2D.DrawText(style.FontLarge, "No camera", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontLarge, "No camera", new Rectangle(Float2.Zero, Size), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center);
} }
// Selected UI controls outline // Selected UI controls outline
@@ -866,8 +866,8 @@ namespace FlaxEditor.Windows
var alpha = Mathf.Saturate(-animTime / fadeOutTime); var alpha = Mathf.Saturate(-animTime / fadeOutTime);
var rect = new Rectangle(new Float2(6), Size - 12); var rect = new Rectangle(new Float2(6), Size - 12);
var text = "Press Shift+F11 to unlock the mouse"; var text = "Press Shift+F11 to unlock the mouse";
Render2D.DrawText(style.FontSmall, text, rect + new Float2(1.0f), style.Background * alpha, TextAlignment.Near, TextAlignment.Far); FallbackTextUtils.DrawText(style.FontSmall, text, rect + new Float2(1.0f), style.Background * alpha, TextAlignment.Near, TextAlignment.Far);
Render2D.DrawText(style.FontSmall, text, rect, style.Foreground * alpha, TextAlignment.Near, TextAlignment.Far); FallbackTextUtils.DrawText(style.FontSmall, text, rect, style.Foreground * alpha, TextAlignment.Near, TextAlignment.Far);
} }
timeout = 1.0f; timeout = 1.0f;
@@ -884,7 +884,7 @@ namespace FlaxEditor.Windows
{ {
var bounds = new Rectangle(Float2.Zero, Size); var bounds = new Rectangle(Float2.Zero, Size);
Render2D.FillRectangle(bounds, new Color(0.0f, 0.0f, 0.0f, 0.2f)); Render2D.FillRectangle(bounds, new Color(0.0f, 0.0f, 0.0f, 0.2f));
Render2D.DrawText(Style.Current.FontLarge, "Debugger breakpoint hit...", bounds, Color.White, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(Style.Current.FontLarge, "Debugger breakpoint hit...", bounds, Color.White, TextAlignment.Center, TextAlignment.Center);
} }
} }
} }

View File

@@ -138,8 +138,8 @@ namespace FlaxEditor.Windows.Profiler
var headerRect = new Rectangle(0, chartHeight, Width, TitleHeight); var headerRect = new Rectangle(0, chartHeight, Width, TitleHeight);
var headerTextRect = new Rectangle(2, chartHeight, Width - 4, TitleHeight); var headerTextRect = new Rectangle(2, chartHeight, Width - 4, TitleHeight);
Render2D.FillRectangle(headerRect, style.BackgroundNormal); Render2D.FillRectangle(headerRect, style.BackgroundNormal);
Render2D.DrawText(style.FontMedium, Title, headerTextRect, style.ForegroundGrey, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, Title, headerTextRect, style.ForegroundGrey, TextAlignment.Near, TextAlignment.Center);
Render2D.DrawText(style.FontMedium, _sample, headerTextRect, style.Foreground, TextAlignment.Far, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, _sample, headerTextRect, style.Foreground, TextAlignment.Far, TextAlignment.Center);
} }
private void OnClick(ref Float2 location) private void OnClick(ref Float2 location)

View File

@@ -2,7 +2,6 @@
using FlaxEngine; using FlaxEngine;
using FlaxEngine.GUI; using FlaxEngine.GUI;
using System.Linq;
namespace FlaxEditor.Windows.Profiler namespace FlaxEditor.Windows.Profiler
{ {
@@ -91,7 +90,7 @@ namespace FlaxEditor.Windows.Profiler
if (_nameLength < bounds.Width + 4) if (_nameLength < bounds.Width + 4)
{ {
Render2D.PushClip(bounds); Render2D.PushClip(bounds);
Render2D.DrawText(style.FontMedium, _name, bounds, Style.Current.Foreground, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(style.FontMedium, _name, bounds, Style.Current.Foreground, TextAlignment.Center, TextAlignment.Center);
Render2D.PopClip(); Render2D.PopClip();
} }
} }
@@ -116,7 +115,7 @@ namespace FlaxEditor.Windows.Profiler
var style = Style.Current; var style = Style.Current;
var rect = new Rectangle(Float2.Zero, Size); var rect = new Rectangle(Float2.Zero, Size);
Render2D.PushClip(rect); Render2D.PushClip(rect);
Render2D.DrawText(style.FontMedium, Name, rect, Style.Current.Foreground, TextAlignment.Center, TextAlignment.Center, TextWrapping.WrapChars); FallbackTextUtils.DrawText(style.FontMedium, Name, rect, Style.Current.Foreground, TextAlignment.Center, TextAlignment.Center, TextWrapping.WrapChars);
Render2D.PopClip(); Render2D.PopClip();
} }
} }

View File

@@ -297,7 +297,7 @@ namespace FlaxEditor.Windows
} }
if (overlayText != null) if (overlayText != null)
{ {
Render2D.DrawText(style.FontLarge, overlayText, GetClientArea(), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center, textWrap); FallbackTextUtils.DrawText(style.FontLarge, overlayText, GetClientArea(), style.ForegroundDisabled, TextAlignment.Center, TextAlignment.Center, textWrap);
} }
base.Draw(); base.Draw();

View File

@@ -2,7 +2,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using FlaxEditor.GUI.Input; using FlaxEditor.GUI.Input;
using FlaxEditor.GUI.Tabs; using FlaxEditor.GUI.Tabs;
using FlaxEditor.GUI.Tree; using FlaxEditor.GUI.Tree;
@@ -273,8 +272,8 @@ namespace FlaxEditor.Windows
var textRect = item.TextRect; var textRect = item.TextRect;
for (int i = 0; i < ranges.Length; i++) for (int i = 0; i < ranges.Length; i++)
{ {
var start = font.GetCharPosition(text, ranges[i].StartIndex); var start = FallbackTextUtils.GetCharPosition(font, text, ranges[i].StartIndex);
var end = font.GetCharPosition(text, ranges[i].EndIndex); var end = FallbackTextUtils.GetCharPosition(font, text, ranges[i].EndIndex);
highlights.Add(new Rectangle(start.X + textRect.X, textRect.Y, end.X - start.X, textRect.Height)); highlights.Add(new Rectangle(start.X + textRect.X, textRect.Y, end.X - start.X, textRect.Height));
} }
item.SetHighlights(highlights); item.SetHighlights(highlights);

View File

@@ -1,4 +1,6 @@
using System.Runtime.CompilerServices;
namespace FlaxEngine namespace FlaxEngine
{ {
/// <summary> /// <summary>
@@ -11,41 +13,10 @@ namespace FlaxEngine
get; set; get; set;
} = null; } = null;
public static void DrawText(Font font, string text, Rectangle layoutRect, Color color, TextAlignment horizontalAlignment = TextAlignment.Near, TextAlignment verticalAlignment = TextAlignment.Near, TextWrapping textWrapping = TextWrapping.NoWrap, float baseLinesGapScale = 1.0f, float scale = 1.0f) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void DrawText(Font font, string text, Color color, ref TextLayoutOptions layout, MaterialBase customMaterial = null, bool useFallback = true)
{ {
var layout = new TextLayoutOptions if (Fallbacks != null && useFallback)
{
Bounds = layoutRect,
HorizontalAlignment = horizontalAlignment,
VerticalAlignment = verticalAlignment,
TextWrapping = textWrapping,
Scale = scale,
BaseLinesGapScale = baseLinesGapScale,
};
if (Fallbacks != null)
{
Render2D.DrawText(font, Fallbacks, text, color, ref layout);
}
else
{
Render2D.DrawText(font, text, color, ref layout);
}
}
public static void DrawText(Font font, MaterialBase customMaterial, string text, Rectangle layoutRect, Color color, TextAlignment horizontalAlignment = TextAlignment.Near, TextAlignment verticalAlignment = TextAlignment.Near, TextWrapping textWrapping = TextWrapping.NoWrap, float baseLinesGapScale = 1.0f, float scale = 1.0f)
{
var layout = new TextLayoutOptions
{
Bounds = layoutRect,
HorizontalAlignment = horizontalAlignment,
VerticalAlignment = verticalAlignment,
TextWrapping = textWrapping,
Scale = scale,
BaseLinesGapScale = baseLinesGapScale,
};
if (Fallbacks != null)
{ {
Render2D.DrawText(font, Fallbacks, text, color, ref layout, customMaterial); Render2D.DrawText(font, Fallbacks, text, color, ref layout, customMaterial);
} }
@@ -55,9 +26,56 @@ namespace FlaxEngine
} }
} }
public static Float2 MeasureText(Font font, string text) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void DrawText(Font font, string text, Rectangle layoutRect, Color color, TextAlignment horizontalAlignment = TextAlignment.Near, TextAlignment verticalAlignment = TextAlignment.Near, TextWrapping textWrapping = TextWrapping.NoWrap, float baseLinesGapScale = 1.0f, float scale = 1.0f, bool useFallback = true)
{ {
if (Fallbacks != null) var layout = new TextLayoutOptions
{
Bounds = layoutRect,
HorizontalAlignment = horizontalAlignment,
VerticalAlignment = verticalAlignment,
TextWrapping = textWrapping,
Scale = scale,
BaseLinesGapScale = baseLinesGapScale,
};
if (Fallbacks != null && useFallback)
{
Render2D.DrawText(font, Fallbacks, text, color, ref layout);
}
else
{
Render2D.DrawText(font, text, color, ref layout);
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void DrawText(Font font, MaterialBase customMaterial, string text, Rectangle layoutRect, Color color, TextAlignment horizontalAlignment = TextAlignment.Near, TextAlignment verticalAlignment = TextAlignment.Near, TextWrapping textWrapping = TextWrapping.NoWrap, float baseLinesGapScale = 1.0f, float scale = 1.0f, bool useFallback = true)
{
var layout = new TextLayoutOptions
{
Bounds = layoutRect,
HorizontalAlignment = horizontalAlignment,
VerticalAlignment = verticalAlignment,
TextWrapping = textWrapping,
Scale = scale,
BaseLinesGapScale = baseLinesGapScale,
};
if (Fallbacks != null && useFallback)
{
Render2D.DrawText(font, Fallbacks, text, color, ref layout, customMaterial);
}
else
{
Render2D.DrawText(font, text, color, ref layout, customMaterial);
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 MeasureText(Font font, string text, bool useFallback = true)
{
if (Fallbacks != null && useFallback)
{ {
return font.MeasureText(Fallbacks, text); return font.MeasureText(Fallbacks, text);
} }
@@ -67,9 +85,10 @@ namespace FlaxEngine
} }
} }
public static Float2 MeasureText(Font font, string text, ref TextRange textRange) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 MeasureText(Font font, string text, ref TextRange textRange, bool useFallback = true)
{ {
if (Fallbacks != null) if (Fallbacks != null && useFallback)
{ {
return font.MeasureText(Fallbacks, text, ref textRange); return font.MeasureText(Fallbacks, text, ref textRange);
} }
@@ -79,9 +98,10 @@ namespace FlaxEngine
} }
} }
public static Float2 MeasureText(Font font, string text, ref TextLayoutOptions layout) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 MeasureText(Font font, string text, ref TextLayoutOptions layout, bool useFallback = true)
{ {
if (Fallbacks != null) if (Fallbacks != null && useFallback)
{ {
return font.MeasureText(Fallbacks, text, ref layout); return font.MeasureText(Fallbacks, text, ref layout);
} }
@@ -91,9 +111,10 @@ namespace FlaxEngine
} }
} }
public static Float2 MeasureText(Font font, string text, ref TextRange textRange, ref TextLayoutOptions layout) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 MeasureText(Font font, string text, ref TextRange textRange, ref TextLayoutOptions layout, bool useFallback = true)
{ {
if (Fallbacks != null) if (Fallbacks != null && useFallback)
{ {
return font.MeasureText(Fallbacks, text, ref textRange, ref layout); return font.MeasureText(Fallbacks, text, ref textRange, ref layout);
} }
@@ -103,24 +124,108 @@ namespace FlaxEngine
} }
} }
public static Float2 GetCharPosition(Font font, string text, int index) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int HitTestText(Font font, string text, Float2 location, bool useFallback = true)
{ {
return font.GetCharPosition(Style.Current.Fallbacks, text, index); if (Fallbacks != null && useFallback)
{
return font.HitTestText(Fallbacks, text, location);
}
else
{
return font.HitTestText(text, location);
}
} }
public static Float2 GetCharPosition(Font font, string text, ref TextRange textRange, int index) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int HitTestText(Font font, string text, ref TextRange textRange, Float2 location, bool useFallback = true)
{ {
return font.GetCharPosition(Style.Current.Fallbacks, text, ref textRange, index); if (Fallbacks != null && useFallback)
{
return font.HitTestText(Fallbacks, text, ref textRange, location);
}
else
{
return font.HitTestText(text, ref textRange, location);
}
} }
public static Float2 GetCharPosition(Font font, string text, int index, ref TextLayoutOptions layout) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int HitTestText(Font font, string text, Float2 location, ref TextLayoutOptions layout, bool useFallback = true)
{ {
return font.GetCharPosition(Style.Current.Fallbacks, text, index, ref layout); if (Fallbacks != null && useFallback)
{
return font.HitTestText(Fallbacks, text, location, ref layout);
}
else
{
return font.HitTestText(text, location, ref layout);
}
} }
public static Float2 GetCharPosition(Font font, string text, ref TextRange textRange, int index, ref TextLayoutOptions layout) [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int HitTestText(Font font, string text, ref TextRange textRange, Float2 location, ref TextLayoutOptions layout, bool useFallback = true)
{ {
return font.GetCharPosition(Style.Current.Fallbacks, text, ref textRange, index, ref layout); if (Fallbacks != null && useFallback)
{
return font.HitTestText(Fallbacks, text, ref textRange, location, ref layout);
}
else
{
return font.HitTestText(text, ref textRange, location, ref layout);
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 GetCharPosition(Font font, string text, int index, bool useFallback = true)
{
if (Fallbacks != null && useFallback)
{
return font.GetCharPosition(Fallbacks, text, index);
}
else
{
return font.GetCharPosition(text, index);
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 GetCharPosition(Font font, string text, ref TextRange textRange, int index, bool useFallback = true)
{
if (Fallbacks != null && useFallback)
{
return font.GetCharPosition(Fallbacks, text, ref textRange, index);
}
else
{
return font.GetCharPosition(text, ref textRange, index);
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 GetCharPosition(Font font, string text, int index, ref TextLayoutOptions layout, bool useFallback = true)
{
if (Fallbacks != null && useFallback)
{
return font.GetCharPosition(Fallbacks, text, index, ref layout);
}
else
{
return font.GetCharPosition(text, index, ref layout);
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Float2 GetCharPosition(Font font, string text, ref TextRange textRange, int index, ref TextLayoutOptions layout, bool useFallback = true)
{
if (Fallbacks != null && useFallback)
{
return font.GetCharPosition(Fallbacks, text, ref textRange, index, ref layout);
}
else
{
return font.GetCharPosition(text, ref textRange, index, ref layout);
}
} }
} }
} }

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {
@@ -262,7 +261,7 @@ namespace FlaxEngine.GUI
Render2D.DrawRectangle(clientRect, borderColor, BorderThickness); Render2D.DrawRectangle(clientRect, borderColor, BorderThickness);
// Draw text // Draw text
Render2D.DrawText(_font?.GetFont(), TextMaterial, _text, clientRect, textColor, TextAlignment.Center, TextAlignment.Center); FallbackTextUtils.DrawText(_font?.GetFont(), TextMaterial, _text, clientRect, textColor, TextAlignment.Center, TextAlignment.Center);
} }
/// <inheritdoc /> /// <inheritdoc />

View File

@@ -2,7 +2,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {
@@ -674,7 +673,7 @@ namespace FlaxEngine.GUI
var textRect = new Rectangle(margin, 0, clientRect.Width - boxSize - 2.0f * margin, clientRect.Height); var textRect = new Rectangle(margin, 0, clientRect.Width - boxSize - 2.0f * margin, clientRect.Height);
Render2D.PushClip(textRect); Render2D.PushClip(textRect);
var textColor = TextColor; var textColor = TextColor;
Render2D.DrawText(Font.GetFont(), FontMaterial, _items[_selectedIndex], textRect, enabled ? textColor : textColor * 0.5f, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(Font.GetFont(), FontMaterial, _items[_selectedIndex], textRect, enabled ? textColor : textColor * 0.5f, TextAlignment.Near, TextAlignment.Center);
Render2D.PopClip(); Render2D.PopClip();
} }

View File

@@ -1,8 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using FlaxEditor.Options;
using System.ComponentModel; using System.ComponentModel;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {
@@ -235,7 +233,7 @@ namespace FlaxEngine.GUI
} }
} }
Render2D.DrawText(_font.GetFont(), Material, _text, rect, color, hAlignment, wAlignment, Wrapping, BaseLinesGapScale, scale); FallbackTextUtils.DrawText(_font.GetFont(), Material, _text, rect, color, hAlignment, wAlignment, Wrapping, BaseLinesGapScale, scale);
if (ClipText) if (ClipText)
Render2D.PopClip(); Render2D.PopClip();

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using FlaxEngine.Utilities; using FlaxEngine.Utilities;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {

View File

@@ -154,7 +154,7 @@ namespace FlaxEngine.GUI
if (!font) if (!font)
break; break;
height = font.Height / DpiScale; height = font.Height / DpiScale;
return textBlock.Bounds.Location + font.GetCharPosition(_text, ref textBlock.Range, index - textBlock.Range.StartIndex); return textBlock.Bounds.Location + FallbackTextUtils.GetCharPosition(font, _text, ref textBlock.Range, index - textBlock.Range.StartIndex);
} }
} }
@@ -196,7 +196,7 @@ namespace FlaxEngine.GUI
var font = textBlock.Style.Font.GetFont(); var font = textBlock.Style.Font.GetFont();
if (!font && textBlock.Range.Length > 0) if (!font && textBlock.Range.Length > 0)
break; break;
return font.HitTestText(_text, ref textBlock.Range, location - textBlock.Bounds.Location) + textBlock.Range.StartIndex; return FallbackTextUtils.HitTestText(font, _text, ref textBlock.Range, location - textBlock.Bounds.Location) + textBlock.Range.StartIndex;
} }
} }
@@ -288,8 +288,8 @@ namespace FlaxEngine.GUI
// Selection // Selection
if (hasSelection && textBlock.Style.BackgroundSelectedBrush != null && textBlock.Range.Intersect(ref selection)) if (hasSelection && textBlock.Style.BackgroundSelectedBrush != null && textBlock.Range.Intersect(ref selection))
{ {
var leftEdge = selection.StartIndex <= textBlock.Range.StartIndex ? textBlock.Bounds.UpperLeft : font.GetCharPosition(_text, selection.StartIndex); var leftEdge = selection.StartIndex <= textBlock.Range.StartIndex ? textBlock.Bounds.UpperLeft : FallbackTextUtils.GetCharPosition(font, _text, selection.StartIndex);
var rightEdge = selection.EndIndex >= textBlock.Range.EndIndex ? textBlock.Bounds.UpperRight : font.GetCharPosition(_text, selection.EndIndex); var rightEdge = selection.EndIndex >= textBlock.Range.EndIndex ? textBlock.Bounds.UpperRight : FallbackTextUtils.GetCharPosition(font, _text, selection.EndIndex);
float height = font.Height / DpiScale; float height = font.Height / DpiScale;
float alpha = Mathf.Min(1.0f, Mathf.Cos(_animateTime * BackgroundSelectedFlashSpeed) * 0.5f + 1.3f); float alpha = Mathf.Min(1.0f, Mathf.Cos(_animateTime * BackgroundSelectedFlashSpeed) * 0.5f + 1.3f);
alpha *= alpha; alpha *= alpha;

View File

@@ -1,7 +1,5 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.Drawing;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {
@@ -120,7 +118,7 @@ namespace FlaxEngine.GUI
} }
height = font.Height / DpiScale; height = font.Height / DpiScale;
return font.GetCharPosition(_text, index, ref _layout); return FallbackTextUtils.GetCharPosition(font, _text, index, ref _layout);
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -132,7 +130,7 @@ namespace FlaxEngine.GUI
return 0; return 0;
} }
return font.HitTestText(_text, location, ref _layout); return FallbackTextUtils.HitTestText(font, _text, location, ref _layout);
} }
/// <inheritdoc /> /// <inheritdoc />
@@ -171,8 +169,8 @@ namespace FlaxEngine.GUI
// Check if sth is selected to draw selection // Check if sth is selected to draw selection
if (HasSelection) if (HasSelection)
{ {
var leftEdge = font.GetCharPosition(_text, SelectionLeft, ref _layout); var leftEdge = FallbackTextUtils.GetCharPosition(font, _text, SelectionLeft, ref _layout);
var rightEdge = font.GetCharPosition(_text, SelectionRight, ref _layout); var rightEdge = FallbackTextUtils.GetCharPosition(font, _text, SelectionRight, ref _layout);
float fontHeight = font.Height / DpiScale; float fontHeight = font.Height / DpiScale;
// Draw selection background // Draw selection background
@@ -213,25 +211,11 @@ namespace FlaxEngine.GUI
var color = TextColor; var color = TextColor;
if (!enabled) if (!enabled)
color *= 0.6f; color *= 0.6f;
if (Render2D.Fallbacks != null) FallbackTextUtils.DrawText(font, _text, color, ref _layout, TextMaterial);
{
Render2D.DrawText(font, Render2D.Fallbacks, _text, color, ref _layout, TextMaterial);
}
else
{
Render2D.DrawText(font, _text, color, ref _layout, TextMaterial);
}
} }
else if (!string.IsNullOrEmpty(_watermarkText) && !IsFocused) else if (!string.IsNullOrEmpty(_watermarkText) && !IsFocused)
{ {
if (Render2D.Fallbacks != null) FallbackTextUtils.DrawText(font, _watermarkText, WatermarkTextColor, ref _layout, TextMaterial);
{
Render2D.DrawText(font, Render2D.Fallbacks, _watermarkText, WatermarkTextColor, ref _layout, TextMaterial);
}
else
{
Render2D.DrawText(font, _watermarkText, WatermarkTextColor, ref _layout, TextMaterial);
}
} }
// Caret // Caret

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {
@@ -375,7 +374,7 @@ namespace FlaxEngine.GUI
textColor *= 0.6f; textColor *= 0.6f;
} }
Render2D.DrawText(HeaderTextFont.GetFont(), HeaderTextMaterial, HeaderText, textRect, textColor, TextAlignment.Near, TextAlignment.Center); FallbackTextUtils.DrawText(HeaderTextFont.GetFont(), HeaderTextMaterial, HeaderText, textRect, textColor, TextAlignment.Near, TextAlignment.Center);
if (!_isClosed && EnableContainmentLines) if (!_isClosed && EnableContainmentLines)
{ {

View File

@@ -1,6 +1,5 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {

View File

@@ -1,7 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. // Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System; using System;
using System.Linq;
namespace FlaxEngine.GUI namespace FlaxEngine.GUI
{ {
@@ -235,7 +234,7 @@ namespace FlaxEngine.GUI
Render2D.FillRectangle(new Rectangle(1.1f, 1.1f, Width - 2, Height - 2), style.Background); Render2D.FillRectangle(new Rectangle(1.1f, 1.1f, Width - 2, Height - 2), style.Background);
// Tooltip text // Tooltip text
Render2D.DrawText( FallbackTextUtils.DrawText(
style.FontMedium, style.FontMedium,
_currentText, _currentText,
GetClientArea(), GetClientArea(),