fHorizontalLayout.addWidget(&fRasterWidget);
fHorizontalLayout.addWidget(&fGLWidget);
- fDebugCanvas = new SkDebugCanvas();
+ fDebugCanvas = NULL;
fIndex = 0;
fPreviousPoint.set(0,0);
fScaleFactor = 1.0;
setWidgetVisibility(kGPU_WidgetType, true);
+ this->setDisabled(true);
}
void SkCanvasWidget::drawTo(int index) {
}
void SkCanvasWidget::loadPicture(QString filename) {
+ this->setDisabled(false);
SkStream* stream = new SkFILEStream(filename.toAscii());
SkPicture* picture = new SkPicture(stream);
/* TODO(chudy): Implement function that doesn't require new
* instantiation of debug canvas. */
delete fDebugCanvas;
- fDebugCanvas = new SkDebugCanvas();
- fDebugCanvas->setBounds(this->width(), this->height());
+ fDebugCanvas = new SkDebugCanvas(picture->width(), picture->height());
+
picture->draw(fDebugCanvas);
fIndex = fDebugCanvas->getSize();
fRasterWidget.setDebugCanvas(fDebugCanvas);
fGLWidget.setDebugCanvas(fDebugCanvas);
+
+ // TODO(chudy): Remove bounds from debug canvas storage.
+ fDebugCanvas->setBounds(this->width(), this->height());
}
void SkCanvasWidget::mouseMoveEvent(QMouseEvent* event) {
void SkCanvasWidget::mousePressEvent(QMouseEvent* event) {
fPreviousPoint.set(event->globalX(), event->globalY());
- fDebugCanvas->getBoxClass()->setHitPoint(event->x(), event->y());
- fDebugCanvas->isCalculatingHits(true);
- drawTo(fIndex);
- emit hitChanged(fDebugCanvas->getHitBoxPoint());
- fDebugCanvas->isCalculatingHits(false);
+ if (fDebugCanvas) {
+ fDebugCanvas->getBoxClass()->setHitPoint(event->x(), event->y());
+ fDebugCanvas->isCalculatingHits(true);
+ drawTo(fIndex);
+ emit hitChanged(fDebugCanvas->getHitBoxPoint());
+ fDebugCanvas->isCalculatingHits(false);
+ }
}
void SkCanvasWidget::mouseDoubleClickEvent(QMouseEvent* event) {
fTransform.set(0,0);
fScaleFactor = 1.0;
fIndex = 0;
-
- fDebugCanvas = new SkDebugCanvas();
+ fDebugCanvas = NULL;
this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
}
fBitmap.allocPixels();
delete fDevice;
fDevice = new SkDevice(fBitmap);
- fDebugCanvas->setBounds(event->size().width(), event->size().height());
- this->update();
+ //TODO(chudy): Debug Canvas shouldn't store current size. The bitmap
+ //or texture backend should already have it. Refactor.
+ if (fDebugCanvas) {
+ fDebugCanvas->setBounds(event->size().width(), event->size().height());
+ this->update();
+ }
}
void SkRasterWidget::paintEvent(QPaintEvent* event) {
- fBitmap.eraseColor(0);
- SkCanvas canvas(fDevice);
- canvas.translate(fTransform.fX, fTransform.fY);
- if (fScaleFactor < 0) {
- canvas.scale((1.0 / -fScaleFactor), (1.0 / -fScaleFactor));
- } else if (fScaleFactor > 0) {
- canvas.scale(fScaleFactor, fScaleFactor);
- }
+ if (fDebugCanvas) {
+ fBitmap.eraseColor(0);
+ SkCanvas canvas(fDevice);
+ canvas.translate(fTransform.fX, fTransform.fY);
+ if (fScaleFactor < 0) {
+ canvas.scale((1.0 / -fScaleFactor), (1.0 / -fScaleFactor));
+ } else if (fScaleFactor > 0) {
+ canvas.scale(fScaleFactor, fScaleFactor);
+ }
- fMatrix = canvas.getTotalMatrix();
- fClip = canvas.getTotalClip().getBounds();
- fDebugCanvas->drawTo(&canvas, fIndex+1, &fBitmap);
+ fMatrix = canvas.getTotalMatrix();
+ fClip = canvas.getTotalClip().getBounds();
+ fDebugCanvas->drawTo(&canvas, fIndex+1, &fBitmap);
- QPainter painter(this);
- QStyleOption opt;
- opt.init(this);
+ QPainter painter(this);
+ QStyleOption opt;
+ opt.init(this);
- style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
+ style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
- QPoint origin(0,0);
- QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(),
- fBitmap.height(), QImage::Format_ARGB32_Premultiplied);
+ QPoint origin(0,0);
+ QImage image((uchar *)fBitmap.getPixels(), fBitmap.width(),
+ fBitmap.height(), QImage::Format_ARGB32_Premultiplied);
- painter.drawImage(origin, image);
- painter.end();
+ painter.drawImage(origin, image);
+ painter.end();
+ }
}