@@ -347,15 +347,15 @@ internal override void Pnnquan(int[] pixels, ref Color[] palettes, ref int nMaxC
347347
348348 internal override ushort NearestColorIndex ( Color [ ] palette , int pixel , int pos )
349349 {
350- var nMaxColors = palette . Length ;
351- int offset = nMaxColors > 32 ? pixel : GetColorIndex ( pixel ) ;
352- if ( nearestMap . TryGetValue ( offset , out var k ) )
350+ var nMaxColors = palette . Length ;
351+ int offset = weight > .015 ? pixel : GetColorIndex ( pixel ) ;
352+ if ( nearestMap . TryGetValue ( offset , out var k ) )
353353 return k ;
354354
355355 var c = Color . FromArgb ( pixel ) ;
356356 if ( c . A <= alphaThreshold )
357- return k ;
358- if ( palette . Length > 2 && HasAlpha && c . A > alphaThreshold )
357+ return k ;
358+ if ( palette . Length > 2 && HasAlpha && c . A > alphaThreshold )
359359 k = 1 ;
360360
361361 double mindist = 1e100 ;
@@ -427,9 +427,9 @@ internal override ushort NearestColorIndex(Color[] palette, int pixel, int pos)
427427
428428 internal ushort HybridColorIndex ( Color [ ] palette , int pixel , int pos )
429429 {
430- var nMaxColors = palette . Length ;
431- int offset = nMaxColors > 32 ? pixel : GetColorIndex ( pixel ) ;
432- if ( nearestMap . TryGetValue ( offset , out var k ) )
430+ var nMaxColors = palette . Length ;
431+ int offset = weight > .015 ? pixel : GetColorIndex ( pixel ) ;
432+ if ( nearestMap . TryGetValue ( offset , out var k ) )
433433 return k ;
434434
435435 var c = Color . FromArgb ( pixel ) ;
@@ -486,16 +486,16 @@ internal ushort HybridColorIndex(Color[] palette, int pixel, int pos)
486486
487487 protected override ushort ClosestColorIndex ( Color [ ] palette , int pixel , int pos )
488488 {
489- if ( PG < coeffs [ 0 , 1 ] && BlueNoise . TELL_BLUE_NOISE [ pos & 4095 ] > - 88 )
490- return HybridColorIndex ( palette , pixel , pos ) ;
489+ if ( PG < coeffs [ 0 , 1 ] && BlueNoise . TELL_BLUE_NOISE [ pos & 4095 ] > - 88 )
490+ return HybridColorIndex ( palette , pixel , pos ) ;
491491
492- var c = Color . FromArgb ( pixel ) ;
492+ var c = Color . FromArgb ( pixel ) ;
493493 if ( c . A <= alphaThreshold )
494494 return NearestColorIndex ( palette , pixel , pos ) ;
495495
496- var nMaxColors = palette . Length ;
497- int offset = nMaxColors > 32 ? pixel : GetColorIndex ( pixel ) ;
498- if ( ! closestMap . TryGetValue ( offset , out var closest ) )
496+ var nMaxColors = palette . Length ;
497+ int offset = weight > .015 ? pixel : GetColorIndex ( pixel ) ;
498+ if ( ! closestMap . TryGetValue ( offset , out var closest ) )
499499 {
500500 closest = new ushort [ 4 ] ;
501501 closest [ 2 ] = closest [ 3 ] = ushort . MaxValue ;
0 commit comments