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 <QtGui> 10 11 #include "SkDebugger.h" 12 #include "SkImageWidget.h" 13 14 SkImageWidget::SkImageWidget(SkDebugger *debugger) 15 : QWidget() 16 , fDebugger(debugger) 17 { 18 this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}"); 19 20 SkImageInfo info = SkImageInfo::MakeN32Premul(kImageWidgetWidth, kImageWidgetHeight); 21 fSurface = SkSurface::NewRasterDirect(info, fPixels, 4 * kImageWidgetWidth); 22 } 23 24 void SkImageWidget::paintEvent(QPaintEvent* event) { 25 if (this->isHidden()) { 26 return; 27 } 28 29 QPainter painter(this); 30 QStyleOption opt; 31 opt.init(this); 32 33 style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); 34 35 const SkTDArray<SkDrawCommand*>& commands = fDebugger->getDrawCommands(); 36 if (0 != commands.count()) { 37 SkDrawCommand* command = commands[fDebugger->index()]; 38 39 if (command->render(fSurface->getCanvas())) { 40 QPoint origin(0,0); 41 QImage image((uchar*) fPixels, 42 kImageWidgetWidth, 43 kImageWidgetHeight, 44 QImage::Format_ARGB32_Premultiplied); 45 46 painter.drawImage(origin, image); 47 } else { 48 painter.drawRect(0, 0, kImageWidgetWidth, kImageWidgetHeight); 49 } 50 } 51 52 painter.end(); 53 emit drawComplete(); 54 } 55