MCPcopy Create free account
hub / github.com/Tom94/tev / selectReference

Method selectReference

src/ImageViewer.cpp:1964–2015  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1962}
1963
1964void ImageViewer::selectReference(const shared_ptr<Image>& image) {
1965 if (!image) {
1966 auto& buttons = mImageButtonContainer->children();
1967 for (size_t i = 0; i < buttons.size(); ++i) {
1968 dynamic_cast<ImageButton*>(buttons[i])->setIsReference(false);
1969 }
1970
1971 auto& metricButtons = mMetricButtonContainer->children();
1972 for (size_t i = 0; i < metricButtons.size(); ++i) {
1973 dynamic_cast<Button*>(metricButtons[i])->set_enabled(false);
1974 }
1975
1976 mCurrentReference = nullptr;
1977 mImageCanvas->setReference(nullptr);
1978 return;
1979 }
1980
1981 const auto id = imageId(image).value_or(0);
1982
1983 auto& buttons = mImageButtonContainer->children();
1984 for (size_t i = 0; i < buttons.size(); ++i) {
1985 dynamic_cast<ImageButton*>(buttons[i])->setIsReference(i == id);
1986 }
1987
1988 auto& metricButtons = mMetricButtonContainer->children();
1989 for (size_t i = 0; i < metricButtons.size(); ++i) {
1990 dynamic_cast<Button*>(metricButtons[i])->set_enabled(true);
1991 }
1992
1993 mCurrentReference = image;
1994 mImageCanvas->setReference(mCurrentReference);
1995
1996 // Ensure the currently active reference button is always fully on-screen
1997 Widget* activeReferenceButton = nullptr;
1998 for (Widget* widget : mImageButtonContainer->children()) {
1999 if (dynamic_cast<ImageButton*>(widget)->isReference()) {
2000 activeReferenceButton = widget;
2001 break;
2002 }
2003 }
2004
2005 if (activeReferenceButton) {
2006 float divisor = mScrollContent->height() - mImageScrollContainer->height();
2007 if (divisor > 0) {
2008 mImageScrollContainer->set_scroll(clamp(
2009 mImageScrollContainer->scroll(),
2010 (activeReferenceButton->position().y() + activeReferenceButton->height() - mImageScrollContainer->height()) / divisor,
2011 activeReferenceButton->position().y() / divisor
2012 ));
2013 }
2014 }
2015}
2016
2017void ImageViewer::setExposure(float value) {
2018 value = round(value, 1.0f);

Callers

nothing calls this directly

Calls 4

setIsReferenceMethod · 0.80
setReferenceMethod · 0.80
isReferenceMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected