Blame view

3rdparty/opencv-4.5.4/modules/highgui/src/plugin_api.hpp 2.44 KB
f4334277   Hu Chunming   提交3rdparty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
  // This file is part of OpenCV project.
  // It is subject to the license terms in the LICENSE file found in the top-level directory
  // of this distribution and at http://opencv.org/license.html.
  
  #ifndef UI_PLUGIN_API_HPP
  #define UI_PLUGIN_API_HPP
  
  #include <opencv2/core/cvdef.h>
  #include <opencv2/core/llapi/llapi.h>
  
  #include "backend.hpp"
  
  #if !defined(BUILD_PLUGIN)
  
  /// increased for backward-compatible changes, e.g. add new function
  /// Caller API <= Plugin API -> plugin is fully compatible
  /// Caller API > Plugin API -> plugin is not fully compatible, caller should use extra checks to use plugins with older API
  #define API_VERSION 0 // preview
  
  /// increased for incompatible changes, e.g. remove function argument
  /// Caller ABI == Plugin ABI -> plugin is compatible
  /// Caller ABI > Plugin ABI -> plugin is not compatible, caller should use shim code to use old ABI plugins (caller may know how lower ABI works, so it is possible)
  /// Caller ABI < Plugin ABI -> plugin can't be used (plugin should provide interface with lower ABI to handle that)
  #define ABI_VERSION 0 // preview
  
  #else // !defined(BUILD_PLUGIN)
  
  #if !defined(ABI_VERSION) || !defined(API_VERSION)
  #error "Plugin must define ABI_VERSION and API_VERSION before including plugin_api.hpp"
  #endif
  
  #endif // !defined(BUILD_PLUGIN)
  
  typedef cv::highgui_backend::UIBackend* CvPluginUIBackend;
  
  struct OpenCV_UI_Plugin_API_v0_0_api_entries
  {
      /** @brief Get backend API instance
  
      @param[out] handle pointer on backend API handle
  
      @note API-CALL 1, API-Version == 0
       */
      CvResult (CV_API_CALL *getInstance)(CV_OUT CvPluginUIBackend* handle) CV_NOEXCEPT;
  }; // OpenCV_UI_Plugin_API_v0_0_api_entries
  
  typedef struct OpenCV_UI_Plugin_API_v0
  {
      OpenCV_API_Header api_header;
      struct OpenCV_UI_Plugin_API_v0_0_api_entries v0;
  } OpenCV_UI_Plugin_API_v0;
  
  #if ABI_VERSION == 0 && API_VERSION == 0
  typedef OpenCV_UI_Plugin_API_v0 OpenCV_UI_Plugin_API;
  #else
  #error "Not supported configuration: check ABI_VERSION/API_VERSION"
  #endif
  
  #ifdef BUILD_PLUGIN
  extern "C" {
  
  CV_PLUGIN_EXPORTS
  const OpenCV_UI_Plugin_API* CV_API_CALL opencv_ui_plugin_init_v0
          (int requested_abi_version, int requested_api_version, void* reserved /*NULL*/) CV_NOEXCEPT;
  
  }  // extern "C"
  #else  // BUILD_PLUGIN
  typedef const OpenCV_UI_Plugin_API* (CV_API_CALL *FN_opencv_ui_plugin_init_t)
          (int requested_abi_version, int requested_api_version, void* reserved /*NULL*/);
  #endif  // BUILD_PLUGIN
  
  #endif // UI_PLUGIN_API_HPP