Files
SaraP 9b2d995ef5 Extern :
- C3d aggiornamento librerie ( 118029).
2025-04-02 08:30:05 +02:00

186 lines
10 KiB
C++

////////////////////////////////////////////////////////////////////////////////
/**
\file
\brief \ru Интерфейс запроса масштаба. Интерфейс запроса сшивки.
\en Interface of scale request. Interface of stitching request. \~
*/
////////////////////////////////////////////////////////////////////////////////
#ifndef __CONV_REQUESTOR_H
#define __CONV_REQUESTOR_H
#include <reference_item.h>
#include <math_define.h>
#include <tool_cstring.h>
//------------------------------------------------------------------------------
/**
\brief \ru Интерфейс выбора конфигурации.
\en Interface of configuration selection. \~
\details \ru Вызывается при импорте однократно, если импортируемоя модель содержит более одной конфигурации.
\en Called on import once if the model contains contains more than one configurations. \~
*/
// ---
class CONV_CLASS IConfigurationSelector : public MbRefItem
{
public:
// \ru Конструктор по умолчанию. \en Default constructor.
IConfigurationSelector() = default;
// \ru Деструктор. \en Destructor.
virtual ~IConfigurationSelector() = default;
// \ru Добавить конфигурацию для выбора пользователем. \en Add configuration for selection by user.
virtual void AddConfiguration ( const c3d::string_t& configurationName ) = 0;
// \ru Добавить конфигурацию для выбора пользователем, не содержащую модель. \en Add configuration without model for selection by user.
virtual void AddEmptyConfiguration( const c3d::string_t & configurationName ) { AddConfiguration( configurationName ); };
// \ru Указать индекс активной конфигурации. \en Specify the index of active configuration.
virtual void SetActiveConfiguration ( const size_t index ) = 0;
// \ru Получить индекс конфигурации выбранной пользователем. \en Get index of configuration chosen by user.
virtual size_t GetConfiguration () const = 0;
// \ru Индекс конфигурации для прекращения чтения по запросу пользователя. \en Index which should be returned if user canceled import.
static const size_t configurationIdToCancel = SYS_MAX_T;
};
//------------------------------------------------------------------------------
/**
\brief \ru Интерфейс для сохранения списка имен атрибутов модели.
\en Interface for collecting model attribute names. \~
\details \ru Вызывается во время импорта предварительных данных модели
для задания списка имен атрибутов модели.
\en Called during import of preliminary model data to specify
a list of model attribute names . \~
\note \ru ЭКСПЕРИМЕНТАЛЬНАЯ.
\en EXPEREIMENTAL. \~
*/
// ---
class CONV_CLASS IAttributeNamesCollector : public MbRefItem
{
public:
virtual void AddAttributeName( const c3d::string_t& configurationName ) = 0;
};
//------------------------------------------------------------------------------
///
/**
\brief \ru Интерфейс запроса масштаба.
\en Interface of scale request. \~
\details \ru Рекомендуется использовать методы интерфейса IConvertorProperty3D.
\en Using methods of the IConvertorProperty3D interface recommended. \~
\note \ru Рекомендуется использовать методы интерфейса IConvertorProperty3D.
\en Using methods of the IConvertorProperty3D interface recommended. \~
*/
// ---
class CONV_CLASS IScaleRequestor : public MbRefItem
{
public:
virtual double ScaleRequest() = 0;
};
//------------------------------------------------------------------------------
/**
\brief \ru Интерфейс запроса сшивки.
\en Interface of stitching request \~
\details \ru Рекомендуется использовать методы интерфейса IConvertorProperty3D.
\en Using methods of the IConvertorProperty3D interface recommended. \~
\note \ru Рекомендуется использовать методы интерфейса IConvertorProperty3D.
\en Using methods of the IConvertorProperty3D interface recommended. \~
*/
// ---
class CONV_CLASS IStitchRequestor : public MbRefItem
{
public:
virtual bool StitchRequest() = 0;
};
//------------------------------------------------------------------------------
/**
\brief \ru Интерфейс запроса отладочного вывода.
\en Debug output request interface \~
*/
// ---
class IConverterEventLogger : public MbRefItem
{
public:
virtual bool WriteToLog( const char * ) = 0;
};
//------------------------------------------------------------------------------
/** \brief \ru Интерфейс передачи метаданных.
\en Metadata transfer. \~
\details \ru Метаданные используются в тех случаях, когда исходные данные от
конвертеров плохо вписываются в геометрическую и атрибутивную модель. Пример метаданных -
альтернативные представления дерева модели.
\en Metadata are used in cases when geometric or attribute model doesn't
match structure of information from converters. Alternate tree sutrucure is a sample of
metadata. \~
*/
// ---
class CONV_CLASS IConverterMetadataReceiver : public MbRefItem
{
public:
/** \brief \ru Инициализировать передачу метаданных для элемента.
\en Initialize metadata transfer for item. \~
\details \ru Вызывается перед началом передачи метаданных, относящихся к элементу негеометрических данных, с целью подготовки приемника.
\en Should be called before metadata related to non-geometric element to prepare the reciever. \~
\param[in] category - \ru Категория, к которой относится элемент.
\en Category element belongs to.\~
\param[in] nameInCategory - \ru Название элемента внутри категории.
\en Element's name in category.\~
\param[in] contentType - \ru Представление передаваемых метаданных.
\en Representation of metadata.\~
\return \ru Признак, возможна ли передача метаданных.
\en Wether the metadata transfer is possible. \~
\note \ru Ожидается, что вызывается однократно для каждой пары категория - название.
\en Expected it is called once for each category - name pair. \~
*/
virtual bool InitMetadataForItem(const c3d::string_t& category, const c3d::string_t& nameInCategory, const c3d::string_t& contentType) = 0;
/** \brief \ru Завершить передачу метаданных для элемента.
\en Finalize metadata transfer for item. \~
\details \ru Вызывается после передачи метаданных, относящихся к элементу негеометрических данных, с целью освободить ресурсы.
\en Should be called after metadata related to non-geometric element to free related resources. \~
\param[in] category - \ru Категория, к которой относится элемент.
\en Category element belongs to.\~
\param[in] nameInCategory - \ru Название элемента внутри категории.
\en Element's name in category.
\note \ru Ожидается, что вызывается не более одного раза для каждой пары категория - название и только в случае, если передача была инициализирована успешно.
\en Expected it is called once for each category - name pair in case transfer is possible or not called otherwise. \~
*/
virtual void CloseMetadataForItem(const c3d::string_t& category, const c3d::string_t& nameInCategory) = 0;
/** \brief \ru Передать блок метаданных для элемента.
\en Transfer metadata block for item. \~
\param[in] category - \ru Категория, к которой относится элемент.
\en Category element belongs to.\~
\param[in] nameInCategory - \ru Название элемента внутри категории.
\en Element's name in category.\~
\param[in] metadataBuffer - \ru Адрес бинарного буфера, содержащего данные блока.
\en Binary buffer containing block data.\~
\param[in] bufferCapacity - \ru Длина бинарного буфера, содержащего данные блока.
\en Lenght of binary buffer containing block data.\~
\note \ru Возможен многократный вызов для каждой пары категория - название.
\en Many calls for each category - name are possible. \~
*/
virtual void TransferMetadataForItem(const c3d::string_t& category, const c3d::string_t& nameInCategory, const char* metadataBuffer, unsigned long int bufferCapacity) = 0;
};
#endif // __CONV_REQUESTOR_H