Blame view

3rdparty/opencv-4.5.4/modules/js/src/make_umd.py 5.35 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  ###############################################################################
  #
  #  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
  #
  #  By downloading, copying, installing or using the software you agree to this license.
  #  If you do not agree to this license, do not download, install,
  #  copy or use the software.
  #
  #
  #                           License Agreement
  #                For Open Source Computer Vision Library
  #
  # Copyright (C) 2013, OpenCV Foundation, all rights reserved.
  # Third party copyrights are property of their respective owners.
  #
  # Redistribution and use in source and binary forms, with or without modification,
  # are permitted provided that the following conditions are met:
  #
  #   * Redistribution's of source code must retain the above copyright notice,
  #     this list of conditions and the following disclaimer.
  #
  #   * Redistribution's in binary form must reproduce the above copyright notice,
  #     this list of conditions and the following disclaimer in the documentation
  #     and/or other materials provided with the distribution.
  #
  #   * The name of the copyright holders may not be used to endorse or promote products
  #     derived from this software without specific prior written permission.
  #
  # This software is provided by the copyright holders and contributors "as is" and
  # any express or implied warranties, including, but not limited to, the implied
  # warranties of merchantability and fitness for a particular purpose are disclaimed.
  # In no event shall the Intel Corporation or contributors be liable for any direct,
  # indirect, incidental, special, exemplary, or consequential damages
  # (including, but not limited to, procurement of substitute goods or services;
  # loss of use, data, or profits; or business interruption) however caused
  # and on any theory of liability, whether in contract, strict liability,
  # or tort (including negligence or otherwise) arising in any way out of
  # the use of this software, even if advised of the possibility of such damage.
  #
  
  ###############################################################################
  # AUTHOR: Sajjad Taheri, University of California, Irvine. sajjadt[at]uci[dot]edu
  #
  #                             LICENSE AGREEMENT
  # Copyright (c) 2015, 2015 The Regents of the University of California (Regents)
  #
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions are met:
  # 1. Redistributions of source code must retain the above copyright
  #    notice, this list of conditions and the following disclaimer.
  # 2. Redistributions in binary form must reproduce the above copyright
  #    notice, this list of conditions and the following disclaimer in the
  #    documentation and/or other materials provided with the distribution.
  # 3. Neither the name of the University nor the
  #    names of its contributors may be used to endorse or promote products
  #    derived from this software without specific prior written permission.
  #
  # THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND ANY
  # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  # DISCLAIMED. IN NO EVENT SHALL COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
  # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  ###############################################################################
  import os, sys, re, json, shutil
  from subprocess import Popen, PIPE, STDOUT
  
  PY3 = sys.version_info >= (3, 0)
  
  def make_umd(opencvjs, cvjs):
      with open(opencvjs, 'r+b') as src:
          content = src.read()
      if PY3:  # content is bytes
          content = content.decode('utf-8')
      with open(cvjs, 'w+b') as dst:
          # inspired by https://github.com/umdjs/umd/blob/95563fd6b46f06bda0af143ff67292e7f6ede6b7/templates/returnExportsGlobal.js
          dst.write(("""
  (function (root, factory) {
    if (typeof define === 'function' && define.amd) {
      // AMD. Register as an anonymous module.
      define(function () {
        return (root.cv = factory());
      });
    } else if (typeof module === 'object' && module.exports) {
      // Node. Does not work with strict CommonJS, but
      // only CommonJS-like environments that support module.exports,
      // like Node.
      module.exports = factory();
    } else if (typeof window === 'object') {
      // Browser globals
      root.cv = factory();
    } else if (typeof importScripts === 'function') {
      // Web worker
      root.cv = factory();
    } else {
      // Other shells, e.g. d8
      root.cv = factory();
    }
  }(this, function () {
    %s
    if (typeof Module === 'undefined')
      Module = {};
    return cv(Module);
  }));
          """ % (content)).lstrip().encode('utf-8'))
  
  
  if __name__ == "__main__":
      if len(sys.argv) > 2:
          opencvjs = sys.argv[1]
          cvjs = sys.argv[2]
          if not os.path.isfile(opencvjs):
              print('opencv.js file not found! Have you compiled the opencv_js module?')
              exit()
          make_umd(opencvjs, cvjs);