Skip to content

Commit

Permalink
Merge pull request #97 from tompazourek/feature/net6-update
Browse files Browse the repository at this point in the history
Use .NET 6 instead of .NET 5, C# 10, VS 2022
  • Loading branch information
tompazourek authored Dec 22, 2021
2 parents 67ff9e8 + 2c017a8 commit 11401fe
Show file tree
Hide file tree
Showing 181 changed files with 8,252 additions and 8,420 deletions.
2 changes: 1 addition & 1 deletion .appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
image: Visual Studio 2019
image: Visual Studio 2022

# Adds "+build.XXX" to MinVer's build metadata
environment:
Expand Down
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"isRoot": true,
"tools": {
"jetbrains.resharper.globaltools": {
"version": "2021.1.3",
"version": "2021.3.1",
"commands": [
"jb"
]
Expand Down
1 change: 1 addition & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ resharper_arguments_style_named_expression_highlighting = none
resharper_arguments_style_string_literal_highlighting = none
resharper_arrange_local_function_body_highlighting = suggestion
resharper_arrange_method_or_operator_body_highlighting = warning
resharper_arrange_namespace_body_highlighting = warning
resharper_arrange_redundant_parentheses_highlighting = hint
resharper_arrange_this_qualifier_highlighting = hint
resharper_arrange_type_member_modifiers_highlighting = hint
Expand Down
2 changes: 1 addition & 1 deletion Colourful.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=Colourful_003A_0020Cleanup/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="Colourful: Cleanup"&gt;&lt;JsInsertSemicolon&gt;True&lt;/JsInsertSemicolon&gt;&lt;FormatAttributeQuoteDescriptor&gt;True&lt;/FormatAttributeQuoteDescriptor&gt;&lt;CorrectVariableKindsDescriptor&gt;True&lt;/CorrectVariableKindsDescriptor&gt;&lt;VariablesToInnerScopesDescriptor&gt;True&lt;/VariablesToInnerScopesDescriptor&gt;&lt;StringToTemplatesDescriptor&gt;True&lt;/StringToTemplatesDescriptor&gt;&lt;JsReformatCode&gt;True&lt;/JsReformatCode&gt;&lt;JsFormatDocComments&gt;True&lt;/JsFormatDocComments&gt;&lt;RemoveRedundantQualifiersTs&gt;True&lt;/RemoveRedundantQualifiersTs&gt;&lt;OptimizeImportsTs&gt;True&lt;/OptimizeImportsTs&gt;&lt;OptimizeReferenceCommentsTs&gt;True&lt;/OptimizeReferenceCommentsTs&gt;&lt;PublicModifierStyleTs&gt;True&lt;/PublicModifierStyleTs&gt;&lt;ExplicitAnyTs&gt;True&lt;/ExplicitAnyTs&gt;&lt;TypeAnnotationStyleTs&gt;True&lt;/TypeAnnotationStyleTs&gt;&lt;RelativePathStyleTs&gt;True&lt;/RelativePathStyleTs&gt;&lt;AsInsteadOfCastTs&gt;True&lt;/AsInsteadOfCastTs&gt;&lt;HtmlReformatCode&gt;True&lt;/HtmlReformatCode&gt;&lt;AspOptimizeRegisterDirectives&gt;True&lt;/AspOptimizeRegisterDirectives&gt;&lt;XMLReformatCode&gt;True&lt;/XMLReformatCode&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="False" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeArgumentsStyle="False" ArrangeCodeBodyStyle="True" ArrangeVarStyle="True" /&gt;&lt;RemoveCodeRedundanciesVB&gt;True&lt;/RemoveCodeRedundanciesVB&gt;&lt;CssAlphabetizeProperties&gt;True&lt;/CssAlphabetizeProperties&gt;&lt;VBOptimizeImports&gt;True&lt;/VBOptimizeImports&gt;&lt;VBShortenReferences&gt;True&lt;/VBShortenReferences&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSArrangeQualifiers&gt;True&lt;/CSArrangeQualifiers&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;CssReformatCode&gt;True&lt;/CssReformatCode&gt;&lt;VBReformatCode&gt;True&lt;/VBReformatCode&gt;&lt;VBFormatDocComments&gt;True&lt;/VBFormatDocComments&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;EmbraceInRegion&gt;False&lt;/EmbraceInRegion&gt;&lt;RegionName&gt;&lt;/RegionName&gt;&lt;/CSOptimizeUsings&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSharpFormatDocComments&gt;True&lt;/CSharpFormatDocComments&gt;&lt;/Profile&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=Colourful_003A_0020Cleanup/@EntryIndexedValue">&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;Profile name="Colourful: Cleanup"&gt;&lt;JsInsertSemicolon&gt;True&lt;/JsInsertSemicolon&gt;&lt;FormatAttributeQuoteDescriptor&gt;True&lt;/FormatAttributeQuoteDescriptor&gt;&lt;CorrectVariableKindsDescriptor&gt;True&lt;/CorrectVariableKindsDescriptor&gt;&lt;VariablesToInnerScopesDescriptor&gt;True&lt;/VariablesToInnerScopesDescriptor&gt;&lt;StringToTemplatesDescriptor&gt;True&lt;/StringToTemplatesDescriptor&gt;&lt;JsReformatCode&gt;True&lt;/JsReformatCode&gt;&lt;JsFormatDocComments&gt;True&lt;/JsFormatDocComments&gt;&lt;RemoveRedundantQualifiersTs&gt;True&lt;/RemoveRedundantQualifiersTs&gt;&lt;OptimizeImportsTs&gt;True&lt;/OptimizeImportsTs&gt;&lt;OptimizeReferenceCommentsTs&gt;True&lt;/OptimizeReferenceCommentsTs&gt;&lt;PublicModifierStyleTs&gt;True&lt;/PublicModifierStyleTs&gt;&lt;ExplicitAnyTs&gt;True&lt;/ExplicitAnyTs&gt;&lt;TypeAnnotationStyleTs&gt;True&lt;/TypeAnnotationStyleTs&gt;&lt;RelativePathStyleTs&gt;True&lt;/RelativePathStyleTs&gt;&lt;AsInsteadOfCastTs&gt;True&lt;/AsInsteadOfCastTs&gt;&lt;HtmlReformatCode&gt;True&lt;/HtmlReformatCode&gt;&lt;AspOptimizeRegisterDirectives&gt;True&lt;/AspOptimizeRegisterDirectives&gt;&lt;XMLReformatCode&gt;True&lt;/XMLReformatCode&gt;&lt;CSCodeStyleAttributes ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeCodeBodyStyle="True" ArrangeVarStyle="True" ArrangeNamespaces="True" /&gt;&lt;RemoveCodeRedundanciesVB&gt;True&lt;/RemoveCodeRedundanciesVB&gt;&lt;CssAlphabetizeProperties&gt;True&lt;/CssAlphabetizeProperties&gt;&lt;VBOptimizeImports&gt;True&lt;/VBOptimizeImports&gt;&lt;VBShortenReferences&gt;True&lt;/VBShortenReferences&gt;&lt;CSUseAutoProperty&gt;True&lt;/CSUseAutoProperty&gt;&lt;CSMakeFieldReadonly&gt;True&lt;/CSMakeFieldReadonly&gt;&lt;CSMakeAutoPropertyGetOnly&gt;True&lt;/CSMakeAutoPropertyGetOnly&gt;&lt;CSArrangeQualifiers&gt;True&lt;/CSArrangeQualifiers&gt;&lt;CSFixBuiltinTypeReferences&gt;True&lt;/CSFixBuiltinTypeReferences&gt;&lt;CssReformatCode&gt;True&lt;/CssReformatCode&gt;&lt;VBReformatCode&gt;True&lt;/VBReformatCode&gt;&lt;VBFormatDocComments&gt;True&lt;/VBFormatDocComments&gt;&lt;CSOptimizeUsings&gt;&lt;OptimizeUsings&gt;True&lt;/OptimizeUsings&gt;&lt;/CSOptimizeUsings&gt;&lt;CSShortenReferences&gt;True&lt;/CSShortenReferences&gt;&lt;CSReformatCode&gt;True&lt;/CSReformatCode&gt;&lt;CSharpFormatDocComments&gt;True&lt;/CSharpFormatDocComments&gt;&lt;/Profile&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue">Colourful: Cleanup</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CIE/@EntryIndexedValue">CIE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CIEDE/@EntryIndexedValue">CIEDE</s:String>
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ PM> Install-Package Colourful

Colourful is CLS Compliant (to allow use in VB.NET etc.) and is built for these target frameworks:

- .NET 5
- .NET 6
- .NET Framework 4.5
- .NET Standard 2.0
- .NET Standard 1.1
Expand Down
6 changes: 6 additions & 0 deletions global.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"sdk": {
"version": "6.0.100",
"rollForward": "latestFeature"
}
}
10 changes: 3 additions & 7 deletions src/Colourful/Colourful.csproj
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup Label="Basic build">
<TargetFrameworks>netstandard1.1;netstandard2.0;net45;net5.0</TargetFrameworks>
<LangVersion>9.0</LangVersion>
<TargetFrameworks>netstandard1.1;netstandard2.0;net45;net6.0</TargetFrameworks>
<LangVersion>10</LangVersion>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<Deterministic>true</Deterministic>
</PropertyGroup>
Expand Down Expand Up @@ -41,11 +41,7 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="5.0.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0">
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
Expand Down
1 change: 0 additions & 1 deletion src/Colourful/Colourful.csproj.DotSettings
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp72</s:String>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=colordifference/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=colors/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=colorspaces/@EntryIndexedValue">True</s:Boolean>
Expand Down
107 changes: 53 additions & 54 deletions src/Colourful/Common/ConverterBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,73 +2,72 @@
using System.Collections.Generic;
using Colourful.Internals;

namespace Colourful
namespace Colourful;

/// <summary>
/// Primary API to be used to create color converters. It provides a fluent interface.
/// </summary>
public class ConverterBuilder : IFluentConverterBuilder
{
private readonly IConverterAbstractFactory _converterAbstractFactory;

/// <summary>
/// Primary API to be used to create color converters. It provides a fluent interface.
/// If you want to customize the conversion process, provide your own list of conversion strategies.
/// Otherwise, use the parameterless constructor that uses <see cref="ConversionStrategies.GetDefault" />.
/// </summary>
public class ConverterBuilder : IFluentConverterBuilder
{
private readonly IConverterAbstractFactory _converterAbstractFactory;
public ConverterBuilder(IEnumerable<IConversionStrategy> conversionStrategies) => _converterAbstractFactory = new ConverterAbstractFactory(conversionStrategies ?? throw new ArgumentNullException(nameof(conversionStrategies)));

/// <summary>
/// If you want to customize the conversion process, provide your own list of conversion strategies.
/// Otherwise, use the parameterless constructor that uses <see cref="ConversionStrategies.GetDefault" />.
/// </summary>
public ConverterBuilder(IEnumerable<IConversionStrategy> conversionStrategies) => _converterAbstractFactory = new ConverterAbstractFactory(conversionStrategies ?? throw new ArgumentNullException(nameof(conversionStrategies)));
/// <summary>
/// Creates a builder with all the defaults (all built-in strategies).
/// </summary>
/// <param name="lmsTransformationMatrix">Optionally pick LMS transformation matrix (<see cref="LMSTransformationMatrix" />) used for LMS-XYZ conversion and chromatic adaptation for color spaces with different white points. If empty, <see cref="LMSTransformationMatrix.Bradford" /> will be used.</param>
public ConverterBuilder(double[,] lmsTransformationMatrix = null) : this(ConversionStrategies.GetDefault(lmsTransformationMatrix))
{
}

/// <summary>
/// Creates a builder with all the defaults (all built-in strategies).
/// </summary>
/// <param name="lmsTransformationMatrix">Optionally pick LMS transformation matrix (<see cref="LMSTransformationMatrix" />) used for LMS-XYZ conversion and chromatic adaptation for color spaces with different white points. If empty, <see cref="LMSTransformationMatrix.Bradford" /> will be used.</param>
public ConverterBuilder(double[,] lmsTransformationMatrix = null) : this(ConversionStrategies.GetDefault(lmsTransformationMatrix))
{
}
/// <summary>
/// Creates a builder with all the defaults (all built-in strategies with default settings).
/// </summary>
public ConverterBuilder() : this(ConversionStrategies.GetDefault())
{
}

/// <summary>
/// Creates a builder with all the defaults (all built-in strategies with default settings).
/// </summary>
public ConverterBuilder() : this(ConversionStrategies.GetDefault())
{
}
/// <inheritdoc />
public IFluentConverterBuilderFrom<TSource> From<TSource>(IConversionMetadata sourceMetadata) where TSource : IColorSpace
=> new FluentFrom<TSource>(_converterAbstractFactory, sourceMetadata ?? throw new ArgumentNullException(nameof(sourceMetadata)));

/// <inheritdoc />
public IFluentConverterBuilderFrom<TSource> From<TSource>(IConversionMetadata sourceMetadata) where TSource : IColorSpace
=> new FluentFrom<TSource>(_converterAbstractFactory, sourceMetadata ?? throw new ArgumentNullException(nameof(sourceMetadata)));
private class FluentFrom<TSource> : IFluentConverterBuilderFrom<TSource>
where TSource : IColorSpace
{
private readonly IConverterAbstractFactory _converterAbstractFactory;
private readonly IConversionMetadata _sourceMetadata;

private class FluentFrom<TSource> : IFluentConverterBuilderFrom<TSource>
where TSource : IColorSpace
public FluentFrom(IConverterAbstractFactory converterAbstractFactory, IConversionMetadata sourceMetadata)
{
private readonly IConverterAbstractFactory _converterAbstractFactory;
private readonly IConversionMetadata _sourceMetadata;

public FluentFrom(IConverterAbstractFactory converterAbstractFactory, IConversionMetadata sourceMetadata)
{
_converterAbstractFactory = converterAbstractFactory ?? throw new ArgumentNullException(nameof(converterAbstractFactory));
_sourceMetadata = sourceMetadata ?? throw new ArgumentNullException(nameof(sourceMetadata));
}

public IFluentConverterBuilderFromTo<TSource, TTarget> To<TTarget>(IConversionMetadata targetMetadata) where TTarget : IColorSpace
=> new FluentFromTo<TSource, TTarget>(_converterAbstractFactory, _sourceMetadata, targetMetadata ?? throw new ArgumentNullException(nameof(targetMetadata)));
_converterAbstractFactory = converterAbstractFactory ?? throw new ArgumentNullException(nameof(converterAbstractFactory));
_sourceMetadata = sourceMetadata ?? throw new ArgumentNullException(nameof(sourceMetadata));
}

private class FluentFromTo<TSource, TTarget> : IFluentConverterBuilderFromTo<TSource, TTarget>
where TSource : IColorSpace
where TTarget : IColorSpace
{
private readonly IConverterAbstractFactory _converterAbstractFactory;
private readonly IConversionMetadata _sourceMetadata;
private readonly IConversionMetadata _targetMetadata;
public IFluentConverterBuilderFromTo<TSource, TTarget> To<TTarget>(IConversionMetadata targetMetadata) where TTarget : IColorSpace
=> new FluentFromTo<TSource, TTarget>(_converterAbstractFactory, _sourceMetadata, targetMetadata ?? throw new ArgumentNullException(nameof(targetMetadata)));
}

public FluentFromTo(IConverterAbstractFactory converterAbstractFactory, IConversionMetadata sourceMetadata, IConversionMetadata targetMetadata)
{
_converterAbstractFactory = converterAbstractFactory ?? throw new ArgumentNullException(nameof(converterAbstractFactory));
_sourceMetadata = sourceMetadata ?? throw new ArgumentNullException(nameof(sourceMetadata));
_targetMetadata = targetMetadata ?? throw new ArgumentNullException(nameof(targetMetadata));
}
private class FluentFromTo<TSource, TTarget> : IFluentConverterBuilderFromTo<TSource, TTarget>
where TSource : IColorSpace
where TTarget : IColorSpace
{
private readonly IConverterAbstractFactory _converterAbstractFactory;
private readonly IConversionMetadata _sourceMetadata;
private readonly IConversionMetadata _targetMetadata;

public IColorConverter<TSource, TTarget> Build()
=> _converterAbstractFactory.CreateConverter<TSource, TTarget>(_sourceMetadata, _targetMetadata);
public FluentFromTo(IConverterAbstractFactory converterAbstractFactory, IConversionMetadata sourceMetadata, IConversionMetadata targetMetadata)
{
_converterAbstractFactory = converterAbstractFactory ?? throw new ArgumentNullException(nameof(converterAbstractFactory));
_sourceMetadata = sourceMetadata ?? throw new ArgumentNullException(nameof(sourceMetadata));
_targetMetadata = targetMetadata ?? throw new ArgumentNullException(nameof(targetMetadata));
}

public IColorConverter<TSource, TTarget> Build()
=> _converterAbstractFactory.CreateConverter<TSource, TTarget>(_sourceMetadata, _targetMetadata);
}
}
29 changes: 14 additions & 15 deletions src/Colourful/Common/IFluentConverterBuilder.cs
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
using Colourful.Internals;

namespace Colourful
namespace Colourful;

/// <summary>
/// Fluent interface for <see cref="ConverterBuilder" />.
/// </summary>
public interface IFluentConverterBuilder
{
/// <summary>
/// Fluent interface for <see cref="ConverterBuilder" />.
/// Saves the metadata about the source color space, and proceeds.
/// Intended only for internal implementation.
/// Use the FromXXX extension methods.
/// </summary>
public interface IFluentConverterBuilder
{
/// <summary>
/// Saves the metadata about the source color space, and proceeds.
/// Intended only for internal implementation.
/// Use the FromXXX extension methods.
/// </summary>
/// <typeparam name="TSource">Source space.</typeparam>
/// <param name="sourceMetadata">Metadata about the source space.</param>
/// <returns>Fluent interface.</returns>
IFluentConverterBuilderFrom<TSource> From<TSource>(IConversionMetadata sourceMetadata)
where TSource : IColorSpace;
}
/// <typeparam name="TSource">Source space.</typeparam>
/// <param name="sourceMetadata">Metadata about the source space.</param>
/// <returns>Fluent interface.</returns>
IFluentConverterBuilderFrom<TSource> From<TSource>(IConversionMetadata sourceMetadata)
where TSource : IColorSpace;
}
Loading

0 comments on commit 11401fe

Please sign in to comment.