/*
 * Go2PartHoleRadius.h
 * 
 * Gocator system communication library
 * Copyright (C) 2013 by LMI Technologies Inc.
 * 
 * Licensed under The MIT License.
 * Redistributions of files must retain the above copyright notice.
 */

#ifndef LMITECH_Z_GO2PARTHOLERADIUS_H_INCLUDED
#define LMITECH_Z_GO2PARTHOLERADIUS_H_INCLUDED

#include <Go2Measurement.h>
#include <Go2PartTypes.h>
#include <Go2ApiBegin.h>

/*
 * Go2PartHoleRadius Class 
 */

typedef Go2PartMeasurement Go2PartHoleRadius;           // Represents part Go2PartHoleRadius measurement configuration.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetId(Go2PartHoleRadius measurement, Go2UInt32 id); //
//
//  Description:
//      Sets the unique measurement identifier for the measurement.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      id - Unique measurement identifier. 
//  Returns:
//      Operation status. 

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_Id(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the unique measurement identifier for the measurement.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Unique measurement identifier

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetName(Go2PartHoleRadius measurement, const Go2Char* name); //
//
//  Description:
//      Sets the descriptive name for the measurement.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      name - Descriptive name. 
//  Returns:
//      Operation status. 
 
GO2_EXPORT(Go2Status) Go2PartHoleRadius_Name(Go2PartHoleRadius measurement, Go2Char* name, Go2UInt32 capacity); //
//
//  Description:
//      Gets the descriptive name for the measurement.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      name - Receives descriptive name. 
//      capacity - Capacity of name buffer. 
//  Returns:
//      Operation status.  

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetDecisionMin(Go2PartHoleRadius measurement, Go2Double min); //
//
//  Description:
//      Sets the decision threshold minimum value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      min - Decision threshold minimum value. 
//  Returns:
//      Operation status.
//  Remarks: 
//      A decision is said to pass if the measurement value is between the minimum and maximum thresholds.
 
GO2_EXPORT(Go2Double) Go2PartHoleRadius_DecisionMin(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the decision threshold minimum value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Decision threshold minimum.
//  Remarks: 
//      A decision is said to pass if the measurement value is between the minimum and maximum thresholds.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetDecisionMax(Go2PartHoleRadius measurement, Go2Double max); //
//
//  Description:
//      Sets the decision threshold maximum value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      max - Decision threshold maximum value. 
//  Returns:
//      Operation status.
//  Remarks: 
//      A decision is said to pass if the measurement value is between the minimum and maximum thresholds.
 
GO2_EXPORT(Go2Double) Go2PartHoleRadius_DecisionMax(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the decision threshold maximum value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Decision threshold maximum.
//  Remarks: 
//      A decision is said to pass if the measurement value is between the minimum and maximum thresholds.
 
GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnableHold(Go2PartHoleRadius measurement, Go2Bool enable); //
//
//  Description:
//      Enables measurement value hold.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//      enable - GO2_TRUE to enable, or GO2_FALSE to disable.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Bool) Go2PartHoleRadius_HoldEnabled(Go2PartHoleRadius measurement); //
//
//  Description:
//      Reports whether value hold is currently enabled.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      GO2_TRUE if enabled, or GO2_FALSE if disabled.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnableSmoothing(Go2PartHoleRadius measurement, Go2Bool enable); //
//
//  Description:
//      Enables measurement value smoothing.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//      enable - GO2_TRUE to enable, or GO2_FALSE to disable.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Bool) Go2PartHoleRadius_SmoothingEnabled(Go2PartHoleRadius measurement); //
//
//  Description:
//      Reports whether value smoothing is currently enabled.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      GO2_TRUE if enabled, or GO2_FALSE if disabled.

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_SmoothingWindowMin(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the minimum smoothing window value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Minimum smoothing window value.

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_SmoothingWindowMax(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the maximum smoothing window value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Maximum smoothing window value.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetSmoothingWindow(Go2PartHoleRadius measurement, Go2UInt32 window); //
//
//  Description:
//      Sets the smoothing window value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      window - Smoothing window value.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_SmoothingWindow(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the smoothing window value.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Smoothing window value.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnableLink(Go2PartHoleRadius measurement, Go2Bool enable); //
//
//  Description:
//      Enables measurement linking.  When enabled, another measurement of the same base type can be 
//      linked, provided that it is a different measurement(e.g. A Go2PartHoleRadius and Go2PartHoleX 
//      measurement can be linked, but you can not link two Go2PartHoleRadius measurements).
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      enable - GO2_TRUE to enable, or GO2_FALSE to disable.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Bool) Go2PartHoleRadius_LinkEnabled(Go2PartHoleRadius measurement); //
//
//  Description:
//      Reports whether measurement linking is enabled.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      GO2_TRUE if system operates at full frame rate; GO2_FALSE otherwise.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetLink(Go2PartHoleRadius measurement, Go2UInt32 link); //
//
//  Description:
//      Sets the measurement id to which this measurement should link. Linked measurements must:
//          -link to a valid measurement id
//          -not link to themselves
//          -not link to a measurement that is already linked
//          -link only to measurements of the same basic type (eg, all PartStud_? measurements)
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      link - Measurement id to link to.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_Link(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the measurement id of the linked measurement.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Measurement id of the linked measurement.

GO2_EXPORT(Go2Bool) Go2PartHoleRadius_RegionEnabled(Go2PartHoleRadius measurement);   //
//
//  Description:
//      Returns the current state of the optional region.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//  Returns:
//      GO2_TRUE if the optional region is enabled and GO2_FALSE if it is disabled.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnableRegion(Go2PartHoleRadius measurement, Go2Bool enable);   //
//
//  Description:
//      Enables or disables the optional region.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//      enable - Use GO2_TRUE to enable the optional region and GO2_FALSE to disable it.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2PartRegion3d) Go2PartHoleRadius_Region(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the region object which defines the measurement's ROI. 
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Region object.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnableRefRegions(Go2PartHoleRadius measurement, Go2Bool enable); //
//
//  Description:
//      Enables or disables the optional reference region.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//      enable - Use GO2_TRUE to enable the optional reference region and GO2_FALSE to disable it.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Bool) Go2PartHoleRadius_RefRegionsEnabled(Go2PartHoleRadius measurement); //
//
//  Description:
//      Returns the current state of the optional reference region.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//  Returns:
//      GO2_TRUE if the optional reference region is enabled and GO2_FALSE if it is disabled.

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_RefRegionCount(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the number of reference regions. 
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Number of regions.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetRefRegionCount(Go2PartHoleRadius measurement, Go2UInt32 count); //
//
//  Description:
//      Sets the number of reference regions to use. 
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      count - Number of regions.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2PartRegion2d) Go2PartHoleRadius_RefRegionAt(Go2PartHoleRadius measurement, Go2UInt32 index); //
//
//  Description:
//      Gets the reference region object at the specified index. 
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      index - Index of the desired area.
//  Returns:
//      Region object.

GO2_EXPORT(Go2Double) Go2PartHoleRadius_NominalRadius(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the nominal radius of the hole to measure.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Nominal radius of the hole to measure (mm).

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetNominalRadius(Go2PartHoleRadius measurement, Go2Double radius); //
//
//  Description:
//      Sets the nominal radius of the hole to measure.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      radius - Nominal radius of the hole to measure (mm).
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Double) Go2PartHoleRadius_RadiusTolerance(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the tolerance between the nominal radius and the detected hole size.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Radius tolerance (mm).

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetRadiusTolerance(Go2PartHoleRadius measurement, Go2Double tolerance); //
//
//  Description:
//      Sets the tolerance between the nominal radius and the detected hole size.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      tolerance - Radius tolerance (mm).
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Bool) Go2PartHoleRadius_AutoRefRegionEnabled(Go2PartHoleRadius measurement); //
//
//  Description:
//      Reports whether auto reference regions are enabled.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      A boolean representing whether the auto reference region is enabled (1 - true, 0 - false).

GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnableAutoRefRegion(Go2PartHoleRadius measurement, Go2Bool enable); //
//
//  Description:
//      Enables or disables auto reference regions.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      enable - GO2_TRUE enables auto reference regions, while GO2_FALSE disables them
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Bool) Go2PartHoleRadius_AutoTiltCorrectionEnabled(Go2PartHoleRadius measurement); //
//
//  Description:
//      Reports whether auto tilt correction is enabled.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      A boolean representing whether the auto reference region is enabled (1 - true, 0 - false).

GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnableAutoTiltCorrection(Go2PartHoleRadius measurement, Go2Bool enable); //
//
//  Description:
//      Enables or disables auto tilt correction.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      enable - GO2_TRUE enables auto reference regions, while GO2_FALSE disables them
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Double) Go2PartHoleRadius_TiltXAngle(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the X axis tilt angle.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Tilt angle along X axis (degrees).

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetTiltXAngle(Go2PartHoleRadius measurement, Go2Double tiltXAngle); //
//
//  Description:
//      Sets the X axis tilt angle.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      tiltXAngle - tilt angle along X axis(degrees).  If it exceeds an internal reasonable range, it will be clamped to the boundary value of said range.  If it exceeds an internal reasonable range, it will be clamped to the boundary value of said range.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Double) Go2PartHoleRadius_TiltYAngle(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the Y axis tilt angle.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//  Returns:
//      Tilt angle along Y axis (degrees).

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetTiltYAngle(Go2PartHoleRadius measurement, Go2Double tiltYAngle); //
//
//  Description:
//      Sets the Y axis tilt angle.
//  Arguments:
//      measurement - Go2PartHoleRadius object. 
//      tiltYAngle - tilt angle along Y axis(degrees).  If it exceeds an internal reasonable range, it will be clamped to the boundary value of said range.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Double) Go2PartHoleRadius_Offset(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the measurement value offset.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//  Returns:
//      Measurement value offset.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetOffset(Go2PartHoleRadius measurement, Go2Double offset); //
//
//  Description:
//      Sets the measurement value offset.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//      offset - Offset factor.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Double) Go2PartHoleRadius_Scale(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the measurement value scale factor.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//  Returns:
//      Measurement value scale factor.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_SetScale(Go2PartHoleRadius measurement, Go2Double scale); //
//
//  Description:
//      Sets the measurement value scale factor.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//      scale - Scale factor.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Bool) Go2PartHoleRadius_PartialDetectionEnabled(Go2PartHoleRadius measurement); // //
//
//  Description:
//      Gets the current partial hole detection value.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//  Returns:
//      GO2_TRUE if partial hole detection is enabled, GO2_FALSE if it is not.

GO2_EXPORT(Go2Status) Go2PartHoleRadius_EnablePartialDetection(Go2PartHoleRadius measurement, Go2Bool enabled); // //
//
//  Description:
//      Enables or disables partial hole detection.
//  Arguments:
//      measurement - Go2PartHoleRadius object.
//      enable - A boolean representing whether or not partial hole detection is enabled.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_LinkOptionAt(Go2PartHoleRadius measurement, Go2UInt32 index); //
//
//  Description:
//      Gets the link-able measurement id at the specified index. 
//    Arguments:
//      measurement - Go2PartMeasurement object.
//  Returns:
//      The link-able measurement ID at the specified index.

GO2_EXPORT(Go2UInt32) Go2PartHoleRadius_LinkOptionCount(Go2PartHoleRadius measurement); //
//
//  Description:
//      Gets the number of link-able measurement IDs.
//  Arguments:
//      measurement - Go2PartMeasurement object.
//  Returns:
//      The link-able measurement count.

#include <Go2ApiEnd.h>
#endif
