Commit 91abdc56 by maarten

werkend, maar niet threaded

git-svn-id: svn+ssh://gitlab/srv/svn-repos/pdb-redo/trunk@308 a1961a4f-ab94-4bcc-80e8-33b5a54de466
parent b1a6180a
...@@ -22,7 +22,13 @@ class BondMap ...@@ -22,7 +22,13 @@ class BondMap
return isBonded(index.at(a.id()), index.at(b.id())); return isBonded(index.at(a.id()), index.at(b.id()));
} }
bool operator()(const std::string& id_a, const std::string& id_b) const
{
return isBonded(index.at(id_a), index.at(id_b));
}
bool is1_4(const Atom& a, const Atom& b) const; bool is1_4(const Atom& a, const Atom& b) const;
bool is1_4(const std::string& id_a, const std::string& id_b) const;
private: private:
......
...@@ -25,7 +25,9 @@ class DistanceMap ...@@ -25,7 +25,9 @@ class DistanceMap
DistanceMap& operator=(const DistanceMap&) = delete; DistanceMap& operator=(const DistanceMap&) = delete;
float operator()(const Atom& a, const Atom& b) const; float operator()(const Atom& a, const Atom& b) const;
std::vector<Atom> near(const Atom& a, float maxDistance = 3.5f) const; std::vector<Atom> near(const Atom& a, float maxDistance = 3.5f) const;
std::vector<Atom> near(const Point& p, float maxDistance = 3.5f) const;
private: private:
......
...@@ -415,6 +415,8 @@ struct ProgressImpl ...@@ -415,6 +415,8 @@ struct ProgressImpl
int64 mMax; int64 mMax;
atomic<int64> mConsumed; atomic<int64> mConsumed;
int64 mLastConsumed = 0;
int mSpinnerIndex = 0;
string mAction, mMessage; string mAction, mMessage;
boost::mutex mMutex; boost::mutex mMutex;
boost::thread mThread; boost::thread mThread;
...@@ -428,10 +430,10 @@ void ProgressImpl::Run() ...@@ -428,10 +430,10 @@ void ProgressImpl::Run()
try try
{ {
boost::this_thread::sleep(boost::posix_time::seconds(5));
for (;;) for (;;)
{ {
boost::this_thread::sleep(boost::posix_time::seconds(5));
boost::mutex::scoped_lock lock(mMutex); boost::mutex::scoped_lock lock(mMutex);
if (mConsumed == mMax) if (mConsumed == mMax)
...@@ -439,6 +441,8 @@ void ProgressImpl::Run() ...@@ -439,6 +441,8 @@ void ProgressImpl::Run()
PrintProgress(); PrintProgress();
printedAny = true; printedAny = true;
boost::this_thread::sleep(boost::posix_time::seconds(0.5));
} }
} }
catch (...) {} catch (...) {}
...@@ -488,7 +492,8 @@ void ProgressImpl::PrintProgress() ...@@ -488,7 +492,8 @@ void ProgressImpl::PrintProgress()
msg += " |"; msg += " |";
float progress = static_cast<float>(mConsumed) / mMax; int64 consumed = mConsumed;
float progress = static_cast<float>(consumed) / mMax;
int pi = static_cast<int>(ceil(progress * 33 * 8)); int pi = static_cast<int>(ceil(progress * 33 * 8));
// int tw = width - 28; // int tw = width - 28;
// int twd = static_cast<int>(tw * progress + 0.5f); // int twd = static_cast<int>(tw * progress + 0.5f);
...@@ -507,14 +512,27 @@ void ProgressImpl::PrintProgress() ...@@ -507,14 +512,27 @@ void ProgressImpl::PrintProgress()
} }
msg.append("| "); msg.append("| ");
// const char kSpinner[] = { '|', '/', '-', '\\' };
const char kSpinner[] = { ' ', '.', 'o', 'O', '0', 'O', 'o', '.' };
const size_t kSpinnerCount = sizeof(kSpinner);
if (mLastConsumed < consumed)
{
mLastConsumed = consumed;
mSpinnerIndex = (mSpinnerIndex + 1) % kSpinnerCount;
}
int perc = static_cast<int>(100 * progress); const char spinner[2] = { kSpinner[mSpinnerIndex], 0 };
if (perc < 100) msg.append(spinner);
msg += ' ';
if (perc < 10) // int perc = static_cast<int>(100 * progress);
msg += ' '; // if (perc < 100)
msg += to_string(perc); // msg += ' ';
msg += '%'; // if (perc < 10)
// msg += ' ';
// msg += to_string(perc);
// msg += '%';
cout << '\r' << msg; cout << '\r' << msg;
cout.flush(); cout.flush();
......
...@@ -262,6 +262,7 @@ float DistanceMap::operator()(const Atom& a, const Atom& b) const ...@@ -262,6 +262,7 @@ float DistanceMap::operator()(const Atom& a, const Atom& b) const
return result; return result;
} }
#warning("this method should return symmetry reoriented atoms...")
vector<Atom> DistanceMap::near(const Atom& a, float maxDistance) const vector<Atom> DistanceMap::near(const Atom& a, float maxDistance) const
{ {
vector<Atom> result; vector<Atom> result;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment