Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Unified Diff: tests/PictureTest.cpp

Issue 869463002: remove (unused) GatherPixelRefs (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/utils/SkPictureUtils.cpp ('k') | tools/PictureRenderer.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/PictureTest.cpp
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index d69de45fd4a6cdb5ccefaefda7b03a2077bd5a7b..6f9e6e7b38640f9238faae5bd2f240e95355b03c 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -38,9 +38,6 @@
#include "SkLumaColorFilter.h"
#include "SkColorFilterImageFilter.h"
-static const int gColorScale = 30;
-static const int gColorOffset = 60;
-
static void make_bm(SkBitmap* bm, int w, int h, SkColor color, bool immutable) {
bm->allocN32Pixels(w, h);
bm->eraseColor(color);
@@ -49,157 +46,10 @@ static void make_bm(SkBitmap* bm, int w, int h, SkColor color, bool immutable) {
}
}
-static void make_checkerboard(SkBitmap* bm, int w, int h, bool immutable) {
- SkASSERT(w % 2 == 0);
- SkASSERT(h % 2 == 0);
- bm->allocPixels(SkImageInfo::Make(w, h, kAlpha_8_SkColorType,
- kPremul_SkAlphaType));
- SkAutoLockPixels lock(*bm);
- for (int y = 0; y < h; y += 2) {
- uint8_t* s = bm->getAddr8(0, y);
- for (int x = 0; x < w; x += 2) {
- *s++ = 0xFF;
- *s++ = 0x00;
- }
- s = bm->getAddr8(0, y + 1);
- for (int x = 0; x < w; x += 2) {
- *s++ = 0x00;
- *s++ = 0xFF;
- }
- }
- if (immutable) {
- bm->setImmutable();
- }
-}
-
-static void init_paint(SkPaint* paint, const SkBitmap &bm) {
- SkShader* shader = SkShader::CreateBitmapShader(bm,
- SkShader::kClamp_TileMode,
- SkShader::kClamp_TileMode);
- paint->setShader(shader)->unref();
-}
-
robertphillips 2015/01/22 15:37:05 Remove this?
reed1 2015/01/22 17:02:40 Will do in followup CL
typedef void (*DrawBitmapProc)(SkCanvas*, const SkBitmap&,
const SkBitmap&, const SkPoint&,
SkTDArray<SkPixelRef*>* usedPixRefs);
-static void drawpaint_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- canvas->drawPaint(paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawpoints_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- // draw a rect
- SkPoint points[5] = {
- { pos.fX, pos.fY },
- { pos.fX + bm.width() - 1, pos.fY },
- { pos.fX + bm.width() - 1, pos.fY + bm.height() - 1 },
- { pos.fX, pos.fY + bm.height() - 1 },
- { pos.fX, pos.fY },
- };
-
- canvas->drawPoints(SkCanvas::kPolygon_PointMode, 5, points, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawrect_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- SkRect r = { 0, 0, SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) };
- r.offset(pos.fX, pos.fY);
-
- canvas->drawRect(r, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawoval_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- SkRect r = { 0, 0, SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) };
- r.offset(pos.fX, pos.fY);
-
- canvas->drawOval(r, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawrrect_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- SkRect r = { 0, 0, SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) };
- r.offset(pos.fX, pos.fY);
-
- SkRRect rr;
- rr.setRectXY(r, SkIntToScalar(bm.width())/4, SkIntToScalar(bm.height())/4);
- canvas->drawRRect(rr, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawpath_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- SkPath path;
- path.lineTo(bm.width()/2.0f, SkIntToScalar(bm.height()));
- path.lineTo(SkIntToScalar(bm.width()), 0);
- path.close();
- path.offset(pos.fX, pos.fY);
-
- canvas->drawPath(path, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawbitmap_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- canvas->drawBitmap(bm, pos.fX, pos.fY, NULL);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawbitmap_withshader_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- // The bitmap in the paint is ignored unless we're drawing an A8 bitmap
- canvas->drawBitmap(altBM, pos.fX, pos.fY, &paint);
- *usedPixRefs->append() = bm.pixelRef();
- *usedPixRefs->append() = altBM.pixelRef();
-}
-
-static void drawsprite_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- const SkMatrix& ctm = canvas->getTotalMatrix();
-
- SkPoint p(pos);
- ctm.mapPoints(&p, 1);
-
- canvas->drawSprite(bm, (int)p.fX, (int)p.fY, NULL);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
robertphillips 2015/01/22 15:37:05 Remove this too
reed1 2015/01/22 17:02:40 Will do in followup CL
#if 0
// Although specifiable, this case doesn't seem to make sense (i.e., the
// bitmap in the shader is never used).
@@ -220,368 +70,6 @@ static void drawsprite_withshader_proc(SkCanvas* canvas, const SkBitmap& bm,
}
#endif
-static void drawbitmaprect_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkRect r = { 0, 0, SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) };
-
- r.offset(pos.fX, pos.fY);
- canvas->drawBitmapRectToRect(bm, NULL, r, NULL);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawbitmaprect_withshader_proc(SkCanvas* canvas,
- const SkBitmap& bm,
- const SkBitmap& altBM,
- const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- SkRect r = { 0, 0, SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) };
- r.offset(pos.fX, pos.fY);
-
- // The bitmap in the paint is ignored unless we're drawing an A8 bitmap
- canvas->drawBitmapRectToRect(altBM, NULL, r, &paint);
- *usedPixRefs->append() = bm.pixelRef();
- *usedPixRefs->append() = altBM.pixelRef();
-}
-
-static void drawtext_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
- paint.setTextSize(SkIntToScalar(1.5*bm.width()));
-
- canvas->drawText("0", 1, pos.fX, pos.fY+bm.width(), paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawpostext_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
- paint.setTextSize(SkIntToScalar(1.5*bm.width()));
-
- SkPoint point = { pos.fX, pos.fY + bm.height() };
- canvas->drawPosText("O", 1, &point, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawtextonpath_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
-
- init_paint(&paint, bm);
- paint.setTextSize(SkIntToScalar(1.5*bm.width()));
-
- SkPath path;
- path.lineTo(SkIntToScalar(bm.width()), 0);
- path.offset(pos.fX, pos.fY+bm.height());
-
- canvas->drawTextOnPath("O", 1, path, NULL, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-static void drawverts_proc(SkCanvas* canvas, const SkBitmap& bm,
- const SkBitmap& altBM, const SkPoint& pos,
- SkTDArray<SkPixelRef*>* usedPixRefs) {
- SkPaint paint;
- init_paint(&paint, bm);
-
- SkPoint verts[4] = {
- { pos.fX, pos.fY },
- { pos.fX + bm.width(), pos.fY },
- { pos.fX + bm.width(), pos.fY + bm.height() },
- { pos.fX, pos.fY + bm.height() }
- };
- SkPoint texs[4] = { { 0, 0 },
- { SkIntToScalar(bm.width()), 0 },
- { SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) },
- { 0, SkIntToScalar(bm.height()) } };
- uint16_t indices[6] = { 0, 1, 2, 0, 2, 3 };
-
- canvas->drawVertices(SkCanvas::kTriangles_VertexMode, 4, verts, texs, NULL, NULL,
- indices, 6, paint);
- *usedPixRefs->append() = bm.pixelRef();
-}
-
-// Return a picture with the bitmaps drawn at the specified positions.
-static SkPicture* record_bitmaps(const SkBitmap bm[],
- const SkPoint pos[],
- SkTDArray<SkPixelRef*> analytic[],
- int count,
- DrawBitmapProc proc) {
- SkPictureRecorder recorder;
- SkCanvas* canvas = recorder.beginRecording(1000, 1000);
- for (int i = 0; i < count; ++i) {
- analytic[i].rewind();
- canvas->save();
- SkRect clipRect = SkRect::MakeXYWH(pos[i].fX, pos[i].fY,
- SkIntToScalar(bm[i].width()),
- SkIntToScalar(bm[i].height()));
- canvas->clipRect(clipRect, SkRegion::kIntersect_Op);
- proc(canvas, bm[i], bm[count+i], pos[i], &analytic[i]);
- canvas->restore();
- }
- return recorder.endRecording();
-}
-
-static void rand_rect(SkRect* rect, SkRandom& rand, SkScalar W, SkScalar H) {
- rect->fLeft = rand.nextRangeScalar(-W, 2*W);
- rect->fTop = rand.nextRangeScalar(-H, 2*H);
- rect->fRight = rect->fLeft + rand.nextRangeScalar(0, W);
- rect->fBottom = rect->fTop + rand.nextRangeScalar(0, H);
-
- // we integralize rect to make our tests more predictable, since Gather is
- // a little sloppy.
- SkIRect ir;
- rect->round(&ir);
- rect->set(ir);
-}
-
-static void draw(SkPicture* pic, int width, int height, SkBitmap* result) {
- make_bm(result, width, height, SK_ColorBLACK, false);
-
- SkCanvas canvas(*result);
- canvas.drawPicture(pic);
-}
-
-template <typename T> int find_index(const T* array, T elem, int count) {
- for (int i = 0; i < count; ++i) {
- if (array[i] == elem) {
- return i;
- }
- }
- return -1;
-}
-
-// Return true if 'ref' is found in array[]
-static bool find(SkPixelRef const * const * array, SkPixelRef const * ref, int count) {
- return find_index<const SkPixelRef*>(array, ref, count) >= 0;
-}
-
-// Look at each pixel that is inside 'subset', and if its color appears in
-// colors[], find the corresponding value in refs[] and append that ref into
-// array, skipping duplicates of the same value.
-// Note that gathering pixelRefs from rendered colors suffers from the problem
-// that multiple simultaneous textures (e.g., A8 for alpha and 8888 for color)
-// isn't easy to reconstruct.
-static void gather_from_image(const SkBitmap& bm, SkPixelRef* const refs[],
- int count, SkTDArray<SkPixelRef*>* array,
- const SkRect& subset) {
- SkIRect ir;
- subset.roundOut(&ir);
-
- if (!ir.intersect(0, 0, bm.width()-1, bm.height()-1)) {
- return;
- }
-
- // Since we only want to return unique values in array, when we scan we just
- // set a bit for each index'd color found. In practice we only have a few
- // distinct colors, so we just use an int's bits as our array. Hence the
- // assert that count <= number-of-bits-in-our-int.
- SkASSERT((unsigned)count <= 32);
- uint32_t bitarray = 0;
-
- SkAutoLockPixels alp(bm);
-
- for (int y = ir.fTop; y < ir.fBottom; ++y) {
- for (int x = ir.fLeft; x < ir.fRight; ++x) {
- SkPMColor pmc = *bm.getAddr32(x, y);
- // the only good case where the color is not found would be if
- // the color is transparent, meaning no bitmap was drawn in that
- // pixel.
- if (pmc) {
- uint32_t index = SkGetPackedR32(pmc);
- SkASSERT(SkGetPackedG32(pmc) == index);
- SkASSERT(SkGetPackedB32(pmc) == index);
- if (0 == index) {
- continue; // background color
- }
- SkASSERT(0 == (index - gColorOffset) % gColorScale);
- index = (index - gColorOffset) / gColorScale;
- SkASSERT(static_cast<int>(index) < count);
- bitarray |= 1 << index;
- }
- }
- }
-
- for (int i = 0; i < count; ++i) {
- if (bitarray & (1 << i)) {
- *array->append() = refs[i];
- }
- }
-}
-
-static void gather_from_analytic(const SkPoint pos[], SkScalar w, SkScalar h,
- const SkTDArray<SkPixelRef*> analytic[],
- int count,
- SkTDArray<SkPixelRef*>* result,
- const SkRect& subset) {
- for (int i = 0; i < count; ++i) {
- SkRect rect = SkRect::MakeXYWH(pos[i].fX, pos[i].fY, w, h);
-
- if (SkRect::Intersects(subset, rect)) {
- result->append(analytic[i].count(), analytic[i].begin());
- }
- }
-}
-
-
-static const struct {
- const DrawBitmapProc proc;
- const char* const desc;
-} gProcs[] = {
- {drawpaint_proc, "drawpaint"},
- {drawpoints_proc, "drawpoints"},
- {drawrect_proc, "drawrect"},
- {drawoval_proc, "drawoval"},
- {drawrrect_proc, "drawrrect"},
- {drawpath_proc, "drawpath"},
- {drawbitmap_proc, "drawbitmap"},
- {drawbitmap_withshader_proc, "drawbitmap_withshader"},
- {drawsprite_proc, "drawsprite"},
-#if 0
- {drawsprite_withshader_proc, "drawsprite_withshader"},
-#endif
- {drawbitmaprect_proc, "drawbitmaprect"},
- {drawbitmaprect_withshader_proc, "drawbitmaprect_withshader"},
- {drawtext_proc, "drawtext"},
- {drawpostext_proc, "drawpostext"},
- {drawtextonpath_proc, "drawtextonpath"},
- {drawverts_proc, "drawverts"},
-};
-
-static void create_textures(SkBitmap* bm, SkPixelRef** refs, int num, int w, int h) {
- // Our convention is that the color components contain an encoding of
- // the index of their corresponding bitmap/pixelref. (0,0,0,0) is
- // reserved for the background
- for (int i = 0; i < num; ++i) {
- make_bm(&bm[i], w, h,
- SkColorSetARGB(0xFF,
- gColorScale*i+gColorOffset,
- gColorScale*i+gColorOffset,
- gColorScale*i+gColorOffset),
- true);
- refs[i] = bm[i].pixelRef();
- }
-
- // The A8 alternate bitmaps are all BW checkerboards
- for (int i = 0; i < num; ++i) {
- make_checkerboard(&bm[num+i], w, h, true);
- refs[num+i] = bm[num+i].pixelRef();
- }
-}
-
-static void test_gatherpixelrefs(skiatest::Reporter* reporter) {
- const int IW = 32;
- const int IH = IW;
- const SkScalar W = SkIntToScalar(IW);
- const SkScalar H = W;
-
- static const int N = 4;
- SkBitmap bm[2*N];
- SkPixelRef* refs[2*N];
- SkTDArray<SkPixelRef*> analytic[N];
-
- const SkPoint pos[N] = {
- { 0, 0 }, { W, 0 }, { 0, H }, { W, H }
- };
-
- create_textures(bm, refs, N, IW, IH);
-
- SkRandom rand;
- for (size_t k = 0; k < SK_ARRAY_COUNT(gProcs); ++k) {
- SkAutoTUnref<SkPicture> pic(
- record_bitmaps(bm, pos, analytic, N, gProcs[k].proc));
-
- REPORTER_ASSERT(reporter, pic->willPlayBackBitmaps() || N == 0);
- // quick check for a small piece of each quadrant, which should just
- // contain 1 or 2 bitmaps.
- for (size_t i = 0; i < SK_ARRAY_COUNT(pos); ++i) {
- SkRect r;
- r.set(2, 2, W - 2, H - 2);
- r.offset(pos[i].fX, pos[i].fY);
- SkAutoDataUnref data(SkPictureUtils::GatherPixelRefs(pic, r));
- if (!data) {
- ERRORF(reporter, "SkPictureUtils::GatherPixelRefs returned "
- "NULL for %s.", gProcs[k].desc);
- continue;
- }
- SkPixelRef** gatheredRefs = (SkPixelRef**)data->data();
- int count = static_cast<int>(data->size() / sizeof(SkPixelRef*));
- REPORTER_ASSERT(reporter, 1 == count || 2 == count);
- if (1 == count) {
- REPORTER_ASSERT(reporter, gatheredRefs[0] == refs[i]);
- } else if (2 == count) {
- REPORTER_ASSERT(reporter,
- (gatheredRefs[0] == refs[i] && gatheredRefs[1] == refs[i+N]) ||
- (gatheredRefs[1] == refs[i] && gatheredRefs[0] == refs[i+N]));
- }
- }
-
- SkBitmap image;
- draw(pic, 2*IW, 2*IH, &image);
-
- // Test a bunch of random (mostly) rects, and compare the gather results
- // with a deduced list of refs by looking at the colors drawn.
- for (int j = 0; j < 100; ++j) {
- SkRect r;
- rand_rect(&r, rand, 2*W, 2*H);
-
- SkTDArray<SkPixelRef*> fromImage;
- gather_from_image(image, refs, N, &fromImage, r);
-
- SkTDArray<SkPixelRef*> fromAnalytic;
- gather_from_analytic(pos, W, H, analytic, N, &fromAnalytic, r);
-
- SkData* data = SkPictureUtils::GatherPixelRefs(pic, r);
- size_t dataSize = data ? data->size() : 0;
- int gatherCount = static_cast<int>(dataSize / sizeof(SkPixelRef*));
- SkASSERT(gatherCount * sizeof(SkPixelRef*) == dataSize);
- SkPixelRef** gatherRefs = data ? (SkPixelRef**)(data->data()) : NULL;
- SkAutoDataUnref adu(data);
-
- // Everything that we saw drawn should appear in the analytic list
- // but the analytic list may contain some pixelRefs that were not
- // seen in the image (e.g., A8 textures used as masks)
- for (int i = 0; i < fromImage.count(); ++i) {
- if (-1 == fromAnalytic.find(fromImage[i])) {
- ERRORF(reporter, "PixelRef missing %d %s",
- i, gProcs[k].desc);
- }
- }
-
- /*
- * GatherPixelRefs is conservative, so it can return more bitmaps
- * than are strictly required. Thus our check here is only that
- * Gather didn't miss any that we actually needed. Even that isn't
- * a strict requirement on Gather, which is meant to be quick and
- * only mostly-correct, but at the moment this test should work.
- */
- for (int i = 0; i < fromAnalytic.count(); ++i) {
- bool found = find(gatherRefs, fromAnalytic[i], gatherCount);
- if (!found) {
- ERRORF(reporter, "PixelRef missing %d %s",
- i, gProcs[k].desc);
- }
-#if 0
- // enable this block of code to debug failures, as it will rerun
- // the case that failed.
- if (!found) {
- SkData* data = SkPictureUtils::GatherPixelRefs(pic, r);
- size_t dataSize = data ? data->size() : 0;
- }
-#endif
- }
- }
- }
-}
-
/* Hit a few SkPicture::Analysis cases not handled elsewhere. */
static void test_analysis(skiatest::Reporter* reporter) {
SkPictureRecorder recorder;
@@ -615,90 +103,6 @@ static void test_analysis(skiatest::Reporter* reporter) {
}
-static void test_gatherpixelrefsandrects(skiatest::Reporter* reporter) {
- const int IW = 32;
- const int IH = IW;
- const SkScalar W = SkIntToScalar(IW);
- const SkScalar H = W;
-
- static const int N = 4;
- SkBitmap bm[2*N];
- SkPixelRef* refs[2*N];
- SkTDArray<SkPixelRef*> analytic[N];
-
- const SkPoint pos[N] = {
- { 0, 0 }, { W, 0 }, { 0, H }, { W, H }
- };
-
- create_textures(bm, refs, N, IW, IH);
-
- SkRandom rand;
- for (size_t k = 0; k < SK_ARRAY_COUNT(gProcs); ++k) {
- SkAutoTUnref<SkPicture> pic(
- record_bitmaps(bm, pos, analytic, N, gProcs[k].proc));
-
- REPORTER_ASSERT(reporter, pic->willPlayBackBitmaps() || N == 0);
-
- SkAutoTUnref<SkPictureUtils::SkPixelRefContainer> prCont(
- new SkPictureUtils::SkPixelRefsAndRectsList);
-
- SkPictureUtils::GatherPixelRefsAndRects(pic, prCont);
-
- // quick check for a small piece of each quadrant, which should just
- // contain 1 or 2 bitmaps.
- for (size_t i = 0; i < SK_ARRAY_COUNT(pos); ++i) {
- SkRect r;
- r.set(2, 2, W - 2, H - 2);
- r.offset(pos[i].fX, pos[i].fY);
-
- SkTDArray<SkPixelRef*> gatheredRefs;
- prCont->query(r, &gatheredRefs);
-
- int count = gatheredRefs.count();
- REPORTER_ASSERT(reporter, 1 == count || 2 == count);
- if (1 == count) {
- REPORTER_ASSERT(reporter, gatheredRefs[0] == refs[i]);
- } else if (2 == count) {
- REPORTER_ASSERT(reporter,
- (gatheredRefs[0] == refs[i] && gatheredRefs[1] == refs[i+N]) ||
- (gatheredRefs[1] == refs[i] && gatheredRefs[0] == refs[i+N]));
- }
- }
-
- SkBitmap image;
- draw(pic, 2*IW, 2*IH, &image);
-
- // Test a bunch of random (mostly) rects, and compare the gather results
- // with the analytic results and the pixel refs seen in a rendering.
- for (int j = 0; j < 100; ++j) {
- SkRect r;
- rand_rect(&r, rand, 2*W, 2*H);
-
- SkTDArray<SkPixelRef*> fromImage;
- gather_from_image(image, refs, N, &fromImage, r);
-
- SkTDArray<SkPixelRef*> fromAnalytic;
- gather_from_analytic(pos, W, H, analytic, N, &fromAnalytic, r);
-
- SkTDArray<SkPixelRef*> gatheredRefs;
- prCont->query(r, &gatheredRefs);
-
- // Everything that we saw drawn should appear in the analytic list
- // but the analytic list may contain some pixelRefs that were not
- // seen in the image (e.g., A8 textures used as masks)
- for (int i = 0; i < fromImage.count(); ++i) {
- REPORTER_ASSERT(reporter, -1 != fromAnalytic.find(fromImage[i]));
- }
-
- // Everything in the analytic list should appear in the gathered
- // list.
- for (int i = 0; i < fromAnalytic.count(); ++i) {
- REPORTER_ASSERT(reporter, -1 != gatheredRefs.find(fromAnalytic[i]));
- }
- }
- }
-}
-
#ifdef SK_DEBUG
// Ensure that deleting an empty SkPicture does not assert. Asserts only fire
// in debug mode, so only run in debug mode.
@@ -1769,8 +1173,6 @@ DEF_TEST(Picture, reporter) {
#endif
test_has_text(reporter);
test_analysis(reporter);
- test_gatherpixelrefs(reporter);
- test_gatherpixelrefsandrects(reporter);
test_bitmap_with_encoded_data(reporter);
test_clip_bound_opt(reporter);
test_clip_expansion(reporter);
« no previous file with comments | « src/utils/SkPictureUtils.cpp ('k') | tools/PictureRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698