📄 rfb.h
字号:
* This macro creates an empty region (ie. a region with no areas) if it is * given a rectangle with a width or height of zero. It appears that * REGION_INTERSECT does not quite do the right thing with zero-width * rectangles, but it should with completely empty regions. */#define SAFE_REGION_INIT(pscreen, preg, rect, size) \{ \ if ( ( (rect) ) && \ ( ( (rect)->x2 == (rect)->x1 ) || \ ( (rect)->y2 == (rect)->y1 ) ) ) { \ REGION_INIT( (pscreen), (preg), NullBox, 0 ); \ } else { \ REGION_INIT( (pscreen), (preg), (rect), (size) ); \ } \}/* * An rfbGCRec is where we store the pointers to the original GC funcs and ops * which we wrap (NULL means not wrapped). */typedef struct { GCFuncs *wrapFuncs; GCOps *wrapOps;} rfbGCRec, *rfbGCPtr;/* * Macros for endian swapping. */#define Swap16(s) ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff))#define Swap32(l) (((l) >> 24) | \ (((l) & 0x00ff0000) >> 8) | \ (((l) & 0x0000ff00) << 8) | \ ((l) << 24))static const int rfbEndianTest = 1;#define Swap16IfLE(s) (*(const char *)&rfbEndianTest ? Swap16(s) : (s))#define Swap32IfLE(l) (*(const char *)&rfbEndianTest ? Swap32(l) : (l))/* * Macro to fill in an rfbCapabilityInfo structure (protocol 3.7t). * Normally, using macros is no good, but this macro saves us from * writing constants twice -- it constructs signature names from codes. * Note that "code_sym" argument should be a single symbol, not an expression. */#define SetCapInfo(cap_ptr, code_sym, vendor) \{ \ rfbCapabilityInfo *pcap; \ pcap = (cap_ptr); \ pcap->code = Swap32IfLE(code_sym); \ memcpy(pcap->vendorSignature, (vendor), \ sz_rfbCapabilityInfoVendor); \ memcpy(pcap->nameSignature, sig_##code_sym, \ sz_rfbCapabilityInfoName); \}/* init.c */extern char *desktopName;extern char rfbThisHost[];extern Atom VNC_LAST_CLIENT_ID;extern rfbScreenInfo rfbScreen;extern int rfbGCIndex;extern int inetdSock;extern struct in_addr interface;extern int rfbBitsPerPixel(int depth);extern void rfbLog(char *format, ...);extern void rfbLogPerror(char *str);/* sockets.c */extern int rfbMaxClientWait;extern int udpPort;extern int udpSock;extern Bool udpSockConnected;extern int rfbPort;extern int rfbListenSock;extern void rfbInitSockets();extern void rfbDisconnectUDPSock();extern void rfbCloseSock();extern void rfbCheckFds();extern void rfbWaitForClient(int sock);extern int rfbConnect(char *host, int port);extern int ReadExact(int sock, char *buf, int len);extern int WriteExact(int sock, char *buf, int len);extern int ListenOnTCPPort(int port);extern int ListenOnUDPPort(int port);extern int ConnectToTcpAddr(char *host, int port);/* cmap.c */extern ColormapPtr rfbInstalledColormap;extern int rfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps);extern void rfbInstallColormap(ColormapPtr pmap);extern void rfbUninstallColormap(ColormapPtr pmap);extern void rfbStoreColors(ColormapPtr pmap, int ndef, xColorItem *pdefs);/* draw.c */extern int rfbDeferUpdateTime;extern Bool rfbCloseScreen(int,ScreenPtr);extern Bool rfbCreateGC(GCPtr);extern void rfbPaintWindowBackground(WindowPtr, RegionPtr, int what);extern void rfbPaintWindowBorder(WindowPtr, RegionPtr, int what);extern void rfbCopyWindow(WindowPtr, DDXPointRec, RegionPtr);extern void rfbClearToBackground(WindowPtr, int x, int y, int w, int h, Bool generateExposures);extern RegionPtr rfbRestoreAreas(WindowPtr, RegionPtr);/* cutpaste.c */extern void rfbSetXCutText(char *str, int len);extern void rfbGotXCutText(char *str, int len);/* kbdptr.c */extern Bool compatibleKbd;extern unsigned char ptrAcceleration;extern void PtrDeviceInit();extern void PtrDeviceOn();extern void PtrDeviceOff();extern void PtrDeviceControl();extern void PtrAddEvent(int buttonMask, int x, int y, rfbClientPtr cl);extern void KbdDeviceInit();extern void KbdDeviceOn();extern void KbdDeviceOff();extern void KbdAddEvent(Bool down, KeySym keySym, rfbClientPtr cl);extern void KbdReleaseAllKeys();/* rfbserver.c *//* * UPDATE_BUF_SIZE must be big enough to send at least one whole line of the * framebuffer. So for a max screen width of say 2K with 32-bit pixels this * means 8K minimum. */#define UPDATE_BUF_SIZE 30000extern char updateBuf[UPDATE_BUF_SIZE];extern int ublen;extern rfbClientPtr rfbClientHead;extern rfbClientPtr pointerClient;extern Bool rfbAlwaysShared;extern Bool rfbNeverShared;extern Bool rfbDontDisconnect;extern Bool rfbViewOnly; /* run server in view-only mode - Ehud Karni SW */extern void rfbNewClientConnection(int sock);extern rfbClientPtr rfbReverseConnection(char *host, int port);extern void rfbClientConnectionGone(int sock);extern void rfbProcessClientMessage(int sock);extern void rfbNewUDPConnection(int sock);extern void rfbProcessUDPInput(int sock);extern Bool rfbSendFramebufferUpdate(rfbClientPtr cl);extern Bool rfbSendRectEncodingRaw(rfbClientPtr cl, int x,int y,int w,int h);extern Bool rfbSendUpdateBuf(rfbClientPtr cl);extern Bool rfbSendSetColourMapEntries(rfbClientPtr cl, int firstColour, int nColours);extern void rfbSendBell();extern void rfbSendServerCutText(char *str, int len);/* translate.c */extern Bool rfbEconomicTranslate;extern rfbPixelFormat rfbServerFormat;extern void rfbTranslateNone(char *table, rfbPixelFormat *in, rfbPixelFormat *out, char *iptr, char *optr, int bytesBetweenInputLines, int width, int height);extern Bool rfbSetTranslateFunction(rfbClientPtr cl);extern void rfbSetClientColourMaps(int firstColour, int nColours);extern Bool rfbSetClientColourMap(rfbClientPtr cl, int firstColour, int nColours);/* httpd.c */extern int httpPort;extern char *httpDir;extern void httpInitSockets();extern void httpCheckFds();/* auth.c */extern char *rfbAuthPasswdFile;extern void rfbAuthNewClient(rfbClientPtr cl);extern void rfbProcessClientSecurityType(rfbClientPtr cl);extern void rfbProcessClientTunnelingType(rfbClientPtr cl);extern void rfbProcessClientAuthType(rfbClientPtr cl);extern void rfbVncAuthProcessResponse(rfbClientPtr cl);extern void rfbClientConnFailed(rfbClientPtr cl, char *reason);extern void rfbClientAuthFailed(rfbClientPtr cl, char *reason);extern void rfbClientAuthSucceeded(rfbClientPtr cl, CARD32 authType);/* Functions to prevent too many successive authentication failures */extern Bool rfbAuthConsiderBlocking(void);extern void rfbAuthUnblock(void);extern Bool rfbAuthIsBlocked(void);/* rre.c */extern Bool rfbSendRectEncodingRRE(rfbClientPtr cl, int x,int y,int w,int h);/* corre.c */extern Bool rfbSendRectEncodingCoRRE(rfbClientPtr cl, int x,int y,int w,int h);/* hextile.c */extern Bool rfbSendRectEncodingHextile(rfbClientPtr cl, int x, int y, int w, int h);/* zlib.c *//* Minimum zlib rectangle size in bytes. Anything smaller will * not compress well due to overhead. */#define VNC_ENCODE_ZLIB_MIN_COMP_SIZE (17)/* Set maximum zlib rectangle size in pixels. Always allow at least * two scan lines. */#define ZLIB_MAX_RECT_SIZE (128*256)#define ZLIB_MAX_SIZE(min) ((( min * 2 ) > ZLIB_MAX_RECT_SIZE ) ? \ ( min * 2 ) : ZLIB_MAX_RECT_SIZE )extern Bool rfbSendRectEncodingZlib(rfbClientPtr cl, int x, int y, int w, int h);/* tight.c */#define TIGHT_DEFAULT_COMPRESSION 6extern Bool rfbTightDisableGradient;extern int rfbNumCodedRectsTight(rfbClientPtr cl, int x,int y,int w,int h);extern Bool rfbSendRectEncodingTight(rfbClientPtr cl, int x,int y,int w,int h);/* cursor.c */extern Bool rfbSendCursorShape(rfbClientPtr cl, ScreenPtr pScreen);extern Bool rfbSendCursorPos(rfbClientPtr cl, ScreenPtr pScreen);/* stats.c */extern void rfbResetStats(rfbClientPtr cl);extern void rfbPrintStats(rfbClientPtr cl);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -