1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_slideshow.hxx"
30 
31 #include <canvas/debug.hxx>
32 #include <basegfx/matrix/b2dhommatrix.hxx>
33 #include <basegfx/polygon/b2dpolypolygon.hxx>
34 #include <basegfx/numeric/ftools.hxx>
35 #include <basegfx/matrix/b2dhommatrixtools.hxx>
36 #include "fourboxwipe.hxx"
37 
38 
39 namespace slideshow {
40 namespace internal {
41 
42 ::basegfx::B2DPolyPolygon FourBoxWipe::operator () ( double t )
43 {
44     ::basegfx::B2DHomMatrix aTransform;
45     const double d = ::basegfx::pruneScaleValue( t / 2.0 );
46     if (m_cornersOut)
47     {
48         aTransform = basegfx::tools::createTranslateB2DHomMatrix(-0.5, -0.5);
49         aTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(d, d, -0.25, -0.25)
50             * aTransform;
51     }
52     else
53     {
54         aTransform = basegfx::tools::createScaleTranslateB2DHomMatrix(d, d, -0.5, -0.5);
55     }
56 
57     // top left:
58     ::basegfx::B2DPolygon square( m_unitRect );
59     square.transform( aTransform );
60     ::basegfx::B2DPolyPolygon res( square );
61     // bottom left, flip on x-axis:
62     aTransform.scale( -1.0, 1.0 );
63     ::basegfx::B2DPolygon square2( m_unitRect );
64     square2.transform( aTransform );
65     square2.flip(); // flip direction
66     res.append( square2 );
67     // bottom right, flip on y-axis:
68     aTransform.scale( 1.0, -1.0 );
69     ::basegfx::B2DPolygon square3( m_unitRect );
70     square3.transform( aTransform );
71     res.append( square3 );
72     // top right, flip on x-axis:
73     aTransform.scale( -1.0, 1.0 );
74     ::basegfx::B2DPolygon square4( m_unitRect );
75     square4.transform( aTransform );
76     square4.flip(); // flip direction
77     res.append( square4 );
78 
79     aTransform = basegfx::tools::createTranslateB2DHomMatrix(0.5, 0.5);
80     res.transform( aTransform );
81     return res;
82 }
83 
84 }
85 }
86