Home | History | Annotate | Download | only in QT
      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