File: heatmappagecontroller.h

package info (click to toggle)
aoflagger 3.4.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,960 kB
  • sloc: cpp: 83,076; python: 10,187; sh: 260; makefile: 178
file content (73 lines) | stat: -rw-r--r-- 2,292 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef HEATMAP_PAGE_CONTROLLER_H
#define HEATMAP_PAGE_CONTROLLER_H

#include <string>
#include <utility>

#include "aoqplotpagecontroller.h"

#include "../../rfigui/maskedheatmap.h"
#include "../../structures/timefrequencydata.h"

#include <aocommon/polarization.h>

class HeatMapPageController : public AOQPageController {
 public:
  HeatMapPageController();

  void Attach(class GrayScalePlotPage* page) { _page = page; }

  void SavePdf(const std::string& filename,
               QualityTablesFormatter::StatisticKind kind, unsigned width,
               unsigned height) {
    updateImageImpl(kind, aocommon::Polarization::StokesI,
                    TimeFrequencyData::AmplitudePart);
    _heatMap.SavePdf(filename, width, height);
  }

  HeatMap& Plot() { return _heatMap; }

  void UpdateImage() { updateImageImpl(_statisticKind, _polarization, _phase); }

  void SetKind(QualityTablesFormatter::StatisticKind statisticKind) {
    _statisticKind = statisticKind;
  }

  void SetPolarization(aocommon::PolarizationEnum polarization) {
    _polarization = polarization;
  }

  void SetPhase(enum TimeFrequencyData::ComplexRepresentation phase) {
    _phase = phase;
  }
  enum Normalization { Mean, Winsorized, Median };
  void SetNormalization(Normalization normalization) {
    _normalization = normalization;
  }

 protected:
  virtual std::pair<TimeFrequencyData, TimeFrequencyMetaDataCPtr>
  constructImage(QualityTablesFormatter::StatisticKind kind) = 0;

 private:
  Image2D normalizeXAxis(const Image2D& input);
  Image2D normalizeYAxis(const Image2D& input);
  void updateImageImpl(QualityTablesFormatter::StatisticKind statisticKind,
                       aocommon::PolarizationEnum polarisation,
                       enum TimeFrequencyData::ComplexRepresentation phase);
  void setToPolarization(TimeFrequencyData& data,
                         aocommon::PolarizationEnum polarisation);
  void setToPhase(TimeFrequencyData& data,
                  enum TimeFrequencyData::ComplexRepresentation phase);

  MaskedHeatMap _heatMap;
  class GrayScalePlotPage* _page;

  QualityTablesFormatter::StatisticKind _statisticKind;
  aocommon::PolarizationEnum _polarization;
  enum TimeFrequencyData::ComplexRepresentation _phase;

  enum Normalization _normalization;
};

#endif