mirror of https://github.com/SixLabors/ImageSharp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
// Copyright (c) Six Labors and contributors.
|
|
// Licensed under the Apache License, Version 2.0.
|
|
|
|
namespace SixLabors.ImageSharp.Metadata.Profiles.Icc
|
|
{
|
|
/// <summary>
|
|
/// Provides methods to read ICC data types
|
|
/// </summary>
|
|
internal sealed partial class IccDataReader
|
|
{
|
|
/// <summary>
|
|
/// Reads a two dimensional matrix
|
|
/// </summary>
|
|
/// <param name="xCount">Number of values in X</param>
|
|
/// <param name="yCount">Number of values in Y</param>
|
|
/// <param name="isSingle">True if the values are encoded as Single; false if encoded as Fix16</param>
|
|
/// <returns>The read matrix</returns>
|
|
public float[,] ReadMatrix(int xCount, int yCount, bool isSingle)
|
|
{
|
|
var matrix = new float[xCount, yCount];
|
|
for (int y = 0; y < yCount; y++)
|
|
{
|
|
for (int x = 0; x < xCount; x++)
|
|
{
|
|
if (isSingle)
|
|
{
|
|
matrix[x, y] = this.ReadSingle();
|
|
}
|
|
else
|
|
{
|
|
matrix[x, y] = this.ReadFix16();
|
|
}
|
|
}
|
|
}
|
|
|
|
return matrix;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reads a one dimensional matrix
|
|
/// </summary>
|
|
/// <param name="yCount">Number of values</param>
|
|
/// <param name="isSingle">True if the values are encoded as Single; false if encoded as Fix16</param>
|
|
/// <returns>The read matrix</returns>
|
|
public float[] ReadMatrix(int yCount, bool isSingle)
|
|
{
|
|
var matrix = new float[yCount];
|
|
for (int i = 0; i < yCount; i++)
|
|
{
|
|
if (isSingle)
|
|
{
|
|
matrix[i] = this.ReadSingle();
|
|
}
|
|
else
|
|
{
|
|
matrix[i] = this.ReadFix16();
|
|
}
|
|
}
|
|
|
|
return matrix;
|
|
}
|
|
}
|
|
}
|
|
|