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
23 extern "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 
395 MFTYPE32 MIL_ID MFTYPE MmodAlloc (MIL_ID SystemId,
396  long MethodType,
397  long ControlFlag,
398  MIL_ID* ObjectIdPtr);
399 
400 MFTYPE32 MIL_ID MFTYPE MmodAllocResult (MIL_ID SystemId,
401  long ControlFlag,
402  MIL_ID* ResultIdPtr);
403 
404 MFTYPE32 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 
412 MFTYPE32 void MFTYPE MmodDefineFromFile (MIL_ID ContextId,
413  long FileType,
414  LPMILSTR FileName,
415  long ControlFlag );
416 
417 MFTYPE32 void MFTYPE MmodControl (MIL_ID ContextId,
418  long Index,
419  long ControlType,
420  double ControlValue);
421 
422 MFTYPE32 long MFTYPE MmodInquire (MIL_ID ContextId,
423  long Index,
424  long InquireType,
425  void* UserVarPtr);
426 
427 MFTYPE32 void MFTYPE MmodMask (MIL_ID ContextId,
428  long Index,
429  MIL_ID MaskBufferId,
430  long MaskType,
431  long ControlFlag);
432 
433 MFTYPE32 void MFTYPE MmodPreprocess (MIL_ID ContextId,
434  long ControlFlag);
435 
436 MFTYPE32 void MFTYPE MmodFind (MIL_ID ContextId,
437  MIL_ID TargetImageId,
438  MIL_ID ResultId);
439 
440 MFTYPE32 void MFTYPE MmodGetResult ( MIL_ID ResultId,
441  long ResultIndex,
442  long ResultType,
443  void *ResultArrayPtr );
444 
445 MFTYPE32 void MFTYPE MmodDraw (MIL_ID GraphContId,
446  MIL_ID ContextOrResultId,
447  MIL_ID DestImageBufId,
448  long Operation,
449  long Index,
450  long ControlFlag);
451 
452 MFTYPE32 void MFTYPE MmodSave (MIL_TEXT_PTR FileName,
453  MIL_ID ContextId,
454  long ControlFlag);
455 
456 MFTYPE32 MIL_ID MFTYPE MmodRestore (MIL_TEXT_PTR FileName,
457  MIL_ID SystemId,
458  long ControlFlag,
459  MIL_ID* ContextIdPtr);
460 
461 MFTYPE32 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