#ifndef PRO_DATUM_TARGET_H
#define PRO_DATUM_TARGET_H



#include <ProANSI.h>
#include <ProObjects.h>
#include <ProMdl.h>
#include <ProSelection.h>

PRO_BEGIN_C_DECLS

typedef ProSelection ProDatumTargetAttach[2];

typedef enum
{
  PRO_DATUM_TARGET_NONE,
  PRO_DATUM_TARGET_POINT,
  PRO_DATUM_TARGET_CIRCLE,
  PRO_DATUM_TARGET_RECTANGLE
}ProDatumTargetType;

extern ProError ProMdlDatumTargetCreate (ProMdl                 p_owner_mdl,
                                         ProDatumTargetType     type,
                                         ProAnnotationPlane    *annot_plane,
                                         ProDatumTargetAttach   attach_sels,
                                         Pro3dPnt               text_pnt,
                                         ProDtlsyminst         *p_datum_target);
/*
    Purpose: Creates new datum target with specified attachment and value 
             strings 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        p_owner_mdl - Owner model of the datum target. Cannot be NULL.
        type - type of datum target
        annot_plane - The annotation plane. For drawing, annotation plane 
                      should be NULL.
        attach_sels - For single reference pass non-null selection for index 0 
                      and NULL for index 1. Pass pair of non-null selections to 
                      get intersection of both.
        text_pnt - text point.

    Output Arguments:
        p_datum_target - newly created datum target.

    Return Values:
        PRO_TK_NO_ERROR - The function completed successfully.
        PRO_TK_BAD_CONTEXT - Specified selection reference is invalid.
        PRO_TK_BAD_INPUTS - The input argument is invalid.
        PRO_TK_GENERAL_ERROR - datum target could not be created.

*/

extern ProError ProDtlsyminstIsDatumTarget (ProDtlsyminst *p_datum_target, ProBoolean *is_datum_target);
/*
    Purpose: Checks if specified symbol instance is a datum target. 

    Licensing Requirement:
        UNRECOGNIZED

    Input Arguments:
        p_datum_target - The handle to datum target.

    Output Arguments:
        is_datum_target - PRO_B_TRUE if it is a datum targetk, PRO_B_FALSE 
                          otherwise.

    Return Values:
        PRO_TK_NO_ERROR - The function completed successfully.
        PRO_TK_BAD_INPUTS - The input argument is invalid.
        PRO_TK_GENERAL_ERROR - datum target could not be created.

*/

PRO_END_C_DECLS

#endif /* PRO_DATUM_TARGET_H */