#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkFlattenableBuffers.h"
+#include "third_party/skia/include/core/SkPictureRecorder.h"
#include "third_party/skia/include/core/SkPixelRef.h"
#include "third_party/skia/include/core/SkPoint.h"
#include "third_party/skia/include/core/SkShader.h"
return SkShader::kDefault_BitmapType;
}
- // Pure virtual implementaiton.
- virtual void shadeSpan(int x, int y, SkPMColor[], int count) OVERRIDE {}
+ // not indended to return an actual context. Just need to supply this.
+ virtual size_t contextSize() const OVERRIDE {
+ return sizeof(SkShader::Context);
+ }
+
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(TestDiscardableShader);
private:
bitmap->pixelRef()->setURI(uri);
}
-SkCanvas* StartRecording(SkPicture* picture, gfx::Rect layer_rect) {
- SkCanvas* canvas = picture->beginRecording(
+SkCanvas* StartRecording(SkPictureRecorder* recorder, gfx::Rect layer_rect) {
+ SkCanvas* canvas = recorder->beginRecording(
layer_rect.width(),
layer_rect.height(),
- SkPicture::kUsePathBoundsForClip_RecordingFlag |
- SkPicture::kOptimizeForClippedPlayback_RecordingFlag);
+ NULL,
+ SkPicture::kUsePathBoundsForClip_RecordingFlag);
canvas->save();
canvas->translate(-layer_rect.x(), -layer_rect.y());
return canvas;
}
-void StopRecording(SkPicture* picture, SkCanvas* canvas) {
+SkPicture* StopRecording(SkPictureRecorder* recorder, SkCanvas* canvas) {
canvas->restore();
- picture->endRecording();
+ return recorder->endRecording();
}
} // namespace
TEST(PixelRefUtilsTest, DrawPaint) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
canvas->clipRect(SkRect::MakeWH(100, 100));
canvas->drawPaint(third_paint);
- StopRecording(picture.get(), canvas);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawPoints) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
// (50, 55, 150, 145).
canvas->drawPoints(SkCanvas::kPolygon_PointMode, 3, points, third_paint);
- StopRecording(picture.get(), canvas);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawRect) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
// (50, 50, 50, 50)
canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
+
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawRRect) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
// (50, 50, 50, 50)
canvas->drawRRect(rrect, third_paint);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
+
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawOval) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
// (50, 50, 50, 50)
canvas->drawRect(SkRect::MakeXYWH(0, 0, 100, 100), third_paint);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
+
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawPath) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
canvas->restore();
- StopRecording(picture.get(), canvas);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawBitmap) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
SkBitmap first;
CreateBitmap(gfx::Size(50, 50), "discardable", &first);
// At (0, 0), scaled by 5 and 6
canvas->drawBitmap(fifth, 0, 0);
- StopRecording(picture.get(), canvas);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawBitmapRect) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
SkBitmap first;
CreateBitmap(gfx::Size(50, 50), "discardable", &first);
canvas->restore();
- StopRecording(picture.get(), canvas);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawSprite) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
SkBitmap first;
CreateBitmap(gfx::Size(50, 50), "discardable", &first);
// (100, 100, 50, 50).
canvas->drawSprite(fifth, 100, 100, &first_paint);
- StopRecording(picture.get(), canvas);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawText) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
canvas->drawPosText("text", 4, points, first_paint);
canvas->drawTextOnPath("text", 4, path, NULL, first_paint);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
+
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);
TEST(PixelRefUtilsTest, DrawVertices) {
gfx::Rect layer_rect(0, 0, 256, 256);
- skia::RefPtr<SkPicture> picture = skia::AdoptRef(new SkPicture);
- SkCanvas* canvas = StartRecording(picture.get(), layer_rect);
+ SkPictureRecorder recorder;
+ SkCanvas* canvas = StartRecording(&recorder, layer_rect);
TestDiscardableShader first_shader;
SkPaint first_paint;
3,
third_paint);
- StopRecording(picture.get(), canvas);
+ skia::RefPtr<SkPicture> picture = skia::AdoptRef(StopRecording(&recorder, canvas));
std::vector<skia::PixelRefUtils::PositionPixelRef> pixel_refs;
skia::PixelRefUtils::GatherDiscardablePixelRefs(picture.get(), &pixel_refs);