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;