/* -*- 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 #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace ::com::sun::star; class CanvasTest : public test::BootstrapFixture { public: CanvasTest() : BootstrapFixture(true, false) {} void testComposite(); CPPUNIT_TEST_SUITE(CanvasTest); CPPUNIT_TEST(testComposite); CPPUNIT_TEST_SUITE_END(); }; void CanvasTest::testComposite() { #ifdef LINUX VclPtrInstance pWin( nullptr, WB_STDWORK ); uno::Reference xCanvas = pWin->GetCanvas (); if( !xCanvas.is() ) return; // can't get a canvas working at all - truly headless ? // a huge canvas ... Size aSize (1, 1); uno::Reference xBitmap; xBitmap = xCanvas->getDevice ()->createCompatibleAlphaBitmap( vcl::unotools::integerSize2DFromSize( aSize ) ); CPPUNIT_ASSERT( xBitmap.is() ); uno::Reference< rendering::XBitmapCanvas > xBitmapCanvas( xBitmap, uno::UNO_QUERY ); CPPUNIT_ASSERT( xBitmapCanvas.is() ); BitmapEx aBitmapEx; { // clear the canvas and basic sanity check ... xBitmapCanvas->clear(); CPPUNIT_ASSERT( aBitmapEx.Create( xBitmapCanvas, aSize ) ); CPPUNIT_ASSERT( aBitmapEx.IsAlpha() ); CPPUNIT_ASSERT( aBitmapEx.GetAlpha() ); } { // render something rendering::RenderState aDefaultState; uno::Sequence< double > aRedTransparent( 4 ); aRedTransparent[0] = 1.0; // R aRedTransparent[1] = 0.0; // G aRedTransparent[2] = 0.0; // B aRedTransparent[3] = 0.5; // A aDefaultState.DeviceColor = aRedTransparent; #if 0 // words fail me to describe the sheer beauty of allocating an UNO // object to represent a polygon, and manually handling the ViewState // and there being no public helper for this - to render ... a rectangle. XCachedPrimitive fillPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState ) #endif } #endif } CPPUNIT_TEST_SUITE_REGISTRATION(CanvasTest); CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */