Skip to content

Commit fe93db3

Browse files
committed
Changed name of TotalWeight and made it a factor, not a divider
1 parent 4004bb4 commit fe93db3

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

Pinta.Effects/Classes/ErrorDiffusionMatrix.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public static class Predefined
7575
public static ErrorDiffusionMatrix TwoRowSierra { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.TwoRowSierra, 2);
7676
public static ErrorDiffusionMatrix SierraLite { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.SierraLite, 1);
7777
public static ErrorDiffusionMatrix Burkes { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.Burkes, 2);
78-
public static ErrorDiffusionMatrix Atkinson { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.Atkinson, 1, 8);
78+
public static ErrorDiffusionMatrix Atkinson { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.Atkinson, 1, 0.25);
7979
public static ErrorDiffusionMatrix Stucki { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.Stucki, 2);
8080
public static ErrorDiffusionMatrix JarvisJudiceNinke { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.JarvisJudiceNinke, 2);
8181
public static ErrorDiffusionMatrix FloydSteinberg { get; } = new ErrorDiffusionMatrix (DefaultMatrixArrays.FloydSteinberg, 1);
@@ -137,12 +137,12 @@ private static class DefaultMatrixArrays
137137
private readonly int[,] array_2_d;
138138
public int Columns { get; }
139139
public int Rows { get; }
140-
public int TotalWeight { get; }
140+
public double WeightReductionFactor { get; }
141141
public int ColumnsToLeft { get; }
142142
public int ColumnsToRight { get; }
143143
public int RowsBelow { get; }
144144
public int this[int row, int column] => array_2_d[row, column];
145-
public ErrorDiffusionMatrix (int[,] array2D, int pixelColumn, int? totalWeight = null)
145+
public ErrorDiffusionMatrix (int[,] array2D, int pixelColumn, double? weightReductionFactor = null)
146146
{
147147
var clone = (int[,]) array2D.Clone ();
148148
var rows = clone.GetLength (0);
@@ -157,7 +157,7 @@ public ErrorDiffusionMatrix (int[,] array2D, int pixelColumn, int? totalWeight =
157157
if (flattened.Take (pixelColumn).Any (w => w != 0)) throw new ArgumentException ("Pixels previous to target cannot have nonzero weights");
158158
ColumnsToLeft = pixelColumn;
159159
ColumnsToRight = columns - 1 - pixelColumn;
160-
TotalWeight = totalWeight ?? flattened.Sum ();
160+
WeightReductionFactor = weightReductionFactor ?? (1.0 / flattened.Sum ());
161161
Columns = columns;
162162
Rows = rows;
163163
RowsBelow = rows - 1;

Pinta.Effects/Effects/DitheringEffect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ protected override void Render (ImageSurface src, ImageSurface dest, RectangleI
9090

9191
int idx = (thisItem.Y * settings.sourceWidth) + thisItem.X;
9292

93-
double factor = ((double) weight) / settings.diffusionMatrix.TotalWeight;
93+
double factor = weight * settings.diffusionMatrix.WeightReductionFactor;
9494

9595
dst_data[idx] = AddError (dst_data[idx], factor, errorRed, errorGreen, errorBlue);
9696
}

0 commit comments

Comments
 (0)