You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
5.8 KiB

/*
Copyright 2020 Siemens Digital Industries Software
==================================================
Copyright 2015.
Siemens Product Lifecycle Management Software Inc.
All Rights Reserved.
==================================================
Copyright 2020 Siemens Digital Industries Software
*/
/**
@file
This file contains the definition of user exits for Visualization.
*/
#ifndef VIS_USER_EXIT_H
#define VIS_USER_EXIT_H
#include <unidefs.h>
#include <vis/libvis_exports.h>
/**
@defgroup VISUALIZATION Visualization
@ingroup TC
This module implements the ITK methods exposed by the Visualization module.
@{
*/
/**
Provides new user exit to generate the MetadataStamp filename for an object.
*/
#define USER_VIS_get_metadata_filename_msg "BMF_USER_VIS_get_metadata_filename"
/**
Provides new user exit to generate the MetaDataStamp filename for an object with context.
*/
#define USER_VIS_get_metadata_filename_context_msg "BMF_USER_VIS_get_metadata_filename_context"
/**
Provides new user exit to generate the base document for an object to be visualized.
*/
#define USER_VIS_get_basedocument_msg "BMF_USER_VIS_get_basedocument"
/**
Generic structure for holding key/value pairs.
*/
typedef struct VIS_additional_keyvalue_s
{
char* key; /**< Name of the key. */
char* value; /**< Its value. */
} VIS_additional_keyvalue_t,*VIS_additional_keyvalue_p_t;
/**
Teamcenter object and its related information needed in order for the objects to be visualized.
<br/>For example, to visualize Dataset, context information like its Item, ItemRevision may possibly be needed.
*/
typedef struct VIS_object_input_s
{
tag_t object; /**< The object on which base document is retrieved. */
int n_context_tags; /**< The number of context objects. */
tag_t* context_tags; /**< Its list of context objects. It can be #NULLTAG(s).*/
int n_key_value; /**< The number of additional key/value pairs. */
VIS_additional_keyvalue_p_t additional_info; /**< Array of length n_key_value that contains the additional key/value pairs. */
} VIS_object_input_t, *VIS_object_input_p_t;
/**
The base document of the Teamcenter object will be loaded by Teamcenter Visualization.
<br/>For example, if an Item is visualized, it is resolved to either BomView Revision, Dataset or VisStructureContext.
*/
typedef struct VIS_basedoc_output_s
{
tag_t base_doc; /**< The base document object. */
tag_t base_doc_item; /**< The Item of the base document (if any). */
tag_t base_doc_itemrev; /**< The Item Revision of the base document (if any).*/
int n_key_value; /**< The number of additional key/value pairs. */
VIS_additional_keyvalue_p_t additional_info; /**< Array of length n_key_value that contains the additional key/value pairs. */
} VIS_basedoc_output_t, *VIS_basedoc_output_p_t;
#ifdef __cplusplus
extern "C"{
#endif
/**
Generates Metadata Stamp (MDS) file in the transient volume for the given object and returns the absolute path of the
MDS file.
@returns
<ul>
<li>#ITK_ok on success
<li>#TYPE_invalid_type_name if the object type is invalid
</ul>
*/
extern VIS_API int USER_VIS_get_metadata_filename (
tag_t object, /**< (I) Tag of object. */
char** mds_file_path /**< (OF) Absolute path of the MDS file in the transient volume. */
);
/**
Generates Metadata Stamp (MDS) file in the transient volume for the given object of type or sub-type of POM_object and its Context object.
@returns
<ul>
<li>#ITK_ok on success.
<li>#CXPOM_invalid_tag if @p object is #NULLTAG or invalid.
<li>#POM_invalid_tag if @p object is not a type or subtype of POM_object.
<li>Possibly other errors.
</ul>
*/
extern VIS_API int USER_VIS_get_metadata_filename_context (
tag_t object, /**< (I) The object. */
tag_t context, /**< (I) Its Context object. It can be #NULLTAG. */
char** mds_file_path /**< (OF) Absolute path of the MDS file in the transient volume. */
);
/**
Resolves the base document of a given Teamcenter object, of runtime or persistent type, to be visualized in
Teamcenter Visualization.
@returns
<ul>
<li>#ITK_ok on success.
<li>#CXPOM_invalid_tag if the object in @p vis_obj_struct is #NULLTAG or invalid.
<li>Possibly other errors.
</ul>
@code
VIS_object_input_t vis_obj;
VIS_basedoc_output_t* basedocInfo;
int ifail = USER_VIS_get_base_document ( &vis_obj, &basedocInfo );
...
if ( ITK_ok == ifail && basedocInfo->additional_info != NULL )
{
for ( int x = 0; x < basedocInfo->n_key_value; x++ )
{
MEM_free( ((basedocInfo->additional_info)[x]).key );
MEM_free( ((basedocInfo->additional_info)[x]).value );
}
MEM_free ( basedocInfo->additional_info );
basedocInfo->additional_info = NULL;
}
MEM_free ( basedocInfo );
basedocInfo = NULL;
@endcode
*/
extern VIS_API int USER_VIS_get_base_document (
const VIS_object_input_p_t vis_obj_struct, /**< (I) The visualization structure.*/
VIS_basedoc_output_p_t* base_doc_struct /**< (OF) Its Base document structure. */
);
/** @} */
#ifdef __cplusplus
}
#endif
#include <vis/libvis_undef.h>
#endif