|  | @@ -4026,7 +4026,7 @@ static void _get_Cs(real L, real a_, real b_,real *rC_0, real *rC_mid, real *rC_
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	*rC_0=C_0; *rC_mid=C_mid; *rC_max=C_max;
 |  |  	*rC_0=C_0; *rC_mid=C_mid; *rC_max=C_max;
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | -void tnsHCY2RGB(real *hcy, real *rgb){
 |  | 
 | 
											
												
													
														|  | 
 |  | +void tnsHCY2RGBLinear(real *hcy, real *rgb){
 | 
											
												
													
														|  |  	real h = hcy[0]; real s = hcy[1]; real l = hcy[2];
 |  |  	real h = hcy[0]; real s = hcy[1]; real l = hcy[2];
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	if (l >= 1.0f){ tnsVectorSet3(rgb,1,1,1); return; }
 |  |  	if (l >= 1.0f){ tnsVectorSet3(rgb,1,1,1); return; }
 | 
											
										
											
												
													
														|  | @@ -4057,15 +4057,10 @@ void tnsHCY2RGB(real *hcy, real *rgb){
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      real okl[3]={L, C * a_, C * b_};
 |  |      real okl[3]={L, C * a_, C * b_};
 | 
											
												
													
														|  |  	tnsOKLAB2RGB(okl, rgb);
 |  |  	tnsOKLAB2RGB(okl, rgb);
 | 
											
												
													
														|  | -    rgb[0]=_srgb_transfer_function(rgb[0]);
 |  | 
 | 
											
												
													
														|  | -    rgb[1]=_srgb_transfer_function(rgb[1]);
 |  | 
 | 
											
												
													
														|  | -    rgb[2]=_srgb_transfer_function(rgb[2]);
 |  | 
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | -void tnsRGB2HCY(real *rgb, real *hcy){
 |  | 
 | 
											
												
													
														|  | 
 |  | +void tnsRGB2HCYLinear(real *rgb, real *hcy){
 | 
											
												
													
														|  |  	real lab[3]; real lrgb[3];
 |  |  	real lab[3]; real lrgb[3];
 | 
											
												
													
														|  | -    lrgb[0]=_srgb_transfer_function_inv(rgb[0]);
 |  | 
 | 
											
												
													
														|  | -    lrgb[1]=_srgb_transfer_function_inv(rgb[1]);
 |  | 
 | 
											
												
													
														|  | -    lrgb[2]=_srgb_transfer_function_inv(rgb[2]);
 |  | 
 | 
											
												
													
														|  | 
 |  | +    lrgb[0]=rgb[0]; lrgb[1]=rgb[1]; lrgb[2]=rgb[2];
 | 
											
												
													
														|  |      tnsRGB2OKLAB(lrgb,lab);
 |  |      tnsRGB2OKLAB(lrgb,lab);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      if(lab[0]>=1.0f-1e-4){ tnsVectorSet3(hcy,0,0,1); return; }
 |  |      if(lab[0]>=1.0f-1e-4){ tnsVectorSet3(hcy,0,0,1); return; }
 | 
											
										
											
												
													
														|  | @@ -4100,6 +4095,19 @@ void tnsRGB2HCY(real *rgb, real *hcy){
 | 
											
												
													
														|  |  	real l = _toe(L);
 |  |  	real l = _toe(L);
 | 
											
												
													
														|  |  	hcy[0]=h; hcy[1]=s; hcy[2]=l;
 |  |  	hcy[0]=h; hcy[1]=s; hcy[2]=l;
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | 
 |  | +void tnsHCY2RGB(real *hcy, real *rgb){
 | 
											
												
													
														|  | 
 |  | +    tnsHCY2RGBLinear(hcy,rgb);
 | 
											
												
													
														|  | 
 |  | +    rgb[0]=_srgb_transfer_function(rgb[0]);
 | 
											
												
													
														|  | 
 |  | +    rgb[1]=_srgb_transfer_function(rgb[1]);
 | 
											
												
													
														|  | 
 |  | +    rgb[2]=_srgb_transfer_function(rgb[2]);
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +void tnsRGB2HCY(real *rgb, real *hcy){
 | 
											
												
													
														|  | 
 |  | +	real lrgb[3];
 | 
											
												
													
														|  | 
 |  | +    lrgb[0]=_srgb_transfer_function_inv(rgb[0]);
 | 
											
												
													
														|  | 
 |  | +    lrgb[1]=_srgb_transfer_function_inv(rgb[1]);
 | 
											
												
													
														|  | 
 |  | +    lrgb[2]=_srgb_transfer_function_inv(rgb[2]);
 | 
											
												
													
														|  | 
 |  | +    tnsRGB2HCYLinear(lrgb,hcy);
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  void tnsClearAll(){
 |  |  void tnsClearAll(){
 | 
											
												
													
														|  |      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 |  |      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 |