mirror of
https://github.com/DarthAffe/RGB.NET.git
synced 2025-12-13 01:58:30 +00:00
Added more basic stuff
This commit is contained in:
parent
87e4016381
commit
4e001d1087
20
RGB.NET.Core/Brushes/BrushCalculationMode.cs
Normal file
20
RGB.NET.Core/Brushes/BrushCalculationMode.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using RGB.NET.Core.Devices;
|
||||||
|
|
||||||
|
namespace RGB.NET.Core.Brushes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Contains a list of all brush calculation modes.
|
||||||
|
/// </summary>
|
||||||
|
public enum BrushCalculationMode
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The calculation <see cref="Rectangle"/> for <see cref="IBrush"/> will be the rectangle around the <see cref="ILedGroup"/> the <see cref="IBrush"/> is applied to.
|
||||||
|
/// </summary>
|
||||||
|
Relative,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The calculation <see cref="Rectangle"/> for <see cref="IBrush"/> will always be the rectangle completly containing all affected <see cref="IRGBDevice"/>.
|
||||||
|
/// </summary>
|
||||||
|
Absolute
|
||||||
|
}
|
||||||
|
}
|
||||||
47
RGB.NET.Core/Brushes/BrushRenderTarget.cs
Normal file
47
RGB.NET.Core/Brushes/BrushRenderTarget.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// ReSharper disable MemberCanBePrivate.Global
|
||||||
|
// ReSharper disable UnusedAutoPropertyAccessor.Global
|
||||||
|
|
||||||
|
namespace RGB.NET.Core.Brushes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a single target of a brush render.
|
||||||
|
/// </summary>
|
||||||
|
public class BrushRenderTarget
|
||||||
|
{
|
||||||
|
#region Properties & Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the target-<see cref="Core.Led"/>.
|
||||||
|
/// </summary>
|
||||||
|
public Led Led { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the <see cref="Core.Rectangle"/> representing the area to render the target-<see cref="Core.Led"/>.
|
||||||
|
/// </summary>
|
||||||
|
public Rectangle Rectangle { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the <see cref="Core.Point"/> representing the position to render the target-<see cref="Core.Led"/>.
|
||||||
|
/// </summary>
|
||||||
|
public Point Point { get; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="BrushRenderTarget"/> class.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="led">The target-<see cref="Core.Led"/>.</param>
|
||||||
|
/// <param name="rectangle">The <see cref="Core.Rectangle"/> representing the area to render the target-<see cref="Core.Led"/>.</param>
|
||||||
|
public BrushRenderTarget(Led led, Rectangle rectangle)
|
||||||
|
{
|
||||||
|
this.Led = led;
|
||||||
|
this.Rectangle = rectangle;
|
||||||
|
|
||||||
|
this.Point = rectangle.Center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
58
RGB.NET.Core/Brushes/IBrush.cs
Normal file
58
RGB.NET.Core/Brushes/IBrush.cs
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
// ReSharper disable UnusedMemberInSuper.Global
|
||||||
|
// ReSharper disable UnusedMember.Global
|
||||||
|
// ReSharper disable ReturnTypeCanBeEnumerable.Global
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using RGB.NET.Core.ColorCorrection;
|
||||||
|
using RGB.NET.Core.Effects;
|
||||||
|
|
||||||
|
namespace RGB.NET.Core.Brushes
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a basic brush.
|
||||||
|
/// </summary>
|
||||||
|
public interface IBrush : IEffectTarget<IBrush>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the calculation mode used for the rectangle/points used for color-selection in brushes.
|
||||||
|
/// </summary>
|
||||||
|
BrushCalculationMode BrushCalculationMode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the overall percentage brightness of the <see cref="IBrush"/>.
|
||||||
|
/// </summary>
|
||||||
|
float Brightness { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the overall percentage opacity of the <see cref="IBrush"/>.
|
||||||
|
/// </summary>
|
||||||
|
float Opacity { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a list of <see cref="IColorCorrection"/> used to correct the colors of the <see cref="IBrush"/>.
|
||||||
|
/// </summary>
|
||||||
|
IList<IColorCorrection> ColorCorrections { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the <see cref="RenderedRectangle"/> used in the last render pass.
|
||||||
|
/// </summary>
|
||||||
|
Rectangle RenderedRectangle { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a dictionary containing all <see cref="Color"/> for <see cref="BrushRenderTarget"/> calculated in the last render pass.
|
||||||
|
/// </summary>
|
||||||
|
Dictionary<BrushRenderTarget, Color> RenderedTargets { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs the render pass of the <see cref="IBrush"/> and calculates the raw <see cref="Color"/> for all requested <see cref="BrushRenderTarget"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="rectangle">The <see cref="Rectangle"/> in which the brush should be drawn.</param>
|
||||||
|
/// <param name="renderTargets">The <see cref="BrushRenderTarget"/> (keys/points) of which the color should be calculated.</param>
|
||||||
|
void PerformRender(Rectangle rectangle, IEnumerable<BrushRenderTarget> renderTargets);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs the finalize pass of the <see cref="IBrush"/> and calculates the final <see cref="ColorCorrections"/> for all previously calculated <see cref="BrushRenderTarget"/>.
|
||||||
|
/// </summary>
|
||||||
|
void PerformFinalize();
|
||||||
|
}
|
||||||
|
}
|
||||||
14
RGB.NET.Core/ColorCorrection/IColorCorrection.cs
Normal file
14
RGB.NET.Core/ColorCorrection/IColorCorrection.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
namespace RGB.NET.Core.ColorCorrection
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a generic color-correction.
|
||||||
|
/// </summary>
|
||||||
|
public interface IColorCorrection
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Applies the <see cref="IColorCorrection"/> to the given <see cref="Color"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="color">The <see cref="Color"/> to correct.</param>
|
||||||
|
void ApplyTo(Color color);
|
||||||
|
}
|
||||||
|
}
|
||||||
64
RGB.NET.Core/Effects/IEffect.cs
Normal file
64
RGB.NET.Core/Effects/IEffect.cs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
// ReSharper disable UnusedMember.Global
|
||||||
|
// ReSharper disable UnusedMemberInSuper.Global
|
||||||
|
// ReSharper disable UnusedParameter.Global
|
||||||
|
|
||||||
|
using RGB.NET.Core.Devices;
|
||||||
|
|
||||||
|
namespace RGB.NET.Core.Effects
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a basic effect.
|
||||||
|
/// </summary>
|
||||||
|
public interface IEffect
|
||||||
|
{
|
||||||
|
#region Properties & Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets if this <see cref="IEffect"/> has finished all of his work.
|
||||||
|
/// </summary>
|
||||||
|
bool IsDone { get; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates this <see cref="IEffect"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="deltaTime">The elapsed time (in seconds) since the last update.</param>
|
||||||
|
void Update(float deltaTime);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a basic effect.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The type of <see cref="IEffectTarget{T}"/> this effect can be attached to.</typeparam>
|
||||||
|
public interface IEffect<in T> : IEffect
|
||||||
|
where T : IEffectTarget<T>
|
||||||
|
{
|
||||||
|
#region Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if the <see cref="IEffect{T}"/> can be applied to the target object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="target">The <see cref="IEffectTarget{T}"/> this effect is attached to.</param>
|
||||||
|
/// <returns><c>true</c> if the <see cref="IEffectTarget{T}"/> can be attached; otherwise, <c>false</c>.</returns>
|
||||||
|
bool CanBeAppliedTo(T target);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Hook which is called when the <see cref="IEffect{T}"/> is attached to a <see cref="IRGBDevice"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="target">The <see cref="IEffectTarget{T}"/> this effect is attached to.</param>
|
||||||
|
void OnAttach(T target);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Hook which is called when the <see cref="IEffect{T}"/> is detached from a <see cref="IRGBDevice"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="target">The <see cref="IEffectTarget{T}"/> this effect is detached from.</param>
|
||||||
|
void OnDetach(T target);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
33
RGB.NET.Core/Effects/IEffectTarget.cs
Normal file
33
RGB.NET.Core/Effects/IEffectTarget.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// ReSharper disable UnusedMember.Global
|
||||||
|
|
||||||
|
namespace RGB.NET.Core.Effects
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a basic effect-target.
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The type this target represents.</typeparam>
|
||||||
|
public interface IEffectTarget<out T>
|
||||||
|
where T : IEffectTarget<T>
|
||||||
|
{
|
||||||
|
#region Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates all <see cref="IEffect{T}"/> added to this target.
|
||||||
|
/// </summary>
|
||||||
|
void UpdateEffects();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds an <see cref="IEffect{T}"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="effect">The <see cref="IEffect{T}"/> to add.</param>
|
||||||
|
void AddEffect(IEffect<T> effect);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes an <see cref="IEffect{T}"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="effect">The <see cref="IEffect{T}"/> to remove.</param>
|
||||||
|
void RemoveEffect(IEffect<T> effect);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -42,6 +42,12 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Brushes\BrushCalculationMode.cs" />
|
||||||
|
<Compile Include="Brushes\BrushRenderTarget.cs" />
|
||||||
|
<Compile Include="Brushes\IBrush.cs" />
|
||||||
|
<Compile Include="ColorCorrection\IColorCorrection.cs" />
|
||||||
|
<Compile Include="Effects\IEffect.cs" />
|
||||||
|
<Compile Include="Effects\IEffectTarget.cs" />
|
||||||
<Compile Include="ILedId.cs" />
|
<Compile Include="ILedId.cs" />
|
||||||
<Compile Include="MVVM\AbstractBindable.cs" />
|
<Compile Include="MVVM\AbstractBindable.cs" />
|
||||||
<Compile Include="Color.cs" />
|
<Compile Include="Color.cs" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user