introduce GRAFX2_QUANTIZE_CLUSTER_POPULATION_SPLIT macro to change cluster splitting method
This commit is contained in:
		
							parent
							
								
									9ec4adae80
								
							
						
					
					
						commit
						5d47a76a50
					
				
							
								
								
									
										14
									
								
								src/op_c.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								src/op_c.c
									
									
									
									
									
								
							@ -2,6 +2,7 @@
 | 
			
		||||
*/
 | 
			
		||||
/*  Grafx2 - The Ultimate 256-color bitmap paint program
 | 
			
		||||
 | 
			
		||||
    Copyright 2017 Thomas Bernard
 | 
			
		||||
    Copyright 2010 Alexander Filyanov
 | 
			
		||||
    Copyright 2007 Adrien Destugues
 | 
			
		||||
    Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
 | 
			
		||||
@ -32,6 +33,11 @@
 | 
			
		||||
#include "errors.h"
 | 
			
		||||
#include "colorred.h"
 | 
			
		||||
 | 
			
		||||
// If GRAFX2_QUANTIZE_CLUSTER_POPULATION_SPLIT is defined,
 | 
			
		||||
// the clusters are splitted in two half of equal (pixel) population.
 | 
			
		||||
// Otherwise, they are splitted in two half of equal volume.
 | 
			
		||||
//#define GRAFX2_QUANTIZE_CLUSTER_POPULATION_SPLIT
 | 
			
		||||
 | 
			
		||||
int Convert_24b_bitmap_to_256_fast(T_Bitmap256 dest,T_Bitmap24B source,int width,int height,T_Components * palette);
 | 
			
		||||
 | 
			
		||||
/// Convert RGB to HSL.
 | 
			
		||||
@ -473,6 +479,7 @@ ENDCRUSH:
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef GRAFX2_QUANTIZE_CLUSTER_POPULATION_SPLIT
 | 
			
		||||
/// Split a cluster on its longest axis.
 | 
			
		||||
/// c = source cluster, c1, c2 = output after split
 | 
			
		||||
/// the two output cluster have half volume (and not half population)
 | 
			
		||||
@ -532,6 +539,7 @@ void Cluster_split_volume(T_Cluster * c, T_Cluster * c1, T_Cluster * c2, int hue
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#else // GRAFX2_QUANTIZE_CLUSTER_POPULATION_SPLIT
 | 
			
		||||
/// Split a cluster on its longest axis.
 | 
			
		||||
/// c = source cluster, c1, c2 = output after split
 | 
			
		||||
/// the two output clusters have half population (and not half volume)
 | 
			
		||||
@ -663,6 +671,7 @@ void Cluster_split(T_Cluster * c, T_Cluster * c1, T_Cluster * c2, int hue,
 | 
			
		||||
    c2->bmin=b;       c2->bmax=c->bmax;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
#endif // GRAFX2_QUANTIZE_CLUSTER_POPULATION_SPLIT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/// Compute the mean R, G, B (for palette generation) and H, L (for palette sorting)
 | 
			
		||||
@ -861,8 +870,11 @@ void CS_Generate(T_Cluster_set * cs, const T_Occurrence_table * const to, CT_Tre
 | 
			
		||||
    	free(current);
 | 
			
		||||
    	break;
 | 
			
		||||
    }
 | 
			
		||||
#ifndef GRAFX2_QUANTIZE_CLUSTER_POPULATION_SPLIT
 | 
			
		||||
    Cluster_split_volume(current, &Nouveau1, &Nouveau2, current->data.cut.plus_large);
 | 
			
		||||
    //Cluster_split(current, &Nouveau1, &Nouveau2, current->data.cut.plus_large, to);
 | 
			
		||||
#else
 | 
			
		||||
    Cluster_split(current, &Nouveau1, &Nouveau2, current->data.cut.plus_large, to);
 | 
			
		||||
#endif
 | 
			
		||||
    free(current);
 | 
			
		||||
 | 
			
		||||
    // Pack the 2 new clusters (the split may leave some empty space between the
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user