summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp')
-rw-r--r--chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp b/chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp
new file mode 100644
index 00000000000..705fdf0bd85
--- /dev/null
+++ b/chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp
@@ -0,0 +1,57 @@
+
+/*
+ * 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 "SkRasterWidget.h"
+
+SkRasterWidget::SkRasterWidget(SkDebugger *debugger) : QWidget() {
+ fBitmap.allocN32Pixels(800, 800);
+ fBitmap.eraseColor(SK_ColorTRANSPARENT);
+ fDevice = new SkBitmapDevice(fBitmap);
+ fDebugger = debugger;
+ fCanvas = new SkCanvas(fDevice);
+ this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
+}
+
+SkRasterWidget::~SkRasterWidget() {
+ SkSafeUnref(fCanvas);
+ SkSafeUnref(fDevice);
+}
+
+void SkRasterWidget::resizeEvent(QResizeEvent* event) {
+ fBitmap.allocN32Pixels(event->size().width(), event->size().height());
+ fBitmap.eraseColor(SK_ColorTRANSPARENT);
+ SkSafeUnref(fCanvas);
+ SkSafeUnref(fDevice);
+ fDevice = new SkBitmapDevice(fBitmap);
+ fCanvas = new SkCanvas(fDevice);
+ fDebugger->resize(event->size().width(), event->size().height());
+ this->update();
+}
+
+void SkRasterWidget::paintEvent(QPaintEvent* event) {
+ if (!this->isHidden()) {
+ fDebugger->draw(fCanvas);
+ QPainter painter(this);
+ QStyleOption opt;
+ opt.init(this);
+
+ style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
+
+ QPoint origin(0,0);
+ QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(),
+ fBitmap.height(), QImage::Format_ARGB32_Premultiplied);
+
+#if SK_R32_SHIFT == 0
+ painter.drawImage(origin, image.rgbSwapped());
+#else
+ painter.drawImage(origin, image);
+#endif
+ painter.end();
+ emit drawComplete();
+ }
+}