// @(#)root/eve:$Id$
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 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_TEveFrameBox
#define ROOT_TEveFrameBox

#include "TEveUtil.h"
#include "TObject.h"

class TEveFrameBox : public TObject, public TEveRefBackPtr
{
   friend class TEveFrameBoxGL;

public:
   enum EFrameType_e  { kFT_None, kFT_Quad, kFT_Box };

private:
   TEveFrameBox(const TEveFrameBox&);            // Not implemented
   TEveFrameBox& operator=(const TEveFrameBox&); // Not implemented

protected:
   EFrameType_e fFrameType;
   Int_t        fFrameSize;
   Float_t     *fFramePoints;  //[fFrameSize]

   Float_t      fFrameWidth;
   Color_t      fFrameColor;
   Color_t      fBackColor;
   UChar_t      fFrameRGBA[4];
   UChar_t      fBackRGBA[4];
   Bool_t       fFrameFill;
   Bool_t       fDrawBack;

public:
   TEveFrameBox();
   virtual ~TEveFrameBox();

   void SetAAQuadXY(Float_t x, Float_t y, Float_t z, Float_t dx, Float_t dy);
   void SetAAQuadXZ(Float_t x, Float_t y, Float_t z, Float_t dx, Float_t dz);

   void SetQuadByPoints(const Float_t* pointArr, Int_t nPoints);

   void SetAABox(Float_t x,  Float_t y,  Float_t z,
                 Float_t dx, Float_t dy, Float_t dz);

   void SetAABoxCenterHalfSize(Float_t x,  Float_t y,  Float_t z,
                               Float_t dx, Float_t dy, Float_t dz);

   // ----------------------------------------------------------------

   EFrameType_e GetFrameType()   const { return fFrameType; }
   Int_t        GetFrameSize()   const { return fFrameSize; }
   Float_t*     GetFramePoints() const { return fFramePoints; }

   Float_t GetFrameWidth() const    { return fFrameWidth; }
   void    SetFrameWidth(Float_t f) { fFrameWidth = f;    }

   Color_t  GetFrameColor() const { return fFrameColor; }
   Color_t* PtrFrameColor() { return &fFrameColor; }
   UChar_t* GetFrameRGBA()  { return fFrameRGBA;  }

   void SetFrameColor(Color_t ci);
   void SetFrameColorPixel(Pixel_t pix);
   void SetFrameColorRGBA(UChar_t r, UChar_t g, UChar_t b, UChar_t a=255);

   Color_t  GetBackColor() const { return fBackColor; }
   Color_t* PtrBackColor() { return &fBackColor; }
   UChar_t* GetBackRGBA()  { return fBackRGBA;  }

   void SetBackColor(Color_t ci);
   void SetBackColorPixel(Pixel_t pix);
   void SetBackColorRGBA(UChar_t r, UChar_t g, UChar_t b, UChar_t a=255);

   Bool_t GetFrameFill() const   { return fFrameFill; }
   void   SetFrameFill(Bool_t f) { fFrameFill = f;    }

   Bool_t GetDrawBack() const   { return fDrawBack; }
   void   SetDrawBack(Bool_t f) { fDrawBack = f;    }

   ClassDef(TEveFrameBox, 1); // Description of a 2D or 3D frame that can be used to visually group a set of objects.
};

#endif
 TEveFrameBox.h:1
 TEveFrameBox.h:2
 TEveFrameBox.h:3
 TEveFrameBox.h:4
 TEveFrameBox.h:5
 TEveFrameBox.h:6
 TEveFrameBox.h:7
 TEveFrameBox.h:8
 TEveFrameBox.h:9
 TEveFrameBox.h:10
 TEveFrameBox.h:11
 TEveFrameBox.h:12
 TEveFrameBox.h:13
 TEveFrameBox.h:14
 TEveFrameBox.h:15
 TEveFrameBox.h:16
 TEveFrameBox.h:17
 TEveFrameBox.h:18
 TEveFrameBox.h:19
 TEveFrameBox.h:20
 TEveFrameBox.h:21
 TEveFrameBox.h:22
 TEveFrameBox.h:23
 TEveFrameBox.h:24
 TEveFrameBox.h:25
 TEveFrameBox.h:26
 TEveFrameBox.h:27
 TEveFrameBox.h:28
 TEveFrameBox.h:29
 TEveFrameBox.h:30
 TEveFrameBox.h:31
 TEveFrameBox.h:32
 TEveFrameBox.h:33
 TEveFrameBox.h:34
 TEveFrameBox.h:35
 TEveFrameBox.h:36
 TEveFrameBox.h:37
 TEveFrameBox.h:38
 TEveFrameBox.h:39
 TEveFrameBox.h:40
 TEveFrameBox.h:41
 TEveFrameBox.h:42
 TEveFrameBox.h:43
 TEveFrameBox.h:44
 TEveFrameBox.h:45
 TEveFrameBox.h:46
 TEveFrameBox.h:47
 TEveFrameBox.h:48
 TEveFrameBox.h:49
 TEveFrameBox.h:50
 TEveFrameBox.h:51
 TEveFrameBox.h:52
 TEveFrameBox.h:53
 TEveFrameBox.h:54
 TEveFrameBox.h:55
 TEveFrameBox.h:56
 TEveFrameBox.h:57
 TEveFrameBox.h:58
 TEveFrameBox.h:59
 TEveFrameBox.h:60
 TEveFrameBox.h:61
 TEveFrameBox.h:62
 TEveFrameBox.h:63
 TEveFrameBox.h:64
 TEveFrameBox.h:65
 TEveFrameBox.h:66
 TEveFrameBox.h:67
 TEveFrameBox.h:68
 TEveFrameBox.h:69
 TEveFrameBox.h:70
 TEveFrameBox.h:71
 TEveFrameBox.h:72
 TEveFrameBox.h:73
 TEveFrameBox.h:74
 TEveFrameBox.h:75
 TEveFrameBox.h:76
 TEveFrameBox.h:77
 TEveFrameBox.h:78
 TEveFrameBox.h:79
 TEveFrameBox.h:80
 TEveFrameBox.h:81
 TEveFrameBox.h:82
 TEveFrameBox.h:83
 TEveFrameBox.h:84
 TEveFrameBox.h:85
 TEveFrameBox.h:86
 TEveFrameBox.h:87
 TEveFrameBox.h:88
 TEveFrameBox.h:89
 TEveFrameBox.h:90
 TEveFrameBox.h:91