AppSharing interface
    
        FrameBuffer: Interface to capture desktop or application bitmaps, find differences between bitmaps, generate blocks and compressing them.
    
    
        Canvas: Interface to decompress blocks and display them.
    
    File information
    
    
    Classes
    IFrameBuffer
    class IFrameBuffer {
public:
    static IImageBuffer * CreateImageBuffer(class IIoMux * const iomux, class UFrameBuffer * const user, class IInstanceLog * const log, class MediaConfiguration * mediaConfiguration);
    virtual ~IFrameBuffer() {};
    virtual void Capture(unsigned int appId) = 0;  // MakeCapture, CreateDiffBlocks and CompressDiffBlocks
    virtual bool Mark(unsigned int appId, int coorX, int coorY, int dimX, int dimY) = 0;
    virtual void Clean(unsigned int appId) = 0;
    virtual void SubscribeApplications(void) = 0;
    virtual void UnsubscribeApplications(void) = 0;
    virtual void SetMousePosition(int coorX, int coorY) = 0;
    virtual void CloseFrameBuffer(void) = 0;
};
    Overview
    Base class for the frame buffer interface.
    Public functions
    CreateFrameBuffer
    
        Creates an instance of the frame buffer.
        Parameters
        
            
                | class IIoMux * const iomux | 
                
                    iomux is the IIoMux instance of the application.
                 | 
            
            
                | class UFrameBuffer * const user | 
                
                    UFrameBuffer instance that will receive the callbacks from the frame buffer.
                 | 
            
            
                | class IInstanceLog * const log | 
                
                    The IInstanceLog interface provides AppInstance related logs which are controlled by the log flag LOG_APPSHARING.
                 | 
            
        
    
    Capture
    
        Capture a bitmap of application.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
        
    
    Mark
    
        Mark area in the bitmap for retransmission.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
            
                | int coorX | 
            
            
                | int coorY | 
            
            
                | int dimX | 
            
            
                | int dimY | 
            
        
    
    Clean
    
        Clean saved information about a previous capture.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
        
    
    SubscribeApplications
    
        Request the frame to provide a list of available applications and future updates.
    
    UnsubscribeApplications
    
        Stop receiving updates of the applications.
    
    RequestNewPicture
    
        Send a whole new picture of an application.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
        
    
    CloseFrameBuffer
    
        Close the frame buffer.
    
    UFrameBuffer
    class UFrameBuffer {
public:
    virtual void Add(unsigned int id, const char * name, const char * description, const char * icon,  const char * thumbnail, void * handle) {};
    virtual void Update(unsigned int id, const char * name, const char * description, const char * icon,  const char * thumbnail) {};
    virtual void Remove(unsigned int id) {};
    virtual void Event(void * buf, size_t len) {};
    virtual void HasData(unsigned int id) {};
    virtual void CloseComplete() {};
};
    Overview
    A class that receives updates from the frame buffer interface.
    Public functions
    Add
    
        Provide information about an application.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
            
                | const char * name | 
                
                    Name of the application.
                 | 
            
            
                | const char * description | 
                
                    Description of the application.
                 | 
            
            
                | const char * icon | 
                
                    Icon for the application.
                 | 
            
            
                | const char * thumbnail | 
                
                    Thumbnail of the application.
                 | 
            
            
                | void * handle | 
                
                    Platform dependent handle for the application.
                 | 
            
        
    
    Update
    
        Update information about an application.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
            
                | const char * name | 
                
                    Name of the application.
                 | 
            
            
                | const char * description | 
                
                    Description of the application.
                 | 
            
            
                | const char * icon | 
                
                    Icon for the application.
                 | 
            
            
                | const char * thumbnail | 
                
                    Thumbnail of the application.
                 | 
            
        
    
    Remove
    
        Remove application.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
        
    
    HasData
    
        Frame Buffer has data to send for an application.
        Parameters
        
            
                | unsigned int appId | 
                
                    id of an application.
                 | 
            
        
    
    CloseComplete
    
        Frame Buffer was closed.
    
    CompressBlock
    class CompressedBlock {
public:
    CompressedBlock() {
        this->buf = NULL;
        this->len = 0;
        this->first = false;
        this->last = false;
    };
    ~CompressedBlock() { if(this->buf) free(this->buf); };
    int coorX;
    int coorY;
    int dimX;
    int dimY;
    int picW;
    int picH;
    word seq;
    enum CompressionType compressionType;
    enum BlockType blockType;
    int numEqBlocks;
    unsigned char *buf;
    int len;
    int msg;
    bool first;
    bool last;
};
    Overview
    Provides all the information about a compress block.
    CompressedBlockNode
    class CompressedBlockNode {
public:
    int userId;
    int appId;
    bool retransmissions;
public:
    CompressedBlockNode(class CompressedBlock *pCompBlock, int userId, int appId, bool retransmissions) {
        this->pCompBlock = pCompBlock;
        this->retransmissions = retransmissions;
        this->appId = appId;
        this->userId = userId;
    };
    ~CompressedBlockNode() {
        if(pCompBlock) delete pCompBlock;
    }
    int GetUserId(void) { return userId; };
    int GetAppId(void) { return appId; };
    bool GetRetransmissions(void) { return retransmissions; };
    class CompressedBlock *pCompBlock;
};
    Overview
    Compress block for a user and application id.
    ICanvas
    class ICanvas {
public:
    static ICanvas * CreateCanvas(class IIoMux * const iomux, class UCanvas * const user, class IInstanceLog * const log);
    virtual ~ICanvas() {};
    virtual void PutBlock(unsigned int userId, unsigned int appId, class CompressedBlock * block) = 0;
    virtual void DrawMouse(unsigned int userId, unsigned int appId, enum MouseType mouse, int coorX, int coorY) = 0;
    virtual void Add(unsigned int userId, char * userName, unsigned int appId, char * appName, char * appDesc) = 0;
    virtual void Update(unsigned int userId, char * userName, unsigned int appId, char * appName, char * appDesc) = 0;
    virtual void Remove(unsigned int userId, unsigned int appId) = 0;
    virtual void CloseCanvas(void) = 0;
};
    Overview
    Base class for the canvas interface.
    Public functions
    CreateCanvas
    
        Creates an instance of the canvas interface.
        Parameters
        
            
                | class IIoMux * const iomux | 
                
                    iomux is the IIoMux instance of the application.
                 | 
            
            
                | class UCanvas * const user | 
                
                    UCanvas instance that will receive the callbacks from the canvas.
                 | 
            
            
                | class IInstanceLog * const log | 
                
                    The IInstanceLog interface provides AppInstance related logs which are controlled by the log flag LOG_APPSHARING.
                 | 
            
        
    
    PuBlock
    
        Pass a compress block to the canvas interface.
        Parameters
        
            
                | unsigned int userId | 
                
                    Blocks belongs to user id.
                 | 
            
            
                | unsigned int appId | 
                
                    Blocks belongs to application id.
                 | 
            
            
                | class CompressedBlock * block | 
                
                    Compress block.
                 | 
            
        
    
    DrawMouse
    
        Draw mouse type at the specific position.
        Parameters
        
            
                | unsigned int userId | 
                
                    Blocks belongs to user id.
                 | 
            
            
                | unsigned int appId | 
                
                    Blocks belongs to application id.
                 | 
            
            
                | enum MouseType mouse | 
                
                    Mouse to display.
                 | 
            
            
                | int coorX | 
            
            
                | int coorY | 
            
        
    
    Add
    
        Compress Blocks for a new application received.
        Parameters
        
            
                | unsigned int userId | 
                
                    Blocks belongs to user id.
                 | 
            
            
                | char * userName | 
                
                    Name of the user.
                 | 
            
            
                | unsigned int appId | 
                
                    Blocks belongs to application id.
                 | 
            
            
                | char * appName | 
                
                    Name of the application.
                 | 
            
            
                | char * appDesc | 
                
                    Description of the application.
                 | 
            
        
    
    Update
    
        New information for an application received.
        Parameters
        
            
                | unsigned int userId | 
                
                    Blocks belongs to user id.
                 | 
            
            
                | char * userName | 
                
                    Name of the user.
                 | 
            
            
                | unsigned int appId | 
                
                    Blocks belongs to application id.
                 | 
            
            
                | char * appName | 
                
                    Name of the application.
                 | 
            
            
                | char * appDesc | 
                
                    Description of the application.
                 | 
            
        
    
    Remove
    
        Application was Removed.
        Parameters
        
            
                | unsigned int userId | 
                
                    Blocks belongs to user id.
                 | 
            
            
                | unsigned int appId | 
                
                    Blocks belongs to application id.
                 | 
            
        
    
    CloseCanvas
    
        Close canvas interface
    
    UCanvas
    class UCanvas {
public:
    virtual bool IsDesktopShared() = 0;
    virtual bool IsSharing(void) = 0;
    virtual bool GetApplicationPosition(unsigned int appId, int * coorX, int * coorY) = 0;
    virtual void SetWindowFront(unsigned int appId, int coorX, int coorY) = 0;
    virtual void Event(void * buf, size_t len) = 0;
    virtual void Send(void * buf, size_t len) = 0;
    virtual void SendTo(void * buf, size_t len, unsigned short senderId) = 0;
    virtual void Resend(unsigned short seq, unsigned short senderId) = 0;
    virtual void CloseComplete(void) = 0;
};
    Overview
    A class that receives updates from the canvas interface.
    Public functions
    CloseComplete
    
        Canvas interface was closed