Example #1
0
        public override ShapeEx Create(OpenXmlElement sdkElement)
        {
            Check.NotNull(sdkElement, nameof(sdkElement));

            P.Picture sdkPicture;
            if (sdkElement is P.Picture treePic)
            {
                sdkPicture = treePic;
            }
            else
            {
                var framePic = sdkElement.Descendants <P.Picture>().FirstOrDefault();
                sdkPicture = framePic;
            }
            if (sdkPicture != null)
            {
                var pBlipFill    = sdkPicture.GetFirstChild <P.BlipFill>();
                var blipRelateId = pBlipFill?.Blip?.Embed?.Value;
                if (blipRelateId == null)
                {
                    return(null);
                }
                var pictureEx      = new PictureEx(_sdkSldPart, blipRelateId);
                var spContext      = _shapeContextBuilder.Build(sdkElement);
                var innerTransform = _transformFactory.FromComposite(sdkPicture);
                var geometry       = _geometryFactory.ForPicture(sdkPicture);
                var shape          = _shapeBuilder.WithPicture(innerTransform, spContext, pictureEx, geometry);

                return(shape);
            }

            if (Successor != null)
            {
                return(Successor.Create(sdkElement));
            }

            return(null);
        }