//Edit selected spotlight shape to fit within the current slide
        public PowerPoint.Shape CreateSpotlightShape(PowerPoint.Shape spotShape)
        {
            spotShape.Copy();
            bool isCallout = false;

            PowerPoint.Shape spotlightShape;

            if (spotShape.Type == Office.MsoShapeType.msoCallout)
            {
                isCallout = true;
            }

            if (isCallout)
            {
                spotlightShape = this.Shapes.Paste()[1];
                LegacyShapeUtil.CopyShapePosition(spotShape, ref spotlightShape);
            }
            else
            {
                spotlightShape = this.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1];
                LegacyShapeUtil.CopyShapePosition(spotShape, ref spotlightShape);
                CropSpotlightPictureToSlide(ref spotlightShape);
            }

            PrepareSpotlightShape(ref spotlightShape);
            return(spotlightShape);
        }
        //Return zoomed version of cropped slide picture to be used for zoom out animation
        private void GetShapeToZoomWithBackground(PowerPoint.Shape zoomShape)
        {
            PowerPoint.Shape referenceShape = GetReferenceShape(zoomShape);

            float finalWidthMagnify    = referenceShape.Width;
            float initialWidthMagnify  = zoomShape.Width;
            float finalHeightMagnify   = referenceShape.Height;
            float initialHeightMagnify = zoomShape.Height;

            zoomShape.Copy();
            PowerPoint.Shape zoomShapeCopy = _slide.Shapes.Paste()[1];
            LegacyShapeUtil.CopyShapeAttributes(zoomShape, ref zoomShapeCopy);

            Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(_slide.SlideIndex);
            zoomSlideCroppedShapes.Select();
            zoomShapeCopy.Visible = Office.MsoTriState.msoTrue;
            zoomShapeCopy.Select(Office.MsoTriState.msoFalse);
            PowerPoint.ShapeRange selection  = Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange;
            PowerPoint.Shape      groupShape = selection.Group();

            groupShape.Width  *= (finalWidthMagnify / initialWidthMagnify);
            groupShape.Height *= (finalHeightMagnify / initialHeightMagnify);
            groupShape.Ungroup();
            zoomSlideCroppedShapes.Left += (referenceShape.Left - zoomShapeCopy.Left);
            zoomSlideCroppedShapes.Top  += (referenceShape.Top - zoomShapeCopy.Top);
            zoomShapeCopy.Delete();
            referenceShape.Delete();
        }
        private static PowerPoint.Shape GetStepBackWithoutBackgroundShapeToZoom(PowerPointSlide addedSlide, PowerPointSlide previousSlide)
        {
            Globals.ThisAddIn.Application.ActiveWindow.Selection.Unselect();
            Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(addedSlide.Index);

            List <PowerPoint.Shape> copiedShapes = new List <PowerPoint.Shape>();

            foreach (PowerPoint.Shape sh in previousSlide.Shapes)
            {
                if (!previousSlide.HasExitAnimation(sh) && !sh.IsHidden())
                {
                    PowerPoint.Shape shapeCopy = addedSlide.Shapes.SafeCopyPlaceholder(sh);
                    LegacyShapeUtil.CopyShapeAttributes(sh, ref shapeCopy);
                    copiedShapes.Add(shapeCopy);
                }
            }

            Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(addedSlide.Index);
            SelectAllShape(copiedShapes);
            PowerPoint.Selection sel        = Globals.ThisAddIn.Application.ActiveWindow.Selection;
            PowerPoint.Shape     shapeGroup = sel.ShapeRange.SafeGroup();

            PowerPoint.Shape previousSlidePicture = addedSlide.Shapes.SafeCopyPNG(shapeGroup);
            LegacyShapeUtil.CopyCenterShapePosition(shapeGroup, ref previousSlidePicture);
            previousSlidePicture.Name = "PPTZoomOutShape" + DateTime.Now.ToString("yyyyMMddHHmmssffff");
            shapeGroup.SafeDelete();

            return(previousSlidePicture);
        }
