git-svn-id: svn://db.shs.com.ru/pip@318 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
20
main.cpp
20
main.cpp
@@ -63,9 +63,23 @@ int main(int argc, char *argv[]) {
|
||||
c.start();
|
||||
piMSleep(3000);*/
|
||||
|
||||
PISystemTime st = PISystemTime::current();
|
||||
piCout << PIDateTime::current();
|
||||
piCout << PIDateTime::fromSystemTime(st);
|
||||
/*PIScreen s;
|
||||
s.enableExitCapture(PIKbdListener::F10);
|
||||
s.start();
|
||||
TileList * list = new TileList();
|
||||
for (int i = 0; i < 100; ++i)
|
||||
list->content << TileList::Row(i, PIScreenTypes::CellFormat());
|
||||
s.rootTile()->addTile(list);
|
||||
s.waitForFinish();*/
|
||||
|
||||
PIDeque<int> d;
|
||||
d.resize(atoi(argv[1]));
|
||||
while (1) {
|
||||
d.push_back(1);
|
||||
d.pop_front();
|
||||
piCout << d.size() << d.capacity() << d._start();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -156,6 +156,7 @@ void TileList::drawEvent(PIScreenDrawer * d) {
|
||||
//int osp = piMini(3, lhei / 4);
|
||||
int is = piClampi(offset, 0, piMaxi(0, content.size_s() - 1)), ie = piClampi(offset + lhei, 0, content.size_s());
|
||||
if (is > 0) d->drawText(x_, y_, PIString(" /\\ ").repeat(width_ / 4), Green, Default, Bold);
|
||||
if (ie < content.size_s()) d->drawText(x_, y_ + height_ - 1, PIString(" \\/ ").repeat(width_ / 4), Green, Default, Bold);
|
||||
//piCout << is << ie << offset << lhei << content.size_s();
|
||||
for (int i = is; i < ie; ++i) {
|
||||
Row & r(content[i]);
|
||||
|
||||
@@ -166,6 +166,7 @@ public:
|
||||
ssize_t size_s() const {return pid_size;}
|
||||
size_t length() const {return pid_size;}
|
||||
size_t capacity() const {return pid_rsize;}
|
||||
size_t _start() const {return pid_start;}
|
||||
bool isEmpty() const {return (pid_size == 0);}
|
||||
|
||||
T & operator [](size_t index) {return pid_data[pid_start + index];}
|
||||
@@ -380,31 +381,40 @@ private:
|
||||
inline void elementDelete(T & from) {from.~T();}
|
||||
void dealloc() {deleteRaw(pid_data);}
|
||||
inline void checkMove(bool direction) {
|
||||
if (pid_size >= 4 && pid_size < pid_rsize / 6) {
|
||||
/*if (direction) {
|
||||
if (pid_start >= 4 && pid_start > pid_size + pid_size && pid_start > pid_rsize / 2) {
|
||||
piCout << (int)this << "checkMove" << direction << pid_start << (int)pid_data << pid_rsize << pid_size;
|
||||
piCout << (int)this << "move from" << pid_start << "to" << pid_size << "," << (int)pid_data << pid_rsize << pid_size;
|
||||
memmove(pid_data + pid_size, pid_data + pid_start, pid_size * sizeof(T));
|
||||
pid_start = pid_size;
|
||||
}
|
||||
} else {
|
||||
if (ssize_t(pid_start) < ssize_t(pid_rsize) - pid_size - pid_size && ssize_t(pid_start) < ssize_t(pid_rsize / 2) - pid_size) {
|
||||
piCout << (int)this << "checkMove" << direction << pid_start << (int)pid_data << pid_rsize << pid_size;
|
||||
piCout << (int)this << "move from" << pid_start << "to" << (ssize_t(pid_rsize) - pid_size) << "," << (int)pid_data << pid_rsize << pid_size;
|
||||
memmove(pid_data + ssize_t(pid_rsize) - pid_size - pid_size, pid_data + pid_start, pid_size * sizeof(T));
|
||||
pid_start = ssize_t(pid_rsize) - pid_size - pid_size;
|
||||
}
|
||||
}*/
|
||||
//printf("(%p) check move st=%d sz=%d rs=%d\n", this, pid_start, pid_size, pid_rsize);
|
||||
if (pid_start < pid_size + pid_size || pid_start > pid_rsize - pid_size - pid_size) {
|
||||
ssize_t ns = (pid_rsize - pid_size) / 2;
|
||||
if (pid_start != ns) {
|
||||
//printf("(%p) move %d -> %d\n", this, pid_start, ns);
|
||||
memmove(pid_data + ns, pid_data + pid_start, pid_size * sizeof(T));
|
||||
pid_start = ns;
|
||||
if (pid_size >= 4) {
|
||||
if (pid_size < pid_rsize / 6) {
|
||||
/*if (direction) {
|
||||
if (pid_start >= 4 && pid_start > pid_size + pid_size && pid_start > pid_rsize / 2) {
|
||||
piCout << (int)this << "checkMove" << direction << pid_start << (int)pid_data << pid_rsize << pid_size;
|
||||
piCout << (int)this << "move from" << pid_start << "to" << pid_size << "," << (int)pid_data << pid_rsize << pid_size;
|
||||
memmove(pid_data + pid_size, pid_data + pid_start, pid_size * sizeof(T));
|
||||
pid_start = pid_size;
|
||||
}
|
||||
} else {
|
||||
if (ssize_t(pid_start) < ssize_t(pid_rsize) - pid_size - pid_size && ssize_t(pid_start) < ssize_t(pid_rsize / 2) - pid_size) {
|
||||
piCout << (int)this << "checkMove" << direction << pid_start << (int)pid_data << pid_rsize << pid_size;
|
||||
piCout << (int)this << "move from" << pid_start << "to" << (ssize_t(pid_rsize) - pid_size) << "," << (int)pid_data << pid_rsize << pid_size;
|
||||
memmove(pid_data + ssize_t(pid_rsize) - pid_size - pid_size, pid_data + pid_start, pid_size * sizeof(T));
|
||||
pid_start = ssize_t(pid_rsize) - pid_size - pid_size;
|
||||
}
|
||||
}*/
|
||||
//printf("(%p) check move st=%d sz=%d rs=%d\n", this, pid_start, pid_size, pid_rsize);
|
||||
if (pid_start < pid_size + pid_size || pid_start > pid_rsize - pid_size - pid_size) {
|
||||
ssize_t ns = (pid_rsize - pid_size) / 2;
|
||||
if (pid_start != ns) {
|
||||
//printf("(%p) move %d -> %d\n", this, pid_start, ns);
|
||||
memmove(pid_data + ns, pid_data + pid_start, pid_size * sizeof(T));
|
||||
pid_start = ns;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ssize_t ns = (pid_rsize - pid_size) / 2;
|
||||
if (pid_start != ns) {
|
||||
//printf("(%p) move %d -> %d\n", this, pid_start, ns);
|
||||
memmove(pid_data + ns, pid_data + pid_start, pid_size * sizeof(T));
|
||||
pid_start = ns;
|
||||
}
|
||||
}
|
||||
}
|
||||
inline void alloc(size_t new_size, bool direction, ssize_t start_offset = 0) { // direction == true -> alloc forward
|
||||
|
||||
@@ -59,14 +59,33 @@ PIVector<complexd> * PIFFT_double::calcFFT(const PIVector<double> & val) {
|
||||
}
|
||||
|
||||
|
||||
PIVector<double> PIFFT_double::getAmplitude() {
|
||||
PIVector<double> a;
|
||||
PIVector<double> PIFFT_double::getAmplitude() const {
|
||||
PIVector<double> ret;
|
||||
ret.resize(result.size());
|
||||
double tmp;
|
||||
for (uint i = 0; i < result.size(); i++) {
|
||||
tmp = sqrt(result[i].real() * result[i].real() + result[i].imag() * result[i].imag());
|
||||
a.push_back(tmp);
|
||||
ret[i] = tmp;
|
||||
}
|
||||
return a;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
PIVector<double> PIFFT_double::getReal() const {
|
||||
PIVector<double> ret;
|
||||
ret.resize(result.size());
|
||||
for (uint i = 0; i < result.size(); i++)
|
||||
ret[i] = result[i].real();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
PIVector<double> PIFFT_double::getImag() const {
|
||||
PIVector<double> ret;
|
||||
ret.resize(result.size());
|
||||
for (uint i = 0; i < result.size(); i++)
|
||||
ret[i] = result[i].imag();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -980,14 +999,33 @@ PIVector<complexf> * PIFFT_float::calcFFT(const PIVector<float> & val) {
|
||||
}
|
||||
|
||||
|
||||
PIVector<float> PIFFT_float::getAmplitude() {
|
||||
PIVector<float> a;
|
||||
PIVector<float> PIFFT_float::getAmplitude() const {
|
||||
PIVector<float> ret;
|
||||
ret.resize(result.size());
|
||||
float tmp;
|
||||
for (uint i = 0; i < result.size(); i++) {
|
||||
tmp = sqrt(result[i].real() * result[i].real() + result[i].imag() * result[i].imag());
|
||||
a.push_back(tmp);
|
||||
ret[i] = tmp;
|
||||
}
|
||||
return a;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
PIVector<float> PIFFT_float::getReal() const {
|
||||
PIVector<float> ret;
|
||||
ret.resize(result.size());
|
||||
for (uint i = 0; i < result.size(); i++)
|
||||
ret[i] = result[i].real();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
PIVector<float> PIFFT_float::getImag() const {
|
||||
PIVector<float> ret;
|
||||
ret.resize(result.size());
|
||||
for (uint i = 0; i < result.size(); i++)
|
||||
ret[i] = result[i].imag();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,9 @@ public:
|
||||
PIVector<complexd> * calcFFT(const PIVector<double> &val);
|
||||
PIVector<complexd> * calcFFTinverse(const PIVector<complexd> &val);
|
||||
PIVector<complexd> * calcHilbert(const PIVector<double> &val);
|
||||
PIVector<double> getAmplitude();
|
||||
PIVector<double> getAmplitude() const;
|
||||
PIVector<double> getReal() const;
|
||||
PIVector<double> getImag() const;
|
||||
|
||||
private:
|
||||
PIVector<complexd> result;
|
||||
@@ -78,7 +80,9 @@ public:
|
||||
PIVector<complexf> * calcFFT(const PIVector<float> &val);
|
||||
PIVector<complexf> * calcFFTinverse(const PIVector<complexf> &val);
|
||||
PIVector<complexf> * calcHilbert(const PIVector<float> &val);
|
||||
PIVector<float> getAmplitude();
|
||||
PIVector<float> getAmplitude() const;
|
||||
PIVector<float> getReal() const;
|
||||
PIVector<float> getImag() const;
|
||||
|
||||
private:
|
||||
PIVector<complexf> result;
|
||||
|
||||
Reference in New Issue
Block a user