/*
 * Go2ProfileStripWidth.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_GO2PROFILESTRIPWIDTH_H_INCLUDED
#define LMITECH_Z_GO2PROFILESTRIPWIDTH_H_INCLUDED

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

/*
 * Go2ProfileStripWidth Class 
 */

typedef Go2Measurement Go2ProfileStripWidth;           // Represents profile strip width measurement configuration.

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

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

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

GO2_EXPORT(Go2UInt32) Go2ProfileStripWidth_SourceOptionCount(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the number of profile source options for the measurement.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      Count of source options.

GO2_EXPORT(Go2ProfileSource) Go2ProfileStripWidth_SourceOptionAt(Go2ProfileStripWidth measurement, Go2UInt32 index); //
//
//  Description:
//      Gets the profile source option at the specified index.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      index - Selected profile source option.
//  Returns:
//      Profile source option. 

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetSource(Go2ProfileStripWidth measurement, Go2ProfileSource source); //
//
//  Description:
//      Sets the source for profile data used in this measurement.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      source - Profile source.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2ProfileSource) Go2ProfileStripWidth_Source(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the source for profile data used in this measurement.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns: 
//      Profile source. 
 
GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetDecisionMin(Go2ProfileStripWidth measurement, Go2Double min); //
//
//  Description:
//      Sets the decision threshold minimum value.
//  Arguments:
//      measurement - Go2ProfileStripWidth 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) Go2ProfileStripWidth_DecisionMin(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the decision threshold minimum value.
//  Arguments:
//      measurement - Go2ProfileStripWidth 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) Go2ProfileStripWidth_SetDecisionMax(Go2ProfileStripWidth measurement, Go2Double max); //
//
//  Description:
//      Sets the decision threshold maximum value.
//  Arguments:
//      measurement - Go2ProfileStripWidth 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) Go2ProfileStripWidth_DecisionMax(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the decision threshold maximum value.
//  Arguments:
//      measurement - Go2ProfileStripWidth 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) Go2ProfileStripWidth_EnableHold(Go2ProfileStripWidth measurement, Go2Bool enable); //
//
//  Description:
//      Enables measurement value hold.
//  Arguments:
//      measurement - Go2ProfileStripWidth object.
//      enable - GO2_TRUE to enable, or GO2_FALSE to disable.
//  Returns:
//      Operation status.

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

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

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

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

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

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

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

GO2_EXPORT(Go2ProfileArea) Go2ProfileStripWidth_Area(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the region of interest.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      Area object. 

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetBaseType(Go2ProfileStripWidth measurement, Go2ProfileStripBaseType baseType); //
//
//  Description:
//      Sets the base type of the strip to search for.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      shape - The base type.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2ProfileStripBaseType) Go2ProfileStripWidth_BaseType(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the base type of the strip to search for.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The base type.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_EnableLeftEdgeType(Go2ProfileStripWidth measurement, Go2ProfileStripEdgeType type, Go2Bool enable); //
//
//  Description:
//      Enables or disables detection of the specified left edge type.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      type - The edge type to enable or disable.
//      enable - GO2_TRUE to enable GO2_FALSE to disable.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Bool) Go2ProfileStripWidth_LeftEdgeTypeEnabled(Go2ProfileStripWidth measurement, Go2ProfileStripEdgeType type); //
//
//  Description:
//      Determines whether the specified left edge type is enabled for detection.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      type - The edge type.
//  Returns:
//      GO2_TRUE if enabled GO2_FALSE if disabled.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_EnableRightEdgeType(Go2ProfileStripWidth measurement, Go2ProfileStripEdgeType type, Go2Bool enable); //
//
//  Description:
//      Enables or disables detection of the specified right edge type.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      type - The edge type to enable or disable.
//      enable - GO2_TRUE to enable GO2_FALSE to disable.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Bool) Go2ProfileStripWidth_RightEdgeTypeEnabled(Go2ProfileStripWidth measurement, Go2ProfileStripEdgeType type); //
//
//  Description:
//      Determines whether the specified right edge type is enabled for detection.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      type - The edge type.
//  Returns:
//      GO2_TRUE if enabled GO2_FALSE if disabled.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_EnableTilt(Go2ProfileStripWidth measurement, Go2Bool enable); //
//
//  Description:
//      Enables or disables tilt correction.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      enable - GO2_TRUE to enable GO2_FALSE to disable.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Bool) Go2ProfileStripWidth_TiltEnabled(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Determines whether tilt correction is enabled.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      GO2_TRUE if enabled GO2_FALSE if disabled.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetSelectType(Go2ProfileStripWidth measurement, Go2ProfileStripSelectType type); //
//
//  Description:
//      Sets the select type.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      type - The select type.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2ProfileStripSelectType) Go2ProfileStripWidth_SelectType(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the select type.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The select type.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetSelectN(Go2ProfileStripWidth measurement, Go2UInt32 n); //
//
//  Description:
//      Sets the N-th strip to select when selectType is 
//      GO2_PROFILE_STRIP_SELECT_LEFT or GO2_PROFILE_STRIP_SELECT_RIGHT.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      n - The N-th strip to select.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2UInt32) Go2ProfileStripWidth_SelectN(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the N-th strip to select when selectType is
//      GO2_PROFILE_STRIP_SELECT_LEFT or GO2_PROFILE_STRIP_SELECT_RIGHT.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The N-th strip to select.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetEdgeSupportWidth(Go2ProfileStripWidth measurement, Go2Double width); //
//
//  Description:
//      Sets the width of the search window to use when detecting edges.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      width - The edge support width.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Double) Go2ProfileStripWidth_EdgeSupportWidth(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the width of the search window to use when detecting edges.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The edge support width.

GO2_EXPORT(Go2Double) Go2ProfileStripWidth_EdgeTransitionWidthMax(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the maximum value allowable for the edge transition.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The max edge transition width.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetEdgeTransitionWidth(Go2ProfileStripWidth measurement, Go2Double width); //
//
//  Description:
//      Sets the width of the expected edge transition.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      width - The edge transition width.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Double) Go2ProfileStripWidth_EdgeTransitionWidth(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the width of the expected edge transition.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The edge transition width.

GO2_EXPORT(Go2Double) Go2ProfileStripWidth_VoidMaxLimitMax(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the limit for the VoidMax property.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The maximum VoidMax.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetVoidMax(Go2ProfileStripWidth measurement, Go2Double width); //
//
//  Description:
//      Sets the maximum width of the void that will be ignored.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      width - The maximum void width.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Double) Go2ProfileStripWidth_VoidMax(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the maximum width of the void that will be ignored.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The maximum void width

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetWidthMin(Go2ProfileStripWidth measurement, Go2Double width); //
//
//  Description:
//      Sets the minimum width for a strip to be considered.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      width - The minimum strip width.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Double) Go2ProfileStripWidth_WidthMin(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the minimum width for a strip to be considered.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The minimum strip width.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetEdgeHeightMin(Go2ProfileStripWidth measurement, Go2Double height); //
//
//  Description:
//      Sets the minimum height for an edge to be considered.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//      height - The minimum edge height.
//  Returns:
//      Operation status.
 
GO2_EXPORT(Go2Double) Go2ProfileStripWidth_EdgeHeightMin(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the minimum height for an edge to be considered.
//  Arguments:
//      measurement - Go2ProfileStripWidth object. 
//  Returns:
//      The minimum edge height.




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

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

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

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

GO2_EXPORT(Go2UInt32) Go2ProfileStripWidth_LinkOptionAt(Go2ProfileStripWidth 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) Go2ProfileStripWidth_LinkOptionCount(Go2ProfileStripWidth measurement); //
//
//  Description:
//      Gets the number of link-able measurement IDs.
//  Arguments:
//      measurement - Go2PartMeasurement object.
//  Returns:
//      The link-able measurement count.

GO2_EXPORT(Go2UInt32) Go2ProfileStripWidth_Link(Go2ProfileStripWidth measurement);  //
//
//  Description:
//      Gets the measurement id of the linked measurement.
//  Arguments:
//      measurement - Go2PartMeasurement object.
//  Returns:
//      The linked measurement ID.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_SetLink(Go2ProfileStripWidth 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 PartOpening_? measurements)
//    Arguments:
//      measurement - Go2PartMeasurement object.
//      link - Measurement id to link to.
//  Returns:
//      Operation status.

GO2_EXPORT(Go2Bool) Go2ProfileStripWidth_LinkEnabled(Go2ProfileStripWidth measurement);   //
//
//  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 Go2PartOpeningX and Go2PartOpeningY measurement can link, but two Go2PartOpeningX measurements can not be linked.
//    Arguments:
//      measurement - Go2PartMeasurement object.
//    Returns:
//      enable - GO2_TRUE to enable, or GO2_FALSE to disable.

GO2_EXPORT(Go2Status) Go2ProfileStripWidth_EnableLink(Go2ProfileStripWidth measurement, Go2Bool enable);   //
//
//  Description:
//      Enables or disables measurement linking.
//  Arguments:
//      measurement - Go2PartMeasurement object.
//      enable - Use GO2_TRUE to enable linking and GO2_FALSE to disable it.
//  Returns:
//      Operation status.

#include <Go2ApiEnd.h>
#endif
