Gocator Vision Library
 All Classes Files Functions Variables Typedefs Friends Modules Pages
GvDef.h
Go to the documentation of this file.
1 /**
2  * @file GvDef.h
3  * @brief Essential GoVision declarations.
4  *
5  * @internal
6  * Copyright (C) 2017-2022 by LMI Technologies Inc. All rights reserved.
7  */
8 #ifndef GV_DEF_H
9 #define GV_DEF_H
10 
11 #include <kApi/kApiDef.h>
12 
13 #if defined(GV_EMIT)
14 # define GvFx(TYPE) kExportFx(TYPE)
15 # define GvDx(TYPE) kExportDx(TYPE)
16 #else
17 # define GvFx(TYPE) kImportFx(TYPE)
18 # define GvDx(TYPE) kImportDx(TYPE)
19 #endif
20 
21 // TODO: remove these definitions once VE repo defines their own version of these.
22 #ifndef pgettext
23 #define pgettext(C, T) T
24 #endif
25 #ifndef _
26 #define _(T) T
27 #endif
28 
29 #define GV_FIRST_FRAME_NUMBER (1)
30 #define GV_ANGLE_LUT_PRECISION (12)
31 
32 #define SENSOR_LINE_COUNT (1)
33 #define SENSOR_LUT_CENTRE_STEP (256)
34 #define SENSOR_ALIGN_CAL_SAMPLE_COUNT (10)
35 #define SENSOR_ALIGN_CAL_MIN_SLOT_WIDTH (2.5)
36 
37 #define GV_MAX_EXPOSURE_STEPS (5)
38 
40 
41 #define GV_SPOT_SELECTION_INTENSITY (0)
42 #define GV_SPOT_SELECTION_TOP (1)
43 #define GV_SPOT_SELECTION_BOTTOM (2)
44 #define GV_SPOT_SELECTION_NONE (3)
45 #define GV_SPOT_SELECTION_CONTINUITY_SORT (4)
46 #define GV_SPOT_SELECTION_TRANSLUCENT_SORT (5)
47 
48 typedef k32s GvTriggerSource;
49 
50 #define GV_TRIGGER_SOURCE_TIME (0)
51 #define GV_TRIGGER_SOURCE_ENCODER (1)
52 #define GV_TRIGGER_SOURCE_OTHER (2)
53 
55 
56 #define GV_MOVEMENT_UNKNOWN (0)
57 #define GV_MOVEMENT_FORWARD (1)
58 #define GV_MOVEMENT_BACKWARD (2)
59 
60 #define GV_MINIMUM_ANGLE_STEP (0.001) // millidegrees
61 
62 #define GV_TOOL_INPUT_TOP_NAME "InTop"
63 #define GV_TOOL_INPUT_BOTTOM_NAME "InBottom"
64 #define GV_TOOL_INPUT_OFFSET_X_NAME "InOffsetX"
65 #define GV_TOOL_INPUT_OFFSET_Y_NAME "InOffsetY"
66 #define GV_TOOL_INPUT_OFFSET_Z_NAME "InOffsetZ"
67 #define GV_TOOL_INPUT_OFFSET_ZANGLE_NAME "InOffsetZAngle"
68 #define GV_TOOL_INPUT_FOR_NAME "InFoR"
69 #define GV_TOOL_INPUT_FEATURE_NAME "InFeature"
70 #define GV_TOOL_INPUT_MAX_FEATURES (2)
71 
72 typedef enum
73 {
74  GV_TOOL_INPUT_TOP = 0,
75  GV_TOOL_INPUT_BOTTOM = 1,
76  GV_TOOL_INPUT_OFFSET_X = 2,
77  GV_TOOL_INPUT_OFFSET_Y = 3,
78  GV_TOOL_INPUT_OFFSET_Z = 4,
79  GV_TOOL_INPUT_OFFSET_ZANGLE = 5,
80  GV_TOOL_INPUT_FOR = 6,
81  GV_TOOL_INPUT_FEATURE_START = 100
82 } GvToolInputBlockPort;
83 
84 typedef struct
85 {
86  k64f value;
87  k64f unfilteredValue;
88  k64f decision;
89 } GvMeasurementBase;
90 
91 typedef struct
92 {
93  GvMeasurementBase base;
94  kPoint64f anchorSource;
95  kPoint64f anchorPosition[2];
96 } GvProfileMeasurementBase;
97 
98 typedef struct
99 {
100  GvMeasurementBase base;
101  kPoint3d64f anchorSource;
102  kPoint3d64f anchorPosition[4];
103  k64f anchorAngle;
104 } GvSurfaceMeasurementBase;
105 
106 typedef k32s GvFeatureType;
107 #define GV_FEATURE_POINT (0)
108 #define GV_FEATURE_LINE (1)
109 #define GV_FEATURE_CIRCLE (2)
110 #define GV_FEATURE_PLANE (3)
111 
112 
113 typedef k32s GvAnchorCoRType;
114 #define GV_ANCHOR_COR_RIGID_BODY (0)
115 #define GV_ANCHOR_COR_AXIS_ALIGNED (1)
116 #define GV_ANCHOR_COR_REGION_CENTER (2)
117 
118 typedef struct GvAngleAnchor
119 {
120  kPoint3d64f position;
121  k64f angle;
122 } GvAngleAnchor;
123 
124 typedef struct GvSurfaceCommonOutput
125 {
126  k64f value;
127  k64f decision;
128  GvAngleAnchor anchorOut;
129  GvAngleAnchor anchorIn;
130 } GvSurfaceCommonOutput;
131 
132 typedef struct GvRegion3d64f
133 {
134  kPoint3d64f position;
135  kPoint3d64f dimension;
136  kPoint3d64f orientation;
137 } GvRegion3d64f;
138 
139 kDeclareValueEx(Gv, GvRegion3d64f, kValue)
140 
141 #define GV_INIT_NULL_REGION { { k64F_NULL, k64F_NULL, k64F_NULL }, { k64F_NULL, k64F_NULL, k64F_NULL }, { k64F_NULL, k64F_NULL, k64F_NULL } }
142 
143 typedef enum
144 {
145  // Position results types
146  GV_SURFACE_FEATURE_TYPE_AVERAGE = 0,
147  GV_SURFACE_FEATURE_TYPE_MEDIAN,
148  GV_SURFACE_FEATURE_TYPE_CENTROID,
149  GV_SURFACE_FEATURE_TYPE_MAX_X,
150  GV_SURFACE_FEATURE_TYPE_MIN_X,
151  GV_SURFACE_FEATURE_TYPE_MAX_Y,
152  GV_SURFACE_FEATURE_TYPE_MIN_Y,
153  GV_SURFACE_FEATURE_TYPE_MAX_Z,
154  GV_SURFACE_FEATURE_TYPE_MIN_Z,
155  // Height result types
156  GV_SURFACE_FEATURE_TYPE_MEAN_HEIGHT,
157  GV_SURFACE_FEATURE_TYPE_MEDIAN_HEIGHT,
158  GV_SURFACE_FEATURE_TYPE_MAX_HEIGHT,
159  GV_SURFACE_FEATURE_TYPE_MIN_HEIGHT,
160  GV_SURFACE_FEATURE_TYPE_CENTROID_2D_HEIGHT,
161  GV_SURFACE_FEATURE_TYPE_CENTROID_3D_HEIGHT
162 } GvSurfaceFeatureType;
163 
164 typedef enum
165 {
166  SENSOR_ALIGN_DIRECTION_FORWARD,
167  SENSOR_ALIGN_DIRECTION_REVERSE
168 } SensorAlignDirection;
169 
170 typedef enum
171 {
172  SENSOR_ALIGN_REFERENCE_NONE,
173  SENSOR_ALIGN_REFERENCE_SLOT
174 } SensorAlignReferenceType;
175 
176 
178 
179 #define SENSOR_ALIGN_SELECT_MID (0)
180 #define SENSOR_ALIGN_SELECT_WIDEST (1)
181 
183 
184 #define GV_ALIGN_DOF_NONE (0x00)
185 #define GV_ALIGN_DOF_X (0x20)
186 #define GV_ALIGN_DOF_Y (0x10)
187 #define GV_ALIGN_DOF_Z (0x08)
188 #define GV_ALIGN_DOF_A (0x04)
189 #define GV_ALIGN_DOF_B (0x02)
190 #define GV_ALIGN_DOF_C (0x01)
191 #define GV_ALIGN_DOF_Z_B (0x0A)
192 #define GV_ALIGN_DOF_XZ_B (0x2A)
193 #define GV_ALIGN_DOF_YZ_B (0x1A)
194 #define GV_ALIGN_DOF_XYZ_B (0x3A)
195 #define GV_ALIGN_DOF_YZ_BC (0x1B)
196 #define GV_ALIGN_DOF_XYZ_BC (0x3B)
197 #define GV_ALIGN_DOF_YZ_ABC (0x1F)
198 #define GV_ALIGN_DOF_XYZ_ABC (0x3F)
199 
200 typedef k32s SensorAreaType;
201 
202 #define SENSOR_AREA_OBJECT (0)
203 #define SENSOR_AREA_CLEARANCE (1)
204 #define SENSOR_AREA_OBJ_PLUS_CLEAR (2)
205 #define SENSOR_AREA_OBJ_MINUS_CLEAR (3)
206 
208 #define GV_PROFILE_PANEL_EDGE_BLOCK_TANGENT_EDGE (0)
209 #define GV_PROFILE_PANEL_EDGE_BLOCK_CORNER_EDGE (1)
210 #define GV_PROFILE_PANEL_BLOCK_TANGENT_EDGE (0)
211 #define GV_PROFILE_PANEL_BLOCK_CORNER_EDGE (1)
212 
213 
214 typedef k32s SensorAreaBaseline;
215 
216 #define SENSOR_AREA_BASELINE_X_AXIS (0)
217 #define SENSOR_AREA_BASELINE_LINE (1)
218 
220 #define SENSOR_PROFILE_FEATURE_TOP (0)
221 #define SENSOR_PROFILE_FEATURE_BOTTOM (1)
222 #define SENSOR_PROFILE_FEATURE_RIGHT (2)
223 #define SENSOR_PROFILE_FEATURE_LEFT (3)
224 #define SENSOR_PROFILE_FEATURE_CORNER (4)
225 #define SENSOR_PROFILE_FEATURE_AVERAGE (5)
226 #define SENSOR_PROFILE_FEATURE_EDGE_RISING (6)
227 #define SENSOR_PROFILE_FEATURE_EDGE_FALLING (7)
228 #define SENSOR_PROFILE_FEATURE_EDGE (8)
229 #define SENSOR_PROFILE_FEATURE_CORNER_TOP (9)
230 #define SENSOR_PROFILE_FEATURE_CORNER_BOTTOM (10)
231 #define SENSOR_PROFILE_FEATURE_CORNER_LEFT (11)
232 #define SENSOR_PROFILE_FEATURE_CORNER_RIGHT (12)
233 #define SENSOR_PROFILE_FEATURE_MEDIAN (13)
234 #define SENSOR_PROFILE_FEATURE_TYPE_COUNT (SENSOR_PROFILE_FEATURE_MEDIAN + 1)
235 
237 #define GV_PROFILE_PANEL_BLOCK_REFERENCE_LEFT_EDGE (0)
238 #define GV_PROFILE_PANEL_BLOCK_REFERENCE_RIGHT_EDGE (1)
239 #define GV_PROFILE_PANEL_BLOCK_REFERENCE_LEFT_SURFACE (2)
240 #define GV_PROFILE_PANEL_BLOCK_REFERENCE_RIGHT_SURFACE (3)
241 #define GV_PROFILE_PANEL_BLOCK_REFERENCE_LEFT_DISTANCE (4)
242 #define GV_PROFILE_PANEL_BLOCK_REFERENCE_RIGHT_DISTANCE (5)
243 
244 typedef enum
245 {
246  SENSOR_PROFILE_EDGE_RISING = 0x1,
247  SENSOR_PROFILE_EDGE_FALLING = 0x2
248 } SensorProfileEdgeType;
249 
250 typedef enum
251 {
252  SENSOR_PROFILE_CORNER_TOP = 0x1,
253  SENSOR_PROFILE_CORNER_BOTTOM = 0x2,
254  SENSOR_PROFILE_CORNER_LEFT = 0x4,
255  SENSOR_PROFILE_CORNER_RIGHT = 0x8
256 } SensorProfileCornerType;
257 
259 
260 #define PROFILE_BASELINE_TYPE_X_AXIS (0)
261 #define PROFILE_BASELINE_TYPE_Z_AXIS (1)
262 #define PROFILE_BASELINE_TYPE_FIT_LINE (2)
263 #define PROFILE_BASELINE_TYPE_TWO_POINTS (3)
264 
265 typedef enum
266 {
267  GOCATOR_CALIBRATION_NO_OBJECT = -1,
268  GOCATOR_CALIBRATION_NO_TARGET = -2,
269  GOCATOR_CALIBRATION_TARGET_CONFIG_ERROR = -3,
270  GOCATOR_CALIBRATION_TARGET_POS_ERROR = -4,
271  GOCATOR_CALIBRATION_NO_REFERENCE_SLOT = -5,
272  GOCATOR_CALIBRATION_NO_TRAVEL_DETECTED = -6,
273  GOCATOR_CALIBRATION_TOO_FEW_PROFILES = -7
274 } GocatorCalibrationStatus;
275 
276 typedef struct GvProfileAlignEntry
277 {
278  kPoint3d64f angle;
279  kPoint3d64f position;
280  k64f time;
281  k64s count;
282  k64u frameCount;
283  k64u framesBuffered;
284  k64u framesExpected;
285 } GvProfileAlignEntry;
286 
287 typedef enum
288 {
289  GOCATOR_ALIGNMENT_REPORT_ID_NONE = 0,
290  GOCATOR_ALIGNMENT_REPORT_ID_BUFFERRED_BAR
291 } GocatorAlignmentReportId;
292 
293 #define GV_PROFILE_ALIGN_MAX_SENSORS (32)
294 typedef struct GvProfileAlignOutput
295 {
296  k64f encoderResolution;
297  k64f speed;
298  k32u entryCount;
299  GvProfileAlignEntry entry[GV_PROFILE_ALIGN_MAX_SENSORS];
300  k32u outputToClientId; // id of output information to send to client, 0 is nothing to send
301 } GvProfileAlignOutput;
302 
303 kDeclareValueEx(Gv, GvProfileAlignOutput, kValue)
304 
305 typedef enum
306 {
307  GOCATOR_ALIGNMENT_ERROR_MSG_ID_NONE = 0,
308  GOCATOR_ALIGNMENT_ERROR_MSG_ID_BUFFERRED_BAR_TOO_FEW1,
309  GOCATOR_ALIGNMENT_ERROR_MSG_ID_BUFFERRED_BAR_TOO_FEW2
310 } GocatorAlignmentErrorMessageId;
311 
312 #define GV_PROFILE_ALIGN_STATUS_MAX_PARAMS (3)
313 typedef struct GvProfileAlignStatus
314 {
315  k32s status;
316  k32s errorMsgId; // of type GocatorAlignmentErrorMessageId
317  k32s paramCount;
318  k32s params[GV_PROFILE_ALIGN_STATUS_MAX_PARAMS];
319 } GvProfileAlignStatus;
320 
321 kDeclareValueEx(Gv, GvProfileAlignStatus, kValue)
322 
323 typedef enum
324 {
325  GV_SURFACE_RIVET_FIND_TYPE_HOLE,
326  GV_SURFACE_RIVET_FIND_TYPE_BUMP,
327  GV_SURFACE_RIVET_FIND_TYPE_FLUSH
328 } GvSurfaceRivetFindType;
329 
330 typedef enum
331 {
332  GV_SURFACE_RIVET_HEIGHT_TYPE_NONE = 0,
333  GV_SURFACE_RIVET_HEIGHT_TYPE_NOMINAL,
334  GV_SURFACE_RIVET_HEIGHT_TYPE_MAX,
335  GV_SURFACE_RIVET_HEIGHT_TYPE_MEAN,
336  GV_SURFACE_RIVET_HEIGHT_TYPE_FIT
337 } GvSurfaceRivetHeightType;
338 
339 typedef enum
340 {
341  GV_SURFACE_RIVET_MEASUREMENT_X,
342  GV_SURFACE_RIVET_MEASUREMENT_Y,
343  GV_SURFACE_RIVET_MEASUREMENT_Z,
344  GV_SURFACE_RIVET_MEASUREMENT_RADIUS,
345  GV_SURFACE_RIVET_MEASUREMENT_X_ANGLE,
346  GV_SURFACE_RIVET_MEASUREMENT_Y_ANGLE,
347  GV_SURFACE_RIVET_MEASUREMENT_TILT_ANGLE,
348  GV_SURFACE_RIVET_MEASUREMENT_TILT_DIRECTION,
349  GV_SURFACE_RIVET_MEASUREMENT_TOP_MIN,
350  GV_SURFACE_RIVET_MEASUREMENT_TOP_MAX,
351  GV_SURFACE_RIVET_MEASUREMENT_TOP_MEAN,
352  GV_SURFACE_RIVET_MEASUREMENT_TOP_STDEV,
353  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_OFFSET_MIN,
354  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_OFFSET_MAX,
355  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_OFFSET_MEAN,
356  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_OFFSET_STDEV,
357  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_SLOPE_MIN,
358  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_SLOPE_MAX,
359  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_SLOPE_MEAN,
360  GV_SURFACE_RIVET_MEASUREMENT_RADIAL_SLOPE_STDEV
361 } GvSurfaceRivetMeasureType;
362 
364 #define GV_SURFACE_UTILITIES_FOR_TYPE_SENSOR (0)
365 #define GV_SURFACE_UTILITIES_FOR_TYPE_SCAN (1)
366 #define GV_SURFACE_UTILITIES_FOR_TYPE_SOURCEPART (3)
367 #define GV_SURFACE_UTILITIES_FOR_TYPE_PART (2)
368 
369 typedef enum
370 {
371  GV_SURFACE_RADIAL_SCAN_TYPE_RADIAL,
372  GV_SURFACE_RADIAL_SCAN_TYPE_ROW,
373  GV_SURFACE_RADIAL_SCAN_TYPE_COLUMN,
374  GV_SURFACE_RADIAL_SCAN_TYPE_ROWCOL
375 } GvSurfaceRadialScanType;
376 
377 typedef enum
378 {
379  GV_PART_THRESHOLD_TYPE_ABOVE,
380  GV_PART_THRESHOLD_TYPE_BELOW,
381  GV_PART_THRESHOLD_TYPE_RANGE
382 } GvPartThresholdType;
383 
384 #define GV_PART_MATCH_DEFAULT_MAX_EDGES (4096)
385 
386 typedef enum
387 {
388  GV_SURFACE_RADIAL_DROP_OUT_INVALID_COUNT,
389  GV_SURFACE_RADIAL_DROP_OUT_VALID_COUNT,
390  GV_SURFACE_RADIAL_DROP_OUT_INVALID_AREA,
391  GV_SURFACE_RADIAL_DROP_OUT_VALID_AREA
392 } GvSurfaceRadialDropOutType;
393 
394 typedef enum
395 {
396  GV_RUN_CONTROL_FREE_RUN,
397  GV_RUN_CONTROL_INPUT_START_PULSE,
398  GV_RUN_CONTROL_INPUT_LEVEL
399 } GvRunControlType;
400 
401 typedef enum
402 {
403  // OK means there is a usable/valid measurement value to work with.
404  GV_MEASUREMENT_OK = 0,
405  // Measurement error is treated as a bit mask.
406  // Reserve bit value 0x1 for upper layer software use to indicate to clients
407  // the measurement value FAILED, meaning it lies outside a client
408  // specified decision min/max range.
409  GV_MEASUREMENT_ERROR_FAILED = 0x1,
410  GV_MEASUREMENT_ERROR_INVALID_RESULT = 0x2, // Could not measure a value.
411  GV_MEASUREMENT_ERROR_INVALID_ANCHOR = 0x4,
412  GV_MEASUREMENT_ERROR_PART_MATCH = 0x8
413 } GvMeasurementError;
414 
415 typedef enum GvProfileFilterType
416 {
417  GV_PROFILE_FILTER_TYPE_MEAN,
418  GV_PROFILE_FILTER_TYPE_MEDIAN,
419  GV_PROFILE_FILTER_TYPE_DIFFERENCE,
420  GV_PROFILE_FILTER_TYPE_NONE
421 } GvProfileFilterType;
422 
423 typedef enum GvProfileFilterDimension
424 {
425  GV_PROFILE_FILTER_DIMENSION_X,
426  GV_PROFILE_FILTER_DIMENSION_Y
427 } GvProfileFilterDimension;
428 
429 typedef struct GvPartEdgePoint2d
430 {
431  k64f x;
432  k64f y;
433  k64f direction;
434 } GvPartEdgePoint2d;
435 
436 typedef struct kView1
437 {
438  k32u start;
439  k32u count;
440  k32s step;
441 } kView1;
442 
443 #define kVIEW1(VIEW, START, COUNT, STEP) \
444  ((VIEW)->start = (START), (VIEW)->count = (COUNT), (VIEW)->step = (STEP), \
445  (VIEW))
446 
447 typedef struct kView2
448 {
449  k32u start[2];
450  k32u count[2];
451  k32s step[2];
452 } kView2;
453 
454 #define kVIEW2(VIEW, START0, START1, COUNT0, COUNT1, STEP0, STEP1) \
455  ((VIEW)->start[0] = (START0), (VIEW)->start[1] = (START1), \
456  (VIEW)->count[0] = (COUNT0), (VIEW)->count[1] = (COUNT1), \
457  (VIEW)->step[0] = (STEP0), (VIEW)->step[1] = (STEP1), \
458  (VIEW))
459 
460 #define GV_SURFACE_CLOCK_TO_S(C) ((C) / 1024000.0) // there must be a macro for this
461 #define GV_SURFACE_S_TO_CLOCK(C) ((C) * 1024000)
462 
463 // Health Indicators - public unless otherwise specified
464 
465 #define GV_INDICATOR_ROTATIONAL_GENERATION_DROPS (22000)
466 #define GV_INDICATOR_COMBINER_DROPS (22001) // private
467 #define GV_INDICATOR_STRIPE_DROPS (22002) // private
468 #define GV_INDICATOR_SORTER_DROPS (22003) // private
469 #define GV_INDICATOR_RUNTIME (22004)
470 #define GV_INDICATOR_PHASE_DROPS (22005) // private
471 // part detector indicators
472 #define GV_INDICATOR_PART_EMITTED (22006)
473 #define GV_INDICATOR_PART_LENGTH_LIMIT (22007)
474 #define GV_INDICATOR_PART_AREA_DROPS (22008)
475 #define GV_INDICATOR_PART_BACKTRACK_DROPS (22009)
476 #define GV_INDICATOR_PART_ACTIVE (22010)
477 #define GV_INDICATOR_PART_LENGTH (22011)
478 #define GV_INDICATOR_PART_START_Y (22012)
479 #define GV_INDICATOR_PART_TRACKING_STATE (22013)
480 #define GV_INDICATOR_PART_CAPACITY (22014)
481 #define GV_INDICATOR_PART_X_POSITION (22015)
482 // runtime indicators
483 #define GV_INDICATOR_RUNTIME_MIN (22016)
484 #define GV_INDICATOR_RUNTIME_MAX (22017)
485 #define GV_INDICATOR_RUNTIME_AVG (22018)
486 #define GV_INDICATOR_RUNPERCENT_AVG (22019)
487 // alignment indicator(s)
488 #define GV_INDICATOR_BAR_ALIGNMENT_STATUS (22020)
489 
490 
491 typedef struct GvTracheidMoment
492 {
493  k32s moments[6];
494 } GvTracheidMoment;
495 
496 
497 #define GV_THRESHOLD_EQUALS(A, B, EPSILON) ((kMath_Max_(A, B) - kMath_Min_(A, B)) < EPSILON)
498 #define GV_THRESHOLD_GREATER(A, B, EPSILON) (!GV_THRESHOLD_EQUALS(A,B,EPSILON) && A > B)
499 #define GV_THRESHOLD_LESS(A, B, EPSILON) (!GV_THRESHOLD_EQUALS(A,B,EPSILON) && A < B)
500 #define GV_THRESHOLD_GREATER_OR_EQUAL(A, B, EPSILON) (GV_THRESHOLD_EQUALS(A,B,EPSILON) || A > B)
501 #define GV_THRESHOLD_LESS_OR_EQUAL(A, B, EPSILON) (GV_THRESHOLD_EQUALS(A,B,EPSILON) || A < B)
502 
503 kDeclareValueEx(Gv, GvTracheidMoment, kValue)
504 
505 /**
506 * @struct GdkMeasurementDecision
507 * @extends kValue
508 * @ingroup Gv
509 * @brief Represents a measurement result decision.
510 * Note:- This is added here to remove dependancy of Govision over Gdk
511 */
513 
514 /** @relates GdkMeasurementDecision @{ */
515 #define GDK_MEASUREMENT_OK (0) ///< No error.
516 #define GDK_MEASUREMENT_ERROR_VALUE (0x2) ///< Invalid measurement value.
517 #define GDK_MEASUREMENT_ERROR_ANCHOR (0x4) ///< Invalid anchor input.
518 #define GDK_MEASUREMENT_ERROR_PART_MATCH (0x8) ///< Part matching failure.
519 /** @} */
520 #endif
#define kDeclareValueEx(PREFIX, SYMBOL, BASE)
Represents a measurement result decision. Note:- This is added here to remove dependancy of Govision ...
Definition: GvDef.h:503