cotton_double/Include/ClassicMIL/MILDyn/milmetrol.h

1865 lines
98 KiB
C++

/***************************************************************************/
/*
Filename: MilMetrol.h
Owner : Matrox Imaging
Revision: 10.60.0776
Content : This file contains the defines and the prototypes for the
MIL metrology finder. (Mmet...)
Copyright © Matrox Electronic Systems Ltd., 1992-2023.
All Rights Reserved
*/
/***************************************************************************/
#ifndef __MILMETROLFINDER_H__
#define __MILMETROLFINDER_H__
#if (!M_MIL_LITE) // MIL FULL ONLY
/* C++ directive if needed */
#ifdef __cplusplus
extern "C"
{
#endif
/***************************************************************************/
/* MilMet CAPI defines */
/***************************************************************************/
/***************************************************************************/
/* MmetControl() */
/***************************************************************************/
#define M_ALL_FEATURES 0x100L // Already defined in milblob.h, miledge.h
#define M_ALL_PASS_FEATURES 5571L
#define M_ALL_WARNING_FEATURES 5572L
#define M_MEASURED_FEATURES 0x102L
#define M_CONSTRUCTED_FEATURES 0x103L
#define M_ALL_TOLERANCES 0x200L
#define M_ALL_PASS_TOLERANCES 0x202L
#define M_ALL_WARNING_TOLERANCES 0x204L
#define M_ALL_FAIL_TOLERANCES 0x206L
#define M_OUTPUT_FRAME 0x104L
#define M_GENERAL 0x20000000L // Already defined in milocr.h, milmod.h, milstr.h, milreg.h
// Operations' parameters
#define M_FIT_DISTANCE_MAX 101L
#define M_FIT_INTERNAL_NUMBER_OF_POINTS 2587L
#define M_METHOD 103L // Deprecatedv. Already defined in milocr.h.
#define M_OPERATION M_METHOD
#define M_FIT_ITERATIONS_MAX 104L
#define M_OCCURRENCE 105L
#define M_INDEX_VALUE M_INDEX
#define M_ANGLE 0x00000800L // Already defined in mil.h
#define M_EDGEL_TYPE 107L
#define M_POSITION 0x00000402L // Already defined in milmeas.h, miledge.h
#define M_EDGEL_ANGLE_RANGE 110L
#define M_EDGEL_RELATIVE_ANGLE 111L
#define M_FIT_COVERAGE_MIN 112L
#define M_FIT_VARIATION_MAX 113L
#define M_CLONE_OFFSET_X 115L
#define M_CLONE_OFFSET_Y 116L
#define M_CLONE_SCALE 117L
#define M_CLONE_ANGLE 118L
#define M_ALL_EDGELS 0L
#define M_ACTIVE_EDGELS 1719L
#define M_NOISY_EDGELS 3010L
#define M_FITTED_EDGELS 2L
#define M_VISIBLE 1533L // Deprecated
#define M_DRAWABLE M_VISIBLE
#define M_ACTIVE 1534L
#define M_LINE_BISECTOR_TYPE 2535L
#define M_FEATURE_ORDER 2536L
#define M_SMALLEST_ANGLE 2537L
#define M_BIGGEST_ANGLE 2538L
#define M_EDGEL_DENOISING_MODE 2558L
#define M_EDGEL_DENOISING_RADIUS 2565L
#define M_FIT_TYPE 3065L
#define M_STANDARD_FIT 3066L
#define M_ROBUST_FIT 3067L
#define M_FIT_DISTANCE_OUTLIERS 3030L
#define M_FIT_DISTANCE_OUTLIERS_VALUE 3031L
#define M_EDGEL_RESAMPLING_LINE_ANGLE 3084L
#define M_EDGEL_RESAMPLING_MODE 3085L
#define M_EDGEL_RESAMPLING_RADIUS 3086L
#define M_EDGEL_PROVIDED_ORDER 3143L
#define M_EDGEL_ORDERING 3144L
#define M_EDGEL_DENOISING_USE_ORDER 3200L
#define M_EDGEL_RESAMPLING_USE_ORDER 3201L
#define M_DIFFERENCE_DISTANCE_MODE 3078L
#define M_DIFFERENCE_THRESHOLD_HIGH 3079L
#define M_DIFFERENCE_THRESHOLD_LOW 3080L
#define M_DIFFERENCE_BOTH_SIDES 3087L
#define M_DIFFERENCE_MAXIMUM_EXPECTED_GAP_BETWEEN_POINTS 3189L
#define M_GROUP_EDGEL_GAP_SIZE 3082L
#define M_GROUP_SELECTION_MODE 3166L
#define M_GROUP_SELECTION_POINT 3167L
#define M_GROUP_SELECTION_OCCURRENCE 3168L
#define M_GROUP_MIN_NUMBER_OF_EDGELS 3169L
#define M_CLOSEST_TO_POINT 3171L
#define M_IGNORE_DISTANCE_MAX_FOR_ROBUST_FIT 5106L //undocumented
#if OldDefinesSupport
#define M_ANGLE_VALUE M_ANGLE // Deprecated.
#define M_CONSTRUCTION_DATA M_EDGEL_TYPE // Deprecated.
#define M_POSITION_VALUE M_POSITION // Deprecated.
#define M_DATA_ANGLE_TOLERANCE M_EDGEL_ANGLE_RANGE // Deprecated.
#define M_DATA_ANGLE_RANGE M_EDGEL_ANGLE_RANGE // Deprecated.
#define M_DATA_ANGLE_POLARITY M_EDGEL_RELATIVE_ANGLE // Deprecated.
#define M_COPY_OFFSET_X M_CLONE_OFFSET_X // Deprecated.
#define M_COPY_OFFSET_Y M_CLONE_OFFSET_Y // Deprecated.
#define M_COPY_SCALE M_CLONE_SCALE // Deprecated.
#define M_COPY_ANGLE M_CLONE_ANGLE // Deprecated.
#define M_DATA_ALL M_ALL_EDGELS // Deprecated.
#define M_DATA_FITTED M_FITTED_EDGELS // Deprecated.
#define M_DATA_FIT M_ACTIVE_EDGELS // Deprecated.
MIL_DEPRECATED( M_ANGLE_VALUE , 1020)
MIL_DEPRECATED( M_CONSTRUCTION_DATA , 1020)
MIL_DEPRECATED( M_POSITION_VALUE , 1020)
MIL_DEPRECATED( M_DATA_ANGLE_TOLERANCE, 1020)
MIL_DEPRECATED( M_DATA_ANGLE_RANGE , 1020)
MIL_DEPRECATED( M_DATA_ANGLE_POLARITY, 1020)
MIL_DEPRECATED( M_COPY_OFFSET_X , 1020)
MIL_DEPRECATED( M_COPY_OFFSET_Y , 1020)
MIL_DEPRECATED( M_COPY_SCALE , 1020)
MIL_DEPRECATED( M_COPY_ANGLE , 1020)
MIL_DEPRECATED( M_DATA_ALL , 1020)
MIL_DEPRECATED( M_DATA_FITTED , 1020)
MIL_DEPRECATED( M_DATA_FIT , 1020)
#endif
// result controls
#define M_RESULT_OUTPUT_UNITS 1300L // Also in milim.h
// extraction parameters
#define M_SMOOTHNESS 108L // Already defined in milmod.h, milmeas.h, mil.h, miledge.h
#define M_FILTER_SMOOTHNESS M_SMOOTHNESS // Already defined in mil.h, milmeas.h, miledge.h
#define M_THRESHOLD_MODE 33L // Already defined in miledge.h
#define M_FLOAT_MODE 70L // Already defined in miledge.h
#define M_FILTER_TYPE 1046L // Already defined in mil.h, miledge.h
#define M_RESULT_TYPE 1L // Already defined in milmeas.h, milim.h
#define M_FILTER_MODE 122L // Already defined in mil.h, milmod.h, milmeas.h, miledge.h
#define M_FILL_GAP_DISTANCE 44L // Already defined in miledge.h
#define M_FILL_GAP_ANGLE 45L // Already defined in miledge.h
#define M_MAGNITUDE_TYPE 10L // Already defined in miledge.h
#define M_CHAIN_ALL_NEIGHBORS 888L
#define M_THRESHOLD_VALUE_HIGH 3002L // Already defined in miledge.h
#define M_THRESHOLD_VALUE_LOW 3001L // Already defined in miledge.h
#define M_THRESHOLD_TYPE 3000L // Already defined in miledge.h
#define M_EXTRACTION_SCALE 58L // Already defined in miledge.h
#define M_EDGEL_SELECTION_RANK 119L
#if OldDefinesSupport
#define M_KERNEL_WIDTH 109L // Already defined in mil.h, miledge.h, milmod.h
#define M_KERNEL_DEPTH 368L // Already defined in mil.h, miledge.h, milmod.h
///MIL_DEPRECATED(M_KERNEL_WIDTH, 1010)
///MIL_DEPRECATED(M_KERNEL_DEPTH, 1010)
#endif
// extraction values
#define M_LOW 1L // Already defined in milcode.h, milmod.h, milocr, milpat.h, mil.h, miledge.h
#define M_MEDIUM 2L // Already defined in milcode.h, milmod.h, milocr, milpat.h, miledge.h
#define M_HIGH 3L // Already defined in milcode.h, milmod.h, milocr, milpat.h, mil.h, miledge.h
#define M_VERY_HIGH 4L // Already defined in milcode.h, milmod.h, milocr, milpat.h, miledge.h
#define M_USER_DEFINED 21L // Already defined in mil.h, milocr.h, miledge.h
#define M_SHEN 0x802L // Already defined in miledge.h
#define M_SOBEL M_EDGE_DETECT_SOBEL_FAST // Already defined in mil.h, miledge.h
#define M_PREWITT M_EDGE_DETECT_PREWITT_FAST // Already defined in mil.h, miledge.h
#define M_FREI_CHEN M_ID_OFFSET_OF_DEFAULT_KERNEL + 9L
#define M_DERICHE M_ID_OFFSET_OF_DEFAULT_KERNEL + 10L
#define M_CONTOUR 0x800L // Already defined in milblob.h, miledge.h
#define M_CREST 0x801L // Already defined in miledge.h
#define M_KERNEL 0x00400000L // Already defined in milmod.h, mil.h, miledge.h
#define M_RECURSIVE 0x00040000 // Already defined in mildev.h, miledge.h
#define M_AUTO 444L // Already defined in milocr.h, milmod.h, miledge.h
#define M_SQR_NORM 4001L // Already defined in miledge.h
#define M_NORM 4000L // Already defined in miledge.h
#define M_HYSTERESIS 31L // Already defined in miledge.h
#define M_NO_HYSTERESIS 20L // Already defined in miledge.h
#define M_FULL_HYSTERESIS 25L // Already defined in miledge.h
#define M_REGION_ACCURACY_HIGH 99L
#define M_MAD_BASED_VALUE -41L
#define M_SUGGESTED_VALUE -42L
//#define M_NONE 0x08000000L // Already defined in milstr.h, milcolor.h, milcal.h
#define M_MEDIAN 0x10000L // Already defined in milim.h, milocr.h
#define M_GAUSSIAN 0x805L // Already defined in miledge.h, milreg.h, milim.h
#define M_SEQUENTIAL 3154L
// Model
#define M_TEMPLATE_REFERENCE_ID 50L
#define M_ASSOCIATED_CALIBRATION 125L // Already defined in mil.h, milmod.h, milcal.h
#define M_RESTORED_CALIBRATION 1491L // Already defined in milmod.h // =intenal=
#define M_TEMPLATE_REFERENCE_SIZE_X 55L
#define M_TEMPLATE_REFERENCE_SIZE_Y 56L
#define M_TEMPLATE_REFERENCE_SIZE_BAND 57L
#define M_TEMPLATE_REFERENCE_TYPE 162
#define M_SORT 0x00200000L // Already defined in milocr.h
#define M_SORT_UP 1L
#define M_SORT_DOWN 2L
// Parameters for output units
#define M_PIXEL 0x1000L
#define M_WORLD 0x2000L
/***************************************************************************/
/* MmetInquire() */
/***************************************************************************/
// General
#define M_OWNER_SYSTEM 1101L // Already defined in mil.h, milmod.h, miledge.h
#define M_MODIFICATION_COUNT 5010L // Already defined in mil.h, milmod.h, miledge.h
#define M_NUMBER_OF_FEATURES 1002L
#define M_NUMBER_OF_MEASURED_FEATURES 1003L
#define M_NUMBER_OF_CONSTRUCTED_FEATURES 1004L
#define M_NUMBER_OF_TOLERANCES 1005L
#define M_NUMBER_MIN 1010L // Already defined in milmeas.h
#define M_NUMBER_MAX 1011L
#define M_BASE_FEATURES_ARRAY_SIZE 1012L
#define M_BASE_SUBFEATURES_ARRAY_SIZE 1013L
#define M_DEPENDENCIES 1015L
#define M_INVALID -1
#if OldDefinesSupport
#define M_NUMBER_OF_CONSTRUCTION_FEATURE_INDEX M_BASE_SUBFEATURES_ARRAY_SIZE // Deprecated actually since MIL9PP2
#define M_NUMBER_OF_CONSTRUCTION_FEATURE_LABEL M_BASE_FEATURES_ARRAY_SIZE // Deprecated actually since MIL9PP2
MIL_DEPRECATED(M_NUMBER_OF_CONSTRUCTION_FEATURE_INDEX, 1020)
MIL_DEPRECATED(M_NUMBER_OF_CONSTRUCTION_FEATURE_LABEL, 1020)
#endif
// Feature
#define M_FEATURE_LABEL_VALUE M_LABEL_VALUE // Already defined in milblob.h, miledge.h
#define M_FEATURE_TYPE MAKE_INT64(0x0000000000040000)
#define M_FEATURE_GEOMETRY 903L
#define M_CONSTRUCTION_FEATURE_LABEL_TAG 0x1000000L // =Utilities=
#define M_CONSTRUCTION_FEATURE_INDEX_TAG 0x2000000L // =Utilities=
#define M_BASE_FEATURE_LABEL(i) (M_CONSTRUCTION_FEATURE_LABEL_TAG|(i))
#define M_BASE_FEATURE_INDEX(i) (M_CONSTRUCTION_FEATURE_INDEX_TAG|(i))
#define M_BASE_SUBFEATURE_INDEX(i) (M_CONSTRUCTION_FEATURE_INDEX_TAG|(i))
#define M_TRANSFORMATION_TYPE 3L // Already defined in milreg.h
#define M_EDGEL_POSITION_X 2576L
#define M_EDGEL_POSITION_Y 2577L
#define M_EDGEL_ANGLE 2578L
#if OldDefinesSupport
#define M_FEATURE_METHOD M_OPERATION // Deprecated.
#define M_FEATURE_OPERATION M_OPERATION // Deprecated.
#define M_CONSTRUCTION_FEATURE_LABEL(i) (M_CONSTRUCTION_FEATURE_LABEL_TAG|(i)) // Deprecated since M9PP2
#define M_CONSTRUCTION_FEATURE_INDEX(i) (M_CONSTRUCTION_FEATURE_INDEX_TAG|(i)) // Deprecated since M9PP2
MIL_DEPRECATED(M_FEATURE_METHOD, 1020)
MIL_DEPRECATED(M_FEATURE_OPERATION, 1020)
MIL_DEPRECATED(M_CONSTRUCTION_FEATURE_LABEL, 1020)
MIL_DEPRECATED(M_CONSTRUCTION_FEATURE_INDEX, 1020)
#endif
// Tolerance
#define M_TOLERANCE_TYPE 902L
#if OldDefinesSupport
#define M_TOLERANCE_LABEL_VALUE M_LABEL_VALUE
MIL_DEPRECATED(M_TOLERANCE_LABEL_VALUE, 1020)
#endif
// Frames
#define M_REFERENCE_FRAME 205L
#define M_GLOBAL_FRAME (M_FEATURE_LABEL_TAG|M_DEFAULT)
// Region
#define M_DERIVED_GEOMETRY_REGION 206L // allocation type
#define M_REGION_GEOMETRY 206L
#define M_REGION_POSITION_X 207L
#define M_REGION_POSITION_Y 208L
#define M_REGION_WIDTH 209L
#define M_REGION_HEIGHT 210L
#define M_REGION_ANGLE 46L // Already defined in milbga.h
#define M_REGION_RADIUS_START 212L
#define M_REGION_RADIUS_END 213L
#define M_REGION_ANGLE_START 214L
#define M_REGION_ANGLE_END 215L
#define M_REGION_START_X 218L
#define M_REGION_START_Y 219L
#define M_REGION_END_X 220L
#define M_REGION_END_Y 221L
#define M_REGION_RADIUS 222L
#define M_RADIAL 777L
#define M_REGION_POSITION_X_TYPE 1727L
#define M_REGION_POSITION_Y_TYPE 1728L
#define M_REGION_WIDTH_TYPE 1729L
#define M_REGION_HEIGHT_TYPE 1730L
#define M_REGION_ANGLE_TYPE 1731L
#define M_REGION_RADIUS_START_TYPE 1732L
#define M_REGION_RADIUS_END_TYPE 1733L
#define M_REGION_ANGLE_START_TYPE 1734L
#define M_REGION_ANGLE_END_TYPE 1735L
#define M_REGION_START_X_TYPE 1736L
#define M_REGION_START_Y_TYPE 1737L
#define M_REGION_END_X_TYPE 1738L
#define M_REGION_END_Y_TYPE 1739L
#define M_REGION_RADIUS_TYPE 1740L
#define M_REGION_POSITION 1775L
#define M_REGION_POSITION_TYPE 1776L
#define M_REGION_START 1777L
#define M_REGION_END 1778L
#define M_REGION_START_TYPE 1779L
#define M_REGION_END_TYPE 1780L
#define M_FROM_DERIVED_GEOMETRY_REGION 1785L
#if OldDefinesSupport
#define M_REGION_POSITION_START M_REGION_START // Deprecated.
#define M_REGION_POSITION_END M_REGION_END // Deprecated.
#define M_REGION_POSITION_START_TYPE M_REGION_START_TYPE // Deprecated.
#define M_REGION_POSITION_END_TYPE M_REGION_END_TYPE // Deprecated.
#define M_REGION_POSITION_START_X M_REGION_START_X // Deprecated.
#define M_REGION_POSITION_END_X M_REGION_END_X // Deprecated.
#define M_REGION_POSITION_START_Y M_REGION_START_Y // Deprecated.
#define M_REGION_POSITION_END_Y M_REGION_END_Y // Deprecated.
#define M_FROM_REGION_GEOMETRY M_FROM_DERIVED_GEOMETRY_REGION // Deprecated.
MIL_DEPRECATED(M_REGION_POSITION_START,1020)
MIL_DEPRECATED(M_REGION_POSITION_END,1020)
MIL_DEPRECATED(M_REGION_POSITION_START_TYPE,1020)
MIL_DEPRECATED(M_REGION_POSITION_END_TYPE,1020)
MIL_DEPRECATED(M_REGION_POSITION_START_X,1020)
MIL_DEPRECATED(M_REGION_POSITION_END_X,1020)
MIL_DEPRECATED(M_REGION_POSITION_START_Y,1020)
MIL_DEPRECATED(M_REGION_POSITION_END_Y,1020)
MIL_DEPRECATED(M_FROM_REGION_GEOMETRY,1020)
#endif
/***************************************************************************/
/* MmetGetResult() */
/***************************************************************************/
#define M_LABEL_VALUE 1L // Already defined in milblob.h, miledge.h
#define M_INDEX_FROM_LABEL 229L // Already defined in milmod.h
#define M_POSITION_X 0x00003400L // Already defined in miledge.h, milreg.h, milmod.h, milcode.h, milmeas.h, milpat.h, milim.h
#define M_POSITION_Y 0x00004400L // Already defined in miledge.h, milreg.h, milmod.h, milcode.h, milmeas.h, milpat.h, milim.h
#define M_POSITION_START_X 9L // Already defined in milpat.h
#define M_POSITION_START_Y 10L // Already defined in milpat.h
#define M_POSITION_END_X 0x00003402L
#define M_POSITION_END_Y 0x00004402L
#define M_ANGLE 0x00000800L // Already defined in milreg.h, milmod.h, milcode.h, milcal.h, milmeas.h, milpat.h, mil.h
#define M_ANGLE_START 0x00000801L
#define M_ANGLE_END 0x00000802L
#define M_LENGTH 0x00002000L // Already defined in miledge.h, milmod.h, milcal.h, milmeas.h, milblob.h, mil.h
#define M_RADIUS 0x00000040L // Already defined in milmod.h, milmeas.h
#define M_LINE_A 0x00003000L
#define M_LINE_B 0x00003001L
#define M_LINE_C 0x00003002L
#define M_COVERAGE 216L
#define M_NUMBER_OF_GROUPS 3170L
#if OldDefinesSupport
#define M_CIRCLE_CENTER_X M_POSITION_X // Deprecated.
#define M_CIRCLE_CENTER_Y M_POSITION_Y // Deprecated.
#define M_CIRCLE_RADIUS M_RADIUS // Deprecated.
#define M_CIRCLE_LENGTH M_LENGTH // Deprecated.
#define M_CIRCLE_COVERAGE M_COVERAGE // Deprecated.
#define M_LOCAL_FRAME_POSITION_X M_POSITION_X // Deprecated.
#define M_LOCAL_FRAME_POSITION_Y M_POSITION_Y // Deprecated.
#define M_LOCAL_FRAME_ANGLE M_ANGLE // Deprecated.
#define M_POINT_POSITION_X M_POSITION_X // Deprecated.
#define M_POINT_POSITION_Y M_POSITION_Y // Deprecated.
#define M_POINT_ANGLE M_ANGLE // Deprecated.
#define M_NUMBER_OF_POINTS M_NUMBER // Now used in 3dim
#define M_NUMBER_OF_DATA M_NUMBER // Deprecated.
#define M_DATA_POSITION_X M_POSITION_X // Deprecated.
#define M_DATA_POSITION_Y M_POSITION_Y // Deprecated.
#define M_EDGELS_POSITION_X M_POSITION_X // Deprecated.
#define M_EDGELS_POSITION_Y M_POSITION_Y // Deprecated.
#define M_LINE_PARAM_A M_LINE_A // Deprecated.
#define M_LINE_PARAM_B M_LINE_B // Deprecated.
#define M_LINE_PARAM_C M_LINE_C // Deprecated.
#define M_LINE_ANGLE M_ANGLE // Deprecated.
#define M_SEGMENT_START_X M_POSITION_START_X // Deprecated.
#define M_SEGMENT_START_Y M_POSITION_START_Y // Deprecated.
#define M_SEGMENT_END_X M_POSITION_END_X // Deprecated.
#define M_SEGMENT_END_Y M_POSITION_END_Y // Deprecated.
#define M_SEGMENT_ANGLE M_ANGLE // Deprecated.
#define M_SEGMENT_LENGTH M_LENGTH // Deprecated.
#define M_SEGMENT_COVERAGE M_COVERAGE // Deprecated.
#define M_ARC_CENTER_X M_POSITION_X // Deprecated.
#define M_ARC_CENTER_Y M_POSITION_Y // Deprecated.
#define M_ARC_RADIUS M_RADIUS // Deprecated.
#define M_ARC_ANGLE_START M_ANGLE_START // Deprecated.
#define M_ARC_ANGLE_END M_ANGLE_END // Deprecated.
#define M_ARC_LENGTH M_LENGTH // Deprecated.
#define M_ARC_ANGLE M_ANGLE // Deprecated.
#define M_ARC_START_X M_POSITION_START_X // Deprecated.
#define M_ARC_START_Y M_POSITION_START_Y // Deprecated.
#define M_ARC_END_X M_POSITION_END_X // Deprecated.
#define M_ARC_END_Y M_POSITION_END_Y // Deprecated.
#define M_ARC_COVERAGE M_COVERAGE // Deprecated.
#define M_NUMBER_OF_EDGELS M_NUMBER // Deprecated.
MIL_DEPRECATED(M_CIRCLE_POSITION_X,1020)
MIL_DEPRECATED(M_CIRCLE_POSITION_Y,1020)
MIL_DEPRECATED(M_CIRCLE_RADIUS,1020)
MIL_DEPRECATED(M_CIRCLE_LENGTH,1020)
MIL_DEPRECATED(M_CIRCLE_COVERAGE,1020)
MIL_DEPRECATED(M_LOCAL_FRAME_POSITION_X,1020)
MIL_DEPRECATED(M_LOCAL_FRAME_POSITION_Y,1020)
MIL_DEPRECATED(M_LOCAL_FRAME_ANGLE,1020)
MIL_DEPRECATED(M_POINT_POSITION_X,1020)
MIL_DEPRECATED(M_POINT_POSITION_Y,1020)
MIL_DEPRECATED(M_POINT_ANGLE,1020)
MIL_DEPRECATED(M_NUMBER_OF_DATA,1020)
MIL_DEPRECATED(M_DATA_POSITION_X,1020)
MIL_DEPRECATED(M_DATA_POSITION_Y,1020)
MIL_DEPRECATED(M_EDGELS_POSITION_X,1020)
MIL_DEPRECATED(M_EDGELS_POSITION_Y,1020)
MIL_DEPRECATED(M_LINE_PARAM_A,1020)
MIL_DEPRECATED(M_LINE_PARAM_B,1020)
MIL_DEPRECATED(M_LINE_PARAM_C,1020)
MIL_DEPRECATED(M_LINE_ANGLE,1020)
MIL_DEPRECATED(M_SEGMENT_START_X,1020)
MIL_DEPRECATED(M_SEGMENT_START_Y,1020)
MIL_DEPRECATED(M_SEGMENT_END_X,1020)
MIL_DEPRECATED(M_SEGMENT_END_Y,1020)
MIL_DEPRECATED(M_SEGMENT_ANGLE,1020)
MIL_DEPRECATED(M_SEGMENT_LENGTH,1020)
MIL_DEPRECATED(M_SEGMENT_COVERAGE,1020)
MIL_DEPRECATED(M_ARC_CENTER_X,1020)
MIL_DEPRECATED(M_ARC_CENTER_Y,1020)
MIL_DEPRECATED(M_ARC_RADIUS,1020)
MIL_DEPRECATED(M_ARC_ANGLE_START,1020)
MIL_DEPRECATED(M_ARC_ANGLE_END,1020)
MIL_DEPRECATED(M_ARC_LENGTH,1020)
MIL_DEPRECATED(M_ARC_ANGLE,1020)
MIL_DEPRECATED(M_ARC_START_X,1020)
MIL_DEPRECATED(M_ARC_START_Y,1020)
MIL_DEPRECATED(M_ARC_END_X,1020)
MIL_DEPRECATED(M_ARC_END_Y,1020)
MIL_DEPRECATED(M_ARC_COVERAGE,1020)
MIL_DEPRECATED(M_NUMBER_OF_EDGELS,1020)
#endif
#define M_TOLERANCE_VALUE M_VALUE
#define M_NUMBER_OF_FEATURES_PASS M_NUMBER_OF_FEATURES+100
#define M_NUMBER_OF_FEATURES_FAIL M_NUMBER_OF_FEATURES+101
#define M_NUMBER_OF_FEATURES_WARNING 5573L
#define M_NUMBER_OF_TOLERANCES_PASS M_NUMBER_OF_TOLERANCES+100
#define M_NUMBER_OF_TOLERANCES_FAIL M_NUMBER_OF_TOLERANCES+101
#define M_NUMBER_OF_TOLERANCES_WARNING M_NUMBER_OF_TOLERANCES+102
#if OldDefinesSupport
#define M_NUMBER_OF_FEATURE_FAIL M_NUMBER_OF_FEATURES_FAIL // Deprecated.
MIL_DEPRECATED(M_NUMBER_OF_FEATURE_FAIL, 1020)
#endif
/***************************************************************************/
/* MmetDraw() */
/***************************************************************************/
#if OldDefinesSupport
#define M_DRAW_RELATIVE_ORIGIN_X 319L // deprecated : Use MgraControl(... M_DRAW_OFFSET_X...)
#define M_DRAW_RELATIVE_ORIGIN_Y 320L // deprecated : Use MgraControl(... M_DRAW_OFFSET_Y...)
#define M_DRAW_SCALE_X 3203L // deprecated : Use MgraControl(... M_DRAW_ZOOM_X ...)
#define M_DRAW_SCALE_Y 3204L // deprecated : Use MgraControl(... M_DRAW_ZOOM_Y ...)
// MIL_DEPRECATED(M_DRAW_RELATIVE_ORIGIN_X, 1010) Already defined in mil.h
// MIL_DEPRECATED(M_DRAW_RELATIVE_ORIGIN_Y, 1010) Already defined in mil.h
// MIL_DEPRECATED(M_DRAW_SCALE_X, 1010) Already defined in mil.h
// MIL_DEPRECATED(M_DRAW_SCALE_Y, 1010) Already defined in mil.h
#endif
#define M_DRAW_CROSS_SIZE 115L // Already defined in miledge.h
#define M_DRAW_LABEL 0x00000001L // Already defines in miledge.h
#define M_DRAW_IMAGE 0x00000002L // Already defines in milmod.h, milpat.h, miledge.h
#define M_DRAW_TEMPLATE_REFERENCE 5L
#define M_DRAW_REGION 0x00000010L //|M_DRAW_LABEL=17
#define M_DRAW_FEATURE 6L //|M_DRAW_LABEL=7
#define M_DRAW_TOLERANCE 8L //|M_DRAW_LABEL=9
#define M_DRAW_EDGELS 0x2000L // Already defines in miledge.h
#define M_DRAW_ALL_EDGELS M_DRAW_EDGELS
#define M_DRAW_ACTIVE_EDGELS 0x00100000L
#define M_DRAW_FITTED_EDGELS 15L
#define M_DRAW_NOISY_EDGELS 3006L
#define M_DRAW_TOLERANCE_FEATURES 12L
#define M_DRAW_NAME 14L
#define M_DRAW_TOLERANCE_AREA 4058L
#define M_DRAW_TOLERANCE_AREA_POSITIVE 5177L
#define M_DRAW_TOLERANCE_AREA_NEGATIVE 5178L
#if OldDefinesSupport
#define M_DRAW_DATA_ALL 10L // Deprecated.
#define M_DRAW_DATA M_DRAW_ACTIVE_EDGELS // Deprecated.
#define M_DRAW_REFERENCE_FEATURES M_DRAW_TOLERANCE_FEATURES // Deprecated.
MIL_DEPRECATED(M_DRAW_DATA_ALL,1020)
MIL_DEPRECATED(M_DRAW_DATA,1020)
MIL_DEPRECATED(M_DRAW_REFERENCE_FEATURES, 1020)
#endif
/***************************************************************************/
/* MmetStream */
/***************************************************************************/
#define M_SAVE 0x100L // Already defines in milmod.h, milocr.h, miledge.h
#define M_RESTORE 0x10L // Already defined in miledge.h
#define M_LOAD 1L // Already defines in milmod.h, milmeas.h, mil.h, miledge.h
#define M_INQUIRE_SIZE_BYTE 2L // Already defines in milmod.h, miledge.h
#define M_MEMORY (M_APP_INQUIRE_SYS_START+120L) /*5120*/ //Only 2 bits set. Used in bitwise operations
#define M_WITH_CALIBRATION 0x00020000L // Already defined in mil.h, milmod.h
/***************************************************************************/
/* MmetAddFeature */
/***************************************************************************/
// Feature type
#define M_MODIFY 999L
#define M_MEASURED 1L
#define M_CONSTRUCTED 2L
// Geometry
#define M_LINE 0x00000080L // Already defined in miledge.h, milmod
#define M_CIRCLE 0x00000008L // Already defined in milmod.h, milmeas.h
#define M_POINT 1L // Already defined in milmeas.h
#define M_STRIPE 3L // Already defined in milmeas.h
#define M_EDGEL 4L
#define M_ARC 0x00000081L // Already defined in miledge.h
#define M_SEGMENT 0x00000082L
#define M_LOCAL_FRAME 0x00000083L
#define M_DATA M_EDGEL // Deprecated. Already defined in mil.h
// BuildOperation
#define M_FIT 0x0020L // Already defined in milcal.h
#define M_PARAMETRIC 0x0021L
#define M_INTERSECTION 0x0022L
#define M_CONSTRUCTION 0x0023L
#define M_MIDDLE 0x0024L
#define M_CLOSEST 0x0025L
#define M_MAX_DISTANCE_POINT 0x0026L
#define M_PARALLEL 0x0027L
#define M_PERPENDICULAR 0x0028L
#define M_OUTER_FIT 0x0029L
#define M_INNER_FIT 0x0030L
#define M_POSITION_ABSOLUTE 0x0031L
#define M_POSITION_RELATIVE 0x0032L
#define M_SECTOR_RELATIVE 0x0035L
#define M_BISECTOR 0x0036L
#define M_POSITION_START 0x0037L
#define M_POSITION_END 0x0038L
#define M_ANGLE_ABSOLUTE 0x0039L
#define M_ANGLE_RELATIVE 0x0040L
#define M_COPY_FEATURE_EDGELS 0x0041L
#define M_EXTRACT_DIFFERENCE_EDGELS 3076L
#define M_GROUP_EDGELS 3077L
#define M_COPY 0x00020000L // already defined in mil.h, milblob.h (deprecated)
#define M_CLONE_FEATURE M_COPY
#define M_CENTER 0x00000080L // already defined in milim.h
#define M_ANGLE 0x00000800L // already defined in mil.h
#define M_EXTENDED_INTERSECTION 0x0042L
#define M_MAX_OF_MIN_DISTANCE_POINT 0x0043L
#define M_CLOSEST_TO_INFINITE_POINT 2601L
#define M_EXTERNAL_FEATURE 0x0044L
#if OldDefinesSupport
#define M_COPY_DATA M_COPY_FEATURE_EDGELS // (deprecated)
#define M_FARTHEST M_MAX_DISTANCE_POINT //(deprecated)
#define M_MAX_MIN_DISTANCE_POINT M_MAX_OF_MIN_DISTANCE_POINT //(deprecated)
MIL_DEPRECATED(M_COPY_DATA, 1020)
MIL_DEPRECATED(M_FARTHEST, 1020)
MIL_DEPRECATED(M_MAX_MIN_DISTANCE_POINT, 1030)
#endif
/***************************************************************************/
/* MmetAddTolerance */
/***************************************************************************/
// Tolerance type
#define M_PERPENDICULARITY 1L
#define M_LENGTH 0x00002000L // Already defined in miledge.h, milblob.h, milcal.h, milmeas.h, milmod.h, mil.h
#define M_DISTANCE_MIN 2L
#define M_DISTANCE_MAX 0x00004900L // Already defined in milcode.h
#define M_ANGULARITY 3L
#define M_PARALLELISM 4L
#define M_ROUNDNESS 5L
#define M_STRAIGHTNESS 6L
#define M_CONCENTRICITY 7L
#define M_POSITION_X 0x00003400L // Already defined in milmeas.h, milcode.h, milmod.h, milpat.h, mil.h
#define M_POSITION_Y 0x00004400L // Already defined in milblob.h, milcode.h, milmod.h, milpat.h, mil.h
#define M_SURFACE 1021L // Already defined in mil.h (milbuf)
#define M_PERIMETER_SIMPLE 2519L
#define M_AREA_SIMPLE 3184L
#define M_PERIMETER_CONVEX_HULL 3185L
#define M_AREA_CONVEX_HULL 3186L
#define M_AREA_UNDER_CURVE_MIN 3073L
#define M_AREA_UNDER_CURVE_MAX 3074L
#define M_AREA_BETWEEN_CURVES 3194L
#define M_GAP_AT_ANGLE 4135L
#define M_FERET_AT_ANGLE 4136L
// Attributes
#define M_VALUE_MIN 4L
#define M_VALUE_MAX 5L
#define M_VALUE_WARNING_MIN 7L
#define M_VALUE_WARNING_MAX 8L
#define M_GAIN 5124L // Already defined in mil.h
#define M_OFFSET 2L // Already defined in milpat.h
//Special controls
#define M_CONVEX_HULL 80L // Already defined in milblob.h (There are also #define M_CONVEX_HULL_AREA, and more).
#define M_REFERENCE_ANGLE 110L // Already defined in milmod.h
#define M_DISTANCE_MODE 2563L
#define M_CURVE_EDGEL_GAP_SIZE 3066L
#define M_EDGEL_PRUNING 3067L
#define M_AREA_BETWEEN_CURVES_OPPOSITES_SUBTRACT 3070L
#define M_AREA_UNDER_CURVE_ALLOW_NEGATIVE 3196L
#define M_AUTO_CURVE_OPENED 3194L
#define M_AUTO_CURVE_CLOSED 3195L
#define M_CURVE_INFO 3147L
#define M_AREA_BETWEEN_CURVES_ONE_SIDE_ONLY 4066L
#define M_AREA_BETWEEN_CURVES_DEFINE_SIDE 4067L
//Special values
#define M_EQUAL_PASS_MIN -4066L
#define M_EQUAL_PASS_MAX -4067L
#define M_NO_CONSTRAINT 0x00020000L
#define M_PIXEL_SIZE_DIAGONAL -5L
#define M_EQUAL_THRESHOLD_HIGH -3079L
#define M_ABSOLUTE 1L // *also defined in milpat.h, milcol.h
/***************************************************************************/
/* MmetSetRegion */
/***************************************************************************/
#define M_RECTANGLE 0x00000040L // Already defined in milmod.h
#define M_RING 0x00000100L // Already defined in milmod.h
#define M_RING_SECTOR 0x00000200L
#define M_INFINITE -1L // Also defined in Mil.h
#define M_SEGMENT 0x00000082L // Also defined in milmod.h
#define M_ARC 0x00000081L // Already defined in miledge.h
#define M_FROM_GRAPHIC_LIST 0x08000000L // Bitwise with other geometry (can be added)
/***************************************************************************/
/* MmetSetPosition */
/***************************************************************************/
#define M_RESULT 0x00001000L // Already defined in milmod.h, milmeas.h
#define M_GEOMETRIC 0x00002000L // Already defined in milmod.h
#define M_FORWARD_COEFFICIENTS 0x00010000L
/***************************************************************************/
/* MmetName() */
/***************************************************************************/
#define M_SET_NAME 1L
#define M_GET_NAME 2L
#define M_GET_FEATURE_LABEL 3L
#define M_GET_TOLERANCE_LABEL 4L
#define M_GET_FEATURE_INDEX 5L
#define M_GET_TOLERANCE_INDEX 6L
/***************************************************************************/
/* General definitions */
/***************************************************************************/
#define M_ENABLE -9997L // Already defined in milblob.h, milcal.h, milmeas.h, mil.h, miledge.h
#define M_DISABLE -9999L // Already defined in milblob.h, milcal.h, milmeas.h, mil.h, miledge.h
#define M_PACKED 0x00020000L // Already defined in mil.h, miledge.h
#define M_AVAILABLE MAKE_INT64(0x0000400000000000) // Also defined in mil.h
#define M_SUPPORTED MAKE_INT64(0x0000800000000000) // Also defined in mil.h
#define M_ALL 0x40000000L // Already defined in milmod.h, milmeas.h, milocr.h, milpat.h, mil.h, miledge.h
#define M_DEFAULT 0x10000000L // Already defined in milmod.h, milocr.h, milcode.h, mil.h, miledge.h
#define M_DELETE 3L // Already defined in milmod.h, miledge.h, milblob.h
#define M_SAME -1L // Already defined in milmod.h, milmeas.h, milocr.h, miledge.h
#define M_SAME_OR_REVERSE 5L // Already defined in milmod.h, miledge.h
#define M_REVERSE 4L // Already defined in milmod.h, mil.h, miledge.h
#define M_TRUE 1L // Already defined in mil.h, milmeas.h, miledge.h
#define M_FALSE 0L // Already defined in mil.h, milmeas.h, miledge.h
#define M_PASS 0x0002L // Already defined in milim.h
#define M_FAIL 4L
#define M_WARNING 3L
#define M_IMAGE_FRAME 0L
#define M_RESET 9L // Already defined in milblob.h, milmod.h
#define M_USE_TEMPLATE 1L // =Utilities=
#define M_INTERPOLATE_ANGLE 1L
#define M_ABOVE 4076L
#define M_UNDER 4077L
#define M_TIMEOUT_END 10L // Already defined in milmod.h
#define M_STATUS 0x00008002L // Already defined in milcode.h, milreg.h
#define M_CONTEXT 0x08000000L // Already defined in milmod.h, milreg.h, milstr.h, milocr.h
#define M_MET_OBJECT (M_USER_ATTRIBUTE | MAKE_INT64(0x0000000100000000))// =Utilities= // Already defined in mil.h
#define M_MET_CONTEXT (M_MET_OBJECT | 0x00000001L ) // Already defined in mil.h
#define M_MET_RESULT (M_MET_OBJECT | 0x00000002L ) // Already defined in mil.h
#define M_MET_DERIVED_GEOMETRY_REGION (M_MET_OBJECT | 0x00000004L )
#define M_INTERACTIVE M_NULL // Already defined in mil.h, milcal.h, milcode.h, milmeas.h, milocr.h, milpat.h, milmod.h, miledge.h
#if OldDefinesSupport
#define M_MET_GEOMETRY (M_MET_OBJECT | 0x00000004L ) // Already defined in mil.h
MIL_DEPRECATED(M_MET_GEOMETRY, 1020)
#endif
/***************************************************************************/
/* Utilities */
/***************************************************************************/
#define M_FEATURE_LABEL_TAG 0x01000000L // =Utilities=
#define M_FEATURE_INDEX_TAG 0x02000000L // =Utilities=
#define M_TOLERANCE_INDEX_TAG 0x04000000L // =Utilities=
#define M_TOLERANCE_LABEL_TAG 0x20000000L // =Utilities=
#define M_MET_FEATURE_ID_MAX M_FEATURE_LABEL_TAG-1 //Max ID for feature.
#define M_MET_TOLERANCE_ID_MAX M_FEATURE_LABEL_TAG-1 //Max ID for tolerances.
#define M_FEATURE_LABEL(i) (M_FEATURE_LABEL_TAG | (i))
#define M_FEATURE_INDEX(i) (M_FEATURE_INDEX_TAG | (i))
#define M_TOLERANCE_LABEL(i) (M_TOLERANCE_LABEL_TAG | (i))
#define M_TOLERANCE_INDEX(i) (M_TOLERANCE_INDEX_TAG | (i))
#define M_METROLOGY_COMPATIBLE 98L // Already defined in miledge.h
#define M_VALUE 0L
#define M_MIN 0x02000000L // Already defined in milmeas.h, mil.h, miledge.h
#define M_MAX 0x04000000L // Already defined in milmeas.h, mil.h, miledge.h
#define M_MEAN 0x08000000L // Already defined in milmeas.h, mil.h, milocr.h, miledge.h
#define M_MIN_ABS 0x00200000L // Already defined in mil.h, miledge.h
#define M_MAX_ABS 0x00800000L // Already defined in mil.h, miledge.h
#define M_LAST 0x20000000L // Already defined in mil.h
// Deprecated flag names.
#if OldDefinesSupport
// #define M_MAJOR_AXIS M_RADIUS already defined in milmeas.h
// MIL_DEPRECATED(M_MAJOR_AXIS, 1000) already defined in milmeas.h
#endif
/***************************************************************************/
/* MilMetrol CAPI function prototypes */
/***************************************************************************/
/***************************************************************************/
/* MmetAlloc() */
/***************************************************************************/
MIL_ID MFTYPE MmetAlloc (MIL_ID SysId,
MIL_INT64 Type,
MIL_ID* ContextOrRegionMetIdPtr);
/***************************************************************************/
/* MmetAllocResult() */
/***************************************************************************/
MIL_ID MFTYPE MmetAllocResult (MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* ResultIdPtr);
/***************************************************************************/
/* MmetControl() */
/***************************************************************************/
#if M_MIL_USE_64BIT
// Prototypes for 64 bits OSs
void MFTYPE MmetControlInt64 (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 ControlType,
MIL_INT64 ControlValue);
void MFTYPE MmetControlDouble (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue);
#else
// Prototypes for 32 bits OSs
#define MmetControlInt64 MmetControl
#define MmetControlDouble MmetControl
void MFTYPE MmetControl (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue);
#endif
/***************************************************************************/
/* MmetInquire() */
/***************************************************************************/
MIL_INT MFTYPE MmetInquire (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 InquireType,
void* UserVarPtr);
/***************************************************************************/
/* MmetSetPosition() */
/***************************************************************************/
#if M_MIL_USE_64BIT
// Prototypes for 64 bits OSs
void MFTYPE MmetSetPositionInt64 (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT64 TransformationType,
MIL_INT64 Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag);
void MFTYPE MmetSetPositionDouble(MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT64 TransformationType,
MIL_DOUBLE Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag);
#else
// Prototypes for 32 bits OSs
#define MmetSetPositionInt64 MmetSetPosition
#define MmetSetPositionDouble MmetSetPosition
void MFTYPE MmetSetPosition (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT64 TransformationType,
MIL_DOUBLE Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag);
#endif
/***************************************************************************/
/* MmetMeasuredRegion() */
/***************************************************************************/
#if M_MIL_USE_64BIT
// Prototypes for 64 bits OSs
void MFTYPE MmetSetRegionInt64 (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT ReferenceFrameLabelOrIndex,
MIL_INT64 Geometry,
MIL_INT64 Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_DOUBLE Param5,
MIL_DOUBLE Param6);
void MFTYPE MmetSetRegionDouble (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT ReferenceFrameLabelOrIndex,
MIL_INT64 Geometry,
MIL_DOUBLE Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_DOUBLE Param5,
MIL_DOUBLE Param6);
#else
// Prototypes for 32 bits OSs
#define MmetSetRegionInt64 MmetSetRegion
#define MmetSetRegionDouble MmetSetRegion
void MFTYPE MmetSetRegion (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT ReferenceFrameLabelOrIndex,
MIL_INT64 Geometry,
MIL_DOUBLE Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_DOUBLE Param5,
MIL_DOUBLE Param6);
#endif
/***************************************************************************/
/* MmetCalculate() */
/***************************************************************************/
void MFTYPE MmetCalculate (MIL_ID ContextId,
MIL_ID TargetBufId,
MIL_ID ResultId,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetGetResult() */
/***************************************************************************/
void MFTYPE MmetGetResult (MIL_ID ResultId,
MIL_INT LabelOrIndex,
MIL_INT64 ResultType,
void* ResultArrayPtr);
/***************************************************************************/
/* MmetGetResultOutputUnits() */
/***************************************************************************/
void MFTYPE MmetGetResultOutputUnits(MIL_ID ResultId,
MIL_INT LabelOrIndex,
MIL_INT64 ResultType,
MIL_INT64 OutputUnits,
MIL_INT64 ForcedOutputFrame,
void* ResultArrayPtr);
/***************************************************************************/
/* MmetAddFeature() */
/***************************************************************************/
void MFTYPE MmetAddFeature (MIL_ID ContextId,
MIL_INT64 FeatureType,
MIL_INT64 Geometry,
MIL_INT FeatureLabel,
MIL_INT64 BuildOperation,
const MIL_INT *FeatureLabelArrayPtr,
const MIL_INT *SubFeatureIndexArrayPtr,
MIL_INT SizeOfArray,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetAddTolerance() */
/***************************************************************************/
void MFTYPE MmetAddTolerance (MIL_ID ContextId,
MIL_INT64 ToleranceType,
MIL_INT ToleranceLabel,
MIL_DOUBLE ValueMin,
MIL_DOUBLE ValueMax,
const MIL_INT* FeatureLabelArrayPtr,
const MIL_INT* SubFeatureIndexArrayPtr,
MIL_INT SizeOfArray,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetPut() */
/***************************************************************************/
void MFTYPE MmetPutDouble(MIL_ID ContextMetId,
MIL_INT LabelOrIndex,
MIL_INT NumEdgelsOrPoints,
const MIL_INT* ChainIndexArrayPtr,
const MIL_DOUBLE* PosXArrayPtr,
const MIL_DOUBLE* PosYArrayPtr,
const MIL_DOUBLE* AngleArrayPtr,
const MIL_DOUBLE* ValueArrayPtr,
MIL_INT64 ControlFlag);
void MFTYPE MmetPutFloat(MIL_ID ContextMetId,
MIL_INT LabelOrIndex,
MIL_INT NumEdgelsOrPoints,
const MIL_INT* ChainIndexArrayPtr,
const MIL_FLOAT* PosXArrayPtr,
const MIL_FLOAT* PosYArrayPtr,
const MIL_FLOAT* AngleArrayPtr,
const MIL_FLOAT* ValueArrayPtr,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetDraw() */
/***************************************************************************/
void MFTYPE MmetDraw (MIL_ID ContextGraId,
MIL_ID ContextOrResultMetId,
MIL_ID DstImageBufOrListGraId,
MIL_INT64 Operation,
MIL_INT LabelOrIndex,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetFree() */
/***************************************************************************/
void MFTYPE MmetFree (MIL_ID MetId);
#if M_MIL_USE_UNICODE
/***************************************************************************/
/* MmetSave() Unicode */
/***************************************************************************/
void MFTYPE MmetSaveW (MIL_CONST_TEXTW_PTR FileName,
MIL_ID ContextId,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetRestore() Unicode */
/***************************************************************************/
MIL_ID MFTYPE MmetRestoreW (MIL_CONST_TEXTW_PTR FileName,
MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* ContextIdPtr);
/***************************************************************************/
/* MmetStream() Unicode */
/***************************************************************************/
void MFTYPE MmetStreamW (MIL_TEXTW_PTR MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextMetIdPtr,
MIL_INT* SizeByteVarPtr);
/***************************************************************************/
/* MmetName() Unicode */
/***************************************************************************/
void MFTYPE MmetNameW (MIL_ID ContextOrResultId,
MIL_INT64 Operation,
MIL_INT LabelOrIndex,
MIL_TEXTW_PTR String,
MIL_INT* ValuePtr,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetSave() ASCII */
/***************************************************************************/
void MFTYPE MmetSaveA (MIL_CONST_TEXTA_PTR FileName,
MIL_ID ContextId,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetRestore() ASCII */
/***************************************************************************/
MIL_ID MFTYPE MmetRestoreA (MIL_CONST_TEXTA_PTR FileName,
MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* ContextIdPtr);
/***************************************************************************/
/* MmetStream() ASCII */
/***************************************************************************/
void MFTYPE MmetStreamA (MIL_TEXTA_PTR MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextMetIdPtr,
MIL_INT* SizeByteVarPtr);
/***************************************************************************/
/* MmetName() ASCII */
/***************************************************************************/
void MFTYPE MmetNameA (MIL_ID ContextOrResultId,
MIL_INT64 Operation,
MIL_INT LabelOrIndex,
MIL_TEXTA_PTR String,
MIL_INT* ValuePtr,
MIL_INT64 ControlFlag);
#if M_MIL_UNICODE_API
#define MmetSave MmetSaveW
#define MmetRestore MmetRestoreW
#define MmetStream MmetStreamW
#define MmetName MmetNameW
#else
#define MmetSave MmetSaveA
#define MmetRestore MmetRestoreA
#define MmetStream MmetStreamA
#define MmetName MmetNameA
#endif
#else
/***************************************************************************/
/* MmetSave() */
/***************************************************************************/
void MFTYPE MmetSave (MIL_CONST_TEXT_PTR FileName,
MIL_ID ContextId,
MIL_INT64 ControlFlag);
/***************************************************************************/
/* MmetRestore() */
/***************************************************************************/
MIL_ID MFTYPE MmetRestore (MIL_CONST_TEXT_PTR FileName,
MIL_ID SysId,
MIL_INT64 ControlFlag,
MIL_ID* ContextIdPtr);
/***************************************************************************/
/* MmetStream() */
/***************************************************************************/
void MFTYPE MmetStream (MIL_TEXT_PTR MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextMetIdPtr,
MIL_INT* SizeByteVarPtr);
/***************************************************************************/
/* MmetName() */
/***************************************************************************/
void MFTYPE MmetName (MIL_ID ContextOrResultId,
MIL_INT64 Operation,
MIL_INT LabelOrIndex,
MIL_TEXT_PTR String,
MIL_INT* ValuePtr,
MIL_INT64 ControlFlag);
#endif
/* C++ directive if needed */
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
inline void MFTYPE MmetStreamCpp(MilStreamParam MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* ContextMetIdPtr,
MIL_INT* SizeByteVarPtr)
{
MmetStream(MemPtrOrFileName.m_Param, SysId, Operation, StreamType, Version, ControlFlag, ContextMetIdPtr, SizeByteVarPtr);
}
#undef MmetStream
#define MmetStream MmetStreamCpp
#if M_MIL_USE_LINUX
inline void MFTYPE MmetNameCpp(MIL_ID ContextOrResultMetId,
MIL_INT64 Operation,
MIL_INT LabelOrIndex,
MilNameParam String,
MIL_INT* ValuePtr,
MIL_INT64 ControlFlag)
{
//if operation generate an output
if((Operation == M_GET_NAME) && String.m_ConstStr)
{
#if M_MIL_USE_SAFE_TYPE
SafeTypeError(MIL_TEXT("MmetName"), MIL_TEXT("Operation not supported with const."));
#endif
}
MmetName(ContextOrResultMetId, Operation, LabelOrIndex, String.m_Param, ValuePtr, ControlFlag);
}
#if !defined(M_COMPILING_MILMETDLL)
#undef MmetName
#define MmetName MmetNameCpp
#endif
#else
inline void MFTYPE MmetName(MIL_ID ContextOrResultMetId,
MIL_INT64 Operation,
MIL_INT LabelOrIndex,
MilNameParam String,
MIL_INT* ValuePtr,
MIL_INT64 ControlFlag)
{
//if operation generate an output
if((Operation == M_GET_NAME) && String.m_ConstStr)
{
#if M_MIL_USE_SAFE_TYPE
SafeTypeError(MIL_TEXT("MmetName"), MIL_TEXT("Operation not supported with const."));
#endif
}
MmetName(ContextOrResultMetId, Operation, LabelOrIndex, String.m_Param, ValuePtr, ControlFlag);
}
#endif
#endif // __cplusplus
#if M_MIL_USE_64BIT
#ifdef __cplusplus
//////////////////////////////////////////////////////////////
// MmetControl function definition when compiling c++ files
//////////////////////////////////////////////////////////////
#if !M_MIL_USE_LINUX
inline void MmetControl (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 ControlType,
int ControlValue)
{
MmetControlInt64(MetId, LabelOrIndex, ControlType, ControlValue);
};
#endif
inline void MmetControl (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 ControlType,
MIL_INT32 ControlValue)
{
MmetControlInt64(MetId, LabelOrIndex, ControlType, ControlValue);
}
inline void MmetControl (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 ControlType,
MIL_INT64 ControlValue)
{
MmetControlInt64(MetId, LabelOrIndex, ControlType, ControlValue);
}
inline void MmetControl (MIL_ID MetId,
MIL_INT LabelOrIndex,
MIL_INT64 ControlType,
MIL_DOUBLE ControlValue)
{
MmetControlDouble(MetId, LabelOrIndex, ControlType, ControlValue);
}
//////////////////////////////////////////////////////////////
// MmetSetRegion function definition when compiling c++ files
//////////////////////////////////////////////////////////////
#if !M_MIL_USE_LINUX
inline void MmetSetRegion (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT ReferenceFrameLabelOrIndex,
MIL_INT64 Geometry,
int Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_DOUBLE Param5,
MIL_DOUBLE Param6)
{
MmetSetRegionInt64(ContextId, FeatureLabelOrIndex, ReferenceFrameLabelOrIndex, Geometry, Param1, Param2, Param3, Param4, Param5, Param6);
};
#endif
inline void MmetSetRegion (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT ReferenceFrameLabelOrIndex,
MIL_INT64 Geometry,
MIL_INT32 Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_DOUBLE Param5,
MIL_DOUBLE Param6)
{
MmetSetRegionInt64(ContextId, FeatureLabelOrIndex, ReferenceFrameLabelOrIndex, Geometry, Param1, Param2, Param3, Param4, Param5, Param6);
}
inline void MmetSetRegion (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT ReferenceFrameLabelOrIndex,
MIL_INT64 Geometry,
MIL_INT64 Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_DOUBLE Param5,
MIL_DOUBLE Param6)
{
MmetSetRegionInt64(ContextId, FeatureLabelOrIndex, ReferenceFrameLabelOrIndex, Geometry, Param1, Param2, Param3, Param4, Param5, Param6);
}
inline void MmetSetRegion (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT ReferenceFrameLabelOrIndex,
MIL_INT64 Geometry,
MIL_DOUBLE Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_DOUBLE Param5,
MIL_DOUBLE Param6)
{
MmetSetRegionDouble(ContextId, FeatureLabelOrIndex, ReferenceFrameLabelOrIndex, Geometry, Param1, Param2, Param3, Param4, Param5, Param6);
}
//////////////////////////////////////////////////////////////
// MmetSetPosition function definition when compiling c++ files
//////////////////////////////////////////////////////////////
#if !M_MIL_USE_LINUX
inline void MmetSetPosition (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT64 TransformationType,
int Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag)
{
MmetSetPositionInt64(ContextId, FeatureLabelOrIndex, TransformationType, Param1, Param2, Param3, Param4, ControlFlag);
};
#endif
inline void MmetSetPosition (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT64 TransformationType,
MIL_INT32 Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag)
{
MmetSetPositionInt64(ContextId, FeatureLabelOrIndex, TransformationType, Param1, Param2, Param3, Param4, ControlFlag);
}
inline void MmetSetPosition (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT64 TransformationType,
MIL_INT64 Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag)
{
MmetSetPositionInt64(ContextId, FeatureLabelOrIndex, TransformationType, Param1, Param2, Param3, Param4, ControlFlag);
}
inline void MmetSetPosition (MIL_ID ContextId,
MIL_INT FeatureLabelOrIndex,
MIL_INT64 TransformationType,
MIL_DOUBLE Param1,
MIL_DOUBLE Param2,
MIL_DOUBLE Param3,
MIL_DOUBLE Param4,
MIL_INT64 ControlFlag)
{
MmetSetPositionDouble(ContextId, FeatureLabelOrIndex, TransformationType, Param1, Param2, Param3, Param4, ControlFlag);
}
#else
//////////////////////////////////////////////////////////////
// For C file, call the default function, i.e. Double one
//////////////////////////////////////////////////////////////
#define MmetControl MmetControlDouble
#define MmetSetPosition MmetSetPositionDouble
#define MmetSetRegion MmetSetRegionDouble
#endif // __cplusplus
#endif // M_MIL_USE_64BIT
#ifdef __cplusplus
//////////////////////////////////////////////////////////////
// MmetPut function definition when compiling c++ files
//////////////////////////////////////////////////////////////
inline void MFTYPE MmetPut(MIL_ID ContextMetId,
MIL_INT LabelOrIndex,
MIL_INT NumEdgelsOrPoints,
const MIL_INT* ChainIndexArrayPtr,
const MIL_DOUBLE* PosXArrayPtr,
const MIL_DOUBLE* PosYArrayPtr,
const MIL_DOUBLE* AngleArrayPtr,
const MIL_DOUBLE* ValueArrayPtr,
MIL_INT64 ControlFlag)
{
MmetPutDouble(ContextMetId, LabelOrIndex, NumEdgelsOrPoints, ChainIndexArrayPtr, PosXArrayPtr, PosYArrayPtr, AngleArrayPtr, ValueArrayPtr, ControlFlag);
}
inline void MFTYPE MmetPut(MIL_ID ContextMetId,
MIL_INT LabelOrIndex,
MIL_INT NumEdgelsOrPoints,
const MIL_INT* ChainIndexArrayPtr,
const MIL_FLOAT* PosXArrayPtr,
const MIL_FLOAT* PosYArrayPtr,
const MIL_FLOAT* AngleArrayPtr,
const MIL_FLOAT* ValueArrayPtr,
MIL_INT64 ControlFlag)
{
MmetPutFloat(ContextMetId, LabelOrIndex, NumEdgelsOrPoints, ChainIndexArrayPtr, PosXArrayPtr, PosYArrayPtr, AngleArrayPtr, ValueArrayPtr, ControlFlag);
}
inline void MFTYPE MmetPut(MIL_ID ContextMetId,
MIL_INT LabelOrIndex,
MIL_INT NumEdgelsOrPoints,
const MIL_INT* ChainIndexArrayPtr,
int PosXArrayPtr,
int PosYArrayPtr,
int AngleArrayPtr,
int ValueArrayPtr,
MIL_INT64 ControlFlag)
{
#if M_MIL_USE_SAFE_TYPE
if(PosXArrayPtr || PosYArrayPtr || AngleArrayPtr || ValueArrayPtr)
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("The input arrays cannot be a non-zero integer."));
#else
UNREFERENCED_PARAMETER(PosXArrayPtr);
UNREFERENCED_PARAMETER(PosYArrayPtr);
UNREFERENCED_PARAMETER(AngleArrayPtr);
UNREFERENCED_PARAMETER(ValueArrayPtr);
#endif
MmetPutDouble(ContextMetId, LabelOrIndex, NumEdgelsOrPoints, ChainIndexArrayPtr, M_NULL, M_NULL, M_NULL, M_NULL, ControlFlag);
}
#if M_MIL_USE_NULLPTR
inline void MFTYPE MmetPut(MIL_ID ContextMetId,
MIL_INT LabelOrIndex,
MIL_INT NumEdgelsOrPoints,
const MIL_INT* ChainIndexArrayPtr,
std::nullptr_t /*PosXArrayPtr*/,
std::nullptr_t /*PosYArrayPtr*/,
std::nullptr_t /*AngleArrayPtr*/,
std::nullptr_t /*ValueArrayPtr*/,
MIL_INT64 ControlFlag)
{
MmetPutDouble(ContextMetId, LabelOrIndex, NumEdgelsOrPoints, ChainIndexArrayPtr, nullptr, nullptr, nullptr, nullptr, ControlFlag);
}
#endif
#else
#define MmetPut MmetPutDouble
#endif // __cplusplus
#if M_MIL_USE_SAFE_TYPE
//////////////////////////////////////////////////////////////
// See milos.h for explanation about these functions.
//////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------------------
// MmetGetResult
inline void MmetGetResultSafeType(MIL_ID ResultId, MIL_INT Index, MIL_INT64 ResultType, MilVoidPtr ResultArrayPtr)
{
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType)))
{
MmetGetResult(ResultId, Index, ResultType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
}
if(!MfuncPointerIsCompatible(RequiredParamType, ResultArrayPtr.Type, ResultType))
{
SafeTypeError(MIL_TEXT("MmetGetResult"));
}
return MmetGetResult(ResultId, Index, ResultType, ResultArrayPtr.Ptr);
}
inline void MFTYPE MmetGetResultUnsafe(MIL_ID ResultId, MIL_INT Index, MIL_INT64 ResultType, void *ResultArrayPtr){MmetGetResult(ResultId, Index, ResultType, ResultArrayPtr);}
// ----------------------------------------------------------
// MmetInquire
inline MIL_INT MFTYPE MmetInquireSafeType(MIL_ID ContextId, MIL_INT Index, MIL_INT64 InquireType, MilVoidPtr UserVarPtr)
{
MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64;
if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType)))
{
MmetInquire(ContextId, Index, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType);
}
if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType))
{
SafeTypeError(MIL_TEXT("MmetInquire"));
}
return MmetInquire(ContextId, Index, InquireType, UserVarPtr.Ptr);
}
inline MIL_INT MFTYPE MmetInquireUnsafe (MIL_ID ContextId, MIL_INT Index, MIL_INT64 InquireType, void* UserVarPtr){return MmetInquire(ContextId, Index, InquireType, UserVarPtr);}
#define MmetGetResult MmetGetResultSafeType
#define MmetInquire MmetInquireSafeType
#else // #if M_MIL_USE_SAFE_TYPE
#define MmetGetResultUnsafe MmetGetResult
#define MmetInquireUnsafe MmetInquire
#endif // #if M_MIL_USE_SAFE_TYPE
// ----------------------------------------------------------
// Overload for std::vector.
#if defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
template <typename UserType>
inline void MFTYPE MmetGetResult(MIL_ID ResultId, MIL_INT Index, MIL_INT64 ResultType, std::vector<UserType> &ValuePtr)
{
//! If the given MIL data type is not the same as the SrcType, change it to the correct one
//! and give a warning.
MIL_INT64 InternalTrueDataTypeForStdVector = MilTraits<UserType>::TypeFlag;
#if M_MIL_USE_SAFE_TYPE
if(M_GET_HLVLDATATYPE(ResultType) != 0)
{
SafeTypeError(MIL_TEXT("MmetGetResult"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload."));
}
#endif
ResultType = M_STRIP_HLVLDATATYPE(ResultType) + InternalTrueDataTypeForStdVector;
MIL_INT InternalNumberOfElementsForStdVector = 0;
MmetGetResult(ResultId, Index, M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector);
ValuePtr.resize(InternalNumberOfElementsForStdVector);
if(InternalNumberOfElementsForStdVector > 0)
{
MmetGetResult(ResultId, Index, ResultType, &ValuePtr[0]);
}
}
// ----------------------------------------------------------
// Overloads for std::vector in MmetAddFeature.
inline void MFTYPE MmetAddFeature(MIL_ID ContextId,
MIL_INT64 FeatureType,
MIL_INT64 Geometry,
MIL_INT FeatureLabel,
MIL_INT64 BuildOperation,
const std::vector<MIL_INT>& FeatureLabelArrayPtr,
CMilArrayParamIn SubFeatureIndexArrayPtr,
MIL_INT SizeOfArray,
MIL_INT64 ControlFlag)
{
#if M_MIL_USE_SAFE_TYPE
if(!SubFeatureIndexArrayPtr.IsValidParam())
{
SafeTypeError(MIL_TEXT("MmetAddFeature"), MIL_TEXT("SubFeatureIndexArrayPtr cannot be an non zero integer!"));
}
if(((MIL_INT)FeatureLabelArrayPtr.size() != SubFeatureIndexArrayPtr.Size<MIL_INT>() && !SubFeatureIndexArrayPtr.IsNullPtr()))
{
SafeTypeError(MIL_TEXT("MmetAddFeature"), MIL_TEXT("The input vectors must have the same size!"));
}
if(FeatureLabelArrayPtr.empty())
{
SafeTypeError(MIL_TEXT("MmetAddFeature"), MIL_TEXT("The input vectors cannot be empty."));
}
if(SizeOfArray <= 0)
{
SafeTypeError(MIL_TEXT("MmetAddFeature"), MIL_TEXT("SizeOfArray parameter must be greater than zero."));
}
if(!SubFeatureIndexArrayPtr.IsNullPtr() && SubFeatureIndexArrayPtr.GetMilDataType() != MilTraits<MIL_INT>::TypeFlag)
{
SafeTypeError(MIL_TEXT("MmetAddFeature"), MIL_TEXT("The data type of SubFeatureIndexArrayPtr must be MIL_INT."));
}
if(SizeOfArray > (MIL_INT)FeatureLabelArrayPtr.size() && SizeOfArray != M_DEFAULT)
{
SafeTypeError(MIL_TEXT("MmetAddFeature"), MIL_TEXT("SizeOfArray parameter must be smaller or equal (M_DEFAULT) to the size of input vectors."));
}
#endif
if(SizeOfArray == M_DEFAULT || SizeOfArray > (MIL_INT)FeatureLabelArrayPtr.size())
{
SizeOfArray = (MIL_INT)FeatureLabelArrayPtr.size();
}
MmetAddFeature(ContextId,
FeatureType,
Geometry,
FeatureLabel,
BuildOperation,
&FeatureLabelArrayPtr[0],
SubFeatureIndexArrayPtr.GetData<MIL_INT>(),
SizeOfArray,
ControlFlag);
}
// ----------------------------------------------------------
// Overloads for std::vector in MmetAddTolerance.
inline void MFTYPE MmetAddTolerance(MIL_ID ContextId,
MIL_INT64 ToleranceType,
MIL_INT ToleranceLabel,
MIL_DOUBLE ValueMin,
MIL_DOUBLE ValueMax,
const std::vector<MIL_INT>& FeatureLabelArrayPtr,
CMilArrayParamIn SubFeatureIndexArrayPtr,
MIL_INT SizeOfArray,
MIL_INT64 ControlFlag)
{
#if M_MIL_USE_SAFE_TYPE
if(!SubFeatureIndexArrayPtr.IsValidParam())
{
SafeTypeError(MIL_TEXT("MmetAddTolerance"), MIL_TEXT("SubFeatureIndexArrayPtr cannot be an non zero integer!"));
}
if(((MIL_INT)FeatureLabelArrayPtr.size() != SubFeatureIndexArrayPtr.Size<MIL_INT>() && !SubFeatureIndexArrayPtr.IsNullPtr()))
{
SafeTypeError(MIL_TEXT("MmetAddTolerance"), MIL_TEXT("The input vectors must have the same size!"));
}
if(FeatureLabelArrayPtr.empty())
{
SafeTypeError(MIL_TEXT("MmetAddTolerance"), MIL_TEXT("The input vectors cannot be empty."));
}
if(SizeOfArray <= 0)
{
SafeTypeError(MIL_TEXT("MmetAddTolerance"), MIL_TEXT("SizeOfArray parameter must be greater than zero."));
}
if(!SubFeatureIndexArrayPtr.IsNullPtr() && SubFeatureIndexArrayPtr.GetMilDataType() != MilTraits<MIL_INT>::TypeFlag)
{
SafeTypeError(MIL_TEXT("MmetAddTolerance"), MIL_TEXT("The data type of SubFeatureIndexArrayPtr must be MIL_INT."));
}
if(SizeOfArray > (MIL_INT)FeatureLabelArrayPtr.size() && SizeOfArray != M_DEFAULT)
{
SafeTypeError(MIL_TEXT("MmetAddTolerance"), MIL_TEXT("SizeOfArray parameter must be smaller or equal (M_DEFAULT) to the size of input vectors."));
}
#endif
if(SizeOfArray == M_DEFAULT || SizeOfArray > (MIL_INT)FeatureLabelArrayPtr.size())
{
SizeOfArray = (MIL_INT)FeatureLabelArrayPtr.size();
}
MmetAddTolerance(ContextId,
ToleranceType,
ToleranceLabel,
ValueMin,
ValueMax,
&FeatureLabelArrayPtr[0],
SubFeatureIndexArrayPtr.GetData<MIL_INT>(),
SizeOfArray,
ControlFlag);
}
// ----------------------------------------------------------
// Overloads for std::vector in MmetPut.
inline void MFTYPE MmetPut(MIL_ID ContextMetId,
MIL_INT LabelOrIndex,
MIL_INT NumEdgelsOrPoints,
CMilArrayParamIn ChainIndexArrayPtr,
CMilArrayParamIn PosXArrayPtr,
CMilArrayParamIn PosYArrayPtr,
CMilArrayParamIn AngleArrayPtr,
CMilArrayParamIn ValueArrayPtr,
MIL_INT64 ControlFlag)
{
MIL_INT64 DataType = !PosXArrayPtr.IsNullPtr() ? PosXArrayPtr.GetMilDataType() :
!PosYArrayPtr.IsNullPtr() ? PosYArrayPtr.GetMilDataType() :
!AngleArrayPtr.IsNullPtr() ? AngleArrayPtr.GetMilDataType() :
!ValueArrayPtr.IsNullPtr() ? ValueArrayPtr.GetMilDataType() : M_NULL;
#if M_MIL_USE_SAFE_TYPE
if(!ChainIndexArrayPtr.IsValidParam() || !PosXArrayPtr.IsValidParam() || !PosYArrayPtr.IsValidParam() || !AngleArrayPtr.IsValidParam() || !ValueArrayPtr.IsValidParam())
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("The input arrays cannot be an non zero integer."));
}
if(ChainIndexArrayPtr.IsNullPtr() && PosXArrayPtr.IsNullPtr() && PosYArrayPtr.IsNullPtr() && AngleArrayPtr.IsNullPtr() && ValueArrayPtr.IsNullPtr())
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("The input arrays cannot all be null."));
}
if(!ChainIndexArrayPtr.IsNullPtr() && ChainIndexArrayPtr.GetMilDataType() != MilTraits<MIL_INT>::TypeFlag)
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("The data type of ChainIndexArrayPtr must be MIL_INT."));
}
if(DataType != M_NULL && DataType != MilTraits<MIL_FLOAT>::TypeFlag && DataType != MilTraits<MIL_DOUBLE>::TypeFlag)
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("The data type of PosXArrayPtr, PosYArrayPtr, AngleArrayPtr, and ValueArrayPtr must be either MIL_FLOAT or MIL_DOUBLE."));
}
if((!PosXArrayPtr.IsNullPtr() && PosXArrayPtr.GetMilDataType() != DataType) ||
(!PosYArrayPtr.IsNullPtr() && PosYArrayPtr.GetMilDataType() != DataType) ||
(!AngleArrayPtr.IsNullPtr() && AngleArrayPtr.GetMilDataType() != DataType) ||
(!ValueArrayPtr.IsNullPtr() && ValueArrayPtr.GetMilDataType() != DataType))
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("PosXArrayPtr, PosYArrayPtr, AngleArrayPtr, and ValueArrayPtr must all have the same data type."));
}
#endif
MIL_INT NumEdgelsOrPointsMax = !ChainIndexArrayPtr.IsNullPtr() ? ChainIndexArrayPtr.Size<MIL_INT>() :
!PosXArrayPtr.IsNullPtr() ? (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? PosXArrayPtr.Size<MIL_FLOAT>() : PosXArrayPtr.Size<MIL_DOUBLE>()) :
!PosYArrayPtr.IsNullPtr() ? (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? PosYArrayPtr.Size<MIL_FLOAT>() : PosYArrayPtr.Size<MIL_DOUBLE>()) :
!AngleArrayPtr.IsNullPtr() ? (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? AngleArrayPtr.Size<MIL_FLOAT>() : AngleArrayPtr.Size<MIL_DOUBLE>()) :
!ValueArrayPtr.IsNullPtr() ? (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? ValueArrayPtr.Size<MIL_FLOAT>() : ValueArrayPtr.Size<MIL_DOUBLE>()) : M_NULL;
#if M_MIL_USE_SAFE_TYPE
if(!ChainIndexArrayPtr.IsNullPtr() || !PosXArrayPtr.IsNullPtr() || !PosYArrayPtr.IsNullPtr() || !AngleArrayPtr.IsNullPtr() || !ValueArrayPtr.IsNullPtr())
{
if(NumEdgelsOrPointsMax == M_NULL)
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("The input vectors cannot be empty."));
}
if((!ChainIndexArrayPtr.IsNullPtr() && ChainIndexArrayPtr.Size<MIL_INT>() != NumEdgelsOrPointsMax) ||
(!PosXArrayPtr.IsNullPtr() && (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? PosXArrayPtr.Size<MIL_FLOAT>() : PosXArrayPtr.Size<MIL_DOUBLE>()) != NumEdgelsOrPointsMax) ||
(!PosYArrayPtr.IsNullPtr() && (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? PosYArrayPtr.Size<MIL_FLOAT>() : PosYArrayPtr.Size<MIL_DOUBLE>()) != NumEdgelsOrPointsMax) ||
(!AngleArrayPtr.IsNullPtr() && (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? AngleArrayPtr.Size<MIL_FLOAT>() : AngleArrayPtr.Size<MIL_DOUBLE>()) != NumEdgelsOrPointsMax) ||
(!ValueArrayPtr.IsNullPtr() && (DataType == MilTraits<MIL_FLOAT>::TypeFlag ? ValueArrayPtr.Size<MIL_FLOAT>() : ValueArrayPtr.Size<MIL_DOUBLE>()) != NumEdgelsOrPointsMax))
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("The input vectors must have the same size."));
}
if(NumEdgelsOrPoints <= 0)
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("NumEdgelsOrPoints parameter must be greater than zero."));
}
if(NumEdgelsOrPoints > NumEdgelsOrPointsMax && NumEdgelsOrPoints != M_DEFAULT)
{
SafeTypeError(MIL_TEXT("MmetPut"), MIL_TEXT("NumEdgelsOrPoints parameter must be smaller or equal (M_DEFAULT) to the size of input vectors."));
}
}
#endif
if(NumEdgelsOrPoints == M_DEFAULT || NumEdgelsOrPoints > NumEdgelsOrPointsMax)
{
NumEdgelsOrPoints = NumEdgelsOrPointsMax;
}
if(DataType == MilTraits<MIL_FLOAT>::TypeFlag)
{
MmetPut(ContextMetId,
LabelOrIndex,
NumEdgelsOrPoints,
ChainIndexArrayPtr.GetData<MIL_INT>(),
PosXArrayPtr.GetData<MIL_FLOAT>(),
PosYArrayPtr.GetData<MIL_FLOAT>(),
AngleArrayPtr.GetData<MIL_FLOAT>(),
ValueArrayPtr.GetData<MIL_FLOAT>(),
ControlFlag);
}
else
{
MmetPut(ContextMetId,
LabelOrIndex,
NumEdgelsOrPoints,
ChainIndexArrayPtr.GetData<MIL_INT>(),
PosXArrayPtr.GetData<MIL_DOUBLE>(),
PosYArrayPtr.GetData<MIL_DOUBLE>(),
AngleArrayPtr.GetData<MIL_DOUBLE>(),
ValueArrayPtr.GetData<MIL_DOUBLE>(),
ControlFlag);
}
}
// ----------------------------------------------------------
// Overloads for std::vector in MxxxStream.
inline void MFTYPE MmetStream(std::vector<MIL_UINT8> &MemPtrOrFileName,
MIL_ID SysId,
MIL_INT64 Operation,
MIL_INT64 StreamType,
MIL_DOUBLE Version,
MIL_INT64 ControlFlag,
MIL_ID* McontextIdPtr,
MIL_INT* SizeByteVarPtr)
{
MxxxStreamForStdVector(MemPtrOrFileName,
SysId,
Operation,
StreamType,
Version,
ControlFlag,
McontextIdPtr,
SizeByteVarPtr,
MmetStream);
}
#endif // defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR
#if M_MIL_USE_STRING
/***************************************************************************/
/* METROLOGY MODULE */
/***************************************************************************/
#if M_MIL_USE_UNICODE
#if M_MIL_UNICODE_API
inline void MFTYPE MmetNameW(MIL_ID ContextOrResultId, MIL_INT64 Operation, MIL_INT LabelOrIndex, MIL_STRING &String, MIL_INT* ValuePtr, MIL_INT64 ControlFlag)
{
//if operation generate an output
if(Operation == M_GET_NAME)
{
MIL_INT InternalStringSize = 0;
MmetNameW(ContextOrResultId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag);
if(InternalStringSize > 0)
{
String.assign(InternalStringSize, MIL_TEXT('\0'));
MmetNameW(ContextOrResultId, Operation, LabelOrIndex, &String[0], ValuePtr, ControlFlag);
String.resize(InternalStringSize - 1);
}
}
else
{
MmetNameW(ContextOrResultId, Operation, LabelOrIndex, (MIL_TEXT_PTR)String.c_str(), ValuePtr, ControlFlag);
}
}
inline void MFTYPE MmetSaveW(const MIL_STRING& FileName, MIL_ID ContextId, MIL_INT64 ControlFlag)
{
return MmetSaveW(FileName.c_str(), ContextId, ControlFlag);
}
inline MIL_ID MFTYPE MmetRestoreW(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextIdPtr)
{
return MmetRestoreW(FileName.c_str(), SysId, ControlFlag, ContextIdPtr);
}
#else
inline void MFTYPE MmetNameA(MIL_ID ContextOrResultId, MIL_INT64 Operation, MIL_INT LabelOrIndex, MIL_STRING &String, MIL_INT* ValuePtr, MIL_INT64 ControlFlag)
{
//if operation generate an output
if(Operation == M_GET_NAME)
{
MIL_INT InternalStringSize = 0;
MmetNameA(ContextOrResultId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag);
if(InternalStringSize > 0)
{
String.assign(InternalStringSize, MIL_TEXT('\0'));
MmetNameA(ContextOrResultId, Operation, LabelOrIndex, &String[0], ValuePtr, ControlFlag);
String.resize(InternalStringSize - 1);
}
}
else
{
MmetNameA(ContextOrResultId, Operation, LabelOrIndex, (MIL_TEXT_PTR)String.c_str(), ValuePtr, ControlFlag);
}
}
inline void MFTYPE MmetSaveA(const MIL_STRING& FileName, MIL_ID ContextId, MIL_INT64 ControlFlag)
{
return MmetSaveA(FileName.c_str(), ContextId, ControlFlag);
}
inline MIL_ID MFTYPE MmetRestoreA(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextIdPtr)
{
return MmetRestoreA(FileName.c_str(), SysId, ControlFlag, ContextIdPtr);
}
#endif /* M_MIL_UNICODE_API */
#else
inline void MFTYPE MmetName(MIL_ID ContextOrResultId, MIL_INT64 Operation, MIL_INT LabelOrIndex, MIL_STRING &String, MIL_INT* ValuePtr, MIL_INT64 ControlFlag)
{
//if operation generate an output
if(Operation == M_GET_NAME)
{
MIL_INT InternalStringSize = 0;
MmetName(ContextOrResultId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag);
if(InternalStringSize > 0)
{
String.assign(InternalStringSize, MIL_TEXT('\0'));
MmetName(ContextOrResultId, Operation, LabelOrIndex, &String[0], ValuePtr, ControlFlag);
String.resize(InternalStringSize - 1);
}
}
else
{
MmetName(ContextOrResultId, Operation, LabelOrIndex, (MIL_TEXT_PTR)String.c_str(), ValuePtr, ControlFlag);
}
}
inline void MFTYPE MmetSave(const MIL_STRING& FileName, MIL_ID ContextId, MIL_INT64 ControlFlag)
{
return MmetSave(FileName.c_str(), ContextId, ControlFlag);
}
inline MIL_ID MFTYPE MmetRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextIdPtr)
{
return MmetRestore(FileName.c_str(), SysId, ControlFlag, ContextIdPtr);
}
#endif /* M_MIL_USE_UNICODE */
#endif /* M_MIL_USE_STRING*/
////////////////////////////////////////////////////////////////////////////////
// MIL_UNIQUE_ID support
#if M_MIL_USE_MIL_UNIQUE_ID
#if M_MIL_USE_SAFE_TYPE
template <> inline bool MilIsCorrectObjectType<&MmetFree>(MIL_INT64 ObjectType)
{
return (ObjectType & ~M_USER_DEFINE_LOW_ATTRIBUTE) == M_MET_OBJECT;
}
#endif
typedef MIL_UNIQUE_ID<&MmetFree> MIL_UNIQUE_MET_ID;
#if M_MIL_USE_MOVE_SEMANTICS
inline MIL_UNIQUE_MET_ID MmetAlloc(MIL_ID SysId, MIL_INT64 Type, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_MET_ID(MmetAlloc(SysId, Type, M_NULL));
}
inline MIL_UNIQUE_MET_ID MmetAllocResult(MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_MET_ID(MmetAllocResult(SysId, ControlFlag, M_NULL));
}
inline MIL_UNIQUE_MET_ID MmetRestore(MIL_CONST_TEXT_PTR FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_MET_ID(MmetRestore(FileName, SysId, ControlFlag, M_NULL));
}
#if M_MIL_USE_STRING
inline MIL_UNIQUE_MET_ID MmetRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG)
{
return MIL_UNIQUE_MET_ID(MmetRestore(FileName, SysId, ControlFlag, M_NULL));
}
#endif // M_MIL_USE_STRING
template <MilFreeFuncType FreeFunc> inline void MmetFree(const MIL_UNIQUE_ID<FreeFunc>&) = delete;
inline void MmetStream(MilStreamParam MemPtrOrFileName,
MIL_ID SysId ,
MIL_INT64 Operation ,
MIL_INT64 StreamType ,
MIL_DOUBLE Version ,
MIL_INT64 ControlFlag ,
MIL_UNIQUE_MET_ID* ContextMetIdPtr ,
MIL_INT* SizeByteVarPtr )
{
MxxxStreamForMilUniqueId(MemPtrOrFileName, SysId, Operation, StreamType, Version, ControlFlag, ContextMetIdPtr, SizeByteVarPtr, MmetStream);
}
#endif // M_MIL_USE_MOVE_SEMANTICS
#endif // M_MIL_USE_MIL_UNIQUE_ID
// End of MIL_UNIQUE_ID support
////////////////////////////////////////////////////////////////////////////////
#endif // !M_MIL_LITE
#endif // __MILMETROLFINDER_H__