blob: 2cf1f348d0e2bd97d5012397073f729490b2e0b2 [file] [log] [blame]
chudy@google.com38b08ce2012-07-28 23:26:10 +00001
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(QWidget* parent) : QWidget(parent) {
13 fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 800);
14 fBitmap.allocPixels();
15 fBitmap.eraseColor(0);
16 fTransform.set(0,0);
17 fScaleFactor = 1.0;
18 fIndex = 0;
chudy@google.com2d537a12012-07-31 12:49:52 +000019 fDevice = NULL;
chudy@google.com80a4a602012-07-30 18:54:07 +000020 fDebugCanvas = NULL;
chudy@google.com38b08ce2012-07-28 23:26:10 +000021 this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
22}
23
24SkRasterWidget::~SkRasterWidget() {
25 delete fDevice;
chudy@google.com38b08ce2012-07-28 23:26:10 +000026}
27
28void SkRasterWidget::resizeEvent(QResizeEvent* event) {
29 fBitmap.setConfig(SkBitmap::kARGB_8888_Config, event->size().width(), event->size().height());
30 fBitmap.allocPixels();
chudy@google.com0b5bbb02012-07-31 19:55:32 +000031 delete fDevice;
32 fDevice = new SkDevice(fBitmap);
chudy@google.com2d537a12012-07-31 12:49:52 +000033 this->update();
chudy@google.com38b08ce2012-07-28 23:26:10 +000034}
35
36void SkRasterWidget::paintEvent(QPaintEvent* event) {
chudy@google.com80a4a602012-07-30 18:54:07 +000037 if (fDebugCanvas) {
38 fBitmap.eraseColor(0);
39 SkCanvas canvas(fDevice);
40 canvas.translate(fTransform.fX, fTransform.fY);
41 if (fScaleFactor < 0) {
42 canvas.scale((1.0 / -fScaleFactor), (1.0 / -fScaleFactor));
43 } else if (fScaleFactor > 0) {
44 canvas.scale(fScaleFactor, fScaleFactor);
45 }
46
47 fMatrix = canvas.getTotalMatrix();
48 fClip = canvas.getTotalClip().getBounds();
chudy@google.com0b5bbb02012-07-31 19:55:32 +000049 fDebugCanvas->drawTo(&canvas, fIndex);
chudy@google.com80a4a602012-07-30 18:54:07 +000050
51 QPainter painter(this);
52 QStyleOption opt;
53 opt.init(this);
54
55 style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
56
57 QPoint origin(0,0);
58 QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(),
59 fBitmap.height(), QImage::Format_ARGB32_Premultiplied);
60
61 painter.drawImage(origin, image);
62 painter.end();
chudy@google.com38b08ce2012-07-28 23:26:10 +000063 }
chudy@google.com38b08ce2012-07-28 23:26:10 +000064}