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() 166dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com , fDebugger(debugger) { 176dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}"); 186ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 192bd8b8100529c96c81c30f749f672f4caf775b04reed@google.com SkImageInfo info; 206ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com info.fWidth = kImageWidgetWidth; 216ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com info.fHeight = kImageWidgetHeight; 2228fcae2ec77eb16a79e155f8d788b20457f1c951commit-bot@chromium.org info.fColorType = kN32_SkColorType; 23beb0c2aa32622d90dd85aa9723ed6b7c3e2139bdreed@google.com info.fAlphaType = kPremul_SkAlphaType; 246ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com 256ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com fSurface = SkSurface::NewRasterDirect(info, fPixels, 4 * kImageWidgetWidth); 266dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com} 276dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 286dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.comvoid SkImageWidget::paintEvent(QPaintEvent* event) { 296dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com if (this->isHidden()) { 306dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com return; 316dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } 326dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 336dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com QPainter painter(this); 346dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com QStyleOption opt; 356dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com opt.init(this); 366dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 376dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); 386dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 396dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com const SkTDArray<SkDrawCommand*>& commands = fDebugger->getDrawCommands(); 406dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com if (0 != commands.count()) { 416dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com SkDrawCommand* command = commands[fDebugger->index()]; 426dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 436ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com if (command->render(fSurface->getCanvas())) { 446dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com QPoint origin(0,0); 45a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com QImage image((uchar*) fPixels, 466ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com kImageWidgetWidth, 47a009083bd10353b91903cab84362b0e744d3b3b7skia.committer@gmail.com kImageWidgetHeight, 486ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com QImage::Format_ARGB32_Premultiplied); 496dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 506dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com painter.drawImage(origin, image); 516dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } else { 526dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com painter.drawRect(0, 0, kImageWidgetWidth, kImageWidgetHeight); 536dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } 546dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com } 556dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 566dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com painter.end(); 576dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com emit drawComplete(); 586dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com} 59