mirror of
				https://github.com/cjcliffe/CubicSDR.git
				synced 2025-11-03 13:10:27 -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() {
 | 
				
			||||||
@ -394,9 +395,13 @@ void GLTextPanel::drawPanelContents() {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    //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 (pdimy <= 16) {
 | 
					    if (!useNativeFont) {
 | 
				
			||||||
 | 
					        pdimy /= GLFont::getScaleFactor();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user