/* * Copyright 2009, Haiku, Inc. * Distributed under the terms of the MIT License. * * Authors: * Michael Lotz */ #ifndef REMOTE_VIEW_H #define REMOTE_VIEW_H #include #include #include #include class BBitmap; class NetReceiver; class NetSender; class StreamingRingBuffer; struct engine_state; class RemoteView : public BView { public: RemoteView(BRect frame, const char *remoteHost, uint16 remotePort); virtual ~RemoteView(); status_t InitCheck(); virtual void AttachedToWindow(); virtual void Draw(BRect updateRect); virtual void MouseMoved(BPoint where, uint32 code, const BMessage *dragMessage); virtual void MouseDown(BPoint where); virtual void MouseUp(BPoint where); virtual void KeyDown(const char *bytes, int32 numBytes); virtual void KeyUp(const char *bytes, int32 numBytes); virtual void MessageReceived(BMessage *message); private: void _SendMouseMessage(uint16 code, BPoint where); void _SendKeyMessage(uint16 code, const char *bytes, int32 numBytes); static int _StateCompareByKey(const uint32 *key, const engine_state *state); engine_state * _CreateState(uint32 token); void _DeleteState(uint32 token); engine_state * _FindState(uint32 token); static int32 _DrawEntry(void *data); void _DrawThread(); BRect _BuildInvalidateRect(BPoint *points, int32 pointCount); status_t fInitStatus; bool fIsConnected; StreamingRingBuffer * fReceiveBuffer; StreamingRingBuffer * fSendBuffer; BNetEndpoint * fEndpoint; NetReceiver * fReceiver; NetSender * fSender; bool fStopThread; thread_id fDrawThread; BBitmap * fOffscreenBitmap; BView * fOffscreen; BCursor fViewCursor; BBitmap * fCursorBitmap; BRect fCursorFrame; bool fCursorVisible; BObjectList fStates; }; #endif // REMOTE_VIEW_H