Improve visual frequency / new demod indicator

This commit is contained in:
Charles J. Cliffe
2016-01-13 21:29:26 -05:00
parent 6f7234b35a
commit 416cb54fb9
5 changed files with 56 additions and 23 deletions
+29 -21
View File
@@ -151,7 +151,7 @@ void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGBA4f color, l
}
void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long long center_freq, long long srate) {
void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long long center_freq, long long srate, bool stack) {
if (!srate) {
srate = wxGetApp().getSampleRate();
}
@@ -168,34 +168,32 @@ void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long
float uxPos = (float) (freq - (center_freq - srate / 2)) / (float) srate;
uxPos = (uxPos - 0.5) * 2.0;
glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// glColor4f(color.r, color.g, color.b, 0.6);
//
std::string lastType = wxGetApp().getDemodMgr().getLastDemodulatorType();
float ofs = (float) bw / (float) srate;
float ofsLeft = (lastType!="USB")?ofs:0, ofsRight = (lastType!="LSB")?ofs:0;
//
float labelHeight = 20.0 / viewHeight;
float hPos = -1.0 + labelHeight;
float hPos = -1.0 + (stack?(labelHeight*3.0):labelHeight);
glDisable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0, 0, 0, 0.35);
// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//
// glBegin(GL_QUADS);
// glVertex3f(uxPos - ofsLeft, hPos + labelHeight, 0.0);
// glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
//
// glVertex3f(uxPos + ofsRight, -1.0, 0.0);
// glVertex3f(uxPos + ofsRight, hPos + labelHeight, 0.0);
// glEnd();
glBegin(GL_QUADS);
glVertex3f(uxPos - ofsLeft, hPos + labelHeight, 0.0);
glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
glVertex3f(uxPos + ofsRight, -1.0, 0.0);
glVertex3f(uxPos + ofsRight, hPos + labelHeight, 0.0);
glEnd();
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glColor4f(color.r, color.g, color.b, 0.2);
glColor4f(color.r, color.g, color.b, 0.1);
glBegin(GL_QUADS);
glVertex3f(uxPos - ofsLeft, 1.0, 0.0);
glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
@@ -205,7 +203,7 @@ void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long
glEnd();
if (ofs * 2.0 < 16.0 / viewWidth) {
glColor4f(color.r, color.g, color.b, 0.2);
glColor4f(color.r, color.g, color.b, 0.1);
glBegin(GL_QUADS);
glVertex3f(uxPos - ofsLeft, hPos + labelHeight, 0.0);
glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
@@ -215,16 +213,26 @@ void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long
glEnd();
}
glColor4f(1.0, 1.0, 1.0, 0.8);
std::string demodLabel = std::to_string((double)freq/1000000.0);
double shadowOfsX = 0.5 / viewWidth, shadowOfsY = 0.5 / viewHeight;
if (lastType == "USB") {
glColor4f(0,0,0, 1.0);
GLFont::getFont(GLFont::GLFONT_SIZE16).drawString(demodLabel, uxPos+shadowOfsX, hPos-shadowOfsY, 16, GLFont::GLFONT_ALIGN_LEFT, GLFont::GLFONT_ALIGN_CENTER);
glColor4f(color.r, color.g, color.b, 1.0);
GLFont::getFont(GLFont::GLFONT_SIZE16).drawString(demodLabel, uxPos, hPos, 16, GLFont::GLFONT_ALIGN_LEFT, GLFont::GLFONT_ALIGN_CENTER);
} else if (lastType == "LSB") {
glColor4f(0,0,0, 1.0);
GLFont::getFont(GLFont::GLFONT_SIZE16).drawString(demodLabel, uxPos+shadowOfsX, hPos-shadowOfsY, 16, GLFont::GLFONT_ALIGN_RIGHT, GLFont::GLFONT_ALIGN_CENTER);
glColor4f(color.r, color.g, color.b, 1.0);
GLFont::getFont(GLFont::GLFONT_SIZE16).drawString(demodLabel, uxPos, hPos, 16, GLFont::GLFONT_ALIGN_RIGHT, GLFont::GLFONT_ALIGN_CENTER);
} else {
glColor4f(0,0,0, 1.0);
GLFont::getFont(GLFont::GLFONT_SIZE16).drawString(demodLabel, uxPos+shadowOfsX, hPos-shadowOfsY, 16, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER);
glColor4f(color.r, color.g, color.b, 1.0);
GLFont::getFont(GLFont::GLFONT_SIZE16).drawString(demodLabel, uxPos, hPos, 16, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER);
}