Subversion Repositories planix.SVN

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#include <u.h>
#include <libc.h>
#include <bio.h>
#include <draw.h>
#include <memdraw.h>

typedef struct Pixfmt   Pixfmt;
typedef struct Colorfmt Colorfmt;
typedef struct Vnc      Vnc;

struct Colorfmt {
        int             max;
        int             shift;
};

struct Pixfmt {
        int             bpp;
        int             depth;
        int             bigendian;
        int             truecolor;
        Colorfmt        red;
        Colorfmt        green;
        Colorfmt        blue;
};

struct Vnc {
        QLock;
        int             datafd;                 /* for network connection */
        int             ctlfd;                  /* control for network connection */

        Biobuf          in;
        Biobuf          out;

        Point           dim;
        Pixfmt;
        char            *name;  /* client only */
};

enum {
        /* authentication negotiation */
        AFailed         = 0,
        ANoAuth,
        AVncAuth,

        /* vnc auth negotiation */
        VncAuthOK       = 0,
        VncAuthFailed,
        VncAuthTooMany,
        VncChalLen      = 16,

        /* server to client */
        MFrameUpdate    = 0,
        MSetCmap,
        MBell,
        MSCut,
        MSAck,

        /* client to server */
        MPixFmt         = 0,
        MFixCmap,
        MSetEnc,
        MFrameReq,
        MKey,
        MMouse,
        MCCut,

        /* image encoding methods */
        EncRaw          = 0,
        EncCopyRect     = 1,
        EncRre          = 2,
        EncCorre        = 4,
        EncHextile      = 5,
        EncZlib         = 6,  /* 6,7,8 have been used by others */
        EncTight        = 7,
        EncZHextile     = 8,
        EncMouseWarp    = 9,

        /* paramaters for hextile encoding */
        HextileDim      = 16,
        HextileRaw      = 1,
        HextileBack     = 2,
        HextileFore     = 4,
        HextileRects    = 8,
        HextileCols     = 16
};

/*
 * we're only using the ulong as a place to store bytes,
 * and as something to compare against.
 * the bytes are stored in little-endian format.
 */
typedef ulong Color;

/* auth.c */
extern  int             vncauth(Vnc*, char*);
extern  int             vnchandshake(Vnc*);
extern  int             vncsrvauth(Vnc*);
extern  int             vncsrvhandshake(Vnc*);

/* proto.c */
extern  Vnc*            vncinit(int, int, Vnc*);
extern  uchar           vncrdchar(Vnc*);
extern  ushort          vncrdshort(Vnc*);
extern  ulong           vncrdlong(Vnc*);
extern  Point           vncrdpoint(Vnc*);
extern  Rectangle       vncrdrect(Vnc*);
extern  Rectangle       vncrdcorect(Vnc*);
extern  Pixfmt          vncrdpixfmt(Vnc*);
extern  void            vncrdbytes(Vnc*, void*, int);
extern  char*           vncrdstring(Vnc*);
extern  char*   vncrdstringx(Vnc*);
extern  void            vncwrstring(Vnc*, char*);
extern  void            vncgobble(Vnc*, long);

extern  void            vncflush(Vnc*);
extern  void            vncterm(Vnc*);
extern  void            vncwrbytes(Vnc*, void*, int);
extern  void            vncwrlong(Vnc*, ulong);
extern  void            vncwrshort(Vnc*, ushort);
extern  void            vncwrchar(Vnc*, uchar);
extern  void            vncwrpixfmt(Vnc*, Pixfmt*);
extern  void            vncwrrect(Vnc*, Rectangle);
extern  void            vncwrpoint(Vnc*, Point);

extern  void            vnclock(Vnc*);          /* for writing */
extern  void            vncunlock(Vnc*);

extern  void            hexdump(void*, int);

/* implemented by clients of the io library */
extern  void            vnchungup(Vnc*);

extern  int             verbose;
extern  char*   serveraddr;

Generated by GNU Enscript 1.6.6.