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

远程控制编程

开发平台:

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. // vncBuffer object
  24. // The vncBuffer object provides a client-local copy of the screen
  25. // It can tell the client which bits have changed in a given region
  26. // It uses the specified vncDesktop to read screen data from
  27. class vncBuffer;
  28. #if !defined(_WINVNC_VNCBUFFER)
  29. #define _WINVNC_VNCBUFFER
  30. #pragma once
  31. // Includes
  32. #include "vncDesktop.h"
  33. #include "vncEncoder.h"
  34. #include "vncRegion.h"
  35. #include "RectList.h"
  36. // Class definition
  37. class vncBuffer
  38. {
  39. // Methods
  40. public:
  41. // Create/Destroy methods
  42. vncBuffer(vncDesktop *desktop);
  43. ~vncBuffer();
  44. // BUFFER INFO
  45. RECT GetSize();
  46. rfbPixelFormat GetLocalFormat();
  47. BYTE *GetClientBuffer();
  48. UINT GetClientBuffSize();
  49. BOOL GetRemotePalette(RGBQUAD *quadbuff, UINT ncolours);
  50. // BUFFER MANIPULATION
  51. BOOL CheckBuffer();
  52. // SCREEN SCANNING
  53. void Clear(RECT &rect);
  54. void GetChangedRegion(vncRegion &rgn, RECT &rect);
  55. UINT GetNumCodedRects(RECT &rect);
  56. // SCREEN CAPTURE
  57. void GrabRect(RECT &rect);
  58. void CopyRect(RECT &dest, POINT &source);
  59. RECT GrabMouse();
  60. BOOL SetClientFormat(rfbPixelFormat &format);
  61. // ENCODING
  62. BOOL SetEncoding(CARD32 encoding);
  63. UINT TranslateRect(const RECT &rect);
  64. // Implementation
  65. protected:
  66. BYTE *m_mainbuff;
  67. BYTE *m_backbuff;
  68. UINT m_mainsize;
  69. BYTE *m_clientbuff;
  70. UINT m_clientbuffsize;
  71. BOOL m_clientfmtset;
  72. UINT m_bytesPerRow;
  73. rfbServerInitMsg m_scrinfo;
  74. rfbPixelFormat m_clientformat;
  75. rfbTranslateFnType m_transfunc;
  76. vncDesktop *m_desktop;
  77. vncEncoder *m_encoder;
  78. };
  79. #endif // _WINVNC_VNCBUFFER