public static void AddDrillDownAnimation(PowerPoint.Shape selectedShape, PowerPointSlide currentSlide, out PowerPointDrillDownSlide addedSlide, bool includeAckSlide = true, bool deletePreviouslyAdded = true) { try { if (currentSlide == null || currentSlide.Index == PowerPointPresentation.Current.SlideCount) { System.Windows.Forms.MessageBox.Show("No next slide is found. Please select the correct slide", "Unable to Add Animations"); addedSlide = null; return; } //Pick up the border and shadow style, to be applied to zoomed shape selectedShape.PickUp(); PrepareZoomShape(currentSlide, ref selectedShape); PowerPointSlide nextSlide = GetNextSlide(currentSlide, deletePreviouslyAdded); PowerPoint.Shape nextSlidePicture = null, shapeToZoom = null; currentSlide.HideIndicator(); if (backgroundZoomChecked) { nextSlidePicture = GetNextSlidePictureWithBackground(currentSlide, nextSlide); nextSlidePicture.Apply(); PrepareNextSlidePicture(currentSlide, selectedShape, ref nextSlidePicture); addedSlide = (PowerPointDrillDownSlide)currentSlide.CreateDrillDownSlide(); addedSlide.DeleteAllShapes(); nextSlidePicture.Copy(); shapeToZoom = addedSlide.Shapes.Paste()[1]; addedSlide.DeleteShapeAnimations(shapeToZoom); currentSlide.Copy(); var backgroundShape = addedSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1]; backgroundShape.Apply(); Utils.Graphics.FitShapeToSlide(ref backgroundShape); backgroundShape.ZOrder(Office.MsoZOrderCmd.msoSendBackward); backgroundShape.Name = "PPTZoomInShape" + DateTime.Now.ToString("yyyyMMddHHmmssffff"); addedSlide.PrepareForDrillDown(); addedSlide.AddDrillDownAnimationBackground(backgroundShape, shapeToZoom, nextSlidePicture); } else { PowerPoint.Shape pictureOnNextSlide = null; nextSlidePicture = GetNextSlidePictureWithoutBackground(currentSlide, nextSlide, out pictureOnNextSlide); nextSlidePicture.Apply(); PrepareNextSlidePicture(currentSlide, selectedShape, ref nextSlidePicture); addedSlide = (PowerPointDrillDownSlide)currentSlide.CreateDrillDownSlide(); addedSlide.DeleteAllShapes(); nextSlidePicture.Copy(); shapeToZoom = addedSlide.Shapes.Paste()[1]; addedSlide.DeleteShapeAnimations(shapeToZoom); currentSlide.Copy(); var backgroundShape = addedSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1]; backgroundShape.Apply(); Utils.Graphics.FitShapeToSlide(ref backgroundShape); backgroundShape.ZOrder(Office.MsoZOrderCmd.msoSendBackward); backgroundShape.Name = "PPTZoomInShape" + DateTime.Now.ToString("yyyyMMddHHmmssffff"); addedSlide.PrepareForDrillDown(); addedSlide.AddDrillDownAnimationNoBackground(backgroundShape, shapeToZoom, pictureOnNextSlide); pictureOnNextSlide.Delete(); } currentSlide.ShowIndicator(); Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(addedSlide.Index); Globals.ThisAddIn.Application.CommandBars.ExecuteMso("AnimationPreview"); if (includeAckSlide) PowerPointPresentation.Current.AddAckSlide(); } catch (Exception e) { PowerPointLabsGlobals.LogException(e, "AddDrillDownAnimation"); ErrorDialogWrapper.ShowDialog("Error when adding drill down animation", "An error occurred when adding drill down animation.", e); throw; } }
public static void AddStepBackAnimation(PowerPoint.Shape selectedShape, PowerPointSlide currentSlide, out PowerPointStepBackSlide addedSlide, bool includeAckSlide = true, bool deletePreviouslyAdded = true) { try { if (currentSlide == null || currentSlide.Index == 1) { System.Windows.Forms.MessageBox.Show("No previous slide is found. Please select the correct slide", "Unable to Add Animations"); addedSlide = null; return; } //Pick up the border and shadow style, to be applied to zoomed shape selectedShape.PickUp(); PrepareZoomShape(currentSlide, ref selectedShape); PowerPointSlide previousSlide = GetPreviousSlide(currentSlide, deletePreviouslyAdded); PowerPoint.Shape previousSlidePicture = null, shapeToZoom = null; currentSlide.HideIndicator(); if (backgroundZoomChecked) { previousSlidePicture = GetPreviousSlidePictureWithBackground(currentSlide, previousSlide); previousSlidePicture.Apply(); PreparePreviousSlidePicture(currentSlide, selectedShape, ref previousSlidePicture); addedSlide = (PowerPointStepBackSlide)previousSlide.CreateStepBackSlide(); addedSlide.DeleteAllShapes(); PowerPoint.Shape backgroundShape = null; shapeToZoom = GetStepBackWithBackgroundShapeToZoom(currentSlide, addedSlide, previousSlidePicture, out backgroundShape); shapeToZoom.Apply(); addedSlide.PrepareForStepBack(); addedSlide.AddStepBackAnimationBackground(shapeToZoom, backgroundShape, previousSlidePicture); } else { addedSlide = (PowerPointStepBackSlide)previousSlide.CreateStepBackSlide(); addedSlide.DeleteAllShapes(); shapeToZoom = GetStepBackWithoutBackgroundShapeToZoom(currentSlide, addedSlide, previousSlide); shapeToZoom.Apply(); shapeToZoom.Copy(); previousSlidePicture = currentSlide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPastePNG)[1]; previousSlidePicture.Apply(); PreparePreviousSlidePicture(currentSlide, selectedShape, ref previousSlidePicture); addedSlide.PrepareForStepBack(); addedSlide.AddStepBackAnimationNonBackground(shapeToZoom, previousSlidePicture); } currentSlide.ShowIndicator(); currentSlide.Transition.EntryEffect = PowerPoint.PpEntryEffect.ppEffectFadeSmoothly; currentSlide.Transition.Duration = 0.25f; Globals.ThisAddIn.Application.ActiveWindow.View.GotoSlide(addedSlide.Index); Globals.ThisAddIn.Application.CommandBars.ExecuteMso("AnimationPreview"); if (includeAckSlide) PowerPointPresentation.Current.AddAckSlide(); } catch (Exception e) { PowerPointLabsGlobals.LogException(e, "AddStepBackAnimation"); ErrorDialogWrapper.ShowDialog("Error when adding step back animation", "An error occurred when adding step back animation.", e); throw; } }