FEDRA emulsion software from the OPERA Collaboration
MilMod.h
Go to the documentation of this file.
1/***************************************************************************/
2/*
3
4 Filename: MilMod.h
5 Owner : Matrox Imaging dept.
6 Rev : $Revision: 1.1 $
7 Content : This file contains the defines and the prototypes for the
8 MIL geometric pattern matching module. (Mmod...).
9
10 COPYRIGHT (c) 2000 Matrox Electronic Systems Ltd.
11 All Rights Reserved
12
13*/
14/***************************************************************************/
15
16#ifndef __MILMOD_H__
17#define __MILMOD_H__
18
19#if (!M_MIL_LITE) // MIL FULL ONLY
20
21/* C++ directive if needed */
22#ifdef __cplusplus
23extern "C"
24{
25#endif
26
27
28/***************************************************************************/
29/* MilGeo CAPI defines */
30/***************************************************************************/
31
32/***************************************************************************/
33/* MmodAlloc() */
34/***************************************************************************/
35
36/* Object types */
37#define M_RESULT 0x00001000L
38
39#define M_GEOMETRIC 0x00002000L
40#define M_GEOMETRIC_PREDEFINED 0x00004000L
41#define M_GEOMETRIC_CONTROLLED 0x00008000L
42
43/* Control flags */
44#define M_MOD_DEFINE_READY 1L
45
46/***************************************************************************/
47/* MmodGetResult() */
48/***************************************************************************/
49/* For ResultIndex */
50#define M_ALL 0x40000000L // already defined in Mil.h
51
52/* For Result Type */
53#define M_NUMBER 1009L // already defined in Mil.h
54#define M_GENERAL 0x20000000L
55#define M_CONTEXT_ID 0x00001010L
56#define M_SCORE 0x00001400L // already defined in MilPat.h
57#define M_TARGET_COVERAGE 0x00001500L
58#define M_MODEL_COVERAGE 0x00001600L
59#define M_FIT_ERROR 0x00001700L
60#define M_SCORE_TARGET 0x00001800L
61#define M_POSITION_X 0x00003400L // already defined in MilPat.h
62#define M_POSITION_Y 0x00004400L // already defined in MilPat.h
63#define M_ANGLE 0x00000800L // already defined in Mil.h
64#define M_SCALE 0x00008010L // already defined in Milpat.h
65#define M_A_FORWARD 0x00008001L
66#define M_B_FORWARD 0x00008002L
67#define M_C_FORWARD 0x00008003L
68#define M_D_FORWARD 0x00008004L
69#define M_E_FORWARD 0x00008005L
70#define M_F_FORWARD 0x00008006L
71#define M_A_REVERSE 0x00008011L
72#define M_B_REVERSE 0x00008012L
73#define M_C_REVERSE 0x00008013L
74#define M_D_REVERSE 0x00008014L
75#define M_E_REVERSE 0x00008015L
76#define M_F_REVERSE 0x00008016L
77#define M_RADIUS M_MAJOR_AXIS
78#define M_MAJOR_AXIS 215L
79#define M_MINOR_AXIS 0x0000000AL
80#define M_ARC_PORTION 225L
81#define M_ELASTICITY 109L
82#define M_TARGET_EDGE_SIZE 222L
83#define M_TARGET_EDGES_X 223L
84#define M_TARGET_EDGES_Y 224L
85
86#define M_AVAILABLE 0x40000000L // already defined in MilEdge.h
87
88#define M_TYPE_LONG 0x00040000L // already defined in Mil.h
89#define M_TYPE_DOUBLE 0x00100000L // already defined in Mil.h
90
91/***************************************************************************/
92/* MmodDefine() */
93/***************************************************************************/
94
95#define M_DELETE 3L // 3 Already defined in Milblob.h
96
97#define M_IMAGE 0x00000004L // 4 Already defined in Mil.h
98#define M_CIRCLE 0x00000008L // 8 Already defined in MilBga.h
99#define M_ELLIPSE 0x00000010L // 16
100#define M_SQUARE 0x00000020L // 32
101#define M_RECTANGLE 0x00000040L // 64
102#define M_LINE 0x00000080L // 128
103#define M_RING 0x00000100L // 256
104#define M_DXF_FILE 0x00000200L // 512
105#define M_CROSS 0x00002000L // 8192 Already defined in MilBga.h
106#define M_DIAMOND 0x00008000L // 32768
107#define M_TRIANGLE 0x00010000L // 65536
108#define M_MERGE_MODEL 0x00020000L
109
110#define M_CLONE 0x10000000L
111
112/***************************************************************************/
113/* MmodDefineFromFile() */
114/***************************************************************************/
115#ifndef M_MIL_75_COMPATIBLE
116#define M_MEMORY (M_APP_INQUIRE_SYS_START+120L) /*5120*/ // Already defined in Mil.h
117#else
118#define M_MEMORY 5L // Already defined in Mil.h
119#endif //M_MIL_75_COMPATIBLE
120#define M_INTERACTIVE M_NULL // Already defined in mil.h, milcal.h, milcode.h, miledge.h, milmeas.h, milocr.h, milpat.h
121#define M_DXF_FILE 0x00000200L // 512
122
123
124/***************************************************************************/
125/* MmodControl() / MmodInquire() */
126/***************************************************************************/
127
128// For Index
129#define M_DEFAULT 0x10000000L // already defined in Mil.h
130#define M_CONTEXT 0x08000000L
131#define M_ALL 0x40000000L // already defined in Mil.h
132
133// Modifier
134#define M_SUPPORTED 0x20000000L
135
136// Context controls/inquires
137#define M_IMAGE_ID M_BUF_ID
138#define M_EDGE_RESULT_ID (M_BUF_ID|0x1L)
139#define M_NUMBER 1009L // already defined in Mil.h
140#define M_REFERENCE_X 100L
141#define M_REFERENCE_Y 101L
142#define M_REFERENCE_ANGLE 110L
143#define M_SEARCH_OFFSET_X 102L
144#define M_SEARCH_OFFSET_Y 103L
145#define M_SEARCH_SIZE_X 104L
146#define M_SEARCH_SIZE_Y 105L
147#define M_ACCURACY 106L
148#define M_SPEED M_SPEED_FACTOR // already defined in MilPat.h (8L)
149#define M_SMOOTHNESS 108L // TBM
150#define M_FILTER_WIDTH 109L
151#define M_FILTER_MODE 122L // allready defined in miledge.h
152#define M_DETAIL_LEVEL 111L
153#define M_SEARCH_ANGLE_RANGE 113L
154#define M_SEARCH_SCALE_RANGE 114L
155#define M_SEARCH_POSITION_RANGE 119L
156#define M_SEARCH_ASPECT_RATIO_RANGE 117L
157#define M_ASPECT_RATIO_MODE 118L
158#define M_TIMEOUT 2077L // already define in mil.h
159#define M_STOP_FIND 115L
160#define M_LINE_EXTRACTOR 116L
161#define M_SHARED_EDGES 220L
162#define M_TARGET_CACHING 39L // Already define in milpat.h
163#define M_SAVE_TARGET_EDGES 121L // Already define in milpat.h
164#define M_OVERSCAN 53L // Already define in mil.h
165#define M_OVERSCAN_REPLACE_VALUE 54L // Already define in mil.h
166
167
168
169// Context controls/inquires for M_GEOMETRIC_CONTROLLED
170#define M_FIRST_LEVEL 31L //Already defined in milpat.h
171#define M_LAST_LEVEL 32L //Already defined in milpat.h
172#define M_AUTO 444L //Already defined in milocr.h
173
174// Context controls/inquires for circle finder
175#define M_ARC_PORTION_MIN 107L
176#define M_ELASTICITY 109L
177#define M_MODEL_BASED 112L
178
179
180// Model controls/inquires
181#define M_ACCEPTANCE 200L
182#define M_ACCEPTANCE_TARGET 201L
183#define M_CERTAINTY 202L
184#define M_CERTAINTY_TARGET 203L
185#define M_SCORE_UNCERTAINTY_FACTOR 204L
186#define M_SCORE_TARGET_UNCERTAINTY_FACTOR 205L
187#define M_POLARITY 0x00004000L // already defined in MilMeas.h
188#define M_POLARITY_CHECK M_POLARITY
189#define M_MIN_SEPARATION_X M_MIN_SPACING_X // already defined in MilPat.h
190#define M_MIN_SEPARATION_Y M_MIN_SPACING_Y // already defined in MilPat.h
191#define M_SCALE 0x00008010L // already defined in MilPat.h
192#define M_SCALE_MIN_FACTOR 210L
193#define M_SCALE_MAX_FACTOR 211L
194#define M_ASPECT_RATIO 6001L // (Already defined in milcal.h)
195#define M_ASPECT_RATIO_MIN_FACTOR 230L
196#define M_ASPECT_RATIO_MAX_FACTOR 231L
197
198#define M_ANGLE 0x00000800L // already defined in Mil.h
199#define M_ANGLE_DELTA_NEG 0x00000200L // Already define in MilPat.h
200#define M_ANGLE_DELTA_POS 0x00000400L // Already define in MilPat.h
201#define M_INDEX 217L
202#define M_DEFORMATION_FACTOR 218L
203#define M_FIT_ERROR_WEIGHTING_FACTOR 221L
204#define M_CLONE_CONTROLS 226L
205#define M_USER_LABEL 228L
206#define M_INDEX_FROM_LABEL 229L
207#define M_NUMBER_OF_CHAINED_PIXELS 56L // Already define in MilBlob.h
208#define M_NUMBER_OF_CHAINED_EDGELS M_NUMBER_OF_CHAINED_PIXELS
209#define M_CHAIN_X 65L // Already define in MilBlob.h
210#define M_CHAIN_Y 144L // Already define in MilBlob.h
211#define M_CHAIN_ANGLE 258L // Already define in MilEdge.h
212#define M_CHAIN_INDEX 67L // Already define in MilBlob.h
213
214#define M_MIN_SEPARATION_SCALE 68L
215#define M_MIN_SEPARATION_ANGLE 69L
216#define M_ASSOCIATED_CALIBRATION 125L // Already define in MilCal.h
217#define M_CALIBRATED 0x0000300L
218
219//Controlls/inquires for Synthetic models
220
221#define M_BOX_MARGIN_LEFT 308L
222#define M_BOX_MARGIN_RIGHT 309L
223#define M_BOX_MARGIN_TOP 310L
224#define M_BOX_MARGIN_BOTTOM 311L
225#define M_PIXEL_SCALE 316L
226#define M_CAD_Y_AXIS 318L
227
228// CAD Y Axis control values
229#define M_FLIP 0x00010000L // Already defined in Mil.h
230#define M_NO_FLIP 0x04000000L // Already defined in Mil.h
231
232
233// Types of polarity check
234#define M_SAME -1L // Already defined in MilMeas.h
235#define M_REVERSE 4L // Already defined in Mil.h
236#define M_SAME_OR_REVERSE 5L
237#define M_ANY 0x11000000L // Already defined in MilMeas.h
238#define M_MIX M_ANY
239#define M_UNDEFINED 0L
240
241// To remove user label
242#define M_NO_LABEL 0x20000000L
243
244// Control values
245#define M_VERY_LOW 0L // Already define in milpat.h
246#define M_LOW 1L // Already define in milpat.h
247#define M_MEDIUM 2L // Already define in milpat.h
248#define M_HIGH 3L // Already define in milpat.h
249#define M_VERY_HIGH 4L // Already define in milpat.h
250
251#define M_GRADIENT_TYPE 1L
252#define M_BLOB_TYPE 2L
253
254#define M_MAX_POWER_LOSS 0x1200L
255#define M_SIZE 0xC00L // already define in medge.h
256#define M_RECURSIVE 0x00040000 // Already defined in mildev.h
257#ifdef M_MIL_75_COMPATIBLE
258#define M_KERNEL 0x00000200L // Already defined in milmod.h
259#else
260#define M_KERNEL 0x00400000L // Already defined in mil.h
261#endif //M_MIL_75_COMPATIBLE
262
263
264
265/***************************************************************************/
266/* MmodInquire() */
267/***************************************************************************/
268#define M_VALID 0x00000001L // Already define in Mil.h
269#define M_OBJECT_TYPE 0x80000000L // Already define in Mil.h
270#define M_PREPROCESSED 14L // Already define in MilPat.h
271#define M_KERNEL_SIZE 301L
272#define M_NUMBER_MODELS 302L
273#define M_MODIFICATION_COUNT 5010L // Already define in Mil.h
274#define M_OWNER_SYSTEM 1001L // already define in mil.h
275#define M_SIZE_BYTE 5061L // already defined in Mil.h
276#define M_ALLOC_OFFSET_X 15L // Already define in MilPat.h
277#define M_ALLOC_OFFSET_Y 16L // Already define in MilPat.h
278#define M_ALLOC_SIZE_X 2L // Already define in MilPat.h
279#define M_ALLOC_SIZE_Y 3L // Already define in MilPat.h
280#define M_ORIGINAL_X 6L // Already define in MilPat.h
281#define M_ORIGINAL_Y 7L // Already define in MilPat.h
282#define M_NUMBER_OF_WARNING 305L
283#define M_WARNINGS 306L
284#define M_STRING_OF_WARNING 307L
285#define M_ALLOC_SIZE_BAND 321L
286
287// Model inquires for Misc Synthetic Model
288#define M_AXIS_RATIO_MIN 212L
289#define M_AXIS_RATIO_MAX 213L
290#define M_MAJOR_AXIS_MIN 214L
291#define M_MAJOR_AXIS 215L // Alredy defided for MmodGetResult
292#define M_MAJOR_AXIS_MAX 216L
293#define M_RADIUS M_MAJOR_AXIS
294#define M_RADIUS_MIN M_MAJOR_AXIS_MIN
295#define M_RADIUS_MAX M_MAJOR_AXIS_MAX
296#define M_FOREGROUND_VALUE 4L // Already defined in MilBlob.h
297#define M_FOREGROUND_WHITE 0x80L // Already define in MilBlob.h
298#define M_FOREGROUND_BLACK 0x100L // Already define in MilBlob.h
299#define M_FOREGROUND_ANY M_FOREGROUND_WHITE+M_FOREGROUND_BLACK
300
301#define M_LENGTH 0x00002000L // already defined in Mil.h
302#define M_WIDTH 0x00010000L // Already defined in Milmeas.h
303#define M_HEIGHT 317L
304#define M_THICKNESS 10L // already defined in Mil.h
305#define M_HORIZONTAL_THICKNESS 233L
306#define M_VERTICAL_THICKNESS 232L
307#define M_INNER_RADIUS 234L
308#define M_OUTER_RADIUS 235L
309
310#define M_BOX_OFFSET_X 312L
311#define M_BOX_OFFSET_Y 313L
312#define M_BOX_SIZE_X 314L
313#define M_BOX_SIZE_Y 315L
314
315
316/***************************************************************************/
317/* MmodDraw() */
318/***************************************************************************/
319
320#define M_DRAW_IMAGE 2L // Already define in MilPat.h
321#define M_DRAW_EDGES 4L
322#define M_DRAW_DONT_CARES 8L // Already define in MilPat.h
323#define M_DRAW_FLAT_REGIONS 16L
324#define M_DRAW_BOX 32L // Already define in MilPat.h
325#define M_DRAW_POSITION 64L // Already define in MilPat.h
326#define M_DRAW_GRADIENT 128L
327#define M_DRAW_WEIGHT_REGIONS 256L
328#define M_DRAW_AXIS 0x200L // Already define in MilBlob.h
329
330#define M_ORIGINAL 409L // Already define in MilPat.h
331#define M_MODEL 0X10000L
332#define M_TARGET 0X80000L
333
334#define M_DRAW_RELATIVE_ORIGIN_X 319L // Already define in MilEdge.h
335#define M_DRAW_RELATIVE_ORIGIN_Y 320L // Already define in MilEdge.h
336#define M_DRAW_SCALE_X 3203L // Already define in MilEdge.h
337#define M_DRAW_SCALE_Y 3204L // Already define in MilEdge.h
338
339/***************************************************************************/
340/* MmodMask() */
341/***************************************************************************/
342
343#define M_DONT_CARES M_DONT_CARE // Already defined in mil.h
344#define M_FLAT_REGIONS 501L
345#define M_WEIGHT_REGIONS 502L
346
347
348/***************************************************************************/
349/* MmodPreprocess() */
350/***************************************************************************/
351#define M_RESET 9L
352#define M_COMPLETE 0x00000000L // Already defined in Mil.h
353#define M_PARTIAL 0x00000001L // Already defined in Mil.h
354
355
356
357/***************************************************************************/
358/* MmodSave()/MmodRestore() */
359/***************************************************************************/
360#ifndef M_MIL_75_COMPATIBLE
361#define M_MEMORY (M_APP_INQUIRE_SYS_START+120L) /*5120*/ // Already defined in Mil.h
362#else
363#define M_MEMORY 5L // Already defined in Mil.h
364#endif //M_MIL_75_COMPATIBLE
365#define M_INTERACTIVE M_NULL // Already defined in mil.h, milcal.h, milcode.h, milmeas.h, milocr.h, milpat.h, milmod.h
366
367
368/***************************************************************************/
369/* WARNINGS definitions and string table */
370/***************************************************************************/
371#define M_MAX_WARNING_STRING_LENGTH 64L
372#define M_LAST_WARNING_VALUE 12L
373
374/* Warning definitions */
375#define M_POOR_GEOMETRIC_MODEL 1L
376#define M_HIGH_GEOMETRIC_COMPLEXITY 2L
377#define M_UNSTABLE_ANGLE 3L
378#define M_UNSTABLE_SCALE 4L
379#define M_UNSTABLE_POSITION 5L
380#define M_BETTER_OUT_OF_ANGLE_RANGE 6L
381#define M_BETTER_OUT_OF_SCALE_RANGE 7L
382#define M_BETTER_OUT_OF_SEARCH_REGION 8L
383#define M_POOR_GEOMETRIC_TARGET 9L
384#define M_TIMEOUT_END 10L
385#define M_SEARCH_OUTSIDE_TARGET 11L
386#define M_NO_INITIAL_CALIBRATION 12L
387
388
389/***************************************************************************/
390/* MilGeo CAPI function prototypes */
391/***************************************************************************/
392
393#ifndef __midl // MIDL compiler used by ActiveMIL
394
395MFTYPE32 MIL_ID MFTYPE MmodAlloc (MIL_ID SystemId,
396 long MethodType,
397 long ControlFlag,
398 MIL_ID* ObjectIdPtr);
399
400MFTYPE32 MIL_ID MFTYPE MmodAllocResult (MIL_ID SystemId,
401 long ControlFlag,
402 MIL_ID* ResultIdPtr);
403
404MFTYPE32 void MFTYPE MmodDefine (MIL_ID ContextId,
405 long ModelType,
406 double Param1,
407 double Param2,
408 double Param3,
409 double Param4,
410 double Param5);
411
412MFTYPE32 void MFTYPE MmodDefineFromFile (MIL_ID ContextId,
413 long FileType,
414 LPMILSTR FileName,
415 long ControlFlag );
416
417MFTYPE32 void MFTYPE MmodControl (MIL_ID ContextId,
418 long Index,
419 long ControlType,
420 double ControlValue);
421
422MFTYPE32 long MFTYPE MmodInquire (MIL_ID ContextId,
423 long Index,
424 long InquireType,
425 void* UserVarPtr);
426
427MFTYPE32 void MFTYPE MmodMask (MIL_ID ContextId,
428 long Index,
429 MIL_ID MaskBufferId,
430 long MaskType,
431 long ControlFlag);
432
433MFTYPE32 void MFTYPE MmodPreprocess (MIL_ID ContextId,
434 long ControlFlag);
435
436MFTYPE32 void MFTYPE MmodFind (MIL_ID ContextId,
437 MIL_ID TargetImageId,
438 MIL_ID ResultId);
439
440MFTYPE32 void MFTYPE MmodGetResult ( MIL_ID ResultId,
441 long ResultIndex,
442 long ResultType,
443 void *ResultArrayPtr );
444
445MFTYPE32 void MFTYPE MmodDraw (MIL_ID GraphContId,
446 MIL_ID ContextOrResultId,
447 MIL_ID DestImageBufId,
448 long Operation,
449 long Index,
450 long ControlFlag);
451
452MFTYPE32 void MFTYPE MmodSave (MIL_TEXT_PTR FileName,
453 MIL_ID ContextId,
454 long ControlFlag);
455
456MFTYPE32 MIL_ID MFTYPE MmodRestore (MIL_TEXT_PTR FileName,
457 MIL_ID SystemId,
458 long ControlFlag,
459 MIL_ID* ContextIdPtr);
460
461MFTYPE32 void MFTYPE MmodFree (MIL_ID ObjectId);
462
463#endif /* #ifdef __midl */
464
465/* C++ directive if needed */
466#ifdef __cplusplus
467}
468#endif
469
470#endif // !M_MIL_LITE
471
472#endif /* __MILMOD_H__ */
long MIL_ID
Definition: AcqOdyssey.h:45
MFTYPE32 void MFTYPE MmodControl(MIL_ID ContextId, long Index, long ControlType, double ControlValue)
MFTYPE32 void MFTYPE MmodPreprocess(MIL_ID ContextId, long ControlFlag)
MFTYPE32 void MFTYPE MmodFree(MIL_ID ObjectId)
MFTYPE32 void MFTYPE MmodDefineFromFile(MIL_ID ContextId, long FileType, LPMILSTR FileName, long ControlFlag)
MFTYPE32 MIL_ID MFTYPE MmodAlloc(MIL_ID SystemId, long MethodType, long ControlFlag, MIL_ID *ObjectIdPtr)
MFTYPE32 void MFTYPE MmodMask(MIL_ID ContextId, long Index, MIL_ID MaskBufferId, long MaskType, long ControlFlag)
MFTYPE32 void MFTYPE MmodSave(MIL_TEXT_PTR FileName, MIL_ID ContextId, long ControlFlag)
MFTYPE32 void MFTYPE MmodGetResult(MIL_ID ResultId, long ResultIndex, long ResultType, void *ResultArrayPtr)
MFTYPE32 void MFTYPE MmodDraw(MIL_ID GraphContId, MIL_ID ContextOrResultId, MIL_ID DestImageBufId, long Operation, long Index, long ControlFlag)
MFTYPE32 MIL_ID MFTYPE MmodAllocResult(MIL_ID SystemId, long ControlFlag, MIL_ID *ResultIdPtr)
MFTYPE32 void MFTYPE MmodDefine(MIL_ID ContextId, long ModelType, double Param1, double Param2, double Param3, double Param4, double Param5)
MFTYPE32 long MFTYPE MmodInquire(MIL_ID ContextId, long Index, long InquireType, void *UserVarPtr)
MFTYPE32 void MFTYPE MmodFind(MIL_ID ContextId, MIL_ID TargetImageId, MIL_ID ResultId)
MFTYPE32 MIL_ID MFTYPE MmodRestore(MIL_TEXT_PTR FileName, MIL_ID SystemId, long ControlFlag, MIL_ID *ContextIdPtr)
char * LPMILSTR
Definition: Milos.h:88
char * MIL_TEXT_PTR
Definition: Milos.h:90