SkRasterWidget.cpp revision 5a867c74e1ebae237082abfa433d6833982b0bab
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#include "SkRasterWidget.h" 10 11SkRasterWidget::SkRasterWidget(SkDebugger *debugger) : QWidget() { 12 fBitmap.setConfig(SkBitmap::kARGB_8888_Config, 800, 800); 13 fBitmap.allocPixels(); 14 fBitmap.eraseColor(SK_ColorTRANSPARENT); 15 fDevice = new SkDevice(fBitmap); 16 fDebugger = debugger; 17 fCanvas = new SkCanvas(fDevice); 18 this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}"); 19} 20 21SkRasterWidget::~SkRasterWidget() { 22 SkSafeUnref(fCanvas); 23 SkSafeUnref(fDevice); 24} 25 26void SkRasterWidget::resizeEvent(QResizeEvent* event) { 27 fBitmap.setConfig(SkBitmap::kARGB_8888_Config, event->size().width(), event->size().height()); 28 fBitmap.allocPixels(); 29 fBitmap.eraseColor(SK_ColorTRANSPARENT); 30 SkSafeUnref(fCanvas); 31 SkSafeUnref(fDevice); 32 fDevice = new SkDevice(fBitmap); 33 fCanvas = new SkCanvas(fDevice); 34 fDebugger->resize(event->size().width(), event->size().height()); 35 this->update(); 36} 37 38void SkRasterWidget::paintEvent(QPaintEvent* event) { 39 if (!this->isHidden()) { 40 fDebugger->draw(fCanvas); 41 QPainter painter(this); 42 QStyleOption opt; 43 opt.init(this); 44 45 style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); 46 47 QPoint origin(0,0); 48 QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(), 49 fBitmap.height(), QImage::Format_ARGB32_Premultiplied); 50 51#if SK_R32_SHIFT == 0 52 painter.drawImage(origin, image.rgbSwapped()); 53#else 54 painter.drawImage(origin, image); 55#endif 56 painter.end(); 57 emit drawComplete(); 58 } 59} 60