mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-11-26 05:38:39 -05:00
The quest continues, almost done, but have an idea to rework GLFont.drawString() completly, TODO next time
This commit is contained in:
parent
9962e606a6
commit
83b62cddeb
@ -84,8 +84,8 @@ AppFrame::AppFrame() :
|
|||||||
demodModeSelector->addChoice("I/Q");
|
demodModeSelector->addChoice("I/Q");
|
||||||
demodModeSelector->setSelection("FM");
|
demodModeSelector->setSelection("FM");
|
||||||
demodModeSelector->setHelpTip("Choose modulation type: Frequency Modulation (Hotkey F), Amplitude Modulation (A) and Lower (L), Upper (U), Double Side-Band and more.");
|
demodModeSelector->setHelpTip("Choose modulation type: Frequency Modulation (Hotkey F), Amplitude Modulation (A) and Lower (L), Upper (U), Double Side-Band and more.");
|
||||||
demodModeSelector->SetMinSize(wxSize(40,-1));
|
demodModeSelector->SetMinSize(wxSize(44,-1));
|
||||||
demodModeSelector->SetMaxSize(wxSize(40,-1));
|
demodModeSelector->SetMaxSize(wxSize(44,-1));
|
||||||
demodTray->Add(demodModeSelector, 2, wxEXPAND | wxALL, 0);
|
demodTray->Add(demodModeSelector, 2, wxEXPAND | wxALL, 0);
|
||||||
|
|
||||||
#ifdef ENABLE_DIGITAL_LAB
|
#ifdef ENABLE_DIGITAL_LAB
|
||||||
@ -103,8 +103,8 @@ AppFrame::AppFrame() :
|
|||||||
demodModeSelectorAdv->addChoice("QAM");
|
demodModeSelectorAdv->addChoice("QAM");
|
||||||
demodModeSelectorAdv->addChoice("QPSK");
|
demodModeSelectorAdv->addChoice("QPSK");
|
||||||
demodModeSelectorAdv->setHelpTip("Choose advanced modulation types.");
|
demodModeSelectorAdv->setHelpTip("Choose advanced modulation types.");
|
||||||
demodModeSelectorAdv->SetMinSize(wxSize(40,-1));
|
demodModeSelectorAdv->SetMinSize(wxSize(44,-1));
|
||||||
demodModeSelectorAdv->SetMaxSize(wxSize(40,-1));
|
demodModeSelectorAdv->SetMaxSize(wxSize(44,-1));
|
||||||
demodTray->Add(demodModeSelectorAdv, 3, wxEXPAND | wxALL, 0);
|
demodTray->Add(demodModeSelectorAdv, 3, wxEXPAND | wxALL, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -385,6 +385,7 @@ GLTextPanel::GLTextPanel() : GLPanel() {
|
|||||||
coord = GLPANEL_Y_UP;
|
coord = GLPANEL_Y_UP;
|
||||||
horizAlign = GLFont::GLFONT_ALIGN_CENTER;
|
horizAlign = GLFont::GLFONT_ALIGN_CENTER;
|
||||||
vertAlign = GLFont::GLFONT_ALIGN_CENTER;
|
vertAlign = GLFont::GLFONT_ALIGN_CENTER;
|
||||||
|
useNativeFont = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLTextPanel::drawPanelContents() {
|
void GLTextPanel::drawPanelContents() {
|
||||||
@ -393,10 +394,14 @@ void GLTextPanel::drawPanelContents() {
|
|||||||
GLFont::GLFontSize sz;
|
GLFont::GLFontSize sz;
|
||||||
|
|
||||||
//beware here: the really applied font may have been scaled up compared to the "user" requested one, so that
|
//beware here: the really applied font may have been scaled up compared to the "user" requested one, so that
|
||||||
//we must negate it here to compute "user" font selection.
|
//we must negate it here to compute "user" font selection.
|
||||||
float pdimy = pdim.y / GLFont::getScaleFactor();
|
float pdimy = pdim.y;
|
||||||
|
|
||||||
|
if (!useNativeFont) {
|
||||||
|
pdimy /= GLFont::getScaleFactor();
|
||||||
|
}
|
||||||
|
|
||||||
if (pdimy <= 16) {
|
if (pdimy <= 14) {
|
||||||
sz = GLFont::GLFONT_SIZE12;
|
sz = GLFont::GLFONT_SIZE12;
|
||||||
|
|
||||||
} else if (pdimy <= 18) {
|
} else if (pdimy <= 18) {
|
||||||
@ -410,7 +415,6 @@ void GLTextPanel::drawPanelContents() {
|
|||||||
}
|
}
|
||||||
else if (pdimy <= 32) {
|
else if (pdimy <= 32) {
|
||||||
sz = GLFont::GLFONT_SIZE27;
|
sz = GLFont::GLFONT_SIZE27;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (pdimy <= 36) {
|
else if (pdimy <= 36) {
|
||||||
sz = GLFont::GLFONT_SIZE32;
|
sz = GLFont::GLFONT_SIZE32;
|
||||||
@ -437,14 +441,19 @@ void GLTextPanel::drawPanelContents() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useNativeFont) {
|
||||||
GLFont::getFont(sz).drawString(textVal, mid, mid, horizAlign, vertAlign, (int)pdim.x, (int)pdim.y);
|
GLFont::getRawFont(sz).drawString(textVal, mid, mid, horizAlign, vertAlign, (int)pdim.x, (int)pdim.y);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
GLFont::getFont(sz).drawString(textVal, mid, mid, horizAlign, vertAlign, (int)pdim.x, (int)pdim.y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLTextPanel::setText(std::string text, GLFont::Align hAlign, GLFont::Align vAlign) {
|
void GLTextPanel::setText(std::string text, GLFont::Align hAlign, GLFont::Align vAlign, bool useNative) {
|
||||||
textVal = text;
|
textVal = text;
|
||||||
horizAlign = hAlign;
|
horizAlign = hAlign;
|
||||||
vertAlign = vAlign;
|
vertAlign = vAlign;
|
||||||
|
useNativeFont = useNative;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GLTextPanel::getText() {
|
std::string GLTextPanel::getText() {
|
||||||
|
@ -99,11 +99,13 @@ private:
|
|||||||
std::string textVal;
|
std::string textVal;
|
||||||
GLFont::Align horizAlign;
|
GLFont::Align horizAlign;
|
||||||
GLFont::Align vertAlign;
|
GLFont::Align vertAlign;
|
||||||
|
boolean useNativeFont;
|
||||||
public:
|
public:
|
||||||
GLTextPanel();
|
GLTextPanel();
|
||||||
|
|
||||||
void drawPanelContents();
|
void drawPanelContents();
|
||||||
void setText(std::string text, GLFont::Align hAlign = GLFont::GLFONT_ALIGN_CENTER, GLFont::Align vAlign = GLFont::GLFONT_ALIGN_CENTER);
|
|
||||||
|
void setText(std::string text, GLFont::Align hAlign = GLFont::GLFONT_ALIGN_CENTER, GLFont::Align vAlign = GLFont::GLFONT_ALIGN_CENTER , bool useNativeFont = false);
|
||||||
std::string getText();
|
std::string getText();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -834,6 +834,17 @@ GLFont &GLFont::getFont(GLFontSize esize) {
|
|||||||
return fonts[internalFontSize];
|
return fonts[internalFontSize];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GLFont &GLFont::getRawFont(GLFontSize esize) {
|
||||||
|
|
||||||
|
//Do not apply the scaling, really returns the requested font.
|
||||||
|
|
||||||
|
|
||||||
|
//load lazily...
|
||||||
|
fonts[esize].loadFontOnce();
|
||||||
|
|
||||||
|
return fonts[esize];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void GLFont::setScale(GLFontScale scale) {
|
void GLFont::setScale(GLFontScale scale) {
|
||||||
|
|
||||||
|
@ -102,6 +102,9 @@ public:
|
|||||||
//it will be translated to another font depending of the scale level
|
//it will be translated to another font depending of the scale level
|
||||||
static GLFont& getFont(GLFontSize esize);
|
static GLFont& getFont(GLFontSize esize);
|
||||||
|
|
||||||
|
//Return the requested raw font, without applying scaling.
|
||||||
|
static GLFont &GLFont::getRawFont(GLFontSize esize);
|
||||||
|
|
||||||
//Called to change the scale of the rendered fonts
|
//Called to change the scale of the rendered fonts
|
||||||
static void setScale(GLFontScale scale);
|
static void setScale(GLFontScale scale);
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ void GainCanvas::SetLevel() {
|
|||||||
gainInfo[panelHit]->levelPanel.setPosition(0.0, (-1.0+(hitResult.y)));
|
gainInfo[panelHit]->levelPanel.setPosition(0.0, (-1.0+(hitResult.y)));
|
||||||
gainInfo[panelHit]->current = round(gainInfo[panelHit]->low+(hitResult.y * (gainInfo[panelHit]->high-gainInfo[panelHit]->low)));
|
gainInfo[panelHit]->current = round(gainInfo[panelHit]->low+(hitResult.y * (gainInfo[panelHit]->high-gainInfo[panelHit]->low)));
|
||||||
gainInfo[panelHit]->changed = true;
|
gainInfo[panelHit]->changed = true;
|
||||||
gainInfo[panelHit]->valuePanel.setText(std::to_string(int(gainInfo[panelHit]->current)));
|
gainInfo[panelHit]->valuePanel.setText(std::to_string(int(gainInfo[panelHit]->current)),GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ void GainCanvas::OnMouseWheelMoved(wxMouseEvent& event) {
|
|||||||
gInfo->levelPanel.setSize(1.0, levelVal);
|
gInfo->levelPanel.setSize(1.0, levelVal);
|
||||||
gInfo->levelPanel.setPosition(0.0, levelVal-1.0);
|
gInfo->levelPanel.setPosition(0.0, levelVal-1.0);
|
||||||
|
|
||||||
gInfo->valuePanel.setText(std::to_string(int(gInfo->current)));
|
gInfo->valuePanel.setText(std::to_string(int(gInfo->current)),GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -290,14 +290,16 @@ void GainCanvas::updateGainUI() {
|
|||||||
|
|
||||||
gInfo->labelPanel.setSize(spacing/2.0,(15.0/float(ClientSize.y)));
|
gInfo->labelPanel.setSize(spacing/2.0,(15.0/float(ClientSize.y)));
|
||||||
gInfo->labelPanel.setPosition(midPos, -barHeight-(20.0/float(ClientSize.y)));
|
gInfo->labelPanel.setPosition(midPos, -barHeight-(20.0/float(ClientSize.y)));
|
||||||
gInfo->labelPanel.setText(gi->first);
|
|
||||||
|
gInfo->labelPanel.setText(gi->first,GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, true);
|
||||||
gInfo->labelPanel.setFill(GLPanel::GLPANEL_FILL_NONE);
|
gInfo->labelPanel.setFill(GLPanel::GLPANEL_FILL_NONE);
|
||||||
|
|
||||||
bgPanel.addChild(&(gInfo->labelPanel));
|
bgPanel.addChild(&(gInfo->labelPanel));
|
||||||
|
|
||||||
gInfo->valuePanel.setSize(spacing/2.0,(15.0/float(ClientSize.y)));
|
gInfo->valuePanel.setSize(spacing/2.0,(15.0/float(ClientSize.y)));
|
||||||
gInfo->valuePanel.setPosition(midPos, barHeight+(20.0/float(ClientSize.y)));
|
gInfo->valuePanel.setPosition(midPos, barHeight+(20.0/float(ClientSize.y)));
|
||||||
gInfo->valuePanel.setText(std::to_string(int(gInfo->current)));
|
|
||||||
|
gInfo->valuePanel.setText(std::to_string(int(gInfo->current)), GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, true);
|
||||||
gInfo->valuePanel.setFill(GLPanel::GLPANEL_FILL_NONE);
|
gInfo->valuePanel.setFill(GLPanel::GLPANEL_FILL_NONE);
|
||||||
|
|
||||||
bgPanel.addChild(&(gInfo->valuePanel));
|
bgPanel.addChild(&(gInfo->valuePanel));
|
||||||
|
@ -29,10 +29,10 @@ void ModeSelectorContext::DrawSelector(std::string label, int c, int cMax, bool
|
|||||||
float viewHeight = (float) vp[3];
|
float viewHeight = (float) vp[3];
|
||||||
float viewWidth = (float) vp[2];
|
float viewWidth = (float) vp[2];
|
||||||
|
|
||||||
GLFont::GLFontSize fontSize = GLFont::GLFONT_SIZE16;
|
GLFont::GLFontSize fontSize = GLFont::GLFONT_SIZE18;
|
||||||
|
|
||||||
if (viewWidth < 30 || viewHeight < 200) {
|
if (viewWidth < 30 || viewHeight < 200) {
|
||||||
fontSize = GLFont::GLFONT_SIZE12;
|
fontSize = GLFont::GLFONT_SIZE16;
|
||||||
}
|
}
|
||||||
|
|
||||||
glColor4f(r, g, b, a);
|
glColor4f(r, g, b, a);
|
||||||
@ -59,7 +59,8 @@ void ModeSelectorContext::DrawSelector(std::string label, int c, int cMax, bool
|
|||||||
glColor4f(0, 0, 0, a);
|
glColor4f(0, 0, 0, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFont::getFont(fontSize).drawString(label, 0.0, y + height / 2.0, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER);
|
//Do not zoom the selectors
|
||||||
|
GLFont::getRawFont(fontSize).drawString(label, 0.0, y + height / 2.0, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModeSelectorContext::DrawEnd() {
|
void ModeSelectorContext::DrawEnd() {
|
||||||
|
@ -94,7 +94,8 @@ void TuningContext::DrawTuner(long long freq, int count, float displayPos, float
|
|||||||
int numChars = freqChars.length();
|
int numChars = freqChars.length();
|
||||||
int ofs = count - numChars;
|
int ofs = count - numChars;
|
||||||
|
|
||||||
GLFont& refDrawingFont = GLFont::getFont(fontSize);
|
//do not zoom this one:
|
||||||
|
GLFont& refDrawingFont = GLFont::getRawFont(fontSize);
|
||||||
|
|
||||||
for (int i = ofs; i < count; i++) {
|
for (int i = ofs; i < count; i++) {
|
||||||
float xpos = displayPos + (displayWidth / (float) count) * (float) i + ((displayWidth / 2.0) / (float) count);
|
float xpos = displayPos + (displayWidth / (float) count) * (float) i + ((displayWidth / 2.0) / (float) count);
|
||||||
|
Loading…
Reference in New Issue
Block a user