filter/source/svg/presentation_engine.js | 133 ++++++++++++++++++++++++++++++- 1 file changed, 131 insertions(+), 2 deletions(-)
New commits: commit 3ce861adbe4e6f04d9d322e649fccd6cfcbd088f Author: Rohan Kumar <rohankanojia...@gmail.com> Date: Tue Jan 10 22:29:54 2017 +0530 tdf#51358 Support for BoxWipe transition in SVG Export Ported the class BoxWipe Change-Id: Iad93bfa9e414028ba842c3d43edcb8a94c15a104 Reviewed-on: https://gerrit.libreoffice.org/32933 Reviewed-by: jan iversen <j...@documentfoundation.org> Tested-by: jan iversen <j...@documentfoundation.org> diff --git a/filter/source/svg/presentation_engine.js b/filter/source/svg/presentation_engine.js index 2f59ea3..df69b14 100644 --- a/filter/source/svg/presentation_engine.js +++ b/filter/source/svg/presentation_engine.js @@ -5205,6 +5205,15 @@ ONEBLADE_TRANS_SUBTYPE = 26; // 107 ACROSS_TRANS_SUBTYPE = 27; RECTANGLE_TRANS_SUBTYPE = 34; // 101 DIAMOND_TRANS_SUBTYPE = 35; // 102 +TOPLEFT_TRANS_SUBTYPE = 36 // 3 +TOPRIGHT_TRANS_SUBTYPE = 37 // 4 +BOTTOMRIGHT_TRANS_SUBTYPE = 38 // 5 +BOTTOMLEFT_TRANS_SUBTYPE = 39 // 6 +TOPCENTER_TRANS_SUBTYPE = 40; // 7 +RIGHTCENTER_TRANS_SUBTYPE = 41; // 8 +BOTTOMCENTER_TRANS_SUBTYPE = 42; // 9 +LEFTCENTER_TRANS_SUBTYPE = 43; // 10 + aTransitionSubtypeInMap = { 'default' : DEFAULT_TRANS_SUBTYPE, @@ -5236,7 +5245,15 @@ aTransitionSubtypeInMap = { 'oneBlade' : ONEBLADE_TRANS_SUBTYPE, 'across' : ACROSS_TRANS_SUBTYPE, 'rectangle' : RECTANGLE_TRANS_SUBTYPE, - 'diamond' : DIAMOND_TRANS_SUBTYPE + 'diamond' : DIAMOND_TRANS_SUBTYPE, + 'topLeft' : TOPLEFT_TRANS_SUBTYPE, + 'topRight' : TOPRIGHT_TRANS_SUBTYPE, + 'bottomRight' : BOTTOMRIGHT_TRANS_SUBTYPE, + 'bottomLeft' : BOTTOMLEFT_TRANS_SUBTYPE, + 'topCenter' : TOPCENTER_TRANS_SUBTYPE, + 'rightCenter' : RIGHTCENTER_TRANS_SUBTYPE, + 'bottomCenter' : BOTTOMCENTER_TRANS_SUBTYPE, + 'leftCenter' : LEFTCENTER_TRANS_SUBTYPE }; aTransitionSubtypeOutMap = [ 'default', 'leftToRight', 'topToBottom', 'cornersIn', @@ -5246,7 +5263,7 @@ aTransitionSubtypeOutMap = [ 'default', 'leftToRight', 'topToBottom', 'cornersIn 'fourBlade', 'fromLeft', 'fromTop', 'fromRight', 'fromBottom', 'crossfade', 'fadeToColor', 'fadeFromColor', 'fadeOverColor', 'threeBlade', 'eightBlade', 'oneBlade', - 'across', 'rectangle', 'diamond' ]; + 'across', 'rectangle', 'diamond']; // Transition Modes @@ -5343,6 +5360,88 @@ aTransitionInfoTable[BARWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] = 'scaleIsotropically' : false }; +aTransitionInfoTable[BOXWIPE_TRANSITION] = {}; +aTransitionInfoTable[BOXWIPE_TRANSITION][TOPLEFT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 0.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_IGNORE, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[BOXWIPE_TRANSITION][TOPRIGHT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 90.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_IGNORE, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMRIGHT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 180.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_IGNORE, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMLEFT_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : -90.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_IGNORE, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[BOXWIPE_TRANSITION][TOPCENTER_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 0.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_FLIP_Y, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[BOXWIPE_TRANSITION][RIGHTCENTER_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 90.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_FLIP_X, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMCENTER_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : 180.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_FLIP_Y, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; +aTransitionInfoTable[BOXWIPE_TRANSITION][LEFTCENTER_TRANS_SUBTYPE] = +{ + 'class' : TRANSITION_CLIP_POLYPOLYGON, + 'rotationAngle' : -90.0, + 'scaleX' : 1.0, + 'scaleY' : 1.0, + 'reverseMethod' : REVERSEMETHOD_FLIP_X, + 'outInvertsSweep' : true, + 'scaleIsotropically' : false +}; + aTransitionInfoTable[FOURBOXWIPE_TRANSITION] = {}; aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSIN_TRANS_SUBTYPE] = aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSOUT_TRANS_SUBTYPE] = @@ -9112,6 +9211,11 @@ function createClipPolyPolygon( nType, nSubtype ) return new BarWipePath( 1 ); case FOURBOXWIPE_TRANSITION: return new FourBoxWipePath( nSubtype === CORNERSOUT_TRANS_SUBTYPE ); + case BOXWIPE_TRANSITION: + return new BoxWipePath( nSubtype == LEFTCENTER_TRANS_SUBTYPE || + nSubtype == TOPCENTER_TRANS_SUBTYPE || + nSubtype == RIGHTCENTER_TRANS_SUBTYPE || + nSubtype == BOTTOMCENTER_TRANS_SUBTYPE ); case ELLIPSEWIPE_TRANSITION: return new EllipseWipePath( nSubtype ); case PINWHEELWIPE_TRANSITION: @@ -9239,6 +9343,31 @@ BarWipePath.prototype.perform = function( nT ) }; +/** Class BoxWipePath + * This class handles a path made up by one square and is utilized for + * performing BoxWipe transitions. + * + * @param bIsTopCentered + * if true the transition subtype is top centered else not. + */ +function BoxWipePath(bIsTopCentered) { + this.bIsTopCentered = bIsTopCentered; + this.aBasePath = createUnitSquarePath(); +} + +BoxWipePath.prototype.perform = function( nT ) { + var d = pruneScaleValue(nT); + var aTransform = SVGIdentityMatrix; + if(this.bIsTopCentered) { + aTransform = aTransform.translate(-0.5, 0.0).scale(d, d).translate(0.5, 0.0); + } + else { + aTransform = aTransform.scale(d, d); + } + var aPath = this.aBasePath.cloneNode(true); + aPath.matrixTransform(aTransform); + return aPath; +} /** Class FourBoxWipePath _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits