git-svn-id: svn://db.shs.com.ru/pip@318 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-03-15 08:45:29 +00:00
parent 286b63e93d
commit a1d77eff32
5 changed files with 103 additions and 36 deletions

View File

@@ -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;
}

View File

@@ -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]);

View File

@@ -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,7 +381,8 @@ 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 (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;
@@ -406,6 +408,14 @@ private:
}
}
}
} 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
if (direction) {

View File

@@ -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;
}

View File

@@ -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;