зеркало из https://github.com/mozilla/moz-skia.git
Modifying the behavior of render_pictures --validate to test the effect of bbh.
The new behavior consists in using the same renderer, with bbh disabled, as a reference renderer when the current renderer has a bbh. Review URL: https://codereview.chromium.org/12801002 git-svn-id: http://skia.googlecode.com/svn/trunk@8132 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
Родитель
306b2ce0e2
Коммит
e286e84a6a
|
@ -171,6 +171,8 @@ public:
|
||||||
fBBoxHierarchyType = bbhType;
|
fBBoxHierarchyType = bbhType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BBoxHierarchyType getBBoxHierarchyType() { return fBBoxHierarchyType; }
|
||||||
|
|
||||||
void setGridSize(int width, int height) {
|
void setGridSize(int width, int height) {
|
||||||
fGridInfo.fTileInterval.set(width, height);
|
fGridInfo.fTileInterval.set(width, height);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,8 @@ DEFINE_string(w, "", "Directory to write the rendered images.");
|
||||||
DEFINE_bool(writeWholeImage, false, "In tile mode, write the entire rendered image to a "
|
DEFINE_bool(writeWholeImage, false, "In tile mode, write the entire rendered image to a "
|
||||||
"file, instead of an image for each tile.");
|
"file, instead of an image for each tile.");
|
||||||
DEFINE_bool(validate, false, "Verify that the rendered image contains the same pixels as "
|
DEFINE_bool(validate, false, "Verify that the rendered image contains the same pixels as "
|
||||||
"the picture rendered in simple mode.");
|
"the picture rendered in simple mode. When used in conjunction with --bbh, results "
|
||||||
|
"are validated against the picture rendered in the same mode, but without the bbh.");
|
||||||
|
|
||||||
static void make_output_filepath(SkString* path, const SkString& dir,
|
static void make_output_filepath(SkString* path, const SkString& dir,
|
||||||
const SkString& name) {
|
const SkString& name) {
|
||||||
|
@ -142,6 +143,32 @@ static int MaxByteDiff(uint32_t v1, uint32_t v2) {
|
||||||
SkMax32(abs(getByte(v1, 2) - getByte(v2, 2)), abs(getByte(v1, 3) - getByte(v2, 3))));
|
SkMax32(abs(getByte(v1, 2) - getByte(v2, 2)), abs(getByte(v1, 3) - getByte(v2, 3))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class AutoRestoreBbhType {
|
||||||
|
public:
|
||||||
|
AutoRestoreBbhType() {
|
||||||
|
fRenderer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set(sk_tools::PictureRenderer* renderer,
|
||||||
|
sk_tools::PictureRenderer::BBoxHierarchyType bbhType) {
|
||||||
|
fRenderer = renderer;
|
||||||
|
fSavedBbhType = renderer->getBBoxHierarchyType();
|
||||||
|
renderer->setBBoxHierarchyType(bbhType);
|
||||||
|
}
|
||||||
|
|
||||||
|
~AutoRestoreBbhType() {
|
||||||
|
if (NULL != fRenderer) {
|
||||||
|
fRenderer->setBBoxHierarchyType(fSavedBbhType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
sk_tools::PictureRenderer* fRenderer;
|
||||||
|
sk_tools::PictureRenderer::BBoxHierarchyType fSavedBbhType;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
static bool render_picture(const SkString& inputPath, const SkString* outputDir,
|
static bool render_picture(const SkString& inputPath, const SkString* outputDir,
|
||||||
sk_tools::PictureRenderer& renderer) {
|
sk_tools::PictureRenderer& renderer) {
|
||||||
int diffs[256] = {0};
|
int diffs[256] = {0};
|
||||||
|
@ -159,8 +186,21 @@ static bool render_picture(const SkString& inputPath, const SkString* outputDir,
|
||||||
|
|
||||||
if (FLAGS_validate) {
|
if (FLAGS_validate) {
|
||||||
SkBitmap* referenceBitmap = NULL;
|
SkBitmap* referenceBitmap = NULL;
|
||||||
sk_tools::SimplePictureRenderer referenceRenderer;
|
sk_tools::PictureRenderer* referenceRenderer;
|
||||||
success = render_picture(inputPath, NULL, referenceRenderer,
|
// If the renderer uses a BBoxHierarchy, then the reference renderer
|
||||||
|
// will be the same renderer, without the bbh.
|
||||||
|
AutoRestoreBbhType arbbh;
|
||||||
|
if (sk_tools::PictureRenderer::kNone_BBoxHierarchyType !=
|
||||||
|
renderer.getBBoxHierarchyType()) {
|
||||||
|
referenceRenderer = &renderer;
|
||||||
|
referenceRenderer->ref(); // to match auto unref below
|
||||||
|
arbbh.set(referenceRenderer, sk_tools::PictureRenderer::kNone_BBoxHierarchyType);
|
||||||
|
} else {
|
||||||
|
referenceRenderer = SkNEW(sk_tools::SimplePictureRenderer);
|
||||||
|
}
|
||||||
|
SkAutoTUnref<sk_tools::PictureRenderer> aurReferenceRenderer(referenceRenderer);
|
||||||
|
|
||||||
|
success = render_picture(inputPath, NULL, *referenceRenderer,
|
||||||
&referenceBitmap);
|
&referenceBitmap);
|
||||||
|
|
||||||
if (!success || NULL == referenceBitmap || NULL == referenceBitmap->getPixels()) {
|
if (!success || NULL == referenceBitmap || NULL == referenceBitmap->getPixels()) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче