25 ClassImp(TEveRGBAPaletteOverlay);
30 TEveRGBAPaletteOverlay::TEveRGBAPaletteOverlay(TEveRGBAPalette* p, Float_t posx, Float_t posy,
31 Float_t width, Float_t height) :
39 fAxis.SetNdivisions(900);
40 fAxisPainter.SetUseAxisColors(kFALSE);
41 fAxisPainter.SetLabelPixelFontSize(10);
42 fAxisPainter.SetFontMode(TGLFont::kPixmap);
43 fAxisPainter.SetLabelAlign(TGLFont::kCenterH, TGLFont::kBottom);
49 void TEveRGBAPaletteOverlay::Render(TGLRnrCtx& rnrCtx)
51 const Double_t ca_min = fPalette->GetCAMinAsDouble();
52 const Double_t ca_max = fPalette->GetCAMaxAsDouble();
55 if (ca_min == ca_max)
return;
57 fAxis.SetLimits(ca_min, ca_max);
59 glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT);
61 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
62 glDisable(GL_CULL_FACE);
64 glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
65 TGLCapabilitySwitch lights_off(GL_LIGHTING, kFALSE);
68 glMatrixMode(GL_PROJECTION);
71 glOrtho(0, 1, 0, 1, 0, 1);
72 glMatrixMode(GL_MODELVIEW);
77 glTranslatef(fPosX, fPosY, 0);
81 TGLCapabilitySwitch move_to_back(GL_POLYGON_OFFSET_FILL, kTRUE);
82 glPolygonOffset(0.5f, 0.5f);
84 glBegin(GL_QUAD_STRIP);
85 TGLUtil::Color4ubv(fPalette->ColorFromValue(fPalette->fCAMin));
87 glVertex2f(0, fHeight);
88 Float_t xs = fWidth / (fPalette->fCAMax - fPalette->fCAMin);
90 for (Int_t i = fPalette->fCAMin + 1; i < fPalette->fCAMax; ++i)
92 TGLUtil::Color4ubv(fPalette->ColorFromValue(i));
94 glVertex2f(x, fHeight);
97 TGLUtil::Color4ubv(fPalette->ColorFromValue(fPalette->fCAMax));
98 glVertex2f(fWidth, 0);
99 glVertex2f(fWidth, fHeight);
105 Float_t sf = fWidth / (ca_max - ca_min);
107 glTranslatef(-ca_min, 0, 0);
108 fAxis.SetTickLength(0.05*fWidth);
109 fAxisPainter.RefTMOff(0).Set(0, -1, 0);
110 fAxisPainter.PaintAxis(rnrCtx, &fAxis);
114 glBegin(GL_LINE_LOOP);
115 glVertex2f(0, 0); glVertex2f(fWidth, 0);
116 glVertex2f(fWidth, fHeight); glVertex2f(0, fHeight);
119 glMatrixMode(GL_PROJECTION);
121 glMatrixMode(GL_MODELVIEW);