summaryrefslogtreecommitdiffstats
path: root/basebmp/test
diff options
context:
space:
mode:
authorThorsten Behrens <thb@openoffice.org>2006-07-27 10:35:32 +0000
committerThorsten Behrens <thb@openoffice.org>2006-07-27 10:35:32 +0000
commit8c044545bbfd533f94743a7d6cb76da5844a9e3e (patch)
treea3df72dd0c7e673d673d017e0ec6268687b38a66 /basebmp/test
parent#i10000# ImplEnumMonitorProc: unreferenced formal parameter. (diff)
downloadcore-8c044545bbfd533f94743a7d6cb76da5844a9e3e.tar.gz
core-8c044545bbfd533f94743a7d6cb76da5844a9e3e.zip
#i65904# Dumped basegfx polygon raster converter in favor of a specialized solution; constructing all accessors with passed parameter now for the BitmapRenderer; significantly improved test coverage for polygon rasterizing
Diffstat (limited to 'basebmp/test')
-rw-r--r--basebmp/test/bmpdemo.cxx25
-rw-r--r--basebmp/test/filltest.cxx6
-rw-r--r--basebmp/test/makefile.mk5
-rw-r--r--basebmp/test/polytest.cxx317
4 files changed, 344 insertions, 9 deletions
diff --git a/basebmp/test/bmpdemo.cxx b/basebmp/test/bmpdemo.cxx
index b8cb431a2321..7c472e0b972d 100644
--- a/basebmp/test/bmpdemo.cxx
+++ b/basebmp/test/bmpdemo.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: bmpdemo.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: thb $ $Date: 2006-07-12 22:47:21 $
+ * last change: $Author: thb $ $Date: 2006-07-27 11:35:32 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -1082,6 +1082,24 @@ void TestWindow::Paint( const Rectangle& rRect )
basebmp::Format::THIRTYTWO_BIT_TC_MASK ));
{
+ ::rtl::OUString aSvg;
+ basegfx::B2DPolyPolygon aPoly;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m0 0 h7 v7 h-7 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m2 2 h3 v3 h-3 z" ) );
+
+ pDevice->fillPolyPolygon(
+ aPoly,
+ basebmp::Color(0xFFFFFFFF),
+ basebmp::DrawMode_PAINT );
+ }
+
+#if 0
+ {
basebmp::BitmapDeviceSharedPtr pMask( basebmp::createBitmapDevice( aTestSize,
false,
basebmp::Format::ONE_BIT_MSB_GREY ));
@@ -1114,11 +1132,9 @@ void TestWindow::Paint( const Rectangle& rRect )
{
const basebmp::Color aCol(0xFFFFFFFF);
-#if 0
basegfx::B2DPolygon aRect = basegfx::tools::createPolygonFromRect(
basegfx::B2DRange( 0,0,1001,1001 ));
pDevice->drawPolygon( aRect, aCol, basebmp::DrawMode_PAINT );
-#endif
const basegfx::B2IPoint aPt1(0,0);
const basegfx::B2IPoint aPt2(0,800);
@@ -1127,6 +1143,7 @@ void TestWindow::Paint( const Rectangle& rRect )
const basegfx::B2IPoint aPt3(0,1001);
pDevice->drawLine( aPt1, aPt3, aCol, basebmp::DrawMode_PAINT );
}
+#endif
{
pDevice->clear(basebmp::Color(0));
diff --git a/basebmp/test/filltest.cxx b/basebmp/test/filltest.cxx
index c3ec1137c615..8f53aa9b685d 100644
--- a/basebmp/test/filltest.cxx
+++ b/basebmp/test/filltest.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: filltest.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: thb $ $Date: 2006-06-02 16:14:23 $
+ * last change: $Author: thb $ $Date: 2006-07-27 11:35:32 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -81,6 +81,7 @@ private:
basegfx::tools::createPolygonFromRect( aRect )),
aCol,
DrawMode_PAINT );
+
const basegfx::B2IPoint aPt1(1,1);
CPPUNIT_ASSERT_MESSAGE("first pixel set",
rDevice->getPixel(aPt1) == aCol);
@@ -212,7 +213,6 @@ private:
basegfx::tools::createPolygonFromRect(aLeftBottom)),
aCol,
DrawMode_PAINT );
-
CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 3",
countPixel( rDevice, aCol ) == 3);
diff --git a/basebmp/test/makefile.mk b/basebmp/test/makefile.mk
index dc8f27a859a9..b21c41024972 100644
--- a/basebmp/test/makefile.mk
+++ b/basebmp/test/makefile.mk
@@ -4,9 +4,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.5 $
+# $Revision: 1.6 $
#
-# last change: $Author: thb $ $Date: 2006-07-12 15:09:45 $
+# last change: $Author: thb $ $Date: 2006-07-27 11:35:32 $
#
# The Contents of this file are made available subject to
# the terms of GNU Lesser General Public License Version 2.1.
@@ -71,6 +71,7 @@ SHL1OBJS= \
$(SLO)$/filltest.obj \
$(SLO)$/linetest.obj \
$(SLO)$/masktest.obj \
+ $(SLO)$/polytest.obj \
$(SLO)$/tools.obj
SHL1TARGET= tests
diff --git a/basebmp/test/polytest.cxx b/basebmp/test/polytest.cxx
new file mode 100644
index 000000000000..243cf68c70be
--- /dev/null
+++ b/basebmp/test/polytest.cxx
@@ -0,0 +1,317 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: polytest.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: thb $ $Date: 2006-07-27 11:35:32 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+// autogenerated file with codegen.pl
+
+#include <cppunit/simpleheader.hxx>
+
+#include <basegfx/vector/b2isize.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/point/b2ipoint.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+
+#include <basebmp/color.hxx>
+#include <basebmp/scanlineformats.hxx>
+#include <basebmp/bitmapdevice.hxx>
+#include <basebmp/debug.hxx>
+#include "tools.hxx"
+
+#include <iostream>
+#include <fstream>
+
+using namespace ::basebmp;
+
+namespace
+{
+/*
+ std::ofstream output("32bpp_test.dump");
+ debugDump( rDevice, output );
+*/
+
+class PolyTest : public CppUnit::TestFixture
+{
+private:
+ BitmapDeviceSharedPtr mpDevice1bpp;
+ BitmapDeviceSharedPtr mpDevice32bpp;
+
+ void implTestEmpty(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "m2 2 l7 7 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 0",
+ countPixel( rDevice, aCol ) == 0);
+
+ // --------------------------------------------------
+
+ rDevice->clear(aBgCol);
+ aPoly.clear();
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "m7 2 l-6 6 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 0(b)",
+ countPixel( rDevice, aCol ) == 0);
+ }
+
+ void implTestHairline(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "m2 2 h1 l7 7 h-1 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 7",
+ countPixel( rDevice, aCol ) == 7);
+
+ // --------------------------------------------------
+
+ rDevice->clear(aBgCol);
+ aPoly.clear();
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "m7 2 h-1 l-6 6 h1 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 6",
+ countPixel( rDevice, aCol ) == 6);
+
+ // --------------------------------------------------
+
+ rDevice->clear(aBgCol);
+ aPoly.clear();
+ basegfx::tools::importFromSvgD(
+ aPoly,
+ rtl::OUString::createFromAscii(
+ "m0 0 l7 7 h-1 l-5-7 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 3",
+ countPixel( rDevice, aCol ) == 3);
+ }
+
+ void implTestPolyPoly(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m0 0 h7 v7 h-7 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m2 2 v3 h3 v-3 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 40",
+ countPixel( rDevice, aCol ) == 40);
+ }
+
+ void implTestPolyPolyClip(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m0 0 h7 v7 h-7 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m2 2 v3 h3 v-3 z" ) );
+ basegfx::B2DHomMatrix aMat;
+ aMat.translate(-3,-3);
+ aMat.rotate( 1.7 );
+ aMat.translate(6,5);
+ aPoly.transform(aMat);
+
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 39",
+ countPixel( rDevice, aCol ) == 39);
+
+ BitmapDeviceSharedPtr pClippedDevice(
+ subsetBitmapDevice( rDevice,
+ basegfx::B2IRange(3,3,5,8) ));
+
+ rDevice->clear(aBgCol);
+ pClippedDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 7",
+ countPixel( rDevice, aCol ) == 7);
+ }
+
+ void implTestPolyPolyCrissCross(const BitmapDeviceSharedPtr& rDevice)
+ {
+ const Color aCol(0xFFFFFFFF);
+ const Color aBgCol(0);
+ rDevice->clear(aBgCol);
+ basegfx::B2DPolyPolygon aPoly;
+ ::rtl::OUString aSvg;
+
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m0 0 v2 l10 2 v-2 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m10 6 v-2 l-10 2 v2 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m1 0 h1 v10 h-1 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m4 0 h1 v10 h-1 z" ) );
+ basegfx::tools::importFromSvgD( aPoly,
+ ::rtl::OUString::createFromAscii(
+ "m8 0 h1 v10 h-1 z" ) );
+ rDevice->fillPolyPolygon(
+ aPoly,
+ aCol,
+ DrawMode_PAINT );
+ CPPUNIT_ASSERT_MESSAGE("number of rendered pixel is not 46",
+ countPixel( rDevice, aCol ) == 46);
+ }
+
+
+public:
+ void setUp()
+ {
+ const basegfx::B2ISize aSize(10,10);
+ mpDevice1bpp = createBitmapDevice( aSize,
+ true,
+ Format::ONE_BIT_MSB_PAL );
+ mpDevice32bpp = createBitmapDevice( aSize,
+ true,
+ Format::THIRTYTWO_BIT_TC_MASK );
+ }
+
+ void testEmpty()
+ {
+ implTestEmpty( mpDevice1bpp );
+ implTestEmpty( mpDevice32bpp );
+ }
+
+ void testHairline()
+ {
+ implTestHairline( mpDevice1bpp );
+ implTestHairline( mpDevice32bpp );
+ }
+
+ void testPolyPoly()
+ {
+ implTestPolyPoly( mpDevice1bpp );
+ implTestPolyPoly( mpDevice32bpp );
+ }
+
+ void testPolyPolyClip()
+ {
+ implTestPolyPolyClip(mpDevice1bpp);
+ implTestPolyPolyClip(mpDevice32bpp);
+ }
+
+ void testPolyPolyCrissCross()
+ {
+ implTestPolyPolyCrissCross(mpDevice1bpp);
+ implTestPolyPolyCrissCross(mpDevice32bpp);
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(PolyTest);
+ CPPUNIT_TEST(testEmpty);
+ CPPUNIT_TEST(testHairline);
+ CPPUNIT_TEST(testPolyPoly);
+ CPPUNIT_TEST(testPolyPolyClip);
+ CPPUNIT_TEST(testPolyPolyCrissCross);
+ CPPUNIT_TEST_SUITE_END();
+};
+
+// -----------------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(PolyTest, "PolyTest");
+}
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+//NOADDITIONAL;
+