1/* 2 Copyright 2007, Francois Revol. All Rights Reserved. 3 This file may be used under the terms of the Be Sample Code License. 4*/ 5#ifndef _PEN_INPUT_LOOPER_H 6#define _PEN_INPUT_LOOPER_H 7 8#include <MessageRunner.h> 9#include <Messenger.h> 10#include <Looper.h> 11 12/* internal messages */ 13 14#define MSG_METHOD_ACTIVATED 'IMAc' 15#define MSGF_ACTIVE "active" /* bool */ 16 17#define MSG_BEGIN_INK 'InkB' 18#define MSG_END_INK 'InkE' 19 20#define MSG_SHOW_WIN 'ShoW' 21#define MSG_HIDE_WIN 'HidW' 22 23#define MSG_CHECK_PEN_DOWN 'ChkP' 24 25/* menu messages */ 26 27#define MSG_SET_BACKEND 'SetB' 28#define MSGF_BACKEND "backend" /* string */ 29 30#define MSG_SHOW_INK 'InkS' /* toggle */ 31 32 33class BMenu; 34class BWindow; 35class PenInputServerMethod; 36class PenInputInkWindow; 37class PenInputBackend; 38 39class PenInputLooper : public BLooper 40{ 41public: 42 PenInputLooper(PenInputServerMethod *method); 43 virtual void Quit(); 44 void DispatchMessage(BMessage *message, BHandler *handler); 45 void MessageReceived(BMessage *message); 46 void EnqueueMessage(BMessage *message); 47 status_t InitCheck(); 48 49// virtual ~PenInputLooper(); 50 void MethodActivated(bool active); 51 52private: 53 friend class PenInputInkWindow; 54 void HandleMethodActivated(bool active); 55 PenInputServerMethod *fOwner; 56 PenInputInkWindow *fInkWindow; 57 PenInputBackend *fBackend; 58 BMenu *fDeskbarMenu; 59 BMessenger fInkWindowMsgr; 60 bool fMouseDown; 61 bool fStroking; 62 BMessageRunner *fThresholdRunner; 63 BMessage *fCachedMouseDown; 64 /* config */ 65 bool fShowInk; 66 bigtime_t fMouseDownThreshold; 67}; 68 69#endif /* _PEN_INPUT_LOOPER_H */ 70