/************************************************************** * * 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. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_slideshow.hxx" #include #include #include #include #include "parametricpolypolygonfactory.hxx" #include "barwipepolypolygon.hxx" #include "boxwipe.hxx" #include "fourboxwipe.hxx" #include "barndoorwipe.hxx" #include "doublediamondwipe.hxx" #include "veewipe.hxx" #include "iriswipe.hxx" #include "ellipsewipe.hxx" #include "checkerboardwipe.hxx" #include "randomwipe.hxx" #include "waterfallwipe.hxx" #include "clockwipe.hxx" #include "fanwipe.hxx" #include "pinwheelwipe.hxx" #include "snakewipe.hxx" #include "spiralwipe.hxx" #include "sweepwipe.hxx" #include "figurewipe.hxx" #include "zigzagwipe.hxx" using namespace ::com::sun::star; namespace slideshow { namespace internal { ParametricPolyPolygonSharedPtr ParametricPolyPolygonFactory::createClipPolyPolygon( sal_Int16 nType, sal_Int16 nSubType ) { using namespace ::com::sun::star::animations::TransitionType; using namespace ::com::sun::star::animations::TransitionSubType; switch (nType) { case BARWIPE: return ParametricPolyPolygonSharedPtr( new BarWipePolyPolygon ); case BLINDSWIPE: return ParametricPolyPolygonSharedPtr( new BarWipePolyPolygon( 6 ) ); case BOXWIPE: return ParametricPolyPolygonSharedPtr( new BoxWipe( nSubType == LEFTCENTER || nSubType == TOPCENTER || nSubType == RIGHTCENTER|| nSubType == BOTTOMCENTER ) ); case FOURBOXWIPE: return ParametricPolyPolygonSharedPtr( new FourBoxWipe( nSubType == CORNERSOUT ) ); case BARNDOORWIPE: return ParametricPolyPolygonSharedPtr( new BarnDoorWipe ); case DIAGONALWIPE: return ParametricPolyPolygonSharedPtr( new BarWipePolyPolygon ); case VEEWIPE: return ParametricPolyPolygonSharedPtr( new VeeWipe ); case IRISWIPE: return ParametricPolyPolygonSharedPtr( new IrisWipe ); case ELLIPSEWIPE: return ParametricPolyPolygonSharedPtr( new EllipseWipe(nSubType) ); case CHECKERBOARDWIPE: return ParametricPolyPolygonSharedPtr( new CheckerBoardWipe ); case RANDOMBARWIPE: return ParametricPolyPolygonSharedPtr( new RandomWipe( 128, true /* bars */ ) ); case DISSOLVE: return ParametricPolyPolygonSharedPtr( new RandomWipe( 16 * 16, // for now until dxcanvas is faster // 64 * 64 /* elements */, false /* dissolve */ ) ); case WATERFALLWIPE: return ParametricPolyPolygonSharedPtr( new WaterfallWipe( 128, // flipOnYAxis: nSubType == VERTICALRIGHT || nSubType == HORIZONTALLEFT ) ); case CLOCKWIPE: return ParametricPolyPolygonSharedPtr( new ClockWipe ); case FANWIPE: return ParametricPolyPolygonSharedPtr( new FanWipe( // center: nSubType == CENTERTOP || nSubType == CENTERRIGHT ) ); case PINWHEELWIPE: { sal_Int32 blades; switch (nSubType) { case ONEBLADE: blades = 1; break; case THREEBLADE: blades = 3; break; case FOURBLADE: blades = 4; break; case EIGHTBLADE: blades = 8; break; default: blades = 2; break; } return ParametricPolyPolygonSharedPtr( new PinWheelWipe( blades ) ); } case SNAKEWIPE: return ParametricPolyPolygonSharedPtr( new SnakeWipe( // elements: 8 * 8, // diagonal: nSubType == TOPLEFTDIAGONAL || nSubType == TOPRIGHTDIAGONAL || nSubType == BOTTOMRIGHTDIAGONAL || nSubType == BOTTOMLEFTDIAGONAL, // flipOnYAxis: nSubType == TOPLEFTVERTICAL || nSubType == TOPRIGHTDIAGONAL || nSubType == BOTTOMLEFTDIAGONAL ) ); case PARALLELSNAKESWIPE: return ParametricPolyPolygonSharedPtr( new ParallelSnakesWipe( // elements: 8 * 8, // diagonal: nSubType == DIAGONALBOTTOMLEFTOPPOSITE || nSubType == DIAGONALTOPLEFTOPPOSITE, // flipOnYAxis: nSubType == VERTICALBOTTOMLEFTOPPOSITE || nSubType == HORIZONTALTOPLEFTOPPOSITE || nSubType == DIAGONALTOPLEFTOPPOSITE, // opposite: nSubType == VERTICALTOPLEFTOPPOSITE || nSubType == VERTICALBOTTOMLEFTOPPOSITE || nSubType == HORIZONTALTOPLEFTOPPOSITE || nSubType == HORIZONTALTOPRIGHTOPPOSITE || nSubType == DIAGONALBOTTOMLEFTOPPOSITE || nSubType == DIAGONALTOPLEFTOPPOSITE ) ); case SPIRALWIPE: return ParametricPolyPolygonSharedPtr( new SpiralWipe( // elements: 8 * 8, // flipOnYAxis: nSubType == TOPLEFTCOUNTERCLOCKWISE || nSubType == TOPRIGHTCOUNTERCLOCKWISE || nSubType == BOTTOMRIGHTCOUNTERCLOCKWISE || nSubType == BOTTOMLEFTCOUNTERCLOCKWISE ) ); case BOXSNAKESWIPE: return ParametricPolyPolygonSharedPtr( new BoxSnakesWipe( // elements: 8 * 8, // fourBox: nSubType == FOURBOXVERTICAL || nSubType == FOURBOXHORIZONTAL ) ); case SINGLESWEEPWIPE: return ParametricPolyPolygonSharedPtr( new SweepWipe( // center: nSubType == CLOCKWISETOP || nSubType == CLOCKWISERIGHT || nSubType == CLOCKWISEBOTTOM || nSubType == CLOCKWISELEFT, // single: true, // oppositeVertical: false, // flipOnYAxis: nSubType == COUNTERCLOCKWISEBOTTOMLEFT || nSubType == COUNTERCLOCKWISETOPRIGHT ) ); case DOUBLESWEEPWIPE: return ParametricPolyPolygonSharedPtr( new SweepWipe( // center: nSubType == PARALLELVERTICAL || nSubType == PARALLELDIAGONAL || nSubType == OPPOSITEVERTICAL || nSubType == OPPOSITEHORIZONTAL, // single: false, // oppositeVertical: nSubType == OPPOSITEVERTICAL || nSubType == OPPOSITEHORIZONTAL, // flipOnYAxis: false ) ); case DOUBLEFANWIPE: return ParametricPolyPolygonSharedPtr( new FanWipe( //center: true, // single: false, // fanIn: nSubType == FANINVERTICAL || nSubType == FANINHORIZONTAL ) ); case TRIANGLEWIPE: return ParametricPolyPolygonSharedPtr( FigureWipe::createTriangleWipe() ); case ARROWHEADWIPE: return ParametricPolyPolygonSharedPtr( FigureWipe::createArrowHeadWipe() ); case PENTAGONWIPE: return ParametricPolyPolygonSharedPtr( FigureWipe::createPentagonWipe() ); case HEXAGONWIPE: return ParametricPolyPolygonSharedPtr( FigureWipe::createHexagonWipe() ); case STARWIPE: { sal_Int32 points; switch (nSubType) { case FIVEPOINT: points = 5; break; case SIXPOINT: points = 6; break; default: points = 4; break; } return ParametricPolyPolygonSharedPtr( FigureWipe::createStarWipe(points) ); } case MISCDIAGONALWIPE: { switch (nSubType) { case DOUBLEBARNDOOR: return ParametricPolyPolygonSharedPtr( new BarnDoorWipe( true /* doubled */ ) ); case DOUBLEDIAMOND: return ParametricPolyPolygonSharedPtr( new DoubleDiamondWipe ); } break; } case ZIGZAGWIPE: return ParametricPolyPolygonSharedPtr( new ZigZagWipe(5) ); case BARNZIGZAGWIPE: return ParametricPolyPolygonSharedPtr( new BarnZigZagWipe(5) ); case BOWTIEWIPE: case BARNVEEWIPE: case EYEWIPE: case ROUNDRECTWIPE: case MISCSHAPEWIPE: case SALOONDOORWIPE: case WINDSHIELDWIPE: // for now, map to barwipe transition return ParametricPolyPolygonSharedPtr( new BarWipePolyPolygon ); default: case PUSHWIPE: case SLIDEWIPE: case FADE: ENSURE_OR_THROW( false, "createShapeClipPolyPolygonAnimation(): Transition type mismatch" ); } return ParametricPolyPolygonSharedPtr(); } } }