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
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 std::string& id_a, const std::string& id_b) const;
private:
......
......@@ -25,7 +25,9 @@ class DistanceMap
DistanceMap& operator=(const DistanceMap&) = delete;
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 Point& p, float maxDistance = 3.5f) const;
private:
......
......@@ -415,6 +415,8 @@ struct ProgressImpl
int64 mMax;
atomic<int64> mConsumed;
int64 mLastConsumed = 0;
int mSpinnerIndex = 0;
string mAction, mMessage;
boost::mutex mMutex;
boost::thread mThread;
......@@ -428,10 +430,10 @@ void ProgressImpl::Run()
try
{
boost::this_thread::sleep(boost::posix_time::seconds(5));
for (;;)
{
boost::this_thread::sleep(boost::posix_time::seconds(5));
boost::mutex::scoped_lock lock(mMutex);
if (mConsumed == mMax)
......@@ -439,6 +441,8 @@ void ProgressImpl::Run()
PrintProgress();
printedAny = true;
boost::this_thread::sleep(boost::posix_time::seconds(0.5));
}
}
catch (...) {}
......@@ -488,7 +492,8 @@ void ProgressImpl::PrintProgress()
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 tw = width - 28;
// int twd = static_cast<int>(tw * progress + 0.5f);
......@@ -507,14 +512,27 @@ void ProgressImpl::PrintProgress()
}
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);
if (perc < 100)
msg += ' ';
if (perc < 10)
msg += ' ';
msg += to_string(perc);
msg += '%';
const char spinner[2] = { kSpinner[mSpinnerIndex], 0 };
msg.append(spinner);
// int perc = static_cast<int>(100 * progress);
// if (perc < 100)
// msg += ' ';
// if (perc < 10)
// msg += ' ';
// msg += to_string(perc);
// msg += '%';
cout << '\r' << msg;
cout.flush();
......
......@@ -262,6 +262,7 @@ float DistanceMap::operator()(const Atom& a, const Atom& b) const
return result;
}
#warning("this method should return symmetry reoriented atoms...")
vector<Atom> DistanceMap::near(const Atom& a, float maxDistance) const
{
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