Index: tests/skpdf_opaquesrcmodetosrcover.cpp |
diff --git a/tests/skpdf_opaquesrcmodetosrcover.cpp b/tests/skpdf_opaquesrcmodetosrcover.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e5685d9085f2514c629e3e12e2df6173976736d3 |
--- /dev/null |
+++ b/tests/skpdf_opaquesrcmodetosrcover.cpp |
@@ -0,0 +1,38 @@ |
+/* |
+ * Copyright 2015 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+#include "SkCanvas.h" |
+#include "SkDocument.h" |
+#include "SkStream.h" |
+#include "Test.h" |
+ |
+static void run_test(SkWStream* out, SkXfermode::Mode mode, SkColor color) { |
+ SkAutoTUnref<SkDocument> pdfDoc(SkDocument::CreatePDF(out)); |
+ SkCanvas* c = pdfDoc->beginPage(612.0f, 792.0f); |
+ SkPaint black; |
+ SkPaint background; |
+ background.setColor(color); |
+ background.setXfermodeMode(mode); |
+ c->drawRect(SkRect::MakeWH(612.0f, 792.0f), background); |
+ c->drawRect(SkRect::MakeXYWH(36.0f, 36.0f, 9.0f, 9.0f), black); |
+ c->drawRect(SkRect::MakeXYWH(72.0f, 72.0f, 468.0f, 648.0f), background); |
+ c->drawRect(SkRect::MakeXYWH(108.0f, 108.0f, 9.0f, 9.0f), black); |
+ pdfDoc->close(); |
+} |
+DEF_TEST(SkPDF_OpaqueSrcModeToSrcOver, r) { |
+ SkDynamicMemoryWStream srcMode; |
+ run_test(&srcMode, SkXfermode::kSrc_Mode, SK_ColorWHITE); |
+ SkDynamicMemoryWStream srcOverMode; |
+ run_test(&srcOverMode, SkXfermode::kSrcOver_Mode, SK_ColorWHITE); |
+ REPORTER_ASSERT(r, srcMode.getOffset() == srcOverMode.getOffset()); |
+ |
+ srcMode.reset(); |
+ SkColor color = 0x80FFFFFF; |
+ run_test(&srcMode, SkXfermode::kSrc_Mode, color); |
+ srcOverMode.reset(); |
+ run_test(&srcOverMode, SkXfermode::kSrcOver_Mode, color); |
+ REPORTER_ASSERT(r, srcMode.getOffset() > srcOverMode.getOffset()); |
+} |