/*
* Copyright (C) 2002 RealVNC Ltd.
* Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
/*
* vncviewer.h for Vnc2Swf
* $Id: vncviewer.h,v 1.4 2005/10/29 05:22:05 euske Exp $
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <unistd.h>
#include <X11/IntrinsicP.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
#include <X11/Xmd.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <X11/Xmu/StdSel.h>
#include "rfbproto.h"
extern int endianTest;
#define Swap16IfLE(s) \
(*(char *)&endianTest ? ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff)) : (s))
#define Swap32IfLE(l) \
(*(char *)&endianTest ? ((((l) & 0xff000000) >> 24) | \
(((l) & 0x00ff0000) >> 8) | \
(((l) & 0x0000ff00) << 8) | \
(((l) & 0x000000ff) << 24)) : (l))
#define MAX_ENCODINGS 10
#define FLASH_PORT_OFFSET 5400
#define LISTEN_PORT_OFFSET 5500
#define SERVER_PORT_OFFSET 5900
/* argsresources.c */
typedef struct {
Bool shareDesktop;
Bool viewOnly;
Bool fullScreen;
Bool autoDetect;
String encodingsString;
Bool useBGR233;
int nColours;
Bool useSharedColours;
Bool forceOwnCmap;
Bool forceTrueColour;
int requestedDepth;
Bool useShm;
int wmDecorationWidth;
int wmDecorationHeight;
char *passwordFile;
Bool passwordDialog;
int rawDelay;
int copyRectDelay;
Bool debug;
int popupButtonCount;
int bumpScrollTime;
int bumpScrollPixels;
/* vnc2swf */
char* titleFormat;
int frameRate;
String dumpfileString;
Bool startRecording;
Bool isRecording;
Bool showDesktop, showStatus;
char* clippingGeometry;
int cgx0, cgy0, cgw, cgh, cgx1, cgy1;
} AppData;
extern AppData appData;
extern char *fallback_resources[];
extern char vncServerHost[];
extern int vncServerPort;
extern Bool listenSpecified;
extern int listenPort, flashPort;
extern XrmOptionDescRec cmdLineOptions[];
extern int numCmdLineOptions;
extern void GetArgsAndResources(int argc, char *argv[]);
extern void SetFullScreenState(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void SetBGR233State(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void SetAutoState(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void ToggleAuto(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void ToggleBGR233(Widget w, XEvent *event, String *params,
Cardinal *num_params);
/* colour.c */
extern unsigned long BGR233ToPixel[];
extern Colormap cmap;
extern Visual *vis;
extern unsigned int visdepth, visbpp;
extern Bool usingBGR233;
extern unsigned int redRv[], greenRv[], blueRv[];
extern void GetVisualAndCmap();
extern void SetMyFormatFromVisual();
extern void InitReverseMapping();
/* desktop.c */
extern Atom wmDeleteWindow;
extern Widget form, viewport, desktop;
extern Window desktopWin;
extern GC gc;
extern Dimension dpyWidth, dpyHeight;
extern XImage* image;
extern void DesktopInitBeforeRealization();
extern void DesktopInitAfterRealization();
extern void SendRFBEvent(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void CopyDataToScreen(char *buf, int x, int y, int width, int height);
extern void SynchroniseScreen();
extern void DisplayRectangle(Pixel pix, int rx, int ry, int rw, int rh);
extern void CopyRectangularArea(int x0, int y0, int w, int h, int x1, int y1);
extern void DisplayStatus();
extern void ToggleStatus(Widget w, XEvent *event, String *params,
Cardinal *num_params);
/* dialogs.c */
extern void ServerDialogDone(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern char *DoServerDialog();
extern void PasswordDialogDone(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern char *DoPasswordDialog();
/* fullscreen.c */
extern void ToggleFullScreen(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern Bool BumpScroll(XEvent *ev);
extern void FullScreenOn();
extern void FullScreenOff();
/* listen.c */
extern void listenForIncomingConnections();
/* misc.c */
extern void CommonInit();
extern void ToplevelInitBeforeRealization();
extern void ToplevelInitAfterRealization();
extern Time TimeFromEvent(XEvent *ev);
extern void Pause(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void Quit(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void Cleanup();
/* popup.c */
extern Widget popup;
extern void ShowPopup(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void HidePopup(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void CreatePopup();
/* rfbproto.c */
extern Bool canUseCoRRE;
extern Bool canUseHextile;
extern char *desktopName;
extern rfbPixelFormat myFormat;
extern Bool pendingFormatChange;
extern rfbServerInitMsg si;
extern char *serverCutText;
extern Bool newServerCutText;
extern Bool InitialiseRFBConnection();
extern Bool SendSetPixelFormat();
extern Bool SendSetEncodings();
extern void UpdateNeeded(int x, int y, int w, int h);
extern Bool RequestNewUpdate();
extern Bool CheckUpdateNeeded();
extern Bool SendPointerEvent(int x, int y, int buttonMask);
extern Bool SendKeyEvent(CARD32 key, Bool down);
extern Bool SendClientCutText(char *str, int len);
extern Bool HandleRFBServerMessage();
extern void PrintPixelFormat(rfbPixelFormat *format);
/* selection.c */
extern void InitialiseSelection();
extern void SelectionToVNC(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void SelectionFromVNC(Widget w, XEvent *event, String *params,
Cardinal *num_params);
/* shm.c */
extern XImage *CreateShmImage();
extern void ShmCleanup();
/* sockets.cxx */
extern Bool sameMachine;
extern Bool ConnectToRFBServer(const char *hostname, int port);
extern Bool SetRFBSock(int sock);
extern void StartTiming();
extern void StopTiming();
extern int KbitsPerSecond();
extern int TimeWaitedIn100us();
extern Bool ReadFromRFBServer(char *out, unsigned int n);
extern Bool WriteToRFBServer(char *buf, int n);
extern int ConnectToTcpAddr(const char* hostname, int port);
extern int ListenAtTcpPort(int port);
extern int AcceptTcpConnection(int listenSock);
extern int StringToIPAddr(const char *str, unsigned int *addr);
/* vncviewer.c */
extern char *programName;
extern XtAppContext appContext;
extern Display* dpy;
extern Widget toplevel;
/* zrle.cxx */
extern Bool zrleDecode(int x, int y, int w, int h);
/* writeswf.c */
extern Bool InitMovie(char* filename, float framerate, int w, int h);
extern Bool FinishMovie(void);
extern void FlushChangedImages(void);
extern void ImageChanged(int x, int y, int w, int h);
extern void SetRecordingState(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void ToggleRecording(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void SwitchMethod(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void ResetRecording(Widget w, XEvent *event, String *params,
Cardinal *num_params);
extern void TurnRecordingOn(int sig);
extern void TurnRecordingOff(int sig);
syntax highlighted by Code2HTML, v. 0.9.1