Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / tests / RecordingXfermodeTest.cpp
index 8da81b3..a4b270b 100644 (file)
@@ -11,7 +11,6 @@
 #include "../include/core/SkPicture.h"
 #include "../include/core/SkStream.h"
 #include "../include/core/SkString.h"
-#include "../include/record/SkRecording.h"
 #include "../include/core/SkPictureRecorder.h"
 #include <cstring>
 
 // This arose from http://crbug.com/401593 which has
 // https://code.google.com/p/skia/issues/detail?id=1291 as its root cause.
 
-
 namespace {
 
 class Drawer {
  public:
-    explicit Drawer()
-            : fImageInfo(SkImageInfo::MakeN32Premul(200,100))
-    {
-        fCircleBM.allocPixels( SkImageInfo::MakeN32Premul(100,100) );
+    explicit Drawer() : fImageInfo(SkImageInfo::MakeN32Premul(200, 100)) {
+        fCircleBM.allocPixels(SkImageInfo::MakeN32Premul(100, 100));
         SkCanvas canvas(fCircleBM);
         canvas.clear(0xffffffff);
         SkPaint circlePaint;
         circlePaint.setColor(0xff000000);
-        canvas.drawCircle(50,50,50,circlePaint);
+        canvas.drawCircle(50, 50, 50, circlePaint);
     }
 
     const SkImageInfo& imageInfo() const { return fImageInfo; }
@@ -48,15 +44,16 @@ class Drawer {
         SkPaint layerPaint;
         layerPaint.setColor(0xff000000);
         layerPaint.setXfermodeMode(mode);
-        SkRect canvasRect(SkRect::MakeWH(SkIntToScalar(fImageInfo.width()),SkIntToScalar(fImageInfo.height())));
+        SkRect canvasRect(SkRect::MakeWH(SkIntToScalar(fImageInfo.width()),
+                                         SkIntToScalar(fImageInfo.height())));
 
         canvas->clipRect(clipRect);
         canvas->clear(0xff000000);
 
-        canvas->saveLayer(NULL,&blackPaint);
-            canvas->drawRect(canvasRect,greenPaint);
-            canvas->saveLayer(NULL,&layerPaint);
-                canvas->drawBitmapRect(fCircleBM,SkRect::MakeXYWH(20,20,60,60),&blackPaint);
+        canvas->saveLayer(NULL, &blackPaint);
+            canvas->drawRect(canvasRect, greenPaint);
+            canvas->saveLayer(NULL, &layerPaint);
+                canvas->drawBitmapRect(fCircleBM, SkRect::MakeXYWH(20,20,60,60), &blackPaint);
             canvas->restore();
         canvas->restore();
     }
@@ -69,7 +66,6 @@ class Drawer {
 class RecordingStrategy {
  public:
     virtual ~RecordingStrategy() {}
-    virtual void init(const SkImageInfo&) = 0;
     virtual const SkBitmap& recordAndReplay(const Drawer& drawer,
                                             const SkRect& intoClip,
                                             SkXfermode::Mode) = 0;
@@ -78,9 +74,7 @@ class RecordingStrategy {
 class BitmapBackedCanvasStrategy : public RecordingStrategy {
     // This version just draws into a bitmap-backed canvas.
  public:
-    BitmapBackedCanvasStrategy() {}
-
-    virtual void init(const SkImageInfo& imageInfo) {
+    BitmapBackedCanvasStrategy(const SkImageInfo& imageInfo) {
         fBitmap.allocPixels(imageInfo);
     }
 
@@ -99,57 +93,15 @@ class BitmapBackedCanvasStrategy : public RecordingStrategy {
     SkBitmap fBitmap;
 };
 
-class DeprecatedRecorderStrategy : public RecordingStrategy {
-    // This version draws the entire scene into an SkPictureRecorder,
-    // using the deprecated recording backend.
-    // Then it then replays the scene through a clip rectangle.
-    // This backend proved to be buggy.
- public:
-    DeprecatedRecorderStrategy() {}
-
-    virtual void init(const SkImageInfo& imageInfo) {
-        fBitmap.allocPixels(imageInfo);
-        fWidth = imageInfo.width();
-        fHeight= imageInfo.height();
-    }
-
-    virtual const SkBitmap& recordAndReplay(const Drawer& drawer,
-                                            const SkRect& intoClip,
-                                            SkXfermode::Mode mode) {
-        SkTileGridFactory::TileGridInfo tileGridInfo = { {100,100}, {0,0}, {0,0} };
-        SkTileGridFactory factory(tileGridInfo);
-        SkPictureRecorder recorder;
-        SkRect canvasRect(SkRect::MakeWH(SkIntToScalar(fWidth),SkIntToScalar(fHeight)));
-        SkCanvas* canvas = recorder.DEPRECATED_beginRecording( SkIntToScalar(fWidth), SkIntToScalar(fHeight), &factory);
-        drawer.draw(canvas, canvasRect, mode);
-        SkAutoTDelete<SkPicture> picture(recorder.endRecording());
-
-        SkCanvas replayCanvas(fBitmap);
-        replayCanvas.clear(0xffffffff);
-        replayCanvas.clipRect(intoClip);
-        picture->playback(&replayCanvas);
-
-        return fBitmap;
-    }
-
- private:
-    SkBitmap fBitmap;
-    int fWidth;
-    int fHeight;
-};
-
-class NewRecordingStrategy : public RecordingStrategy {
-    // This version draws the entire scene into an SkPictureRecorder,
-    // using the new recording backend.
+class PictureStrategy : public RecordingStrategy {
+    // This version draws the entire scene into an SkPictureRecorder.
     // Then it then replays the scene through a clip rectangle.
     // This backend proved to be buggy.
  public:
-    NewRecordingStrategy() {}
-
-    virtual void init(const SkImageInfo& imageInfo) {
+    PictureStrategy(const SkImageInfo& imageInfo) {
         fBitmap.allocPixels(imageInfo);
-        fWidth = imageInfo.width();
-        fHeight= imageInfo.height();
+        fWidth  = imageInfo.width();
+        fHeight = imageInfo.height();
     }
 
     virtual const SkBitmap& recordAndReplay(const Drawer& drawer,
@@ -159,8 +111,9 @@ class NewRecordingStrategy : public RecordingStrategy {
         SkTileGridFactory factory(tileGridInfo);
         SkPictureRecorder recorder;
         SkRect canvasRect(SkRect::MakeWH(SkIntToScalar(fWidth),SkIntToScalar(fHeight)));
-        SkCanvas* canvas = recorder.EXPERIMENTAL_beginRecording( SkIntToScalar(fWidth), SkIntToScalar(fHeight), &factory);
-
+        SkCanvas* canvas = recorder.beginRecording(SkIntToScalar(fWidth),
+                                                   SkIntToScalar(fHeight),
+                                                   &factory);
         drawer.draw(canvas, canvasRect, mode);
         SkAutoTDelete<SkPicture> picture(recorder.endRecording());
 
@@ -177,64 +130,45 @@ class NewRecordingStrategy : public RecordingStrategy {
     int fHeight;
 };
 
-}
-
+} // namespace
 
 
 DEF_TEST(SkRecordingAccuracyXfermode, reporter) {
 #define FINEGRAIN 0
-
     const Drawer drawer;
 
-    BitmapBackedCanvasStrategy golden; // This is the expected result.
-    DeprecatedRecorderStrategy deprecatedRecording;
-    NewRecordingStrategy newRecording;
-
-    golden.init(drawer.imageInfo());
-    deprecatedRecording.init(drawer.imageInfo());
-    newRecording.init(drawer.imageInfo());
+    BitmapBackedCanvasStrategy golden(drawer.imageInfo());
+    PictureStrategy picture(drawer.imageInfo());
 
 #if !FINEGRAIN
     unsigned numErrors = 0;
     SkString errors;
 #endif
 
-    for (int iMode = 0; iMode < int(SkXfermode::kLastMode) ; iMode++ ) {
-        const SkRect& clip = SkRect::MakeXYWH(100,0,100,100);
+    for (int iMode = 0; iMode < int(SkXfermode::kLastMode); iMode++) {
+        const SkRect& clip = SkRect::MakeXYWH(100, 0, 100, 100);
         SkXfermode::Mode mode = SkXfermode::Mode(iMode);
 
         const SkBitmap& goldenBM = golden.recordAndReplay(drawer, clip, mode);
-        const SkBitmap& deprecatedBM = deprecatedRecording.recordAndReplay(drawer, clip, mode);
-        const SkBitmap& newRecordingBM = newRecording.recordAndReplay(drawer, clip, mode);
+        const SkBitmap& pictureBM = picture.recordAndReplay(drawer, clip, mode);
 
         size_t pixelsSize = goldenBM.getSize();
-        REPORTER_ASSERT( reporter, pixelsSize == deprecatedBM.getSize() );
-        REPORTER_ASSERT( reporter, pixelsSize == newRecordingBM.getSize() );
+        REPORTER_ASSERT(reporter, pixelsSize == pictureBM.getSize());
 
         // The pixel arrays should match.
 #if FINEGRAIN
-        REPORTER_ASSERT_MESSAGE( reporter,
-                                 0==memcmp( goldenBM.getPixels(), deprecatedBM.getPixels(), pixelsSize ),
-                                 "Tiled bitmap is wrong");
-        REPORTER_ASSERT_MESSAGE( reporter,
-                                 0==memcmp( goldenBM.getPixels(), recordingBM.getPixels(), pixelsSize ),
-                                 "SkRecorder bitmap is wrong");
+        REPORTER_ASSERT(reporter,
+                        0 == memcmp(goldenBM.getPixels(), pictureBM.getPixels(), pixelsSize));
 #else
-        if ( memcmp( goldenBM.getPixels(), deprecatedBM.getPixels(), pixelsSize ) ) {
+        if (memcmp(goldenBM.getPixels(), pictureBM.getPixels(), pixelsSize)) {
             numErrors++;
-            SkString str;
-            str.printf("For SkXfermode %d %s:    Deprecated recorder bitmap is wrong\n", iMode, SkXfermode::ModeName(mode));
-            errors.append(str);
-        }
-        if ( memcmp( goldenBM.getPixels(), newRecordingBM.getPixels(), pixelsSize ) ) {
-            numErrors++;
-            SkString str;
-            str.printf("For SkXfermode %d %s:    SkPictureRecorder bitmap is wrong\n", iMode, SkXfermode::ModeName(mode));
-            errors.append(str);
+            errors.appendf("For SkXfermode %d %s:    SkPictureRecorder bitmap is wrong\n",
+                           iMode, SkXfermode::ModeName(mode));
         }
 #endif
     }
+
 #if !FINEGRAIN
-    REPORTER_ASSERT_MESSAGE( reporter, 0==numErrors, errors.c_str() );
+    REPORTER_ASSERT_MESSAGE(reporter, 0 == numErrors, errors.c_str());
 #endif
 }