Exemplo n.º 1
0
        internal SCSlideLayout GetSlideLayoutBySlide(SCSlide slide)
        {
            SlideLayoutPart inputSlideLayoutPart = slide.SlidePart.SlideLayoutPart;

            return(CollectionItems.SelectMany(sm => sm.SlideLayouts)
                   .First(sl => sl.SlideLayoutPart == inputSlideLayoutPart));
        }
Exemplo n.º 2
0
        internal static ShapeCollection CreateForSlide(SlidePart slidePart, SCSlide slide)
        {
            var phService           = new PlaceholderService(slidePart.SlideLayoutPart);
            var transformFactory    = new LocationParser(phService);
            var geometryFactory     = new GeometryFactory(phService);
            var shapeContextBuilder = new ShapeContext.Builder(slidePart);

            var chartGrFrameHandler  = new ChartGraphicFrameHandler();
            var tableGrFrameHandler  = new TableGraphicFrameHandler(shapeContextBuilder, transformFactory);
            var oleGrFrameHandler    = new OleGraphicFrameHandler(shapeContextBuilder, transformFactory);
            var pShapeHandler        = new AutoShapeCreator(shapeContextBuilder, transformFactory);
            var pictureHandler       = new PictureHandler(shapeContextBuilder, transformFactory, geometryFactory);
            var sdkGroupShapeHandler =
                new PGroupShapeHandler(shapeContextBuilder, transformFactory, geometryFactory, slidePart);

            pShapeHandler.Successor        = sdkGroupShapeHandler;
            sdkGroupShapeHandler.Successor = oleGrFrameHandler;
            oleGrFrameHandler.Successor    = pictureHandler;
            pictureHandler.Successor       = chartGrFrameHandler;
            chartGrFrameHandler.Successor  = tableGrFrameHandler;

            P.ShapeTree shapeTree = slidePart.Slide.CommonSlideData.ShapeTree;
            var         shapes    = new List <IShape>(shapeTree.Count());

            foreach (OpenXmlCompositeElement compositeElement in shapeTree.OfType <OpenXmlCompositeElement>())
            {
                IShape shape = pShapeHandler.Create(compositeElement, slide);
                if (shape != null)
                {
                    shapes.Add(shape);
                }
            }

            return(new ShapeCollection(shapes));
        }
Exemplo n.º 3
0
        public override IShape Create(OpenXmlCompositeElement pShapeTreeChild, SCSlide slide)
        {
            P.Picture pPicture;
            if (pShapeTreeChild is P.Picture treePic)
            {
                pPicture = treePic;
            }
            else
            {
                var framePic = pShapeTreeChild.Descendants <P.Picture>().FirstOrDefault();
                pPicture = framePic;
            }

            if (pPicture != null)
            {
                var pBlipFill    = pPicture.GetFirstChild <P.BlipFill>();
                var blipRelateId = pBlipFill?.Blip?.Embed?.Value;
                if (blipRelateId == null)
                {
                    return(null);
                }

                var spContext = _shapeContextBuilder.Build(pShapeTreeChild);
                var picture   = new SlidePicture(slide, blipRelateId, spContext, pPicture);

                return(picture);
            }

            return(Successor?.Create(pShapeTreeChild, slide));
        }
Exemplo n.º 4
0
        public override IShape Create(OpenXmlCompositeElement pShapeTreeChild, SCSlide slide)
        {
            if (pShapeTreeChild is P.Shape pShape)
            {
                ShapeContext shapeContext   = _shapeContextBuilder.Build(pShapeTreeChild);
                ILocation    innerTransform = _transformFactory.FromComposite(pShape);
                var          autoShape      = new SlideAutoShape(innerTransform, shapeContext, pShape, slide);

                return(autoShape);
            }

            return(Successor?.Create(pShapeTreeChild, slide));
        }
Exemplo n.º 5
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="SlideChart" /> class.
        /// </summary>
        internal SlideChart(P.GraphicFrame pGraphicFrame, SCSlide slide) :
            base(slide, pGraphicFrame)
        {
            _pGraphicFrame    = pGraphicFrame;
            _firstSeries      = new Lazy <OpenXmlElement>(GetFirstSeries);
            _xValues          = new Lazy <LibraryCollection <double> >(GetXValues);
            _seriesCollection =
                new Lazy <SeriesCollection>(() => Collections.SeriesCollection.Create(this, _cXCharts));
            _categories   = new Lazy <CategoryCollection>(() => CategoryCollection.Create(this, _firstSeries.Value, Type));
            _chartType    = new Lazy <ChartType>(GetChartType);
            ChartWorkbook = new ChartWorkbook(this);

            Init(); //TODO: convert to lazy loading
        }
