コード例 #1
0
        /// <summary>
        /// get max slide id
        /// </summary>
        /// <param name="slideIdList"></param>
        /// <returns></returns>
        private static uint GetMaxSlideId(SlideIdList slideIdList)
        {
            uint max = 256;

            if (slideIdList != null)
            {
                foreach (SlideId child in slideIdList.Elements <SlideId>())
                {
                    uint id = child.Id;
                    if (id > max)
                    {
                        max = id;
                    }
                }
            }
            return(max);
        }
コード例 #2
0
        private uint GetMaxSlideId(SlideIdList slideIdList)
        {
            // Slide identifiers have a minimum value of greater than or
            // equal to 256 and a maximum value of less than 2147483648.
            uint max = 256;

            if (slideIdList != null)
            {
                // Get the maximum id value from the current set of children.
                foreach (SlideId child in slideIdList.Elements <SlideId>())
                {
                    uint id = child.Id;
                    if (id > max)
                    {
                        max = id;
                    }
                }
            }

            return(max);
        }
コード例 #3
0
        private uint GetMaxSlideId(SlideIdList slideIdList)
        {
            // Slide identifiers have a minimum value of greater than or
            // equal to 256 and a maximum value of less than 2147483648.
            uint max = 256;

            if (slideIdList == null)
            {
                return(max);
            }

            foreach (var child in slideIdList.Elements <SlideId>())
            {
                uint id = child.Id;

                if (id > max)
                {
                    max = id;
                }
            }

            return(max);
        }
コード例 #4
0
        public ISlide InsertSlide(ISlideLayout slideLayout, int index)
        {
            if (!(slideLayout is IOpenXmlSlideLayout internalSlideLayout))
            {
                throw new ArgumentException();
            }

            Slide slide = new Slide()
            {
                // CommonSlideData = slideLayoutRef.SlideLayoutPart.SlideLayout.CommonSlideData.CloneNode(true) as CommonSlideData
                CommonSlideData = new CommonSlideData()
                {
                    ShapeTree = new ShapeTree()
                    {
                        NonVisualGroupShapeProperties = internalSlideLayout.SlideLayoutPart.SlideLayout.CommonSlideData.ShapeTree.NonVisualGroupShapeProperties.CloneNode(true) as NonVisualGroupShapeProperties,
                        GroupShapeProperties          = internalSlideLayout.SlideLayoutPart.SlideLayout.CommonSlideData.ShapeTree.GroupShapeProperties.CloneNode(true) as GroupShapeProperties
                    }
                }
            };

            slide.CommonSlideData.ShapeTree.Append(
                internalSlideLayout.SlideLayoutPart.SlideLayout.CommonSlideData.ShapeTree
                .Select(element => OpenXmlVisualFactory.TryCreateVisual(internalSlideLayout, element, out IOpenXmlVisual visual) ? visual : null).Where(visual => visual != null)
                .Where(visual => visual?.IsPlaceholder ?? false)
                .Select(visual => visual.CloneForSlide())
                );

            SlidePart slidePart = this.presentationPart.AddNewPart <SlidePart>();

            slide.Save(slidePart);

            slidePart.CreateRelationshipToPartDefaultId(internalSlideLayout.SlideLayoutPart);

            if (this.presentationPart.Presentation.SlideIdList == null)
            {
                this.presentationPart.Presentation.SlideIdList = new SlideIdList();
            }

            SlideIdList slideIdList = this.presentationPart.Presentation.SlideIdList;
            SlideId     refSlideId  = slideIdList.Elements <SlideId>().Take(index).LastOrDefault();

            uint    id = refSlideId?.Id ?? 256;
            SlideId slideId;

            if (refSlideId != null)
            {
                slideId = slideIdList.InsertAfter(
                    new SlideId()
                {
                    Id = ++id, RelationshipId = presentationPart.GetIdOfPart(slidePart)
                },
                    refSlideId
                    );
            }
            else
            {
                slideId = slideIdList.PrependChild(
                    new SlideId()
                {
                    Id = ++id, RelationshipId = presentationPart.GetIdOfPart(slidePart)
                }
                    );
            }

            for (slideId = slideId.NextSibling <SlideId>(); slideId != null; slideId = slideId.NextSibling <SlideId>())
            {
                slideId.Id = ++id;
            }

            return(new OpenXmlSlide(this, slidePart));
        }