xref: /haiku/src/add-ons/translators/wonderbrush/support/lab_convert.h (revision 73a2ffba3bb47d5fa3811f0e609f7afa815db9bc)
1 /*
2  * Copyright 2006, Haiku. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Stephan Aßmus <superstippi@gmx.de>
7  */
8 
9 #ifndef LAB_CONVERT_H
10 #define LAB_CONVERT_H
11 
12 #include <SupportDefs.h>
13 
14 void lab2rgb(float L, float a, float b, uint8& R, uint8& G, uint8& B);
15 
16 // lab2rgb
17 inline void
lab2rgb(uint8 L,uint8 a,uint8 b,uint8 & R,uint8 & G,uint8 & B)18 lab2rgb(uint8 L, uint8 a, uint8 b, uint8& R, uint8& G, uint8& B)
19 {
20 	float CIEL = ((float)L / 255.0) * 100.0;
21 	float CIEa = ((float)a - 128.0);
22 	float CIEb = ((float)b - 128.0);
23 	lab2rgb(CIEL, CIEa, CIEb, R, G, B);
24 }
25 
26 void rgb2lab(uint8 R, uint8 G, uint8 B, float& L, float& a, float& b);
27 
28 // rgb2lab
29 inline void
rgb2lab(uint8 R,uint8 G,uint8 B,uint8 & L,uint8 & a,uint8 & b)30 rgb2lab(uint8 R, uint8 G, uint8 B, uint8& L, uint8& a, uint8& b)
31 {
32 	float CIEL, CIEa, CIEb;
33 	rgb2lab(R, G, B, CIEL, CIEa, CIEb);
34 	L = uint8((CIEL / 100.0) * 255.0);
35 	a = uint8(CIEa + 128);
36 	b = uint8(CIEb + 128);
37 }
38 
39 void replace_luminance(uint8& r1, uint8& g1, uint8& b1, uint8 r2, uint8 g2, uint8 b2);
40 
41 #endif // LAB_CONVERT_H
42