Fix null reference exception in TextCommand.
This commit is contained in:
parent
87ab64f727
commit
78f06a2359
@ -7,10 +7,11 @@ namespace Dashboard.Drawing
|
|||||||
{
|
{
|
||||||
public class TextExtension : DrawExtension
|
public class TextExtension : DrawExtension
|
||||||
{
|
{
|
||||||
public TextCommand TextCommand { get; } = new TextCommand();
|
public TextCommand TextCommand { get; }
|
||||||
|
|
||||||
private TextExtension() : base("DB_Text", new [] { FontExtension.Instance, BrushExtension.Instance })
|
private TextExtension() : base("DB_Text", new [] { FontExtension.Instance, BrushExtension.Instance })
|
||||||
{
|
{
|
||||||
|
TextCommand = new TextCommand(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly TextExtension Instance = new TextExtension();
|
public static readonly TextExtension Instance = new TextExtension();
|
||||||
@ -19,12 +20,17 @@ namespace Dashboard.Drawing
|
|||||||
public class TextCommand : IDrawCommand<TextCommandArgs>
|
public class TextCommand : IDrawCommand<TextCommandArgs>
|
||||||
{
|
{
|
||||||
public string Name { get; } = "Text";
|
public string Name { get; } = "Text";
|
||||||
public IDrawExtension Extension { get; } = TextExtension.Instance;
|
public IDrawExtension Extension { get; }
|
||||||
public int Length { get; } = -1;
|
public int Length { get; } = -1;
|
||||||
|
|
||||||
|
public TextCommand(TextExtension ext)
|
||||||
|
{
|
||||||
|
Extension = ext;
|
||||||
|
}
|
||||||
|
|
||||||
public int WriteParams(DrawQueue queue, TextCommandArgs obj, Span<byte> param)
|
public int WriteParams(DrawQueue queue, TextCommandArgs obj, Span<byte> param)
|
||||||
{
|
{
|
||||||
int size = Unsafe.SizeOf<Header>() + obj.Text.Length + sizeof(char);
|
int size = Unsafe.SizeOf<Header>() + obj.Text.Length * sizeof(char) + sizeof(char);
|
||||||
|
|
||||||
if (param.Length < size)
|
if (param.Length < size)
|
||||||
return size;
|
return size;
|
||||||
@ -52,7 +58,7 @@ namespace Dashboard.Drawing
|
|||||||
Header header = MemoryMarshal.Cast<byte, Header>(param[0..Unsafe.SizeOf<Header>()])[0];
|
Header header = MemoryMarshal.Cast<byte, Header>(param[0..Unsafe.SizeOf<Header>()])[0];
|
||||||
ReadOnlySpan<char> text = MemoryMarshal.Cast<byte, char>(param[Unsafe.SizeOf<Header>()..]);
|
ReadOnlySpan<char> text = MemoryMarshal.Cast<byte, char>(param[Unsafe.SizeOf<Header>()..]);
|
||||||
|
|
||||||
if (header.BorderBrush == -1 || header.BorderRadius == 0)
|
if (header.BorderBrush != -1 && header.BorderRadius != 0)
|
||||||
{
|
{
|
||||||
return new TextCommandArgs(
|
return new TextCommandArgs(
|
||||||
(IFont)queue.Resources[header.Font],
|
(IFont)queue.Resources[header.Font],
|
||||||
|
Loading…
Reference in New Issue
Block a user