summaryrefslogtreecommitdiff
path: root/vcl/backendtest/outputdevice/rectangle.cxx
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2016-08-22 18:10:02 +0900
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2016-08-23 09:52:43 +0900
commit3e6052ce1b9a24f82358e574de32919fa2b6499f (patch)
tree9e81e23f724a4be0938b61d866e777399f40e794 /vcl/backendtest/outputdevice/rectangle.cxx
parent129c0d6363e58f6d32dc9583edb6a0edd07521f9 (diff)
vcl: Adds backend tests to check for correct rendering
Collection of test that check rendering of VCL backend. This works by rendering primitives to the VirtualDevice, outputing the result to a Bitmap and checking the rendering by comparing pixels. This should warn when the primitive is drawn to a wrong position or if it is the wrong size or color. It also test some rendering tricks like XOR drawing. Currently this is not implemented as a CPPUnit test but separately, as its own executable file so we can check the results visually. The idea is also to add the tests into LO for the user to test or automatically to test the backend on first start (especially useful to test the OpenGL backend as some drivers could have unexpected behaviour). Change-Id: I2a565b9986ca68850e2752466e3cd5fc71991ba6
Diffstat (limited to 'vcl/backendtest/outputdevice/rectangle.cxx')
-rw-r--r--vcl/backendtest/outputdevice/rectangle.cxx54
1 files changed, 54 insertions, 0 deletions
diff --git a/vcl/backendtest/outputdevice/rectangle.cxx b/vcl/backendtest/outputdevice/rectangle.cxx
new file mode 100644
index 000000000000..80ab3cf6f7ee
--- /dev/null
+++ b/vcl/backendtest/outputdevice/rectangle.cxx
@@ -0,0 +1,54 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+
+#include "test/outputdevice.hxx"
+
+namespace vcl {
+namespace test {
+
+namespace
+{
+ void drawRectOffset(OutputDevice& rDevice, Rectangle& rRect, int nOffset)
+ {
+ rDevice.DrawRect(Rectangle(rRect.Left() + nOffset, rRect.Top() + nOffset,
+ rRect.Right() - nOffset, rRect.Bottom() - nOffset));
+
+ }
+} // end anonymous namespace
+
+Bitmap OutputDeviceTestRect::setupFilledRectangle()
+{
+ initialSetup(13, 13, constBackgroundColor);
+
+ mpVirtualDevice->SetLineColor(constFillColor);
+ mpVirtualDevice->SetFillColor(constFillColor);
+
+ drawRectOffset(*mpVirtualDevice, maVDRectangle, 2);
+ drawRectOffset(*mpVirtualDevice, maVDRectangle, 5);
+
+ return mpVirtualDevice->GetBitmap(maVDRectangle.TopLeft(), maVDRectangle.GetSize());
+}
+
+Bitmap OutputDeviceTestRect::setupRectangle()
+{
+ initialSetup(13, 13, constBackgroundColor);
+
+ mpVirtualDevice->SetLineColor(constLineColor);
+ mpVirtualDevice->SetFillColor();
+
+ drawRectOffset(*mpVirtualDevice, maVDRectangle, 2);
+ drawRectOffset(*mpVirtualDevice, maVDRectangle, 5);
+
+ return mpVirtualDevice->GetBitmap(maVDRectangle.TopLeft(), maVDRectangle.GetSize());
+}
+
+}} // end namespace vcl::test
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */