From 97abbb4da2a05ba8e7f25de1ed07489ad1e0878c Mon Sep 17 00:00:00 2001 From: Mark Watkins Date: Tue, 29 Jul 2014 15:19:10 +1000 Subject: [PATCH] Apply smoothing between values in LineCursor graph values --- .../loader_plugins/intellipap_loader.cpp | 16 +++-------- sleepyhead/SleepLib/session.cpp | 27 ++++++++++++++----- sleepyhead/overview.cpp | 2 +- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp index d4889abc..df252bb9 100644 --- a/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp +++ b/sleepyhead/SleepLib/loader_plugins/intellipap_loader.cpp @@ -442,9 +442,7 @@ int IntellipapLoader::Open(QString path) sess->AddEventList(CPAP_ExP, EVL_Event); } - // for (int q = 0; q < m_buffer[pos + 0x5]; q++) { - sess->eventlist[CPAP_ExP][0]->AddEvent(time, m_buffer[pos + 0x5]); - // } + sess->eventlist[CPAP_ExP][0]->AddEvent(time, m_buffer[pos + 0x5]); } if (m_buffer[pos + 0x10] > 0) { @@ -452,9 +450,7 @@ int IntellipapLoader::Open(QString path) sess->AddEventList(CPAP_Obstructive, EVL_Event); } - // for (int q = 0; q < m_buffer[pos + 0x10]; q++) { - sess->eventlist[CPAP_Obstructive][0]->AddEvent(time, m_buffer[pos + 0x10]); - // } + sess->eventlist[CPAP_Obstructive][0]->AddEvent(time, m_buffer[pos + 0x10]); } if (m_buffer[pos + 0x11] > 0) { @@ -462,9 +458,7 @@ int IntellipapLoader::Open(QString path) sess->AddEventList(CPAP_Hypopnea, EVL_Event); } - // for (int q = 0; q < m_buffer[pos + 0x11]; q++) { - sess->eventlist[CPAP_Hypopnea][0]->AddEvent(time, m_buffer[pos + 0x11]); - // } + sess->eventlist[CPAP_Hypopnea][0]->AddEvent(time, m_buffer[pos + 0x11]); } if (m_buffer[pos + 0x12] > 0) { // NRI // is this == to RERA?? CA?? @@ -472,9 +466,7 @@ int IntellipapLoader::Open(QString path) sess->AddEventList(CPAP_NRI, EVL_Event); } - // for (int q = 0; q < m_buffer[pos + 0x12]; q++) { - sess->eventlist[CPAP_NRI][0]->AddEvent(time, m_buffer[pos + 0x12]); - // } + sess->eventlist[CPAP_NRI][0]->AddEvent(time, m_buffer[pos + 0x12]); } quint16 tv = (m_buffer[pos + 0x8] << 8) | m_buffer[pos + 0x9]; // correct diff --git a/sleepyhead/SleepLib/session.cpp b/sleepyhead/SleepLib/session.cpp index f7a9a36e..e736dc5e 100644 --- a/sleepyhead/SleepLib/session.cpp +++ b/sleepyhead/SleepLib/session.cpp @@ -953,7 +953,7 @@ void Session::UpdateSummaries() EventDataType Session::SearchValue(ChannelID code, qint64 time) { - qint64 tt, start; + qint64 t1, t2, start; QHash >::iterator it; it = eventlist.find(code); quint32 *tptr; @@ -963,6 +963,8 @@ EventDataType Session::SearchValue(ChannelID code, qint64 time) int i=5; } + EventDataType a,b,c,d,e; + double; if (it != eventlist.end()) { int el_size=it.value().size(); for (int i = 0; i < el_size; i++) { @@ -973,17 +975,30 @@ EventDataType Session::SearchValue(ChannelID code, qint64 time) if (el->type() == EVL_Waveform) { qint64 tt = time - el->first(); - qint64 i = tt / el->rate(); + int i = tt / el->rate(); return el->data(i); } else { start = el->first(); tptr = el->rawTime(); - for (int j = 0; j < cnt-1; j++) { + for (int j = 0; j < cnt-1; ++j) { tptr++; - tt = start + *tptr; - if (tt > time) { - return el->data(j); + t2 = start + *tptr; + if (t2 > time) { + tptr--; + t1 = start + *tptr; + c = EventDataType(t2 - t1); + d = EventDataType(t2 - time); + e = d/c; + a = el->data(j); + b = el->data(j+1); + if (a == b) { + return a; + } else { //if (a > b) { + return b + ((a-b) * e); + }// else { // a < b + // return a + ((b-a) * e); + //} } } } diff --git a/sleepyhead/overview.cpp b/sleepyhead/overview.cpp index 6366634e..ec2a0988 100644 --- a/sleepyhead/overview.cpp +++ b/sleepyhead/overview.cpp @@ -233,7 +233,7 @@ Overview::Overview(QWidget *parent, gGraphView *shared) : //set->addSlice(PRS1_SysOneResistSet,COLOR_Gray,ST_SETAVG); set->addSlice(CPAP_HumidSetting, COLOR_Blue, ST_SETWAVG); set->addSlice(CPAP_PresReliefSet, COLOR_Red, ST_SETWAVG); - //set->addSlice(RMS9_EPRLevel,COLOR_Green,ST_SETWAVG); + set->addSlice(RMS9_EPRLevel,COLOR_Green,ST_SETWAVG); //set->addSlice(INTP_SmartFlex,COLOR_Purple,ST_SETWAVG); SET->AddLayer(set);