Exemple #4
0
        public void AddZoomToAreaAnimation(PowerPoint.Shape zoomShape)
        {
            PrepareForZoomToArea(zoomShape);
            PowerPoint.Shape shapeToZoom = null, referenceShape = null;
            if (!ZoomLabSettings.BackgroundZoomChecked)
            {
                shapeToZoom    = GetShapeToZoom(zoomShape);
                referenceShape = GetReferenceShape(shapeToZoom);
                DefaultMotionAnimation.AddDefaultMotionAnimation(this, shapeToZoom, referenceShape, 0.5f, PowerPoint.MsoAnimTriggerType.msoAnimTriggerAfterPrevious);
            }
            else
            {
                shapeToZoom = zoomSlideCroppedShapes.Duplicate()[1];
                DeleteShapeAnimations(shapeToZoom);
                LegacyShapeUtil.CopyShapePosition(zoomSlideCroppedShapes, ref shapeToZoom);

                referenceShape = GetReferenceShape(zoomShape);
                DefaultMotionAnimation.AddZoomToAreaMotionAnimation(this, shapeToZoom, zoomShape, referenceShape, 0.5f, PowerPoint.MsoAnimTriggerType.msoAnimTriggerAfterPrevious);
            }

            shapeToZoom.Name = "PPTLabsMagnifyAreaSlide" + DateTime.Now.ToString("yyyyMMddHHmmssffff");
            referenceShape.Delete();
            zoomSlideCroppedShapes.Visible = Office.MsoTriState.msoFalse;
            indicatorShape.ZOrder(Office.MsoZOrderCmd.msoBringToFront);
        }
        //Return picture copy of next slide where shapes with exit animations have been deleted
        private static PowerPoint.Shape GetNextSlidePictureWithoutBackground(PowerPointSlide currentSlide, PowerPointSlide nextSlide, out PowerPoint.Shape pictureOnNextSlide)
        {
            Globals.ThisAddIn.Application.ActiveWindow.Selection.Unselect();
            Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(nextSlide.Index);

            List <PowerPoint.Shape> copiedShapes = new List <PowerPoint.Shape>();

            foreach (PowerPoint.Shape sh in nextSlide.Shapes)
            {
                if (!nextSlide.HasEntryAnimation(sh) && !sh.IsHidden())
                {
                    PowerPoint.Shape shapeCopy = currentSlide.Shapes.SafeCopyPlaceholder(sh);
                    LegacyShapeUtil.CopyShapeAttributes(sh, ref shapeCopy);
                    copiedShapes.Add(shapeCopy);
                }
            }

            Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(currentSlide.Index);
            SelectAllShape(copiedShapes);
            PowerPoint.Selection sel        = Globals.ThisAddIn.Application.ActiveWindow.Selection;
            PowerPoint.Shape     shapeGroup = sel.ShapeRange.SafeGroup();

            pictureOnNextSlide = nextSlide.Shapes.SafeCopyPNG(shapeGroup);
            LegacyShapeUtil.CopyCenterShapePosition(shapeGroup, ref pictureOnNextSlide);
            shapeGroup.SafeDelete();

            PowerPoint.Shape slidePicture = currentSlide.Shapes.SafeCopyPNG(pictureOnNextSlide);
            return(slidePicture);
        }
        public void AddZoomToAreaAnimation(PowerPoint.Shape zoomShape)
        {
            PrepareForZoomToArea();

            //Create zoomed-in version of the part of the slide specified by zoom shape
            zoomSlideCroppedShapes.PictureFormat.CropLeft   += zoomShape.Left;
            zoomSlideCroppedShapes.PictureFormat.CropTop    += zoomShape.Top;
            zoomSlideCroppedShapes.PictureFormat.CropRight  += (PowerPointPresentation.Current.SlideWidth - (zoomShape.Left + zoomShape.Width));
            zoomSlideCroppedShapes.PictureFormat.CropBottom += (PowerPointPresentation.Current.SlideHeight - (zoomShape.Top + zoomShape.Height));

            LegacyShapeUtil.CopyShapePosition(zoomShape, ref zoomSlideCroppedShapes);

            zoomSlideCroppedShapes.LockAspectRatio = Office.MsoTriState.msoTrue;
            if (zoomSlideCroppedShapes.Width > zoomSlideCroppedShapes.Height)
            {
                zoomSlideCroppedShapes.Width = PowerPointPresentation.Current.SlideWidth;
            }
            else
            {
                zoomSlideCroppedShapes.Height = PowerPointPresentation.Current.SlideHeight;
            }

            zoomSlideCroppedShapes.Left = (PowerPointPresentation.Current.SlideWidth / 2) - (zoomSlideCroppedShapes.Width / 2);
            zoomSlideCroppedShapes.Top  = (PowerPointPresentation.Current.SlideHeight / 2) - (zoomSlideCroppedShapes.Height / 2);

            zoomSlideCroppedShapes.PictureFormat.CropLeft   = 0;
            zoomSlideCroppedShapes.PictureFormat.CropTop    = 0;
            zoomSlideCroppedShapes.PictureFormat.CropRight  = 0;
            zoomSlideCroppedShapes.PictureFormat.CropBottom = 0;

            indicatorShape.ZOrder(Office.MsoZOrderCmd.msoBringToFront);
        }
