Ejemplo n.º 1
0
        public DW.Anchor Create()
        {
            int width;
            int height;

            zimg.CalculateImageWidthHeight(_pictureElement.File, _pictureElement.Width, _pictureElement.Height, out width, out height);
            long emuWidth  = OXmlTools.PixelToEmus(width);
            long emuHeight = OXmlTools.PixelToEmus(height);

            //DW.Anchor anchor = new DW.Anchor()
            //{
            //    DistanceFromTop = _distanceFromTop,
            //    DistanceFromBottom = _distanceFromBottom,
            //    DistanceFromLeft = _distanceFromLeft,
            //    DistanceFromRight = _distanceFromRight,
            //    RelativeHeight = _relativePosition,
            //    BehindDoc = _behindDoc,
            //    LayoutInCell = _layoutInCell,
            //    AllowOverlap = _allowOverlap,
            //    Locked = _locked,
            //    Hidden = _hidden
            //};

            DW.Anchor anchor = new DW.Anchor();

            OXmlAnchorPictureDrawing pictureDrawing = (OXmlAnchorPictureDrawing)_pictureElement.PictureDrawing;

            if (pictureDrawing.AnchorId != null)
            {
                anchor.AnchorId = pictureDrawing.AnchorId;
            }
            if (pictureDrawing.EditId != null)
            {
                anchor.EditId = pictureDrawing.EditId;
            }

            if (pictureDrawing.DistanceFromTop != null)
            {
                anchor.DistanceFromTop = (uint)pictureDrawing.DistanceFromTop;
            }
            if (pictureDrawing.DistanceFromBottom != null)
            {
                anchor.DistanceFromBottom = (uint)pictureDrawing.DistanceFromBottom;
            }
            if (pictureDrawing.DistanceFromLeft != null)
            {
                anchor.DistanceFromLeft = (uint)pictureDrawing.DistanceFromLeft;
            }
            if (pictureDrawing.DistanceFromRight != null)
            {
                anchor.DistanceFromRight = (uint)pictureDrawing.DistanceFromRight;
            }

            OXmlHorizontalPosition oxmlHorizontalPosition = pictureDrawing.HorizontalPosition;

            DW.HorizontalPosition horizontalPosition = new DW.HorizontalPosition();
            horizontalPosition.RelativeFrom = oxmlHorizontalPosition.RelativeFrom;
            if (oxmlHorizontalPosition.PositionOffset != null)
            {
                horizontalPosition.PositionOffset = new DW.PositionOffset(OXmlTools.PixelToEmus((int)oxmlHorizontalPosition.PositionOffset).ToString());
            }
            if (oxmlHorizontalPosition.HorizontalAlignment != null)
            {
                horizontalPosition.HorizontalAlignment = new DW.HorizontalAlignment(oxmlHorizontalPosition.HorizontalAlignment);
            }
            anchor.HorizontalPosition = horizontalPosition;

            OXmlVerticalPosition oxmlVerticalPosition = pictureDrawing.VerticalPosition;

            DW.VerticalPosition verticalPosition = new DW.VerticalPosition();
            verticalPosition.RelativeFrom = oxmlVerticalPosition.RelativeFrom;
            if (oxmlVerticalPosition.PositionOffset != null)
            {
                verticalPosition.PositionOffset = new DW.PositionOffset(OXmlTools.PixelToEmus((int)oxmlVerticalPosition.PositionOffset).ToString());
            }
            if (oxmlVerticalPosition.VerticalAlignment != null)
            {
                verticalPosition.VerticalAlignment = new DW.VerticalAlignment(oxmlVerticalPosition.VerticalAlignment);
            }
            anchor.VerticalPosition = verticalPosition;

            if (pictureDrawing.EffectExtent != null)
            {
                anchor.EffectExtent = pictureDrawing.EffectExtent.ToEffectExtent();
            }

            // mandatory
            anchor.AllowOverlap = pictureDrawing.AllowOverlap;
            // mandatory
            anchor.BehindDoc = pictureDrawing.BehindDoc;
            // not mandatory
            anchor.Hidden = pictureDrawing.Hidden;
            // mandatory
            anchor.LayoutInCell = pictureDrawing.LayoutInCell;
            // mandatory
            anchor.Locked = pictureDrawing.Locked;
            // mandatory
            anchor.RelativeHeight = (uint)pictureDrawing.RelativeHeight;

            // warning <wp:anchor simplePos> and <wp:simplePos x="0" y="0"/> are mandatory
            if (pictureDrawing.SimplePosition != null)
            {
                anchor.SimplePos = true;
                // Simple Positioning Coordinates, <wp:simplePos x="0" y="0"/>
                anchor.SimplePosition = new DW.SimplePosition {
                    X = pictureDrawing.SimplePosition.X, Y = pictureDrawing.SimplePosition.Y
                };
            }
            else
            {
                anchor.SimplePos      = false;
                anchor.SimplePosition = new DW.SimplePosition {
                    X = 0, Y = 0
                };
            }

            // Inline Drawing Object Extents
            //   Cx : Extent Length ???
            //   Cy : Extent Width ???
            // <wp:extent cx="3576638" cy="3570696"/>
            anchor.Extent = new DW.Extent()
            {
                Cx = emuWidth, Cy = emuHeight
            };


            //if (_horizontalPosition != null)
            //    // Horizontal Positioning
            //    // <wp:positionH relativeFrom="margin">
            //    //   <wp:posOffset>-38099</wp:posOffset>
            //    // </wp:positionH>
            //    anchor.HorizontalPosition = _horizontalPosition;

            //if (_verticalPosition != null)
            //    // Vertical Positioning
            //    // <wp:positionV relativeFrom="paragraph">
            //    //   <wp:posOffset>723900</wp:posOffset>
            //    // </wp:positionV>
            //    anchor.VerticalPosition = _verticalPosition;


            // Object Extents Including Effects
            //   BottomEdge : Additional Extent on Bottom Edge (b)
            //   LeftEdge   : Additional Extent on Left Edge (l)
            //   RightEdge  : Additional Extent on Right Edge (r)
            //   TopEdge    : Additional Extent on Top Edge (t)
            // <wp:effectExtent b="0" l="0" r="0" t="0"/>
            //if (_effectExtent == null)
            //    _effectExtent = new DW.EffectExtent();
            // <wp:effectExtent> is not mandatory
            //if (_effectExtent != null)
            //    anchor.EffectExtent = _effectExtent;

            //if (_wrapElement == null)
            //    SetWrapNone();
            //anchor.AppendChild(_wrapElement);
            anchor.AppendChild(CreateWrap(pictureDrawing.Wrap));

            // <wp:docPr> Non-Visual Properties, possible child : HyperlinkOnClick <a:hlinkClick> HyperlinkOnHover <a:hlinkHover> NonVisualDrawingPropertiesExtensionList <a:extLst>
            // <wp:docPr id="1" name="Picture1" title="" descr=""/>
            // Title = _title
            anchor.AppendChild(new DW.DocProperties()
            {
                Id = _id, Name = _name, Description = _pictureElement.Description
            });

            Graphic graphic = new Graphic(_embeddedReference, emuWidth, emuHeight);

            graphic.Rotation         = _pictureElement.Rotation;
            graphic.HorizontalFlip   = _pictureElement.HorizontalFlip;
            graphic.VerticalFlip     = _pictureElement.VerticalFlip;
            graphic.CompressionState = _pictureElement.CompressionState;
            graphic.PresetShape      = _pictureElement.PresetShape;
            anchor.AppendChild(graphic.Create());

            //if (_relativeHeight != null)
            //    // <wp14:sizeRelV> RelativeHeight (Office2010 or above),
            //    anchor.AppendChild(_relativeHeight);
            //if (_relativeWidth != null)
            //    // <wp14:sizeRelH> RelativeWidth (Office2010 or above), possible child : PercentageWidth <wp14:pctWidth>
            //    anchor.AppendChild(_relativeWidth);

            return(anchor);
        }
Ejemplo n.º 2
0
        //public OXmlAnchorWrap Wrap { get { return _wrap; } set { _wrap = value; } }
        //public DW.HorizontalRelativePositionValues HorizontalRelativeFrom { get { return _horizontalRelativeFrom; } set { _horizontalRelativeFrom = value; } }
        //public int? HorizontalPositionOffset { get { return _horizontalPositionOffset; } set { _horizontalPositionOffset = value; } }
        //public string HorizontalAlignment { get { return _horizontalAlignment; } set { _horizontalAlignment = value; } }
        //public DW.VerticalRelativePositionValues VerticalRelativeFrom { get { return _verticalRelativeFrom; } set { _verticalRelativeFrom = value; } }
        //public int? VerticalPositionOffset { get { return _verticalPositionOffset; } set { _verticalPositionOffset = value; } }
        //public string VerticalAlignment { get { return _verticalAlignment; } set { _verticalAlignment = value; } }

        public OXmlAnchorPictureDrawing()
        {
            DrawingMode        = OXmlPictureDrawingMode.Anchor;
            HorizontalPosition = new OXmlHorizontalPosition();
            VerticalPosition   = new OXmlVerticalPosition();
        }