Copyright 2007, Francois Revol. All Rights Reserved.
This file may be used under the terms of the Be Sample Code License.
*/
#ifndef _PEN_INPUT_LOOPER_H
#define _PEN_INPUT_LOOPER_H
#include <MessageRunner.h>
#include <Messenger.h>
#include <Looper.h>
#define MSG_METHOD_ACTIVATED 'IMAc'
#define MSGF_ACTIVE "active" /* bool */
#define MSG_BEGIN_INK 'InkB'
#define MSG_END_INK 'InkE'
#define MSG_SHOW_WIN 'ShoW'
#define MSG_HIDE_WIN 'HidW'
#define MSG_CHECK_PEN_DOWN 'ChkP'
#define MSG_SET_BACKEND 'SetB'
#define MSGF_BACKEND "backend" /* string */
#define MSG_SHOW_INK 'InkS' /* toggle */
class BMenu;
class BWindow;
class PenInputServerMethod;
class PenInputInkWindow;
class PenInputBackend;
class PenInputLooper : public BLooper
{
public:
PenInputLooper(PenInputServerMethod *method);
virtual void Quit();
void DispatchMessage(BMessage *message, BHandler *handler);
void MessageReceived(BMessage *message);
void EnqueueMessage(BMessage *message);
status_t InitCheck();
void MethodActivated(bool active);
private:
friend class PenInputInkWindow;
void HandleMethodActivated(bool active);
PenInputServerMethod *fOwner;
PenInputInkWindow *fInkWindow;
PenInputBackend *fBackend;
BMenu *fDeskbarMenu;
BMessenger fInkWindowMsgr;
bool fMouseDown;
bool fStroking;
BMessageRunner *fThresholdRunner;
BMessage *fCachedMouseDown;
bool fShowInk;
bigtime_t fMouseDownThreshold;
};
#endif