#include "TEveRGBAPaletteOverlay.h"
#include "TEveRGBAPalette.h"
#include "TGLIncludes.h"
#include "TGLAxis.h"
#include "TGLRnrCtx.h"
#include "TGLUtil.h"
ClassImp(TEveRGBAPaletteOverlay);
TEveRGBAPaletteOverlay::TEveRGBAPaletteOverlay(TEveRGBAPalette* p, Float_t posx, Float_t posy,
Float_t width, Float_t height) :
TGLOverlayElement(),
fPalette(p),
fPosX(posx),
fPosY(posy),
fWidth(width),
fHeight(height)
{
fAxis.SetNdivisions(900);
fAxisPainter.SetUseAxisColors(kFALSE);
fAxisPainter.SetLabelPixelFontSize(10);
fAxisPainter.SetFontMode(TGLFont::kPixmap);
fAxisPainter.SetLabelAlign(TGLFont::kCenterH, TGLFont::kBottom);
}
void TEveRGBAPaletteOverlay::Render(TGLRnrCtx& rnrCtx)
{
const Double_t ca_min = fPalette->GetCAMinAsDouble();
const Double_t ca_max = fPalette->GetCAMaxAsDouble();
if (ca_min == ca_max) return;
fAxis.SetLimits(ca_min, ca_max);
glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glDisable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
TGLCapabilitySwitch lights_off(GL_LIGHTING, kFALSE);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, 1, 0, 1, 0, 1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(fPosX, fPosY, 0);
{
TGLCapabilitySwitch move_to_back(GL_POLYGON_OFFSET_FILL, kTRUE);
glPolygonOffset(0.5f, 0.5f);
glBegin(GL_QUAD_STRIP);
TGLUtil::Color4ubv(fPalette->ColorFromValue(fPalette->fCAMin));
glVertex2f(0, 0);
glVertex2f(0, fHeight);
Float_t xs = fWidth / (fPalette->fCAMax - fPalette->fCAMin);
Float_t x = xs;
for (Int_t i = fPalette->fCAMin + 1; i < fPalette->fCAMax; ++i)
{
TGLUtil::Color4ubv(fPalette->ColorFromValue(i));
glVertex2f(x, 0);
glVertex2f(x, fHeight);
x += xs;
}
TGLUtil::Color4ubv(fPalette->ColorFromValue(fPalette->fCAMax));
glVertex2f(fWidth, 0);
glVertex2f(fWidth, fHeight);
glEnd();
}
glPushMatrix();
Float_t sf = fWidth / (ca_max - ca_min);
glScalef(sf, 1, 1);
glTranslatef(-ca_min, 0, 0);
fAxis.SetTickLength(0.05*fWidth);
fAxisPainter.RefTMOff(0).Set(0, -1, 0);
fAxisPainter.PaintAxis(rnrCtx, &fAxis);
glPopMatrix();
glBegin(GL_LINE_LOOP);
glVertex2f(0, 0); glVertex2f(fWidth, 0);
glVertex2f(fWidth, fHeight); glVertex2f(0, fHeight);
glEnd();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glPopAttrib();
}
TEveRGBAPaletteOverlay.cxx:1 TEveRGBAPaletteOverlay.cxx:2 TEveRGBAPaletteOverlay.cxx:3 TEveRGBAPaletteOverlay.cxx:4 TEveRGBAPaletteOverlay.cxx:5 TEveRGBAPaletteOverlay.cxx:6 TEveRGBAPaletteOverlay.cxx:7 TEveRGBAPaletteOverlay.cxx:8 TEveRGBAPaletteOverlay.cxx:9 TEveRGBAPaletteOverlay.cxx:10 TEveRGBAPaletteOverlay.cxx:11 TEveRGBAPaletteOverlay.cxx:12 TEveRGBAPaletteOverlay.cxx:13 TEveRGBAPaletteOverlay.cxx:14 TEveRGBAPaletteOverlay.cxx:15 TEveRGBAPaletteOverlay.cxx:16 TEveRGBAPaletteOverlay.cxx:17 TEveRGBAPaletteOverlay.cxx:18 TEveRGBAPaletteOverlay.cxx:19 TEveRGBAPaletteOverlay.cxx:20 TEveRGBAPaletteOverlay.cxx:21 TEveRGBAPaletteOverlay.cxx:22 TEveRGBAPaletteOverlay.cxx:23 TEveRGBAPaletteOverlay.cxx:24 TEveRGBAPaletteOverlay.cxx:25 TEveRGBAPaletteOverlay.cxx:26 TEveRGBAPaletteOverlay.cxx:27 TEveRGBAPaletteOverlay.cxx:28 TEveRGBAPaletteOverlay.cxx:29 TEveRGBAPaletteOverlay.cxx:30 TEveRGBAPaletteOverlay.cxx:31 TEveRGBAPaletteOverlay.cxx:32 TEveRGBAPaletteOverlay.cxx:33 TEveRGBAPaletteOverlay.cxx:34 TEveRGBAPaletteOverlay.cxx:35 TEveRGBAPaletteOverlay.cxx:36 TEveRGBAPaletteOverlay.cxx:37 TEveRGBAPaletteOverlay.cxx:38 TEveRGBAPaletteOverlay.cxx:39 TEveRGBAPaletteOverlay.cxx:40 TEveRGBAPaletteOverlay.cxx:41 TEveRGBAPaletteOverlay.cxx:42 TEveRGBAPaletteOverlay.cxx:43 TEveRGBAPaletteOverlay.cxx:44 TEveRGBAPaletteOverlay.cxx:45 TEveRGBAPaletteOverlay.cxx:46 TEveRGBAPaletteOverlay.cxx:47 TEveRGBAPaletteOverlay.cxx:48 TEveRGBAPaletteOverlay.cxx:49 TEveRGBAPaletteOverlay.cxx:50 TEveRGBAPaletteOverlay.cxx:51 TEveRGBAPaletteOverlay.cxx:52 TEveRGBAPaletteOverlay.cxx:53 TEveRGBAPaletteOverlay.cxx:54 TEveRGBAPaletteOverlay.cxx:55 TEveRGBAPaletteOverlay.cxx:56 TEveRGBAPaletteOverlay.cxx:57 TEveRGBAPaletteOverlay.cxx:58 TEveRGBAPaletteOverlay.cxx:59 TEveRGBAPaletteOverlay.cxx:60 TEveRGBAPaletteOverlay.cxx:61 TEveRGBAPaletteOverlay.cxx:62 TEveRGBAPaletteOverlay.cxx:63 TEveRGBAPaletteOverlay.cxx:64 TEveRGBAPaletteOverlay.cxx:65 TEveRGBAPaletteOverlay.cxx:66 TEveRGBAPaletteOverlay.cxx:67 TEveRGBAPaletteOverlay.cxx:68 TEveRGBAPaletteOverlay.cxx:69 TEveRGBAPaletteOverlay.cxx:70 TEveRGBAPaletteOverlay.cxx:71 TEveRGBAPaletteOverlay.cxx:72 TEveRGBAPaletteOverlay.cxx:73 TEveRGBAPaletteOverlay.cxx:74 TEveRGBAPaletteOverlay.cxx:75 TEveRGBAPaletteOverlay.cxx:76 TEveRGBAPaletteOverlay.cxx:77 TEveRGBAPaletteOverlay.cxx:78 TEveRGBAPaletteOverlay.cxx:79 TEveRGBAPaletteOverlay.cxx:80 TEveRGBAPaletteOverlay.cxx:81 TEveRGBAPaletteOverlay.cxx:82 TEveRGBAPaletteOverlay.cxx:83 TEveRGBAPaletteOverlay.cxx:84 TEveRGBAPaletteOverlay.cxx:85 TEveRGBAPaletteOverlay.cxx:86 TEveRGBAPaletteOverlay.cxx:87 TEveRGBAPaletteOverlay.cxx:88 TEveRGBAPaletteOverlay.cxx:89 TEveRGBAPaletteOverlay.cxx:90 TEveRGBAPaletteOverlay.cxx:91 TEveRGBAPaletteOverlay.cxx:92 TEveRGBAPaletteOverlay.cxx:93 TEveRGBAPaletteOverlay.cxx:94 TEveRGBAPaletteOverlay.cxx:95 TEveRGBAPaletteOverlay.cxx:96 TEveRGBAPaletteOverlay.cxx:97 TEveRGBAPaletteOverlay.cxx:98 TEveRGBAPaletteOverlay.cxx:99 TEveRGBAPaletteOverlay.cxx:100 TEveRGBAPaletteOverlay.cxx:101 TEveRGBAPaletteOverlay.cxx:102 TEveRGBAPaletteOverlay.cxx:103 TEveRGBAPaletteOverlay.cxx:104 TEveRGBAPaletteOverlay.cxx:105 TEveRGBAPaletteOverlay.cxx:106 TEveRGBAPaletteOverlay.cxx:107 TEveRGBAPaletteOverlay.cxx:108 TEveRGBAPaletteOverlay.cxx:109 TEveRGBAPaletteOverlay.cxx:110 TEveRGBAPaletteOverlay.cxx:111 TEveRGBAPaletteOverlay.cxx:112 TEveRGBAPaletteOverlay.cxx:113 TEveRGBAPaletteOverlay.cxx:114 TEveRGBAPaletteOverlay.cxx:115 TEveRGBAPaletteOverlay.cxx:116 TEveRGBAPaletteOverlay.cxx:117 TEveRGBAPaletteOverlay.cxx:118 TEveRGBAPaletteOverlay.cxx:119 TEveRGBAPaletteOverlay.cxx:120 TEveRGBAPaletteOverlay.cxx:121 TEveRGBAPaletteOverlay.cxx:122 TEveRGBAPaletteOverlay.cxx:123