public static void AlignBottom(ShapeRange toAlign, float slideHeight) { var selectedShapes = new List<PPShape>(); switch (AlignReference) { case AlignReferenceObject.Slide: selectedShapes = ConvertShapeRangeToPPShapeList(toAlign); foreach (var s in selectedShapes) { s.IncrementTop(slideHeight - s.VisualTop - s.AbsoluteHeight); } break; case AlignReferenceObject.SelectedShape: if (toAlign.Count < 2) { throw new Exception(ErrorMessageFewerThanTwoSelection); } selectedShapes = ConvertShapeRangeToPPShapeList(toAlign); var refShape = selectedShapes[0]; var lowestRefPoint = refShape.VisualTop + refShape.AbsoluteHeight; for (var i = 1; i < selectedShapes.Count; i++) { var s = selectedShapes[i]; var lowestPoint = s.VisualTop + s.AbsoluteHeight; s.IncrementTop(lowestRefPoint - lowestPoint); } break; case AlignReferenceObject.PowerpointDefaults: if (toAlign.Count == 1) { toAlign.Align(MsoAlignCmd.msoAlignBottoms, MsoTriState.msoTrue); } else { toAlign.Align(MsoAlignCmd.msoAlignBottoms, MsoTriState.msoFalse); } break; default: throw new ArgumentOutOfRangeException(); } }
public static void AlignCenter(ShapeRange toAlign, float slideHeight, float slideWidth) { var selectedShapes = new List<PPShape>(); switch (AlignReference) { case AlignReferenceObject.Slide: selectedShapes = ConvertShapeRangeToPPShapeList(toAlign); foreach (var s in selectedShapes) { s.IncrementTop(slideHeight / 2 - s.VisualTop - s.AbsoluteHeight / 2); s.IncrementLeft(slideWidth / 2 - s.VisualLeft - s.AbsoluteWidth / 2); } break; case AlignReferenceObject.SelectedShape: if (toAlign.Count < 2) { throw new Exception(ErrorMessageFewerThanTwoSelection); } selectedShapes = ConvertShapeRangeToPPShapeList(toAlign); var refShape = selectedShapes[0]; for (var i = 1; i < selectedShapes.Count; i++) { var s = selectedShapes[i]; s.IncrementTop(refShape.VisualCenter.Y - s.VisualCenter.Y); s.IncrementLeft(refShape.VisualCenter.X - s.VisualCenter.X); } break; case AlignReferenceObject.PowerpointDefaults: if (toAlign.Count == 1) { toAlign.Align(MsoAlignCmd.msoAlignMiddles, MsoTriState.msoTrue); toAlign.Align(MsoAlignCmd.msoAlignCenters, MsoTriState.msoTrue); } else { toAlign.Align(MsoAlignCmd.msoAlignMiddles, MsoTriState.msoFalse); toAlign.Align(MsoAlignCmd.msoAlignCenters, MsoTriState.msoFalse); } break; default: throw new ArgumentOutOfRangeException(); } }
public static void AlignLeft(ShapeRange toAlign) { var selectedShapes = new List<PPShape>(); switch (AlignReference) { case AlignReferenceObject.Slide: selectedShapes = ConvertShapeRangeToPPShapeList(toAlign); foreach (var s in selectedShapes) { s.IncrementLeft(-s.VisualLeft); } break; case AlignReferenceObject.SelectedShape: if (toAlign.Count < 2) { throw new Exception(ErrorMessageFewerThanTwoSelection); } selectedShapes = ConvertShapeRangeToPPShapeList(toAlign); var refShape = selectedShapes[0]; for (var i = 1; i < selectedShapes.Count; i++) { var s = selectedShapes[i]; s.IncrementLeft(refShape.VisualLeft - s.VisualLeft); } break; case AlignReferenceObject.PowerpointDefaults: if (toAlign.Count == 1) { toAlign.Align(MsoAlignCmd.msoAlignLefts, MsoTriState.msoTrue); } else { toAlign.Align(MsoAlignCmd.msoAlignLefts, MsoTriState.msoFalse); } break; default: throw new ArgumentOutOfRangeException(); } }