Exemplo n.º 6
0
        private List <SCSlide> GetSlides()
        {
            int slidesCount = this.presentationPart.SlideParts.Count();
            var slides      = new List <SCSlide>(slidesCount);

            for (var slideIndex = 0; slideIndex < slidesCount; slideIndex++)
            {
                SlidePart slidePart   = this.presentationPart.GetSlidePartByIndex(slideIndex);
                int       slideNumber = slideIndex + 1;
                var       newSlide    = new SCSlide(this.parentPresentation, slidePart, slideNumber);
                slides.Add(newSlide);
            }

            return(slides);
        }
        public override IShape Create(OpenXmlCompositeElement pShapeTreeChild, SCSlide slide)
        {
            if (pShapeTreeChild is P.GraphicFrame pGraphicFrame)
            {
                A.GraphicData aGraphicData = pShapeTreeChild.GetFirstChild <A.Graphic>().GetFirstChild <A.GraphicData>();
                if (aGraphicData.Uri.Value.Equals(Uri, StringComparison.Ordinal))
                {
                    SlideChart chart = new(pGraphicFrame, slide);

                    return(chart);
                }
            }

            return(Successor?.Create(pShapeTreeChild, slide));
        }
Exemplo n.º 8
0
        public override IShape Create(OpenXmlCompositeElement pShapeTreeChild, SCSlide slide)
        {
            if (pShapeTreeChild is P.GraphicFrame pGraphicFrame)
            {
                var grData = pShapeTreeChild.GetFirstChild <A.Graphic>().GetFirstChild <A.GraphicData>();
                if (grData.Uri.Value.Equals(Uri, StringComparison.Ordinal))
                {
                    var spContext      = _shapeContextBuilder.Build(pShapeTreeChild);
                    var innerTransform = _transformFactory.FromComposite(pGraphicFrame);
                    var oleObject      = new SlideOLEObject(pGraphicFrame, spContext, slide);

                    return(oleObject);
                }
            }

            return(Successor?.Create(pShapeTreeChild, slide));
        }
Exemplo n.º 9
0
        public override IShape Create(OpenXmlCompositeElement pShapeTreeChild, SCSlide slide)
        {
            if (pShapeTreeChild is P.GroupShape pGroupShape)
            {
                var pShapeHandler      = new AutoShapeCreator(_shapeContextBuilder, _transformFactory);
                var oleGrFrameHandler  = new OleGraphicFrameHandler(_shapeContextBuilder, _transformFactory);
                var pictureHandler     = new PictureHandler(_shapeContextBuilder, _transformFactory, _geometryFactory);
                var pGroupShapeHandler = new PGroupShapeHandler(_shapeContextBuilder, _transformFactory,
                                                                _geometryFactory, _slidePart);
                var chartGrFrameHandler = new ChartGraphicFrameHandler();
                var tableGrFrameHandler = new TableGraphicFrameHandler(_shapeContextBuilder, _transformFactory);

                pShapeHandler.Successor      = pGroupShapeHandler;
                pGroupShapeHandler.Successor = oleGrFrameHandler;

                // OLE objects handler must be before pictures handler, cause OLE container can contain p:pic elements, thereby OLE as a picture
                oleGrFrameHandler.Successor   = pictureHandler;
                pictureHandler.Successor      = chartGrFrameHandler;
                chartGrFrameHandler.Successor = tableGrFrameHandler;

                var groupedShapes = new List <IShape>(pGroupShape.Count());
                foreach (var item in pGroupShape.OfType <OpenXmlCompositeElement>())
                {
                    var groupedShape = pShapeHandler.Create(item, slide);
                    if (groupedShape != null)
                    {
                        groupedShapes.Add(groupedShape);
                    }
                }

                var spContext      = _shapeContextBuilder.Build(pShapeTreeChild);
                var transformGroup = pGroupShape.GroupShapeProperties.TransformGroup;
                var innerTransform = new NonPlaceholderTransform(transformGroup);
                var groupShape     = new SlideGroupShape(innerTransform, spContext, groupedShapes, pGroupShape, slide);

                return(groupShape);
            }

            return(Successor?.Create(pShapeTreeChild, slide));
        }
Exemplo n.º 10
0
 /// <summary>
 ///     Creates shape from child element of the <see cref="P.ShapeTree" /> element.
 /// </summary>
 public abstract IShape Create(OpenXmlCompositeElement pShapeTreeChild, SCSlide slide);