TEveFrameBox.cxx

Go to the documentation of this file.
00001 // @(#)root/eve:$Id: TEveFrameBox.cxx 25245 2008-08-25 21:44:09Z matevz $
00002 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #include "TEveFrameBox.h"
00013 #include "TColor.h"
00014 
00015 //==============================================================================
00016 // TEveFrameBox
00017 //==============================================================================
00018 
00019 //______________________________________________________________________________
00020 //
00021 // Description of a 2D or 3D frame that can be used to visually group
00022 // a set of objects.
00023 
00024 ClassImp(TEveFrameBox);
00025 
00026 //______________________________________________________________________________
00027 TEveFrameBox::TEveFrameBox() :
00028    fFrameType   (kFT_None),
00029    fFrameSize   (0),
00030    fFramePoints (0),
00031 
00032    fFrameWidth  (1),
00033    fFrameColor  (1),
00034    fBackColor   (0),
00035    fFrameFill   (kFALSE),
00036    fDrawBack    (kFALSE)
00037 {
00038    // Default constructor.
00039 
00040    fFrameRGBA[0] = fFrameRGBA[1] = fFrameRGBA[2] = 0;   fFrameRGBA[3] = 255;
00041    fBackRGBA [0] = fBackRGBA [1] = fBackRGBA [2] = 255; fBackRGBA [3] = 255;
00042 }
00043 
00044 //______________________________________________________________________________
00045 TEveFrameBox::~TEveFrameBox()
00046 {
00047    // Destructor.
00048 
00049    delete [] fFramePoints;
00050 }
00051 
00052 /******************************************************************************/
00053 
00054 //______________________________________________________________________________
00055 void TEveFrameBox::SetAAQuadXY(Float_t x,  Float_t y, Float_t z,
00056                                Float_t dx, Float_t dy)
00057 {
00058    // Setup for axis-aligned rectangle with one corner at x, y, z and
00059    // given sizes in x (dx) and y (dy).
00060 
00061    fFrameType = kFT_Quad;
00062    fFrameSize = 12;
00063    delete [] fFramePoints;
00064    fFramePoints = new Float_t [fFrameSize];
00065    Float_t* p = fFramePoints;
00066    p[0] = x;    p[1] = y;    p[2] = z; p += 3;
00067    p[0] = x+dx; p[1] = y;    p[2] = z; p += 3;
00068    p[0] = x+dx; p[1] = y+dy; p[2] = z; p += 3;
00069    p[0] = x ;   p[1] = y+dy; p[2] = z; p += 3;
00070 }
00071 
00072 //______________________________________________________________________________
00073 void TEveFrameBox::SetAAQuadXZ(Float_t x,  Float_t y, Float_t z,
00074                                Float_t dx, Float_t dz)
00075 {
00076    // Setup for axis-aligned rectangle with one corner at x, y, z and
00077    // given sizes in x (dx) and z (dz).
00078 
00079    fFrameType = kFT_Quad;
00080    fFrameSize = 12;
00081    delete [] fFramePoints;
00082    fFramePoints = new Float_t [fFrameSize];
00083    Float_t* p = fFramePoints;
00084    p[0] = x;    p[1] = y; p[2] = z;    p += 3;
00085    p[0] = x+dx; p[1] = y; p[2] = z;    p += 3;
00086    p[0] = x+dx; p[1] = y; p[2] = z+dz; p += 3;
00087    p[0] = x ;   p[1] = y; p[2] = z+dz; p += 3;
00088 }
00089 
00090 //______________________________________________________________________________
00091 void TEveFrameBox::SetQuadByPoints(const Float_t* pointArr, Int_t nPoints)
00092 {
00093    // Setup frame with explicitly given corner coordinates.
00094    // Arguments:
00095    //   pointArr - array containing the 3D points
00096    //   nPoint   - number of points, size of array divided by 3
00097 
00098    fFrameType = kFT_Quad;
00099    fFrameSize = 3*nPoints;
00100    delete [] fFramePoints;
00101    fFramePoints = new Float_t [fFrameSize];
00102    memcpy(fFramePoints, pointArr, fFrameSize*sizeof(Float_t));
00103 }
00104 
00105 //______________________________________________________________________________
00106 void TEveFrameBox::SetAABox(Float_t x,  Float_t y,  Float_t z,
00107                             Float_t dx, Float_t dy, Float_t dz)
00108 {
00109    // Setup for axis-aligned box with one corner at x, y, z and
00110    // given sizes in x (dx), y (dy) and z (dz).
00111 
00112    fFrameType = kFT_Box;
00113    fFrameSize = 24;
00114    delete [] fFramePoints;
00115    fFramePoints = new Float_t [fFrameSize];
00116 
00117    Float_t* p = fFramePoints;
00118    //bottom
00119    p[0] = x;       p[1] = y + dy;  p[2] = z;       p += 3;
00120    p[0] = x + dx;  p[1] = y + dy;  p[2] = z;       p += 3;
00121    p[0] = x + dx;  p[1] = y;       p[2] = z;       p += 3;
00122    p[0] = x;       p[1] = y;       p[2] = z;       p += 3;
00123    //top
00124    p[0] = x;       p[1] = y + dy;  p[2] = z + dz;  p += 3;
00125    p[0] = x + dx;  p[1] = y + dy;  p[2] = z + dz;  p += 3;
00126    p[0] = x + dx;  p[1] = y;       p[2] = z + dz;  p += 3;
00127    p[0] = x;       p[1] = y;       p[2] = z + dz;
00128 }
00129 
00130 //______________________________________________________________________________
00131 void TEveFrameBox::SetAABoxCenterHalfSize(Float_t x,  Float_t y,  Float_t z,
00132                                           Float_t dx, Float_t dy, Float_t dz)
00133 {
00134    // Setup for axis-aligned box with center at x, y, z and given
00135    // half-sizes in x (dx), y (dy) and z (dz).
00136 
00137    fFrameType = kFT_Box;
00138    fFrameSize = 24;
00139    delete [] fFramePoints;
00140    fFramePoints = new Float_t [fFrameSize];
00141 
00142    Float_t* p = fFramePoints;
00143    //bottom
00144    p[0] = x - dx;  p[1] = y + dy;  p[2] = z - dz;  p += 3;
00145    p[0] = x + dx;  p[1] = y + dy;  p[2] = z - dz;  p += 3;
00146    p[0] = x + dx;  p[1] = y - dy;  p[2] = z - dz;  p += 3;
00147    p[0] = x - dx;  p[1] = y - dy;  p[2] = z - dz;  p += 3;
00148    //top
00149    p[0] = x - dx;  p[1] = y + dy;  p[2] = z + dz;  p += 3;
00150    p[0] = x + dx;  p[1] = y + dy;  p[2] = z + dz;  p += 3;
00151    p[0] = x + dx;  p[1] = y - dy;  p[2] = z + dz;  p += 3;
00152    p[0] = x - dx;  p[1] = y - dy;  p[2] = z + dz;
00153 }
00154 
00155 /******************************************************************************/
00156 
00157 //______________________________________________________________________________
00158 void TEveFrameBox::SetFrameColor(Color_t ci)
00159 {
00160    // Set color of the frame.
00161 
00162    fFrameColor = ci;
00163    TEveUtil::ColorFromIdx(ci, fFrameRGBA, kTRUE);
00164 }
00165 
00166 //______________________________________________________________________________
00167 void TEveFrameBox::SetFrameColorPixel(Pixel_t pix)
00168 {
00169    // Set color of the frame.
00170 
00171    SetFrameColor(Color_t(TColor::GetColor(pix)));
00172 }
00173 
00174 //______________________________________________________________________________
00175 void TEveFrameBox::SetFrameColorRGBA(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
00176 {
00177    // Set color of the frame.
00178 
00179    fFrameColor = Color_t(TColor::GetColor(r, g, b));
00180    fFrameRGBA[0] = r;
00181    fFrameRGBA[1] = g;
00182    fFrameRGBA[2] = b;
00183    fFrameRGBA[3] = a;
00184 }
00185 
00186 /******************************************************************************/
00187 
00188 //______________________________________________________________________________
00189 void TEveFrameBox::SetBackColor(Color_t ci)
00190 {
00191    // Set color of the background polygon.
00192 
00193    fBackColor = ci;
00194    TEveUtil::ColorFromIdx(ci, fBackRGBA, kTRUE);
00195 }
00196 
00197 //______________________________________________________________________________
00198 void TEveFrameBox::SetBackColorPixel(Pixel_t pix)
00199 {
00200    // Set color of the background polygon.
00201 
00202    SetBackColor(Color_t(TColor::GetColor(pix)));
00203 }
00204 
00205 //______________________________________________________________________________
00206 void TEveFrameBox::SetBackColorRGBA(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
00207 {
00208    // Set color of the background polygon.
00209 
00210    fBackColor = Color_t(TColor::GetColor(r, g, b));
00211    fBackRGBA[0] = r;
00212    fBackRGBA[1] = g;
00213    fBackRGBA[2] = b;
00214    fBackRGBA[3] = a;
00215 }

Generated on Tue Jul 5 14:16:11 2011 for ROOT_528-00b_version by  doxygen 1.5.1