MCPcopy Create free account
hub / github.com/TigerVNC/tigervnc / pixelFromRGB

Method pixelFromRGB

java/com/tigervnc/rfb/PixelFormat.java:181–212  ·  view source on GitHub ↗
(int red, int green, int blue, ColorModel cm)

Source from the content-addressed store, hash-verified

179 }
180
181 public int pixelFromRGB(int red, int green, int blue, ColorModel cm)
182 {
183 if (trueColour) {
184 int r = (red * redMax + 32767) / 65535;
185 int g = (green * greenMax + 32767) / 65535;
186 int b = (blue * blueMax + 32767) / 65535;
187
188 return (r << redShift) | (g << greenShift) | (b << blueShift);
189 } else if (cm != null) {
190 // Try to find the closest pixel by Cartesian distance
191 int colours = 1 << depth;
192 int diff = 256 * 256 * 4;
193 int col = 0;
194 for (int i=0; i<colours; i++) {
195 int r, g, b;
196 r = cm.getRed(i);
197 g = cm.getGreen(i);
198 b = cm.getBlue(i);
199 int rd = (r-red) >> 8;
200 int gd = (g-green) >> 8;
201 int bd = (b-blue) >> 8;
202 int d = rd*rd + gd*gd + bd*bd;
203 if (d < diff) {
204 col = i;
205 diff = d;
206 }
207 }
208 return col;
209 }
210 // XXX just return 0 for colour map?
211 return 0;
212 }
213
214 // This method should be invoked with duplicates of dst/src Buffers
215 public void bufferFromRGB(ByteBuffer dst, ByteBuffer src, int pixels)

Callers 6

bufferFromRGBMethod · 0.95
decodeRectMethod · 0.95
initBufferMethod · 0.80
TEST_PFunction · 0.80
zrleDecodeMethod · 0.80
writePixelsMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected