Canvas size initializes correctly when drawing from a skia picture
Review URL: https://codereview.appspot.com/6450065
git-svn-id: http://skia.googlecode.com/svn/trunk@4837 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/debugger/QT/SkCanvasWidget.cpp b/debugger/QT/SkCanvasWidget.cpp
index ec6c0c8..47db709 100644
--- a/debugger/QT/SkCanvasWidget.cpp
+++ b/debugger/QT/SkCanvasWidget.cpp
@@ -23,7 +23,7 @@
fHorizontalLayout.addWidget(&fRasterWidget);
fHorizontalLayout.addWidget(&fGLWidget);
- fDebugCanvas = new SkDebugCanvas();
+ fDebugCanvas = NULL;
fIndex = 0;
fPreviousPoint.set(0,0);
@@ -31,6 +31,7 @@
fScaleFactor = 1.0;
setWidgetVisibility(kGPU_WidgetType, true);
+ this->setDisabled(true);
}
void SkCanvasWidget::drawTo(int index) {
@@ -45,18 +46,22 @@
}
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) {
@@ -69,11 +74,13 @@
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) {