Browse Source

Merge branch 'master' into beta-1

af/merge-core
JimBobSquarePants 9 years ago
parent
commit
1f57670313
  1. 2
      src/ImageSharp/Formats/Png/PngDecoderCore.cs
  2. 44
      src/ImageSharp/MetaData/Profiles/ICC/DataReader/IccDataReader.TagDataEntry.cs
  3. 2
      tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj
  4. 4
      tests/ImageSharp.Sandbox46/ImageSharp.Sandbox46.csproj
  5. 4
      tests/ImageSharp.Tests/ImageSharp.Tests.csproj
  6. 73
      tests/ImageSharp.Tests/TestDataIcc/IccTestDataTagDataEntry.cs

2
src/ImageSharp/Formats/Png/PngDecoderCore.cs

@ -272,7 +272,7 @@ namespace SixLabors.ImageSharp.Formats.Png
/// <exception cref="System.ArgumentException"><paramref name="bits"/> is less than or equals than zero.</exception>
private static Span<byte> ToArrayByBitsLength(Span<byte> source, int bytesPerScanline, int bits)
{
Guard.NotNull(source, nameof(source));
Guard.MustBeGreaterThan(source.Length, 0, nameof(source));
Guard.MustBeGreaterThan(bits, 0, nameof(bits));
if (bits >= 8)

44
src/ImageSharp/MetaData/Profiles/ICC/DataReader/IccDataReader.TagDataEntry.cs

@ -474,19 +474,7 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
string languageCode = this.ReadAsciiString(2);
string countryCode = this.ReadAsciiString(2);
if (string.IsNullOrWhiteSpace(languageCode))
{
culture[i] = CultureInfo.InvariantCulture;
}
else if (string.IsNullOrWhiteSpace(countryCode))
{
culture[i] = new CultureInfo(languageCode);
}
else
{
culture[i] = new CultureInfo($"{languageCode}-{countryCode}");
}
culture[i] = ReadCulture(languageCode, countryCode);
length[i] = this.ReadUInt32();
offset[i] = this.ReadUInt32();
}
@ -498,6 +486,36 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Icc
}
return new IccMultiLocalizedUnicodeTagDataEntry(text);
CultureInfo ReadCulture(string language, string country)
{
if (string.IsNullOrWhiteSpace(language))
{
return CultureInfo.InvariantCulture;
}
else if (string.IsNullOrWhiteSpace(country))
{
try
{
return new CultureInfo(language);
}
catch (CultureNotFoundException)
{
return CultureInfo.InvariantCulture;
}
}
else
{
try
{
return new CultureInfo($"{language}-{country}");
}
catch (CultureNotFoundException)
{
return ReadCulture(language, null);
}
}
}
}
/// <summary>

2
tests/ImageSharp.Benchmarks/ImageSharp.Benchmarks.csproj

@ -15,7 +15,7 @@
<PackageReference Include="System.Numerics.Vectors" Version="4.4.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net461'">
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.10.7" />
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.10.9" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netcoreapp1.1'">
<PackageReference Include="BenchmarkDotNet" Version="0.10.9" />

4
tests/ImageSharp.Sandbox46/ImageSharp.Sandbox46.csproj

@ -20,6 +20,10 @@
<PackageReference Include="BitMiracle.LibJpeg.NET" Version="1.4.280" />
<PackageReference Include="xunit" Version="2.3.0-beta4-build3742" />
<PackageReference Include="Moq" Version="4.7.99" />
<!--<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />-->
<PackageReference Include="Moq" Version="4.7.99" />
<PackageReference Include="xunit" Version="2.3.0-beta4-build3742" />
<!--<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />-->
</ItemGroup>
<ItemGroup>
<Compile Include="..\ImageSharp.Tests\**\*.cs" Exclude="bin\**;obj\**" Link="Tests\%(RecursiveDir)%(Filename)%(Extension)" />

4
tests/ImageSharp.Tests/ImageSharp.Tests.csproj

@ -25,6 +25,10 @@
<!--<PackageReference Include="StyleCop.Analyzers" Version="1.1.0-beta001">
<PrivateAssets>All</PrivateAssets>
</PackageReference>-->
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="Moq" Version="4.7.99" />
<PackageReference Include="xunit" Version="2.3.0-beta4-build3742" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta4-build3742" />
</ItemGroup>
<ItemGroup>
<AdditionalFiles Include="..\..\stylecop.json" />

73
tests/ImageSharp.Tests/TestDataIcc/IccTestDataTagDataEntry.cs

