summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFridrich Štrba <fridrich.strba@bluewin.ch>2014-04-04 14:59:13 +0200
committerFridrich Štrba <fridrich.strba@bluewin.ch>2014-04-04 14:59:13 +0200
commit168d996f23d74ea2a47b4d06e841e3fc9a87f97a (patch)
treeacd89543ca9c85cf35e6d07fd66a7fd3b2c47669
parentb1d482cb6fa2182e15d73b0bb0d339c4000fc695 (diff)
First try of YIQ
Change-Id: I14e981584a5d62cc9e1eff8da5821530c99ff43c
-rw-r--r--src/lib/CDRCollector.cpp40
1 files changed, 37 insertions, 3 deletions
diff --git a/src/lib/CDRCollector.cpp b/src/lib/CDRCollector.cpp
index 01d318b..9ac58e5 100644
--- a/src/lib/CDRCollector.cpp
+++ b/src/lib/CDRCollector.cpp
@@ -479,12 +479,46 @@ unsigned libcdr::CDRParserState::_getRGBColor(const CDRColor &color)
}
// YIQ
case 0x0a:
- {
- break;
- }
// YIQ255
case 0x0b:
{
+ double y = (double)col0;
+ double i = (double)col1;
+ double q = (double)col2;
+ if (colorModel == 0x0a)
+ {
+ y /= 100.0;
+ i /= 100.0;
+ q /= 100.0;
+ }
+ else
+ {
+ y /= 255.0;
+ i /= 255.0;
+ q /= 255.0;
+ }
+ i /= 2.0*0.5957;
+ i -= 0.5957;
+ q /= 2.0*0.5226;
+ q -= 0.5226;
+ double RR = y + 0.9563*i + 0.6210*q;
+ double GG = y - 0.2127*i - 0.6474*q;
+ double BB = y - 1.1070*i + 1.7046*q;
+ if (RR > 1.0)
+ RR = 1.0;
+ if (RR < 0.0)
+ RR = 0.0;
+ if (GG > 1.0)
+ GG = 1.0;
+ if (GG < 0.0)
+ GG = 0.0;
+ if (BB > 1.0)
+ BB = 1.0;
+ if (BB < 0.0)
+ BB = 0.0;
+ red = (unsigned char)cdr_round(255*RR);
+ green = (unsigned char)cdr_round(255*GG);
+ blue = (unsigned char)cdr_round(255*BB);
break;
}
// Lab