SkRasterWidget.cpp revision f4741c1322944e194ca34a8f5cf8188fe2c0efe2
1
2/*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9
10#include "SkRasterWidget.h"
11
12SkRasterWidget::SkRasterWidget(SkDebugger *debugger) : QWidget() {
13    fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 800);
14    fBitmap.allocPixels();
15    fBitmap.eraseColor(SK_ColorTRANSPARENT);
16    fDevice = new SkDevice(fBitmap);
17    fDebugger = debugger;
18    fCanvas = new SkCanvas(fDevice);
19    this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
20}
21
22SkRasterWidget::~SkRasterWidget() {
23    SkSafeUnref(fCanvas);
24    SkSafeUnref(fDevice);
25}
26
27void SkRasterWidget::resizeEvent(QResizeEvent* event) {
28    fBitmap.setConfig(SkBitmap::kARGB_8888_Config, event->size().width(), event->size().height());
29    fBitmap.allocPixels();
30    fBitmap.eraseColor(SK_ColorTRANSPARENT);
31    SkSafeUnref(fCanvas);
32    SkSafeUnref(fDevice);
33    fDevice = new SkDevice(fBitmap);
34    fCanvas = new SkCanvas(fDevice);
35    fDebugger->resize(event->size().width(), event->size().height());
36    this->update();
37}
38
39void SkRasterWidget::paintEvent(QPaintEvent* event) {
40    if (!this->isHidden()) {
41        fDebugger->draw(fCanvas);
42        QPainter painter(this);
43        QStyleOption opt;
44        opt.init(this);
45
46        style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
47
48        QPoint origin(0,0);
49        QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(),
50                fBitmap.height(), QImage::Format_ARGB32_Premultiplied);
51
52        painter.drawImage(origin, image);
53        painter.end();
54        emit drawComplete();
55    }
56}
57