Index: tests/RecordDrawTest.cpp |
diff --git a/tests/RecordDrawTest.cpp b/tests/RecordDrawTest.cpp |
index 1108af6e36503c9471ad2c10b3364a7e1f85e865..bf992e941f26c8e422e174c67620dbb00de0ee3f 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,60 @@ 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){ |
+ class SkCanvasMock : public SkCanvas { |
+ public: |
+ SkCanvasMock(int width, int height) : INHERITED(width, height) { |
+ this->resetTestValues(); |
+ } |
+ virtual ~SkCanvasMock() {} |
+ virtual void drawImage(const SkImage* image, SkScalar left, SkScalar top, |
+ const SkPaint* paint = NULL) SK_OVERRIDE { |
mtklein
2014/09/30 14:42:21
some funky indents on these methods
Rémi Piotaix
2014/09/30 15:48:09
Done.
|
+ |
+ fDrawImageCalled = true; |
+ fDrawingImage = image; |
mtklein
2014/09/30 14:42:21
fDrawingImage seems unused?
Rémi Piotaix
2014/09/30 15:48:09
Done.
|
+ } |
+ |
+ virtual void drawImageRect(const SkImage* image, const SkRect* src, |
+ const SkRect& dst, |
+ const SkPaint* paint = NULL) SK_OVERRIDE { |
+ fDrawImageRectCalled = true; |
+ fDrawingImage = image; |
+ } |
+ |
+ void resetTestValues() { |
+ fDrawImageCalled = fDrawImageRectCalled = false; |
+ } |
+ |
+ const SkImage* fDrawingImage; |
+ bool fDrawImageCalled; |
+ bool fDrawImageRectCalled; |
+ private: |
+ typedef SkCanvas INHERITED; |
+ }; |
+ |
+ SkAutoTUnref<SkSurface> surface(SkSurface::NewRasterPMColor(10, 10)); |
+ 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.fDrawImageCalled); |
+ 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.fDrawImageRectCalled); |
+ |
+} |