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