Try out scalar picture sizes
This paves the way for removing the 'fTile' parameter from SkPictureShader (although that should be a different CL). If we like this we could also move to providing an entire cull SkRect.
R=reed@google.com, mtklein@google.com, fmalita@google.com, fmalita@chromium.org
Author: robertphillips@google.com
Review URL: https://codereview.chromium.org/513983002
diff --git a/debugger/QT/SkGLWidget.cpp b/debugger/QT/SkGLWidget.cpp
index 602dc24..dece641 100644
--- a/debugger/QT/SkGLWidget.cpp
+++ b/debugger/QT/SkGLWidget.cpp
@@ -68,7 +68,7 @@
fGpuDevice = SkGpuDevice::Create(curRenderTarget);
fCanvas = new SkCanvas(fGpuDevice);
}
- fDebugger->resize(w, h);
+ fDebugger->setWindowSize(w, h);
draw();
}
diff --git a/debugger/QT/SkRasterWidget.cpp b/debugger/QT/SkRasterWidget.cpp
index 705fdf0..ad05d39 100644
--- a/debugger/QT/SkRasterWidget.cpp
+++ b/debugger/QT/SkRasterWidget.cpp
@@ -29,7 +29,7 @@
SkSafeUnref(fDevice);
fDevice = new SkBitmapDevice(fBitmap);
fCanvas = new SkCanvas(fDevice);
- fDebugger->resize(event->size().width(), event->size().height());
+ fDebugger->setWindowSize(event->size().width(), event->size().height());
this->update();
}
diff --git a/debugger/SkDebugger.cpp b/debugger/SkDebugger.cpp
index af6900c..fda8f9a 100644
--- a/debugger/SkDebugger.cpp
+++ b/debugger/SkDebugger.cpp
@@ -13,10 +13,8 @@
SkDebugger::SkDebugger() {
// Create this some other dynamic way?
- fDebugCanvas = new SkDebugCanvas(100, 100);
+ fDebugCanvas = new SkDebugCanvas(0, 0);
fPicture = NULL;
- fPictureWidth = 0;
- fPictureHeight = 0;
fIndex = 0;
}
@@ -27,23 +25,23 @@
}
void SkDebugger::loadPicture(SkPicture* picture) {
- fPictureWidth = picture->width();
- fPictureHeight = picture->height();
+ SkRefCnt_SafeAssign(fPicture, picture);
+
delete fDebugCanvas;
- fDebugCanvas = new SkDebugCanvas(fPictureWidth, fPictureHeight);
- fDebugCanvas->setBounds(fPictureWidth, fPictureHeight);
+ fDebugCanvas = new SkDebugCanvas(SkScalarCeilToInt(this->pictureCull().width()),
+ SkScalarCeilToInt(this->pictureCull().height()));
fDebugCanvas->setPicture(picture);
picture->draw(fDebugCanvas);
fDebugCanvas->setPicture(NULL);
fIndex = fDebugCanvas->getSize() - 1;
- SkRefCnt_SafeAssign(fPicture, picture);
}
SkPicture* SkDebugger::copyPicture() {
// We can't just call clone here since we want to removed the "deleted"
// commands. Playing back will strip those out.
SkPictureRecorder recorder;
- SkCanvas* canvas = recorder.beginRecording(fPictureWidth, fPictureHeight, NULL, 0);
+ SkCanvas* canvas = recorder.beginRecording(this->pictureCull().width(),
+ this->pictureCull().height());
bool vizMode = fDebugCanvas->getMegaVizMode();
fDebugCanvas->setMegaVizMode(false);
@@ -143,13 +141,15 @@
totalStr.append("<br/>");
overview->insert(0, totalStr);
+ overview->append("<br/>SkPicture L: ");
+ overview->appendScalar(this->pictureCull().fLeft);
+ overview->append(" T: ");
+ overview->appendScalar(this->pictureCull().fTop);
+ overview->append(" R: ");
+ overview->appendScalar(this->pictureCull().fRight);
+ overview->append(" B: ");
+ overview->appendScalar(this->pictureCull().fBottom);
overview->append("<br/>");
- overview->append("SkPicture Width: ");
- overview->appendS32(pictureWidth());
- overview->append("px<br/>");
- overview->append("SkPicture Height: ");
- overview->appendS32(pictureHeight());
- overview->append("px");
}
void SkDebugger::getClipStackText(SkString* clipStack) {
diff --git a/debugger/SkDebugger.h b/debugger/SkDebugger.h
index ffb2953..9ad21e2 100644
--- a/debugger/SkDebugger.h
+++ b/debugger/SkDebugger.h
@@ -60,9 +60,7 @@
fDebugCanvas->toggleFilter(on);
}
- void resize(int width, int height) {
- fDebugCanvas->setBounds(width, height);
- }
+ void setWindowSize(int width, int height) { fDebugCanvas->setWindowSize(width, height); }
void loadPicture(SkPicture* picture);
@@ -93,12 +91,8 @@
return fDebugCanvas->getCurrentClip();
}
- int pictureHeight() {
- return fPictureHeight;
- }
-
- int pictureWidth() {
- return fPictureWidth;
+ SkRect pictureCull() const {
+ return NULL == fPicture ? SkRect::MakeEmpty() : fPicture->cullRect();
}
int index() {
@@ -138,8 +132,6 @@
SkDebugCanvas* fDebugCanvas;
SkPicture* fPicture;
- int fPictureWidth;
- int fPictureHeight;
int fIndex;
};