Consolidate pixel conversion into the PixelFormat class and optimise the
common cases.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3636 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/rfb/TrueColourMap.h b/common/rfb/TrueColourMap.h
index 1e87fa4..d79647e 100644
--- a/common/rfb/TrueColourMap.h
+++ b/common/rfb/TrueColourMap.h
@@ -28,12 +28,11 @@
virtual void lookup(int i, int* r, int* g, int* b)
{
- *r = (((i >> pf.redShift ) & pf.redMax)
- * 65535 + pf.redMax/2) / pf.redMax;
- *g = (((i >> pf.greenShift) & pf.greenMax)
- * 65535 + pf.greenMax/2) / pf.greenMax;
- *b = (((i >> pf.blueShift) & pf.blueMax)
- * 65535 + pf.blueMax/2) / pf.blueMax;
+ rdr::U16 _r, _g, _b;
+ pf.rgbFromPixel(i, NULL, &_r, &_g, &_b);
+ *r = _r;
+ *g = _g;
+ *b = _b;
}
private:
PixelFormat pf;