diff options
Diffstat (limited to 'chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp')
-rw-r--r-- | chromium/third_party/skia/debugger/QT/SkRasterWidget.cpp | 57 |
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(); + } +} |