[med-svn] [aghermann] 11/85: separate struct SScoringFacility::SChannel into own sf/channel.hh

andrei zavada hmmr-guest at alioth.debian.org
Thu Sep 26 23:46:23 UTC 2013


This is an automated email from the git hooks/post-receive script.

hmmr-guest pushed a commit to branch master
in repository aghermann.

commit 7dea678d785707947cd6a47f8e99a218632be8ff
Author: Andrei Zavada <johnhommer at gmail.com>
Date:   Sat Sep 7 01:46:19 2013 +0300

    separate struct SScoringFacility::SChannel into own sf/channel.hh
---
 upstream/src/aghermann/patterns/Makefile.am        |    1 +
 upstream/src/aghermann/patterns/forward-decls.hh   |   32 ++
 upstream/src/aghermann/patterns/patterns.hh        |   30 +-
 upstream/src/aghermann/ui/mw/mainmenu_cb.cc        |    1 +
 upstream/src/aghermann/ui/sf/Makefile.am           |    1 +
 upstream/src/aghermann/ui/sf/channel.cc            |    2 +
 upstream/src/aghermann/ui/sf/channel.hh            |  374 ++++++++++++++++++++
 upstream/src/aghermann/ui/sf/d/artifacts-simple.hh |    2 +-
 upstream/src/aghermann/ui/sf/d/artifacts.cc        |    1 +
 upstream/src/aghermann/ui/sf/d/artifacts_cb.cc     |    3 +-
 .../src/aghermann/ui/sf/d/filters-construct.cc     |    2 +-
 upstream/src/aghermann/ui/sf/d/filters.cc          |    1 +
 upstream/src/aghermann/ui/sf/d/filters_cb.cc       |    2 +-
 .../src/aghermann/ui/sf/d/patterns-construct.cc    |    1 +
 upstream/src/aghermann/ui/sf/d/patterns-draw.cc    |    3 +-
 .../src/aghermann/ui/sf/d/patterns-profiles.cc     |    3 +-
 .../src/aghermann/ui/sf/d/patterns-profiles_cb.cc  |    1 +
 upstream/src/aghermann/ui/sf/d/patterns.cc         |    2 +-
 upstream/src/aghermann/ui/sf/d/patterns_cb.cc      |    3 +-
 .../src/aghermann/ui/sf/d/phasediff-construct.cc   |    2 +-
 upstream/src/aghermann/ui/sf/d/phasediff.cc        |    3 +-
 upstream/src/aghermann/ui/sf/d/phasediff_cb.cc     |    3 +-
 upstream/src/aghermann/ui/sf/hypnogram.cc          |    2 +
 upstream/src/aghermann/ui/sf/ica.cc                |    1 +
 upstream/src/aghermann/ui/sf/mainmenu_cb.cc        |    2 +
 upstream/src/aghermann/ui/sf/montage-overlays.cc   |    3 +-
 upstream/src/aghermann/ui/sf/montage.cc            |    3 +-
 upstream/src/aghermann/ui/sf/montage_cb.cc         |    3 +-
 upstream/src/aghermann/ui/sf/sf.cc                 |   22 +-
 upstream/src/aghermann/ui/sf/sf.hh                 |  349 +-----------------
 upstream/src/aghermann/ui/sf/sf_cb.cc              |    1 +
 upstream/src/libsigfile/forward-decls.hh           |    4 +
 upstream/src/libsigfile/source-base.hh             |   13 +-
 33 files changed, 509 insertions(+), 367 deletions(-)

diff --git a/upstream/src/aghermann/patterns/Makefile.am b/upstream/src/aghermann/patterns/Makefile.am
index 29e2fe0..a32f72d 100644
--- a/upstream/src/aghermann/patterns/Makefile.am
+++ b/upstream/src/aghermann/patterns/Makefile.am
@@ -5,6 +5,7 @@ AM_CXXFLAGS := \
 noinst_LIBRARIES := liba.a
 
 liba_a_SOURCES := \
+	forward-decls.hh \
 	patterns.cc patterns.hh patterns.ii
 
 # EXTRA_DIST := \
