barrier/synergy/IScreen.h

71 lines
2.2 KiB
C++

#ifndef ISCREEN_H
#define ISCREEN_H
#include "IInterface.h"
#include "ClipboardTypes.h"
class IClipboard;
// the interface for platform dependent screen implementations. each
// platform will derive a type from IScreen for interaction with the
// platform's screen that's common to primary and secondary screens.
class IScreen : public IInterface {
public:
// manipulators
// open the screen
virtual void open() = 0;
// runs an event loop and returns when exitMainLoop() is called.
// must be called between open() and close().
virtual void mainLoop() = 0;
// force mainLoop() to return
virtual void exitMainLoop() = 0;
// close the screen
virtual void close() = 0;
// set the contents of the clipboard
virtual bool setClipboard(ClipboardID, const IClipboard*) = 0;
// check clipboard ownership and notify IScreenReceiver (set through
// some other interface) if any changed
virtual void checkClipboards() = 0;
// open/close the screen saver. if notify is true then this object
// will call IScreenEventHandler's onScreenSaver() when the screensaver
// activates or deactivates until close. if notify is false then
// the screen saver is disabled on open and restored on close.
virtual void openScreensaver(bool notify) = 0;
virtual void closeScreensaver() = 0;
// activate or deactivate the screen saver
virtual void screensaver(bool activate) = 0;
// ensure that this thread attached with the visible desktop. this is
// mainly intended for windows which has an artificial distinction
// between desktops and a thread cannot interact with the visible
// desktop unless the thread is attached to that desktop.
virtual void syncDesktop() = 0;
// accessors
// get the contents of the clipboard
virtual bool getClipboard(ClipboardID, IClipboard*) const = 0;
// get the shape of the screen
virtual void getShape(SInt32& x, SInt32& y,
SInt32& w, SInt32& h) const = 0;
// get the current cursor coordinates
virtual void getCursorPos(SInt32& x, SInt32& y) const = 0;
// get the cursor center position. this is where we park the
// cursor to compute cursor motion deltas and should be far from
// the edges of the screen, typically the center.
virtual void getCursorCenter(SInt32& x, SInt32& y) const = 0;
};
#endif