更正逆向计算时当颜色分量为零时的处理。
This commit is contained in:
		| @@ -13,9 +13,21 @@ pub struct MixReversing { | ||||
|  | ||||
| impl MixReversing { | ||||
|     pub fn from_tint_rgb(basic_color: Rgb, mixed_result: Rgb) -> Self { | ||||
|         let r_factor = (mixed_result.red - basic_color.red) / (1.0 - basic_color.red); | ||||
|         let g_factor = (mixed_result.green - basic_color.green) / (1.0 - basic_color.green); | ||||
|         let b_factor = (mixed_result.blue - basic_color.blue) / (1.0 - basic_color.blue); | ||||
|         let r_factor = if basic_color.red == 1.0 { | ||||
|             0.0 | ||||
|         } else { | ||||
|             (mixed_result.red - basic_color.red) / (1.0 - basic_color.red) | ||||
|         }; | ||||
|         let g_factor = if basic_color.green == 1.0 { | ||||
|             0.0 | ||||
|         } else { | ||||
|             (mixed_result.green - basic_color.green) / (1.0 - basic_color.green) | ||||
|         }; | ||||
|         let b_factor = if basic_color.blue == 1.0 { | ||||
|             0.0 | ||||
|         } else { | ||||
|             (mixed_result.blue - basic_color.blue) / (1.0 - basic_color.blue) | ||||
|         }; | ||||
|         let average = (r_factor + g_factor + b_factor) / 3.0; | ||||
|  | ||||
|         MixReversing { | ||||
| @@ -27,9 +39,21 @@ impl MixReversing { | ||||
|     } | ||||
|  | ||||
|     pub fn from_shade_rgb(basic_color: Rgb, mixed_result: Rgb) -> Self { | ||||
|         let r_factor = (basic_color.red - mixed_result.red) / (0.0 - basic_color.red); | ||||
|         let g_factor = (basic_color.green - mixed_result.green) / (0.0 - basic_color.green); | ||||
|         let b_factor = (basic_color.blue - mixed_result.blue) / (0.0 - basic_color.blue); | ||||
|         let r_factor = if basic_color.red == 0.0 { | ||||
|             0.0 | ||||
|         } else { | ||||
|             (basic_color.red - mixed_result.red) / (0.0 - basic_color.red) | ||||
|         }; | ||||
|         let g_factor = if basic_color.green == 0.0 { | ||||
|             0.0 | ||||
|         } else { | ||||
|             (basic_color.green - mixed_result.green) / (0.0 - basic_color.green) | ||||
|         }; | ||||
|         let b_factor = if basic_color.blue == 0.0 { | ||||
|             0.0 | ||||
|         } else { | ||||
|             (basic_color.blue - mixed_result.blue) / (0.0 - basic_color.blue) | ||||
|         }; | ||||
|         let average = (r_factor + g_factor + b_factor) / 3.0; | ||||
|  | ||||
|         MixReversing { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user