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
operator ()(double t)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