Exemple #7
0
        //Edit selected spotlight shape to fit within the current slide
        public PowerPoint.Shape CreateSpotlightShape(PowerPoint.Shape spotShape)
        {
            bool isCallout = false;

            PowerPoint.Shape spotlightShape;

            if (spotShape.Type == Office.MsoShapeType.msoCallout)
            {
                isCallout = true;
            }

            if (isCallout)
            {
                spotlightShape = this.Shapes.SafeCopy(spotShape); // confident it is not a placeholder
                LegacyShapeUtil.CopyCenterShapePosition(spotShape, ref spotlightShape);
            }
            else
            {
                spotlightShape = this.Shapes.SafeCopyPNG(spotShape);
                LegacyShapeUtil.CopyCenterShapePosition(spotShape, ref spotlightShape);
                CropSpotlightPictureToSlide(ref spotlightShape);
            }

            PrepareSpotlightShape(ref spotlightShape);
            return(spotlightShape);
        }
 private static PowerPoint.Effect AddRotationAnimation(PowerPointSlide animationSlide, PowerPoint.Shape animationShape, float initialRotation, float finalRotation, float duration, ref PowerPoint.MsoAnimTriggerType trigger)
 {
     if (finalRotation != initialRotation)
     {
         PowerPoint.Effect            effectRotate = animationSlide.TimeLine.MainSequence.AddEffect(animationShape, PowerPoint.MsoAnimEffect.msoAnimEffectSpin, PowerPoint.MsoAnimateByLevel.msoAnimateLevelNone, trigger);
         PowerPoint.AnimationBehavior rotate       = effectRotate.Behaviors[1];
         effectRotate.Timing.Duration         = duration;
         effectRotate.EffectParameters.Amount = LegacyShapeUtil.GetMinimumRotation(initialRotation, finalRotation);
         trigger = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;
         return(effectRotate);
     }
     return(null);
 }
Exemple #9
0
        //Shape dimensions should match the slide dimensions and the shape should be within the slide
        private static PowerPoint.Shape GetBestFitShape(PowerPointSlide currentSlide, PowerPoint.Shape zoomShape)
        {
            zoomShape.Copy();
            PowerPoint.Shape zoomShapeCopy = currentSlide.Shapes.Paste()[1];

            zoomShapeCopy.LockAspectRatio = Office.MsoTriState.msoFalse;

            if (zoomShape.Width > zoomShape.Height)
            {
                zoomShapeCopy.Width  = zoomShape.Width;
                zoomShapeCopy.Height = PowerPointPresentation.Current.SlideHeight * zoomShapeCopy.Width / PowerPointPresentation.Current.SlideWidth;
            }
            else
            {
                zoomShapeCopy.Height = zoomShape.Height;
                zoomShapeCopy.Width  = PowerPointPresentation.Current.SlideWidth * zoomShapeCopy.Height / PowerPointPresentation.Current.SlideHeight;
            }
            LegacyShapeUtil.CopyShapePosition(zoomShape, ref zoomShapeCopy);

            if (zoomShapeCopy.Width > PowerPointPresentation.Current.SlideWidth)
            {
                zoomShapeCopy.Width = PowerPointPresentation.Current.SlideWidth;
            }

            if (zoomShapeCopy.Height > PowerPointPresentation.Current.SlideHeight)
            {
                zoomShapeCopy.Height = PowerPointPresentation.Current.SlideHeight;
            }

            if (zoomShapeCopy.Left < 0)
            {
                zoomShapeCopy.Left = 0;
            }

            if (zoomShapeCopy.Left + zoomShapeCopy.Width > PowerPointPresentation.Current.SlideWidth)
            {
                zoomShapeCopy.Left = PowerPointPresentation.Current.SlideWidth - zoomShapeCopy.Width;
            }

            if (zoomShapeCopy.Top < 0)
            {
                zoomShapeCopy.Top = 0;
            }

            if (zoomShapeCopy.Top + zoomShapeCopy.Height > PowerPointPresentation.Current.SlideHeight)
            {
                zoomShapeCopy.Top = PowerPointPresentation.Current.SlideHeight - zoomShapeCopy.Height;
            }

            return(zoomShapeCopy);
        }
