mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-11-25 13:18:37 -05:00
Merge branch 'session_bugfix'
This commit is contained in:
commit
d2943b56c4
8
external/cubicvr2/math/mat4.h
vendored
8
external/cubicvr2/math/mat4.h
vendored
@ -78,11 +78,11 @@ namespace CubicVR {
|
||||
__float A = (right + left) / (right - left);
|
||||
__float B = (top + bottom) / (top - bottom);
|
||||
__float C = - (zFar + zNear) / (zFar - zNear);
|
||||
__float D = - (-2.0 * zFar * zNear) / (zFar - zNear);
|
||||
__float D = - (-2.0f * zFar * zNear) / (zFar - zNear);
|
||||
|
||||
|
||||
return mat4((2.0 * zNear) / (right - left), 0, A, 0,
|
||||
0, (2.0 * zNear) / (top - bottom), B, 0,
|
||||
return mat4((2.0f * zNear) / (right - left), 0, A, 0,
|
||||
0, (2.0f * zNear) / (top - bottom), B, 0,
|
||||
0, 0, C, D,
|
||||
0, 0, -1, 0);
|
||||
};
|
||||
@ -313,7 +313,7 @@ namespace CubicVR {
|
||||
};
|
||||
|
||||
static vec3 unProject(mat4 pMatrix, mat4 mvMatrix, float width, float height, float winx, float winy, float /* winz */) {
|
||||
vec4 p(((winx / width) * 2.0) - 1.0, -(((winy / height) * 2.0) - 1.0), 1.0, 1.0);
|
||||
vec4 p(((winx / width) * 2.0f) - 1.0, -(((winy / height) * 2.0f) - 1.0), 1.0, 1.0);
|
||||
|
||||
vec4 invp = mat4::vec4_multiply(mat4::vec4_multiply(p, mat4::inverse(pMatrix)), mat4::inverse(mvMatrix));
|
||||
|
||||
|
@ -164,7 +164,7 @@ AppFrame::AppFrame() :
|
||||
deltaLockButton = new ModeSelectorCanvas(demodPanel, attribList);
|
||||
deltaLockButton->addChoice(1, "V");
|
||||
deltaLockButton->setPadding(-1,-1);
|
||||
deltaLockButton->setHighlightColor(RGBA4f(0.8,0.8,0.2));
|
||||
deltaLockButton->setHighlightColor(RGBA4f(0.8f,0.8f,0.2f));
|
||||
deltaLockButton->setHelpTip("Delta Lock Toggle (V) - Enable to lock modem relative to center frequency.");
|
||||
deltaLockButton->setToggleMode(true);
|
||||
deltaLockButton->setSelection(-1);
|
||||
@ -197,7 +197,7 @@ AppFrame::AppFrame() :
|
||||
soloModeButton = new ModeSelectorCanvas(demodPanel, attribList);
|
||||
soloModeButton->addChoice(1, "S");
|
||||
soloModeButton->setPadding(-1,-1);
|
||||
soloModeButton->setHighlightColor(RGBA4f(0.8,0.8,0.2));
|
||||
soloModeButton->setHighlightColor(RGBA4f(0.8f,0.8f,0.2f));
|
||||
soloModeButton->setHelpTip("Solo Mode Toggle");
|
||||
soloModeButton->setToggleMode(true);
|
||||
soloModeButton->setSelection(-1);
|
||||
@ -210,7 +210,7 @@ AppFrame::AppFrame() :
|
||||
demodMuteButton = new ModeSelectorCanvas(demodPanel, attribList);
|
||||
demodMuteButton->addChoice(1, "M");
|
||||
demodMuteButton->setPadding(-1,-1);
|
||||
demodMuteButton->setHighlightColor(RGBA4f(0.8,0.2,0.2));
|
||||
demodMuteButton->setHighlightColor(RGBA4f(0.8f,0.2f,0.2f));
|
||||
demodMuteButton->setHelpTip("Demodulator Mute Toggle");
|
||||
demodMuteButton->setToggleMode(true);
|
||||
demodMuteButton->setSelection(-1);
|
||||
@ -245,7 +245,7 @@ AppFrame::AppFrame() :
|
||||
peakHoldButton = new ModeSelectorCanvas(spectrumPanel, attribList);
|
||||
peakHoldButton->addChoice(1, "P");
|
||||
peakHoldButton->setPadding(-1,-1);
|
||||
peakHoldButton->setHighlightColor(RGBA4f(0.2,0.8,0.2));
|
||||
peakHoldButton->setHighlightColor(RGBA4f(0.2f,0.8f,0.2f));
|
||||
peakHoldButton->setHelpTip("Peak Hold Toggle");
|
||||
peakHoldButton->setToggleMode(true);
|
||||
peakHoldButton->setSelection(-1);
|
||||
@ -257,7 +257,7 @@ AppFrame::AppFrame() :
|
||||
spectrumAvgMeter = new MeterCanvas(spectrumPanel, attribList);
|
||||
spectrumAvgMeter->setHelpTip("Spectrum averaging speed, click or drag to adjust.");
|
||||
spectrumAvgMeter->setMax(1.0);
|
||||
spectrumAvgMeter->setLevel(0.65);
|
||||
spectrumAvgMeter->setLevel(0.65f);
|
||||
spectrumAvgMeter->setShowUserInput(false);
|
||||
spectrumAvgMeter->SetMinSize(wxSize(12,24));
|
||||
|
||||
@ -888,8 +888,8 @@ void AppFrame::OnMenu(wxCommandEvent& event) {
|
||||
waterfallDataThread->setLinesPerSecond(DEFAULT_WATERFALL_LPS);
|
||||
waterfallCanvas->setLinesPerSecond(DEFAULT_WATERFALL_LPS);
|
||||
waterfallSpeedMeter->setLevel(sqrt(DEFAULT_WATERFALL_LPS));
|
||||
wxGetApp().getSpectrumProcessor()->setFFTAverageRate(0.65);
|
||||
spectrumAvgMeter->setLevel(0.65);
|
||||
wxGetApp().getSpectrumProcessor()->setFFTAverageRate(0.65f);
|
||||
spectrumAvgMeter->setLevel(0.65f);
|
||||
demodModeSelector->Refresh();
|
||||
demodTuner->Refresh();
|
||||
SetTitle(CUBICSDR_TITLE);
|
||||
@ -1427,10 +1427,10 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
||||
if (spectrumAvgMeter->inputChanged()) {
|
||||
float val = spectrumAvgMeter->getInputValue();
|
||||
if (val < 0.01) {
|
||||
val = 0.01;
|
||||
val = 0.01f;
|
||||
}
|
||||
if (val > 0.99) {
|
||||
val = 0.99;
|
||||
val = 0.99f;
|
||||
}
|
||||
spectrumAvgMeter->setLevel(val);
|
||||
proc->setFFTAverageRate(val);
|
||||
@ -1518,10 +1518,10 @@ void AppFrame::OnDoubleClickSash(wxSplitterEvent& event)
|
||||
|
||||
if (event.GetId() == wxID_MAIN_SPLITTER) {
|
||||
w = mainSplitter;
|
||||
g = 10.0/37.0;
|
||||
g = 10.0f/37.0f;
|
||||
} else if (event.GetId() == wxID_VIS_SPLITTER) {
|
||||
w = mainVisSplitter;
|
||||
g = 6.0/25.0;
|
||||
g = 6.0f/25.0f;
|
||||
}
|
||||
|
||||
if (w != NULL) {
|
||||
@ -1627,6 +1627,7 @@ bool AppFrame::loadSession(std::string fileName) {
|
||||
int numDemodulators = 0;
|
||||
DemodulatorInstance *loadedDemod = NULL;
|
||||
DemodulatorInstance *newDemod = NULL;
|
||||
std::vector<DemodulatorInstance *> demodsLoaded;
|
||||
|
||||
while (demodulators->hasAnother("demodulator")) {
|
||||
DataNode *demod = demodulators->getNext("demodulator");
|
||||
@ -1727,8 +1728,9 @@ bool AppFrame::loadSession(std::string fileName) {
|
||||
}
|
||||
|
||||
newDemod->run();
|
||||
newDemod->setActive(false);
|
||||
wxGetApp().bindDemodulator(newDemod);
|
||||
newDemod->setActive(true);
|
||||
demodsLoaded.push_back(newDemod);
|
||||
// wxGetApp().bindDemodulator(newDemod);
|
||||
|
||||
std::cout << "\tAdded demodulator at frequency " << freq << " type " << type << std::endl;
|
||||
std::cout << "\t\tBandwidth: " << bandwidth << std::endl;
|
||||
@ -1740,9 +1742,7 @@ bool AppFrame::loadSession(std::string fileName) {
|
||||
DemodulatorInstance *focusDemod = loadedDemod?loadedDemod:newDemod;
|
||||
|
||||
if (focusDemod) {
|
||||
focusDemod->setActive(true);
|
||||
focusDemod->setFollow(true);
|
||||
focusDemod->setTracking(true);
|
||||
wxGetApp().bindDemodulators(&demodsLoaded);
|
||||
wxGetApp().getDemodMgr().setActiveDemodulator(focusDemod, false);
|
||||
}
|
||||
} catch (DataInvalidChildException &e) {
|
||||
|
@ -632,6 +632,13 @@ void CubicSDR::bindDemodulator(DemodulatorInstance *demod) {
|
||||
sdrPostThread->bindDemodulator(demod);
|
||||
}
|
||||
|
||||
void CubicSDR::bindDemodulators(std::vector<DemodulatorInstance *> *demods) {
|
||||
if (!demods) {
|
||||
return;
|
||||
}
|
||||
sdrPostThread->bindDemodulators(demods);
|
||||
}
|
||||
|
||||
long long CubicSDR::getSampleRate() {
|
||||
return sampleRate;
|
||||
}
|
||||
|
@ -115,6 +115,7 @@ public:
|
||||
SDRThread *getSDRThread();
|
||||
|
||||
void bindDemodulator(DemodulatorInstance *demod);
|
||||
void bindDemodulators(std::vector<DemodulatorInstance *> *demods);
|
||||
void removeDemodulator(DemodulatorInstance *demod);
|
||||
|
||||
void setFrequencySnap(int snap);
|
||||
|
@ -13,9 +13,17 @@
|
||||
bool demodFreqCompare (DemodulatorInstance *i, DemodulatorInstance *j) { return (i->getFrequency()<j->getFrequency()); }
|
||||
bool inactiveCompare (DemodulatorInstance *i, DemodulatorInstance *j) { return (i->isActive()<j->isActive()); }
|
||||
|
||||
DemodulatorMgr::DemodulatorMgr() :
|
||||
activeDemodulator(NULL), lastActiveDemodulator(NULL), activeVisualDemodulator(NULL), lastBandwidth(DEFAULT_DEMOD_BW), lastDemodType(
|
||||
DEFAULT_DEMOD_TYPE), lastSquelchEnabled(false), lastSquelch(-100), lastGain(1.0), lastMuted(false), lastDeltaLock(false) {
|
||||
DemodulatorMgr::DemodulatorMgr() {
|
||||
activeDemodulator = NULL;
|
||||
lastActiveDemodulator = NULL;
|
||||
activeVisualDemodulator = NULL;
|
||||
lastBandwidth = DEFAULT_DEMOD_BW;
|
||||
lastDemodType = DEFAULT_DEMOD_TYPE;
|
||||
lastSquelchEnabled = false;
|
||||
lastSquelch = -100;
|
||||
lastGain = 1.0;
|
||||
lastMuted = false;
|
||||
lastDeltaLock = false;
|
||||
}
|
||||
|
||||
DemodulatorMgr::~DemodulatorMgr() {
|
||||
@ -23,26 +31,35 @@ DemodulatorMgr::~DemodulatorMgr() {
|
||||
}
|
||||
|
||||
DemodulatorInstance *DemodulatorMgr::newThread() {
|
||||
garbageCollect();
|
||||
|
||||
demods_busy.lock();
|
||||
DemodulatorInstance *newDemod = new DemodulatorInstance;
|
||||
demods.push_back(newDemod);
|
||||
|
||||
std::stringstream label;
|
||||
label << demods.size();
|
||||
newDemod->setLabel(label.str());
|
||||
|
||||
demods.push_back(newDemod);
|
||||
demods_busy.unlock();
|
||||
|
||||
return newDemod;
|
||||
}
|
||||
|
||||
void DemodulatorMgr::terminateAll() {
|
||||
while (demods.size()) {
|
||||
demods_busy.lock();
|
||||
DemodulatorInstance *d = demods.back();
|
||||
demods.pop_back();
|
||||
demods_busy.unlock();
|
||||
wxGetApp().removeDemodulator(d);
|
||||
deleteThread(d);
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<DemodulatorInstance *> &DemodulatorMgr::getDemodulators() {
|
||||
demods_busy.lock();
|
||||
demods_busy.unlock();
|
||||
return demods;
|
||||
}
|
||||
|
||||
@ -110,6 +127,8 @@ DemodulatorInstance *DemodulatorMgr::getFirstDemodulator() {
|
||||
}
|
||||
|
||||
void DemodulatorMgr::deleteThread(DemodulatorInstance *demod) {
|
||||
demods_busy.lock();
|
||||
|
||||
std::vector<DemodulatorInstance *>::iterator i;
|
||||
|
||||
i = std::find(demods.begin(), demods.end(), demod);
|
||||
@ -131,10 +150,13 @@ void DemodulatorMgr::deleteThread(DemodulatorInstance *demod) {
|
||||
|
||||
demods_deleted.push_back(demod);
|
||||
|
||||
demods_busy.unlock();
|
||||
|
||||
garbageCollect();
|
||||
}
|
||||
|
||||
std::vector<DemodulatorInstance *> *DemodulatorMgr::getDemodulatorsAt(long long freq, int bandwidth) {
|
||||
demods_busy.lock();
|
||||
std::vector<DemodulatorInstance *> *foundDemods = new std::vector<DemodulatorInstance *>();
|
||||
|
||||
for (int i = 0, iMax = demods.size(); i < iMax; i++) {
|
||||
@ -150,12 +172,13 @@ std::vector<DemodulatorInstance *> *DemodulatorMgr::getDemodulatorsAt(long long
|
||||
foundDemods->push_back(testDemod);
|
||||
}
|
||||
}
|
||||
demods_busy.unlock();
|
||||
|
||||
return foundDemods;
|
||||
}
|
||||
|
||||
bool DemodulatorMgr::anyDemodulatorsAt(long long freq, int bandwidth) {
|
||||
|
||||
demods_busy.lock();
|
||||
for (int i = 0, iMax = demods.size(); i < iMax; i++) {
|
||||
DemodulatorInstance *testDemod = demods[i];
|
||||
|
||||
@ -166,10 +189,12 @@ bool DemodulatorMgr::anyDemodulatorsAt(long long freq, int bandwidth) {
|
||||
long long halfBuffer = bandwidth / 2;
|
||||
|
||||
if ((freq <= (freqTest + ((testDemod->getDemodulatorType() != "LSB")?halfBandwidthTest:0) + halfBuffer)) && (freq >= (freqTest - ((testDemod->getDemodulatorType() != "USB")?halfBandwidthTest:0) - halfBuffer))) {
|
||||
demods_busy.unlock();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
demods_busy.unlock();
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -206,7 +231,7 @@ void DemodulatorMgr::setActiveDemodulator(DemodulatorInstance *demod, bool tempo
|
||||
|
||||
activeDemodulator = demod;
|
||||
|
||||
garbageCollect();
|
||||
// garbageCollect();
|
||||
}
|
||||
|
||||
DemodulatorInstance *DemodulatorMgr::getActiveDemodulator() {
|
||||
@ -222,6 +247,7 @@ DemodulatorInstance *DemodulatorMgr::getLastActiveDemodulator() {
|
||||
|
||||
void DemodulatorMgr::garbageCollect() {
|
||||
if (demods_deleted.size()) {
|
||||
demods_busy.lock();
|
||||
std::vector<DemodulatorInstance *>::iterator i;
|
||||
|
||||
for (i = demods_deleted.begin(); i != demods_deleted.end(); i++) {
|
||||
@ -232,9 +258,12 @@ void DemodulatorMgr::garbageCollect() {
|
||||
std::cout << "Garbage collected demodulator instance " << deleted->getLabel() << std::endl;
|
||||
|
||||
delete deleted;
|
||||
|
||||
demods_busy.unlock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
demods_busy.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@ -255,7 +284,7 @@ void DemodulatorMgr::updateLastState() {
|
||||
if (lastActiveDemodulator) {
|
||||
lastBandwidth = lastActiveDemodulator->getBandwidth();
|
||||
lastDemodType = lastActiveDemodulator->getDemodulatorType();
|
||||
lastDemodLock = lastActiveDemodulator->getDemodulatorLock();
|
||||
lastDemodLock = lastActiveDemodulator->getDemodulatorLock()?true:false;
|
||||
lastSquelchEnabled = lastActiveDemodulator->isSquelchEnabled();
|
||||
lastSquelch = lastActiveDemodulator->getSquelchLevel();
|
||||
lastGain = lastActiveDemodulator->getGain();
|
||||
|
@ -72,5 +72,7 @@ private:
|
||||
bool lastMuted;
|
||||
bool lastDeltaLock;
|
||||
|
||||
std::mutex demods_busy;
|
||||
|
||||
std::map<std::string, ModemSettings> lastModemSettings;
|
||||
};
|
||||
|
@ -52,7 +52,7 @@ float DemodulatorThread::linearToDb(float linear) {
|
||||
// http://dspguru.com/dsp/tricks/magnitude-estimator
|
||||
#define SMALL 1e-20
|
||||
if (linear <= SMALL) {
|
||||
linear = SMALL;
|
||||
linear = float(SMALL);
|
||||
}
|
||||
return 20.0 * log10(linear);
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ void ModemAnalog::initOutputBuffers(ModemKitAnalog *akit, ModemIQData *input) {
|
||||
|
||||
double audio_resample_ratio = akit->audioResampleRatio;
|
||||
|
||||
size_t audio_out_size = ceil((double) (bufSize) * audio_resample_ratio) + 512;
|
||||
size_t audio_out_size = (size_t)ceil((double) (bufSize) * audio_resample_ratio) + 512;
|
||||
|
||||
if (demodOutputData.size() != bufSize) {
|
||||
if (demodOutputData.capacity() < bufSize) {
|
||||
@ -65,8 +65,8 @@ void ModemAnalog::buildAudioOutput(ModemKitAnalog *akit, AudioThreadInput *audio
|
||||
unsigned int numAudioWritten;
|
||||
|
||||
if (autoGain) {
|
||||
aOutputCeilMA = aOutputCeilMA + (aOutputCeil - aOutputCeilMA) * 0.025;
|
||||
aOutputCeilMAA = aOutputCeilMAA + (aOutputCeilMA - aOutputCeilMAA) * 0.025;
|
||||
aOutputCeilMA = aOutputCeilMA + (aOutputCeil - aOutputCeilMA) * 0.025f;
|
||||
aOutputCeilMAA = aOutputCeilMAA + (aOutputCeilMA - aOutputCeilMAA) * 0.025f;
|
||||
aOutputCeil = 0;
|
||||
|
||||
for (size_t i = 0; i < bufSize; i++) {
|
||||
@ -75,7 +75,7 @@ void ModemAnalog::buildAudioOutput(ModemKitAnalog *akit, AudioThreadInput *audio
|
||||
}
|
||||
}
|
||||
|
||||
float gain = 0.5 / aOutputCeilMAA;
|
||||
float gain = 0.5f / aOutputCeilMAA;
|
||||
|
||||
for (size_t i = 0; i < bufSize; i++) {
|
||||
demodOutputData[i] *= gain;
|
||||
|
@ -49,7 +49,7 @@ ModemKit *ModemFMStereo::buildKit(long long sampleRate, int audioSampleRate) {
|
||||
// Stereo filters / shifters
|
||||
double firStereoCutoff = 16000.0 / double(audioSampleRate);
|
||||
// filter transition
|
||||
float ft = 1000.0 / double(audioSampleRate);
|
||||
float ft = 1000.0f / double(audioSampleRate);
|
||||
// fractional timing offset
|
||||
float mu = 0.0f;
|
||||
|
||||
@ -69,13 +69,13 @@ ModemKit *ModemFMStereo::buildKit(long long sampleRate, int audioSampleRate) {
|
||||
kit->firStereoRight = firfilt_rrrf_create(h, h_len);
|
||||
|
||||
// stereo pilot filter
|
||||
float bw = sampleRate;
|
||||
float bw = float(sampleRate);
|
||||
if (bw < 100000.0) {
|
||||
bw = 100000.0;
|
||||
}
|
||||
unsigned int order = 5; // filter order
|
||||
float f0 = ((double) 19000 / bw);
|
||||
float fc = ((double) 19500 / bw);
|
||||
float f0 = ((float) 19000 / bw);
|
||||
float fc = ((float) 19500 / bw);
|
||||
float Ap = 1.0f;
|
||||
|
||||
kit->iirStereoPilot = iirfilt_crcf_create_prototype(LIQUID_IIRDES_CHEBY2, LIQUID_IIRDES_BANDPASS, LIQUID_IIRDES_SOS, order, fc, f0, Ap, As);
|
||||
@ -117,7 +117,7 @@ void ModemFMStereo::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInp
|
||||
demodOutputData.resize(bufSize);
|
||||
}
|
||||
|
||||
size_t audio_out_size = ceil((double) (bufSize) * audio_resample_ratio) + 512;
|
||||
size_t audio_out_size = (size_t)ceil((double) (bufSize) * audio_resample_ratio) + 512;
|
||||
|
||||
freqdem_demodulate_block(demodFM, &input->data[0], bufSize, &demodOutputData[0]);
|
||||
|
||||
@ -190,10 +190,10 @@ void ModemFMStereo::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInp
|
||||
for (size_t i = 0; i < numAudioWritten; i++) {
|
||||
float l, r;
|
||||
|
||||
firfilt_rrrf_push(fmkit->firStereoLeft, 0.568 * (resampledOutputData[i] - (resampledStereoData[i])));
|
||||
firfilt_rrrf_push(fmkit->firStereoLeft, 0.568f * (resampledOutputData[i] - (resampledStereoData[i])));
|
||||
firfilt_rrrf_execute(fmkit->firStereoLeft, &l);
|
||||
|
||||
firfilt_rrrf_push(fmkit->firStereoRight, 0.568 * (resampledOutputData[i] + (resampledStereoData[i])));
|
||||
firfilt_rrrf_push(fmkit->firStereoRight, 0.568f * (resampledOutputData[i] + (resampledStereoData[i])));
|
||||
firfilt_rrrf_execute(fmkit->firStereoRight, &r);
|
||||
|
||||
audioOut->data[i * 2] = l;
|
||||
|
@ -9,7 +9,7 @@ ModemUSB::ModemUSB() : ModemAnalog() {
|
||||
ssbFilt = iirfilt_crcf_create_lowpass(6, 0.25);
|
||||
#endif
|
||||
ssbShift = nco_crcf_create(LIQUID_NCO);
|
||||
nco_crcf_set_frequency(ssbShift, (2.0 * M_PI) * 0.25);
|
||||
nco_crcf_set_frequency(ssbShift, (2.0f * M_PI) * 0.25f);
|
||||
c2rFilt = firhilbf_create(5, 90.0);
|
||||
}
|
||||
|
||||
|
@ -65,8 +65,8 @@ void ScopePanel::drawPanelContents() {
|
||||
|
||||
} else if (scopeMode == SCOPE_MODE_XY) {
|
||||
RGBA4f bg1(ThemeMgr::mgr.currentTheme->scopeBackground), bg2(ThemeMgr::mgr.currentTheme->scopeBackground * 2.0);
|
||||
bg1.a = 0.05;
|
||||
bg2.a = 0.05;
|
||||
bg1.a = 0.05f;
|
||||
bg2.a = 0.05f;
|
||||
bgPanel.setFillColor(bg1, bg2);
|
||||
bgPanel.calcTransform(transform);
|
||||
bgPanel.draw();
|
||||
|
@ -19,11 +19,11 @@ SpectrumPanel::SpectrumPanel() {
|
||||
|
||||
dbPanelCeil.setMarginPx(0);
|
||||
dbPanelCeil.setFill(GLPanel::GLPANEL_FILL_GRAD_X);
|
||||
dbPanelCeil.setFillColor(RGBA4f(0.2,0.2,0.2,5.0), RGBA4f(0.2,0.2,0.2,0.0));
|
||||
dbPanelCeil.setFillColor(RGBA4f(0.2f,0.2f,0.2f,5.0f), RGBA4f(0.2f,0.2f,0.2f,0.0f));
|
||||
|
||||
dbPanelFloor.setMarginPx(0);
|
||||
dbPanelFloor.setFill(GLPanel::GLPANEL_FILL_GRAD_X);
|
||||
dbPanelFloor.setFillColor(RGBA4f(0.2,0.2,0.2,5.), RGBA4f(0.2,0.2,0.2,0.0));
|
||||
dbPanelFloor.setFillColor(RGBA4f(0.2f,0.2f,0.2f,5.0f), RGBA4f(0.2f,0.2f,0.2f,0.0f));
|
||||
}
|
||||
|
||||
|
||||
@ -124,7 +124,7 @@ void SpectrumPanel::drawPanelContents() {
|
||||
a *= (rangeTrans-(range-(rangeMax-rangeTrans)))/rangeTrans;
|
||||
}
|
||||
|
||||
glColor4f(0.12, 0.12, 0.12, a);
|
||||
glColor4f(0.12f, 0.12f, 0.12f, a);
|
||||
glBegin(GL_LINES);
|
||||
for (double l = floorValue; l<=ceilValue+rangeStep; l+=rangeStep) {
|
||||
p += rangeStep/range;
|
||||
|
@ -5,7 +5,7 @@
|
||||
ScopeVisualProcessor::ScopeVisualProcessor(): outputBuffers("ScopeVisualProcessorBuffers") {
|
||||
scopeEnabled.store(true);
|
||||
spectrumEnabled.store(true);
|
||||
fft_average_rate = 0.65;
|
||||
fft_average_rate = 0.65f;
|
||||
fft_ceil_ma = fft_ceil_maa = 0;
|
||||
fft_floor_ma = fft_floor_maa = 0;
|
||||
maxScopeSamples = 1024;
|
||||
|
@ -35,7 +35,7 @@ SpectrumVisualProcessor::SpectrumVisualProcessor() : outputBuffers("SpectrumVisu
|
||||
fft_ceil_ma = fft_ceil_maa = 100.0;
|
||||
fft_floor_ma = fft_floor_maa = 0.0;
|
||||
desiredInputSize.store(0);
|
||||
fft_average_rate = 0.65;
|
||||
fft_average_rate = 0.65f;
|
||||
scaleFactor.store(1.0);
|
||||
fftSizeChanged.store(false);
|
||||
newFFTSize.store(0);
|
||||
|
@ -20,7 +20,7 @@ SDRPostThread::SDRPostThread() : IOThread(), buffers("SDRPostThreadBuffers"), vi
|
||||
visBandwidth.store(0);
|
||||
|
||||
doRefresh.store(false);
|
||||
dcFilter = iirfilt_crcf_create_dc_blocker(0.0005);
|
||||
dcFilter = iirfilt_crcf_create_dc_blocker(0.0005f);
|
||||
}
|
||||
|
||||
SDRPostThread::~SDRPostThread() {
|
||||
@ -33,6 +33,18 @@ void SDRPostThread::bindDemodulator(DemodulatorInstance *demod) {
|
||||
busy_demod.unlock();
|
||||
}
|
||||
|
||||
void SDRPostThread::bindDemodulators(std::vector<DemodulatorInstance *> *demods) {
|
||||
if (!demods) {
|
||||
return;
|
||||
}
|
||||
busy_demod.lock();
|
||||
for (std::vector<DemodulatorInstance *>::iterator di = demods->begin(); di != demods->end(); di++) {
|
||||
demodulators.push_back(*di);
|
||||
doRefresh.store(true);
|
||||
}
|
||||
busy_demod.unlock();
|
||||
}
|
||||
|
||||
void SDRPostThread::removeDemodulator(DemodulatorInstance *demod) {
|
||||
if (!demod) {
|
||||
return;
|
||||
|
@ -13,6 +13,7 @@ public:
|
||||
~SDRPostThread();
|
||||
|
||||
void bindDemodulator(DemodulatorInstance *demod);
|
||||
void bindDemodulators(std::vector<DemodulatorInstance *> *demods);
|
||||
void removeDemodulator(DemodulatorInstance *demod);
|
||||
|
||||
void run();
|
||||
|
@ -13,9 +13,9 @@ GLPanel::GLPanel() : fillType(GLPANEL_FILL_SOLID), contentsVisible(true), visibl
|
||||
rot[2] = 0.0f;
|
||||
size[0] = 1.0f;
|
||||
size[1] = 1.0f;
|
||||
fill[0] = RGBA4f(0.5,0.5,0.5);
|
||||
fill[1] = RGBA4f(0.1,0.1,0.1);
|
||||
borderColor = RGBA4f(0.8, 0.8, 0.8);
|
||||
fill[0] = RGBA4f(0.5f,0.5f,0.5f);
|
||||
fill[1] = RGBA4f(0.1f,0.1f,0.1f);
|
||||
borderColor = RGBA4f(0.8f, 0.8f, 0.8f);
|
||||
setCoordinateSystem(GLPANEL_Y_UP);
|
||||
setMarginPx(0);
|
||||
setBorderPx(0);
|
||||
|
@ -13,22 +13,22 @@ PrimaryGLContext(canvas, sharedContext) {
|
||||
|
||||
testChildPanel.setPosition(0.0, 0.0);
|
||||
testChildPanel.setMarginPx(5);
|
||||
testChildPanel.setSize(1.0, 0.33);
|
||||
testChildPanel.setSize(1.0f, 0.33f);
|
||||
testChildPanel.setCoordinateSystem(GLPanel::GLPANEL_Y_DOWN_ZERO_ONE);
|
||||
testChildPanel.setFill(GLPanel::GLPANEL_FILL_GRAD_BAR_X);
|
||||
testChildPanel.setFillColor(RGBA4f(0.0,0.0,1.0), RGBA4f(0.0,1.0,0.0));
|
||||
testChildPanel.setBorderPx(1);
|
||||
|
||||
testChildPanel2.setPosition(0.0, -0.66);
|
||||
testChildPanel2.setSize(1.0, 0.33);
|
||||
testChildPanel2.setPosition(0.0f, -0.66f);
|
||||
testChildPanel2.setSize(1.0f, 0.33f);
|
||||
testChildPanel2.setMarginPx(5);
|
||||
testChildPanel2.setFill(GLPanel::GLPANEL_FILL_GRAD_X);
|
||||
testChildPanel2.setFillColor(RGBA4f(0.0,0.0,1.0), RGBA4f(0.0,1.0,0.0));
|
||||
testChildPanel2.setBorderColor(RGBA4f(1.0,0.0,0.0));
|
||||
testChildPanel2.setBorderPx(1);
|
||||
|
||||
testChildPanel3.setPosition(0.0, 0.66);
|
||||
testChildPanel3.setSize(1.0, 0.33);
|
||||
testChildPanel3.setPosition(0.0f, 0.66f);
|
||||
testChildPanel3.setSize(1.0f, 0.33f);
|
||||
testChildPanel3.setMarginPx(5);
|
||||
testChildPanel3.setFill(GLPanel::GLPANEL_FILL_GRAD_X);
|
||||
testChildPanel3.setFillColor(RGBA4f(0.0,0.0,1.0), RGBA4f(0.0,1.0,0.0));
|
||||
|
@ -164,7 +164,7 @@ DataElementSetNumericVectorDef(DATA_DOUBLE_VECTOR, double)
|
||||
DataElementSetNumericVectorDef(DATA_LONGDOUBLE_VECTOR, long double)
|
||||
|
||||
|
||||
#define DataElementGetNumericDef(enumtype, datatype, ...) void DataElement::get(datatype& val_out) throw (DataTypeMismatchException) { \
|
||||
#define DataElementGetNumericDef(enumtype, datatype, ...) void DataElement::get(datatype& val_out) { \
|
||||
if (!data_type) \
|
||||
return; \
|
||||
int _compat[] = {__VA_ARGS__}; \
|
||||
@ -207,7 +207,7 @@ DataElementGetNumericDef(DATA_LONG, long, DATA_CHAR, DATA_UCHAR, DATA_UINT, DATA
|
||||
|
||||
|
||||
|
||||
#define DataElementGetFloatingPointDef(enumtype, datatype, ...) void DataElement::get(datatype& val_out) throw (DataTypeMismatchException) { \
|
||||
#define DataElementGetFloatingPointDef(enumtype, datatype, ...) void DataElement::get(datatype& val_out) { \
|
||||
if (!data_type) \
|
||||
return; \
|
||||
int _compat[] = {__VA_ARGS__}; \
|
||||
@ -250,14 +250,14 @@ DataElementGetFloatingPointDef(DATA_FLOAT, float, DATA_DOUBLE, DATA_CHAR, DATA_U
|
||||
DataElementGetFloatingPointDef(DATA_DOUBLE, double, DATA_FLOAT, DATA_CHAR, DATA_UCHAR, DATA_UINT, DATA_ULONG, DATA_LONGLONG, DATA_LONGDOUBLE, DATA_INT,
|
||||
DATA_LONG)
|
||||
|
||||
void DataElement::get(char **data_in) throw (DataTypeMismatchException) {
|
||||
void DataElement::get(char **data_in) {
|
||||
if (data_type != DATA_VOID)
|
||||
throw(new DataTypeMismatchException("Type mismatch, not a CHAR*"));
|
||||
*data_in = new char[data_size];
|
||||
memcpy(*data_in, data_val, data_size);
|
||||
}
|
||||
|
||||
void DataElement::get(string &str_in) throw (DataTypeMismatchException) {
|
||||
void DataElement::get(string &str_in) {
|
||||
if (!data_type)
|
||||
return;
|
||||
|
||||
@ -274,7 +274,7 @@ void DataElement::get(string &str_in) throw (DataTypeMismatchException) {
|
||||
}
|
||||
}
|
||||
|
||||
void DataElement::get(vector<string> &strvect_in) throw (DataTypeMismatchException) {
|
||||
void DataElement::get(vector<string> &strvect_in) {
|
||||
size_t ptr;
|
||||
if (!data_type)
|
||||
return;
|
||||
@ -291,7 +291,7 @@ void DataElement::get(vector<string> &strvect_in) throw (DataTypeMismatchExcepti
|
||||
|
||||
}
|
||||
|
||||
void DataElement::get(std::set<string> &strset_in) throw (DataTypeMismatchException) {
|
||||
void DataElement::get(std::set<string> &strset_in) {
|
||||
if (!data_type)
|
||||
return;
|
||||
|
||||
@ -308,7 +308,7 @@ void DataElement::get(std::set<string> &strset_in) throw (DataTypeMismatchExcept
|
||||
}
|
||||
}
|
||||
|
||||
#define DataElementGetNumericVectorDef(enumtype, datatype, ...) void DataElement::get(vector<datatype>& val_out) throw (DataTypeMismatchException) { \
|
||||
#define DataElementGetNumericVectorDef(enumtype, datatype, ...) void DataElement::get(vector<datatype>& val_out) { \
|
||||
if (!data_type || !unit_size) return; \
|
||||
if (data_type != enumtype) { \
|
||||
int _compat[] = {__VA_ARGS__}; \
|
||||
@ -457,7 +457,7 @@ DataNode *DataNode::newChild(const char *name_in) {
|
||||
return children.back();
|
||||
}
|
||||
|
||||
DataNode *DataNode::child(const char *name_in, int index) throw (DataInvalidChildException) {
|
||||
DataNode *DataNode::child(const char *name_in, int index) {
|
||||
DataNode *child_ret;
|
||||
|
||||
child_ret = childmap[name_in][index];
|
||||
@ -471,7 +471,7 @@ DataNode *DataNode::child(const char *name_in, int index) throw (DataInvalidChil
|
||||
return child_ret;
|
||||
}
|
||||
|
||||
DataNode *DataNode::child(int index) throw (DataInvalidChildException) {
|
||||
DataNode *DataNode::child(int index) {
|
||||
|
||||
DataNode *child_ret;
|
||||
|
||||
@ -502,11 +502,11 @@ bool DataNode::hasAnother(const char *name_in) {
|
||||
return childmap[name_in].size() != childmap_ptr[name_in];
|
||||
}
|
||||
|
||||
DataNode *DataNode::getNext() throw (DataInvalidChildException) {
|
||||
DataNode *DataNode::getNext() {
|
||||
return child(ptr++);
|
||||
}
|
||||
|
||||
DataNode *DataNode::getNext(const char *name_in) throw (DataInvalidChildException) {
|
||||
DataNode *DataNode::getNext(const char *name_in) {
|
||||
return child(name_in, childmap_ptr[name_in]++);
|
||||
}
|
||||
|
||||
@ -1554,7 +1554,7 @@ bool DataTree::SaveToFileXML(const std::string& filename) {
|
||||
*/
|
||||
|
||||
bool DataTree::SaveToFile(const std::string& filename, bool compress, int /* compress_level */) {
|
||||
long dataSize, compressedSize, headerSize;
|
||||
long dataSize, compressedSize = 0, headerSize;
|
||||
char *serialized = nullptr, *hdr_serialized = nullptr, *compressed = nullptr;
|
||||
DataTree dtHeader;
|
||||
|
||||
|
@ -167,45 +167,45 @@ public:
|
||||
|
||||
|
||||
/* get overloads */
|
||||
void get(char &char_in) throw (DataTypeMismatchException);
|
||||
void get(unsigned char &uchar_in) throw (DataTypeMismatchException);
|
||||
void get(int &int_in) throw (DataTypeMismatchException);
|
||||
void get(unsigned int &uint_in) throw (DataTypeMismatchException);
|
||||
void get(long &long_in) throw (DataTypeMismatchException);
|
||||
void get(unsigned long &ulong_in) throw (DataTypeMismatchException);
|
||||
void get(long long &long_in) throw (DataTypeMismatchException);
|
||||
void get(float &float_in) throw (DataTypeMismatchException);
|
||||
void get(double &double_in) throw (DataTypeMismatchException);
|
||||
void get(long double &ldouble_in) throw (DataTypeMismatchException);
|
||||
void get(char &char_in);
|
||||
void get(unsigned char &uchar_in);
|
||||
void get(int &int_in);
|
||||
void get(unsigned int &uint_in);
|
||||
void get(long &long_in);
|
||||
void get(unsigned long &ulong_in);
|
||||
void get(long long &long_in);
|
||||
void get(float &float_in);
|
||||
void get(double &double_in);
|
||||
void get(long double &ldouble_in);
|
||||
|
||||
void get(char **data_in) throw (DataTypeMismatchException); /* getting a void or string */
|
||||
void get(string &str_in) throw (DataTypeMismatchException);
|
||||
void get(std::set<string> &strset_in) throw (DataTypeMismatchException);
|
||||
void get(char **data_in); /* getting a void or string */
|
||||
void get(string &str_in);
|
||||
void get(std::set<string> &strset_in);
|
||||
|
||||
void get(vector<string> &strvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<char> &charvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<unsigned char> &ucharvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<int> &intvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<unsigned int> &uintvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<long> &longvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<unsigned long> &ulongvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<long long> &llongvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<float> &floatvect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<double> &doublevect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<long double> &ldoublevect_in) throw (DataTypeMismatchException);
|
||||
void get(vector<string> &strvect_in);
|
||||
void get(vector<char> &charvect_in);
|
||||
void get(vector<unsigned char> &ucharvect_in);
|
||||
void get(vector<int> &intvect_in);
|
||||
void get(vector<unsigned int> &uintvect_in);
|
||||
void get(vector<long> &longvect_in);
|
||||
void get(vector<unsigned long> &ulongvect_in);
|
||||
void get(vector<long long> &llongvect_in);
|
||||
void get(vector<float> &floatvect_in);
|
||||
void get(vector<double> &doublevect_in);
|
||||
void get(vector<long double> &ldoublevect_in);
|
||||
|
||||
|
||||
/* special get functions, saves creating unnecessary vars */
|
||||
int getChar() throw (DataTypeMismatchException) { char i_get; get(i_get); return i_get; };
|
||||
unsigned int getUChar() throw (DataTypeMismatchException) { unsigned char i_get; get(i_get); return i_get; };
|
||||
int getInt() throw (DataTypeMismatchException) { int i_get; get(i_get); return i_get; };
|
||||
unsigned int getUInt() throw (DataTypeMismatchException) { unsigned int i_get; get(i_get); return i_get; };
|
||||
long getLong() throw (DataTypeMismatchException) { long l_get; get(l_get); return l_get; };
|
||||
unsigned long getULong() throw (DataTypeMismatchException) { unsigned long l_get; get(l_get); return l_get; };
|
||||
long getLongLong() throw (DataTypeMismatchException) { long long l_get; get(l_get); return l_get; };
|
||||
float getFloat() throw (DataTypeMismatchException) { float f_get; get(f_get); return f_get; };
|
||||
double getDouble() throw (DataTypeMismatchException) { double d_get; get(d_get); return d_get; };
|
||||
long double getLongDouble() throw (DataTypeMismatchException) { long double d_get; get(d_get); return d_get; };
|
||||
int getChar() { char i_get; get(i_get); return i_get; };
|
||||
unsigned int getUChar() { unsigned char i_get; get(i_get); return i_get; };
|
||||
int getInt() { int i_get; get(i_get); return i_get; };
|
||||
unsigned int getUInt() { unsigned int i_get; get(i_get); return i_get; };
|
||||
long getLong() { long l_get; get(l_get); return l_get; };
|
||||
unsigned long getULong() { unsigned long l_get; get(l_get); return l_get; };
|
||||
long getLongLong() { long long l_get; get(l_get); return l_get; };
|
||||
float getFloat() { float f_get; get(f_get); return f_get; };
|
||||
double getDouble() { double d_get; get(d_get); return d_get; };
|
||||
long double getLongDouble() { long double d_get; get(d_get); return d_get; };
|
||||
|
||||
std::string toString();
|
||||
|
||||
@ -248,14 +248,14 @@ public:
|
||||
DataElement *element(); /* DataElement at this node */
|
||||
|
||||
DataNode *newChild(const char *name_in);
|
||||
DataNode *child(const char *name_in, int index = 0) throw (DataInvalidChildException);
|
||||
DataNode *child(int index) throw (DataInvalidChildException);
|
||||
DataNode *child(const char *name_in, int index = 0);
|
||||
DataNode *child(int index);
|
||||
|
||||
|
||||
bool hasAnother(const char *name_in); /* useful for while() loops in conjunction with getNext() */
|
||||
bool hasAnother();
|
||||
DataNode *getNext(const char *name_in) throw (DataInvalidChildException); /* get next of specified name */
|
||||
DataNode *getNext() throw (DataInvalidChildException); /* get next child */
|
||||
DataNode *getNext(const char *name_in); /* get next of specified name */
|
||||
DataNode *getNext(); /* get next child */
|
||||
void rewind(const char *name_in); /* rewind specific */
|
||||
void rewind(); /* rewind generic */
|
||||
|
||||
|
@ -41,7 +41,7 @@ void Timer::reset(void)
|
||||
|
||||
void Timer::lockFramerate(float f_rate)
|
||||
{
|
||||
lock_rate = 1.0/f_rate;
|
||||
lock_rate = 1.0f/f_rate;
|
||||
lock_state = true;
|
||||
}
|
||||
|
||||
|
@ -39,226 +39,226 @@ DefaultColorTheme::DefaultColorTheme() {
|
||||
waterfallGradient.addColor(GradientColor(0, 0, 1.0));
|
||||
waterfallGradient.addColor(GradientColor(0, 1.0, 0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 1.0, 0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 0.2, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 0.2f, 0.0));
|
||||
waterfallGradient.generate(256);
|
||||
waterfallHighlight = RGBA4f(1, 1, 1);
|
||||
waterfallNew = RGBA4f(0, 1, 0);
|
||||
waterfallHover = RGBA4f(1, 1, 0);
|
||||
waterfallDestroy = RGBA4f(1, 0, 0);
|
||||
fftLine = RGBA4f(0.9, 0.9, 0.9);
|
||||
fftLine = RGBA4f(0.9f, 0.9f, 0.9f);
|
||||
fftHighlight = RGBA4f(1, 1, 1);
|
||||
scopeLine = RGBA4f(0.9, 0.9, 0.9);
|
||||
tuningBarLight = RGBA4f(0.2, 0.2, 0.9);
|
||||
tuningBarDark = RGBA4f(0.0, 0.0, 0.35);
|
||||
tuningBarUp = RGBA4f(1.0, 139.0/255.0, 96.0/255.0);
|
||||
tuningBarDown = RGBA4f(148.0/255.0, 148.0/255.0, 1.0);
|
||||
meterLevel = RGBA4f(0.1, 0.75, 0.1);
|
||||
meterValue = RGBA4f(0.75, 0.1, 0.1);
|
||||
scopeLine = RGBA4f(0.9f, 0.9f, 0.9f);
|
||||
tuningBarLight = RGBA4f(0.2f, 0.2f, 0.9f);
|
||||
tuningBarDark = RGBA4f(0.0f, 0.0f, 0.35f);
|
||||
tuningBarUp = RGBA4f(1.0f, 139.0f/255.0f, 96.0f/255.0f);
|
||||
tuningBarDown = RGBA4f(148.0f/255.0f, 148.0f/255.0f, 1.0f);
|
||||
meterLevel = RGBA4f(0.1f, 0.75f, 0.1f);
|
||||
meterValue = RGBA4f(0.75f, 0.1f, 0.1f);
|
||||
text = RGBA4f(1, 1, 1);
|
||||
freqLine = RGBA4f(1, 1, 1);
|
||||
button = RGBA4f(0.65, 0.65, 0.65);
|
||||
button = RGBA4f(0.65f, 0.65f, 0.65f);
|
||||
buttonHighlight = RGBA4f(1, 1, 0);
|
||||
|
||||
scopeBackground = RGBA4f(0.1, 0.1, 0.1);
|
||||
fftBackground = RGBA4f(0.1, 0.1, 0.1);
|
||||
generalBackground = RGBA4f(0.1, 0.1, 0.1);
|
||||
scopeBackground = RGBA4f(0.1f, 0.1f, 0.1f);
|
||||
fftBackground = RGBA4f(0.1f, 0.1f, 0.1f);
|
||||
generalBackground = RGBA4f(0.1f, 0.1f, 0.1f);
|
||||
}
|
||||
|
||||
|
||||
RadarColorTheme::RadarColorTheme() {
|
||||
name = "Rad";
|
||||
waterfallGradient.addColor(GradientColor(5.0 / 255.0, 45.0 / 255.0, 10.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(30.0 / 255.0, 150.0 / 255.0, 40.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(40.0 / 255.0, 240.0 / 255.0, 60.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(250.0 / 255.0, 250.0 / 255.0, 250.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(5.0f / 255.0f, 45.0f / 255.0f, 10.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(30.0f / 255.0f, 150.0f / 255.0f, 40.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(40.0f / 255.0f, 240.0f / 255.0f, 60.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(250.0f / 255.0f, 250.0f / 255.0f, 250.0f / 255.0f));
|
||||
waterfallGradient.generate(256);
|
||||
waterfallHighlight = RGBA4f(1, 1, 1);
|
||||
waterfallNew = RGBA4f(0, 1, 0);
|
||||
waterfallHover = RGBA4f(1, 1, 0);
|
||||
waterfallDestroy = RGBA4f(1, 0, 0);
|
||||
fftLine = RGBA4f(0.8, 1.0, 0.8);
|
||||
fftLine = RGBA4f(0.8f, 1.0f, 0.8f);
|
||||
fftHighlight = RGBA4f(1, 1, 1);
|
||||
scopeLine = RGBA4f(0.8, 1.0, 0.8);
|
||||
tuningBarLight = RGBA4f(0.0, 0.45, 0.0);
|
||||
tuningBarDark = RGBA4f(0.0, 0.1, 0.0);
|
||||
tuningBarUp = RGBA4f(1.0, 139.0/255.0, 96.0/255.0);
|
||||
tuningBarDown = RGBA4f(148.0/255.0, 0.0, 0.0);
|
||||
meterLevel = RGBA4f(0, 0.5, 0);
|
||||
meterValue = RGBA4f(0, 0.5, 0);
|
||||
text = RGBA4f(0.8, 1.0, 0.8);
|
||||
scopeLine = RGBA4f(0.8f, 1.0f, 0.8f);
|
||||
tuningBarLight = RGBA4f(0.0, 0.45f, 0.0);
|
||||
tuningBarDark = RGBA4f(0.0, 0.1f, 0.0);
|
||||
tuningBarUp = RGBA4f(1.0f, 139.0f/255.0f, 96.0f/255.0f);
|
||||
tuningBarDown = RGBA4f(148.0f/255.0f, 0.0, 0.0);
|
||||
meterLevel = RGBA4f(0, 0.5f, 0);
|
||||
meterValue = RGBA4f(0, 0.5f, 0);
|
||||
text = RGBA4f(0.8f, 1.0, 0.8f);
|
||||
freqLine = RGBA4f(1, 1, 1);
|
||||
button = RGBA4f(0.65, 0.75, 0.65);
|
||||
buttonHighlight = RGBA4f(0.65, 1.0, 0.65);
|
||||
button = RGBA4f(0.65f, 0.75f, 0.65f);
|
||||
buttonHighlight = RGBA4f(0.65f, 1.0f, 0.65f);
|
||||
|
||||
scopeBackground = RGBA4f(0.05, 0.1, 0.05);
|
||||
fftBackground = RGBA4f(0.05, 0.1, 0.05);
|
||||
generalBackground = RGBA4f(0.05, 0.1, 0.05);
|
||||
scopeBackground = RGBA4f(0.05f, 0.1f, 0.05f);
|
||||
fftBackground = RGBA4f(0.05f, 0.1f, 0.05f);
|
||||
generalBackground = RGBA4f(0.05f, 0.1f, 0.05f);
|
||||
}
|
||||
|
||||
BlackAndWhiteColorTheme::BlackAndWhiteColorTheme() {
|
||||
name = "Black & White";
|
||||
waterfallGradient.addColor(GradientColor(0, 0, 0));
|
||||
waterfallGradient.addColor(GradientColor(0.75, 0.75, 0.75));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0));
|
||||
waterfallGradient.addColor(GradientColor(0.75f, 0.75f, 0.75f));
|
||||
waterfallGradient.addColor(GradientColor(1.0f, 1.0f, 1.0f));
|
||||
waterfallGradient.generate(256);
|
||||
waterfallHighlight = RGBA4f(1, 1, 0.9);
|
||||
waterfallHighlight = RGBA4f(1, 1, 0.9f);
|
||||
waterfallNew = RGBA4f(0, 1, 0);
|
||||
waterfallHover = RGBA4f(1, 1, 0);
|
||||
waterfallDestroy = RGBA4f(1, 0, 0);
|
||||
fftLine = RGBA4f(0.9, 0.9, 0.9);
|
||||
fftHighlight = RGBA4f(1, 1, 0.9);
|
||||
scopeLine = RGBA4f(0.9, 0.9, 0.9);
|
||||
tuningBarLight = RGBA4f(0.4, 0.4, 0.4);
|
||||
tuningBarDark = RGBA4f(0.1, 0.1, 0.1);
|
||||
tuningBarUp = RGBA4f(0.8, 0.8, 0.8);
|
||||
tuningBarDown = RGBA4f(0.4, 0.4, 0.4);
|
||||
meterLevel = RGBA4f(0.5, 0.5, 0.5);
|
||||
meterValue = RGBA4f(0.5, 0.5, 0.5);
|
||||
fftLine = RGBA4f(0.9f, 0.9f, 0.9f);
|
||||
fftHighlight = RGBA4f(1, 1, 0.9f);
|
||||
scopeLine = RGBA4f(0.9f, 0.9f, 0.9f);
|
||||
tuningBarLight = RGBA4f(0.4f, 0.4f, 0.4f);
|
||||
tuningBarDark = RGBA4f(0.1f, 0.1f, 0.1f);
|
||||
tuningBarUp = RGBA4f(0.8f, 0.8f, 0.8f);
|
||||
tuningBarDown = RGBA4f(0.4f, 0.4f, 0.4f);
|
||||
meterLevel = RGBA4f(0.5f, 0.5f, 0.5f);
|
||||
meterValue = RGBA4f(0.5f, 0.5f, 0.5f);
|
||||
text = RGBA4f(1, 1, 1);
|
||||
freqLine = RGBA4f(1, 1, 1);
|
||||
button = RGBA4f(0.65, 0.65, 0.65);
|
||||
button = RGBA4f(0.65f, 0.65f, 0.65f);
|
||||
buttonHighlight = RGBA4f(1, 1, 1);
|
||||
|
||||
scopeBackground = RGBA4f(0.1, 0.1, 0.1);
|
||||
fftBackground = RGBA4f(0.1, 0.1, 0.1);
|
||||
generalBackground = RGBA4f(0.1, 0.1, 0.1);
|
||||
scopeBackground = RGBA4f(0.1f, 0.1f, 0.1f);
|
||||
fftBackground = RGBA4f(0.1f, 0.1f, 0.1f);
|
||||
generalBackground = RGBA4f(0.1f, 0.1f, 0.1f);
|
||||
|
||||
}
|
||||
|
||||
SharpColorTheme::SharpColorTheme() {
|
||||
name = "Sharp";
|
||||
waterfallGradient.addColor(GradientColor(0, 0, 0));
|
||||
waterfallGradient.addColor(GradientColor(0.0, 0, 0.5));
|
||||
waterfallGradient.addColor(GradientColor(0.0, 0.0, 1.0));
|
||||
waterfallGradient.addColor(GradientColor(65.0 / 255.0, 161.0 / 255.0, 1.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 1.0, 0.5));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 1.0, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 0.5, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 0.25, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(0.5, 0.1, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(0.0, 0, 0.5f));
|
||||
waterfallGradient.addColor(GradientColor(0.0, 0.0, 1.0f));
|
||||
waterfallGradient.addColor(GradientColor(65.0f / 255.0f, 161.0f / 255.0f, 1.0f));
|
||||
waterfallGradient.addColor(GradientColor(1.0f, 1.0f, 1.0f));
|
||||
waterfallGradient.addColor(GradientColor(1.0f, 1.0f, 1.0f));
|
||||
waterfallGradient.addColor(GradientColor(1.0f, 1.0f, 0.5f));
|
||||
waterfallGradient.addColor(GradientColor(1.0f, 1.0f, 0.0f));
|
||||
waterfallGradient.addColor(GradientColor(1.0f, 0.5f, 0.0f));
|
||||
waterfallGradient.addColor(GradientColor(1.0f, 0.25f, 0.0f));
|
||||
waterfallGradient.addColor(GradientColor(0.5f, 0.1f, 0.0f));
|
||||
waterfallGradient.generate(256);
|
||||
waterfallHighlight = RGBA4f(0.9, 0.9, 1.0);
|
||||
waterfallHighlight = RGBA4f(0.9f, 0.9f, 1.0f);
|
||||
waterfallNew = RGBA4f(0, 1, 0);
|
||||
waterfallHover = RGBA4f(1, 1, 0);
|
||||
waterfallDestroy = RGBA4f(1, 0, 0);
|
||||
fftLine = RGBA4f(0.9, 0.9, 1.0);
|
||||
fftHighlight = RGBA4f(0.9, 0.9, 1.0);
|
||||
scopeLine = RGBA4f(0.85, 0.85, 1.0);
|
||||
tuningBarLight = RGBA4f(28.0 / 255.0, 106.0 / 255.0, 179.0 / 255.0);
|
||||
tuningBarDark = RGBA4f(14.0 / 255.0, 53.0 / 255.0, 89.5 / 255.0);
|
||||
tuningBarUp = RGBA4f(0.7, 0.7, 0.7);
|
||||
tuningBarDown = RGBA4f(1.0, 0.0, 0.0);
|
||||
meterLevel = RGBA4f(28.0 / 255.0, 106.0 / 255.0, 179.0 / 255.0);
|
||||
meterValue = RGBA4f(190.0 / 255.0, 190.0 / 255.0, 60.0 / 255.0);
|
||||
text = RGBA4f(0.9, 0.9, 1);
|
||||
freqLine = RGBA4f(0.85, 0.85, 1.0);
|
||||
button = RGBA4f(217.0 / 255.0, 218.0 / 255.0, 228.0 / 255.0);
|
||||
buttonHighlight = RGBA4f(208.0 / 255.0, 249.0 / 255.0, 255.0 / 255.0);
|
||||
fftLine = RGBA4f(0.9f, 0.9f, 1.0);
|
||||
fftHighlight = RGBA4f(0.9f, 0.9f, 1.0);
|
||||
scopeLine = RGBA4f(0.85f, 0.85f, 1.0);
|
||||
tuningBarLight = RGBA4f(28.0f / 255.0f, 106.0f / 255.0f, 179.0f / 255.0f);
|
||||
tuningBarDark = RGBA4f(14.0f / 255.0f, 53.0f / 255.0f, 89.5f / 255.0f);
|
||||
tuningBarUp = RGBA4f(0.7f, 0.7f, 0.7f);
|
||||
tuningBarDown = RGBA4f(1.0f, 0.0, 0.0);
|
||||
meterLevel = RGBA4f(28.0f / 255.0f, 106.0f / 255.0f, 179.0f / 255.0f);
|
||||
meterValue = RGBA4f(190.0f / 255.0f, 190.0f / 255.0f, 60.0f / 255.0f);
|
||||
text = RGBA4f(0.9f, 0.9f, 1);
|
||||
freqLine = RGBA4f(0.85f, 0.85f, 1.0f);
|
||||
button = RGBA4f(217.0f / 255.0f, 218.0f / 255.0f, 228.0f / 255.0f);
|
||||
buttonHighlight = RGBA4f(208.0f / 255.0f, 249.0f / 255.0f, 255.0f / 255.0f);
|
||||
|
||||
scopeBackground = RGBA4f(0.05, 0.05, 0.15);
|
||||
fftBackground = RGBA4f(0.05, 0.05, 0.15);
|
||||
generalBackground = RGBA4f(0.05, 0.05, 0.15);
|
||||
scopeBackground = RGBA4f(0.05f, 0.05f, 0.15f);
|
||||
fftBackground = RGBA4f(0.05f, 0.05f, 0.15f);
|
||||
generalBackground = RGBA4f(0.05f, 0.05f, 0.15f);
|
||||
}
|
||||
|
||||
RadColorTheme::RadColorTheme() {
|
||||
name = "Rad";
|
||||
waterfallGradient.addColor(GradientColor(0, 0, 0.5));
|
||||
waterfallGradient.addColor(GradientColor(25.0 / 255.0, 154.0 / 255.0, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(201.0 / 255.0, 115.0 / 255.0, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 40.0 / 255.0, 40.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(0, 0, 0.5f));
|
||||
waterfallGradient.addColor(GradientColor(25.0f / 255.0f, 154.0f / 255.0f, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(201.0f / 255.0f, 115.0f / 255.0f, 0.0));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 40.0f / 255.0f, 40.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(1.0, 1.0, 1.0));
|
||||
waterfallGradient.generate(256);
|
||||
waterfallHighlight = RGBA4f(1, 1, 1);
|
||||
waterfallNew = RGBA4f(0, 1, 0);
|
||||
waterfallHover = RGBA4f(1, 1, 0);
|
||||
waterfallDestroy = RGBA4f(1, 0, 0);
|
||||
fftLine = RGBA4f(1.0, 0.9, 0.9);
|
||||
fftLine = RGBA4f(1.0, 0.9f, 0.9f);
|
||||
fftHighlight = RGBA4f(1, 1, 1);
|
||||
scopeLine = RGBA4f(1.0, 0.9, 0.9);
|
||||
tuningBarLight = RGBA4f(0.0, 0.45, 0.0);
|
||||
tuningBarDark = RGBA4f(0.0, 0.1, 0.0);
|
||||
scopeLine = RGBA4f(1.0, 0.9f, 0.9f);
|
||||
tuningBarLight = RGBA4f(0.0, 0.45f, 0.0);
|
||||
tuningBarDark = RGBA4f(0.0, 0.1f, 0.0);
|
||||
tuningBarUp = RGBA4f(1.0, 0.0, 0.0);
|
||||
tuningBarDown = RGBA4f(0.0, 0.5, 1.0);
|
||||
meterLevel = RGBA4f(0, 0.5, 0);
|
||||
meterValue = RGBA4f(0.5, 0, 0);
|
||||
tuningBarDown = RGBA4f(0.0, 0.5f, 1.0);
|
||||
meterLevel = RGBA4f(0, 0.5f, 0);
|
||||
meterValue = RGBA4f(0.5f, 0, 0);
|
||||
text = RGBA4f(1, 1, 1);
|
||||
freqLine = RGBA4f(1, 1, 1);
|
||||
button = RGBA4f(0.65, 0.65, 0.65);
|
||||
buttonHighlight = RGBA4f(0.76, 0.65, 0);
|
||||
button = RGBA4f(0.65f, 0.65f, 0.65f);
|
||||
buttonHighlight = RGBA4f(0.76f, 0.65f, 0);
|
||||
|
||||
scopeBackground = RGBA4f(13.0 / 255.0, 47.0 / 255.0, 9.0 / 255.0);
|
||||
fftBackground = RGBA4f(0, 0, 50.0 / 255.0);
|
||||
generalBackground = RGBA4f(13.0 / 255.0, 47.0 / 255.0, 9.0 / 255.0);
|
||||
scopeBackground = RGBA4f(13.0f / 255.0f, 47.0f / 255.0f, 9.0f / 255.0f);
|
||||
fftBackground = RGBA4f(0, 0, 50.0f / 255.0f);
|
||||
generalBackground = RGBA4f(13.0f / 255.0f, 47.0f / 255.0f, 9.0f / 255.0f);
|
||||
}
|
||||
|
||||
TouchColorTheme::TouchColorTheme() {
|
||||
name = "Touch";
|
||||
waterfallGradient.addColor(GradientColor(0, 0, 0));
|
||||
waterfallGradient.addColor(GradientColor(55.0 / 255.0, 40.0 / 255.0, 55.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(0.0 / 255.0, 255.0 / 255.0, 255.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(10.0 / 255.0, 255.0 / 255.0, 85.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 255.0 / 255.0, 75.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 0.0 / 255.0, 0.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 255.0 / 255.0, 255.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(55.0f / 255.0f, 40.0f / 255.0f, 55.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(61.0f / 255.0f, 57.0f / 255.0f, 88.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(0.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(10.0f / 255.0f, 255.0f / 255.0f, 85.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(255.0f / 255.0f, 255.0f / 255.0f, 75.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(255.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(255.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f));
|
||||
waterfallGradient.generate(256);
|
||||
waterfallHighlight = RGBA4f(1, 1, 1);
|
||||
waterfallNew = RGBA4f(0, 1, 0);
|
||||
waterfallHover = RGBA4f(1, 1, 0);
|
||||
waterfallDestroy = RGBA4f(1, 0, 0);
|
||||
fftLine = RGBA4f(234.0 / 255.0, 232.0 / 255.0, 247.0 / 255.0);
|
||||
fftHighlight = RGBA4f(1.0, 1.0, 1.0);
|
||||
scopeLine = RGBA4f(234.0 / 255.0, 232.0 / 255.0, 247.0 / 255.0);
|
||||
tuningBarLight = RGBA4f(0.2, 0.2, 0.7);
|
||||
tuningBarDark = RGBA4f(0.1, 0.1, 0.45);
|
||||
tuningBarUp = RGBA4f(0.5, 139.0/255.0, 96.0/255.0);
|
||||
tuningBarDown = RGBA4f(0.6, 108.0/255.0, 1.0);
|
||||
meterLevel = RGBA4f(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0);
|
||||
meterValue = RGBA4f(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0);
|
||||
fftLine = RGBA4f(234.0f / 255.0f, 232.0f / 255.0f, 247.0f / 255.0f);
|
||||
fftHighlight = RGBA4f(1.0f, 1.0f, 1.0f);
|
||||
scopeLine = RGBA4f(234.0f / 255.0f, 232.0f / 255.0f, 247.0f / 255.0f);
|
||||
tuningBarLight = RGBA4f(0.2f, 0.2f, 0.7f);
|
||||
tuningBarDark = RGBA4f(0.1f, 0.1f, 0.45f);
|
||||
tuningBarUp = RGBA4f(0.5f, 139.0f/255.0f, 96.0f/255.0f);
|
||||
tuningBarDown = RGBA4f(0.6f, 108.0f/255.0f, 1.0f);
|
||||
meterLevel = RGBA4f(61.0f / 255.0f, 57.0f / 255.0f, 88.0f / 255.0f);
|
||||
meterValue = RGBA4f(61.0f / 255.0f, 57.0f / 255.0f, 88.0f / 255.0f);
|
||||
text = RGBA4f(1, 1, 1);
|
||||
freqLine = RGBA4f(1, 1, 1);
|
||||
button = RGBA4f(1.0, 1.0, 1.0);
|
||||
buttonHighlight = RGBA4f(208.0 / 255.0, 202.0 / 255.0, 247.0 / 255.0);
|
||||
button = RGBA4f(1.0f, 1.0f, 1.0f);
|
||||
buttonHighlight = RGBA4f(208.0f / 255.0f, 202.0f / 255.0f, 247.0f / 255.0f);
|
||||
|
||||
scopeBackground = RGBA4f(39.0 / 255.0, 36.0 / 255.0, 56.0 / 255.0);
|
||||
fftBackground = RGBA4f(39.0 / 255.0, 36.0 / 255.0, 56.0 / 255.0);
|
||||
generalBackground = RGBA4f(61.0 / 255.0, 57.0 / 255.0, 88.0 / 255.0);
|
||||
scopeBackground = RGBA4f(39.0f / 255.0f, 36.0f / 255.0f, 56.0f / 255.0f);
|
||||
fftBackground = RGBA4f(39.0f / 255.0f, 36.0f / 255.0f, 56.0f / 255.0f);
|
||||
generalBackground = RGBA4f(61.0f / 255.0f, 57.0f / 255.0f, 88.0f / 255.0f);
|
||||
|
||||
}
|
||||
|
||||
HDColorTheme::HDColorTheme() {
|
||||
name = "HD";
|
||||
waterfallGradient.addColor(GradientColor(5.0 / 255.0, 5.0 / 255.0, 60.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(5.0 / 255.0, 20.0 / 255.0, 120.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(50.0 / 255.0, 100.0 / 255.0, 200.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(75.0 / 255.0, 190.0 / 255.0, 100.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(240.0 / 255.0, 55.0 / 255.0, 5.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 55.0 / 255.0, 100.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(255.0 / 255.0, 235.0 / 255.0, 100.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(250.0 / 255.0, 250.0 / 255.0, 250.0 / 255.0));
|
||||
waterfallGradient.addColor(GradientColor(5.0f / 255.0f, 5.0f / 255.0f, 60.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(5.0f / 255.0f, 20.0f / 255.0f, 120.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(50.0f / 255.0f, 100.0f / 255.0f, 200.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(75.0f / 255.0f, 190.0f / 255.0f, 100.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(240.0f / 255.0f, 55.0f / 255.0f, 5.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(255.0f / 255.0f, 55.0f / 255.0f, 100.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(255.0f / 255.0f, 235.0f / 255.0f, 100.0f / 255.0f));
|
||||
waterfallGradient.addColor(GradientColor(250.0f / 255.0f, 250.0f / 255.0f, 250.0f / 255.0f));
|
||||
waterfallGradient.generate(256);
|
||||
waterfallHighlight = RGBA4f(1, 1, 1);
|
||||
waterfallNew = RGBA4f(0, 1, 0);
|
||||
waterfallHover = RGBA4f(1, 1, 0);
|
||||
waterfallDestroy = RGBA4f(1, 0, 0);
|
||||
fftLine = RGBA4f(0.9, 0.9, 0.9);
|
||||
fftLine = RGBA4f(0.9f, 0.9f, 0.9f);
|
||||
fftHighlight = RGBA4f(1, 1, 1);
|
||||
scopeLine = RGBA4f(0.9, 0.9, 0.9);
|
||||
tuningBarLight = RGBA4f(0.4, 0.4, 1.0);
|
||||
tuningBarDark = RGBA4f(0.1, 0.1, 0.45);
|
||||
tuningBarUp = RGBA4f(1.0, 139.0/255.0, 96.0/255.0);
|
||||
tuningBarDown = RGBA4f(148.0/255.0, 148.0/255.0, 1.0);
|
||||
meterLevel = RGBA4f(0, 0.5, 0);
|
||||
scopeLine = RGBA4f(0.9f, 0.9f, 0.9f);
|
||||
tuningBarLight = RGBA4f(0.4f, 0.4f, 1.0);
|
||||
tuningBarDark = RGBA4f(0.1f, 0.1f, 0.45f);
|
||||
tuningBarUp = RGBA4f(1.0, 139.0f/255.0f, 96.0f/255.0f);
|
||||
tuningBarDown = RGBA4f(148.0f/255.0f, 148.0f/255.0f, 1.0f);
|
||||
meterLevel = RGBA4f(0, 0.5f, 0);
|
||||
meterValue = RGBA4f(0.0, 0.0, 1.0);
|
||||
text = RGBA4f(1, 1, 1);
|
||||
freqLine = RGBA4f(1, 1, 1);
|
||||
button = RGBA4f(0, 0.7, 0.7);
|
||||
button = RGBA4f(0, 0.7f, 0.7f);
|
||||
buttonHighlight = RGBA4f(1, 1, 1);
|
||||
|
||||
scopeBackground = RGBA4f(0.0, 0.0, 48.0 / 255.0);
|
||||
fftBackground = RGBA4f(0.0, 0.0, 48.0 / 255.0);
|
||||
scopeBackground = RGBA4f(0.0, 0.0, 48.0f / 255.0f);
|
||||
fftBackground = RGBA4f(0.0, 0.0, 48.0f / 255.0f);
|
||||
generalBackground = RGBA4f(0.0, 0.0, 0.0);
|
||||
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ GainCanvas::GainCanvas(wxWindow *parent, int *dispAttrs) :
|
||||
spacing = 2.0/numGains;
|
||||
barWidth = (1.0/numGains)*0.8;
|
||||
startPos = spacing/2.0;
|
||||
barHeight = 0.8;
|
||||
barHeight = 0.8f;
|
||||
refreshCounter = 0;
|
||||
}
|
||||
|
||||
@ -226,7 +226,7 @@ void GainCanvas::updateGainUI() {
|
||||
spacing = 2.0/numGains;
|
||||
barWidth = (1.0/numGains)*0.7;
|
||||
startPos = spacing/2.0;
|
||||
barHeight = 0.8;
|
||||
barHeight = 0.8f;
|
||||
|
||||
RGBA4f c1, c2;
|
||||
|
||||
@ -260,7 +260,7 @@ void GainCanvas::updateGainUI() {
|
||||
|
||||
gInfo->levelPanel.setBorderPx(0);
|
||||
gInfo->levelPanel.setMarginPx(1);
|
||||
gInfo->levelPanel.setSize(1.0,0.8);
|
||||
gInfo->levelPanel.setSize(1.0,0.8f);
|
||||
float levelVal = float(gInfo->current-gInfo->low)/float(gInfo->high-gInfo->low);
|
||||
gInfo->levelPanel.setSize(1.0, levelVal);
|
||||
gInfo->levelPanel.setPosition(0.0, (-1.0+(levelVal)));
|
||||
@ -271,8 +271,8 @@ void GainCanvas::updateGainUI() {
|
||||
|
||||
gInfo->highlightPanel.setBorderPx(0);
|
||||
gInfo->highlightPanel.setMarginPx(1);
|
||||
gInfo->highlightPanel.setSize(1.0,0.8);
|
||||
gInfo->highlightPanel.setPosition(0.0,-0.2);
|
||||
gInfo->highlightPanel.setSize(1.0,0.8f);
|
||||
gInfo->highlightPanel.setPosition(0.0,-0.2f);
|
||||
gInfo->highlightPanel.setFill(GLPanel::GLPANEL_FILL_GRAD_BAR_X);
|
||||
gInfo->highlightPanel.setBlend(GL_ONE, GL_ONE);
|
||||
gInfo->highlightPanel.visible = false;
|
||||
@ -326,8 +326,8 @@ void GainCanvas::setThemeColors() {
|
||||
c2.a = 1.0;
|
||||
gInfo->levelPanel.setFillColor(c1, c2);
|
||||
|
||||
c1 = RGBA4f(0.3,0.3,0.3,1.0);
|
||||
c2 = RGBA4f(0.65,0.65,0.65,1.0);;
|
||||
c1 = RGBA4f(0.3f,0.3f,0.3f,1.0f);
|
||||
c2 = RGBA4f(0.65f,0.65f,0.65f,1.0f);;
|
||||
gInfo->highlightPanel.setFillColor(c1, c2);
|
||||
}
|
||||
Refresh();
|
||||
|
@ -91,7 +91,7 @@ void MeterCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
|
||||
glContext->Draw(ThemeMgr::mgr.currentTheme->generalBackground.r, ThemeMgr::mgr.currentTheme->generalBackground.g, ThemeMgr::mgr.currentTheme->generalBackground.b, 0.5, 1.0);
|
||||
|
||||
if (mouseTracker.mouseInView()) {
|
||||
glContext->Draw(0.4, 0.4, 0.4, 0.5, mouseTracker.getMouseY());
|
||||
glContext->Draw(0.4f, 0.4f, 0.4f, 0.5f, mouseTracker.getMouseY());
|
||||
}
|
||||
glContext->Draw(ThemeMgr::mgr.currentTheme->meterLevel.r, ThemeMgr::mgr.currentTheme->meterLevel.g, ThemeMgr::mgr.currentTheme->meterLevel.b, 0.5, (level-level_min) / (level_max-level_min));
|
||||
if (showUserInput) {
|
||||
|
@ -90,7 +90,7 @@ void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGBA4f color, l
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glColor4f(color.r, color.g, color.b, 0.6);
|
||||
glColor4f(color.r, color.g, color.b, 0.6f);
|
||||
|
||||
float ofs = ((float) demod->getBandwidth()) / (float) srate;
|
||||
float ofsLeft = (demod->getDemodulatorType()!="USB")?ofs:0, ofsRight = (demod->getDemodulatorType()!="LSB")?ofs:0;
|
||||
@ -104,13 +104,13 @@ void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGBA4f color, l
|
||||
bool isSolo = soloMode && demod == wxGetApp().getDemodMgr().getLastActiveDemodulator();
|
||||
|
||||
if (isSolo) {
|
||||
glColor4f(0.8, 0.8, 0, 0.35);
|
||||
glColor4f(0.8f, 0.8f, 0, 0.35f);
|
||||
} else if (demod->isMuted()) {
|
||||
glColor4f(0.8, 0, 0, 0.35);
|
||||
glColor4f(0.8f, 0, 0, 0.35f);
|
||||
} else if (soloMode) {
|
||||
glColor4f(0.2, 0, 0, 0.35);
|
||||
glColor4f(0.2f, 0, 0, 0.35f);
|
||||
} else {
|
||||
glColor4f(0, 0, 0, 0.35);
|
||||
glColor4f(0, 0, 0, 0.35f);
|
||||
}
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
@ -123,7 +123,7 @@ void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGBA4f color, l
|
||||
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
|
||||
glColor4f(color.r, color.g, color.b, 0.2);
|
||||
glColor4f(color.r, color.g, color.b, 0.2f);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex3f(uxPos - ofsLeft, 1.0, 0.0);
|
||||
glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
|
||||
@ -133,7 +133,7 @@ void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGBA4f color, l
|
||||
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.2f);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex3f(uxPos - ofsLeft, hPos + labelHeight, 0.0);
|
||||
glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
|
||||
@ -151,7 +151,7 @@ void PrimaryGLContext::DrawDemodInfo(DemodulatorInstance *demod, RGBA4f color, l
|
||||
glEnd();
|
||||
}
|
||||
|
||||
glColor4f(1.0, 1.0, 1.0, 0.8);
|
||||
glColor4f(1.0, 1.0, 1.0, 0.8f);
|
||||
|
||||
std::string demodLabel = demod->getLabel();
|
||||
|
||||
@ -207,7 +207,7 @@ void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
glColor4f(0, 0, 0, 0.35);
|
||||
glColor4f(0, 0, 0, 0.35f);
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glVertex3f(uxPos - ofsLeft, hPos + labelHeight, 0.0);
|
||||
@ -219,7 +219,7 @@ void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long
|
||||
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
|
||||
glColor4f(color.r, color.g, color.b, 0.1);
|
||||
glColor4f(color.r, color.g, color.b, 0.1f);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex3f(uxPos - ofsLeft, 1.0, 0.0);
|
||||
glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
|
||||
@ -229,7 +229,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.1);
|
||||
glColor4f(color.r, color.g, color.b, 0.1f);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex3f(uxPos - ofsLeft, hPos + labelHeight, 0.0);
|
||||
glVertex3f(uxPos - ofsLeft, -1.0, 0.0);
|
||||
@ -247,7 +247,7 @@ void PrimaryGLContext::DrawFreqBwInfo(long long freq, int bw, RGBA4f color, long
|
||||
glEnd();
|
||||
}
|
||||
|
||||
glColor4f(1.0, 1.0, 1.0, 0.8);
|
||||
glColor4f(1.0, 1.0, 1.0, 0.8f);
|
||||
|
||||
std::string demodLabel = std::to_string((double)freq/1000000.0);
|
||||
|
||||
@ -306,7 +306,7 @@ void PrimaryGLContext::DrawDemod(DemodulatorInstance *demod, RGBA4f color, long
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
glColor4f(color.r, color.g, color.b, 0.6);
|
||||
glColor4f(color.r, color.g, color.b, 0.6f);
|
||||
|
||||
float ofs = ((float) demod->getBandwidth()) / (float) srate;
|
||||
float ofsLeft = (demod->getDemodulatorType()!="USB")?ofs:0, ofsRight = (demod->getDemodulatorType()!="LSB")?ofs:0;
|
||||
@ -410,7 +410,7 @@ void PrimaryGLContext::DrawFreqSelector(float uxPos, RGBA4f color, float w, long
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
glColor4f(color.r, color.g, color.b, 0.6);
|
||||
glColor4f(color.r, color.g, color.b, 0.6f);
|
||||
|
||||
glBegin(GL_LINES);
|
||||
|
||||
@ -453,7 +453,7 @@ void PrimaryGLContext::DrawRangeSelector(float uxPos1, float uxPos2, RGBA4f colo
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
glColor4f(color.r, color.g, color.b, 0.6);
|
||||
glColor4f(color.r, color.g, color.b, 0.6f);
|
||||
|
||||
glLineWidth((last_type == "USB")?2.0:1.0);
|
||||
|
||||
|
@ -33,9 +33,9 @@ ScopeCanvas::ScopeCanvas(wxWindow *parent, int *dispAttrs) : InteractiveCanvas(p
|
||||
glContext = new ScopeContext(this, &wxGetApp().GetContext(this));
|
||||
inputData.set_max_num_items(2);
|
||||
bgPanel.setFill(GLPanel::GLPANEL_FILL_GRAD_Y);
|
||||
bgPanel.setSize(1.0, 0.5);
|
||||
bgPanel.setPosition(0.0, -0.5);
|
||||
panelSpacing = 0.4;
|
||||
bgPanel.setSize(1.0, 0.5f);
|
||||
bgPanel.setPosition(0.0, -0.5f);
|
||||
panelSpacing = 0.4f;
|
||||
|
||||
parentPanel.addChild(&scopePanel);
|
||||
parentPanel.addChild(&spectrumPanel);
|
||||
@ -147,7 +147,7 @@ void ScopeCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
|
||||
CubicVR::mat4 modelView = CubicVR::mat4::lookat(0, 0, -1.205, 0, 0, 0, 0, -1, 0);
|
||||
CubicVR::mat4 modelView = CubicVR::mat4::lookat(0, 0, -1.205f, 0, 0, 0, 0, -1, 0);
|
||||
|
||||
float panelWidth = 1.0;
|
||||
float panelInterval = (panelWidth * 2.0 + panelSpacing);
|
||||
|
@ -33,11 +33,11 @@ void ScopeContext::DrawTunerTitles(bool ppmMode) {
|
||||
float viewHeight = (float) vp[3];
|
||||
float hPos = (float) (13) / viewHeight;
|
||||
|
||||
glColor3f(0.65, 0.65, 0.65);
|
||||
glColor3f(0.65f, 0.65f, 0.65f);
|
||||
|
||||
GLFont::getFont(GLFont::GLFONT_SIZE12).drawString(ppmMode?"Device PPM":"Frequency", -0.66, -1.0+hPos, 12, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, 0, 0, true);
|
||||
GLFont::getFont(GLFont::GLFONT_SIZE12).drawString(ppmMode?"Device PPM":"Frequency", -0.66f, -1.0+hPos, 12, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, 0, 0, true);
|
||||
GLFont::getFont(GLFont::GLFONT_SIZE12).drawString("Bandwidth", 0.0, -1.0+hPos, 12, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, 0, 0, true);
|
||||
GLFont::getFont(GLFont::GLFONT_SIZE12).drawString("Center Frequency", 0.66, -1.0+hPos, 12, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, 0, 0, true);
|
||||
GLFont::getFont(GLFont::GLFONT_SIZE12).drawString("Center Frequency", 0.66f, -1.0+hPos, 12, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER, 0, 0, true);
|
||||
}
|
||||
|
||||
void ScopeContext::DrawDeviceName(std::string deviceName) {
|
||||
@ -46,7 +46,7 @@ void ScopeContext::DrawDeviceName(std::string deviceName) {
|
||||
float viewHeight = (float) vp[3];
|
||||
float hPos = (float) (viewHeight - 20) / viewHeight;
|
||||
|
||||
glColor3f(0.65, 0.65, 0.65);
|
||||
glColor3f(0.65f, 0.65f, 0.65f);
|
||||
GLFont::getFont(GLFont::GLFONT_SIZE12).drawString(deviceName.c_str(), 1.0, hPos, 12, GLFont::GLFONT_ALIGN_RIGHT, GLFont::GLFONT_ALIGN_CENTER, 0, 0, true);
|
||||
}
|
||||
|
||||
|
@ -42,13 +42,13 @@ TuningCanvas::TuningCanvas(wxWindow *parent, int *dispAttrs) :
|
||||
dragging = false;
|
||||
|
||||
freqDP = -1.0;
|
||||
freqW = (1.0 / 3.0) * 2.0;
|
||||
freqW = (1.0f / 3.0f) * 2.0f;
|
||||
|
||||
bwDP = -1.0 + (2.25 / 3.0);
|
||||
bwW = (1.0 / 4.0) * 2.0;
|
||||
|
||||
centerDP = -1.0 + (2.0 / 3.0) * 2.0;
|
||||
centerW = (1.0 / 3.0) * 2.0;
|
||||
centerDP = -1.0f + (2.0f / 3.0f) * 2.0f;
|
||||
centerW = (1.0f / 3.0f) * 2.0f;
|
||||
|
||||
currentPPM = lastPPM = 0;
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ void TuningContext::DrawTuner(long long freq, int count, float displayPos, float
|
||||
GLFont::getFont(fontSize).drawString(freqStr.str().substr(i - ofs, 1), xpos, 0, fontHeight, GLFont::GLFONT_ALIGN_CENTER, GLFont::GLFONT_ALIGN_CENTER);
|
||||
}
|
||||
|
||||
glColor4f(0.65, 0.65, 0.65, 0.25);
|
||||
glColor4f(0.65f, 0.65f, 0.65f, 0.25f);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glBegin(GL_LINES);
|
||||
@ -158,7 +158,7 @@ bool bottom) {
|
||||
float p2 = displayPos + ofs * (float) (count - start + 1);
|
||||
float p1 = displayPos + ofs * (float) (count - end);
|
||||
|
||||
float r = color.r, g = color.g, b = color.b, a = 0.6;
|
||||
float r = color.r, g = color.g, b = color.b, a = 0.6f;
|
||||
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_ONE, GL_ONE);
|
||||
@ -184,8 +184,8 @@ bool bottom) {
|
||||
}
|
||||
|
||||
void TuningContext::DrawDemodFreqBw(long long freq, unsigned int bw, long long center) {
|
||||
DrawTuner(freq, 11, -1.0, (1.0 / 3.0) * 2.0);
|
||||
DrawTuner(bw, 7, -1.0 + (2.25 / 3.0), (1.0 / 4.0) * 2.0);
|
||||
DrawTuner(center, 11, -1.0 + (2.0 / 3.0) * 2.0, (1.0 / 3.0) * 2.0);
|
||||
DrawTuner(freq, 11, -1.0, (1.0f / 3.0f) * 2.0f);
|
||||
DrawTuner(bw, 7, -1.0 + (2.25f / 3.0f), (1.0f / 4.0f) * 2.0f);
|
||||
DrawTuner(center, 11, -1.0 + (2.0f / 3.0f) * 2.0, (1.0f / 3.0f) * 2.0f);
|
||||
}
|
||||
|
||||
|
@ -355,7 +355,7 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
|
||||
scaleMove = 0.0;
|
||||
zoom = 1.0;
|
||||
if (mouseZoom != 1.0) {
|
||||
mouseZoom = 0.95;
|
||||
mouseZoom = 0.95f;
|
||||
}
|
||||
break;
|
||||
case WXK_DOWN:
|
||||
@ -363,7 +363,7 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
|
||||
scaleMove = 0.0;
|
||||
zoom = 1.0;
|
||||
if (mouseZoom != 1.0) {
|
||||
mouseZoom = 1.05;
|
||||
mouseZoom = 1.05f;
|
||||
}
|
||||
break;
|
||||
case WXK_LEFT:
|
||||
@ -388,7 +388,7 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
||||
case WXK_NUMPAD_UP:
|
||||
if (!shiftDown) {
|
||||
mouseZoom = 1.0;
|
||||
zoom = 0.95;
|
||||
zoom = 0.95f;
|
||||
} else {
|
||||
scaleMove = 1.0;
|
||||
}
|
||||
@ -397,7 +397,7 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
||||
case WXK_NUMPAD_DOWN:
|
||||
if (!shiftDown) {
|
||||
mouseZoom = 1.0;
|
||||
zoom = 1.05;
|
||||
zoom = 1.05f;
|
||||
} else {
|
||||
scaleMove = -1.0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user