Home | History | Annotate | Download | only in libvncclient

Lines Matching refs:client

53   (((CARD##bpp)(r) & client->format.redMax) << client->format.redShift |		\
54 ((CARD##bpp)(g) & client->format.greenMax) << client->format.greenShift | \
55 ((CARD##bpp)(b) & client->format.blueMax) << client->format.blueShift)
58 ((((CARD##bpp)(r) & 0xFF) * client->format.redMax + 127) / 255 \
59 << client->format.redShift | \
60 (((CARD##bpp)(g) & 0xFF) * client->format.greenMax + 127) / 255 \
61 << client->format.greenShift | \
62 (((CARD##bpp)(b) & 0xFF) * client->format.blueMax + 127) / 255 \
63 << client->format.blueShift)
66 (((uint32_t)(r) & 0xFF) << client->format.redShift | \
67 ((uint32_t)(g) & 0xFF) << client->format.greenShift | \
68 ((uint32_t)(b) & 0xFF) << client->format.blueShift)
74 typedef void (*filterPtrBPP)(rfbClient* client, int, CARDBPP *);
78 static int InitFilterCopyBPP (rfbClient* client, int rw, int rh);
79 static int InitFilterPaletteBPP (rfbClient* client, int rw, int rh);
80 static int InitFilterGradientBPP (rfbClient* client, int rw, int rh);
81 static void FilterCopyBPP (rfbClient* client, int numRows, CARDBPP *destBuffer);
82 static void FilterPaletteBPP (rfbClient* client, int numRows, CARDBPP *destBuffer);
83 static void FilterGradientBPP (rfbClient* client, int numRows, CARDBPP *destBuffer);
86 static rfbBool DecompressJpegRectBPP(rfbClient* client, int x, int y, int w, int h);
92 HandleTightBPP (rfbClient* client, int rx, int ry, int rw, int rh)
103 if (!ReadFromRFBServer(client, (char *)&comp_ctl, 1))
108 if ((comp_ctl & 1) && client->zlibStreamActive[stream_id]) {
109 if (inflateEnd (&client->zlibStream[stream_id]) != Z_OK &&
110 client->zlibStream[stream_id].msg != NULL)
111 rfbClientLog("inflateEnd: %s\n", client->zlibStream[stream_id].msg);
112 client->zlibStreamActive[stream_id] = FALSE;
120 if (client->format.depth == 24 && client->format.redMax == 0xFF &&
121 client->format.greenMax == 0xFF && client->format.blueMax == 0xFF) {
122 if (!ReadFromRFBServer(client, client->buffer, 3))
124 fill_colour = RGB24_TO_PIXEL32(client->buffer[0], client->buffer[1], client->buffer[2]);
126 if (!ReadFromRFBServer(client, (char*)&fill_colour, sizeof(fill_colour)))
130 if (!ReadFromRFBServer(client, (char*)&fill_colour, sizeof(fill_colour)))
134 FillRectangle(client, rx, ry, rw, rh, fill_colour);
146 return DecompressJpegRectBPP(client, rx, ry, rw, rh);
163 if (!ReadFromRFBServer(client, (char*)&filter_id, 1))
169 bitsPixel = InitFilterCopyBPP(client, rw, rh);
173 bitsPixel = InitFilterPaletteBPP(client, rw, rh);
177 bitsPixel = InitFilterGradientBPP(client, rw, rh);
185 bitsPixel = InitFilterCopyBPP(client, rw, rh);
195 if (!ReadFromRFBServer(client, (char*)client->buffer, rh * rowSize))
198 buffer2 = &client->buffer[TIGHT_MIN_TO_COMPRESS * 4];
199 filterFn(client, rh, (CARDBPP *)buffer2);
201 CopyRectangle(client, (uint8_t *)buffer2, rx, ry, rw, rh);
207 compressedLen = (int)ReadCompactLen(client);
215 zs = &client->zlibStream[stream_id];
216 if (!client->zlibStreamActive[stream_id]) {
226 client->zlibStreamActive[stream_id] = TRUE;
232 buffer2 = &client->buffer[bufferSize];
248 if (!ReadFromRFBServer(client, (char*)client->zlib_buffer, portionLen))
253 zs->next_in = (Bytef *)client->zlib_buffer;
257 zs->next_out = (Bytef *)&client->buffer[extraBytes];
274 filterFn(client, numRows, (CARDBPP *)buffer2);
278 memcpy(client->buffer, &client->buffer[numRows * rowSize], extraBytes);
280 CopyRectangle(client, (uint8_t *)buffer2, rx, ry+rowsProcessed, rw, numRows);
302 InitFilterCopyBPP (rfbClient* client, int rw, int rh)
304 client->rectWidth = rw;
307 if (client->format.depth == 24 && client->format.redMax == 0xFF &&
308 client->format.greenMax == 0xFF && client->format.blueMax == 0xFF) {
309 client->cutZeros = TRUE;
312 client->cutZeros = FALSE;
320 FilterCopyBPP (rfbClient* client, int numRows, CARDBPP *dst)
326 if (client->cutZeros) {
328 for (x = 0; x < client->rectWidth; x++) {
329 dst[y*client->rectWidth+x] =
330 RGB24_TO_PIXEL32(client->buffer[(y*client->rectWidth+x)*3],
331 client->buffer[(y*client->rectWidth+x)*3+1],
332 client->buffer[(y*client->rectWidth+x)*3+2]);
339 memcpy (dst, client->buffer, numRows * client->rectWidth * (BPP / 8));
343 InitFilterGradientBPP (rfbClient* client, int rw, int rh)
347 bits = InitFilterCopyBPP(client, rw, rh);
348 if (client->cutZeros)
349 memset(client->tightPrevRow, 0, rw * 3);
351 memset(client->tightPrevRow, 0, rw * 3 * sizeof(uint16_t));
359 FilterGradient24 (rfbClient* client, int numRows, uint32_t *dst)
370 pix[c] = client->tightPrevRow[c] + client->buffer[y*client->rectWidth*3+c];
373 dst[y*client->rectWidth] = RGB24_TO_PIXEL32(pix[0], pix[1], pix[2]);
376 for (x = 1; x < client->rectWidth; x++) {
378 est[c] = (int)client->tightPrevRow[x*3+c] + (int)pix[c] -
379 (int)client->tightPrevRow[(x-1)*3+c];
385 pix[c] = (uint8_t)est[c] + client->buffer[(y*client->rectWidth+x)*3+c];
388 dst[y*client->rectWidth+x] = RGB24_TO_PIXEL32(pix[0], pix[1], pix[2]);
391 memcpy(client->tightPrevRow, thisRow, client->rectWidth * 3);
398 FilterGradientBPP (rfbClient* client, int numRows, CARDBPP *dst)
401 CARDBPP *src = (CARDBPP *)client->buffer;
402 uint16_t *thatRow = (uint16_t *)client->tightPrevRow;
410 if (client->cutZeros) {
411 FilterGradient24(client, numRows, dst);
416 max[0] = client->format.redMax;
417 max[1] = client->format.greenMax;
418 max[2] = client->format.blueMax;
420 shift[0] = client->format.redShift;
421 shift[1] = client->format.greenShift;
422 shift[2] = client->format.blueShift;
428 pix[c] = (uint16_t)(((src[y*client->rectWidth] >> shift[c]) + thatRow[c]) & max[c]);
431 dst[y*client->rectWidth] = RGB_TO_PIXEL(BPP, pix[0], pix[1], pix[2]);
434 for (x = 1; x < client->rectWidth; x++) {
442 pix[c] = (uint16_t)(((src[y*client->rectWidth+x] >> shift[c]) + est[c]) & max[c]);
445 dst[y*client->rectWidth+x] = RGB_TO_PIXEL(BPP, pix[0], pix[1], pix[2]);
447 memcpy(thatRow, thisRow, client->rectWidth * 3 * sizeof(uint16_t));
452 InitFilterPaletteBPP (rfbClient* client, int rw, int rh)
457 CARDBPP *palette = (CARDBPP *)client->tightPalette;
460 client->rectWidth = rw;
462 if (!ReadFromRFBServer(client, (char*)&numColors, 1))
465 client->rectColors = (int)numColors;
466 if (++client->rectColors < 2)
470 if (client->format.depth == 24 && client->format.redMax == 0xFF &&
471 client->format.greenMax == 0xFF && client->format.blueMax == 0xFF) {
472 if (!ReadFromRFBServer(client, (char*)&client->tightPalette, client->rectColors * 3))
474 for (i = client->rectColors - 1; i >= 0; i--) {
475 palette[i] = RGB24_TO_PIXEL32(client->tightPalette[i*3],
476 client->tightPalette[i*3+1],
477 client->tightPalette[i*3+2]);
479 return (client->rectColors == 2) ? 1 : 8;
483 if (!ReadFromRFBServer(client, (char*)&client->tightPalette, client->rectColors * (BPP / 8)))
486 return (client->rectColors == 2) ? 1 : 8;
490 FilterPaletteBPP (rfbClient* client, int numRows, CARDBPP *dst)
493 uint8_t *src = (uint8_t *)client->buffer;
494 CARDBPP *palette = (CARDBPP *)client->tightPalette;
496 if (client->rectColors == 2) {
497 w = (client->rectWidth + 7) / 8;
499 for (x = 0; x < client->rectWidth / 8; x++) {
501 dst[y*client->rectWidth+x*8+7-b] = palette[src[y*w+x] >> b & 1];
503 for (b = 7; b >= 8 - client->rectWidth % 8; b--) {
504 dst[y*client->rectWidth+x*8+7-b] = palette[src[y*w+x] >> b & 1];
509 for (x = 0; x < client->rectWidth; x++)
510 dst[y*client->rectWidth+x] = palette[(int)src[y*client->rectWidth+x]];
523 DecompressJpegRectBPP(rfbClient* client, int x, int y, int w, int h)
533 compressedLen = (int)ReadCompactLen(client);
545 if (!ReadFromRFBServer(client, (char*)compressedData, compressedLen)) {
551 cinfo.client_data = client;
568 client->buffer;
572 if (client->jpegError) {
575 pixelPtr = (CARDBPP *)&client->buffer[RFB_BUFFER_SIZE / 2];
578 RGB24_TO_PIXEL(BPP, client->buffer[dx*3], client->buffer[dx*3+1], client->buffer[dx*3+2]);
580 CopyRectangle(client, (uint8_t *)&client->buffer[RFB_BUFFER_SIZE / 2], x, y + dy, w, 1);
584 if (!client->jpegError)
590 return !client->jpegError;
596 ReadCompactLen (rfbClient* client)
601 if (!ReadFromRFBServer(client, (char *)&b, 1))
605 if (!ReadFromRFBServer(client, (char *)&b, 1))
609 if (!ReadFromRFBServer(client, (char *)&b, 1))
624 rfbClient* client=(rfbClient*)cinfo->client_data;
625 client->jpegError = FALSE;
631 rfbClient* client=(rfbClient*)cinfo->client_data;
632 client->jpegError = TRUE;
633 client->jpegSrcManager->bytes_in_buffer = client->jpegBufferLen;
634 client->jpegSrcManager->next_input_byte = (JOCTET *)client->jpegBufferPtr;
642 rfbClient* client=(rfbClient*)cinfo->client_data;
643 if (num_bytes < 0 || num_bytes > client->jpegSrcManager->bytes_in_buffer) {
644 client->jpegError = TRUE;
645 client->jpegSrcManager->bytes_in_buffer = client->jpegBufferLen;
646 client->jpegSrcManager->next_input_byte = (JOCTET *)client->jpegBufferPtr;
648 client->jpegSrcManager->next_input_byte += (size_t) num_bytes;
649 client->jpegSrcManager->bytes_in_buffer -= (size_t) num_bytes;
664 rfbClient* client=(rfbClient*)cinfo->client_data;
665 client->jpegBufferPtr = compressedData;
666 client->jpegBufferLen = (size_t)compressedLen;
668 if(client->jpegSrcManager == NULL)
669 client->jpegSrcManager = malloc(sizeof(struct jpeg_source_mgr));
670 client->jpegSrcManager->init_source = JpegInitSource;
671 client->jpegSrcManager->fill_input_buffer = JpegFillInputBuffer;
672 client->jpegSrcManager->skip_input_data = JpegSkipInputData;
673 client->jpegSrcManager->resync_to_restart = jpeg_resync_to_restart;
674 client->jpegSrcManager->term_source = JpegTermSource;
675 client->jpegSrcManager->next_input_byte = (JOCTET*)client->jpegBufferPtr;
676 client->jpegSrcManager->bytes_in_buffer = client->jpegBufferLen;
678 cinfo->src = client->jpegSrcManager;