Exemple #1
0
        /// <summary>
        /// Merges multiple animated slides into a single slide.
        /// TODO: Test this method more thoroughly, in places other than autozoom.
        /// </summary>
        public static void SquashSlides(IEnumerable <PowerPointSlide> slides)
        {
            PowerPointSlide  firstSlide      = null;
            ShapeRange       previousShapes  = null;
            EffectTransition slideTransition = new EffectTransition();

            foreach (PowerPointSlide slide in slides)
            {
                if (firstSlide == null)
                {
                    firstSlide      = slide;
                    slideTransition = GetTransitionFromSlide(slide);

                    firstSlide.Transition.AdvanceOnClick = MsoTriState.msoTrue;
                    firstSlide.Transition.AdvanceOnTime  = MsoTriState.msoFalse;

                    previousShapes = ShapeUtil.GetShapesWhenTypeNotMatches(firstSlide, firstSlide.Shapes.Range(), MsoShapeType.msoPlaceholder);
                    continue;
                }

                Sequence effectSequence   = firstSlide.GetNativeSlide().TimeLine.MainSequence;
                int      effectStartIndex = effectSequence.Count + 1;

                slide.DeleteIndicator();
                ShapeRange newShapeRange = firstSlide.CopyShapesToSlide(slide.Shapes.Range());
                newShapeRange.ZOrder(MsoZOrderCmd.msoSendToBack);

                foreach (Shape shape in newShapeRange)
                {
                    AddAppearAnimation(shape, firstSlide, effectStartIndex);
                }
                foreach (Shape shape in previousShapes)
                {
                    AddDisappearAnimation(shape, firstSlide, effectStartIndex);
                }
                slideTransition.ApplyTransition(effectSequence[effectStartIndex]);

                previousShapes  = newShapeRange;
                slideTransition = GetTransitionFromSlide(slide);
                slide.Delete();
            }
        }
 private void ShowHide(Control componente)
 {
     EffectTransition.Animate(componente, EffectTransition.Effect.Slide, 150, 180);
 }
Exemple #3
0
        /// <summary>
        /// Merges multiple animated slides into a single slide.
        /// TODO: Test this method more thoroughly, in places other than autozoom.
        /// </summary>
        public static void SquashSlides(IEnumerable<PowerPointSlide> slides)
        {
            PowerPointSlide firstSlide = null;
            List<Shape> previousShapes = null;
            EffectTransition slideTransition = new EffectTransition();

            foreach (var slide in slides)
            {
                if (firstSlide == null)
                {
                    firstSlide = slide;
                    slideTransition = GetTransitionFromSlide(slide);

                    firstSlide.Transition.AdvanceOnClick = MsoTriState.msoTrue;
                    firstSlide.Transition.AdvanceOnTime = MsoTriState.msoFalse;

                    //TODO: Check if there will be an exception when there are empty placeholder shapes in firstSlide.
                    previousShapes = firstSlide.Shapes.Cast<Shape>().ToList();
                    continue;
                }

                var effectSequence = firstSlide.GetNativeSlide().TimeLine.MainSequence;
                int effectStartIndex = effectSequence.Count + 1;


                slide.DeleteIndicator();
                var newShapeRange = firstSlide.CopyShapesToSlide(slide.Shapes.Range());
                newShapeRange.ZOrder(MsoZOrderCmd.msoSendToBack);


                var newShapes = newShapeRange.Cast<Shape>().ToList();
                newShapes.ForEach(shape => AddAppearAnimation(shape, firstSlide, effectStartIndex));
                previousShapes.ForEach(shape => AddDisappearAnimation(shape, firstSlide, effectStartIndex));
                slideTransition.ApplyTransition(effectSequence[effectStartIndex]);


                previousShapes = newShapes;
                slideTransition = GetTransitionFromSlide(slide);
                slide.Delete();
            }
        }