• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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