@@ -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 ;
0 commit comments