Select Git revision
imagecomparisoncontroller.h
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
imagecomparisoncontroller.h 5.43 KiB
#ifndef IMAGECOMPARISONCONTROLLER_H
#define IMAGECOMPARISONCONTROLLER_H
#include <gtkmm/drawingarea.h>
#include <utility>
#include <vector>
#include "../../structures/image2d.h"
#include "../../structures/timefrequencydata.h"
#include "../../structures/timefrequencymetadata.h"
#include "../../structures/segmentedimage.h"
#include "../maskedheatmap.h"
class ImageComparisonController {
public:
ImageComparisonController();
void Clear();
void SetNewData(const class TimeFrequencyData& image,
TimeFrequencyMetaDataCPtr metaData);
/**
* The currently visible data. This includes the masks that are activated and
* the data is trimmed to the zoomed region. In case none of the masks are
* visualized, the returned data has an unset mask.
*/
TimeFrequencyData GetActiveData() const;
/**
* Same as @ref GetActiveData(), but full size ("zoomed out").
*/
TimeFrequencyData GetActiveDataFullSize() const;
/**
* The full-size "original" data, including the original mask.
*/
TimeFrequencyData& OriginalData() { return _dataList.front().data; }
const TimeFrequencyData& OriginalData() const {
return _dataList.front().data;
}
void SetAltMaskData(const TimeFrequencyData& data) {
if (_visualizedImage == 0)
_dataList.back().data = data;
else
_dataList[_visualizedImage].data = data;
updateVisualizedImageAndMask();
}
/**
* The full-size alternative mask
*/
TimeFrequencyData AltMaskData() const {
if (_visualizedImage == 0) {
if (_dataList.size() > 1) {
return _dataList.back().data;
} else {
TimeFrequencyData empty = _dataList.back().data;
empty.SetNoMask();
return empty;
}
} else {
return _dataList[_visualizedImage].data;
}
}
size_t AddVisualization(const std::string& label,
const TimeFrequencyData& data) {
_dataList.emplace_back(label, data);