PageRenderTime 26ms CodeModel.GetById 18ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/glm/gtx/color_space_YCoCg.inl

https://bitbucket.org/ggerganov/test_opengl
C++ Header | 64 lines | 52 code | 4 blank | 8 comment | 0 complexity | 1be386bf7fdbe9c4cbdb49d243de51b9 MD5 | raw file
 1///////////////////////////////////////////////////////////////////////////////////////////////////
 2// OpenGL Mathematics Copyright (c) 2005 - 2012 G-Truc Creation (www.g-truc.net)
 3///////////////////////////////////////////////////////////////////////////////////////////////////
 4// Created : 2008-10-28
 5// Updated : 2008-10-28
 6// Licence : This source is under MIT License
 7// File    : glm/gtx/color_space_YCoCg.inl
 8///////////////////////////////////////////////////////////////////////////////////////////////////
 9
10namespace glm
11{
12	template <typename valType> 
13	GLM_FUNC_QUALIFIER detail::tvec3<valType> rgb2YCoCg
14	(
15		detail::tvec3<valType> const & rgbColor
16	)
17	{
18		detail::tvec3<valType> result;
19		result.x/*Y */ =   rgbColor.r / valType(4) + rgbColor.g / valType(2) + rgbColor.b / valType(4);
20		result.y/*Co*/ =   rgbColor.r / valType(2) + rgbColor.g * valType(0) - rgbColor.b / valType(2);
21		result.z/*Cg*/ = - rgbColor.r / valType(4) + rgbColor.g / valType(2) - rgbColor.b / valType(4);
22		return result;
23	}
24
25	template <typename valType> 
26	GLM_FUNC_QUALIFIER detail::tvec3<valType> rgb2YCoCgR
27	(
28		detail::tvec3<valType> const & rgbColor
29	)
30	{
31		detail::tvec3<valType> result;
32		result.x/*Y */ = rgbColor.g / valType(2) + (rgbColor.r + rgbColor.b) / valType(4);
33		result.y/*Co*/ = rgbColor.r - rgbColor.b;
34		result.z/*Cg*/ = rgbColor.g - (rgbColor.r + rgbColor.b) / valType(2);
35		return result;
36	}
37
38	template <typename valType> 
39	GLM_FUNC_QUALIFIER detail::tvec3<valType> YCoCg2rgb
40	(
41		detail::tvec3<valType> const & YCoCgColor
42	)
43	{
44		detail::tvec3<valType> result;
45		result.r = YCoCgColor.x + YCoCgColor.y - YCoCgColor.z;
46		result.g = YCoCgColor.x                + YCoCgColor.z;
47		result.b = YCoCgColor.x - YCoCgColor.y - YCoCgColor.z;
48		return result;
49	}
50
51	template <typename valType> 
52	GLM_FUNC_QUALIFIER detail::tvec3<valType> YCoCgR2rgb
53	(
54		detail::tvec3<valType> const & YCoCgRColor
55	)
56	{
57		detail::tvec3<valType> result;
58		valType tmp = YCoCgRColor.x - (YCoCgRColor.z / valType(2));
59		result.g = YCoCgRColor.z + tmp;
60		result.b = tmp - (YCoCgRColor.y / valType(2));
61		result.r = result.b + YCoCgRColor.y;
62		return result;
63	}
64}//namespace glm