#include "platform/graphics/skia/NativeImageSkia.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkPicture.h"
#include <gtest/gtest.h>
using namespace WebCore;
EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
- context.drawEllipse(IntRect(10, 10, 90, 90));
+ context.fillEllipse(FloatRect(10, 10, 90, 90));
+ context.strokeEllipse(FloatRect(10, 10, 90, 90));
EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
context.setShouldAntialias(false);
context.setFillColor(opaque);
- context.drawEllipse(IntRect(10, 10, 50, 30));
+ context.fillEllipse(FloatRect(10, 10, 50, 30));
+ context.strokeEllipse(FloatRect(10, 10, 50, 30));
EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
context.setFillColor(alpha);
- context.drawEllipse(IntRect(10, 10, 30, 50));
+ context.fillEllipse(FloatRect(10, 10, 30, 50));
+ context.strokeEllipse(FloatRect(10, 10, 30, 50));
EXPECT_EQ_RECT(IntRect(40, 10, 60, 90), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
context.setShouldAntialias(true);
context.setFillColor(opaque);
- context.drawEllipse(IntRect(10, 10, 50, 30));
+ context.fillEllipse(FloatRect(10, 10, 50, 30));
+ context.strokeEllipse(FloatRect(10, 10, 50, 30));
EXPECT_EQ_RECT(IntRect(40, 41, 60, 59), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
context.setFillColor(alpha);
- context.drawEllipse(IntRect(20, 10, 30, 50));
+ context.fillEllipse(FloatRect(20, 10, 30, 50));
+ context.strokeEllipse(FloatRect(20, 10, 30, 50));
EXPECT_EQ_RECT(IntRect(51, 41, 49, 59), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
}
alphaPaint.setXfermodeMode(SkXfermode::kSrc_Mode);
SkPoint point = SkPoint::Make(0, 0);
- SkScalar pointX = 0;
- SkPath path;
- path.moveTo(SkPoint::Make(0, 0));
- path.lineTo(SkPoint::Make(100, 0));
context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver);
EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
- context.drawPosTextH("A", 1, &pointX, 0, textRect, opaquePaint);
- EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
- EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
- context.drawPosTextH("A", 1, &pointX, 0, textRect, alphaPaint);
- EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
- EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver);
EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
- context.drawTextOnPath("A", 1, path, textRect, 0, opaquePaint);
- EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
- EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
- context.drawTextOnPath("A", 1, path, textRect, 0, alphaPaint);
- EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
- EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
}
TEST(GraphicsContextTest, trackOpaqueWritePixelsTest)
EXPECT_EQ(context.getCTM(), controlContext.getCTM());
}
+TEST(GraphicsContextTest, DisplayList)
+{
+ FloatRect rect(0, 0, 1, 1);
+ RefPtr<DisplayList> dl = adoptRef(new DisplayList(rect));
+
+ // picture() returns 0 initially
+ SkPicture* pic = dl->picture();
+ EXPECT_FALSE(pic);
+
+ // endRecording without a beginRecording does nothing
+ dl->endRecording();
+ pic = dl->picture();
+ EXPECT_FALSE(pic);
+
+ // Two beginRecordings in a row generate two canvases.
+ // Unfortunately the new one could be allocated in the same
+ // spot as the old one so ref the first one to prolong its life.
+ IntSize size(1, 1);
+ SkCanvas* canvas1 = dl->beginRecording(size);
+ EXPECT_TRUE(canvas1);
+ canvas1->ref();
+ SkCanvas* canvas2 = dl->beginRecording(size);
+ EXPECT_TRUE(canvas2);
+
+ EXPECT_NE(canvas1, canvas2);
+ EXPECT_EQ(1, canvas1->getRefCnt());
+ canvas1->unref();
+
+ EXPECT_TRUE(dl->isRecording());
+
+ // picture() returns 0 during recording
+ pic = dl->picture();
+ EXPECT_FALSE(pic);
+
+ // endRecording finally makes the picture accessible
+ dl->endRecording();
+ pic = dl->picture();
+ EXPECT_TRUE(pic);
+ EXPECT_EQ(1, pic->getRefCnt());
+}
+
} // namespace