#ifndef CLIENTGLOBALS_H
#define CLIENTGLOBALS_H

#include <QList>
#include <QPoint>
#include <QFlags>
#include <QMetaType>

class QAudioFormat;
namespace ClientGlobals {
     quint8 mapQtAudioFormatToRFB( const QAudioFormat &format );
     enum AuthType { AuthInvalid = 0,
                     None = 1,
                     VNC = 2,
                     TLS = 18,
                     VenCrypt = 19,
                     SASL = 20 };
     enum SubAuthType { SubTypeInvalid = 0,
                        Plain = 256,
                        TLSNone = 257,
                        TLSVNC = 258,
                        TLSPlain = 259,
                        X509None = 260,
                        X509VNC = 261,
                        X509Plain = 262,
                        X509SASL = 263,
                        TLSSASL = 264};
     enum RfbVersion { RFB_33,
                       RFB_37,
                       RFB_38 };
     enum RfbEncoding { EncodingDone = -2,
                        EncodingInvalid = -1,
                        Raw = 0,
                        CopyRect = 1,
                        RRE = 2,
                        CoRRE = 4,
                        Hextile = 5,
                        Zlib = 6,
                        PointerTypeChange = 0XFFFFFEFF,
                        DesktopResize = 0xFFFFFF21,
                        NativeKeys = 0XFFFFFEFE,
                        Audio = 0XFFFFFEFD,
                        WMVi = 0x574D5669 };

    RfbEncoding mapRfbEncoding( const QString &name);
    AuthType mapAuthType( const QString &name );
    SubAuthType mapAuthSubType( const QString &name );
}

// Zlib, Hextile, Raw
struct KeyEvent {
    quint32 xkey;
    quint32 scanCode;
    bool isPressed;
};
Q_DECLARE_METATYPE(KeyEvent);

struct MouseEvent {
    enum ButtonMask { None = 0x0,
                      Left = 0x01,
                      Middle = 0x02,
                      Right = 0x04,
                      WheelUp = 0x08,
                      WheelDown = 0x10 };
    int buttonMask;
    QPoint position;
};
Q_DECLARE_METATYPE(MouseEvent);

#endif // CLIENTGLOBALS_H

