Skip to content

Commit

Permalink
still not working perfectly
Browse files Browse the repository at this point in the history
  • Loading branch information
jaredmales committed Mar 28, 2024
1 parent 31d49c1 commit b82400a
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 70 deletions.
29 changes: 17 additions & 12 deletions src/rtimvBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ bool rtimvBase::imageValid(size_t n)

void rtimvBase::mtxL_setImsize( uint32_t x,
uint32_t y,
std::unique_lock<std::mutex> & lock
const std::unique_lock<std::mutex> & lock
)
{
assert(lock.owns_lock());
Expand Down Expand Up @@ -181,7 +181,7 @@ void rtimvBase::mtxL_setImsize( uint32_t x,
}
}

void rtimvBase::mtxL_postSetImsize(std::unique_lock<std::mutex> & lock)
void rtimvBase::mtxL_postSetImsize(const std::unique_lock<std::mutex> & lock)
{
assert(lock.owns_lock());

Expand Down Expand Up @@ -539,7 +539,8 @@ void rtimvBase::mtxL_load_colorbar( int cb,

if(update)
{
changeImdata();
//changeImdata();
mtxL_recolor(lock);
}
}

Expand Down Expand Up @@ -934,7 +935,7 @@ void rtimvBase::changeImdata(bool newdata)

} //void rtimvBase::changeImdata(bool newdata)

void rtimvBase::mtxL_recolor(std::unique_lock<std::mutex> & lock)
void rtimvBase::mtxL_recolor(const std::unique_lock<std::mutex> & lock)
{
assert(lock.owns_lock());

Expand Down Expand Up @@ -1022,14 +1023,14 @@ void rtimvBase::mtxL_recolor(std::unique_lock<std::mutex> & lock)
mtxL_postRecolor(lock);
}

void rtimvBase::mtxL_postRecolor( std::unique_lock<std::mutex> & lock )
void rtimvBase::mtxL_postRecolor( const std::unique_lock<std::mutex> & lock )
{
RTIMV_DEBUG_BREADCRUMB
assert(lock.owns_lock());
return;
}

void rtimvBase::mtxL_postChangeImdata( std::unique_lock<std::mutex> & lock )
void rtimvBase::mtxL_postChangeImdata( const std::unique_lock<std::mutex> & lock )
{
RTIMV_DEBUG_BREADCRUMB
assert(lock.owns_lock());
Expand Down Expand Up @@ -1062,8 +1063,12 @@ void rtimvBase::post_zoomLevel()
return;
}

void rtimvBase::mtxUL_setUserBoxActive(bool usba)
void rtimvBase::mtxL_setUserBoxActive( bool usba,
const std::unique_lock<std::mutex> & lock
)
{
assert(lock.owns_lock());

if(usba)
{
int idx;
Expand Down Expand Up @@ -1154,15 +1159,15 @@ void rtimvBase::mtxUL_setUserBoxActive(bool usba)
colorBoxActive = usba;

set_colorbar_mode(minmaxbox);

changeImdata(false);

return;

}

colorBoxActive = usba;
mtxL_recolor(lock);

mtxL_postSetUserBoxActive(usba, lock);
}


void rtimvBase::set_RealTimeEnabled(int rte)
{
RealTimeEnabled = (rte != 0);
Expand Down
18 changes: 12 additions & 6 deletions src/rtimvBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,11 @@ class rtimvBase : public QWidget
*/
void mtxL_setImsize( uint32_t x, ///< [in] the new x size
uint32_t y, ///< [in] the new y size
std::unique_lock<std::mutex> & lock
const std::unique_lock<std::mutex> & lock
);

/// Called after set_imsize to handle allocations for derived classes
virtual void mtxL_postSetImsize( std::unique_lock<std::mutex> & lock );
virtual void mtxL_postSetImsize( const std::unique_lock<std::mutex> & lock );

///Get the number of x pixels
/**
Expand Down Expand Up @@ -452,11 +452,11 @@ protected slots:
*/
void changeImdata(bool newdata = false);

void mtxL_recolor(std::unique_lock<std::mutex> & lock);
void mtxL_recolor(const std::unique_lock<std::mutex> & lock);

virtual void mtxL_postRecolor( std::unique_lock<std::mutex> & lock ); ///<to call after changing colors.
virtual void mtxL_postRecolor( const std::unique_lock<std::mutex> & lock ); ///<to call after changing colors.

virtual void mtxL_postChangeImdata( std::unique_lock<std::mutex> & lock ); ///<to call after change imdata does its work.
virtual void mtxL_postChangeImdata( const std::unique_lock<std::mutex> & lock ); ///<to call after change imdata does its work.

protected:
float m_satLevel {1e30};
Expand Down Expand Up @@ -511,8 +511,14 @@ protected slots:
public:
int getUserBoxActive(){ return colorBoxActive; }

void mtxUL_setUserBoxActive(bool usba);
void mtxL_setUserBoxActive( bool usba,
const std::unique_lock<std::mutex> & lock
);

virtual void mtxL_postSetUserBoxActive( bool usba,
const std::unique_lock<std::mutex> & lock
) = 0;

///@}


Expand Down
99 changes: 70 additions & 29 deletions src/rtimvControlPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -578,7 +578,8 @@ void rtimvControlPanel::on_scaleTypeCombo_activated(int ct)
imv->set_cbStretch(ct);


imv->changeImdata();
std::unique_lock<std::mutex> lock(*m_calMutex);
imv->mtxL_recolor(lock);
}

