/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // autogenerated file with codegen.pl #include "preextstl.h" #include "gtest/gtest.h" #include "postextstl.h" #include #include #include #include #include #include #include #include #include #include #include #include "tools.hxx" #include #include using namespace ::basebmp; namespace { /* std::ofstream output("32bpp_test.dump"); debugDump( mpDevice32bpp, output ); */ class FillTest : public ::testing::Test { protected: BitmapDeviceSharedPtr mpDevice1bpp; BitmapDeviceSharedPtr mpDevice32bpp; void implTestRectFill(const BitmapDeviceSharedPtr& rDevice) { rDevice->clear(Color(0)); const basegfx::B2DRange aRect(1,1,10,10); const Color aCol(0xFFFFFFFF); rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aRect )), aCol, DrawMode_PAINT ); const basegfx::B2IPoint aPt1(1,1); ASSERT_TRUE(rDevice->getPixel(aPt1) == aCol) << "first pixel set"; const basegfx::B2IPoint aPt2(9,9); ASSERT_TRUE(rDevice->getPixel(aPt2) == aCol) << "last pixel set"; const basegfx::B2IPoint aPt3(0,0); ASSERT_TRUE(rDevice->getPixel(aPt3) != aCol) << "topmost pixel not set"; const basegfx::B2IPoint aPt4(10,10); ASSERT_TRUE(rDevice->getPixel(aPt4) != aCol) << "bottommost pixel not set"; ASSERT_TRUE(countPixel( rDevice, aCol ) == 81) << "number of rendered pixel is not 81"; } void implTestCornerCases(const BitmapDeviceSharedPtr& rDevice) { rDevice->clear(Color(0)); const basegfx::B2DRange aEmpty1(0,0,0,11); const basegfx::B2DRange aEmpty2(0,0,11,0); const basegfx::B2DRange aVertLineLeft(0,0,1,11); const basegfx::B2DRange aVertLineRight(10,0,11,11); const basegfx::B2DRange aHorzLineTop(0,0,11,1); const basegfx::B2DRange aHorzLineBottom(0,10,11,11); const Color aCol(0xFFFFFFFF); rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aEmpty1 )), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 0) << "number of rendered pixel is not 0"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aEmpty2 )), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 0) << "number of rendered pixel is not 0"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aVertLineLeft )), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 11) << "number of rendered pixel is not 11"; const basegfx::B2IPoint aPt1(0,0); ASSERT_TRUE(rDevice->getPixel(aPt1) == aCol) << "first pixel set"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aVertLineRight )), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 22) << "number of rendered pixel is not 22"; const basegfx::B2IPoint aPt2(10,10); ASSERT_TRUE(rDevice->getPixel(aPt2) == aCol) << "last pixel set"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aHorzLineTop )), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 31) << "number of rendered pixel is not 31"; const basegfx::B2IPoint aPt3(5,0); ASSERT_TRUE(rDevice->getPixel(aPt3) == aCol) << "top-middle pixel set"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect( aHorzLineBottom )), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 40) << "number of rendered pixel is not 40"; const basegfx::B2IPoint aPt4(5,10); ASSERT_TRUE(rDevice->getPixel(aPt4) == aCol) << "bottom-middle pixel set"; ::rtl::OUString aSvg = ::rtl::OUString::createFromAscii( "m 0 0l7 7h-1z" ); basegfx::B2DPolyPolygon aPoly; basegfx::tools::importFromSvgD( aPoly, aSvg, false, NULL ); rDevice->fillPolyPolygon( aPoly, aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 43) << "number of rendered pixel is not 43"; } void implTestClipping(const BitmapDeviceSharedPtr& rDevice) { rDevice->clear(Color(0)); const basegfx::B2DRange aLeftTop(-10,-10,1,1); const basegfx::B2DRange aRightTop(10,-10,20,1); const basegfx::B2DRange aLeftBottom(-10,10,1,20); const basegfx::B2DRange aRightBottom(10,10,20,20); const basegfx::B2DRange aAllOver(-10,-10,20,20); const Color aCol(0xFFFFFFFF); rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect(aLeftTop)), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 1) << "number of rendered pixel is not 1"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect(aRightTop)), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 2) << "number of rendered pixel is not 2"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect(aLeftBottom)), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 3) << "number of rendered pixel is not 3"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect(aRightBottom)), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 4) << "number of rendered pixel is not 4"; rDevice->fillPolyPolygon( basegfx::B2DPolyPolygon( basegfx::tools::createPolygonFromRect(aAllOver)), aCol, DrawMode_PAINT ); ASSERT_TRUE(countPixel( rDevice, aCol ) == 121) << "number of rendered pixel is not 121"; } public: virtual void SetUp() { const basegfx::B2ISize aSize(11,11); mpDevice1bpp = createBitmapDevice( aSize, true, Format::ONE_BIT_MSB_PAL ); mpDevice32bpp = createBitmapDevice( aSize, true, Format::THIRTYTWO_BIT_TC_MASK ); } }; TEST_F(FillTest, testRectFill) { implTestRectFill( mpDevice1bpp ); implTestRectFill( mpDevice32bpp ); } TEST_F(FillTest, testClipping) { implTestClipping( mpDevice1bpp ); implTestClipping( mpDevice32bpp ); } TEST_F(FillTest, testCornerCases) { implTestCornerCases( mpDevice1bpp ); implTestCornerCases( mpDevice32bpp ); } }