| Index: gm/surface.cpp
|
| diff --git a/gm/surface.cpp b/gm/surface.cpp
|
| index dbcced2cbfabf4d4282fd64c85d270279cbaf383..f84c5ab7e722134344b1857c9b793d2c2b3621a8 100644
|
| --- a/gm/surface.cpp
|
| +++ b/gm/surface.cpp
|
| @@ -105,5 +105,55 @@ protected:
|
| private:
|
| typedef GM INHERITED;
|
| };
|
| -
|
| DEF_GM( return new SurfacePropsGM )
|
| +
|
| +#ifdef SK_DEBUG
|
| +static bool equal(const SkSurfaceProps& a, const SkSurfaceProps& b) {
|
| + return a.flags() == b.flags() && a.pixelGeometry() == b.pixelGeometry();
|
| +}
|
| +#endif
|
| +
|
| +class NewSurfaceGM : public skiagm::GM {
|
| +public:
|
| + NewSurfaceGM() {}
|
| +
|
| +protected:
|
| + SkString onShortName() SK_OVERRIDE {
|
| + return SkString("surfacenew");
|
| + }
|
| +
|
| + virtual SkISize onISize() SK_OVERRIDE {
|
| + return SkISize::Make(300, 140);
|
| + }
|
| +
|
| + static void drawInto(SkCanvas* canvas) {
|
| + canvas->drawColor(SK_ColorRED);
|
| + }
|
| +
|
| + virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
|
| + SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100);
|
| +
|
| + SkAutoTUnref<SkSurface> surf(canvas->newSurface(info, NULL));
|
| + if (!surf.get()) {
|
| + surf.reset(SkSurface::NewRaster(info));
|
| + }
|
| + drawInto(surf->getCanvas());
|
| +
|
| + SkAutoTUnref<SkImage> image(surf->newImageSnapshot());
|
| + canvas->drawImage(image, 10, 10, NULL);
|
| +
|
| + SkAutoTUnref<SkSurface> surf2(image->newSurface(info, NULL));
|
| + drawInto(surf2->getCanvas());
|
| +
|
| + // Assert that the props were communicated transitively through the first image
|
| + SkASSERT(equal(surf->props(), surf2->props()));
|
| +
|
| + SkAutoTUnref<SkImage> image2(surf2->newImageSnapshot());
|
| + canvas->drawImage(image2, 10 + SkIntToScalar(image->width()) + 10, 10, NULL);
|
| + }
|
| +
|
| +private:
|
| + typedef GM INHERITED;
|
| +};
|
| +DEF_GM( return new NewSurfaceGM )
|
| +
|
|
|