Exemple #10
0
        //Return cropped version of slide picture
        private PowerPoint.Shape GetShapeToZoom(PowerPoint.Shape zoomShape)
        {
            PowerPoint.Shape shapeToZoom = zoomSlideCroppedShapes.Duplicate()[1];
            DeleteShapeAnimations(shapeToZoom);
            LegacyShapeUtil.CopyShapePosition(zoomSlideCroppedShapes, ref shapeToZoom);

            shapeToZoom.PictureFormat.CropLeft   += zoomShape.Left;
            shapeToZoom.PictureFormat.CropTop    += zoomShape.Top;
            shapeToZoom.PictureFormat.CropRight  += (PowerPointPresentation.Current.SlideWidth - (zoomShape.Left + zoomShape.Width));
            shapeToZoom.PictureFormat.CropBottom += (PowerPointPresentation.Current.SlideHeight - (zoomShape.Top + zoomShape.Height));

            LegacyShapeUtil.CopyShapePosition(zoomShape, ref shapeToZoom);
            return(shapeToZoom);
        }
        //Store cropped version of slide picture as global variable
        private void AddZoomSlideCroppedPicture(PowerPoint.Shape zoomShape)
        {
            zoomSlideCroppedShapes         = GetShapesWithPrefix("PPTLabsMagnifyAreaGroup")[0];
            zoomSlideCroppedShapes.Visible = Office.MsoTriState.msoTrue;
            DeleteShapeAnimations(zoomSlideCroppedShapes);

            if (!ZoomLabSettings.BackgroundZoomChecked)
            {
                zoomSlideCroppedShapes.PictureFormat.CropLeft   += zoomShape.Left;
                zoomSlideCroppedShapes.PictureFormat.CropTop    += zoomShape.Top;
                zoomSlideCroppedShapes.PictureFormat.CropRight  += (PowerPointPresentation.Current.SlideWidth - (zoomShape.Left + zoomShape.Width));
                zoomSlideCroppedShapes.PictureFormat.CropBottom += (PowerPointPresentation.Current.SlideHeight - (zoomShape.Top + zoomShape.Height));

                LegacyShapeUtil.CopyShapePosition(zoomShape, ref zoomSlideCroppedShapes);
            }
        }
Exemple #12
0
        //Set position, size and animations of the previous slide copy
        private static void PreparePreviousSlidePicture(PowerPoint.Shape selectedShape, ref PowerPoint.Shape previousSlidePicture)
        {
            previousSlidePicture.LockAspectRatio = Office.MsoTriState.msoTrue;
            if (selectedShape.Width > selectedShape.Height)
            {
                previousSlidePicture.Height = selectedShape.Height;
            }
            else
            {
                previousSlidePicture.Width = selectedShape.Width;
            }

            LegacyShapeUtil.CopyShapePosition(selectedShape, ref previousSlidePicture);

            selectedShape.Visible     = Office.MsoTriState.msoFalse;
            previousSlidePicture.Name = "PPTZoomOutShape" + DateTime.Now.ToString("yyyyMMddHHmmssffff");
        }
