// @(#)root/eve:$Id$
// Author: Matevz Tadel 2007

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/


#ifndef ROOT_TEveLegoEventHandler
#define ROOT_TEveLegoEventHandler

#include "TGLEventHandler.h"
#include "TGLCamera.h"

class TEveCaloLego;

class TEveLegoEventHandler : public TGLEventHandler
{
private:
   TEveLegoEventHandler(const TEveLegoEventHandler&);            // Not implemented
   TEveLegoEventHandler& operator=(const TEveLegoEventHandler&); // Not implemented

protected:
   enum EMode_e   { kLocked, kFree };

   EMode_e  fMode;       // current rotation mode
   Float_t  fTransTheta; // transition theta in radians
   Float_t  fTheta;

   virtual Bool_t Rotate(Int_t xDelta, Int_t yDelta, Bool_t mod1, Bool_t mod2);

public:
   TEveCaloLego*  fLego;

   TEveLegoEventHandler(TGWindow *w, TObject *obj, TEveCaloLego* lego = 0);
   virtual ~TEveLegoEventHandler() {}

   virtual Bool_t HandleKey(Event_t *event);

   Float_t GetTransTheta() {return fTransTheta;}
   void    SetTransTheta(Float_t h) {fTransTheta=h;}

   TEveCaloLego* GetLego() { return fLego; }
   void          SetLego( TEveCaloLego* x) { fLego = x; }

   ClassDef(TEveLegoEventHandler, 0); // A GL event handler class. Swiches perspective or orthographic camera.
};

#endif
 TEveLegoEventHandler.h:1
 TEveLegoEventHandler.h:2
 TEveLegoEventHandler.h:3
 TEveLegoEventHandler.h:4
 TEveLegoEventHandler.h:5
 TEveLegoEventHandler.h:6
 TEveLegoEventHandler.h:7
 TEveLegoEventHandler.h:8
 TEveLegoEventHandler.h:9
 TEveLegoEventHandler.h:10
 TEveLegoEventHandler.h:11
 TEveLegoEventHandler.h:12
 TEveLegoEventHandler.h:13
 TEveLegoEventHandler.h:14
 TEveLegoEventHandler.h:15
 TEveLegoEventHandler.h:16
 TEveLegoEventHandler.h:17
 TEveLegoEventHandler.h:18
 TEveLegoEventHandler.h:19
 TEveLegoEventHandler.h:20
 TEveLegoEventHandler.h:21
 TEveLegoEventHandler.h:22
 TEveLegoEventHandler.h:23
 TEveLegoEventHandler.h:24
 TEveLegoEventHandler.h:25
 TEveLegoEventHandler.h:26
 TEveLegoEventHandler.h:27
 TEveLegoEventHandler.h:28
 TEveLegoEventHandler.h:29
 TEveLegoEventHandler.h:30
 TEveLegoEventHandler.h:31
 TEveLegoEventHandler.h:32
 TEveLegoEventHandler.h:33
 TEveLegoEventHandler.h:34
 TEveLegoEventHandler.h:35
 TEveLegoEventHandler.h:36
 TEveLegoEventHandler.h:37
 TEveLegoEventHandler.h:38
 TEveLegoEventHandler.h:39
 TEveLegoEventHandler.h:40
 TEveLegoEventHandler.h:41
 TEveLegoEventHandler.h:42
 TEveLegoEventHandler.h:43
 TEveLegoEventHandler.h:44
 TEveLegoEventHandler.h:45
 TEveLegoEventHandler.h:46
 TEveLegoEventHandler.h:47
 TEveLegoEventHandler.h:48
 TEveLegoEventHandler.h:49
 TEveLegoEventHandler.h:50
 TEveLegoEventHandler.h:51
 TEveLegoEventHandler.h:52
 TEveLegoEventHandler.h:53