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

Unified Diff: tests/RecordDrawTest.cpp

Issue 610003002: Override SkCanvas::drawImage() in SkRecorder. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Add tests Created 6 years, 3 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
Index: tests/RecordDrawTest.cpp
diff --git a/tests/RecordDrawTest.cpp b/tests/RecordDrawTest.cpp
index 1108af6e36503c9471ad2c10b3364a7e1f85e865..a9b151b446069eff97129e97d54ed0081f9066be 100644
--- a/tests/RecordDrawTest.cpp
+++ b/tests/RecordDrawTest.cpp
@@ -11,11 +11,13 @@
#include "SkDebugCanvas.h"
#include "SkDrawPictureCallback.h"
#include "SkDropShadowImageFilter.h"
+#include "SkImagePriv.h"
#include "SkRecord.h"
#include "SkRecordDraw.h"
#include "SkRecordOpts.h"
#include "SkRecorder.h"
#include "SkRecords.h"
+#include "SkSurface.h"
static const int W = 1920, H = 1080;
@@ -251,3 +253,76 @@ DEF_TEST(RecordDraw_SaveLayerAffectsClipBounds, r) {
REPORTER_ASSERT(r, sloppy_rect_eq(bbh.entries[2].bounds, SkRect::MakeLTRB(0, 0, 40, 40)));
REPORTER_ASSERT(r, sloppy_rect_eq(bbh.entries[3].bounds, SkRect::MakeLTRB(0, 0, 70, 50)));
}
+
+DEF_TEST(RecordDraw_drawImage, r){
mtklein 2014/09/27 15:41:22 I feel like this test may be taking on a bit too m
Rémi Piotaix 2014/09/29 17:57:55 Yes, already done in RecorderTest.cpp, but this is
+ class SkCanvasMock : public SkCanvas {
+ public:
+ SkCanvasMock(int width, int height) : INHERITED(width, height) {
robertphillips 2014/09/29 17:07:56 this->
Rémi Piotaix 2014/09/29 17:57:55 Done.
+ resetTestValues();
+ }
+ virtual ~SkCanvasMock() {}
+ virtual void drawImage(const SkImage* image, SkScalar left, SkScalar top,
+ const SkPaint* paint = NULL) SK_OVERRIDE {
+
robertphillips 2014/09/29 17:07:56 fDrawImageCalled
Rémi Piotaix 2014/09/29 17:57:55 Done.
+ fDrawImage_called = true;
+ fDrawingImage = image;
+ INHERITED::drawImage(image, left, top, paint);
+ }
+
+ virtual void drawImageRect(const SkImage* image, const SkRect* src,
+ const SkRect& dst,
+ const SkPaint* paint = NULL) SK_OVERRIDE {
+ fDrawImageRect_called = true;
+ fDrawingImage = image;
+ INHERITED::drawImageRect(image, src, dst, paint);
+ }
+
+ virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
+ const SkPaint* paint = NULL) SK_OVERRIDE {
+ fDrawBitmap_valid = bitmap.pixelRef() == SkBitmapImageGetPixelRef(fDrawingImage);
+ }
+
+ virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
+ const SkRect& dst,
+ const SkPaint* paint = NULL,
+ DrawBitmapRectFlags flags = kNone_DrawBitmapRectFlag)
+ SK_OVERRIDE {
+ fDrawBitmap_valid = bitmap.pixelRef() == SkBitmapImageGetPixelRef(fDrawingImage);
+ }
+
+ void resetTestValues() {
+ fDrawImage_called = fDrawBitmap_valid = fDrawImageRect_called = false;
+ }
+
+ const SkImage* fDrawingImage;
robertphillips 2014/09/29 17:07:56 No '_'s in the names.
Rémi Piotaix 2014/09/29 17:57:55 Done.
+ bool fDrawImage_called;
+ bool fDrawImageRect_called;
+ bool fDrawBitmap_valid;
+ private:
+ typedef SkCanvas INHERITED;
+ };
+
+ SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterPMColor(10, 10));
reed1 2014/09/29 18:08:26 1. Can we using an outer-loop or something to vary
Rémi Piotaix 2014/09/29 18:40:21 Yeah, sure.
+ surface->getCanvas()->clear(SK_ColorGREEN);
+ SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
+
+ SkCanvasMock canvas(10, 10);
+
+ {
+ SkRecord record;
+ SkRecorder recorder(&record, 10, 10);
+ recorder.drawImage(image, 0, 0);
+ SkRecordDraw(record, &canvas, 0, 0);
+ }
+ REPORTER_ASSERT(r, canvas.fDrawImage_called && canvas.fDrawBitmap_valid);
+ canvas.resetTestValues();
+
+ {
+ SkRecord record;
+ SkRecorder recorder(&record, 10, 10);
+ recorder.drawImageRect(image, 0, SkRect::MakeWH(10, 10));
+ SkRecordDraw(record, &canvas, 0, 0);
+ }
+ REPORTER_ASSERT(r, canvas.fDrawImageRect_called && canvas.fDrawBitmap_valid);
+
+}

Powered by Google App Engine
This is Rietveld 408576698