aboutsummaryrefslogtreecommitdiffhomepage
path: root/debugger
diff options
context:
space:
mode:
Diffstat (limited to 'debugger')
-rw-r--r--debugger/QT/SkDebuggerGUI.cpp20
-rw-r--r--debugger/QT/SkDebuggerGUI.h5
-rw-r--r--debugger/QT/SkDrawCommandGeometryWidget.cpp86
-rw-r--r--debugger/QT/SkDrawCommandGeometryWidget.h35
-rw-r--r--debugger/QT/SkImageWidget.cpp54
-rw-r--r--debugger/QT/SkImageWidget.h46
6 files changed, 132 insertions, 114 deletions
diff --git a/debugger/QT/SkDebuggerGUI.cpp b/debugger/QT/SkDebuggerGUI.cpp
index 71d7b06a0b..05f4886616 100644
--- a/debugger/QT/SkDebuggerGUI.cpp
+++ b/debugger/QT/SkDebuggerGUI.cpp
@@ -61,7 +61,7 @@ SkDebuggerGUI::SkDebuggerGUI(QWidget *parent) :
, fListWidget(&fCentralSplitter)
, fDirectoryWidget(&fCentralSplitter)
, fCanvasWidget(this, &fDebugger)
- , fImageWidget(&fDebugger)
+ , fDrawCommandGeometryWidget(&fDebugger)
, fMenuBar(this)
, fMenuFile(this)
, fMenuNavigate(this)
@@ -107,6 +107,8 @@ SkDebuggerGUI::SkDebuggerGUI(QWidget *parent) :
connect(&fCanvasWidget, SIGNAL(hitChanged(int)), this, SLOT(updateHit(int)));
connect(&fCanvasWidget, SIGNAL(scaleFactorChanged(float)), this, SLOT(actionScale(float)));
connect(&fCanvasWidget, SIGNAL(commandChanged(int)), this, SLOT(updateCommand(int)));
+ connect(&fCanvasWidget, SIGNAL(commandChanged(int)), &fDrawCommandGeometryWidget, SLOT(updateImage()));
+
connect(&fActionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs()));
connect(&fActionSave, SIGNAL(triggered()), this, SLOT(actionSave()));
@@ -232,10 +234,8 @@ void SkDebuggerGUI::actionClearDeletes() {
}
if (fPause) {
fCanvasWidget.drawTo(fPausedRow);
- fImageWidget.draw();
} else {
fCanvasWidget.drawTo(fListWidget.currentRow());
- fImageWidget.draw();
}
}
@@ -267,10 +267,8 @@ void SkDebuggerGUI::actionDelete() {
if (fPause) {
fCanvasWidget.drawTo(fPausedRow);
- fImageWidget.draw();
} else {
fCanvasWidget.drawTo(currentRow);
- fImageWidget.draw();
}
}
@@ -289,7 +287,7 @@ void SkDebuggerGUI::actionInspector() {
fInspectorWidget.setHidden(newState);
fViewStateFrame.setHidden(newState);
- fImageWidget.setHidden(newState);
+ fDrawCommandGeometryWidget.setHidden(newState);
}
void SkDebuggerGUI::actionPlay() {
@@ -316,7 +314,6 @@ void SkDebuggerGUI::actionVisualizationsChanged() {
fDebugger.setPathOps(fSettingsWidget.isPathOpsEnabled());
fDebugger.highlightCurrentCommand(fSettingsWidget.isVisibilityFilterEnabled());
fCanvasWidget.drawTo(fListWidget.currentRow());
- fImageWidget.draw();
}
void SkDebuggerGUI::actionTextureFilter() {
@@ -418,7 +415,6 @@ void SkDebuggerGUI::pauseDrawing(bool isPaused) {
fPause = isPaused;
fPausedRow = fListWidget.currentRow();
fCanvasWidget.drawTo(fPausedRow);
- fImageWidget.draw();
}
void SkDebuggerGUI::registerListClick(QListWidgetItem *item) {
@@ -428,7 +424,6 @@ void SkDebuggerGUI::registerListClick(QListWidgetItem *item) {
if (currentRow != -1) {
if (!fPause) {
fCanvasWidget.drawTo(currentRow);
- fImageWidget.draw();
}
const SkTDArray<SkString*> *currInfo = fDebugger.getCommandInfo(currentRow);
@@ -612,8 +607,7 @@ void SkDebuggerGUI::setupUi(QMainWindow *SkDebuggerGUI) {
fCanvasWidget.setSizePolicy(QSizePolicy::Expanding,
QSizePolicy::Expanding);
- fImageWidget.setFixedSize(SkImageWidget::kImageWidgetWidth,
- SkImageWidget::kImageWidgetHeight);
+ fDrawCommandGeometryWidget.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
fInspectorWidget.setSizePolicy(QSizePolicy::Expanding,
QSizePolicy::Expanding);
@@ -625,6 +619,7 @@ void SkDebuggerGUI::setupUi(QMainWindow *SkDebuggerGUI) {
fViewStateFrame.setFrameStyle(QFrame::Panel);
fViewStateFrame.setLayout(&fViewStateFrameLayout);
fViewStateFrameLayout.addWidget(&fViewStateGroup);
+ fViewStateGroup.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
fViewStateGroup.setTitle("View");
fViewStateLayout.addRow("Zoom Level", &fZoomBox);
fZoomBox.setText("100%");
@@ -647,7 +642,8 @@ void SkDebuggerGUI::setupUi(QMainWindow *SkDebuggerGUI) {
fViewStateGroup.setLayout(&fViewStateLayout);
fSettingsAndImageLayout.addWidget(&fViewStateFrame);
- fSettingsAndImageLayout.addWidget(&fImageWidget);
+ fDrawCommandGeometryWidget.setToolTip("Current Command Geometry");
+ fSettingsAndImageLayout.addWidget(&fDrawCommandGeometryWidget);
fLeftColumnSplitter.addWidget(&fListWidget);
fLeftColumnSplitter.addWidget(&fDirectoryWidget);
diff --git a/debugger/QT/SkDebuggerGUI.h b/debugger/QT/SkDebuggerGUI.h
index b07f37a8a3..695a8582b9 100644
--- a/debugger/QT/SkDebuggerGUI.h
+++ b/debugger/QT/SkDebuggerGUI.h
@@ -17,7 +17,7 @@
#include "SkListWidget.h"
#include "SkInspectorWidget.h"
#include "SkRasterWidget.h"
-#include "SkImageWidget.h"
+#include "SkDrawCommandGeometryWidget.h"
#include "SkSettingsWidget.h"
#include <QtCore/QVariant>
#include <QtGui/QAction>
@@ -281,7 +281,7 @@ private:
SkDebugger fDebugger;
SkCanvasWidget fCanvasWidget;
- SkImageWidget fImageWidget;
+
SkInspectorWidget fInspectorWidget;
SkSettingsWidget fSettingsWidget;
@@ -292,6 +292,7 @@ private:
QLineEdit fCurrentCommandBox;
QLineEdit fCommandHitBox;
QLineEdit fZoomBox;
+ SkDrawCommandGeometryWidget fDrawCommandGeometryWidget;
QString fPath;
SkString fFileName;
diff --git a/debugger/QT/SkDrawCommandGeometryWidget.cpp b/debugger/QT/SkDrawCommandGeometryWidget.cpp
new file mode 100644
index 0000000000..1172e7952d
--- /dev/null
+++ b/debugger/QT/SkDrawCommandGeometryWidget.cpp
@@ -0,0 +1,86 @@
+
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include <QtGui>
+
+#include "SkDebugger.h"
+#include "SkDrawCommandGeometryWidget.h"
+
+SkDrawCommandGeometryWidget::SkDrawCommandGeometryWidget(SkDebugger *debugger)
+ : QFrame()
+ , fDebugger(debugger) {
+ this->setStyleSheet("QFrame {background-color: black; border: 1px solid #cccccc;}");
+}
+
+void SkDrawCommandGeometryWidget::resizeEvent(QResizeEvent* event) {
+ this->QFrame::resizeEvent(event);
+ QRect r = this->contentsRect();
+ int dim = std::min(r.width(), r.height());
+ if (dim == 0) {
+ fSurface.reset(NULL);
+ } else {
+ SkImageInfo info = SkImageInfo::MakeN32Premul(dim, dim);
+ fSurface.reset(SkSurface::NewRaster(info));
+ this->updateImage();
+ }
+}
+
+void SkDrawCommandGeometryWidget::paintEvent(QPaintEvent* event) {
+ this->QFrame::paintEvent(event);
+
+ if (!fSurface) {
+ return;
+ }
+
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ SkImageInfo info;
+ size_t rowPixels;
+ if (const void* pixels = fSurface->peekPixels(&info, &rowPixels)) {
+ SkASSERT(info.width() > 0);
+ SkASSERT(info.height() > 0);
+
+ QRectF resultRect;
+ if (this->width() < this->height()) {
+ float ratio = this->width() / info.width();
+ resultRect = QRectF(0, 0, this->width(), ratio * info.height());
+ } else {
+ float ratio = this->height() / info.height();
+ resultRect = QRectF(0, 0, ratio * info.width(), this->height());
+ }
+
+ resultRect.moveCenter(this->contentsRect().center());
+
+ QImage image(reinterpret_cast<const uchar*>(pixels),
+ info.width(),
+ info.height(),
+ QImage::Format_ARGB32_Premultiplied);
+ painter.drawImage(resultRect, image);
+ }
+}
+
+void SkDrawCommandGeometryWidget::updateImage() {
+ if (!fSurface) {
+ return;
+ }
+
+ bool didRender = false;
+ const SkTDArray<SkDrawCommand*>& commands = fDebugger->getDrawCommands();
+ if (0 != commands.count()) {
+ SkDrawCommand* command = commands[fDebugger->index()];
+ didRender = command->render(fSurface->getCanvas());
+ }
+
+ if (!didRender) {
+ fSurface->getCanvas()->clear(SK_ColorTRANSPARENT);
+ }
+
+ fSurface->getCanvas()->flush();
+ update();
+}
diff --git a/debugger/QT/SkDrawCommandGeometryWidget.h b/debugger/QT/SkDrawCommandGeometryWidget.h
new file mode 100644
index 0000000000..aa5d10a01a
--- /dev/null
+++ b/debugger/QT/SkDrawCommandGeometryWidget.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#ifndef SKDRAWCOMMANDGEOMETRYWIDGET_H_
+#define SKDRAWCOMMANDGEOMETRYWIDGET_H_
+
+#include <QFrame>
+
+#include "SkSurface.h"
+class SkDebugger;
+
+class SkDrawCommandGeometryWidget : public QFrame {
+ Q_OBJECT
+
+public:
+ SkDrawCommandGeometryWidget(SkDebugger* debugger);
+
+public slots:
+ void updateImage();
+
+protected:
+ void paintEvent(QPaintEvent* event);
+ void resizeEvent(QResizeEvent* event);
+
+private:
+ SkDebugger* fDebugger;
+ SkAutoTUnref<SkSurface> fSurface;
+};
+
+#endif /* SKDRAWCOMMANDGEOMETRYWIDGET_H_ */
diff --git a/debugger/QT/SkImageWidget.cpp b/debugger/QT/SkImageWidget.cpp
deleted file mode 100644
index aad979406b..0000000000
--- a/debugger/QT/SkImageWidget.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <QtGui>
-
-#include "SkDebugger.h"
-#include "SkImageWidget.h"
-
-SkImageWidget::SkImageWidget(SkDebugger *debugger)
- : QWidget()
- , fDebugger(debugger)
-{
- this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
-
- SkImageInfo info = SkImageInfo::MakeN32Premul(kImageWidgetWidth, kImageWidgetHeight);
- fSurface = SkSurface::NewRasterDirect(info, fPixels, 4 * kImageWidgetWidth);
-}
-
-void SkImageWidget::paintEvent(QPaintEvent* event) {
- if (this->isHidden()) {
- return;
- }
-
- QPainter painter(this);
- QStyleOption opt;
- opt.init(this);
-
- style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
-
- const SkTDArray<SkDrawCommand*>& commands = fDebugger->getDrawCommands();
- if (0 != commands.count()) {
- SkDrawCommand* command = commands[fDebugger->index()];
-
- if (command->render(fSurface->getCanvas())) {
- QPoint origin(0,0);
- QImage image((uchar*) fPixels,
- kImageWidgetWidth,
- kImageWidgetHeight,
- QImage::Format_ARGB32_Premultiplied);
-
- painter.drawImage(origin, image);
- } else {
- painter.drawRect(0, 0, kImageWidgetWidth, kImageWidgetHeight);
- }
- }
-
- painter.end();
- emit drawComplete();
-}
diff --git a/debugger/QT/SkImageWidget.h b/debugger/QT/SkImageWidget.h
deleted file mode 100644
index 7ee430f664..0000000000
--- a/debugger/QT/SkImageWidget.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-#ifndef SKIMAGEWIDGET_H_
-#define SKIMAGEWIDGET_H_
-
-#include <QWidget>
-
-#include "SkSurface.h"
-class SkDebugger;
-
-class SkImageWidget : public QWidget {
- Q_OBJECT
-
-public:
- SkImageWidget(SkDebugger* debugger);
-
- virtual ~SkImageWidget() {
- fSurface->unref();
- }
-
- void draw() {
- this->update();
- }
-
- static const int kImageWidgetWidth = 256;
- static const int kImageWidgetHeight = 256;
-
-signals:
- void drawComplete();
-
-protected:
- void paintEvent(QPaintEvent* event);
-
-private:
- SkDebugger* fDebugger;
- char fPixels[kImageWidgetHeight * 4 * kImageWidgetWidth];
- SkSurface* fSurface;
-};
-
-#endif /* SKIMAGEWIDGET_H_ */