diff --git a/upstream/src/aghermann/patterns/forward-decls.hh b/upstream/src/aghermann/patterns/forward-decls.hh
new file mode 100644
index 0000000..0078781
--- /dev/null
+++ b/upstream/src/aghermann/patterns/forward-decls.hh
@@ -0,0 +1,32 @@
+/*
+ *       File name:  aghermann/patterns/forward-decls.hh
+ *         Project:  Aghermann
+ *          Author:  Andrei Zavada <johnhommer at gmail.com>
+ * Initial version:  2013-09-07
+ *
+ *         Purpose:  
+ *
+ *         License:  GPL
+ */
+
+#ifndef SIGPROC_PATTERNS_FORWARD_DECLS_H_
+#define SIGPROC_PATTERNS_FORWARD_DECLS_H_
+
+namespace pattern {
+
+template <typename T> class CMatch;
+template <typename T> struct SPatternPPack;
+template <typename T> class CPatternTool;
+template <typename T> struct SPattern;
+
+} // namespace pattern
+
+
+#endif
+
+// Local Variables:
+// Mode: c++
+// indent-tabs-mode: nil
+// tab-width: 8
+// c-basic-offset: 8
+// End:
diff --git a/upstream/src/aghermann/patterns/patterns.hh b/upstream/src/aghermann/patterns/patterns.hh
index 922b44f..87b512d 100644
--- a/upstream/src/aghermann/patterns/patterns.hh
+++ b/upstream/src/aghermann/patterns/patterns.hh
@@ -47,16 +47,16 @@ class CMatch
 
 template <typename T>
 struct SPatternPPack {
-        double        env_scope;
-        double        bwf_ffrom,
+        double  env_scope;
+        double  bwf_ffrom,
                 bwf_fupto;
-        int        bwf_order;
-        double         dzcdf_step,
+        int     bwf_order;
+        double  dzcdf_step,
                 dzcdf_sigma;
-        int        dzcdf_smooth;
+        int     dzcdf_smooth;
         bool operator==( const SPatternPPack<T>& rv) const // cannot be defaulted!
                 {
-                        return        env_scope == rv.env_scope &&
+                        return  env_scope == rv.env_scope &&
                                 bwf_ffrom == rv.bwf_ffrom &&
                                 bwf_fupto == rv.bwf_fupto &&
                                 bwf_order == rv.bwf_order &&
@@ -66,7 +66,7 @@ struct SPatternPPack {
                 }
         bool sane() const
                 {
-                        return        env_scope > 0. && env_scope <= 1. &&
+                        return  env_scope > 0. && env_scope <= 1. &&
                                 bwf_ffrom < bwf_fupto &&
                                 bwf_ffrom >= 0. && bwf_ffrom <= 50. &&
                                 bwf_fupto >= 0. && bwf_fupto <= 50. &&
@@ -136,12 +136,12 @@ class CPatternTool
         sigproc::SCachedDzcdf<T>
                 pdzcdf;
 
-        size_t        samplerate;
-        size_t        ctx_before,
+        size_t  samplerate;
+        size_t  ctx_before,
                 ctx_after;
 
         T        crit_linear_unity;
-        double        crit_dzcdf_unity;
+        double  crit_dzcdf_unity;
 };
 
 
@@ -154,17 +154,17 @@ extern const char*
 
 template <typename T>
 struct SPattern {
-        string        name,
+        string  name,
                 path;
 
-        TOrigin        origin;
+        TOrigin origin;
 
-        bool        saved:1;
+        bool    saved:1;
 
         valarray<T>
                 thing;
-        size_t        samplerate;
-        size_t        context_before,
+        size_t  samplerate;
+        size_t  context_before,
                 context_after;
         static const size_t
                 context_pad = 100;
diff --git a/upstream/src/aghermann/ui/mw/mainmenu_cb.cc b/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
index b5689db..e0d0a2f 100644
--- a/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
+++ b/upstream/src/aghermann/ui/mw/mainmenu_cb.cc
@@ -12,6 +12,7 @@
 #include "aghermann/ui/misc.hh"
 #include "aghermann/ui/sm/sm.hh"
 #include "aghermann/ui/sf/sf.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "mw.hh"
 #include "mw_cb.hh"
 
diff --git a/upstream/src/aghermann/ui/sf/Makefile.am b/upstream/src/aghermann/ui/sf/Makefile.am
index b41a578..8f42c13 100644
--- a/upstream/src/aghermann/ui/sf/Makefile.am
+++ b/upstream/src/aghermann/ui/sf/Makefile.am
@@ -9,6 +9,7 @@ noinst_LIBRARIES := liba.a
 
 liba_a_SOURCES := \
 	channel.cc \
+	channel.hh \
 	construct.cc \
 	controls_cb.cc \
 	hypnogram.cc \
diff --git a/upstream/src/aghermann/ui/sf/channel.cc b/upstream/src/aghermann/ui/sf/channel.cc
index 6cc501a..0828b52 100644
--- a/upstream/src/aghermann/ui/sf/channel.cc
+++ b/upstream/src/aghermann/ui/sf/channel.cc
@@ -17,7 +17,9 @@
 #include "libsigproc/exstrom.hh"
 #include "libmetrics/bands.hh"
 #include "aghermann/ui/globals.hh"
+#include "aghermann/ui/mw/mw.hh"
 
+#include "channel.hh"
 #include "sf.hh"
 #include "d/artifacts.hh"
 #include "d/patterns.hh"
diff --git a/upstream/src/aghermann/ui/sf/channel.hh b/upstream/src/aghermann/ui/sf/channel.hh
new file mode 100644
index 0000000..1a581ca
--- /dev/null
+++ b/upstream/src/aghermann/ui/sf/channel.hh
@@ -0,0 +1,374 @@
+/*
+ *       File name:  aghermann/ui/sf/channel.hh
+ *         Project:  Aghermann
+ *          Author:  Andrei Zavada <johnhommer at gmail.com>
+ * Initial version:  2013-09-07
+ *
+ *         Purpose:  scoring facility channel representation
+ *
+ *         License:  GPL
+ */
+
+#ifndef AGH_AGHERMANN_UI_SF_CHANNEL_H_
+#define AGH_AGHERMANN_UI_SF_CHANNEL_H_
+
+#include <forward_list>
+#include <list>
+#include <string>
+
+#include <cairo/cairo.h>
+
+#include "common/alg.hh"
+#include "common/config-validate.hh"
+#include "libsigproc/sigproc.hh"
+#include "libsigfile/forward-decls.hh"
+#include "libmetrics/mc-artifacts.hh"
+#include "libmetrics/page-metrics-base.hh"
+#include "libmetrics/bands.hh"
+#include "aghermann/patterns/forward-decls.hh"
+#include "aghermann/expdesign/forward-decls.hh"
+#include "aghermann/expdesign/recording.hh"
+// #include "aghermann/ui/ui++.hh"
+
+#include "sf.hh"
+
+#if HAVE_CONFIG_H && !defined(VERSION)
+#  include "config.h"
+#endif
+
+
+using namespace std;
+
+namespace agh {
+namespace ui {
+
+struct SScoringFacility::SChannel {
+
+        DELETE_DEFAULT_METHODS (SChannel);
+
+        bool operator==( const string&) const;
+        bool operator==( const SChannel&) const;
+
+        agh::CRecording&
+                crecording;
+
+        // shortcuts
+        int
+        h() const
+                { return crecording.h(); }
+        const sigfile::SChannel&
+        schannel() const
+                { return crecording.F().channel_by_id( h()); }
+        const char*
+        name() const
+                { return schannel().name(); }
+
+        sigfile::SFilterPack&
+                filters;
+        list<sigfile::SAnnotation>&
+                annotations;
+        sigfile::SArtifacts&
+                artifacts;
+
+        SScoringFacility&
+                _p;
+
+      // signal waveforms, cached here
+        valarray<TFloat>
+                signal_original,
+                signal_filtered,
+                signal_reconstituted;  // while it's hot
+        void get_signal_original();
+        void get_signal_filtered();
+
+      // filters
+        bool have_low_pass() const;
+        bool have_high_pass() const;
+        bool have_notch_filter() const;
+        size_t n_samples() const;
+        size_t samplerate() const;
+
+      // artifacts
+        float percent_dirty;
+        float calculate_dirty_percent();
+        void detect_artifacts( const metrics::mc::SArtifactDetectionPP&);
+        pair<double, double>
+        mark_flat_regions_as_artifacts( double at_least_this_long, double pad);
+
+      // annotations
+        list<sigfile::SAnnotation*>
+        in_annotations( double time) const;
+
+      // signal metrics
+	static pattern::SPatternPPack<TFloat>
+                pattern_params;
+        sigproc::SCachedLowPassCourse<TFloat>
+                signal_lowpass;
+        sigproc::SCachedBandPassCourse<TFloat>
+                signal_bandpass;
+        sigproc::SCachedEnvelope<TFloat>
+                signal_envelope;
+        sigproc::SCachedDzcdf<TFloat>
+                signal_dzcdf;
+        void
+        drop_cached_signal_properties()
+                {
+                        signal_lowpass.drop();
+                        signal_bandpass.drop();
+                        signal_envelope.drop();
+                        signal_dzcdf.drop();
+                }
+
+      // profiles
+        // psd
+        struct SProfilePSD {
+                valarray<TFloat>
+                        course;
+                double  from, upto;
+                double  display_scale; // saved via libconfig, requiring it to be double
+                array<valarray<TFloat>, metrics::TBand::TBand_total>
+                        course_in_bands;
+                size_t  focused_band,
+                        uppermost_band;
+        };
+        void get_psd_course();
+        void get_psd_in_bands();
+        SProfilePSD
+                psd;
+        // swu
+        struct SProfileSWU {
+                valarray<TFloat>
+                        course;
+                double  f0;
+                double  display_scale;
+        };
+        void get_swu_course();
+        SProfileSWU
+                swu;
+        // mc
+        struct SProfileMC {
+                valarray<TFloat>
+                        course;
+                double  display_scale;
+                double  f0;
+        };
+        SProfileMC
+                mc;
+        void get_mc_course();
+
+        tuple<metrics::TType, valarray<TFloat>&>
+        which_profile( metrics::TType);
+
+        void update_profile_display_scales();
+
+      // spectrum
+        valarray<TFloat>
+                spectrum;  // per page, is volatile
+        float   spectrum_upper_freq;
+        unsigned
+                spectrum_bins,
+                last_spectrum_bin;
+        void get_spectrum(); // at current page
+        void get_spectrum( size_t p);
+
+      // raw profile
+        valarray<TFloat>
+                raw_profile;
+        void get_raw_profile();
+
+      // region
+        void mark_region_as_artifact( bool do_mark);
+        void mark_region_as_annotation( const string&, sigfile::SAnnotation::TType);
+        void mark_region_as_pattern();
+
+      // ctor, dtor
+        SChannel( agh::CRecording& r, SScoringFacility&, size_t y, int seq);
+
+        double  zeroy;
+        bool operator<( const SChannel&) const;
+
+        double  signal_display_scale;
+
+        // saved flags
+        bool    hidden,
+                draw_zeroline,
+                draw_original_signal,
+                draw_filtered_signal,
+                zeromean_original,
+                zeromean_filtered,
+                draw_psd,
+                draw_swu,
+                draw_mc,
+                draw_emg,
+                draw_psd_bands,
+                autoscale_profile,
+                draw_spectrum,
+                resample_signal,
+                resample_power,
+                draw_selection_course,
+                draw_selection_envelope,
+                draw_selection_dzcdf,
+                draw_phasic_spindle,
+                draw_phasic_Kcomplex,
+                draw_phasic_eyeblink;
+        bool    discard_marked,
+                apply_reconstituted;
+
+        forward_list<agh::confval::SValidator<bool>>    config_keys_b;
+        forward_list<agh::confval::SValidator<int>>     config_keys_d;
+        forward_list<agh::confval::SValidator<double>>  config_keys_g;
+
+        void update_channel_menu_items( double x);
+        void update_power_menu_items();
+        void selectively_enable_selection_menu_items();
+
+      // selection and marquee
+        float   marquee_mstart,
+                marquee_mend,        // in terms of event->x
+                marquee_start,
+                marquee_end;         // set on button_release
+        double  selection_start_time,
+                selection_end_time;  // in seconds
+        size_t  selection_start,
+                selection_end;       // in samples
+        TFloat  selection_SS,
+                selection_SU;
+        size_t marquee_to_selection();
+        void put_selection( size_t a, size_t e);
+        void put_selection( double a, double e);
+    private:
+        void _put_selection();
+
+    public:
+        float spp() const;
+        float fine_line() const;
+        int sample_at_click( double) const;
+
+        GtkMenuItem
+                *menu_item_when_hidden;
+
+      // comprehensive draw
+        void draw_for_montage( const string& fname, int width, int height); // to a file
+        void draw_for_montage( cairo_t*); // to montage
+
+    protected:
+        void draw_page( cairo_t*, int wd, float zeroy, // writers to an svg file override zeroy (with 0)
+                        bool draw_marquee) const;
+        void draw_overlays( cairo_t*, int wd, float zeroy) const;
+
+      // strictly draw the signal waveform bare
+      // (also used as such in some child dialogs)
+        void draw_signal_original( size_t width, int vdisp, cairo_t *cr) const
+                {
+                        draw_signal( signal_original, width, vdisp, cr);
+                }
+        void draw_signal_filtered( size_t width, int vdisp, cairo_t *cr) const
+                {
+                        draw_signal( signal_filtered, width, vdisp, cr);
+                }
+        friend class SScoringFacility;
+        void draw_signal_reconstituted( size_t width, int vdisp, cairo_t *cr) const
+                {
+                        draw_signal( signal_reconstituted, width, vdisp, cr);
+                }
+      // generic draw_signal wrapper
+        void draw_signal( const valarray<TFloat>& signal,
+                          size_t width, int vdisp, cairo_t *cr) const;
+};
+
+inline bool
+SScoringFacility::SChannel::
+operator==( const string& _name) const
+{
+        return _name == name();
+}
+// inline bool
+// SScoringFacility::SChannel::
+// operator==( const SChannel& rv) const
+// {
+//         return name == rv.name;
+// }
+
+
+inline bool
+SScoringFacility::SChannel::
+have_low_pass() const
+{
+        return isfinite(filters.low_pass_cutoff)
+                && filters.low_pass_cutoff > 0.
+                && filters.low_pass_order > 0;
+}
+
+inline bool
+SScoringFacility::SChannel::
+have_high_pass() const
+{
+        return isfinite(filters.high_pass_cutoff)
+                && filters.high_pass_cutoff > 0.
+                && filters.high_pass_order > 0;
+}
+inline bool
+SScoringFacility::SChannel::
+have_notch_filter() const
+{
+        return filters.notch_filter != sigfile::SFilterPack::TNotchFilter::none;
+}
+
+inline size_t
+SScoringFacility::SChannel::
+n_samples() const
+{
+        return signal_filtered.size();
+}
+
+
+inline bool
+SScoringFacility::SChannel::
+operator<( const SChannel& rv) const
+{
+        return zeroy < rv.zeroy;
+}
+
+
+inline float
+SScoringFacility::SChannel::
+spp() const
+{
+        return (float)samplerate() * _p.vpagesize() / _p.da_wd;
+}
+inline float
+SScoringFacility::SChannel::
+fine_line() const
+{
+        return ((not resample_signal) and spp() > 1.)
+                ? agh::alg::value_within( .6 / (spp() + .2), .1, 3.)
+                : .6;
+}
+inline int
+SScoringFacility::SChannel::
+sample_at_click( double x) const
+{
+        return _p.time_at_click( x) * samplerate();
+}
+
+
+
+
+inline size_t
+SScoringFacility::SChannel::
+samplerate() const
+{
+        return crecording.F().samplerate(h());
+}
+
+}
+} // namespace agh::ui
+
+#endif
+
+// Local Variables:
+// Mode: c++
+// indent-tabs-mode: nil
+// tab-width: 8
+// c-basic-offset: 8
+// End:
diff --git a/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh b/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh
index 72a824f..9347851 100644
--- a/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh
+++ b/upstream/src/aghermann/ui/sf/d/artifacts-simple.hh
@@ -47,7 +47,7 @@ struct SScoringFacility::SArtifactsSimpleDialog
 
         SArtifactsSimpleDialog (SScoringFacility&);
 
-        double        min_size,
+        double  min_size,
                 pad;
 
         SUIVarCollection
diff --git a/upstream/src/aghermann/ui/sf/d/artifacts.cc b/upstream/src/aghermann/ui/sf/d/artifacts.cc
index 8e1c173..e39a119 100644
--- a/upstream/src/aghermann/ui/sf/d/artifacts.cc
+++ b/upstream/src/aghermann/ui/sf/d/artifacts.cc
@@ -9,6 +9,7 @@
  *         License:  GPL
  */
 
+#include "aghermann/ui/mw/mw.hh"
 #include "artifacts.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc b/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc
index 5d02c47..1f5472b 100644
--- a/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/artifacts_cb.cc
@@ -10,7 +10,8 @@
  */
 
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "artifacts.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/filters-construct.cc b/upstream/src/aghermann/ui/sf/d/filters-construct.cc
index 6a565fc..05a6ecb 100644
--- a/upstream/src/aghermann/ui/sf/d/filters-construct.cc
+++ b/upstream/src/aghermann/ui/sf/d/filters-construct.cc
@@ -12,7 +12,7 @@
 #include <stdexcept>
 
 #include "aghermann/ui/ui.hh"
-
+#include "aghermann/ui/mw/mw.hh"
 #include "filters.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/filters.cc b/upstream/src/aghermann/ui/sf/d/filters.cc
index 2cdc425..f894ae4 100644
--- a/upstream/src/aghermann/ui/sf/d/filters.cc
+++ b/upstream/src/aghermann/ui/sf/d/filters.cc
@@ -10,6 +10,7 @@
  */
 
 
+#include "aghermann/ui/mw/mw.hh"
 #include "filters.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/filters_cb.cc b/upstream/src/aghermann/ui/sf/d/filters_cb.cc
index 816c8ac..1934996 100644
--- a/upstream/src/aghermann/ui/sf/d/filters_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/filters_cb.cc
@@ -11,7 +11,7 @@
 
 
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
 #include "filters.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-construct.cc b/upstream/src/aghermann/ui/sf/d/patterns-construct.cc
index 7794ca2..3143c2a 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-construct.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-construct.cc
@@ -11,6 +11,7 @@
 
 #include <stdexcept>
 
+#include "aghermann/ui/sf/channel.hh"
 #include "patterns.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-draw.cc b/upstream/src/aghermann/ui/sf/d/patterns-draw.cc
index fc40f3f..88597d1 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-draw.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-draw.cc
@@ -10,7 +10,8 @@
  */
 
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "patterns.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc b/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
index 1b06b24..277db4a 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-profiles.cc
@@ -12,7 +12,8 @@
 #include <tuple>
 
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "patterns.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc b/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
index 35e7460..3b05808 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns-profiles_cb.cc
@@ -12,6 +12,7 @@
 #include <sys/time.h>
 
 #include "aghermann/ui/misc.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "patterns.hh"
 
 
diff --git a/upstream/src/aghermann/ui/sf/d/patterns.cc b/upstream/src/aghermann/ui/sf/d/patterns.cc
index 090d013..090980c 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns.cc
@@ -10,7 +10,7 @@
  */
 
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/sf/channel.hh"
 #include "patterns.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/patterns_cb.cc b/upstream/src/aghermann/ui/sf/d/patterns_cb.cc
index bfc21c3..96b6023 100644
--- a/upstream/src/aghermann/ui/sf/d/patterns_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/patterns_cb.cc
@@ -12,7 +12,8 @@
 #include <sys/time.h>
 
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "patterns.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc b/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc
index a9eb0b3..51e23a1 100644
--- a/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc
+++ b/upstream/src/aghermann/ui/sf/d/phasediff-construct.cc
@@ -10,7 +10,7 @@
  */
 
 #include <stdexcept>
-
+#include "aghermann/ui/sf/channel.hh"
 #include "phasediff.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/phasediff.cc b/upstream/src/aghermann/ui/sf/d/phasediff.cc
index 899cc74..424f813 100644
--- a/upstream/src/aghermann/ui/sf/d/phasediff.cc
+++ b/upstream/src/aghermann/ui/sf/d/phasediff.cc
@@ -11,7 +11,8 @@
 
 #include "common/lang.hh"
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "phasediff.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc b/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc
index 3b2e271..16e76fc 100644
--- a/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc
+++ b/upstream/src/aghermann/ui/sf/d/phasediff_cb.cc
@@ -11,7 +11,8 @@
 
 #include "common/lang.hh"
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "aghermann/ui/sf/channel.hh"
 #include "phasediff.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/hypnogram.cc b/upstream/src/aghermann/ui/sf/hypnogram.cc
index a03c85f..e7ec6a6 100644
--- a/upstream/src/aghermann/ui/sf/hypnogram.cc
+++ b/upstream/src/aghermann/ui/sf/hypnogram.cc
@@ -14,6 +14,8 @@
 
 #include <cairo/cairo.h>
 
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
 #include "sf.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/ica.cc b/upstream/src/aghermann/ui/sf/ica.cc
index 0ddbad3..adc5526 100644
--- a/upstream/src/aghermann/ui/sf/ica.cc
+++ b/upstream/src/aghermann/ui/sf/ica.cc
@@ -15,6 +15,7 @@
 #include "aghermann/ica/ica.hh"
 #include "aghermann/ui/misc.hh"
 
+#include "channel.hh"
 #include "sf.hh"
 #include "sf_cb.hh"
 
diff --git a/upstream/src/aghermann/ui/sf/mainmenu_cb.cc b/upstream/src/aghermann/ui/sf/mainmenu_cb.cc
index 4acd9cf..8171150 100644
--- a/upstream/src/aghermann/ui/sf/mainmenu_cb.cc
+++ b/upstream/src/aghermann/ui/sf/mainmenu_cb.cc
@@ -9,6 +9,8 @@
  *         License:  GPL
  */
 
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
 #include "sf.hh"
 #include "d/patterns.hh"
 #include "d/phasediff.hh"
diff --git a/upstream/src/aghermann/ui/sf/montage-overlays.cc b/upstream/src/aghermann/ui/sf/montage-overlays.cc
index 3572dca..8b184a7 100644
--- a/upstream/src/aghermann/ui/sf/montage-overlays.cc
+++ b/upstream/src/aghermann/ui/sf/montage-overlays.cc
@@ -14,7 +14,8 @@
 #include "common/lang.hh"
 #include "libmetrics/bands.hh"
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
 #include "sf.hh"
 
 using namespace std;
diff --git a/upstream/src/aghermann/ui/sf/montage.cc b/upstream/src/aghermann/ui/sf/montage.cc
index 072d1ef..e4fab03 100644
--- a/upstream/src/aghermann/ui/sf/montage.cc
+++ b/upstream/src/aghermann/ui/sf/montage.cc
@@ -13,7 +13,8 @@
 
 #include "common/lang.hh"
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
 #include "sf.hh"
 #include "d/patterns.hh"
 
diff --git a/upstream/src/aghermann/ui/sf/montage_cb.cc b/upstream/src/aghermann/ui/sf/montage_cb.cc
index d52b70a..bdf9475 100644
--- a/upstream/src/aghermann/ui/sf/montage_cb.cc
+++ b/upstream/src/aghermann/ui/sf/montage_cb.cc
@@ -13,7 +13,8 @@
 #include <cairo/cairo.h>
 
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
 #include "sf.hh"
 #include "sf_cb.hh"
 #include "d/artifacts.hh"
diff --git a/upstream/src/aghermann/ui/sf/sf.cc b/upstream/src/aghermann/ui/sf/sf.cc
index c5021a3..861ff73 100644
--- a/upstream/src/aghermann/ui/sf/sf.cc
+++ b/upstream/src/aghermann/ui/sf/sf.cc
@@ -15,8 +15,10 @@
 #include "common/config-validate.hh"
 #include "common/fs.hh"
 #include "libmetrics/bands.hh"
+#include "aghermann/expdesign/subject.hh"
 #include "aghermann/ui/misc.hh"
-
+#include "aghermann/ui/mw/mw.hh"
+#include "channel.hh"
 #include "sf.hh"
 #include "sf_cb.hh"
 #include "d/artifacts.hh"
@@ -27,7 +29,7 @@
 using namespace std;
 using namespace agh::ui;
 
-size_t        SScoringFacility::IntersignalSpace = 120,
+size_t  SScoringFacility::IntersignalSpace = 120,
         SScoringFacility::HypnogramHeight  =  40,
         SScoringFacility::EMGProfileHeight =  30;
 
@@ -351,6 +353,22 @@ channel_idx( SChannel* h) const
 	return -1;
 }
 
+time_t
+SScoringFacility::
+start_time() const
+{
+        return channels.front().crecording.F().start_time();
+}
+
+
+
+size_t
+SScoringFacility::
+pagesize() const
+{
+        return _p.pagesize();
+}
+
 
 
 
diff --git a/upstream/src/aghermann/ui/sf/sf.hh b/upstream/src/aghermann/ui/sf/sf.hh
index 519d560..f698962 100644
--- a/upstream/src/aghermann/ui/sf/sf.hh
+++ b/upstream/src/aghermann/ui/sf/sf.hh
@@ -12,23 +12,23 @@
 #ifndef AGH_AGHERMANN_UI_SF_SF_H_
 #define AGH_AGHERMANN_UI_SF_SF_H_
 
-#include <map>
+#include <forward_list>
 #include <list>
+#include <string>
 
 #include <cairo/cairo.h>
-#include <gtk/gtk.h>
 
 #include "common/alg.hh"
 #include "common/config-validate.hh"
-#include "libsigproc/winfun.hh"
-#include "libsigproc/sigproc.hh"
-#include "libmetrics/mc-artifacts.hh"
-#include "aghermann/patterns/patterns.hh"
+//#include "libsigproc/winfun.hh"
+//#include "libsigproc/sigproc.hh"
+#include "libsigfile/page.hh"
+#include "libsigfile/forward-decls.hh"
 #include "aghermann/expdesign/forward-decls.hh"
 #include "aghermann/ica/ica.hh"
 #include "aghermann/ui/globals.hh"
 #include "aghermann/ui/ui++.hh"
-#include "aghermann/ui/mw/mw.hh"
+//#include "aghermann/ui/mw/mw.hh"
 
 #include "widgets.hh"
 
@@ -42,6 +42,8 @@ using namespace std;
 namespace agh {
 namespace ui {
 
+class SExpDesignUI;
+
 class SScoringFacility
   : public SScoringFacilityWidgets {
 
@@ -70,239 +72,7 @@ class SScoringFacility
         const string&   session()  const { return _session;  }
 
       // channels
-        struct SChannel {
-
-                DELETE_DEFAULT_METHODS (SChannel);
-
-                bool operator==( const string&) const;
-                bool operator==( const SChannel&) const;
-
-                agh::CRecording&
-                        crecording;
-
-                // shortcuts
-                int
-                h() const
-                        { return crecording.h(); }
-                const sigfile::SChannel&
-                schannel() const
-                        { return crecording.F().channel_by_id( h()); }
-                const char*
-                name() const
-                        { return schannel().name(); }
-
-                sigfile::SFilterPack&
-                        filters;
-                list<sigfile::SAnnotation>&
-                        annotations;
-                sigfile::SArtifacts&
-                        artifacts;
-
-                SScoringFacility&
-                        _p;
-
-              // signal waveforms, cached here
-                valarray<TFloat>
-                        signal_original,
-                        signal_filtered,
-                        signal_reconstituted;  // while it's hot
-                void get_signal_original();
-                void get_signal_filtered();
-
-              // filters
-                bool have_low_pass() const;
-                bool have_high_pass() const;
-                bool have_notch_filter() const;
-                size_t n_samples() const;
-                size_t samplerate() const;
-
-              // artifacts
-                float percent_dirty;
-                float calculate_dirty_percent();
-                void detect_artifacts( const metrics::mc::SArtifactDetectionPP&);
-                pair<double, double>
-                mark_flat_regions_as_artifacts( double at_least_this_long, double pad);
-
-              // annotations
-                list<sigfile::SAnnotation*>
-                in_annotations( double time) const;
-
-              // signal metrics
-		static pattern::SPatternPPack<TFloat>
-                        pattern_params;
-                sigproc::SCachedLowPassCourse<TFloat>
-                        signal_lowpass;
-                sigproc::SCachedBandPassCourse<TFloat>
-                        signal_bandpass;
-                sigproc::SCachedEnvelope<TFloat>
-                        signal_envelope;
-                sigproc::SCachedDzcdf<TFloat>
-                        signal_dzcdf;
-                void
-                drop_cached_signal_properties()
-                        {
-                                signal_lowpass.drop();
-                                signal_bandpass.drop();
-                                signal_envelope.drop();
-                                signal_dzcdf.drop();
-                        }
-
-              // profiles
-                // psd
-                struct SProfilePSD {
-                        valarray<TFloat>
-                                course;
-                        double  from, upto;
-                        double  display_scale; // saved via libconfig, requiring it to be double
-                        array<valarray<TFloat>, metrics::TBand::TBand_total>
-                                course_in_bands;
-                        size_t  focused_band,
-                                uppermost_band;
-                };
-                void get_psd_course();
-                void get_psd_in_bands();
-                SProfilePSD
-                        psd;
-                // swu
-                struct SProfileSWU {
-                        valarray<TFloat>
-                                course;
-                        double  f0;
-                        double  display_scale;
-                };
-                void get_swu_course();
-                SProfileSWU
-                        swu;
-                // mc
-                struct SProfileMC {
-                        valarray<TFloat>
-                                course;
-                        double  display_scale;
-                        double  f0;
-                };
-                SProfileMC
-                        mc;
-                void get_mc_course();
-
-                tuple<metrics::TType, valarray<TFloat>&>
-                which_profile( metrics::TType);
-
-                void update_profile_display_scales();
-
-              // spectrum
-                valarray<TFloat>
-                        spectrum;  // per page, is volatile
-                float   spectrum_upper_freq;
-                unsigned
-                        spectrum_bins,
-                        last_spectrum_bin;
-                void get_spectrum(); // at current page
-                void get_spectrum( size_t p);
-
-              // raw profile
-                valarray<TFloat>
-                        raw_profile;
-                void get_raw_profile();
-
-              // region
-                void mark_region_as_artifact( bool do_mark);
-                void mark_region_as_annotation( const string&, sigfile::SAnnotation::TType);
-                void mark_region_as_pattern();
-
-              // ctor, dtor
-                SChannel( agh::CRecording& r, SScoringFacility&, size_t y, int seq);
-
-                double  zeroy;
-                bool operator<( const SChannel&) const;
-
-                double  signal_display_scale;
-
-                // saved flags
-                bool    hidden,
-                        draw_zeroline,
-                        draw_original_signal,
-                        draw_filtered_signal,
-                        zeromean_original,
-                        zeromean_filtered,
-                        draw_psd,
-                        draw_swu,
-                        draw_mc,
-                        draw_emg,
-                        draw_psd_bands,
-                        autoscale_profile,
-                        draw_spectrum,
-                        resample_signal,
-                        resample_power,
-                        draw_selection_course,
-                        draw_selection_envelope,
-                        draw_selection_dzcdf,
-                        draw_phasic_spindle,
-                        draw_phasic_Kcomplex,
-                        draw_phasic_eyeblink;
-                bool    discard_marked,
-                        apply_reconstituted;
-
-                forward_list<agh::confval::SValidator<bool>>    config_keys_b;
-                forward_list<agh::confval::SValidator<int>>     config_keys_d;
-                forward_list<agh::confval::SValidator<double>>  config_keys_g;
-
-                void update_channel_menu_items( double x);
-                void update_power_menu_items();
-                void selectively_enable_selection_menu_items();
-
-              // selection and marquee
-                float   marquee_mstart,
-                        marquee_mend,        // in terms of event->x
-                        marquee_start,
-                        marquee_end;         // set on button_release
-                double  selection_start_time,
-                        selection_end_time;  // in seconds
-                size_t  selection_start,
-                        selection_end;       // in samples
-                TFloat  selection_SS,
-                        selection_SU;
-                size_t marquee_to_selection();
-                void put_selection( size_t a, size_t e);
-                void put_selection( double a, double e);
-            private:
-                void _put_selection();
-
-            public:
-                float spp() const;
-                float fine_line() const;
-                int sample_at_click( double) const;
-
-                GtkMenuItem
-                        *menu_item_when_hidden;
-
-              // comprehensive draw
-                void draw_for_montage( const string& fname, int width, int height); // to a file
-                void draw_for_montage( cairo_t*); // to montage
-
-            protected:
-                void draw_page( cairo_t*, int wd, float zeroy, // writers to an svg file override zeroy (with 0)
-                                bool draw_marquee) const;
-                void draw_overlays( cairo_t*, int wd, float zeroy) const;
-
-              // strictly draw the signal waveform bare
-              // (also used as such in some child dialogs)
-                void draw_signal_original( size_t width, int vdisp, cairo_t *cr) const
-                        {
-                                draw_signal( signal_original, width, vdisp, cr);
-                        }
-                void draw_signal_filtered( size_t width, int vdisp, cairo_t *cr) const
-                        {
-                                draw_signal( signal_filtered, width, vdisp, cr);
-                        }
-                friend class SScoringFacility;
-                void draw_signal_reconstituted( size_t width, int vdisp, cairo_t *cr) const
-                        {
-                                draw_signal( signal_reconstituted, width, vdisp, cr);
-                        }
-              // generic draw_signal wrapper
-                void draw_signal( const valarray<TFloat>& signal,
-                                  size_t width, int vdisp, cairo_t *cr) const;
-        };
+        struct SChannel;
         list<SChannel>
                 channels;
         size_t  n_eeg_channels;
@@ -326,8 +96,7 @@ class SScoringFacility
 
       // timeline
         time_t
-        start_time() const
-                { return channels.front().crecording.F().start_time(); }
+        start_time() const;
 
         vector<char>
                 hypnogram;
@@ -392,9 +161,7 @@ class SScoringFacility
         bool page_has_annotations( size_t, const SChannel&) const;
 
       // pagesize
-        size_t
-        pagesize() const
-                { return _p.pagesize(); }
+        size_t pagesize() const;
 
         static const array<unsigned, 9>
                 DisplayPageSizeValues;
@@ -539,6 +306,10 @@ class SScoringFacility
         SArtifactsSimpleDialog&
         artifacts_simple_d();
 
+        struct SRK1968Dialog;
+        SRK1968Dialog&
+        rk1968_d();
+
     private:
         SPatternsDialog
                 *_patterns_d;
@@ -550,6 +321,8 @@ class SScoringFacility
                 *_artifacts_d;
         SArtifactsSimpleDialog
                 *_artifacts_simple_d;
+        SRK1968Dialog
+                *_rk1968_d;
 
     public:
       // menu support
@@ -585,92 +358,6 @@ class SScoringFacility
 };
 
 
-inline bool
-SScoringFacility::SChannel::
-operator==( const string& _name) const
-{
-        return _name == name();
-}
-// inline bool
-// SScoringFacility::SChannel::
-// operator==( const SChannel& rv) const
-// {
-//         return name == rv.name;
-// }
-
-
-inline bool
-SScoringFacility::SChannel::
-have_low_pass() const
-{
-        return isfinite(filters.low_pass_cutoff)
-                && filters.low_pass_cutoff > 0.
-                && filters.low_pass_order > 0;
-}
-
-inline bool
-SScoringFacility::SChannel::
-have_high_pass() const
-{
-        return isfinite(filters.high_pass_cutoff)
-                && filters.high_pass_cutoff > 0.
-                && filters.high_pass_order > 0;
-}
-inline bool
-SScoringFacility::SChannel::
-have_notch_filter() const
-{
-        return filters.notch_filter != sigfile::SFilterPack::TNotchFilter::none;
-}
-
-inline size_t
-SScoringFacility::SChannel::
-n_samples() const
-{
-        return signal_filtered.size();
-}
-
-
-inline bool
-SScoringFacility::SChannel::
-operator<( const SChannel& rv) const
-{
-        return zeroy < rv.zeroy;
-}
-
-
-inline float
-SScoringFacility::SChannel::
-spp() const
-{
-        return (float)samplerate() * _p.vpagesize() / _p.da_wd;
-}
-inline float
-SScoringFacility::SChannel::
-fine_line() const
-{
-        return ((not resample_signal) and spp() > 1.)
-                ? agh::alg::value_within( .6 / (spp() + .2), .1, 3.)
-                : .6;
-}
-inline int
-SScoringFacility::SChannel::
-sample_at_click( double x) const
-{
-        return _p.time_at_click( x) * samplerate();
-}
-
-
-
-
-inline size_t
-SScoringFacility::SChannel::
-samplerate() const
-{
-        return crecording.F().samplerate(h());
-}
-
-
 
 inline size_t
 SScoringFacility::
diff --git a/upstream/src/aghermann/ui/sf/sf_cb.cc b/upstream/src/aghermann/ui/sf/sf_cb.cc
index 18ae60b..ce8ce42 100644
--- a/upstream/src/aghermann/ui/sf/sf_cb.cc
+++ b/upstream/src/aghermann/ui/sf/sf_cb.cc
@@ -9,6 +9,7 @@
  *         License:  GPL
  */
 
+#include "aghermann/ui/mw/mw.hh"
 #include "sf.hh"
 
 using namespace std;
diff --git a/upstream/src/libsigfile/forward-decls.hh b/upstream/src/libsigfile/forward-decls.hh
index d325ed6..7c3c8dc 100644
--- a/upstream/src/libsigfile/forward-decls.hh
+++ b/upstream/src/libsigfile/forward-decls.hh
@@ -20,6 +20,10 @@ struct SPageWithSWA;
 struct SPageSimulated;
 
 struct SChannel;
+struct SArtifacts;
+struct SAnnotation;
+struct SFilterPack;
+
 class CSource;
 class CTypedSource;
 class CHypnogram;
diff --git a/upstream/src/libsigfile/source-base.hh b/upstream/src/libsigfile/source-base.hh
index 7edcfaf..34e688b 100644
--- a/upstream/src/libsigfile/source-base.hh
+++ b/upstream/src/libsigfile/source-base.hh
@@ -207,10 +207,13 @@ struct SFilterPack {
                         notch_filter = TNotchFilter::none;
                 }
 
-        double                low_pass_cutoff;
-        unsigned        low_pass_order;
-        double                high_pass_cutoff;
-        unsigned        high_pass_order;
+        double  low_pass_cutoff;
+        unsigned
+                low_pass_order;
+
+        double  high_pass_cutoff;
+        unsigned
+                high_pass_order;
 
         TNotchFilter
                 notch_filter;
@@ -266,7 +269,7 @@ class CSource {
                         //         load_ancillary_files();
                         /// defer until, at least, n_channels is known
                 }
-        CSource( CSource&&);
+        CSource (CSource&&);
         virtual ~CSource()
                 {
                         // if ( not (_flags & no_ancillary_files) )

-- 
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/aghermann.git



More information about the debian-med-commit mailing list