16dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 26dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com/* 36dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com * Copyright 2012 Google Inc. 46dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com * 56dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com * Use of this source code is governed by a BSD-style license that can be 66dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com * found in the LICENSE file. 76dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com */ 86dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 96dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com#include <QtGui> 106dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 116dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com#include "SkDebugger.h" 126dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com#include "SkImageWidget.h" 136dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 141c9c0d37111e6ff7a74a2908bf62a0d3954f2bb5skia.committer@gmail.comSkImageWidget::SkImageWidget(SkDebugger *debugger) 156dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com : QWidget() 16e5ea500d4714a7d84de2bf913e81be3b65d2de68reed , fDebugger(debugger) 17e5ea500d4714a7d84de2bf913e81be3b65d2de68reed{ 186dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}"); 196ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 20e5ea500d4714a7d84de2bf913e81be3b65d2de68reed SkImageInfo info = SkImageInfo::MakeN32Premul(kImageWidgetWidth, kImageWidgetHeight); 216ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com fSurface = SkSurface::NewRasterDirect(info, fPixels, 4 * kImageWidgetWidth); 226dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com} 236dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 246dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.comvoid SkImageWidget::paintEvent(QPaintEvent* event) { 256dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com if (this->isHidden()) { 266dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com return; 276dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } 286dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 296dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com QPainter painter(this); 306dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com QStyleOption opt; 316dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com opt.init(this); 326dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 336dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); 346dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 356dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com const SkTDArray<SkDrawCommand*>& commands = fDebugger->getDrawCommands(); 366dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com if (0 != commands.count()) { 376dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com SkDrawCommand* command = commands[fDebugger->index()]; 386dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 396ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com if (command->render(fSurface->getCanvas())) { 406dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com QPoint origin(0,0); 41a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com QImage image((uchar*) fPixels, 426ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com kImageWidgetWidth, 43a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com kImageWidgetHeight, 446ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com QImage::Format_ARGB32_Premultiplied); 456dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 466dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com painter.drawImage(origin, image); 476dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } else { 486dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com painter.drawRect(0, 0, kImageWidgetWidth, kImageWidgetHeight); 496dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } 506dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } 516dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 526dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com painter.end(); 536dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com emit drawComplete(); 546dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com} 55