mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-22 12:58:33 +01:00
added GenericFont compatibility for FontStashSharp
This commit is contained in:
parent
6900da9858
commit
dda827b985
6 changed files with 91 additions and 4 deletions
74
MLEM.Extended/Font/GenericStashFont.cs
Normal file
74
MLEM.Extended/Font/GenericStashFont.cs
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
using System.Text;
|
||||||
|
using FontStashSharp;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using MLEM.Extensions;
|
||||||
|
using MLEM.Font;
|
||||||
|
|
||||||
|
namespace MLEM.Extended.Font {
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public class GenericStashFont : GenericFont {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="SpriteFontBase"/> that is being wrapped by this generic font
|
||||||
|
/// </summary>
|
||||||
|
public readonly SpriteFontBase Font;
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override GenericFont Bold { get; }
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override GenericFont Italic { get; }
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override float LineHeight { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new generic font using <see cref="SpriteFontBase"/>.
|
||||||
|
/// Optionally, a bold and italic version of the font can be supplied.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="font">The font to wrap</param>
|
||||||
|
/// <param name="bold">A bold version of the font</param>
|
||||||
|
/// <param name="italic">An italic version of the font</param>
|
||||||
|
public GenericStashFont(SpriteFontBase font, SpriteFontBase bold = null, SpriteFontBase italic = null) {
|
||||||
|
this.Font = font;
|
||||||
|
// SpriteFontBase provides no line height, so we measure the height of a new line
|
||||||
|
this.LineHeight = font.MeasureString("\n").Y;
|
||||||
|
this.Bold = bold != null ? new GenericStashFont(bold) : this;
|
||||||
|
this.Italic = italic != null ? new GenericStashFont(italic) : this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void DrawString(SpriteBatch batch, string text, Vector2 position, Color color) {
|
||||||
|
this.Font.DrawText(batch, text, position, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void DrawString(SpriteBatch batch, string text, Vector2 position, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth) {
|
||||||
|
this.Font.DrawText(batch, text, position, color, new Vector2(scale), rotation, origin, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void DrawString(SpriteBatch batch, string text, Vector2 position, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth) {
|
||||||
|
this.Font.DrawText(batch, text, position, color, scale, rotation, origin, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void DrawString(SpriteBatch batch, StringBuilder text, Vector2 position, Color color) {
|
||||||
|
this.Font.DrawText(batch, text, position, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void DrawString(SpriteBatch batch, StringBuilder text, Vector2 position, Color color, float rotation, Vector2 origin, float scale, SpriteEffects effects, float layerDepth) {
|
||||||
|
this.Font.DrawText(batch, text, position, color, new Vector2(scale), rotation, origin, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void DrawString(SpriteBatch batch, StringBuilder text, Vector2 position, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth) {
|
||||||
|
this.Font.DrawText(batch, text, position, color, scale, rotation, origin, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override Vector2 MeasureChar(char c) {
|
||||||
|
return this.Font.MeasureString(c.ToCachedString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Authors>Ellpeck</Authors>
|
<Authors>Ellpeck</Authors>
|
||||||
<Description>MLEM Library for Extending MonoGame extension that ties in with MonoGame.Extended</Description>
|
<Description>MLEM Library for Extending MonoGame extension that ties in with MonoGame.Extended and other MonoGame libraries</Description>
|
||||||
<PackageTags>monogame ellpeck mlem utility extensions monogame.extended extended</PackageTags>
|
<PackageTags>monogame ellpeck mlem utility extensions monogame.extended extended</PackageTags>
|
||||||
<PackageProjectUrl>https://mlem.ellpeck.de/</PackageProjectUrl>
|
<PackageProjectUrl>https://mlem.ellpeck.de/</PackageProjectUrl>
|
||||||
<RepositoryUrl>https://github.com/Ellpeck/MLEM</RepositoryUrl>
|
<RepositoryUrl>https://github.com/Ellpeck/MLEM</RepositoryUrl>
|
||||||
|
@ -21,6 +21,9 @@
|
||||||
<PackageReference Include="MonoGame.Extended.Tiled" Version="3.8.0">
|
<PackageReference Include="MonoGame.Extended.Tiled" Version="3.8.0">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="FontStashSharp.MonoGame" Version="0.9.2">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
<PackageReference Include="MonoGame.Framework.Portable" Version="3.7.1.189">
|
<PackageReference Include="MonoGame.Framework.Portable" Version="3.7.1.189">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
|
|
||||||
#---------------------------------- Content ---------------------------------#
|
#---------------------------------- Content ---------------------------------#
|
||||||
|
|
||||||
|
#begin Fonts/Cadman_Roman.otf
|
||||||
|
/copy:Fonts/Cadman_Roman.otf
|
||||||
|
|
||||||
#begin Fonts/Regular.fnt
|
#begin Fonts/Regular.fnt
|
||||||
/importer:BitmapFontImporter
|
/importer:BitmapFontImporter
|
||||||
/processor:BitmapFontProcessor
|
/processor:BitmapFontProcessor
|
||||||
|
|
BIN
Sandbox/Content/Fonts/Cadman_Roman.otf
Normal file
BIN
Sandbox/Content/Fonts/Cadman_Roman.otf
Normal file
Binary file not shown.
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using FontStashSharp;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
using Microsoft.Xna.Framework.Input;
|
using Microsoft.Xna.Framework.Input;
|
||||||
|
@ -10,6 +11,7 @@ using MLEM.Data.Content;
|
||||||
using MLEM.Extended.Font;
|
using MLEM.Extended.Font;
|
||||||
using MLEM.Extended.Tiled;
|
using MLEM.Extended.Tiled;
|
||||||
using MLEM.Extensions;
|
using MLEM.Extensions;
|
||||||
|
using MLEM.Font;
|
||||||
using MLEM.Formatting;
|
using MLEM.Formatting;
|
||||||
using MLEM.Formatting.Codes;
|
using MLEM.Formatting.Codes;
|
||||||
using MLEM.Input;
|
using MLEM.Input;
|
||||||
|
@ -68,8 +70,11 @@ namespace Sandbox {
|
||||||
textureData[textureData.FromIndex(textureData.ToIndex(25, 9))] = Color.Yellow;
|
textureData[textureData.FromIndex(textureData.ToIndex(25, 9))] = Color.Yellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var system = new FontSystem(this.GraphicsDevice, 1024, 1024);
|
||||||
|
system.AddFont(File.ReadAllBytes("Content/Fonts/Cadman_Roman.otf"));
|
||||||
//var font = new GenericSpriteFont(LoadContent<SpriteFont>("Fonts/TestFont"));
|
//var font = new GenericSpriteFont(LoadContent<SpriteFont>("Fonts/TestFont"));
|
||||||
var font = new GenericBitmapFont(LoadContent<BitmapFont>("Fonts/Regular"));
|
//var font = new GenericBitmapFont(LoadContent<BitmapFont>("Fonts/Regular"));
|
||||||
|
var font = new GenericStashFont(system.GetFont(32));
|
||||||
this.UiSystem.Style = new UntexturedStyle(this.SpriteBatch) {
|
this.UiSystem.Style = new UntexturedStyle(this.SpriteBatch) {
|
||||||
Font = font,
|
Font = font,
|
||||||
TextScale = 0.1F,
|
TextScale = 0.1F,
|
||||||
|
@ -124,8 +129,9 @@ namespace Sandbox {
|
||||||
var res = this.Content.LoadJson<Test>("Test");
|
var res = this.Content.LoadJson<Test>("Test");
|
||||||
Console.WriteLine("The res is " + res);
|
Console.WriteLine("The res is " + res);
|
||||||
|
|
||||||
/*this.OnDraw += (game, time) => {
|
this.OnDraw += (game, time) => {
|
||||||
this.SpriteBatch.Begin();
|
this.SpriteBatch.Begin();
|
||||||
|
system.GetFont(32).DrawText(this.SpriteBatch, "Left Aligned\nover multiple lines", new Vector2(640, 0), Color.White);
|
||||||
font.DrawString(this.SpriteBatch, "Left Aligned\nover multiple lines", new Vector2(640, 0), TextAlign.Left, Color.White);
|
font.DrawString(this.SpriteBatch, "Left Aligned\nover multiple lines", new Vector2(640, 0), TextAlign.Left, Color.White);
|
||||||
font.DrawString(this.SpriteBatch, "Center Aligned\nover multiple lines", new Vector2(640, 100), TextAlign.Center, Color.White);
|
font.DrawString(this.SpriteBatch, "Center Aligned\nover multiple lines", new Vector2(640, 100), TextAlign.Center, Color.White);
|
||||||
font.DrawString(this.SpriteBatch, "Right Aligned\nover multiple lines", new Vector2(640, 200), TextAlign.Right, Color.White);
|
font.DrawString(this.SpriteBatch, "Right Aligned\nover multiple lines", new Vector2(640, 200), TextAlign.Right, Color.White);
|
||||||
|
@ -138,7 +144,7 @@ namespace Sandbox {
|
||||||
font.DrawString(this.SpriteBatch, font.TruncateString("This is a very long string", 200, 1, true), new Vector2(200, 500), Color.White);
|
font.DrawString(this.SpriteBatch, font.TruncateString("This is a very long string", 200, 1, true), new Vector2(200, 500), Color.White);
|
||||||
font.DrawString(this.SpriteBatch, font.TruncateString("This is a very long string", 200, 1, true, "..."), new Vector2(200, 550), Color.White);
|
font.DrawString(this.SpriteBatch, font.TruncateString("This is a very long string", 200, 1, true, "..."), new Vector2(200, 550), Color.White);
|
||||||
this.SpriteBatch.End();
|
this.SpriteBatch.End();
|
||||||
};*/
|
};
|
||||||
|
|
||||||
var sc = 4;
|
var sc = 4;
|
||||||
var formatter = new TextFormatter();
|
var formatter = new TextFormatter();
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
<PackageReference Include="MonoGame.Extended.Content.Pipeline" Version="3.7.0" />
|
<PackageReference Include="MonoGame.Extended.Content.Pipeline" Version="3.7.0" />
|
||||||
<PackageReference Include="MonoGame.Extended.Tiled" Version="3.7.0" />
|
<PackageReference Include="MonoGame.Extended.Tiled" Version="3.7.0" />
|
||||||
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.0.1641" />
|
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.0.1641" />
|
||||||
|
<PackageReference Include="FontStashSharp.MonoGame" Version="0.9.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
Loading…
Reference in a new issue