jmgraph 3.2.16 → 3.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +251 -428
  3. package/build/gulpfile.js +142 -142
  4. package/build/package-lock.json +10666 -0
  5. package/build/package.json +71 -71
  6. package/dev.js +9 -9
  7. package/dist/jmgraph.core.min.js +1 -1
  8. package/dist/jmgraph.core.min.js.map +1 -1
  9. package/dist/jmgraph.js +3500 -2668
  10. package/dist/jmgraph.min.js +1 -1
  11. package/example/ball.html +216 -216
  12. package/example/base.html +111 -111
  13. package/example/canvas.html +53 -53
  14. package/example/cell.html +283 -283
  15. package/example/controls/arc.html +128 -128
  16. package/example/controls/arrowline.html +77 -77
  17. package/example/controls/bezier.html +298 -298
  18. package/example/controls/img.html +96 -96
  19. package/example/controls/label.html +86 -86
  20. package/example/controls/line.html +172 -172
  21. package/example/controls/prismatic.html +62 -62
  22. package/example/controls/rect.html +63 -63
  23. package/example/controls/resize.html +111 -111
  24. package/example/controls/test.html +359 -359
  25. package/example/es.html +69 -69
  26. package/example/es5module.html +62 -63
  27. package/example/heartarc.html +115 -115
  28. package/example/index.html +46 -46
  29. package/example/js/require.js +4 -4
  30. package/example/love/img/bling/bling.tps +265 -265
  31. package/example/love/img/bling.json +87 -87
  32. package/example/love/img/bling.tps +295 -295
  33. package/example/love/img/love.json +95 -95
  34. package/example/love/img/love.tps +315 -315
  35. package/example/love/img/qq/qq.tps +399 -399
  36. package/example/love/img/qq.json +242 -242
  37. package/example/love/index.html +40 -40
  38. package/example/love/js/game.js +558 -558
  39. package/example/music.html +210 -210
  40. package/example/node/test.js +137 -137
  41. package/example/pdf.html +186 -186
  42. package/example/progress.html +172 -172
  43. package/example/pso.html +147 -147
  44. package/example/sort.html +804 -815
  45. package/example/tweenjs.html +83 -83
  46. package/example/webgl.html +278 -278
  47. package/example/xfj/index.html +331 -331
  48. package/example/xfj/shake.js +48 -48
  49. package/example/xfj/testori.html +75 -75
  50. package/index.js +99 -99
  51. package/package.json +58 -56
  52. package/src/core/jmControl.js +1376 -1531
  53. package/src/core/jmEvents.js +240 -281
  54. package/src/core/jmGradient.js +231 -231
  55. package/src/core/jmGraph.js +569 -569
  56. package/src/core/jmList.js +92 -157
  57. package/src/core/jmObject.js +83 -103
  58. package/src/core/jmPath.js +35 -35
  59. package/src/core/jmProperty.js +71 -110
  60. package/src/core/jmShadow.js +65 -65
  61. package/src/core/jmUtils.js +906 -919
  62. package/src/lib/earcut.js +680 -680
  63. package/src/lib/earcut.md +73 -73
  64. package/src/lib/webgl/base.js +522 -452
  65. package/src/lib/webgl/core/buffer.js +48 -48
  66. package/src/lib/webgl/core/mapSize.js +40 -40
  67. package/src/lib/webgl/core/mapType.js +43 -43
  68. package/src/lib/webgl/core/program.js +138 -138
  69. package/src/lib/webgl/core/shader.js +13 -13
  70. package/src/lib/webgl/core/texture.js +60 -60
  71. package/src/lib/webgl/gradient.js +168 -168
  72. package/src/lib/webgl/index.js +137 -11
  73. package/src/lib/webgl/path.js +568 -561
  74. package/src/shapes/jmArrowLine.js +36 -36
  75. package/src/shapes/jmImage.js +244 -244
  76. package/src/shapes/jmLabel.js +271 -271
  77. package/src/shapes/jmResize.js +332 -330
