[Libreoffice-commits] libcdr.git: Branch 'libcdr-0.0' - 2 commits - src/lib
Fridrich Å trba
fridrich.strba at bluewin.ch
Fri Apr 4 06:36:38 PDT 2014
src/lib/CDRCollector.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 44 insertions(+), 5 deletions(-)
New commits:
commit 3aee2631795df394df7f69b6e30fa74fbd837618
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Fri Apr 4 15:30:06 2014 +0200
YIQ255 - second service - deuce
Change-Id: I7cc39c45a3d4a826a20d4e57dc703bec7bd0818e
(cherry picked from commit 534d406ff9f6b124fddb3e18b44176aaba54f032)
diff --git a/src/lib/CDRCollector.cpp b/src/lib/CDRCollector.cpp
index 3bf86f7..0140a4f 100644
--- a/src/lib/CDRCollector.cpp
+++ b/src/lib/CDRCollector.cpp
@@ -497,30 +497,35 @@ unsigned libcdr::CDRParserState::_getRGBColor(const CDRColor &color)
blue = col0;
break;
}
- // YIQ
- case 0x0a:
// YIQ255
case 0x0b:
{
double y = (double)col0;
double i = (double)col1;
double q = (double)col2;
- if (colorModel == 0x0a)
- {
+
+ y -= 100.0;
+ if (y < 0.0)
y /= 100.0;
+ else
+ y /= 155.0;
+ y *= 0.5;
+ y += 0.5;
+
+ i -= 100.0;
+ if (i <= 0.0)
i /= 100.0;
+ else
+ i /= 155;
+ i *= 0.5957;
+
+ q -= 100.0;
+ if (q <= 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;
+ q /= 155;
+ 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;
commit f90de3de9839f31ca6c7cb5479b6fd73506ad5dc
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Fri Apr 4 14:59:13 2014 +0200
First try of YIQ
Change-Id: I14e981584a5d62cc9e1eff8da5821530c99ff43c
(cherry picked from commit 168d996f23d74ea2a47b4d06e841e3fc9a87f97a)
diff --git a/src/lib/CDRCollector.cpp b/src/lib/CDRCollector.cpp
index 3083855..3bf86f7 100644
--- a/src/lib/CDRCollector.cpp
+++ b/src/lib/CDRCollector.cpp
@@ -499,12 +499,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
More information about the Libreoffice-commits
mailing list