mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-12 13:28:33 +00:00
commit
faa21438b8
@ -43,9 +43,9 @@
|
||||
<PackageReference Include="LiteDB" Version="5.0.16" />
|
||||
<PackageReference Include="McMaster.NETCore.Plugins" Version="1.4.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.45" />
|
||||
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.45" />
|
||||
<PackageReference Include="RGB.NET.Presets" Version="2.0.0-prerelease.45" />
|
||||
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.53" />
|
||||
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.53" />
|
||||
<PackageReference Include="RGB.NET.Presets" Version="2.0.0-prerelease.53" />
|
||||
<PackageReference Include="Serilog" Version="2.12.0" />
|
||||
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
|
||||
<PackageReference Include="Serilog.Sinks.Debug" Version="2.0.0" />
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using System.Buffers;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using Artemis.Core.SkiaSharp;
|
||||
using RGB.NET.Core;
|
||||
@ -56,31 +56,12 @@ public sealed class SKTexture : PixelTexture<byte>, IDisposable
|
||||
if (skRectI.Width <= 0 || skRectI.Height <= 0)
|
||||
return Color.Transparent;
|
||||
|
||||
int bufferSize = skRectI.Width * skRectI.Height * DATA_PER_PIXEL;
|
||||
if (bufferSize <= STACK_ALLOC_LIMIT)
|
||||
{
|
||||
Span<byte> buffer = stackalloc byte[bufferSize];
|
||||
GetRegionData(skRectI.Left, skRectI.Top, skRectI.Width, skRectI.Height, buffer);
|
||||
SamplerInfo<byte> samplerInfo = new(skRectI.Left, skRectI.Top, skRectI.Width, skRectI.Height, Stride, DataPerPixel, Data);
|
||||
|
||||
Span<byte> pixelData = stackalloc byte[DATA_PER_PIXEL];
|
||||
Sampler.Sample(new SamplerInfo<byte>(skRectI.Width, skRectI.Height, buffer), pixelData);
|
||||
Span<byte> pixelData = stackalloc byte[DATA_PER_PIXEL];
|
||||
Sampler.Sample(samplerInfo, pixelData);
|
||||
|
||||
return GetColor(pixelData);
|
||||
}
|
||||
else
|
||||
{
|
||||
byte[] rent = ArrayPool<byte>.Shared.Rent(bufferSize);
|
||||
|
||||
Span<byte> buffer = new Span<byte>(rent).Slice(0, bufferSize);
|
||||
GetRegionData(skRectI.Left, skRectI.Top, skRectI.Width, skRectI.Height, buffer);
|
||||
|
||||
Span<byte> pixelData = stackalloc byte[DATA_PER_PIXEL];
|
||||
Sampler.Sample(new SamplerInfo<byte>(skRectI.Width, skRectI.Height, buffer), pixelData);
|
||||
|
||||
ArrayPool<byte>.Shared.Return(rent);
|
||||
|
||||
return GetColor(pixelData);
|
||||
}
|
||||
return GetColor(pixelData);
|
||||
}
|
||||
|
||||
private void ReleaseUnmanagedResources()
|
||||
@ -106,7 +87,6 @@ public sealed class SKTexture : PixelTexture<byte>, IDisposable
|
||||
|
||||
#region Constants
|
||||
|
||||
private const int STACK_ALLOC_LIMIT = 1024;
|
||||
private const int DATA_PER_PIXEL = 4;
|
||||
|
||||
#endregion
|
||||
@ -128,10 +108,8 @@ public sealed class SKTexture : PixelTexture<byte>, IDisposable
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Color GetColor(in ReadOnlySpan<byte> pixel)
|
||||
{
|
||||
return new Color(pixel[2], pixel[1], pixel[0]);
|
||||
}
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
protected override Color GetColor(in ReadOnlySpan<byte> pixel) => new(pixel[2], pixel[1], pixel[0]);
|
||||
|
||||
/// <inheritdoc />
|
||||
public override Color this[in Rectangle rectangle] => Color.Transparent;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
<PackageReference Include="Material.Icons.Avalonia" Version="2.0.0-preview3" />
|
||||
<PackageReference Include="ReactiveUI" Version="18.4.26" />
|
||||
<PackageReference Include="ReactiveUI.Validation" Version="3.1.7" />
|
||||
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.45" />
|
||||
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.53" />
|
||||
<PackageReference Include="SkiaSharp" Version="2.88.3" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@ -33,8 +33,8 @@
|
||||
<PackageReference Include="Octopus.Octodiff" Version="2.0.261" />
|
||||
<PackageReference Include="ReactiveUI" Version="18.4.26" />
|
||||
<PackageReference Include="ReactiveUI.Validation" Version="3.1.7" />
|
||||
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.45" />
|
||||
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.45" />
|
||||
<PackageReference Include="RGB.NET.Core" Version="2.0.0-prerelease.53" />
|
||||
<PackageReference Include="RGB.NET.Layout" Version="2.0.0-prerelease.53" />
|
||||
<PackageReference Include="SkiaSharp" Version="2.88.3" />
|
||||
<PackageReference Include="Splat.DryIoc" Version="14.6.8" />
|
||||
</ItemGroup>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user