20 :
QThread(parentItem), mItem(parentItem), mWorkDir(workdir), mTransform(trans), mScrollbar(sbar), mTimeframe(tframe)
47 if ((
u64)wdChild->data().size() < wdChild->fileSize())
85 if ((
u64)wdChild->data().size() < wdChild->fileSize())
110 if ((
u64)wdChild->data().size() < wdChild->fileSize())
173 shadowPaint.
generate(&wdpFile,mTransform,mScrollbar,&mItem->
mLoop);
202 int needStillWork = 0;
205 if (!wree->isNull())
continue;
207 if (!wree->mMutex.tryLock())
continue;
211 wree->mMutex.unlock();
212 const WaveData* wd = wree->wavedata();
218 wree->mPainted.generate(&wdpClk,mTransform,mScrollbar,&wree->mLoop);
231 wree->mPainted.clearPrimitives();
233 wdpMap.
setWaveType(wree->wavedata()->netType(),wree->wavedata()->bits(),wree->wavedata()->valueBase());
234 wree->mPainted.generate(&wdpMap,mTransform,mScrollbar,&wree->mLoop);
245 switch (wree->wavedata()->netType())
271 qDebug() <<
"cannot open file" << dataFilename;
276 wree->mPainted.generate(wdp,mTransform,mScrollbar,&wree->mLoop);
295 wree->mMutex.unlock();
298 if (!needStillWork)
break;
304 :
QWidget(parent), mWaveGraphicsCanvas(wsa), mWaveDataList(wdlist), mWaveItemHash(wHash),
305 mY0(0), mHeight(0), mTimerTick(0), mBackbone(nullptr), mOmitHistory(true)
308 mTimer =
new QTimer(
this);
313 void WaveRenderEngine::handleTimeout()
316 bool needUpdate =
false;
319 if ((wree->isLoading() || wree->isThreadBusy()) && wree->mVisibleRange)
321 wree->incrementLoadProgress();
325 if (!needUpdate)
return;
326 if (++mTimerTick > 2)
332 void WaveRenderEngine::handleBackboneFinished()
334 WaveLoaderBackbone* toDelete = mBackbone;
339 void WaveRenderEngine::callUpdate()
356 if (testValid != mValidity)
359 mBackbone->
mLoop =
false;
363 bool wasEmpty = mZoomHistory.isEmpty();
366 mZoomHistory.append(mValidity);
371 mValidity = testValid;
374 mOmitHistory =
false;
383 if (wree->isDeleted())
continue;
389 wree->setParent(
this);
394 int y0 =
y0Entry(wree->yPosition());
396 if (y0 < 0 || y0 > mHeight)
398 wree->mVisibleRange =
false;
400 if (wree->isThreadBusy())
continue;
402 if (wree->isLoading() && wree->hasLoader())
404 if (!wree->mMutex.tryLock())
409 wree->mMutex.unlock();
415 wree->mVisibleRange =
true;
416 if (!wree->mMutex.tryLock())
426 if (wree->mPainted.generateGroup(wree->wavedata(),mWaveItemHash))
434 if (wree->mPainted.generateBoolean(wree->wavedata(),mWaveDataList,mWaveItemHash))
441 wree->startGeneratePainted(workdir,trans, sbar, mWaveDataList->
timeFrame());
443 else if (wree->isLoading() || wree->isThreadBusy())
446 if (wree->isLoading())
448 if (wree->mLoadValidity == mValidity)
456 else if (wree->isPainted())
458 if (mValidity == wree->mPainted.validity() && !wree->wavedata()->isDirty() &&!wree->hasRequest(
WaveItem::DataChanged))
460 if (wree->isVisibile())
462 if (wree->isSelected())
467 else if (wree->isTrigger())
471 wree->mPainted.paint(y0,painter);
476 wree->deletePainted();
478 wree->mPainted.generateGroup(wree->wavedata(),mWaveItemHash);
480 wree->mPainted.generateBoolean(wree->wavedata(),mWaveDataList,mWaveItemHash);
482 wree->startGeneratePainted(workdir,trans, sbar, mWaveDataList->
timeFrame());
486 wree->mMutex.unlock();
494 if (wree->isNull() && !wree->isGroup() && !wree->isDeleted()) todoList.
append(wree);
497 if (!todoList.
isEmpty() && !mBackbone)
509 return 32 + irow*28 - mY0;
514 return (mWaveItemHash->
size()+2) * 28;
static SimulationSettings * sSimulationSettings
std::string get_directory() const
Get path to SALEAE directory without filename.
QList< WaveData * > children() const
const char * truthTable() const
virtual QList< WaveData * > children() const
void setData(const QMap< u64, int > &dat)
virtual LoadPolicy loadPolicy() const
const QMap< u64, int > & data() const
void setTimeframeSize(u64 siz)
SaleaeDirectory & saleaeDirectory()
const WaveDataTimeframe & timeFrame() const
const QMap< u64, int > & dataMap() const
StoreData storeDataState() const
void setWaveType(WaveData::NetType type, int bts=1, int base=16)
QList< int > toValueList() const
QList< WaveData * > children() const
WaveData * get_filter_wave() const
void emitUndoStateChanged()
const WaveTransform * transform() const
const WaveData * wavedata() const
void setState(State stat)
static const char * sBackgroundColor
WaveLoaderThread(WaveItem *parentItem, const QString &workdir, const WaveTransform *trans, const WaveScrollbar *sbar, const WaveDataTimeframe &tframe)
void paintEvent(QPaintEvent *event) override
WaveRenderEngine(WaveGraphicsCanvas *wsa, WaveDataList *wdlist, WaveItemHash *wHash, QWidget *parent=nullptr)
int y0Entry(int irow) const
bool sameHistory(const WaveZoomShift &other) const
QString absoluteFilePath(const QString &fileName) const const
QList< T > values() const const
void append(const T &value)
bool isEmpty() const const
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void fillRect(const QRectF &rectangle, const QBrush &brush)
void setPen(const QColor &color)
QString fromStdString(const std::string &str)
std::string toStdString() const const
void start(QThread::Priority priority)