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
SkImageWidget(SkDebugger * debugger)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
paintEvent(QPaintEvent * event)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