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 "SkRasterWidget.h"
     10 
     11 SkRasterWidget::SkRasterWidget(SkDebugger *debugger) : QWidget() {
     12     fBitmap.allocN32Pixels(800, 800);
     13     fBitmap.eraseColor(SK_ColorTRANSPARENT);
     14     fDevice = new SkBitmapDevice(fBitmap);
     15     fDebugger = debugger;
     16     fCanvas = new SkCanvas(fDevice);
     17     this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
     18 }
     19 
     20 SkRasterWidget::~SkRasterWidget() {
     21     SkSafeUnref(fCanvas);
     22     SkSafeUnref(fDevice);
     23 }
     24 
     25 void SkRasterWidget::resizeEvent(QResizeEvent* event) {
     26     fBitmap.allocN32Pixels(event->size().width(), event->size().height());
     27     fBitmap.eraseColor(SK_ColorTRANSPARENT);
     28     SkSafeUnref(fCanvas);
     29     SkSafeUnref(fDevice);
     30     fDevice = new SkBitmapDevice(fBitmap);
     31     fCanvas = new SkCanvas(fDevice);
     32     fDebugger->resize(event->size().width(), event->size().height());
     33     this->update();
     34 }
     35 
     36 void SkRasterWidget::paintEvent(QPaintEvent* event) {
     37     if (!this->isHidden()) {
     38         fDebugger->draw(fCanvas);
     39         QPainter painter(this);
     40         QStyleOption opt;
     41         opt.init(this);
     42 
     43         style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
     44 
     45         QPoint origin(0,0);
     46         QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(),
     47                 fBitmap.height(), QImage::Format_ARGB32_Premultiplied);
     48 
     49 #if SK_R32_SHIFT == 0
     50         painter.drawImage(origin, image.rgbSwapped());
     51 #else
     52         painter.drawImage(origin, image);
     53 #endif
     54         painter.end();
     55         emit drawComplete();
     56     }
     57 }
     58