r7061: initial property settings
[ctsim.git] / include / filter.h
index ca6e67b0314e405d91bbfbf8711bd2353a37f78e..48d13a0c03dd2a945e0aafd511f96fadb6ca8a7f 100644 (file)
@@ -7,9 +7,9 @@
 **     Date Started: June 2000
 **
 **  This is part of the CTSim program
-**  Copyright (C) 1983-2000 Kevin Rosenberg
+**  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: filter.h,v 1.22 2000/12/16 06:12:47 kevin Exp $
+**  $Id$
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
@@ -53,11 +53,13 @@ class SignalFilter {
     static const int FILTER_ABS_BANDLIMIT;     // filter times |x|
     static const int FILTER_ABS_SINC;
     static const int FILTER_ABS_G_HAMMING;
+    static const int FILTER_ABS_HANNING;
     static const int FILTER_ABS_COSINE;
     static const int FILTER_SHEPP;
     static const int FILTER_BANDLIMIT;
     static const int FILTER_SINC;
     static const int FILTER_G_HAMMING;
+    static const int FILTER_HANNING;
     static const int FILTER_COSINE;
     static const int FILTER_TRIANGLE;
 
@@ -103,19 +105,27 @@ class SignalFilter {
     static void setNumIntegral(int nIntegral) {N_INTEGRAL = nIntegral;}
 
   static const int getFilterCount() {return s_iFilterCount;}
-  static const char** getFilterNameArray() {return s_aszFilterName;}
-  static const char** getFilterTitleArray() {return s_aszFilterTitle;}
+  static const int getReconstructFilterCount() { return s_iReconstructFilterCount; }
+
+  static const char* const* getFilterNameArray() {return s_aszFilterName;}
+  static const char* const* getFilterTitleArray() {return s_aszFilterTitle;}
   static int convertFilterNameToID (const char* const filterName);
   static const char* convertFilterIDToName (const int idFilter);
   static const char* convertFilterIDToTitle (const int idFilter);
 
   static const int getDomainCount() {return s_iDomainCount;}
-  static const char** getDomainNameArray() {return s_aszDomainName;}
-  static const char** getDomainTitleArray() {return s_aszDomainTitle;}
+  static const char* const* getDomainNameArray() {return s_aszDomainName;}
+  static const char* const* getDomainTitleArray() {return s_aszDomainTitle;}
   static int convertDomainNameToID (const char* const domainName);
   static const char* convertDomainIDToName (const int idDomain);
   static const char* convertDomainIDToTitle (const int idDomain);
 
+  static double sinc (double x)
+      { return (fabs(x) > F_EPSILON ? (sin (x) / x) : 1.0); }
+
+  static double sinc (double x, double mult)
+      { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
+
  private:
     int m_nFilterPoints;
     double m_dBandwidth;
@@ -133,11 +143,12 @@ class SignalFilter {
     bool m_fail;
     std::string m_failMessage;
 
-    static const char* s_aszFilterName[];
-    static const char* s_aszFilterTitle[];
+    static const char* const s_aszFilterName[];
+    static const char* const s_aszFilterTitle[];
     static const int s_iFilterCount;
-    static const char* s_aszDomainName[];
-    static const char* s_aszDomainTitle[];
+    static const int s_iReconstructFilterCount;
+    static const char* const s_aszDomainName[];
+    static const char* const s_aszDomainTitle[];
     static const int s_iDomainCount;
     static int N_INTEGRAL;
 
@@ -152,8 +163,6 @@ class SignalFilter {
     double spatialResponseAnalytic (double x) const;
     double frequencyResponse (double u) const;
 
-    static double sinc (double x, double mult)
-      { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
     static double integral_abscos (double u, double w)
     { return (fabs (u) > F_EPSILON ? (cos (u * w) - 1) / (u * u) + w / u * sin (u * w) : (w * w / 2)); }
 };