138b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 238b08ce020f451a66263110b32e70f5022df4f83chudy@google.com/* 338b08ce020f451a66263110b32e70f5022df4f83chudy@google.com * Copyright 2012 Google Inc. 438b08ce020f451a66263110b32e70f5022df4f83chudy@google.com * 538b08ce020f451a66263110b32e70f5022df4f83chudy@google.com * Use of this source code is governed by a BSD-style license that can be 638b08ce020f451a66263110b32e70f5022df4f83chudy@google.com * found in the LICENSE file. 738b08ce020f451a66263110b32e70f5022df4f83chudy@google.com */ 838b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 938b08ce020f451a66263110b32e70f5022df4f83chudy@google.com#include "SkRasterWidget.h" 1038b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 11607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.comSkRasterWidget::SkRasterWidget(SkDebugger *debugger) : QWidget() { 126c22573edb234ad14df947278cfed010669a39a7reed fBitmap.allocN32Pixels(800, 800); 13dbfac8a72393eaf01670aeb3244de0e18d8faf98junov@google.com fBitmap.eraseColor(SK_ColorTRANSPARENT); 141f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com fDevice = new SkBitmapDevice(fBitmap); 15607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger = debugger; 16830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com fCanvas = new SkCanvas(fDevice); 1738b08ce020f451a66263110b32e70f5022df4f83chudy@google.com this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}"); 1838b08ce020f451a66263110b32e70f5022df4f83chudy@google.com} 1938b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 2038b08ce020f451a66263110b32e70f5022df4f83chudy@google.comSkRasterWidget::~SkRasterWidget() { 21830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com SkSafeUnref(fCanvas); 22830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com SkSafeUnref(fDevice); 2338b08ce020f451a66263110b32e70f5022df4f83chudy@google.com} 2438b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 2538b08ce020f451a66263110b32e70f5022df4f83chudy@google.comvoid SkRasterWidget::resizeEvent(QResizeEvent* event) { 266c22573edb234ad14df947278cfed010669a39a7reed fBitmap.allocN32Pixels(event->size().width(), event->size().height()); 27f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com fBitmap.eraseColor(SK_ColorTRANSPARENT); 28830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com SkSafeUnref(fCanvas); 29830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com SkSafeUnref(fDevice); 301f2f338e23789f3eef168dcbd8171a28820ba6c1robertphillips@google.com fDevice = new SkBitmapDevice(fBitmap); 31830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com fCanvas = new SkCanvas(fDevice); 32a8d7f0b13cd4c6d773fcf055fe17db75d260fa05robertphillips fDebugger->setWindowSize(event->size().width(), event->size().height()); 332d537a18f49cb492358c2b051f4786075dd9406cchudy@google.com this->update(); 3438b08ce020f451a66263110b32e70f5022df4f83chudy@google.com} 3538b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 3638b08ce020f451a66263110b32e70f5022df4f83chudy@google.comvoid SkRasterWidget::paintEvent(QPaintEvent* event) { 37607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com if (!this->isHidden()) { 38607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugger->draw(fCanvas); 3980a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com QPainter painter(this); 4080a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com QStyleOption opt; 4180a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com opt.init(this); 4238b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 4380a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); 4438b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 4580a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com QPoint origin(0,0); 4680a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(), 4780a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com fBitmap.height(), QImage::Format_ARGB32_Premultiplied); 4838b08ce020f451a66263110b32e70f5022df4f83chudy@google.com 495a867c74e1ebae237082abfa433d6833982b0babhumper@google.com#if SK_R32_SHIFT == 0 505a867c74e1ebae237082abfa433d6833982b0babhumper@google.com painter.drawImage(origin, image.rgbSwapped()); 515a867c74e1ebae237082abfa433d6833982b0babhumper@google.com#else 5280a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com painter.drawImage(origin, image); 535a867c74e1ebae237082abfa433d6833982b0babhumper@google.com#endif 5480a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com painter.end(); 55a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com emit drawComplete(); 5680a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com } 5738b08ce020f451a66263110b32e70f5022df4f83chudy@google.com} 58