ROOT logo
// $Id: TabletReader.h 2404 2010-07-05 20:43:58Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef Tmp1_TabletReader_H
#define Tmp1_TabletReader_H

#include <Glasses/ZNode.h>

#include <Gled/GMutex.h>
#include <Gled/GThread.h>
#include <Gled/GTime.h>

class TabletStroke;
class TabletStrokeList;

class TabletReader : public ZNode
{
  MAC_RNR_FRIENDS(TabletReader);

public:
  enum ButtonBits_e
  {
    BB_Touch    = 1 << 5,
    BB_Stylus_1 = 1 << 6,
    BB_Stylus_2 = 1 << 7,
    BB_Button_0 = 1 << 8,
    BB_Button_1 = 1 << 9,
    BB_Pad_Buttons = BB_Touch | BB_Stylus_1 | BB_Stylus_2
  };

  enum Tool_e
  {
    T_None   = 0,
    T_Pen    = 1,
    T_Eraser = 4,
    T_Pad    = 8
  };

  enum StrokeType_e
  {
    SS_None, SS_Absolute, SS_Relative, SS_Continuous
  };

private:
  void _init();

protected:
  StrokeType_e  mStrokeType; //  X{GS} 7 PhonyEnum()
  Bool_t        bInvertY;    //  X{GS} 7 Bool()
  Bool_t        bKeepStrokeInProximity; // X{GS} 7 Bool()

  Float_t       mPosScale;   //! X{G}  7 ValOut(-join=>1)
  Float_t       mPrsScale;   //! X{G}  7 ValOut()
  Int_t         mOffX;       //! X{G}  7 ValOut(-join=>1)
  Int_t         mOffY;       //! X{G}  7 ValOut()

  Int_t         mButtons;
  // The following four are for debug / light-show purposes.
  Bool_t        bButton0;         //! X{G}  7 BoolOut(-join=>1)
  Bool_t        bButton1;         //! X{G}  7 BoolOut()
  Bool_t        bStylus1;         //! X{G}  7 BoolOut(-join=>1)
  Bool_t        bStylus2;         //! X{G}  7 BoolOut()
  Bool_t        bInProximity;     //! X{G}  7 BoolOut(-join=>1)
  Bool_t        bInTouch;         //! X{G}  7 BoolOut()
  Bool_t        bInStroke;        //! X{G}  7 BoolOut()
  // Offsets for multi-touch strokes.
  Float_t       mPenXOff;
  Float_t       mPenYOff;
  Float_t       mPenTOff;

  Float_t       mPenX, mPenY, mPenP, mPenT; //!
  Int_t         mRawX, mRawY, mRawP; //!

  GTime         mEventTime;        //!
  GTime         mFirstStrokeStart; //!
  GTime         mStrokeStart;      //!

  Bool_t        bPrintButtEvs;    // X{GS} 7 Bool(-join=>1)
  Bool_t        bPrintButtState;  // X{GS} 7 Bool()
  Bool_t        bPrintPositions;  // X{GS} 7 Bool(-join=>1)
  Bool_t        bPrintOther;      // X{GS} 7 Bool()

  ZLink<TabletStrokeList> mStrokeList;  // X{GS} L{}
  ZLink<TabletStroke>     mStroke;      // X{GS} L{}

  GMutex    mTabletMutex;  //!
  GThread  *mTabletThread; //!
  Bool_t    bReqStop;      //!

  Bool_t      get_button(Int_t bb) { return bb & mButtons; }

  const char* get_button_name(Int_t bb);
  Bool_t      flip_report_button(Int_t bb);

  Bool_t      check_pen_buttons(Int_t buttons_delta);
  void        clear_pen_buttons();
  Bool_t      check_pad_buttons(Int_t buttons_delta);

  void begin_stroke_list();
  void end_stroke_list();
  void begin_stroke();
  void end_stroke();

public:
  TabletReader(const Text_t* n="TabletReader", const Text_t* t=0);
  virtual ~TabletReader();

  void StartRead(); // X{ED} 7 MButt()
  void StopRead();  // X{E}  7 MButt()

#include "TabletReader.h7"
  ClassDef(TabletReader, 1);
}; // endclass TabletReader

#endif
 TabletReader.h:1
 TabletReader.h:2
 TabletReader.h:3
 TabletReader.h:4
 TabletReader.h:5
 TabletReader.h:6
 TabletReader.h:7
 TabletReader.h:8
 TabletReader.h:9
 TabletReader.h:10
 TabletReader.h:11
 TabletReader.h:12
 TabletReader.h:13
 TabletReader.h:14
 TabletReader.h:15
 TabletReader.h:16
 TabletReader.h:17
 TabletReader.h:18
 TabletReader.h:19
 TabletReader.h:20
 TabletReader.h:21
 TabletReader.h:22
 TabletReader.h:23
 TabletReader.h:24
 TabletReader.h:25
 TabletReader.h:26
 TabletReader.h:27
 TabletReader.h:28
 TabletReader.h:29
 TabletReader.h:30
 TabletReader.h:31
 TabletReader.h:32
 TabletReader.h:33
 TabletReader.h:34
 TabletReader.h:35
 TabletReader.h:36
 TabletReader.h:37
 TabletReader.h:38
 TabletReader.h:39
 TabletReader.h:40
 TabletReader.h:41
 TabletReader.h:42
 TabletReader.h:43
 TabletReader.h:44
 TabletReader.h:45
 TabletReader.h:46
 TabletReader.h:47
 TabletReader.h:48
 TabletReader.h:49
 TabletReader.h:50
 TabletReader.h:51
 TabletReader.h:52
 TabletReader.h:53
 TabletReader.h:54
 TabletReader.h:55
 TabletReader.h:56
 TabletReader.h:57
 TabletReader.h:58
 TabletReader.h:59
 TabletReader.h:60
 TabletReader.h:61
 TabletReader.h:62
 TabletReader.h:63
 TabletReader.h:64
 TabletReader.h:65
 TabletReader.h:66
 TabletReader.h:67
 TabletReader.h:68
 TabletReader.h:69
 TabletReader.h:70
 TabletReader.h:71
 TabletReader.h:72
 TabletReader.h:73
 TabletReader.h:74
 TabletReader.h:75
 TabletReader.h:76
 TabletReader.h:77
 TabletReader.h:78
 TabletReader.h:79
 TabletReader.h:80
 TabletReader.h:81
 TabletReader.h:82
 TabletReader.h:83
 TabletReader.h:84
 TabletReader.h:85
 TabletReader.h:86
 TabletReader.h:87
 TabletReader.h:88
 TabletReader.h:89
 TabletReader.h:90
 TabletReader.h:91
 TabletReader.h:92
 TabletReader.h:93
 TabletReader.h:94
 TabletReader.h:95
 TabletReader.h:96
 TabletReader.h:97
 TabletReader.h:98
 TabletReader.h:99
 TabletReader.h:100
 TabletReader.h:101
 TabletReader.h:102
 TabletReader.h:103
 TabletReader.h:104
 TabletReader.h:105
 TabletReader.h:106
 TabletReader.h:107
 TabletReader.h:108
 TabletReader.h:109
 TabletReader.h:110
 TabletReader.h:111
 TabletReader.h:112
 TabletReader.h:113
 TabletReader.h:114
 TabletReader.h:115
 TabletReader.h:116
 TabletReader.h:117
 TabletReader.h:118