void MainWindow::fillStateForFrame()
{
- QVariantMap params;
-
if (!m_selectedEvent || m_selectedEvent->state().isEmpty())
return;
const ApiTraceState &state = m_selectedEvent->state();
m_ui.stateTreeWidget->clear();
- params = state.parameters();
QList<QTreeWidgetItem *> items;
- variantMapToItems(params, defaultParams, items);
+ variantMapToItems(state.parameters(), defaultParams, items);
m_ui.stateTreeWidget->insertTopLevelItems(0, items);
QMap<QString, QString> shaderSources = state.shaderSources();
m_sourcesWidget->setShaders(shaderSources);
}
+ m_ui.uniformsTreeWidget->clear();
+ QList<QTreeWidgetItem *> uniformsItems;
+ variantMapToItems(state.uniforms(), QVariantMap(), uniformsItems);
+ m_ui.uniformsTreeWidget->insertTopLevelItems(0, uniformsItems);
+
const QList<ApiTexture> &textures =
state.textures();
const QList<ApiFramebuffer> &fbos =
return;
QMenu menu(tr("Surfaces"), this);
- //add needed actions
+
QAction *act = menu.addAction(tr("View Image"));
act->setStatusTip(tr("View the currently selected surface"));
connect(act, SIGNAL(triggered()),
SLOT(showSelectedSurface()));
+ act = menu.addAction(tr("Save Image"));
+ act->setStatusTip(tr("Save the currently selected surface"));
+ connect(act, SIGNAL(triggered()),
+ SLOT(saveSelectedSurface()));
+
menu.exec(tree->viewport()->mapToGlobal(pos));
}
void MainWindow::initObjects()
{
m_ui.stateTreeWidget->sortByColumn(0, Qt::AscendingOrder);
+ m_ui.uniformsTreeWidget->sortByColumn(0, Qt::AscendingOrder);
m_sourcesWidget = new ShadersSourceWidget(m_ui.shadersTab);
QVBoxLayout *layout = new QVBoxLayout;
/* if it's not valid it means that the proxy model has already
* filtered it out */
if (index.isValid()) {
- QString txt = testCall->filterText();
+ QString txt = testCall->searchText();
if (txt.contains(str, sensitivity)) {
m_ui.callView->setCurrentIndex(index);
m_searchWidget->setFound(true);
/* if it's not valid it means that the proxy model has already
* filtered it out */
if (index.isValid()) {
- QString txt = testCall->filterText();
+ QString txt = testCall->searchText();
if (txt.contains(str, sensitivity)) {
m_ui.callView->setCurrentIndex(index);
m_searchWidget->setFound(true);
m_ui.nonDefaultsCB->blockSignals(true);
m_ui.nonDefaultsCB->setChecked(false);
m_ui.nonDefaultsCB->blockSignals(false);
- int ret = QMessageBox::question(
- this, tr("Empty Default State"),
- tr("The applcation needs to figure out the "
- "default state for the current trace. "
- "This only has to be done once and "
- "afterwards you will be able to enable "
- "displaying of non default state for all calls."
- "\nDo you want to lookup the default state now?"),
- QMessageBox::Yes | QMessageBox::No);
- if (ret != QMessageBox::Yes)
- return;
ApiTraceFrame *firstFrame =
m_trace->frameAt(0);
ApiTraceEvent *oldSelected = m_selectedEvent;
return NULL;
}
+void MainWindow::saveSelectedSurface()
+{
+ QTreeWidgetItem *item =
+ m_ui.surfacesTreeWidget->currentItem();
+
+ if (!item || !m_trace)
+ return;
+
+ QVariant var = item->data(0, Qt::UserRole);
+ QImage img = var.value<QImage>();
+
+ QString imageIndex;
+ if (currentCall()) {
+ imageIndex = tr("_call_%1")
+ .arg(currentCall()->index());
+ } else if (currentFrame()) {
+ ApiTraceCall *firstCall = currentFrame()->call(0);
+ if (firstCall) {
+ imageIndex = tr("_frame_%1")
+ .arg(firstCall->index());
+ } else {
+ qDebug()<<"unknown frame number";
+ imageIndex = tr("_frame_%1")
+ .arg(firstCall->index());
+ }
+ }
+
+ //which of the surfaces are we saving
+ QTreeWidgetItem *parent = item->parent();
+ int parentIndex =
+ m_ui.surfacesTreeWidget->indexOfTopLevelItem(parent);
+ if (parentIndex < 0) {
+ parentIndex = 0;
+ }
+ int childIndex = 0;
+ if (parent) {
+ childIndex = parent->indexOfChild(item);
+ } else {
+ childIndex = m_ui.surfacesTreeWidget->indexOfTopLevelItem(item);
+ }
+
+
+ QString fileName =
+ tr("%1%2-%3_%4.png")
+ .arg(m_trace->fileName())
+ .arg(imageIndex)
+ .arg(parentIndex)
+ .arg(childIndex);
+ //qDebug()<<"save "<<fileName;
+ img.save(fileName, "PNG");
+ statusBar()->showMessage( tr("Saved '%1'").arg(fileName), 5000);
+}
+
#include "mainwindow.moc"