#include "TEveProjectionAxesGL.h"
#include "TEveProjectionAxes.h"
#include "TEveProjectionManager.h"
#include "THLimitsFinder.h"
#include "TGLIncludes.h"
#include "TGLRnrCtx.h"
#include "TGLFontManager.h"
#include "TGLCamera.h"
#include "TMath.h"
ClassImp(TEveProjectionAxesGL);
TEveProjectionAxesGL::TEveProjectionAxesGL() :
TGLObject(),
fM(0),
fProjection(0)
{
fDLCache = kFALSE;
}
Bool_t TEveProjectionAxesGL::SetModel(TObject* obj, const Option_t* )
{
fM = SetModelDynCast<TEveProjectionAxes>(obj);
fAxisPainter.SetAttAxis(fM);
return fM->GetManager() ? kTRUE : kFALSE;
}
void TEveProjectionAxesGL::SetBBox()
{
SetAxisAlignedBBox(((TEveProjectionAxes*)fExternalObj)->AssertBBox());
}
void TEveProjectionAxesGL::FilterOverlappingLabels(Int_t idx, Float_t ref) const
{
TGLAxisPainter::LabVec_t &orig = fAxisPainter.RefLabVec();
if (orig.size() == 0) return;
Float_t center = fM->GetManager()->GetProjection()->GetProjectedCenter()[idx];
Int_t minIdx = 0;
Int_t cnt = 0;
Float_t currD = 0;
Float_t minD = TMath::Abs(orig[0].first -center);
for (TGLAxisPainter::LabVec_t::iterator it = orig.begin(); it != orig.end(); ++it)
{
currD = TMath::Abs((*it).first - center);
if (minD > currD)
{
minD = currD;
minIdx = cnt;
}
cnt++;
}
TGLAxisPainter::LabVec_t filtered;
filtered.push_back(orig[minIdx]);
Int_t size = orig.size();
Float_t minDist = 4*fM->GetLabelSize()*ref;
Float_t pos = 0;
if (minIdx > 0)
{
pos = orig[minIdx].first;
for (Int_t i=minIdx-1; i>=0; --i)
{
if (TMath::Abs(pos - orig[i].first) > minDist)
{
filtered.push_back(orig[i]);
pos = orig[i].first;
}
}
}
if (minIdx < (size -1))
{
pos = orig[minIdx].first;
for (Int_t i=minIdx+1; i<size; ++i)
{
if (TMath::Abs(orig[i].first - pos) > minDist)
{
filtered.push_back(orig[i]);
pos = orig[i].first;
}
}
}
if (filtered.size() >= 2)
{
if ( minIdx > 0 )
fAxisPainter.SetTextFormat(orig.front().second, orig.back().second, orig[minIdx].second - orig[minIdx-1].second);
else
fAxisPainter.SetTextFormat(orig.front().second, orig.back().second, orig[minIdx+1].second - orig[minIdx].second);
fAxisPainter.RefLabVec().swap(filtered);
}
else
{
fAxisPainter.SetTextFormat(orig.front().second, orig.back().second, orig.back().second - orig.front().second);
}
}
void TEveProjectionAxesGL::SplitInterval(Float_t p1, Float_t p2, Int_t ax) const
{
fAxisPainter.RefLabVec().clear();
fAxisPainter.RefTMVec().clear();
fAxisPainter.RefTMVec().push_back(TGLAxisPainter::TM_t(p1, -1));
if (fM->GetLabMode() == TEveProjectionAxes::kValue)
{
SplitIntervalByVal(p1, p2, ax);
}
else if (fM->GetLabMode() == TEveProjectionAxes::kPosition)
{
SplitIntervalByPos(p1, p2, ax);
}
}
void TEveProjectionAxesGL::SplitIntervalByPos(Float_t p1, Float_t p2, Int_t ax) const
{
Int_t n1a = TMath::FloorNint(fM->GetNdivisions() / 100);
Int_t n2a = fM->GetNdivisions() - n1a * 100;
Int_t bn1, bn2;
Double_t bw1, bw2;
Double_t bl1=0, bh1=0, bl2=0, bh2=0;
THLimitsFinder::Optimize(p1, p2, n1a, bl1, bh1, bn1, bw1);
THLimitsFinder::Optimize(bl1, bl1+bw1, n2a, bl2, bh2, bn2, bw2);
Int_t n1=TMath::CeilNint(p1/bw1);
Int_t n2=TMath::FloorNint(p2/bw1);
TGLAxisPainter::LabVec_t &labVec = fAxisPainter.RefLabVec();
TGLAxisPainter::TMVec_t &tmVec = fAxisPainter.RefTMVec();
Float_t p = n1*bw1;
Float_t pMinor = p;
for (Int_t l=n1; l<=n2; l++)
{
labVec.push_back( TGLAxisPainter::Lab_t(p , fProjection->GetValForScreenPos(ax, p)));
tmVec.push_back(TGLAxisPainter::TM_t(p, 0));
pMinor = p+bw2;
for (Int_t i=1; i<bn2; i++)
{
if (pMinor > p2) break;
tmVec.push_back( TGLAxisPainter::TM_t(pMinor, 1));
pMinor += bw2;
}
p += bw1;
}
pMinor = n1*bw1 -bw2;
while ( pMinor > p1)
{
tmVec.push_back(TGLAxisPainter::TM_t(pMinor, 1));
pMinor -=bw2;
}
}
void TEveProjectionAxesGL::SplitIntervalByVal(Float_t p1, Float_t p2, Int_t ax) const
{
TGLAxisPainter::LabVec_t &labVec = fAxisPainter.RefLabVec();
TGLAxisPainter::TMVec_t &tmVec = fAxisPainter.RefTMVec();
Int_t n1a = TMath::FloorNint(fM->GetNdivisions() / 100);
Int_t n2a = fM->GetNdivisions() - n1a * 100;
Int_t bn1, bn2;
Double_t bw1, bw2;
Double_t bl1=0, bh1=0, bl2=0, bh2=0;
Float_t v1 = fProjection->GetValForScreenPos(ax, p1);
Float_t v2 = fProjection->GetValForScreenPos(ax, p2);
THLimitsFinder::Optimize(v1, v2, n1a, bl1, bh1, bn1, bw1);
THLimitsFinder::Optimize(bl1, bl1+bw1, n2a, bl2, bh2, bn2, bw2);
Float_t pFirst, pSecond;
Float_t v = bl1;
TEveVector dirVec;
fProjection->SetDirectionalVector(ax, dirVec);
TEveVector oCenter;
fProjection->GetOrthogonalCenter(ax, oCenter);
for (Int_t l=0; l<=bn1; l++)
{
pFirst = fProjection->GetScreenVal(ax, v);
labVec.push_back(TGLAxisPainter::Lab_t(pFirst , v));
tmVec.push_back(TGLAxisPainter::TM_t(pFirst, 0));
for (Int_t k=1; k<bn2; k++)
{
pSecond = fProjection->GetScreenVal(ax, v+k*bw2, dirVec, oCenter);
if (pSecond > p2) break;
tmVec.push_back(TGLAxisPainter::TM_t(pSecond, 1));
}
v += bw1;
}
v = bl1 -bw2;
while ( v > v1)
{
pSecond = fProjection->GetScreenVal(ax, v, dirVec, oCenter);
if (pSecond < p1) break;
tmVec.push_back(TGLAxisPainter::TM_t(pSecond, 1));
v -= bw2;
}
}
void TEveProjectionAxesGL::GetRange(Int_t ax, Float_t frustMin, Float_t frustMax, Float_t& min, Float_t& max) const
{
Float_t* bb = fM->fManager->GetBBox();
Float_t bbMin = bb[ax*2];
Float_t bbMax = bb[ax*2 + 1];
Float_t off = ( bb[ax*2 + 1] - bb[ax*2]) * 0.5;
bbMin -= off;
bbMax += off;
if (frustMin > bbMin) {
min = frustMin;
min += (frustMax - frustMin) * 0.1;
}
else {
min = bbMin;
}
if (frustMax < bbMax) {
max = frustMax;
max -= (frustMax - frustMin) * 0.1;
}
else {
max = bbMax;
}
}
void TEveProjectionAxesGL::Draw(TGLRnrCtx& rnrCtx) const
{
if (rnrCtx.IsDrawPassOutlineLine())
return;
TGLObject::Draw(rnrCtx);
}
void TEveProjectionAxesGL::DirectDraw(TGLRnrCtx& rnrCtx) const
{
if (rnrCtx.Selection() || rnrCtx.Highlight() || fM->fManager->GetBBox() == 0) return;
glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT);
glDisable(GL_LIGHTING);
glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
glEnable(GL_COLOR_MATERIAL);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glDisable(GL_CULL_FACE);
Float_t old_depth_range[2];
glGetFloatv(GL_DEPTH_RANGE, old_depth_range);
glDepthRange(0, 0.001);
TGLCamera &camera = rnrCtx.RefCamera();
Float_t l = -camera.FrustumPlane(TGLCamera::kLeft).D();
Float_t r = camera.FrustumPlane(TGLCamera::kRight).D();
Float_t t = camera.FrustumPlane(TGLCamera::kTop).D();
Float_t b = -camera.FrustumPlane(TGLCamera::kBottom).D();
if (fM->fUseColorSet)
{
TGLUtil::Color(rnrCtx.ColorSet().Markup());
fAxisPainter.SetUseAxisColors(kFALSE);
}
fProjection = fM->GetManager()->GetProjection();
glDisable(GL_LIGHTING);
{
Float_t d = ((r-l) > (b-t)) ? (b-t) : (r-l);
d *= 0.02f;
if (fM->GetDrawCenter())
{
Float_t* c = fProjection->GetProjectedCenter();
TGLUtil::LineWidth(1);
glBegin(GL_LINES);
glVertex3f(c[0] + d, c[1], c[2]); glVertex3f(c[0] - d, c[1], c[2]);
glVertex3f(c[0], c[1] + d, c[2]); glVertex3f(c[0], c[1] - d, c[2]);
glVertex3f(c[0], c[1], c[2] + d); glVertex3f(c[0], c[1], c[2] - d);
glEnd();
}
if (fM->GetDrawOrigin())
{
TEveVector zero;
fProjection->ProjectVector(zero, 0);
TGLUtil::LineWidth(1);
glBegin(GL_LINES);
glVertex3f(zero[0] + d, zero[1], zero[2]); glVertex3f(zero[0] - d, zero[1], zero[2]);
glVertex3f(zero[0], zero[1] + d, zero[2]); glVertex3f(zero[0], zero[1] - d, zero[2]);
glVertex3f(zero[0], zero[1], zero[2] + d); glVertex3f(zero[0], zero[1], zero[2] - d);
glEnd();
}
}
try {
using namespace TMath;
GLint vp[4];
glGetIntegerv(GL_VIEWPORT, vp);
Float_t refLength = TMath::Sqrt((TMath::Power(vp[2]-vp[0], 2) + TMath::Power(vp[3]-vp[1], 2)));
Float_t tickLength = TMath::Sqrt((TMath::Power(r-l, 2) + TMath::Power(t-b, 2)));
fAxisPainter.SetFontMode(TGLFont::kPixmap);
fAxisPainter.SetLabelFont(rnrCtx, TGLFontManager::GetFontNameFromId(fM->GetLabelFont()), TMath::CeilNint(refLength*fM->GetLabelSize()), tickLength*fM->GetLabelSize());
Float_t min, max;
if (fM->fAxesMode == TEveProjectionAxes::kAll ||
fM->fAxesMode == TEveProjectionAxes::kHorizontal)
{
GetRange(0, l, r, min, max);
SplitInterval(min, max, 0);
FilterOverlappingLabels(0, r-l);
fAxisPainter.RefTMVec().push_back(TGLAxisPainter::TM_t(max, -1));
fAxisPainter.RefDir().Set(1, 0, 0);
fAxisPainter.RefTMOff(0).Set(0, tickLength, 0);
glPushMatrix();
glTranslatef( 0, b, 0);
fAxisPainter.SetLabelAlign(TGLFont::kCenterH, TGLFont::kTop);
fAxisPainter.RnrLabels();
fAxisPainter.RnrLines();
glPopMatrix();
glPushMatrix();
glTranslatef( 0, t, 0);
fAxisPainter.SetLabelAlign(TGLFont::kCenterH, TGLFont::kBottom);
fAxisPainter.RefTMOff(0).Negate();
fAxisPainter.RnrLabels();
fAxisPainter.RnrLines();
glPopMatrix();
}
if (fM->fAxesMode == TEveProjectionAxes::kAll ||
fM->fAxesMode == TEveProjectionAxes::kVertical)
{
GetRange(1, b, t, min, max);
SplitInterval(min, max, 1);
FilterOverlappingLabels(1, t-b);
fAxisPainter.RefTMVec().push_back(TGLAxisPainter::TM_t(max, -1));
fAxisPainter.RefDir().Set(0, 1, 0);
fAxisPainter.RefTMOff(0).Set(tickLength, 0 , 0);
glPushMatrix();
glTranslatef(l, 0, 0);
fAxisPainter.SetLabelAlign(TGLFont::kLeft, TGLFont::kCenterV);
fAxisPainter.RnrLabels();
fAxisPainter.RnrLines();
glPopMatrix();
glPushMatrix();
glTranslatef(r, 0, 0);
fAxisPainter.SetLabelAlign(TGLFont::kRight, TGLFont::kCenterV);
fAxisPainter.RefTMOff(0).Negate();
fAxisPainter.RnrLabels();
fAxisPainter.RnrLines();
glPopMatrix();
}
}
catch (TEveException& exc)
{
Warning("TEveProjectionAxesGL::DirectDraw", "caught exception: '%s'.", exc.Data());
}
glDepthRange(old_depth_range[0], old_depth_range[1]);
glPopAttrib();
}
TEveProjectionAxesGL.cxx:1 TEveProjectionAxesGL.cxx:2 TEveProjectionAxesGL.cxx:3 TEveProjectionAxesGL.cxx:4 TEveProjectionAxesGL.cxx:5 TEveProjectionAxesGL.cxx:6 TEveProjectionAxesGL.cxx:7 TEveProjectionAxesGL.cxx:8 TEveProjectionAxesGL.cxx:9 TEveProjectionAxesGL.cxx:10 TEveProjectionAxesGL.cxx:11 TEveProjectionAxesGL.cxx:12 TEveProjectionAxesGL.cxx:13 TEveProjectionAxesGL.cxx:14 TEveProjectionAxesGL.cxx:15 TEveProjectionAxesGL.cxx:16 TEveProjectionAxesGL.cxx:17 TEveProjectionAxesGL.cxx:18 TEveProjectionAxesGL.cxx:19 TEveProjectionAxesGL.cxx:20 TEveProjectionAxesGL.cxx:21 TEveProjectionAxesGL.cxx:22 TEveProjectionAxesGL.cxx:23 TEveProjectionAxesGL.cxx:24 TEveProjectionAxesGL.cxx:25 TEveProjectionAxesGL.cxx:26 TEveProjectionAxesGL.cxx:27 TEveProjectionAxesGL.cxx:28 TEveProjectionAxesGL.cxx:29 TEveProjectionAxesGL.cxx:30 TEveProjectionAxesGL.cxx:31 TEveProjectionAxesGL.cxx:32 TEveProjectionAxesGL.cxx:33 TEveProjectionAxesGL.cxx:34 TEveProjectionAxesGL.cxx:35 TEveProjectionAxesGL.cxx:36 TEveProjectionAxesGL.cxx:37 TEveProjectionAxesGL.cxx:38 TEveProjectionAxesGL.cxx:39 TEveProjectionAxesGL.cxx:40 TEveProjectionAxesGL.cxx:41 TEveProjectionAxesGL.cxx:42 TEveProjectionAxesGL.cxx:43 TEveProjectionAxesGL.cxx:44 TEveProjectionAxesGL.cxx:45 TEveProjectionAxesGL.cxx:46 TEveProjectionAxesGL.cxx:47 TEveProjectionAxesGL.cxx:48 TEveProjectionAxesGL.cxx:49 TEveProjectionAxesGL.cxx:50 TEveProjectionAxesGL.cxx:51 TEveProjectionAxesGL.cxx:52 TEveProjectionAxesGL.cxx:53 TEveProjectionAxesGL.cxx:54 TEveProjectionAxesGL.cxx:55 TEveProjectionAxesGL.cxx:56 TEveProjectionAxesGL.cxx:57 TEveProjectionAxesGL.cxx:58 TEveProjectionAxesGL.cxx:59 TEveProjectionAxesGL.cxx:60 TEveProjectionAxesGL.cxx:61 TEveProjectionAxesGL.cxx:62 TEveProjectionAxesGL.cxx:63 TEveProjectionAxesGL.cxx:64 TEveProjectionAxesGL.cxx:65 TEveProjectionAxesGL.cxx:66 TEveProjectionAxesGL.cxx:67 TEveProjectionAxesGL.cxx:68 TEveProjectionAxesGL.cxx:69 TEveProjectionAxesGL.cxx:70 TEveProjectionAxesGL.cxx:71 TEveProjectionAxesGL.cxx:72 TEveProjectionAxesGL.cxx:73 TEveProjectionAxesGL.cxx:74 TEveProjectionAxesGL.cxx:75 TEveProjectionAxesGL.cxx:76 TEveProjectionAxesGL.cxx:77 TEveProjectionAxesGL.cxx:78 TEveProjectionAxesGL.cxx:79 TEveProjectionAxesGL.cxx:80 TEveProjectionAxesGL.cxx:81 TEveProjectionAxesGL.cxx:82 TEveProjectionAxesGL.cxx:83 TEveProjectionAxesGL.cxx:84 TEveProjectionAxesGL.cxx:85 TEveProjectionAxesGL.cxx:86 TEveProjectionAxesGL.cxx:87 TEveProjectionAxesGL.cxx:88 TEveProjectionAxesGL.cxx:89 TEveProjectionAxesGL.cxx:90 TEveProjectionAxesGL.cxx:91 TEveProjectionAxesGL.cxx:92 TEveProjectionAxesGL.cxx:93 TEveProjectionAxesGL.cxx:94 TEveProjectionAxesGL.cxx:95 TEveProjectionAxesGL.cxx:96 TEveProjectionAxesGL.cxx:97 TEveProjectionAxesGL.cxx:98 TEveProjectionAxesGL.cxx:99 TEveProjectionAxesGL.cxx:100 TEveProjectionAxesGL.cxx:101 TEveProjectionAxesGL.cxx:102 TEveProjectionAxesGL.cxx:103 TEveProjectionAxesGL.cxx:104 TEveProjectionAxesGL.cxx:105 TEveProjectionAxesGL.cxx:106 TEveProjectionAxesGL.cxx:107 TEveProjectionAxesGL.cxx:108 TEveProjectionAxesGL.cxx:109 TEveProjectionAxesGL.cxx:110 TEveProjectionAxesGL.cxx:111 TEveProjectionAxesGL.cxx:112 TEveProjectionAxesGL.cxx:113 TEveProjectionAxesGL.cxx:114 TEveProjectionAxesGL.cxx:115 TEveProjectionAxesGL.cxx:116 TEveProjectionAxesGL.cxx:117 TEveProjectionAxesGL.cxx:118 TEveProjectionAxesGL.cxx:119 TEveProjectionAxesGL.cxx:120 TEveProjectionAxesGL.cxx:121 TEveProjectionAxesGL.cxx:122 TEveProjectionAxesGL.cxx:123 TEveProjectionAxesGL.cxx:124 TEveProjectionAxesGL.cxx:125 TEveProjectionAxesGL.cxx:126 TEveProjectionAxesGL.cxx:127 TEveProjectionAxesGL.cxx:128 TEveProjectionAxesGL.cxx:129 TEveProjectionAxesGL.cxx:130 TEveProjectionAxesGL.cxx:131 TEveProjectionAxesGL.cxx:132 TEveProjectionAxesGL.cxx:133 TEveProjectionAxesGL.cxx:134 TEveProjectionAxesGL.cxx:135 TEveProjectionAxesGL.cxx:136 TEveProjectionAxesGL.cxx:137 TEveProjectionAxesGL.cxx:138 TEveProjectionAxesGL.cxx:139 TEveProjectionAxesGL.cxx:140 TEveProjectionAxesGL.cxx:141 TEveProjectionAxesGL.cxx:142 TEveProjectionAxesGL.cxx:143 TEveProjectionAxesGL.cxx:144 TEveProjectionAxesGL.cxx:145 TEveProjectionAxesGL.cxx:146 TEveProjectionAxesGL.cxx:147 TEveProjectionAxesGL.cxx:148 TEveProjectionAxesGL.cxx:149 TEveProjectionAxesGL.cxx:150 TEveProjectionAxesGL.cxx:151 TEveProjectionAxesGL.cxx:152 TEveProjectionAxesGL.cxx:153 TEveProjectionAxesGL.cxx:154 TEveProjectionAxesGL.cxx:155 TEveProjectionAxesGL.cxx:156 TEveProjectionAxesGL.cxx:157 TEveProjectionAxesGL.cxx:158 TEveProjectionAxesGL.cxx:159 TEveProjectionAxesGL.cxx:160 TEveProjectionAxesGL.cxx:161 TEveProjectionAxesGL.cxx:162 TEveProjectionAxesGL.cxx:163 TEveProjectionAxesGL.cxx:164 TEveProjectionAxesGL.cxx:165 TEveProjectionAxesGL.cxx:166 TEveProjectionAxesGL.cxx:167 TEveProjectionAxesGL.cxx:168 TEveProjectionAxesGL.cxx:169 TEveProjectionAxesGL.cxx:170 TEveProjectionAxesGL.cxx:171 TEveProjectionAxesGL.cxx:172 TEveProjectionAxesGL.cxx:173 TEveProjectionAxesGL.cxx:174 TEveProjectionAxesGL.cxx:175 TEveProjectionAxesGL.cxx:176 TEveProjectionAxesGL.cxx:177 TEveProjectionAxesGL.cxx:178 TEveProjectionAxesGL.cxx:179 TEveProjectionAxesGL.cxx:180 TEveProjectionAxesGL.cxx:181 TEveProjectionAxesGL.cxx:182 TEveProjectionAxesGL.cxx:183 TEveProjectionAxesGL.cxx:184 TEveProjectionAxesGL.cxx:185 TEveProjectionAxesGL.cxx:186 TEveProjectionAxesGL.cxx:187 TEveProjectionAxesGL.cxx:188 TEveProjectionAxesGL.cxx:189 TEveProjectionAxesGL.cxx:190 TEveProjectionAxesGL.cxx:191 TEveProjectionAxesGL.cxx:192 TEveProjectionAxesGL.cxx:193 TEveProjectionAxesGL.cxx:194 TEveProjectionAxesGL.cxx:195 TEveProjectionAxesGL.cxx:196 TEveProjectionAxesGL.cxx:197 TEveProjectionAxesGL.cxx:198 TEveProjectionAxesGL.cxx:199 TEveProjectionAxesGL.cxx:200 TEveProjectionAxesGL.cxx:201 TEveProjectionAxesGL.cxx:202 TEveProjectionAxesGL.cxx:203 TEveProjectionAxesGL.cxx:204 TEveProjectionAxesGL.cxx:205 TEveProjectionAxesGL.cxx:206 TEveProjectionAxesGL.cxx:207 TEveProjectionAxesGL.cxx:208 TEveProjectionAxesGL.cxx:209 TEveProjectionAxesGL.cxx:210 TEveProjectionAxesGL.cxx:211 TEveProjectionAxesGL.cxx:212 TEveProjectionAxesGL.cxx:213 TEveProjectionAxesGL.cxx:214 TEveProjectionAxesGL.cxx:215 TEveProjectionAxesGL.cxx:216 TEveProjectionAxesGL.cxx:217 TEveProjectionAxesGL.cxx:218 TEveProjectionAxesGL.cxx:219 TEveProjectionAxesGL.cxx:220 TEveProjectionAxesGL.cxx:221 TEveProjectionAxesGL.cxx:222 TEveProjectionAxesGL.cxx:223 TEveProjectionAxesGL.cxx:224 TEveProjectionAxesGL.cxx:225 TEveProjectionAxesGL.cxx:226 TEveProjectionAxesGL.cxx:227 TEveProjectionAxesGL.cxx:228 TEveProjectionAxesGL.cxx:229 TEveProjectionAxesGL.cxx:230 TEveProjectionAxesGL.cxx:231 TEveProjectionAxesGL.cxx:232 TEveProjectionAxesGL.cxx:233 TEveProjectionAxesGL.cxx:234 TEveProjectionAxesGL.cxx:235 TEveProjectionAxesGL.cxx:236 TEveProjectionAxesGL.cxx:237 TEveProjectionAxesGL.cxx:238 TEveProjectionAxesGL.cxx:239 TEveProjectionAxesGL.cxx:240 TEveProjectionAxesGL.cxx:241 TEveProjectionAxesGL.cxx:242 TEveProjectionAxesGL.cxx:243 TEveProjectionAxesGL.cxx:244 TEveProjectionAxesGL.cxx:245 TEveProjectionAxesGL.cxx:246 TEveProjectionAxesGL.cxx:247 TEveProjectionAxesGL.cxx:248 TEveProjectionAxesGL.cxx:249 TEveProjectionAxesGL.cxx:250 TEveProjectionAxesGL.cxx:251 TEveProjectionAxesGL.cxx:252 TEveProjectionAxesGL.cxx:253 TEveProjectionAxesGL.cxx:254 TEveProjectionAxesGL.cxx:255 TEveProjectionAxesGL.cxx:256 TEveProjectionAxesGL.cxx:257 TEveProjectionAxesGL.cxx:258 TEveProjectionAxesGL.cxx:259 TEveProjectionAxesGL.cxx:260 TEveProjectionAxesGL.cxx:261 TEveProjectionAxesGL.cxx:262 TEveProjectionAxesGL.cxx:263 TEveProjectionAxesGL.cxx:264 TEveProjectionAxesGL.cxx:265 TEveProjectionAxesGL.cxx:266 TEveProjectionAxesGL.cxx:267 TEveProjectionAxesGL.cxx:268 TEveProjectionAxesGL.cxx:269 TEveProjectionAxesGL.cxx:270 TEveProjectionAxesGL.cxx:271 TEveProjectionAxesGL.cxx:272 TEveProjectionAxesGL.cxx:273 TEveProjectionAxesGL.cxx:274 TEveProjectionAxesGL.cxx:275 TEveProjectionAxesGL.cxx:276 TEveProjectionAxesGL.cxx:277 TEveProjectionAxesGL.cxx:278 TEveProjectionAxesGL.cxx:279 TEveProjectionAxesGL.cxx:280 TEveProjectionAxesGL.cxx:281 TEveProjectionAxesGL.cxx:282 TEveProjectionAxesGL.cxx:283 TEveProjectionAxesGL.cxx:284 TEveProjectionAxesGL.cxx:285 TEveProjectionAxesGL.cxx:286 TEveProjectionAxesGL.cxx:287 TEveProjectionAxesGL.cxx:288 TEveProjectionAxesGL.cxx:289 TEveProjectionAxesGL.cxx:290 TEveProjectionAxesGL.cxx:291 TEveProjectionAxesGL.cxx:292 TEveProjectionAxesGL.cxx:293 TEveProjectionAxesGL.cxx:294 TEveProjectionAxesGL.cxx:295 TEveProjectionAxesGL.cxx:296 TEveProjectionAxesGL.cxx:297 TEveProjectionAxesGL.cxx:298 TEveProjectionAxesGL.cxx:299 TEveProjectionAxesGL.cxx:300 TEveProjectionAxesGL.cxx:301 TEveProjectionAxesGL.cxx:302 TEveProjectionAxesGL.cxx:303 TEveProjectionAxesGL.cxx:304 TEveProjectionAxesGL.cxx:305 TEveProjectionAxesGL.cxx:306 TEveProjectionAxesGL.cxx:307 TEveProjectionAxesGL.cxx:308 TEveProjectionAxesGL.cxx:309 TEveProjectionAxesGL.cxx:310 TEveProjectionAxesGL.cxx:311 TEveProjectionAxesGL.cxx:312 TEveProjectionAxesGL.cxx:313 TEveProjectionAxesGL.cxx:314 TEveProjectionAxesGL.cxx:315 TEveProjectionAxesGL.cxx:316 TEveProjectionAxesGL.cxx:317 TEveProjectionAxesGL.cxx:318 TEveProjectionAxesGL.cxx:319 TEveProjectionAxesGL.cxx:320 TEveProjectionAxesGL.cxx:321 TEveProjectionAxesGL.cxx:322 TEveProjectionAxesGL.cxx:323 TEveProjectionAxesGL.cxx:324 TEveProjectionAxesGL.cxx:325 TEveProjectionAxesGL.cxx:326 TEveProjectionAxesGL.cxx:327 TEveProjectionAxesGL.cxx:328 TEveProjectionAxesGL.cxx:329 TEveProjectionAxesGL.cxx:330 TEveProjectionAxesGL.cxx:331 TEveProjectionAxesGL.cxx:332 TEveProjectionAxesGL.cxx:333 TEveProjectionAxesGL.cxx:334 TEveProjectionAxesGL.cxx:335 TEveProjectionAxesGL.cxx:336 TEveProjectionAxesGL.cxx:337 TEveProjectionAxesGL.cxx:338 TEveProjectionAxesGL.cxx:339 TEveProjectionAxesGL.cxx:340 TEveProjectionAxesGL.cxx:341 TEveProjectionAxesGL.cxx:342 TEveProjectionAxesGL.cxx:343 TEveProjectionAxesGL.cxx:344 TEveProjectionAxesGL.cxx:345 TEveProjectionAxesGL.cxx:346 TEveProjectionAxesGL.cxx:347 TEveProjectionAxesGL.cxx:348 TEveProjectionAxesGL.cxx:349 TEveProjectionAxesGL.cxx:350 TEveProjectionAxesGL.cxx:351 TEveProjectionAxesGL.cxx:352 TEveProjectionAxesGL.cxx:353 TEveProjectionAxesGL.cxx:354 TEveProjectionAxesGL.cxx:355 TEveProjectionAxesGL.cxx:356 TEveProjectionAxesGL.cxx:357 TEveProjectionAxesGL.cxx:358 TEveProjectionAxesGL.cxx:359 TEveProjectionAxesGL.cxx:360 TEveProjectionAxesGL.cxx:361 TEveProjectionAxesGL.cxx:362 TEveProjectionAxesGL.cxx:363 TEveProjectionAxesGL.cxx:364 TEveProjectionAxesGL.cxx:365 TEveProjectionAxesGL.cxx:366 TEveProjectionAxesGL.cxx:367 TEveProjectionAxesGL.cxx:368 TEveProjectionAxesGL.cxx:369 TEveProjectionAxesGL.cxx:370 TEveProjectionAxesGL.cxx:371 TEveProjectionAxesGL.cxx:372 TEveProjectionAxesGL.cxx:373 TEveProjectionAxesGL.cxx:374 TEveProjectionAxesGL.cxx:375 TEveProjectionAxesGL.cxx:376 TEveProjectionAxesGL.cxx:377 TEveProjectionAxesGL.cxx:378 TEveProjectionAxesGL.cxx:379 TEveProjectionAxesGL.cxx:380 TEveProjectionAxesGL.cxx:381 TEveProjectionAxesGL.cxx:382 TEveProjectionAxesGL.cxx:383 TEveProjectionAxesGL.cxx:384 TEveProjectionAxesGL.cxx:385 TEveProjectionAxesGL.cxx:386 TEveProjectionAxesGL.cxx:387 TEveProjectionAxesGL.cxx:388 TEveProjectionAxesGL.cxx:389 TEveProjectionAxesGL.cxx:390 TEveProjectionAxesGL.cxx:391 TEveProjectionAxesGL.cxx:392 TEveProjectionAxesGL.cxx:393 TEveProjectionAxesGL.cxx:394 TEveProjectionAxesGL.cxx:395 TEveProjectionAxesGL.cxx:396 TEveProjectionAxesGL.cxx:397 TEveProjectionAxesGL.cxx:398 TEveProjectionAxesGL.cxx:399 TEveProjectionAxesGL.cxx:400 TEveProjectionAxesGL.cxx:401 TEveProjectionAxesGL.cxx:402 TEveProjectionAxesGL.cxx:403 TEveProjectionAxesGL.cxx:404 TEveProjectionAxesGL.cxx:405 TEveProjectionAxesGL.cxx:406 TEveProjectionAxesGL.cxx:407 TEveProjectionAxesGL.cxx:408 TEveProjectionAxesGL.cxx:409 TEveProjectionAxesGL.cxx:410 TEveProjectionAxesGL.cxx:411 TEveProjectionAxesGL.cxx:412 TEveProjectionAxesGL.cxx:413 TEveProjectionAxesGL.cxx:414 TEveProjectionAxesGL.cxx:415 TEveProjectionAxesGL.cxx:416 TEveProjectionAxesGL.cxx:417 TEveProjectionAxesGL.cxx:418 TEveProjectionAxesGL.cxx:419 TEveProjectionAxesGL.cxx:420 TEveProjectionAxesGL.cxx:421 TEveProjectionAxesGL.cxx:422 TEveProjectionAxesGL.cxx:423 TEveProjectionAxesGL.cxx:424 TEveProjectionAxesGL.cxx:425 TEveProjectionAxesGL.cxx:426 TEveProjectionAxesGL.cxx:427 TEveProjectionAxesGL.cxx:428 TEveProjectionAxesGL.cxx:429 TEveProjectionAxesGL.cxx:430 TEveProjectionAxesGL.cxx:431 TEveProjectionAxesGL.cxx:432 TEveProjectionAxesGL.cxx:433 TEveProjectionAxesGL.cxx:434 TEveProjectionAxesGL.cxx:435 TEveProjectionAxesGL.cxx:436 TEveProjectionAxesGL.cxx:437 TEveProjectionAxesGL.cxx:438 TEveProjectionAxesGL.cxx:439 TEveProjectionAxesGL.cxx:440 TEveProjectionAxesGL.cxx:441 TEveProjectionAxesGL.cxx:442 TEveProjectionAxesGL.cxx:443 TEveProjectionAxesGL.cxx:444 TEveProjectionAxesGL.cxx:445 TEveProjectionAxesGL.cxx:446 TEveProjectionAxesGL.cxx:447 TEveProjectionAxesGL.cxx:448 TEveProjectionAxesGL.cxx:449 TEveProjectionAxesGL.cxx:450 TEveProjectionAxesGL.cxx:451 TEveProjectionAxesGL.cxx:452 TEveProjectionAxesGL.cxx:453 TEveProjectionAxesGL.cxx:454 TEveProjectionAxesGL.cxx:455 TEveProjectionAxesGL.cxx:456 TEveProjectionAxesGL.cxx:457