void rtimvControlPanel::on_colorbarCombo_activated(int cb)
Expand Down Expand Up @@ -715,11 +716,19 @@ void rtimvControlPanel::on_scaleModeCombo_activated(int index)

if(index == rtimvBase::minmaxglobal)
{
imv->mtxUL_setUserBoxActive(false);
std::unique_lock<std::mutex> lock(*m_calMutex);

std::cerr << "yippee!\n";

imv->mtxL_setUserBoxActive(false, lock);

imv->set_colorbar_mode(rtimvBase::minmaxglobal);

imv->maxdat(imv->get_imdat_max());
imv->mindat(imv->get_imdat_min());
imv->changeImdata();

imv->mtxL_recolor(lock);

update_mindatEntry();
update_maxdatEntry();
update_biasEntry();
Expand All @@ -730,17 +739,20 @@ void rtimvControlPanel::on_scaleModeCombo_activated(int index)
update_contrastRelEntry();

}

if(index == rtimvBase::user)
else if(index == rtimvBase::user)
{
imv->mtxUL_setUserBoxActive(false);
std::unique_lock<std::mutex> lock(*m_calMutex);
imv->mtxL_setUserBoxActive(false, lock);

imv->set_colorbar_mode(rtimvBase::user);

imv->mtxL_recolor(lock);
}

if(index == rtimvBase::minmaxbox)
else if(index == rtimvBase::minmaxbox)
{
imv->m_colorBox->setVisible(true);
imv->mtxUL_setUserBoxActive(true);
std::unique_lock<std::mutex> lock(*m_calMutex);
imv->mtxL_setUserBoxActive(false, lock);

update_mindatEntry();
update_maxdatEntry();
update_biasEntry();
Expand All @@ -752,8 +764,8 @@ void rtimvControlPanel::on_scaleModeCombo_activated(int index)
}
else
{
imv->m_colorBox->setVisible(false);
imv->mtxUL_setUserBoxActive(false);
std::unique_lock<std::mutex> lock(*m_calMutex);
imv->mtxL_setUserBoxActive(false, lock);
}
}

Expand All @@ -763,9 +775,13 @@ void rtimvControlPanel::on_mindatSlider_valueChanged(int value)
{
double sc = ((double)(value - ui.mindatSlider->minimum()))/((double)(ui.mindatSlider->maximum()-ui.mindatSlider->minimum()));
imv->mindat(imv->get_imdat_min() + (imv->get_imdat_max()-imv->get_imdat_min())*sc);
imv->changeImdata();
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);
lock.unlock();


ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);

update_mindatEntry();
Expand All @@ -783,9 +799,13 @@ void rtimvControlPanel::on_mindatEntry_editingFinished()
update_mindatSlider();
update_biasSlider();
update_contrastSlider();
imv->changeImdata();
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);
lock.unlock();


ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);
}

Expand All @@ -795,9 +815,13 @@ void rtimvControlPanel::on_maxdatSlider_valueChanged(int value)
{
double sc = ((double)(value - ui.maxdatSlider->minimum()))/((double)(ui.maxdatSlider->maximum()-ui.maxdatSlider->minimum()));
imv->maxdat(imv->get_imdat_min() + (imv->get_imdat_max()-imv->get_imdat_min())*sc);
imv->changeImdata();
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);

lock.unlock();

ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);

update_maxdatEntry();
Expand All @@ -814,9 +838,12 @@ void rtimvControlPanel::on_maxdatEntry_editingFinished()
update_biasEntry();
update_maxdatSlider();
update_biasSlider();
imv->changeImdata();
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);
lock.unlock();

ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);
}

Expand All @@ -826,9 +853,14 @@ void rtimvControlPanel::on_biasSlider_valueChanged(int value)
{
double bias = ((double)(value - ui.biasSlider->minimum()))/((double)(ui.biasSlider->maximum()-ui.biasSlider->minimum()));
imv->bias_rel(bias);
imv->changeImdata();
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);

lock.unlock();


ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);

update_mindatEntry();
Expand All @@ -841,10 +873,13 @@ void rtimvControlPanel::on_biasSlider_valueChanged(int value)
void rtimvControlPanel::on_biasEntry_editingFinished()
{
imv->bias(ui.biasEntry->text().toDouble());
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);
lock.unlock();

ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);
imv->changeImdata();

update_mindatEntry();
update_maxdatEntry();
Expand All @@ -860,9 +895,12 @@ void rtimvControlPanel::on_contrastSlider_valueChanged(int value)
double cont = ((double)(value - ui.contrastSlider->minimum()))/((double)(ui.contrastSlider->maximum()-ui.contrastSlider->minimum()));
cont = cont * (imv->get_imdat_max() - imv->get_imdat_min());
imv->contrast(cont);
imv->changeImdata();
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);
lock.unlock();

ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);

update_mindatEntry();
Expand All @@ -876,11 +914,14 @@ void rtimvControlPanel::on_contrastSlider_valueChanged(int value)
void rtimvControlPanel::on_contrastEntry_editingFinished()
{
imv->contrast(ui.contrastEntry->text().toDouble());
imv->mtxUL_setUserBoxActive(false);

std::unique_lock<std::mutex> lock(*m_calMutex);
imv->set_colorbar_mode(rtimvBase::user);
imv->mtxL_setUserBoxActive(false, lock);
lock.unlock();

ui.scaleModeCombo->setCurrentIndex(SCALEMODE_USER);
imv->changeImdata();


update_mindatEntry();
update_maxdatEntry();
update_biasEntry();
Expand Down
Loading

0 comments on commit b82400a

Please sign in to comment.