/* * Copyright 2007, Haiku. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * Michael Pfeiffer */ #ifndef _PICTURE_TEST_H #define _PICTURE_TEST_H #include #include typedef void (draw_func)(BView *view, BRect frame); class PictureTest { public: PictureTest(); virtual ~PictureTest(); void SetColorSpace(color_space colorSpace) { fColorSpace = colorSpace; } bool Test(draw_func* func, BRect frame); const char *ErrorMessage() const { return fErrorMessage.String(); } BBitmap *DirectBitmap(bool detach = false); BBitmap *BitmapFromPicture(bool detach = false); BBitmap *BitmapFromRestoredPicture(bool detach = false); protected: virtual BPicture *SaveAndRestore(BPicture *picture) = 0; void SetErrorMessage(const char* message); private: void CleanUp(); BPicture *RecordPicture(draw_func* func, BRect frame); BBitmap *CreateBitmap(draw_func* func, BRect frame); BBitmap *CreateBitmap(BPicture *picture, BRect frame); bool IsSame(BBitmap *bitmap1, BBitmap *bitmap2, BString &reason); color_space fColorSpace; BBitmap *fDirectBitmap; BBitmap *fBitmapFromPicture; BBitmap *fBitmapFromRestoredPicture; BString fErrorMessage; }; class FlattenPictureTest : public PictureTest { public: FlattenPictureTest(); protected: BPicture *SaveAndRestore(BPicture *picture); }; class ArchivePictureTest : public PictureTest { public: ArchivePictureTest(); protected: BPicture *SaveAndRestore(BPicture *picture); }; #endif