// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PAPPI_TESTS_TEST_GRAPHICS_2D_H_ #define PAPPI_TESTS_TEST_GRAPHICS_2D_H_ #include "ppapi/c/pp_stdint.h" #include "ppapi/tests/test_case.h" struct PPB_Graphics2D; struct PPB_ImageData; struct PPB_Testing_Dev; namespace pp { class Graphics2D; class ImageData; class Point; class Rect; } class TestGraphics2D : public TestCase { public: TestGraphics2D(TestingInstance* instance) : TestCase(instance) {} // TestCase implementation. virtual bool Init(); virtual void RunTest(); void QuitMessageLoop(); private: bool ReadImageData(const pp::Graphics2D& dc, pp::ImageData* image, const pp::Point& top_left) const; void FillRectInImage(pp::ImageData* image, const pp::Rect& rect, uint32_t color) const; // Fill image with gradient colors. void FillImageWithGradient(pp::ImageData* image) const; // Return true if images are the same. bool CompareImages(const pp::ImageData& image1, const pp::ImageData& image2); // Return true if images within specified rectangles are the same. bool CompareImageRect(const pp::ImageData& image1, const pp::Rect& rc1, const pp::ImageData& image2, const pp::Rect& rc2) const; // Validates that the given image is a single color with a square of another // color inside it. bool IsSquareInImage(const pp::ImageData& image_data, uint32_t background_color, const pp::Rect& square, uint32_t square_color) const; // Validates that the given device context is a single color with a square of // another color inside it. bool IsSquareInDC(const pp::Graphics2D& dc, uint32_t background_color, const pp::Rect& square, uint32_t square_color) const; // Validates that the given device context is filled with the given color. bool IsDCUniformColor(const pp::Graphics2D& dc, uint32_t color) const; // Issues a flush on the given device context and blocks until the flush // has issued its callback. Returns true on success. bool FlushAndWaitForDone(pp::Graphics2D* context); std::string TestInvalidResource(); std::string TestInvalidSize(); std::string TestHumongous(); std::string TestInitToZero(); std::string TestDescribe(); std::string TestPaint(); std::string TestScroll(); std::string TestReplace(); std::string TestFlush(); // Used by the tests that access the C API directly. const PPB_Graphics2D* graphics_2d_interface_; const PPB_ImageData* image_data_interface_; const PPB_Testing_Dev* testing_interface_; }; #endif // PAPPI_TESTS_TEST_GRAPHICS_2D_H_