1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_slideshow.hxx" 26 27 #include <canvas/debug.hxx> 28 #include <basegfx/matrix/b2dhommatrix.hxx> 29 #include <basegfx/polygon/b2dpolypolygon.hxx> 30 #include <basegfx/numeric/ftools.hxx> 31 #include <basegfx/matrix/b2dhommatrixtools.hxx> 32 #include "fourboxwipe.hxx" 33 34 35 namespace slideshow { 36 namespace internal { 37 38 ::basegfx::B2DPolyPolygon FourBoxWipe::operator () ( double t ) 39 { 40 ::basegfx::B2DHomMatrix aTransform; 41 const double d = ::basegfx::pruneScaleValue( t / 2.0 ); 42 if (m_cornersOut) 43 { 44 aTransform = basegfx::tools::createTranslateB2DHomMatrix(-0.5, -0.5); 45 aTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(d, d, -0.25, -0.25) 46 * aTransform; 47 } 48 else 49 { 50 aTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(d, d, -0.5, -0.5); 51 } 52 53 // top left: 54 ::basegfx::B2DPolygon square( m_unitRect ); 55 square.transform( aTransform ); 56 ::basegfx::B2DPolyPolygon res( square ); 57 // bottom left, flip on x-axis: 58 aTransform.scale( -1.0, 1.0 ); 59 ::basegfx::B2DPolygon square2( m_unitRect ); 60 square2.transform( aTransform ); 61 square2.flip(); // flip direction 62 res.append( square2 ); 63 // bottom right, flip on y-axis: 64 aTransform.scale( 1.0, -1.0 ); 65 ::basegfx::B2DPolygon square3( m_unitRect ); 66 square3.transform( aTransform ); 67 res.append( square3 ); 68 // top right, flip on x-axis: 69 aTransform.scale( -1.0, 1.0 ); 70 ::basegfx::B2DPolygon square4( m_unitRect ); 71 square4.transform( aTransform ); 72 square4.flip(); // flip direction 73 res.append( square4 ); 74 75 aTransform = basegfx::tools::createTranslateB2DHomMatrix(0.5, 0.5); 76 res.transform( aTransform ); 77 return res; 78 } 79 80 } 81 } 82