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     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