diff options
author | Rohan Kumar <rohankanojia420@gmail.com> | 2017-03-12 23:16:30 +0530 |
---|---|---|
committer | Marco Cecchetti <marco.cecchetti@collabora.com> | 2017-04-07 17:06:15 +0200 |
commit | d000db0eb4e1c6c769b8d383cf0e570ce248c682 (patch) | |
tree | b0f7f130233f767f3bbafdfa5f444b4d2a272751 /filter | |
parent | f56f363273808146e8fee605e07518942ffc788f (diff) |
tdf#51358 Add Support for more slide transitions to Impress SVG Export
Ported the class WaterfallWipe.
Change-Id: I4856243c4b29e45f16ee780db42c2f742a6b1dc1
Reviewed-on: https://gerrit.libreoffice.org/35107
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/svg/presentation_engine.js | 105 |
1 files changed, 103 insertions, 2 deletions
diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index 90e3af16263a..48cad273080f 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -5170,6 +5170,7 @@ ZIGZAGWIPE_TRANSITION = 17; // 10 BARNZIGZAGWIPE_TRANSITION = 18; // 11 FANWIPE_TRANSITION = 19; // 25 SINGLESWEEPWIPE_TRANSITION = 20; // 24 +WATERFALLWIPE_TRANSITION = 21; // 34 aTransitionTypeInMap = { 'barWipe' : BARWIPE_TRANSITION, @@ -5191,7 +5192,8 @@ aTransitionTypeInMap = { 'irisWipe' : IRISWIPE_TRANSITION, 'veeWipe' : VEEWIPE_TRANSITION, 'zigZagWipe' : ZIGZAGWIPE_TRANSITION, - 'barnZigZagWipe' : BARNZIGZAGWIPE_TRANSITION + 'barnZigZagWipe' : BARNZIGZAGWIPE_TRANSITION, + 'waterfallWipe' : WATERFALLWIPE_TRANSITION }; aTransitionTypeOutMap = [ '', 'barWipe', 'boxWipe', 'fourBoxWipe', 'ellipseWipe', @@ -5268,6 +5270,10 @@ CLOCKWISETOPLEFT_TRANS_SUBTYPE = 59; // 44 COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE = 60; // 45 CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE = 61; // 46 COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE = 62; // 47 +VERTICALLEFT_TRANS_SUBTYPE = 63; // 93 +VERTICALRIGHT_TRANS_SUBTYPE = 64; // 94 +HORIZONTALLEFT_TRANS_SUBTYPE = 65; // 95 +HORIZONTALRIGHT_TRANS_SUBTYPE = 66; // 96 aTransitionSubtypeInMap = { 'default' : DEFAULT_TRANS_SUBTYPE, @@ -5332,7 +5338,11 @@ aTransitionSubtypeInMap = { 'up' : UP_TRANS_SUBTYPE, 'right' : RIGHT_TRANS_SUBTYPE, 'diagonalBottomLeft': DIAGONALBOTTOMLEFT_TRANS_SUBTYPE, - 'diagonalTopLeft' : DIAGONALTOPLEFT_TRANS_SUBTYPE + 'diagonalTopLeft' : DIAGONALTOPLEFT_TRANS_SUBTYPE, + 'verticalLeft' : VERTICALLEFT_TRANS_SUBTYPE, + 'verticalRight' : VERTICALRIGHT_TRANS_SUBTYPE, + 'horizontalLeft' : HORIZONTALLEFT_TRANS_SUBTYPE, + 'horizontalRight' : HORIZONTALRIGHT_TRANS_SUBTYPE }; aTransitionSubtypeOutMap = [ 'default', 'leftToRight', 'topToBottom', 'cornersIn', @@ -5587,6 +5597,48 @@ aTransitionInfoTable[BARWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] = 'scaleIsotropically' : false }; +aTransitionInfoTable[WATERFALLWIPE_TRANSITION] = {}; +aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALLEFT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 0.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_ROTATE_180, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALRIGHT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 0.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_ROTATE_180, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALLEFT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : -90.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_ROTATE_180, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALRIGHT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 90.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_ROTATE_180, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; + aTransitionInfoTable[BOXWIPE_TRANSITION] = {}; aTransitionInfoTable[BOXWIPE_TRANSITION][TOPLEFT_TRANS_SUBTYPE] = { @@ -9701,6 +9753,10 @@ function createClipPolyPolygon( nType, nSubtype ) // flipOnYAxis nSubtype == COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE || nSubtype == COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE ); + case WATERFALLWIPE_TRANSITION: + return new WaterfallWipePath(128, // flipOnYAxis + nSubtype == VERTICALRIGHT_TRANS_SUBTYPE || + nSubtype == HORIZONTALLEFT_TRANS_SUBTYPE); case DISSOLVE_TRANSITION: return new RandomWipePath( 16 * 16, false /* dissolve */ ); case VEEWIPE_TRANSITION: @@ -10121,6 +10177,51 @@ BarnDoorWipePath.prototype.perform = function( nT ) { return res; } +/** Class WaterfallWipe + * + * @param nElements + * Number of cells to be used + * @param bFlipOnYAxis + * Whether to flip on y-axis or not. + */ +function WaterfallWipePath(nElements, bFlipOnYAxis) { + this.bFlipOnYAxis = bFlipOnYAxis; + + var sqrtElements = Math.floor(Math.sqrt(nElements)); + var elementEdge = 1.0/sqrtElements; + + var aPath = 'M '+ 0.0 + ' ' + -1.0 + ' '; + for(var pos = sqrtElements; pos--; ) { + var xPos = sqrtElements - pos - 1; + var yPos = pruneScaleValue( ((pos+1) * elementEdge) - 1.0); + + aPath += 'L ' + pruneScaleValue(xPos * elementEdge) + ' ' + yPos + ' '; + aPath += 'L ' + pruneScaleValue((xPos+1)*elementEdge) + ' ' + yPos + ' '; + } + aPath += 'L ' + 1.0 + ' ' + -1.0 + ' '; + aPath += 'L ' + 0.0 + ' ' + -1.0 + ' '; + this.aBasePath = document.createElementNS( NSS['svg'], 'path'); + this.aBasePath.setAttribute('d', aPath); +} + +WaterfallWipePath.prototype.perform = function( nT ) { + var poly = this.aBasePath.cloneNode(true); + var aTransform = SVGIdentityMatrix.translate(0.0, pruneScaleValue(2.0 * nT)); + poly.matrixTransform(aTransform); + var aHead = 'M ' + 0.0 + ' ' + -1.0 + ' '; + var aHeadPath= document.createElementNS( NSS['svg'], 'path'); + aHeadPath.setAttribute('d', aHead); + + var aTail = 'M ' + 1.0 + ' ' + -1.0 + ' '; + var aTailPath = document.createElementNS( NSS['svg'], 'path'); + aTailPath.setAttribute('d', aTail); + + poly.prependPath(aHeadPath); + poly.appendPath(aTailPath); + + return this.bFlipOnYAxis ? flipOnYAxis(poly) : poly; +} + /** Class Iriswipe * * @param unitRect |