11 #include <boost/signals2.hpp>
12 #include <boost/algorithm/string/trim.hpp>
13 #include <boost/algorithm/string/split.hpp>
14 #include <boost/algorithm/string.hpp>
15 #include <boost/filesystem/operations.hpp>
29 bool GetPerformResample ()
const {
return _performResample; }
32 void SetPerformResample (
bool value) { _performResample = value; }
34 virtual void InitGPUMethods (
int programIndex) { }
35 virtual void OnWidthHeightChanged (
int width,
int height);
36 virtual void OnCalibrationFileChanged(
const char* fileName);
37 virtual int NoResample () {
return 0; }
38 virtual int Process () {
return 0; }
39 virtual int ApplyHanningAndFringe (
const float* inData,
size_t dataSize) {
return -1; }
45 bool _performResample;
52 std::vector<int> _li_fringe;
53 std::vector<SGL> _hann_win_fringe;
54 std::vector<SGL> _p_fringe;
55 std::vector<SGL> _calFringeArray;
56 std::map<SGL, int> _fringe_map;
58 static std::mutex _mutexResample;
59 static string _calibrationFileName;
60 static int _numResamplerObjects;
62 void SetCalibration ();
63 bool InitFringeCalibration (
int win,
int winPow);
66 void InitCalibration (
int height);
67 void ReleaseCalibration ();
69 virtual void InitStorage ();
70 virtual void ReleaseStorage ();
72 virtual void SetHanningArray (
float *hanning) { }
73 virtual void SetPFringeArray (
float *pFringe) { }
74 virtual void SetLIFringeArray (
int *liFringe) { }
77 bool _calibrationInitialized;
78 double _gaussianSigma;
80 boost::signals2::connection _widthHeightConnection;
81 boost::signals2::connection _calibrationFileConnection;
87 static bool LoadFileToVector(
int len,
const char* fname, std::vector<T> *data_out,
int &nItem)
89 if (FileUtils::FileExists(fname))
91 ifstream ifile(fname);
100 while (!ifile.getline(charline, 256).eof() && nItem < len)
102 strline.assign(charline);
103 boost::algorithm::trim(strline);
105 vector<string> words;
106 boost::algorithm::split(words, strline, boost::is_any_of(
"\t ,"));
109 if (words[0].compare(0, 1,
"#") == 0 || words.size() < 1) {
continue; }
111 for (
size_t y = 0; y < words.size(); y++)
113 boost::algorithm::trim(words[y]);
114 if (words[y].size() == 0) {
continue; }
116 if (!FromString<float>(dbl, words[y], std::dec))
120 (*data_out)[nItem] = dbl;
127 catch (ifstream::failure e)
typedefs used across UtensilConverter
Definition: Resampler.h:22
int _windowingType
0=none, 1 == hanning, 2== hamming, 3== gaussian
Definition: Resampler.h:46
void SetCalibrationFringeFile(const std::string &fname)
expect to have one number per line
Definition: Resampler.cpp:138
Class that processes scans.
Definition: ScanProcessor.h:32
Class that converts a scanned image from one format to another.
Definition: WPScanConverter.h:28