@ -454,15 +454,46 @@ namespace SixLabors.ImageSharp.Tests
#region MultiLocalizedUnicodeTagDataEntry
private static readonly IccLocalizedString LocalizedString_Rand_enUs = new IccLocalizedString(new CultureInfo("en-US"), IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand_deDE = new IccLocalizedString(new CultureInfo("de-DE"), IccTestDataPrimitives.Unicode_ValRand3);
private static readonly IccLocalizedString LocalizedString_Rand2_deDE = new IccLocalizedString(new CultureInfo("de-DE"), IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand_en = new IccLocalizedString(new CultureInfo("en"), IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand_enUS = CreateLocalizedString("en", "US", IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand_deDE = CreateLocalizedString("de", "DE", IccTestDataPrimitives.Unicode_ValRand3);
private static readonly IccLocalizedString LocalizedString_Rand2_deDE = CreateLocalizedString("de", "DE", IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand2_esXL = CreateLocalizedString("es", "XL", IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand2_xyXL = CreateLocalizedString("xy", "XL", IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand_en = CreateLocalizedString("en", null, IccTestDataPrimitives.Unicode_ValRand2);
private static readonly IccLocalizedString LocalizedString_Rand_Invariant = new IccLocalizedString(CultureInfo.InvariantCulture, IccTestDataPrimitives.Unicode_ValRand3);
private static readonly IccLocalizedString[] LocalizedString_RandArr_enUs_deDE = new IccLocalizedString[]
private static IccLocalizedString CreateLocalizedString(string language, string country, string text)
{
LocalizedString_Rand_enUs,
CultureInfo culture;
if (country == null)
{
try
{
culture = new CultureInfo(language);
}
catch (CultureNotFoundException)
{
culture = CultureInfo.InvariantCulture;
}
}
else
{
try
{
culture = new CultureInfo($"{language}-{country}");
}
catch (CultureNotFoundException)
{
return CreateLocalizedString(language, null, text);
}
}
return new IccLocalizedString(culture, text);
}
private static readonly IccLocalizedString[] LocalizedString_RandArr_enUS_deDE = new IccLocalizedString[]
{
LocalizedString_Rand_enUS,
LocalizedString_Rand_deDE,
};
private static readonly IccLocalizedString[] LocalizedString_RandArr_en_Invariant = new IccLocalizedString[]
@ -470,13 +501,15 @@ namespace SixLabors.ImageSharp.Tests
LocalizedString_Rand_en,
LocalizedString_Rand_Invariant,
};
private static readonly IccLocalizedString[] LocalizedString_SameArr_enUs_deDE = new IccLocalizedString[]
private static readonly IccLocalizedString[] LocalizedString_SameArr_enUS_deDE_esXL_xyXL = new IccLocalizedString[]
{
LocalizedString_Rand_enUs,
LocalizedString_Rand2_deDE
LocalizedString_Rand_enUS,
LocalizedString_Rand2_deDE,
LocalizedString_Rand2_esXL,
LocalizedString_Rand2_xyXL,
};
public static readonly IccMultiLocalizedUnicodeTagDataEntry MultiLocalizedUnicode_Val = new IccMultiLocalizedUnicodeTagDataEntry(LocalizedString_RandArr_enUs_deDE);
public static readonly IccMultiLocalizedUnicodeTagDataEntry MultiLocalizedUnicode_Val = new IccMultiLocalizedUnicodeTagDataEntry(LocalizedString_RandArr_enUS_deDE);
public static readonly byte[] MultiLocalizedUnicode_Arr = ArrayHelper.Concat
(
IccTestDataPrimitives.UInt32_2,
@ -529,19 +562,27 @@ namespace SixLabors.ImageSharp.Tests
IccTestDataPrimitives.Unicode_Rand3
);
public static readonly IccMultiLocalizedUnicodeTagDataEntry MultiLocalizedUnicode_Val3 = new IccMultiLocalizedUnicodeTagDataEntry(LocalizedString_SameArr_enUs_deDE);
public static readonly IccMultiLocalizedUnicodeTagDataEntry MultiLocalizedUnicode_Val3 = new IccMultiLocalizedUnicodeTagDataEntry(LocalizedString_SameArr_enUS_deDE_esXL_xyXL);
public static readonly byte[] MultiLocalizedUnicode_Arr3 = ArrayHelper.Concat
(
IccTestDataPrimitives.UInt32_2,
IccTestDataPrimitives.UInt32_4,
new byte[] { 0x00, 0x00, 0x00, 0x0C }, // 12
new byte[] { (byte)'e', (byte)'n', (byte)'U', (byte)'S' },
new byte[] { 0x00, 0x00, 0x00, 0x0C }, // 12
new byte[] { 0x00, 0x00, 0x00, 0x28 }, // 40
new byte[] { 0x00, 0x00, 0x00, 0x40 }, // 64
new byte[] { (byte)'d', (byte)'e', (byte)'D', (byte)'E' },
new byte[] { 0x00, 0x00, 0x00, 0x0C }, // 12
new byte[] { 0x00, 0x00, 0x00, 0x28 }, // 40
new byte[] { 0x00, 0x00, 0x00, 0x40 }, // 64
new byte[] { (byte)'e', (byte)'s', (byte)'X', (byte)'L' },
new byte[] { 0x00, 0x00, 0x00, 0x0C }, // 12
new byte[] { 0x00, 0x00, 0x00, 0x40 }, // 64
new byte[] { (byte)'x', (byte)'y', (byte)'X', (byte)'L' },
new byte[] { 0x00, 0x00, 0x00, 0x0C }, // 12
new byte[] { 0x00, 0x00, 0x00, 0x40 }, // 64
IccTestDataPrimitives.Unicode_Rand2
);
@ -669,8 +710,8 @@ namespace SixLabors.ImageSharp.Tests
(
new IccProfileSequenceIdentifier[]
{
new IccProfileSequenceIdentifier(IccTestDataNonPrimitives.ProfileId_ValRand, LocalizedString_RandArr_enUs_deDE),
new IccProfileSequenceIdentifier(IccTestDataNonPrimitives.ProfileId_ValRand, LocalizedString_RandArr_enUs_deDE),
new IccProfileSequenceIdentifier(IccTestDataNonPrimitives.ProfileId_ValRand, LocalizedString_RandArr_enUS_deDE),
new IccProfileSequenceIdentifier(IccTestDataNonPrimitives.ProfileId_ValRand, LocalizedString_RandArr_enUS_deDE),
}
);
public static readonly byte[] ProfileSequenceIdentifier_Arr = ArrayHelper.Concat

Loading…
Cancel
Save