Exemple #13
0
        //Return picture copy of next slide where shapes with exit animations have been deleted
        private static PowerPoint.Shape GetNextSlidePictureWithoutBackground(PowerPointSlide currentSlide, PowerPointSlide nextSlide, out PowerPoint.Shape pictureOnNextSlide)
        {
            Globals.ThisAddIn.Application.ActiveWindow.Selection.Unselect();
            Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(nextSlide.Index);

            List <PowerPoint.Shape> shapesOnNextSlide = new List <PowerPoint.Shape>();

            foreach (PowerPoint.Shape sh in nextSlide.Shapes)
            {
                if (!nextSlide.HasEntryAnimation(sh) && !ShapeUtil.IsHidden(sh))
                {
                    shapesOnNextSlide.Add(sh);
                }
            }

            var copiedShapes = new List <PowerPoint.Shape>();

            foreach (PowerPoint.Shape sh in shapesOnNextSlide)
            {
                sh.Copy();
                var shapeCopy = nextSlide.Shapes.Paste()[1];
                LegacyShapeUtil.CopyShapeAttributes(sh, ref shapeCopy);
                copiedShapes.Add(shapeCopy);
            }

            SelectAllShape(copiedShapes);
            PowerPoint.Selection sel        = Globals.ThisAddIn.Application.ActiveWindow.Selection;
            PowerPoint.Shape     shapeGroup = null;
            if (sel.ShapeRange.Count > 1)
            {
                shapeGroup = sel.ShapeRange.Group();
            }
            else
            {
                shapeGroup = sel.ShapeRange[1];
            }

            shapeGroup.Copy();
            pictureOnNextSlide = nextSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1];
            LegacyShapeUtil.CopyShapePosition(shapeGroup, ref pictureOnNextSlide);
            shapeGroup.Delete();

            pictureOnNextSlide.Copy();
            PowerPoint.Shape slidePicture = currentSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1];
            return(slidePicture);
        }
Exemple #14
0
        //Set position, size and animations of the next slide copy
        private static void PrepareNextSlidePicture(PowerPointSlide currentSlide, PowerPoint.Shape selectedShape, ref PowerPoint.Shape nextSlidePicture)
        {
            nextSlidePicture.LockAspectRatio = Office.MsoTriState.msoTrue;
            if (selectedShape.Width > selectedShape.Height)
            {
                nextSlidePicture.Height = selectedShape.Height;
            }
            else
            {
                nextSlidePicture.Width = selectedShape.Width;
            }

            LegacyShapeUtil.CopyShapePosition(selectedShape, ref nextSlidePicture);

            selectedShape.Visible = Office.MsoTriState.msoFalse;
            nextSlidePicture.Name = "PPTZoomInShape" + DateTime.Now.ToString("yyyyMMddHHmmssffff");

            PowerPoint.Effect effectAppear = currentSlide.TimeLine.MainSequence.AddEffect(nextSlidePicture, PowerPoint.MsoAnimEffect.msoAnimEffectFade, PowerPoint.MsoAnimateByLevel.msoAnimateLevelNone, PowerPoint.MsoAnimTriggerType.msoAnimTriggerOnPageClick);
            effectAppear.Timing.Duration = 0.50f;
        }
Exemple #15
0
        private static PowerPoint.Shape GetStepBackWithoutBackgroundShapeToZoom(PowerPointSlide addedSlide, PowerPointSlide previousSlide)
        {
            Globals.ThisAddIn.Application.ActiveWindow.Selection.Unselect();
            Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(addedSlide.Index);

            var copiedShapes = new List <PowerPoint.Shape>();

            foreach (PowerPoint.Shape sh in previousSlide.Shapes)
            {
                if (!previousSlide.HasExitAnimation(sh) && !ShapeUtil.IsHidden(sh))
                {
                    sh.Copy();
                    PowerPoint.Shape shapeCopy = addedSlide.Shapes.Paste()[1];
                    LegacyShapeUtil.CopyShapeAttributes(sh, ref shapeCopy);
                    copiedShapes.Add(shapeCopy);
                }
            }

            SelectAllShape(copiedShapes);
            PowerPoint.Selection sel        = Globals.ThisAddIn.Application.ActiveWindow.Selection;
            PowerPoint.Shape     shapeGroup = null;
            if (sel.ShapeRange.Count > 1)
            {
                shapeGroup = sel.ShapeRange.Group();
            }
            else
            {
                shapeGroup = sel.ShapeRange[1];
            }

            shapeGroup.Copy();
            PowerPoint.Shape previousSlidePicture = addedSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1];
            LegacyShapeUtil.CopyShapePosition(shapeGroup, ref previousSlidePicture);
            previousSlidePicture.Name = "PPTZoomOutShape" + DateTime.Now.ToString("yyyyMMddHHmmssffff");
            shapeGroup.Delete();

            return(previousSlidePicture);
        }
