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