Add an option to render_pictures to rerecord the pictures with PNG encoded bitmaps.
Review URL: https://codereview.appspot.com/6821092 git-svn-id: http://skia.googlecode.com/svn/trunk@6332 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
adc58e4f48
commit
a9e3a369c1
@ -21,6 +21,7 @@
|
|||||||
#include "SkPicture.h"
|
#include "SkPicture.h"
|
||||||
#include "SkRTree.h"
|
#include "SkRTree.h"
|
||||||
#include "SkScalar.h"
|
#include "SkScalar.h"
|
||||||
|
#include "SkStream.h"
|
||||||
#include "SkString.h"
|
#include "SkString.h"
|
||||||
#include "SkTemplates.h"
|
#include "SkTemplates.h"
|
||||||
#include "SkTileGrid.h"
|
#include "SkTileGrid.h"
|
||||||
@ -213,13 +214,25 @@ SkCanvas* RecordPictureRenderer::setupCanvas(int width, int height) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RecordPictureRenderer::render(const SkString*) {
|
static bool PNGEncodeBitmapToStream(SkWStream* wStream, const SkBitmap& bm) {
|
||||||
|
return SkImageEncoder::EncodeStream(wStream, bm, SkImageEncoder::kPNG_Type, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RecordPictureRenderer::render(const SkString* path) {
|
||||||
SkAutoTUnref<SkPicture> replayer(this->createPicture());
|
SkAutoTUnref<SkPicture> replayer(this->createPicture());
|
||||||
SkCanvas* recorder = replayer->beginRecording(fPicture->width(), fPicture->height(),
|
SkCanvas* recorder = replayer->beginRecording(fPicture->width(), fPicture->height(),
|
||||||
this->recordFlags());
|
this->recordFlags());
|
||||||
fPicture->draw(recorder);
|
fPicture->draw(recorder);
|
||||||
replayer->endRecording();
|
replayer->endRecording();
|
||||||
// Since this class does not actually render, return false.
|
if (path != NULL) {
|
||||||
|
// Record the new picture as a new SKP with PNG encoded bitmaps.
|
||||||
|
SkString skpPath(*path);
|
||||||
|
// ".skp" was removed from 'path' before being passed in here.
|
||||||
|
skpPath.append(".skp");
|
||||||
|
SkFILEWStream stream(skpPath.c_str());
|
||||||
|
replayer->serialize(&stream, &PNGEncodeBitmapToStream);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ static void usage(const char* argv0) {
|
|||||||
SkDebugf(
|
SkDebugf(
|
||||||
" outputDir: directory to write the rendered images.\n\n");
|
" outputDir: directory to write the rendered images.\n\n");
|
||||||
SkDebugf(
|
SkDebugf(
|
||||||
" --mode pow2tile minWidth height[%] | simple\n"
|
" --mode pow2tile minWidth height[%] | simple | rerecord\n"
|
||||||
" | tile width[%] height[%]: Run in the corresponding mode.\n"
|
" | tile width[%] height[%]: Run in the corresponding mode.\n"
|
||||||
" Default is simple.\n");
|
" Default is simple.\n");
|
||||||
SkDebugf(
|
SkDebugf(
|
||||||
@ -55,7 +55,9 @@ static void usage(const char* argv0) {
|
|||||||
" power of two. A simple render\n"
|
" power of two. A simple render\n"
|
||||||
" is done with these tiles.\n");
|
" is done with these tiles.\n");
|
||||||
SkDebugf(
|
SkDebugf(
|
||||||
" simple, Render using the default rendering method.\n");
|
" simple, Render using the default rendering method.\n"
|
||||||
|
" rerecord, Record the picture as a new skp, with the bitmaps PNG encoded.\n"
|
||||||
|
);
|
||||||
SkDebugf(
|
SkDebugf(
|
||||||
" tile width[%] height[%], Do a simple render using tiles\n"
|
" tile width[%] height[%], Do a simple render using tiles\n"
|
||||||
" with the given dimensions.\n");
|
" with the given dimensions.\n");
|
||||||
@ -213,6 +215,8 @@ static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>*
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
heightString = *argv;
|
heightString = *argv;
|
||||||
|
} else if (0 == strcmp(*argv, "rerecord")) {
|
||||||
|
renderer = SkNEW(sk_tools::RecordPictureRenderer);
|
||||||
} else {
|
} else {
|
||||||
SkDebugf("%s is not a valid mode for --mode\n", *argv);
|
SkDebugf("%s is not a valid mode for --mode\n", *argv);
|
||||||
usage(argv0);
|
usage(argv0);
|
||||||
|
Loading…
Reference in New Issue
Block a user