From a4a2abe0d987fab7d466f3e869bcf256839b131f Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 26 May 2014 10:06:42 +0200 Subject: [PATCH] Test case for pixel alignment on transforms. Transforming an aligned rectangle shifts it up and left by 0.5 pixels. --- src/tests/servers/app/transformation/main.cpp | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/tests/servers/app/transformation/main.cpp b/src/tests/servers/app/transformation/main.cpp index 6405091e40..26e733df35 100644 --- a/src/tests/servers/app/transformation/main.cpp +++ b/src/tests/servers/app/transformation/main.cpp @@ -596,6 +596,35 @@ public: }; +// #pragma mark - PixelAlignTest + + +class PixelAlignTest : public Test { +public: + PixelAlignTest() + : + Test("Pixel alignment") + { + } + + virtual void Draw(BView* view, BRect updateRect) + { + BRect rect(20, 20, 120, 120); + view->SetHighColor(ui_color(B_SUCCESS_COLOR)); + view->StrokeRect(rect); + + BAffineTransform transform; + transform.TranslateBy(140, 0); + view->SetTransform(transform); + + // Translating a pixel-aligned rectangle by an integer number of + // pixels should result in a pixel-aligned rectangle. + view->SetHighColor(ui_color(B_FAILURE_COLOR)); + view->StrokeRect(rect); + } +}; + + // #pragma mark - @@ -613,6 +642,7 @@ main(int argc, char** argv) window->AddTest(new GradientTest()); window->AddTest(new NestedStatesTest()); window->AddTest(new ClippingTest()); + window->AddTest(new PixelAlignTest()); window->SetToTest(2); window->Show();