aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-04-17 23:35:06 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-04-17 23:35:06 +0000
commit5fb2ce38b3dcb8e60e9e112df23c9d42456d7069 (patch)
tree521360e38040e661934a07f7fe1c2c49f520940b /tools
parentd24a130c1217873d0744d35722005516a0acb774 (diff)
Staged removal of SkPicture-derived classes
This CL removes the SkPicture-derived classes (with a flag to keeps clients working). In the process it also lightens the recording factory function so it is no longer ref counted). The only interesting bits are in SkPicture* and Sk*Picture.* R=reed@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/238273012 git-svn-id: http://skia.googlecode.com/svn/trunk@14251 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tools')
-rw-r--r--tools/PictureRenderer.cpp23
-rw-r--r--tools/PictureRenderer.h4
-rw-r--r--tools/PictureRenderingFlags.cpp4
-rw-r--r--tools/bench_record.cpp57
-rw-r--r--tools/filtermain.cpp2
-rw-r--r--tools/render_pictures_main.cpp3
-rw-r--r--tools/skpmaker.cpp2
7 files changed, 39 insertions, 56 deletions
diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp
index 8aedc15b33..cd87f608a8 100644
--- a/tools/PictureRenderer.cpp
+++ b/tools/PictureRenderer.cpp
@@ -274,9 +274,10 @@ int PictureRenderer::getViewHeight() {
void PictureRenderer::buildBBoxHierarchy() {
SkASSERT(NULL != fPicture);
if (kNone_BBoxHierarchyType != fBBoxHierarchyType && NULL != fPicture) {
- SkAutoTUnref<SkPictureFactory> factory(this->getFactory());
- SkPictureRecorder recorder(factory);
+ SkAutoTDelete<SkBBHFactory> factory(this->getFactory());
+ SkPictureRecorder recorder;
SkCanvas* canvas = recorder.beginRecording(fPicture->width(), fPicture->height(),
+ factory.get(),
this->recordFlags());
fPicture->draw(canvas);
fPicture.reset(recorder.endRecording());
@@ -435,9 +436,10 @@ static SkData* encode_bitmap_to_data(size_t*, const SkBitmap& bm) {
}
bool RecordPictureRenderer::render(SkBitmap** out) {
- SkAutoTUnref<SkPictureFactory> factory(this->getFactory());
- SkPictureRecorder recorder(factory);
+ SkAutoTDelete<SkBBHFactory> factory(this->getFactory());
+ SkPictureRecorder recorder;
SkCanvas* canvas = recorder.beginRecording(this->getViewWidth(), this->getViewHeight(),
+ factory.get(),
this->recordFlags());
this->scaleToScaleFactor(canvas);
fPicture->draw(canvas);
@@ -954,9 +956,10 @@ SkString MultiCorePictureRenderer::getConfigNameInternal() {
///////////////////////////////////////////////////////////////////////////////////////////////
void PlaybackCreationRenderer::setup() {
- SkAutoTUnref<SkPictureFactory> factory(this->getFactory());
- fRecorder.reset(SkNEW_ARGS(SkPictureRecorder, (factory)));
+ SkAutoTDelete<SkBBHFactory> factory(this->getFactory());
+ fRecorder.reset(SkNEW(SkPictureRecorder));
SkCanvas* canvas = fRecorder->beginRecording(this->getViewWidth(), this->getViewHeight(),
+ factory.get(),
this->recordFlags());
this->scaleToScaleFactor(canvas);
canvas->drawPicture(*fPicture);
@@ -975,16 +978,16 @@ SkString PlaybackCreationRenderer::getConfigNameInternal() {
///////////////////////////////////////////////////////////////////////////////////////////////
// SkPicture variants for each BBoxHierarchy type
-SkPictureFactory* PictureRenderer::getFactory() {
+SkBBHFactory* PictureRenderer::getFactory() {
switch (fBBoxHierarchyType) {
case kNone_BBoxHierarchyType:
return NULL;
case kQuadTree_BBoxHierarchyType:
- return SkNEW(SkQuadTreePictureFactory);
+ return SkNEW(SkQuadTreeFactory);
case kRTree_BBoxHierarchyType:
- return SkNEW(SkRTreePictureFactory);
+ return SkNEW(SkRTreeFactory);
case kTileGrid_BBoxHierarchyType:
- return new SkTileGridPictureFactory(fGridInfo);
+ return SkNEW_ARGS(SkTileGridFactory, (fGridInfo));
}
SkASSERT(0); // invalid bbhType
return NULL;
diff --git a/tools/PictureRenderer.h b/tools/PictureRenderer.h
index 4c5b426887..a8c0cc52c3 100644
--- a/tools/PictureRenderer.h
+++ b/tools/PictureRenderer.h
@@ -409,7 +409,7 @@ protected:
SkString fDrawFiltersConfig;
SkString fOutputDir;
SkString fInputFilename;
- SkTileGridPicture::TileGridInfo fGridInfo; // used when fBBoxHierarchyType is TileGrid
+ SkTileGridFactory::TileGridInfo fGridInfo; // used when fBBoxHierarchyType is TileGrid
void buildBBoxHierarchy();
@@ -430,7 +430,7 @@ protected:
*/
void scaleToScaleFactor(SkCanvas*);
- SkPictureFactory* getFactory();
+ SkBBHFactory* getFactory();
uint32_t recordFlags();
SkCanvas* setupCanvas();
virtual SkCanvas* setupCanvas(int width, int height);
diff --git a/tools/PictureRenderingFlags.cpp b/tools/PictureRenderingFlags.cpp
index 0c4bc75fa0..5acec267b0 100644
--- a/tools/PictureRenderingFlags.cpp
+++ b/tools/PictureRenderingFlags.cpp
@@ -135,7 +135,9 @@ sk_tools::PictureRenderer* parseRenderer(SkString& error, PictureTool tool) {
// Allow 'mode' to be set to 'simple', but do not create a renderer, so we can
// ensure that pipe does not override a mode besides simple. The renderer will
// be created below.
- } else if (0 != strcmp(mode, "simple")) {
+ } else if (0 == strcmp(mode, "simple")) {
+ gridSupported = true;
+ } else {
error.printf("%s is not a valid mode for --mode\n", mode);
return NULL;
}
diff --git a/tools/bench_record.cpp b/tools/bench_record.cpp
index 0798de21e7..65198fa5ba 100644
--- a/tools/bench_record.cpp
+++ b/tools/bench_record.cpp
@@ -34,50 +34,29 @@ DEFINE_int32(tileGridSize, 512, "Set the tile grid size. Has no effect if bbh is
DEFINE_string(bbh, "", "Turn on the bbh and select the type, one of rtree, tilegrid, quadtree");
DEFINE_bool(skr, false, "Record SKR instead of SKP.");
-typedef SkPictureFactory* (*PictureFactory)();
-
-static SkPictureFactory* vanilla_factory() {
- return NULL;
-}
-
-static SkPictureFactory* rtree_factory() {
- return SkNEW(SkRTreePictureFactory);
-}
-
-static SkPictureFactory* tilegrid_factory() {
- SkTileGridPicture::TileGridInfo info;
- info.fTileInterval.set(FLAGS_tileGridSize, FLAGS_tileGridSize);
- info.fMargin.setEmpty();
- info.fOffset.setZero();
- return SkNEW_ARGS(SkTileGridPictureFactory, (info));
-}
-
-static SkPictureFactory* quadtree_factory() {
- return SkNEW(SkQuadTreePictureFactory);
-}
-
-static PictureFactory parse_FLAGS_bbh() {
+static SkBBHFactory* parse_FLAGS_bbh() {
if (FLAGS_bbh.isEmpty()) {
- return &vanilla_factory;
- }
- if (FLAGS_bbh.count() != 1) {
- SkDebugf("Multiple bbh arguments supplied.\n");
return NULL;
}
+
if (FLAGS_bbh.contains("rtree")) {
- return rtree_factory;
+ return SkNEW(SkRTreeFactory);
}
if (FLAGS_bbh.contains("tilegrid")) {
- return tilegrid_factory;
+ SkTileGridFactory::TileGridInfo info;
+ info.fTileInterval.set(FLAGS_tileGridSize, FLAGS_tileGridSize);
+ info.fMargin.setEmpty();
+ info.fOffset.setZero();
+ return SkNEW_ARGS(SkTileGridFactory, (info));
}
if (FLAGS_bbh.contains("quadtree")) {
- return quadtree_factory;
+ return SkNEW(SkQuadTreeFactory);
}
SkDebugf("Invalid bbh type %s, must be one of rtree, tilegrid, quadtree.\n", FLAGS_bbh[0]);
return NULL;
}
-static void bench_record(SkPicture* src, const char* name, PictureFactory pictureFactory) {
+static void bench_record(SkPicture* src, const char* name, SkBBHFactory* bbhFactory) {
const SkMSec start = SkTime::GetMSecs();
const int width = src ? src->width() : FLAGS_nullSize;
const int height = src ? src->height() : FLAGS_nullSize;
@@ -91,10 +70,8 @@ static void bench_record(SkPicture* src, const char* name, PictureFactory pictur
}
SkDELETE(SkRecording::Delete(recording)); // delete the SkPlayback*.
} else {
- int recordingFlags = FLAGS_flags;
- SkAutoTUnref<SkPictureFactory> factory(pictureFactory());
- SkPictureRecorder recorder(factory);
- SkCanvas* canvas = recorder.beginRecording(width, height, recordingFlags);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = recorder.beginRecording(width, height, bbhFactory, FLAGS_flags);
if (NULL != src) {
src->draw(canvas);
}
@@ -114,11 +91,13 @@ int tool_main(int argc, char** argv) {
SkCommandLineFlags::Parse(argc, argv);
SkAutoGraphics autoGraphics;
- PictureFactory pictureFactory = parse_FLAGS_bbh();
- if (pictureFactory == NULL) {
+ if (FLAGS_bbh.count() > 1) {
+ SkDebugf("Multiple bbh arguments supplied.\n");
return 1;
}
- bench_record(NULL, "NULL", pictureFactory);
+
+ SkAutoTDelete<SkBBHFactory> bbhFactory(parse_FLAGS_bbh());
+ bench_record(NULL, "NULL", bbhFactory.get());
if (FLAGS_skps.isEmpty()) {
return 0;
}
@@ -142,7 +121,7 @@ int tool_main(int argc, char** argv) {
failed = true;
continue;
}
- bench_record(src, filename.c_str(), pictureFactory);
+ bench_record(src, filename.c_str(), bbhFactory.get());
}
return failed ? 1 : 0;
}
diff --git a/tools/filtermain.cpp b/tools/filtermain.cpp
index b61e15d656..ecd1eee5b5 100644
--- a/tools/filtermain.cpp
+++ b/tools/filtermain.cpp
@@ -718,7 +718,7 @@ static int filter_picture(const SkString& inFile, const SkString& outFile) {
if (!outFile.isEmpty()) {
SkPictureRecorder recorder;
- SkCanvas* canvas = recorder.beginRecording(inPicture->width(), inPicture->height());
+ SkCanvas* canvas = recorder.beginRecording(inPicture->width(), inPicture->height(), NULL, 0);
debugCanvas.draw(canvas);
SkAutoTUnref<SkPicture> outPicture(recorder.endRecording());
diff --git a/tools/render_pictures_main.cpp b/tools/render_pictures_main.cpp
index 0e68117c72..444efd0c5f 100644
--- a/tools/render_pictures_main.cpp
+++ b/tools/render_pictures_main.cpp
@@ -173,9 +173,8 @@ static bool render_picture_internal(const SkString& inputPath, const SkString* o
}
while (FLAGS_bench_record) {
- const int kRecordFlags = 0;
SkPictureRecorder recorder;
- picture->draw(recorder.beginRecording(picture->width(), picture->height(), kRecordFlags));
+ picture->draw(recorder.beginRecording(picture->width(), picture->height(), NULL, 0));
SkAutoTUnref<SkPicture> other(recorder.endRecording());
}
diff --git a/tools/skpmaker.cpp b/tools/skpmaker.cpp
index 740d522366..0d46d045a6 100644
--- a/tools/skpmaker.cpp
+++ b/tools/skpmaker.cpp
@@ -27,7 +27,7 @@ DEFINE_string(writePath, "", "Filepath to write the SKP into.");
static void skpmaker(int width, int height, int border, SkColor color,
const char *writePath) {
SkPictureRecorder recorder;
- SkCanvas* canvas = recorder.beginRecording(width, height);
+ SkCanvas* canvas = recorder.beginRecording(width, height, NULL, 0);
SkPaint paint;
paint.setStyle(SkPaint::kFill_Style);
paint.setColor(SK_ColorBLACK);