ClientConnectionRaw.cpp
上传用户:sbftbdw
上传日期:2007-01-03
资源大小:379k
文件大小:2k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. //  Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory
  2. //
  3. //  This file is part of the VNC system.
  4. //
  5. //  The VNC system is free software; you can redistribute it and/or modify
  6. //  it under the terms of the GNU General Public License as published by
  7. //  the Free Software Foundation; either version 2 of the License, or
  8. //  (at your option) any later version.
  9. //
  10. //  This program is distributed in the hope that it will be useful,
  11. //  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. //  GNU General Public License for more details.
  14. //
  15. //  You should have received a copy of the GNU General Public License
  16. //  along with this program; if not, write to the Free Software
  17. //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
  18. //  USA.
  19. //
  20. // If the source code for the VNC system is not available from the place 
  21. // whence you received this file, check http://www.orl.co.uk/vnc or contact
  22. // the authors on vnc@orl.co.uk for information on obtaining it.
  23. // Raw Encoding
  24. //
  25. // The bits of the ClientConnection object to do with Raw.
  26. #include "stdhdrs.h"
  27. #include "vncviewer.h"
  28. #include "ClientConnection.h"
  29. void ClientConnection::ReadRawRect(rfbFramebufferUpdateRectHeader *pfburh) {
  30. UINT numpixels = pfburh->r.w * pfburh->r.h;
  31.     // this assumes at least one byte per pixel. Naughty.
  32. UINT numbytes = numpixels * m_minPixelBytes;
  33. // Read in the whole thing
  34.     CheckBufferSize(numbytes);
  35. ReadExact(m_netbuf, numbytes);
  36. SETUP_COLOR_SHORTCUTS;
  37. // This big switch is untidy but fast
  38. switch (m_myFormat.bitsPerPixel) {
  39. case 8:
  40. SETPIXELS(8, pfburh->r.x, pfburh->r.y, pfburh->r.w, pfburh->r.h)
  41. break;
  42. case 16:
  43. SETPIXELS(16, pfburh->r.x, pfburh->r.y, pfburh->r.w, pfburh->r.h)
  44. break;
  45. case 24:
  46. case 32:
  47. SETPIXELS(32, pfburh->r.x, pfburh->r.y, pfburh->r.w, pfburh->r.h)            
  48. break;
  49. default:
  50. log.Print(0, _T("Invalid number of bits per pixel: %dn"), m_myFormat.bitsPerPixel);
  51. return;
  52. }
  53. }