diff --git a/main.cpp b/main.cpp index 33ed0226..0980d26a 100644 --- a/main.cpp +++ b/main.cpp @@ -156,10 +156,16 @@ int main(int argc, char *argv[]) { //in.resize(1); PIFrame f2(in); f0 = f2; - piCout << f0; - piCout << f1; +// piCout << f0; +// piCout << f1; +// piCout << f2; +// piCout << f2.rows() << f2.cols() << f2.size_all() << f2.rows()*f2.cols(); + piCout << in; piCout << f2; - piCout << f2.rows() << f2.cols() << f2.length() << f2.rows()*f2.cols(); + piCout << f2.toVectors(); + PIVector t = f2.toPlainVector(); + piCout << t; + piCout << PIFrame(f2.rows(), f2.cols(), t); return 0; // PIFFTWf fft; // fft.preparePlan(50, PIFFTWf::foReal); diff --git a/src_main/containers/piframe.h b/src_main/containers/piframe.h index eb2f5df9..34991a0e 100644 --- a/src_main/containers/piframe.h +++ b/src_main/containers/piframe.h @@ -11,6 +11,12 @@ public: cols_ = cols; mat.resize(rows*cols, f); } + inline PIFrame(size_t rows, size_t cols, const PIVector & v) { + mat = v; + rows_ = rows; + cols_ = cols; + mat.resize(rows*cols); + } inline PIFrame(const PIVector > & v) { rows_ = v.size(); if (rows_) { @@ -25,9 +31,8 @@ public: inline size_t rows() const {return rows_;} inline size_t cols() const {return cols_;} -// inline size_t size() const {return mat.size();} -// inline ssize_t size_s() const {return mat.size_s();} - inline size_t length() const {return mat.length();} + inline size_t size_all() const {return mat.size();} + inline ssize_t size_s_all() const {return mat.size_s();} inline bool isEmpty() const {return mat.isEmpty();} class PIFrameRow { @@ -57,7 +62,13 @@ public: inline PIFrameRow operator[](size_t index) {return PIFrameRow(this, index);} inline PIFrameRowConst operator[](size_t index) const {return PIFrameRowConst(this, index);} - + PIVector > toVectors() const { + PIVector > ret; + for(size_t i = 0; i < rows_; ++i) + ret << PIVector(mat.data(i*cols_), cols_); + return ret; + } + PIVector toPlainVector() const {return mat;} private: size_t rows_, cols_; diff --git a/utils/system_daemon/main.cpp b/utils/system_daemon/main.cpp index 2ad58166..9b817cfe 100755 --- a/utils/system_daemon/main.cpp +++ b/utils/system_daemon/main.cpp @@ -294,6 +294,7 @@ void usage() { piCout << "-f --force " << PICoutManipulators::Green << "- don`t check for another running instance"; piCout << "-n --name " << PICoutManipulators::Green << "- set daemon name"; piCout << "-a --address " << PICoutManipulators::Green << "- connect to remote daemon via tcp"; + piCout << "-s --silent " << PICoutManipulators::Green << "- run without user interfase"; } @@ -305,6 +306,7 @@ int main(int argc, char * argv[]) { cli.addArgument("force"); cli.addArgument("kill"); cli.addArgument("1"); + cli.addArgument("silent"); cli.addArgument("name", true); cli.addArgument("address", true); if (cli.hasArgument("help")) { @@ -329,7 +331,7 @@ int main(int argc, char * argv[]) { } if (cli.hasArgument("daemon")) { PIStringList args; - args << "-1"; + args << "-1" << "s"; if (cli.hasArgument("force")) args << "-f"; if (cli.hasArgument("address")) @@ -358,10 +360,18 @@ int main(int argc, char * argv[]) { if (!name.isEmpty()) daemon->changeName(pisd_prefix + name); MainMenu * menu = new MainMenu(*daemon); - if (sapp) CONNECTU(sapp, messageReceived, menu, messageFromApp) - screen->start(); - screen->waitForFinish(); - screen->stop(true); + if (sapp) CONNECTU(sapp, messageReceived, menu, messageFromApp); + if (cli.hasArgument("silent")) { + PIKbdListener ls; + ls.enableExitCapture(PIKbdListener::F10); + ls.start(); + WAIT_FOR_EXIT + ls.stop(); + } else { + screen->start(); + screen->waitForFinish(); + screen->stop(true); + } delete menu; delete daemon; delete screen;