Exemple #16
0
        public static void AddFrameMotionAnimation(PowerPointSlide animationSlide, PowerPoint.Shape initialShape, PowerPoint.Shape finalShape, float duration)
        {
            float initialX        = (initialShape.Left + (initialShape.Width) / 2);
            float initialY        = (initialShape.Top + (initialShape.Height) / 2);
            float initialRotation = initialShape.Rotation;
            float initialWidth    = initialShape.Width;
            float initialHeight   = initialShape.Height;
            float initialFont     = 0.0f;

            float finalX        = (finalShape.Left + (finalShape.Width) / 2);
            float finalY        = (finalShape.Top + (finalShape.Height) / 2);
            float finalRotation = finalShape.Rotation;
            float finalWidth    = finalShape.Width;
            float finalHeight   = finalShape.Height;
            float finalFont     = 0.0f;

            bool isFlippedHorizontally = initialShape.HorizontalFlip != finalShape.HorizontalFlip;
            bool isFlippedVertically   = initialShape.VerticalFlip != finalShape.VerticalFlip;

            if (isFlippedHorizontally)
            {
                finalWidth = -finalWidth;
            }
            if (isFlippedVertically)
            {
                finalHeight = -finalHeight;
            }

            if (initialShape.HasTextFrame == Office.MsoTriState.msoTrue && (initialShape.TextFrame.HasText == Office.MsoTriState.msoTriStateMixed || initialShape.TextFrame.HasText == Office.MsoTriState.msoTrue) && initialShape.TextFrame.TextRange.Font.Size != finalShape.TextFrame.TextRange.Font.Size)
            {
                finalFont   = finalShape.TextFrame.TextRange.Font.Size;
                initialFont = initialShape.TextFrame.TextRange.Font.Size;
            }

            if (initialShape.IsStraightLine())
            {
                double initialAngle = GetLineAngle(initialShape);
                double finalAngle   = GetLineAngle(finalShape);
                double deltaAngle   = initialAngle - finalAngle;
                finalRotation = (float)(RadiansToDegrees(deltaAngle));

                float initialLength      = (float)Math.Sqrt(initialWidth * initialWidth + initialHeight * initialHeight);
                float finalLength        = (float)Math.Sqrt(finalWidth * finalWidth + finalHeight * finalHeight);
                float initialAngleCosine = initialWidth / initialLength;
                float initialAngleSine   = initialHeight / initialLength;
                finalWidth  = finalLength * initialAngleCosine;
                finalHeight = finalLength * initialAngleSine;

                initialShape = MakePivotCenteredLine(animationSlide, initialShape);
            }

            int numFrames = (int)(duration / 0.04f);

            numFrames = (numFrames > 30) ? 30 : numFrames;

            initialWidth  = SetToPositiveMinIfIsZero(initialWidth);
            initialHeight = SetToPositiveMinIfIsZero(initialHeight);
            finalWidth    = SetToPositiveMinIfIsZero(finalWidth);
            finalHeight   = SetToPositiveMinIfIsZero(finalHeight);

            float incrementWidth    = ((finalWidth / initialWidth) - 1.0f) / numFrames;
            float incrementHeight   = ((finalHeight / initialHeight) - 1.0f) / numFrames;
            float incrementRotation = LegacyShapeUtil.GetMinimumRotation(initialRotation, finalRotation) / numFrames;
            float incrementLeft     = (finalX - initialX) / numFrames;
            float incrementTop      = (finalY - initialY) / numFrames;
            float incrementFont     = (finalFont - initialFont) / numFrames;

            AddFrameAnimationEffects(animationSlide, initialShape, incrementLeft, incrementTop, incrementWidth, incrementHeight, isFlippedHorizontally, isFlippedVertically, incrementRotation, incrementFont, duration, numFrames);
        }