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/SkRasterWidget.cpp b/debugger/QT/SkRasterWidget.cpp
index 0549649..8c6a284 100644
--- a/debugger/QT/SkRasterWidget.cpp
+++ b/debugger/QT/SkRasterWidget.cpp
@@ -16,8 +16,7 @@
fTransform.set(0,0);
fScaleFactor = 1.0;
fIndex = 0;
-
- fDebugCanvas = new SkDebugCanvas();
+ fDebugCanvas = NULL;
this->setStyleSheet("QWidget {background-color: white; border: 1px solid #cccccc;}");
}
@@ -31,34 +30,40 @@
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);
+
+ QPainter painter(this);
+ QStyleOption opt;
+ opt.init(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);
+
+ painter.drawImage(origin, image);
+ painter.end();
}
-
- fMatrix = canvas.getTotalMatrix();
- fClip = canvas.getTotalClip().getBounds();
- fDebugCanvas->drawTo(&canvas, fIndex+1, &fBitmap);
-
- QPainter painter(this);
- QStyleOption opt;
- opt.init(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);
-
- painter.drawImage(origin, image);
- painter.end();
}