Класс Frame
Класс Frame****описывает прямоугольную область графического объекта документа. Предназначен для получения и изменения свойств графических объектов. Для расположения в позиции текста документа используется InlineFrame, в таблице - AbsoluteFrame (см. Рисунок).

Методы MediaObject::getFrame() и Image::getFrame() возвращают объект типа Frame (тип variant2). Для получения экземпляра нужного класса можно воспользоваться методами boost::variant2::get(), boost::variant2::get_if().
Пример для текстового документа
Range range = document.getRange();
MediaObjects mediaObjects = range.getInlineObjects();
std::shared_ptr<Enumerator<MediaObject>> enumerator = mediaObjects.getEnumerator();
while (enumerator->isValid())
{
MediaObject mediaObject = enumerator->getCurrent();
Frame frame = mediaObject.getFrame();
if (InlineFrame* inlineFrame = boost::variant2::get_if<InlineFrame>(&frame))
{
boost::optional<TextWrapType> textWrapType = inlineFrame->getWrapType();
if (textWrapType.has_value())
{
std::printf("%d", textWrapType.get());
}
}
enumerator->goToNext();
}
Пример для табличного документа
Table table = document.getBlocks().getTable(0).get();
CO::API::Document::Images images = table.getImages();
std::shared_ptr<Enumerator<Image>> enumerator = images.getEnumerator();
while (enumerator->isValid())
{
Image image = enumerator->getCurrent();
Frame frame = image.getFrame();
if (AbsoluteFrame* absoluteFrame = boost::variant2::get_if<AbsoluteFrame>(&frame))
{
boost::optional<Point<Unit>> topLeft = absoluteFrame->getTopLeft();
if (topLeft.has_value())
{
std::printf("%d %d", topLeft.get().x, topLeft.get().y);
}
}
enumerator->goToNext();
}