@@ -1,49 +1,49 @@
1
-
2
- // 创建缓冲区
3
- function createBuffer(gl, data, type=gl.ARRAY_BUFFER, drawType=gl.STATIC_DRAW) {
4
- //先创建一个缓存对象
5
- const buffer = gl.createBuffer();
6
- if(!buffer) {
7
- throw Error('创建缓冲区对象失败');
8
- }
9
- //说明缓存对象保存的类型
10
- gl.bindBuffer(type, buffer);
11
- //写入坐标数据
12
- // 因为会将数据发送到 GPU,为了省去数据解析,这里使用 Float32Array 直接传送数据
13
- // data.buffer这里要使用data.buffer,否则在edge下可能导至数据发生较大的改变
14
- gl.bufferData(type, data.buffer || data, drawType); // 表示缓冲区的内容不会经常更改
15
- return {
16
- type,
17
- drawType,
18
- buffer,
19
- // 获取到数组中单个元素的字节数
20
- unitSize: data.BYTES_PER_ELEMENT
21
- };
22
- }
23
-
24
- // 创建float32的buffer
25
- function createFloat32Buffer(gl, data, type=gl.ARRAY_BUFFER, drawType=gl.STATIC_DRAW) {
26
- const vertices = new Float32Array(data);
27
- const buffer = createBuffer(gl, vertices, type, drawType);
28
- return buffer;
29
- }
30
-
31
- // 创建uint16的bugger
32
- function createUint16Buffer(gl, data, type=gl.ARRAY_BUFFER, drawType=gl.STATIC_DRAW) {
33
- const vertices = new Uint16Array(data);
34
- const buffer = createBuffer(gl, vertices, type, drawType);
35
- return buffer;
36
- }
37
-
38
- // 释放
39
- function deleteBuffer(gl, buffer) {
40
- gl.deleteBuffer(buffer.buffer || buffer);
41
- }
42
-
43
-
44
- export {
45
- createBuffer,
46
- createUint16Buffer,
47
- createFloat32Buffer,
48
- deleteBuffer,
1
+
2
+ // 创建缓冲区
3
+ function createBuffer(gl, data, type=gl.ARRAY_BUFFER, drawType=gl.STATIC_DRAW) {
4
+ //先创建一个缓存对象
5
+ const buffer = gl.createBuffer();
6
+ if(!buffer) {
7
+ throw Error('创建缓冲区对象失败');
8
+ }
9
+ //说明缓存对象保存的类型
10
+ gl.bindBuffer(type, buffer);
11
+ //写入坐标数据
12
+ // 因为会将数据发送到 GPU,为了省去数据解析,这里使用 Float32Array 直接传送数据
13
+ // data.buffer这里要使用data.buffer,否则在edge下可能导至数据发生较大的改变
14
+ gl.bufferData(type, data.buffer || data, drawType); // 表示缓冲区的内容不会经常更改
15
+ return {
16
+ type,
17
+ drawType,
18
+ buffer,
19
+ // 获取到数组中单个元素的字节数
20
+ unitSize: data.BYTES_PER_ELEMENT
21
+ };
22
+ }
23
+
24
+ // 创建float32的buffer
25
+ function createFloat32Buffer(gl, data, type=gl.ARRAY_BUFFER, drawType=gl.STATIC_DRAW) {
26
+ const vertices = new Float32Array(data);
27
+ const buffer = createBuffer(gl, vertices, type, drawType);
28
+ return buffer;
29
+ }
30
+
31
+ // 创建uint16的bugger
32
+ function createUint16Buffer(gl, data, type=gl.ARRAY_BUFFER, drawType=gl.STATIC_DRAW) {
33
+ const vertices = new Uint16Array(data);
34
+ const buffer = createBuffer(gl, vertices, type, drawType);
35
+ return buffer;
36
+ }
37
+
38
+ // 释放
39
+ function deleteBuffer(gl, buffer) {
40
+ gl.deleteBuffer(buffer.buffer || buffer);
41
+ }
42
+
43
+
44
+ export {
45
+ createBuffer,
46
+ createUint16Buffer,
47
+ createFloat32Buffer,
48
+ deleteBuffer,
49
49
  }
@@ -1,40 +1,40 @@
1
-
2
- const GLSL_TO_SIZE = {
3
- 'float': 1,
4
- 'vec2': 2,
5
- 'vec3': 3,
6
- 'vec4': 4,
7
-
8
- 'int': 1,
9
- 'ivec2': 2,
10
- 'ivec3': 3,
11
- 'ivec4': 4,
12
-
13
- 'bool': 1,
14
- 'bvec2': 2,
15
- 'bvec3': 3,
16
- 'bvec4': 4,
17
-
18
- 'mat2': 4,
19
- 'mat3': 9,
20
- 'mat4': 16,
21
-
22
- 'sampler2D': 1
23
- };
24
-
25
- /**
26
- * @class
27
- * @memberof PIXI.glCore.shader
28
- * @param type {String}
29
- * @return {Number}
30
- */
31
- const mapSize = function(type) {
32
- return GLSL_TO_SIZE[type];
33
- };
34
-
35
-
36
-
37
-
38
- export {
39
- mapSize
40
- }
1
+
2
+ const GLSL_TO_SIZE = {
3
+ 'float': 1,
4
+ 'vec2': 2,
5
+ 'vec3': 3,
6
+ 'vec4': 4,
7
+
8
+ 'int': 1,
9
+ 'ivec2': 2,
10
+ 'ivec3': 3,
11
+ 'ivec4': 4,
12
+
13
+ 'bool': 1,
14
+ 'bvec2': 2,
15
+ 'bvec3': 3,
16
+ 'bvec4': 4,
17
+
18
+ 'mat2': 4,
19
+ 'mat3': 9,
20
+ 'mat4': 16,
21
+
22
+ 'sampler2D': 1
23
+ };
24
+
25
+ /**
26
+ * @class
27
+ * @memberof PIXI.glCore.shader
28
+ * @param type {String}
29
+ * @return {Number}
30
+ */
31
+ const mapSize = function(type) {
32
+ return GLSL_TO_SIZE[type];
33
+ };
34
+
35
+
36
+
37
+
38
+ export {
39
+ mapSize
40
+ }
@@ -1,43 +1,43 @@
1
-
2
- var GL_TABLE = null;
3
-
4
- const GL_TO_GLSL_TYPES = {
5
- 'FLOAT': 'float',
6
- 'FLOAT_VEC2': 'vec2',
7
- 'FLOAT_VEC3': 'vec3',
8
- 'FLOAT_VEC4': 'vec4',
9
-
10
- 'INT': 'int',
11
- 'INT_VEC2': 'ivec2',
12
- 'INT_VEC3': 'ivec3',
13
- 'INT_VEC4': 'ivec4',
14
-
15
- 'BOOL': 'bool',
16
- 'BOOL_VEC2': 'bvec2',
17
- 'BOOL_VEC3': 'bvec3',
18
- 'BOOL_VEC4': 'bvec4',
19
-
20
- 'FLOAT_MAT2': 'mat2',
21
- 'FLOAT_MAT3': 'mat3',
22
- 'FLOAT_MAT4': 'mat4',
23
-
24
- 'SAMPLER_2D': 'sampler2D'
25
- };
26
-
27
- const mapType = function(gl, type) {
28
- if(!GL_TABLE) {
29
- const typeNames = Object.keys(GL_TO_GLSL_TYPES);
30
- GL_TABLE = {};
31
- for(let i = 0; i < typeNames.length; ++i) {
32
- const tn = typeNames[i];
33
- GL_TABLE[ gl[tn] ] = GL_TO_GLSL_TYPES[tn];
34
- }
35
- }
36
-
37
- return GL_TABLE[type];
38
- };
39
-
40
-
41
- export {
42
- mapType
43
- }
1
+
2
+ var GL_TABLE = null;
3
+
4
+ const GL_TO_GLSL_TYPES = {
5
+ 'FLOAT': 'float',
6
+ 'FLOAT_VEC2': 'vec2',
7
+ 'FLOAT_VEC3': 'vec3',
8
+ 'FLOAT_VEC4': 'vec4',
9
+
10
+ 'INT': 'int',
11
+ 'INT_VEC2': 'ivec2',
12
+ 'INT_VEC3': 'ivec3',
13
+ 'INT_VEC4': 'ivec4',
14
+
15
+ 'BOOL': 'bool',
16
+ 'BOOL_VEC2': 'bvec2',
17
+ 'BOOL_VEC3': 'bvec3',
18
+ 'BOOL_VEC4': 'bvec4',
19
+
20
+ 'FLOAT_MAT2': 'mat2',
21
+ 'FLOAT_MAT3': 'mat3',
22
+ 'FLOAT_MAT4': 'mat4',
23
+
24
+ 'SAMPLER_2D': 'sampler2D'
25
+ };
26
+
27
+ const mapType = function(gl, type) {
28
+ if(!GL_TABLE) {
29
+ const typeNames = Object.keys(GL_TO_GLSL_TYPES);
30
+ GL_TABLE = {};
31
+ for(let i = 0; i < typeNames.length; ++i) {
32
+ const tn = typeNames[i];
33
+ GL_TABLE[ gl[tn] ] = GL_TO_GLSL_TYPES[tn];
34
+ }
35
+ }
36
+
37
+ return GL_TABLE[type];
38
+ };
39
+
40
+
41
+ export {
42
+ mapType
43
+ }
@@ -1,139 +1,139 @@
1
- import {
2
- createShader
3
- } from './shader.js';
4
- import {
5
- mapSize
6
- } from './mapSize.js';
7
- import {
8
- mapType
9
- } from './mapType.js';
10
-
11
- // 创建程序
12
- function createProgram(gl, vertexSrc, fragmentSrc) {
13
- // 创建顶点着色器
14
- const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexSrc);
15
- // 创建片段着色器
16
- const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fragmentSrc);
17
-
18
- const program = gl.createProgram() // 创建一个程序
19
- gl.attachShader(program, vertexShader) // 添加顶点着色器
20
- gl.attachShader(program, fragmentShader) // 添加片元着色器
21
- gl.linkProgram(program) // 连接 program 中的着色器
22
-
23
- // 检查程序链接状态
24
- if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
25
- console.error('PError: Could not initialize shader.');
26
- console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS));
27
- console.error('gl.getError()', gl.getError());
28
-
29
- // if there is a program info log, log it
30
- if (gl.getProgramInfoLog(program) !== '') {
31
- console.warn('Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program));
32
- }
33
-
34
- gl.deleteProgram(program);
35
- }
36
-
37
- useProgram(gl, program);
38
-
39
- // clean up some shaders
40
- gl.deleteShader(vertexShader);
41
- gl.deleteShader(fragmentShader);
42
-
43
- const attrs = extractAttributes(gl, program);
44
- const uniforms = extractUniforms(gl, program);
45
-
46
- return {
47
- program,
48
- attrs,
49
- uniforms
50
- };
51
- }
52
-
53
- // 采用program
54
- function useProgram(gl, program) {
55
- return gl.useProgram(program); // 告诉 webgl 用这个 program 进行渲染
56
- }
57
-
58
- function extractAttributes(gl, program) {
59
- const attributes = {};
60
-
61
- const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
62
-
63
- for (let i = 0; i < count; i++){
64
- const attribData = gl.getActiveAttrib(program, i);
65
- const type = mapType(gl, attribData.type);
66
- attributes[attribData.name] = {
67
- attribData,
68
- size: mapSize(type),
69
- type,
70
- location: gl.getAttribLocation(program, attribData.name),
71
- };
72
- }
73
-
74
- return attributes;
75
- }
76
-
77
- function extractUniforms(gl, program) {
78
- const uniforms = {};
79
-
80
- const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
81
-
82
- for (let i = 0; i < count; i++) {
83
- const uniformData = gl.getActiveUniform(program, i);
84
- const name = uniformData.name.replace(/\[.*?\]/, "");
85
- const type = mapType(gl, uniformData.type );
86
-
87
- uniforms[name] = {
88
- uniformData,
89
- type: type,
90
- size: uniformData.size,
91
- location: gl.getUniformLocation(program, name),
92
- };
93
- }
94
-
95
- return uniforms;
96
- };
97
-
98
-
99
- // 把缓冲区的值写入变量
100
- // size: 组成数量,必须是1,2,3或4. 每个单元由多少个数组成
101
- // strip: 步长 数组中一行长度,0 表示数据是紧密的没有空隙,让OpenGL决定具体步长
102
- // offset: 字节偏移量,必须是类型的字节长度的倍数。
103
- // dataType: 每个元素的数据类型
104
- function writeVertexAttrib(gl, buffer, attr, size=2, strip=0, offset=0, dataType=gl.FLOAT) {
105
- gl.bindBuffer(buffer.type, buffer.buffer);
106
- gl.vertexAttribPointer( // 告诉 OpenGL 如何从 Buffer 中获取数据
107
- attr.location, // 顶点属性的索引
108
- size, // 组成数量,必须是1,2,3或4。我们只提供了 x 和 y
109
- dataType,
110
- false, // 是否归一化到特定的范围,对 FLOAT 类型数据设置无效
111
- strip * buffer.unitSize,
112
- offset
113
- );
114
- gl.enableVertexAttribArray(attr.location);
115
- return buffer;
116
- }
117
-
118
- function disableVertexAttribArray(gl, attr) {
119
- return gl.disableVertexAttribArray(attr.location);
120
- }
121
-
122
- function getAttribLocation(gl, program, name) {
123
- return gl.getAttribLocation(program, name);
124
- }
125
-
126
- function getUniformLocation(gl, program, name) {
127
- return gl.getUniformLocation(program, name);
128
- }
129
-
130
- export {
131
- createProgram,
132
- useProgram,
133
- getAttribLocation,
134
- getUniformLocation,
135
- extractAttributes,
136
- extractUniforms,
137
- writeVertexAttrib,
138
- disableVertexAttribArray
1
+ import {
2
+ createShader
3
+ } from './shader.js';
4
+ import {
5
+ mapSize
6
+ } from './mapSize.js';
7
+ import {
8
+ mapType
9
+ } from './mapType.js';
10
+
11
+ // 创建程序
12
+ function createProgram(gl, vertexSrc, fragmentSrc) {
13
+ // 创建顶点着色器
14
+ const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexSrc);
15
+ // 创建片段着色器
16
+ const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fragmentSrc);
17
+
18
+ const program = gl.createProgram() // 创建一个程序
19
+ gl.attachShader(program, vertexShader) // 添加顶点着色器
20
+ gl.attachShader(program, fragmentShader) // 添加片元着色器
21
+ gl.linkProgram(program) // 连接 program 中的着色器
22
+
23
+ // 检查程序链接状态
24
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
25
+ console.error('PError: Could not initialize shader.');
26
+ console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS));
27
+ console.error('gl.getError()', gl.getError());
28
+
29
+ // if there is a program info log, log it
30
+ if (gl.getProgramInfoLog(program) !== '') {
31
+ console.warn('Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program));
32
+ }
33
+
34
+ gl.deleteProgram(program);
35
+ }
36
+
37
+ useProgram(gl, program);
38
+
39
+ // clean up some shaders
40
+ gl.deleteShader(vertexShader);
41
+ gl.deleteShader(fragmentShader);
42
+
43
+ const attrs = extractAttributes(gl, program);
44
+ const uniforms = extractUniforms(gl, program);
45
+
46
+ return {
47
+ program,
48
+ attrs,
49
+ uniforms
50
+ };
51
+ }
52
+
53
+ // 采用program
54
+ function useProgram(gl, program) {
55
+ return gl.useProgram(program); // 告诉 webgl 用这个 program 进行渲染
56
+ }
57
+
58
+ function extractAttributes(gl, program) {
59
+ const attributes = {};
60
+
61
+ const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
62
+
63
+ for (let i = 0; i < count; i++){
64
+ const attribData = gl.getActiveAttrib(program, i);
65
+ const type = mapType(gl, attribData.type);
66
+ attributes[attribData.name] = {
67
+ attribData,
68
+ size: mapSize(type),
69
+ type,
70
+ location: gl.getAttribLocation(program, attribData.name),
71
+ };
72
+ }
73
+
74
+ return attributes;
75
+ }
76
+
77
+ function extractUniforms(gl, program) {
78
+ const uniforms = {};
79
+
80
+ const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
81
+
82
+ for (let i = 0; i < count; i++) {
83
+ const uniformData = gl.getActiveUniform(program, i);
84
+ const name = uniformData.name.replace(/\[.*?\]/, "");
85
+ const type = mapType(gl, uniformData.type );
86
+
87
+ uniforms[name] = {
88
+ uniformData,
89
+ type: type,
90
+ size: uniformData.size,
91
+ location: gl.getUniformLocation(program, name),
92
+ };
93
+ }
94
+
95
+ return uniforms;
96
+ };
97
+
98
+
99
+ // 把缓冲区的值写入变量
100
+ // size: 组成数量,必须是1,2,3或4. 每个单元由多少个数组成
101
+ // strip: 步长 数组中一行长度,0 表示数据是紧密的没有空隙,让OpenGL决定具体步长
102
+ // offset: 字节偏移量,必须是类型的字节长度的倍数。
103
+ // dataType: 每个元素的数据类型
104
+ function writeVertexAttrib(gl, buffer, attr, size=2, strip=0, offset=0, dataType=gl.FLOAT) {
105
+ gl.bindBuffer(buffer.type, buffer.buffer);
106
+ gl.vertexAttribPointer( // 告诉 OpenGL 如何从 Buffer 中获取数据
107
+ attr.location, // 顶点属性的索引
108
+ size, // 组成数量,必须是1,2,3或4。我们只提供了 x 和 y
109
+ dataType,
110
+ false, // 是否归一化到特定的范围,对 FLOAT 类型数据设置无效
111
+ strip * buffer.unitSize,
112
+ offset
113
+ );
114
+ gl.enableVertexAttribArray(attr.location);
115
+ return buffer;
116
+ }
117
+
118
+ function disableVertexAttribArray(gl, attr) {
119
+ return gl.disableVertexAttribArray(attr.location);
120
+ }
121
+
122
+ function getAttribLocation(gl, program, name) {
123
+ return gl.getAttribLocation(program, name);
124
+ }
125
+
126
+ function getUniformLocation(gl, program, name) {
127
+ return gl.getUniformLocation(program, name);
128
+ }
129
+
130
+ export {
131
+ createProgram,
132
+ useProgram,
133
+ getAttribLocation,
134
+ getUniformLocation,
135
+ extractAttributes,
136
+ extractUniforms,
137
+ writeVertexAttrib,
138
+ disableVertexAttribArray
139
139
  }
@@ -1,14 +1,14 @@
1
- // 生成着色器
2
- // type: gl.VERTEX_SHADER 顶点着色器 , gl.FRAGMENT_SHADER 片段着色器
3
- // src: 着色器代码
4
- function createShader(gl, type, src) {
5
- const shader = gl.createShader(type) // 创建一个顶点着色器
6
- gl.shaderSource(shader, src); // 编写顶点着色器代码
7
- gl.compileShader(shader); // 编译着色器
8
-
9
- return shader;
10
- }
11
-
12
- export {
13
- createShader
1
+ // 生成着色器
2
+ // type: gl.VERTEX_SHADER 顶点着色器 , gl.FRAGMENT_SHADER 片段着色器
3
+ // src: 着色器代码
4
+ function createShader(gl, type, src) {
5
+ const shader = gl.createShader(type) // 创建一个顶点着色器
6
+ gl.shaderSource(shader, src); // 编写顶点着色器代码
7
+ gl.compileShader(shader); // 编译着色器
8
+
9
+ return shader;
10
+ }
11
+
12
+ export {
13
+ createShader
14
14
  }