Публичный API и обратные несовместимые изменения в Aspose.Slides для .NET 14.5.0

Публичный API и обратные несовместимые изменения

Добавлены интерфейсы, классы, свойства и методы

Добавлен интерфейс Aspose.Slides.IPresentationInfo и класс PresentationInfo

Представляет информацию о презентации.

  • Булево свойство IsEncrypted возвращает True, если презентация зашифрована, иначе возвращает False.
  • Свойство LoadFormat получает тип презентации.

Добавлено свойство Aspose.Slides.IShape.IsGrouped

Свойство Aspose.Slides.IShape.IsGrouped определяет, находится ли объект в группе.

Добавлено свойство Aspose.Slides.IShape.ParentGroup

Свойство Aspose.Slides.IShape.ParentGroup возвращает объект родительской GroupShape, если объект находится в группе. В противном случае возвращает null.

Добавлен метод Aspose.Slides.IShapeCollection.AddGroupShape()

Метод Aspose.Slides.IShapeCollection.AddGroupShape() создаёт новый GroupShape и добавляет его в конец коллекции.
Размер и позиция кадра GroupShape будут подогнаны под содержимое при добавлении новой фигуры.

Добавлен метод Aspose.Slides.IShapeCollection.Clear()

Метод Aspose.Slides.IShapeCollection.Clear() удаляет все фигуры из коллекции.

Добавлен метод Aspose.Slides.IShapeCollection.InsertGroupShape(int)

Метод Aspose.Slides.IShapeCollection.InsertGroupShape(int) создаёт новый GroupShape и вставляет его в коллекцию в указанную позицию индекса.
Размер и позиция кадра GroupShape будут подогнаны под содержимое при добавлении новой фигуры.

Добавлены методы IPresentationFactory.GetPresentationInfo(string file) и IPresentationFactory.GetPresentationInfo(Stream stream)

Эти методы позволяют получить информацию о файле презентации или потоке без полной загрузки презентации.

Добавлено свойство IPresentationFactory PresentationFactory.Instance

Это свойство позволяет разработчикам использовать функциональность фабрики без её создания.

Ограничения

Ограничения для IShape.Frame

Для использования неопределённых значений в IShape.Frame были добавлены ограничения. Код, пытающийся присвоить неопределённый кадр свойству IShape.Frame, в большинстве случаев не имеет смысла (особенно когда родительский GroupShape вложен в другие {{GroupShape}}). Пример:


 IShape shape = ...;

shape.Frame = new ShapeFrame(float.NaN, float.NaN, float.NaN, float.NaN, NullableBool.NotDefined, NullableBool.NotDefined, float.NaN);


или


 slide.Shapes.AddAutoShape(ShapeType.RoundCornerRectangle, float.NaN, float.NaN, float.NaN, float.NaN);

Такой код может приводить к неоднозначным ситуациям. Поэтому добавлены ограничения на использование неопределённых значений в IShape.Frame. Значения x, y, width, height, flipH, flipV и rotationAngle должны быть определены (и не задаваться как float.NaN или NullableBool.NotDefined). Приведённый выше пример теперь бросает исключение ArgumentException.
Это относится к следующим сценариям использования:


 IShape shape = ...;

shape.Frame = ...; // Не может быть неопределённым

IShapeCollection shapes = ...;

// параметры x, y, width, height не могут быть float.NaN:

{

    shapes.AddAudioFrameCD(...);

    shapes.AddAudioFrameEmbedded(...);

    shapes.AddAudioFrameLinked(...);

    shapes.AddAutoShape(...);

    shapes.AddChart(...);

    shapes.AddConnector(...);

    shapes.AddOleObjectFrame(...);

    shapes.AddPictureFrame(...);

    shapes.AddSmartArt(...);

    shapes.AddTable(...);

    shapes.AddVideoFrame(...);

    shapes.InsertAudioFrameEmbedded(...);

    shapes.InsertAudioFrameLinked(...);

    shapes.InsertAutoShape(...);

    shapes.InsertChart(...);

    shapes.InsertConnector(...);

    shapes.InsertOleObjectFrame(...);

    shapes.InsertPictureFrame(...);

    shapes.InsertTable(...);

    shapes.InsertVideoFrame(...);

}


Однако свойства кадра IShape.RawFrame могут быть неопределёнными. Это имеет смысл, когда фигура привязана к заполняющему элементу. Тогда неопределённые значения кадра берутся у родительского заполняющего элемента. Если родительского заполняющего элемента нет, фигура использует значения по умолчанию при вычислении эффективного кадра на основе IShape.RawFrame. Значения по умолчанию — 0 и NullableBool.False для x, y, width, height, flipH, flipV и rotationAngle. Пример:


 IShape shape = ...; // фигура привязана к заполняющему элементу

shape.RawFrame = new ShapeFrame(float.NaN, float.NaN, 100, float.NaN, NullableBool.NotDefined, NullableBool.NotDefined, 0);

// теперь фигура наследует x, y, height, flipH, flipV из заполняющего элемента и переопределяет width=100 и rotationAngle=0.

Изменённые свойства

Изменено имя и тип свойства Parent в Aspose.Slides.IShapeCollection

  • Тип свойства Aspose.Slides.IShapeCollection.Parent изменён с ISlideComponent на новый интерфейс IGroupShape. Интерфейс IGroupShape является наследником ISlideComponent, поэтому существующий код адаптаций не требует.
  • Имя свойства Aspose.Slides.IShapeCollection.Parent изменено с Parent на ParentGroup.

Изменён тип свойств Aspose.Slides.IShapeFrame.FlipH и .FlipV

  • Тип свойства Aspose.Slides.IShapeFrame.FlipH изменён с bool на NullableBool.
  • Свойство IShape.Frame возвращает эффективный экземпляр IShapeFrame (у всех его свойств определённые эффективные значения).
  • Свойство IShape.RawFrame возвращает экземпляр IShapeFrame, у которого каждое свойство может иметь неопределённое значение (особенно FlipH или FlipV могут иметь значение NullableBool.NotDefined).