123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*****************************************************************************
- * HExtern.h
- *****************************************************************************
- *
- * Project: HALCON/libhalcon
- * Description: External variables and some global procedures for
- * language interfaces
- *
- * (c) 1996-2020 by MVTec Software GmbH
- * www.mvtec.com
- *
- *****************************************************************************/
- #ifndef HEXTERN_H
- #define HEXTERN_H
- #if defined(__cplusplus)
- extern "C" {
- #endif
- /* global variables for image processing */
- /* procedures description */
- extern HLibExport HINT HDoLowError; /* error messages of HALCON */
- extern HLibExport INT4 HLowErrorAction[4]; /* action for HALCON low */
- /* level error messages */
- extern HLibExport HINT HDoLicenseError; /* license msgs of HALCON */
- extern HLibExport HINT HUseSpinLock; /* sync initialization of
- * Parallel HALCON */
- extern HLibExport HINT HStartUpThreadPool; /* start thread pool
- * initially? */
- extern HLibExport HINT HShutdownThreadPool; /* shutdown thread pool
- * on termination? */
- extern HLibExport HINT HShuttingDown; /* currently terminating and
- * unloading HALCON Library? */
- /* Convenience function accessors as some development environments */
- /* do not directly support importing variables from C DLLs. */
- extern HLibExport void __stdcall HSetDoLicenseError(HINT value);
- extern HLibExport void __stdcall HSetUseSpinLock(HINT value);
- extern HLibExport void __stdcall HSetStartUpThreadPool(HINT value);
- extern HLibExport void __stdcall HSetShutdownThreadPool(HINT value);
- extern HLibExport HINT __stdcall HGetDoLicenseError(void);
- extern HLibExport HINT __stdcall HGetUseSpinLock(void);
- extern HLibExport HINT __stdcall HGetStartUpThreadPool(void);
- extern HLibExport HINT __stdcall HGetShutdownThreadPool(void);
- extern HLibExport HINT __stdcall HGetShuttingDown(void);
- /* remark: the structure above contains global HALCON system variables */
- /* which are (in the normal case) exclusively accessible via a valid */
- /* procedure handle and by using specific functions of the HALCON-Lib */
- /* source code file HInstance.c; those functions contain synchronization */
- /* mechanisms to guarantee a correct access to the variables even in case of */
- /* a parallel/multithreaded/reentrant HALCON version. */
- /* Nevertheless the structure is propagated here so that it also can be used */
- /* directly, but this should be done VERY CAREFULLY!! At the moment it is */
- /* only used directly within HDevelop, which means no problem, because */
- /* HDevelop works strictly sequentially, i.e. it calls all HALCON */
- /* operators one after another; */
- /* Functions to tell HALCON library the interface from which it gets accessed.
- * This enables the library to adapt its default behaviour. */
- extern HLibExport void __stdcall HSetHDevelopInt(HINT AccessByHDevelop);
- extern HLibExport HINT __stdcall HGetHDevelopInt(void);
- extern HLibExport void __stdcall HSetCOMInt(HINT AccessByCOM);
- extern HLibExport HINT __stdcall HGetCOMInt(void);
- /* Function to tell HALCON library about the console */
- #ifdef WIN32
- extern HLibExport void __stdcall HSetConsole(HINT ProcessId);
- #endif
- /* Function to register a license recheck failure callback. */
- extern HLibExport void __stdcall
- HSetLicenseRecheckFailedCallback(HLicenseRecheckFailedCallback callback,
- void *context);
- /* FinalizeHALCONLibrary prepares HALCON for finalization. It should be called
- * right before unloading the HALCON Library.
- * Return Value: H_ERR_FINI_USR_THREAD if there are still user threads running
- * that were using HALCON functionality. No resources are freed in this case.
- */
- extern HLibExport HINT __stdcall FinalizeHALCONLibrary(void);
- /* Callback interface for operators to signal their progress and current
- * status. External applications can register to receive such updates using
- * set_system('add_progress_callback', CallbackFunction).
- *
- * The registered callback is called by selected operators to signal their
- * progress and supply an update in text form. The parameters of the callback
- * are:
- * - id: Operating system specific thread identifier. Note that with Automatic
- * Operator Parallelization (AOP), the callback can be called from a
- * different thread than the one used to call the operator. The id is
- * thread independent and unique for the current operator call.
- * It is the result of GetCurrentThreadId() (Windows) or pthread_self
- * (UNIX) of the main thread used to call the operator.
- * - operator_name: Name of the operator that is executing
- * - progress: >=0: the current progress of the operator between 0 and 1.
- * Note that the progress is only an approximation.
- * -1: No progress available (only a message)
- * -2: the operator has finished execution. The application should
- * clean up any resources allocated for the operator.
- * Note that this call is done only for operators that
- * previously sent a progress update.
- * - message: If not NULL, a message about the operator's progress in english.
- */
- typedef void(__stdcall *HProgressBarCallback)(Hlong id,
- const char *operator_name,
- double progress,
- const char *message);
- #if defined(__cplusplus)
- }
- #endif
- #endif
|