@gjsify/webgl 0.0.4 → 0.1.0

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 (149) hide show
  1. package/README.md +78 -6
  2. package/lib/esm/canvas-webgl-widget.js +116 -0
  3. package/lib/esm/html-canvas-element.js +31 -50
  4. package/lib/esm/index.js +7 -0
  5. package/lib/esm/index.spec.js +629 -120
  6. package/lib/esm/test-utils.js +87 -0
  7. package/lib/esm/test.js +5 -1
  8. package/lib/esm/utils.js +1 -1
  9. package/lib/esm/webgl-active-info.js +2 -2
  10. package/lib/esm/webgl-buffer.js +2 -3
  11. package/lib/esm/webgl-context-attributes.js +2 -3
  12. package/lib/esm/webgl-framebuffer.js +3 -4
  13. package/lib/esm/webgl-program.js +2 -3
  14. package/lib/esm/webgl-query.js +15 -0
  15. package/lib/esm/webgl-renderbuffer.js +2 -3
  16. package/lib/esm/webgl-rendering-context.js +105 -101
  17. package/lib/esm/webgl-sampler.js +15 -0
  18. package/lib/esm/webgl-shader-precision-format.js +2 -3
  19. package/lib/esm/webgl-shader.js +2 -3
  20. package/lib/esm/webgl-sync.js +15 -0
  21. package/lib/esm/webgl-texture.js +2 -3
  22. package/lib/esm/webgl-transform-feedback.js +15 -0
  23. package/lib/esm/webgl-uniform-location.js +2 -3
  24. package/lib/esm/webgl-vertex-array-object.js +21 -0
  25. package/lib/esm/webgl2-rendering-context.js +591 -0
  26. package/lib/esm/webgl2.spec.js +578 -0
  27. package/lib/types/canvas-webgl-widget.d.ts +509 -0
  28. package/lib/types/extensions/ext-blend-minmax.d.ts +2 -2
  29. package/lib/types/extensions/ext-texture-filter-anisotropic.d.ts +2 -2
  30. package/lib/types/extensions/oes-element-index-unit.d.ts +2 -2
  31. package/lib/types/extensions/oes-standard-derivatives.d.ts +2 -2
  32. package/lib/types/extensions/oes-texture-float-linear.d.ts +2 -2
  33. package/lib/types/extensions/oes-texture-float.d.ts +2 -2
  34. package/lib/types/extensions/stackgl-destroy-context.d.ts +3 -3
  35. package/lib/types/extensions/stackgl-resize-drawing-buffer.d.ts +3 -3
  36. package/lib/types/html-canvas-element.d.ts +19 -31
  37. package/lib/types/index.d.ts +7 -0
  38. package/lib/types/test-utils.d.ts +45 -0
  39. package/lib/types/types/extension.d.ts +2 -2
  40. package/lib/types/utils.d.ts +14 -15
  41. package/lib/types/webgl-active-info.d.ts +1 -2
  42. package/lib/types/webgl-buffer.d.ts +5 -6
  43. package/lib/types/webgl-context-attributes.d.ts +1 -2
  44. package/lib/types/webgl-framebuffer.d.ts +4 -5
  45. package/lib/types/webgl-program.d.ts +4 -5
  46. package/lib/types/webgl-query.d.ts +7 -0
  47. package/lib/types/webgl-renderbuffer.d.ts +4 -5
  48. package/lib/types/webgl-rendering-context.d.ts +15 -13
  49. package/lib/types/webgl-sampler.d.ts +7 -0
  50. package/lib/types/webgl-shader-precision-format.d.ts +1 -2
  51. package/lib/types/webgl-shader.d.ts +4 -5
  52. package/lib/types/webgl-sync.d.ts +7 -0
  53. package/lib/types/webgl-texture-unit.d.ts +3 -3
  54. package/lib/types/webgl-texture.d.ts +6 -7
  55. package/lib/types/webgl-transform-feedback.d.ts +7 -0
  56. package/lib/types/webgl-uniform-location.d.ts +3 -4
  57. package/lib/types/webgl-vertex-array-object.d.ts +9 -0
  58. package/lib/types/webgl-vertex-attribute.d.ts +5 -5
  59. package/lib/types/webgl2-rendering-context.d.ts +124 -0
  60. package/package.json +27 -26
  61. package/prebuilds/linux-aarch64/Gwebgl-0.1.typelib +0 -0
  62. package/prebuilds/linux-aarch64/libgwebgl.so +0 -0
  63. package/prebuilds/linux-x86_64/Gwebgl-0.1.typelib +0 -0
  64. package/prebuilds/linux-x86_64/libgwebgl.so +0 -0
  65. package/lib/cjs/@types/glsl-tokenizer/index.d.js +0 -0
  66. package/lib/cjs/extensions/ext-blend-minmax.js +0 -18
  67. package/lib/cjs/extensions/ext-texture-filter-anisotropic.js +0 -18
  68. package/lib/cjs/extensions/oes-element-index-unit.js +0 -14
  69. package/lib/cjs/extensions/oes-standard-derivatives.js +0 -17
  70. package/lib/cjs/extensions/oes-texture-float-linear.js +0 -14
  71. package/lib/cjs/extensions/oes-texture-float.js +0 -14
  72. package/lib/cjs/extensions/stackgl-destroy-context.js +0 -12
  73. package/lib/cjs/extensions/stackgl-resize-drawing-buffer.js +0 -12
  74. package/lib/cjs/html-canvas-element.js +0 -70
  75. package/lib/cjs/index.js +0 -18
  76. package/lib/cjs/index.spec.js +0 -146
  77. package/lib/cjs/linkable.js +0 -50
  78. package/lib/cjs/test.js +0 -3
  79. package/lib/cjs/types/constructor.js +0 -0
  80. package/lib/cjs/types/extension.js +0 -0
  81. package/lib/cjs/types/index.js +0 -5
  82. package/lib/cjs/types/typed-array.js +0 -0
  83. package/lib/cjs/types/webgl-constants.js +0 -0
  84. package/lib/cjs/types/webgl-context-attribute-options.js +0 -0
  85. package/lib/cjs/utils.js +0 -212
  86. package/lib/cjs/webgl-active-info.js +0 -10
  87. package/lib/cjs/webgl-buffer.js +0 -18
  88. package/lib/cjs/webgl-context-attributes.js +0 -24
  89. package/lib/cjs/webgl-drawing-buffer-wrapper.js +0 -10
  90. package/lib/cjs/webgl-framebuffer.js +0 -109
  91. package/lib/cjs/webgl-program.js +0 -26
  92. package/lib/cjs/webgl-renderbuffer.js +0 -24
  93. package/lib/cjs/webgl-rendering-context.js +0 -3343
  94. package/lib/cjs/webgl-shader-precision-format.js +0 -11
  95. package/lib/cjs/webgl-shader.js +0 -23
  96. package/lib/cjs/webgl-texture-unit.js +0 -12
  97. package/lib/cjs/webgl-texture.js +0 -22
  98. package/lib/cjs/webgl-uniform-location.js +0 -15
  99. package/lib/cjs/webgl-vertex-attribute.js +0 -147
  100. package/meson.build +0 -39
  101. package/src/test/app.vala +0 -60
  102. package/src/ts/@types/glsl-tokenizer/index.d.ts +0 -18
  103. package/src/ts/extensions/angle-instanced-arrays.ts.off +0 -232
  104. package/src/ts/extensions/ext-blend-minmax.ts +0 -18
  105. package/src/ts/extensions/ext-texture-filter-anisotropic.ts +0 -18
  106. package/src/ts/extensions/oes-element-index-unit.ts +0 -14
  107. package/src/ts/extensions/oes-standard-derivatives.ts +0 -17
  108. package/src/ts/extensions/oes-texture-float-linear.ts +0 -14
  109. package/src/ts/extensions/oes-texture-float.ts +0 -14
  110. package/src/ts/extensions/oes-vertex-array-object.ts.off +0 -128
  111. package/src/ts/extensions/stackgl-destroy-context.ts +0 -12
  112. package/src/ts/extensions/stackgl-resize-drawing-buffer.ts +0 -14
  113. package/src/ts/extensions/webgl-draw-buffers.ts.off +0 -107
  114. package/src/ts/html-canvas-element.ts +0 -98
  115. package/src/ts/index.spec.ts +0 -186
  116. package/src/ts/index.ts +0 -21
  117. package/src/ts/linkable.ts +0 -55
  118. package/src/ts/test.ts +0 -6
  119. package/src/ts/types/constructor.ts +0 -3
  120. package/src/ts/types/extension.ts +0 -3
  121. package/src/ts/types/index.ts +0 -26
  122. package/src/ts/types/typed-array.ts +0 -1
  123. package/src/ts/types/webgl-constants.ts +0 -300
  124. package/src/ts/types/webgl-context-attribute-options.ts +0 -12
  125. package/src/ts/utils.ts +0 -266
  126. package/src/ts/webgl-active-info.ts +0 -13
  127. package/src/ts/webgl-buffer.ts +0 -21
  128. package/src/ts/webgl-context-attributes.ts +0 -24
  129. package/src/ts/webgl-drawing-buffer-wrapper.ts +0 -10
  130. package/src/ts/webgl-framebuffer.ts +0 -133
  131. package/src/ts/webgl-program.ts +0 -30
  132. package/src/ts/webgl-renderbuffer.ts +0 -28
  133. package/src/ts/webgl-rendering-context.ts +0 -4050
  134. package/src/ts/webgl-shader-precision-format.ts +0 -12
  135. package/src/ts/webgl-shader.ts +0 -29
  136. package/src/ts/webgl-texture-unit.ts +0 -16
  137. package/src/ts/webgl-texture.ts +0 -27
  138. package/src/ts/webgl-uniform-location.ts +0 -18
  139. package/src/ts/webgl-vertex-attribute.ts +0 -169
  140. package/src/vala/handle-types.vala +0 -23
  141. package/src/vala/webgl-rendering-context-base.vala +0 -1265
  142. package/src/vala/webgl-rendering-context.vala +0 -265
  143. package/src/vapi/epoxy.vapi +0 -14558
  144. package/src/vapi/glesv2.vapi +0 -670
  145. package/test.gjs.js +0 -39937
  146. package/test.gjs.js.meta.json +0 -1
  147. package/tmp/.tsbuildinfo +0 -1
  148. package/tsconfig.json +0 -38
  149. package/tsconfig.types.json +0 -7
package/package.json CHANGED
@@ -1,54 +1,55 @@
1
1
  {
2
2
  "name": "@gjsify/webgl",
3
- "version": "0.0.4",
3
+ "version": "0.1.0",
4
4
  "description": "WebGL module for Gjs",
5
- "main": "lib/cjs/index.js",
6
5
  "module": "lib/esm/index.js",
7
6
  "types": "lib/types/index.d.ts",
8
7
  "type": "module",
9
8
  "exports": {
10
9
  ".": {
11
- "import": {
12
- "types": "./lib/types/index.d.ts",
13
- "default": "./lib/esm/index.js"
14
- },
15
- "require": {
16
- "types": "./lib/types/index.d.ts",
17
- "default": "./lib/cjs/index.js"
18
- }
10
+ "types": "./lib/types/index.d.ts",
11
+ "default": "./lib/esm/index.js"
19
12
  }
20
13
  },
14
+ "files": [
15
+ "lib",
16
+ "prebuilds"
17
+ ],
18
+ "gjsify": {
19
+ "prebuilds": "prebuilds"
20
+ },
21
21
  "scripts": {
22
- "clear": "rm -rf lib tmp build test.gjs.js tsconfig.tsbuildinfo",
23
- "print:name": "echo '@gjsify/webgl'",
22
+ "clear": "rm -rf lib tmp build test.gjs.mjs tsconfig.tsbuildinfo tsconfig.types.tsbuildinfo || exit 0",
23
+ "check": "tsc --noEmit",
24
24
  "init:meson": "meson setup build .",
25
25
  "init:meson:wipe": "yarn init:meson --wipe",
26
- "build": "yarn print:name && yarn build:meson && yarn build:gjsify && yarn build:types",
26
+ "build": "yarn build:meson && yarn build:gjsify && yarn build:types",
27
27
  "build:gjsify": "gjsify build --library 'src/ts/**/*.{ts,js}'",
28
28
  "build:meson": "yarn init:meson && meson compile -C build",
29
- "build:types": "tsc --project tsconfig.types.json || exit 0",
29
+ "build:types": "tsc",
30
+ "build:prebuilds": "yarn build:meson && mkdir -p prebuilds/linux-x86_64 && cp build/libgwebgl.so build/Gwebgl-0.1.typelib prebuilds/linux-x86_64/",
30
31
  "build:test": "gjsify build src/ts/test.ts --app gjs --outfile test.gjs.js",
31
- "test": "yarn print:name && yarn build:gjsify && yarn build:test && yarn test:gjs",
32
- "test:gjs": "LD_LIBRARY_PATH=build GI_TYPELIB_PATH=build gjs -m test.gjs.js"
32
+ "test": "yarn build:gjsify && yarn build:test && yarn test:gjs",
33
+ "test:gjs": "gjsify run test.gjs.js"
33
34
  },
34
35
  "keywords": [
35
36
  "gjs",
36
37
  "WebGL"
37
38
  ],
38
39
  "devDependencies": {
39
- "@gjsify/cli": "^0.0.4",
40
- "@gjsify/unit": "^0.0.4",
41
- "@types/node": "^20.10.5",
42
- "typescript": "^5.3.3"
40
+ "@gjsify/cli": "^0.1.0",
41
+ "@gjsify/unit": "^0.1.0",
42
+ "@types/bit-twiddle": "^1.0.3",
43
+ "@types/node": "^25.5.0",
44
+ "typescript": "^6.0.2"
43
45
  },
44
46
  "dependencies": {
45
- "@girs/gio-2.0": "2.78.0-3.2.6",
46
- "@girs/gjs": "^3.2.6",
47
- "@girs/gtk-4.0": "4.12.3-3.2.6",
47
+ "@girs/gjs": "^4.0.0-beta.42",
48
+ "@girs/gtk-4.0": "^4.22.1-4.0.0-beta.42",
48
49
  "@girs/gwebgl-0.1": "^0.1.0-3.1.0",
49
- "@gjsify/html-image-element": "^0.0.4",
50
- "@gjsify/utils": "^0.0.4",
51
- "@types/bit-twiddle": "^1.0.3",
50
+ "@gjsify/dom-elements": "^0.1.0",
51
+ "@gjsify/event-bridge": "^0.1.0",
52
+ "@gjsify/utils": "^0.1.0",
52
53
  "bit-twiddle": "^1.0.2",
53
54
  "glsl-tokenizer": "^2.1.5"
54
55
  }
File without changes
@@ -1,18 +0,0 @@
1
- class EXTBlendMinMax {
2
- constructor() {
3
- this.MIN_EXT = 32775;
4
- this.MAX_EXT = 32776;
5
- }
6
- }
7
- function getEXTBlendMinMax(context) {
8
- let result = null;
9
- const exts = context.getSupportedExtensions();
10
- if (exts && exts.indexOf("EXT_blend_minmax") >= 0) {
11
- result = new EXTBlendMinMax();
12
- }
13
- return result;
14
- }
15
- export {
16
- EXTBlendMinMax,
17
- getEXTBlendMinMax
18
- };
@@ -1,18 +0,0 @@
1
- class EXTTextureFilterAnisotropic {
2
- constructor() {
3
- this.TEXTURE_MAX_ANISOTROPY_EXT = 34046;
4
- this.MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047;
5
- }
6
- }
7
- function getEXTTextureFilterAnisotropic(context) {
8
- let result = null;
9
- const exts = context.getSupportedExtensions();
10
- if (exts && exts.indexOf("EXT_texture_filter_anisotropic") >= 0) {
11
- result = new EXTTextureFilterAnisotropic();
12
- }
13
- return result;
14
- }
15
- export {
16
- EXTTextureFilterAnisotropic,
17
- getEXTTextureFilterAnisotropic
18
- };
@@ -1,14 +0,0 @@
1
- class OESElementIndexUint {
2
- }
3
- function getOESElementIndexUint(context) {
4
- let result = null;
5
- const exts = context.getSupportedExtensions();
6
- if (exts && exts.indexOf("OES_element_index_uint") >= 0) {
7
- result = new OESElementIndexUint();
8
- }
9
- return result;
10
- }
11
- export {
12
- OESElementIndexUint,
13
- getOESElementIndexUint
14
- };
@@ -1,17 +0,0 @@
1
- class OESStandardDerivatives {
2
- constructor() {
3
- this.FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723;
4
- }
5
- }
6
- function getOESStandardDerivatives(context) {
7
- let result = null;
8
- const exts = context.getSupportedExtensions();
9
- if (exts && exts.indexOf("OES_standard_derivatives") >= 0) {
10
- result = new OESStandardDerivatives();
11
- }
12
- return result;
13
- }
14
- export {
15
- OESStandardDerivatives,
16
- getOESStandardDerivatives
17
- };
@@ -1,14 +0,0 @@
1
- class OESTextureFloatLinear {
2
- }
3
- function getOESTextureFloatLinear(context) {
4
- let result = null;
5
- const exts = context.getSupportedExtensions();
6
- if (exts && exts.indexOf("OES_texture_float_linear") >= 0) {
7
- result = new OESTextureFloatLinear();
8
- }
9
- return result;
10
- }
11
- export {
12
- OESTextureFloatLinear,
13
- getOESTextureFloatLinear
14
- };
@@ -1,14 +0,0 @@
1
- class OESTextureFloat {
2
- }
3
- function getOESTextureFloat(context) {
4
- let result = null;
5
- const exts = context.getSupportedExtensions();
6
- if (exts && exts.indexOf("OES_texture_float") >= 0) {
7
- result = new OESTextureFloat();
8
- }
9
- return result;
10
- }
11
- export {
12
- OESTextureFloat,
13
- getOESTextureFloat
14
- };
@@ -1,12 +0,0 @@
1
- class STACKGLDestroyContext {
2
- constructor(ctx) {
3
- this.destroy = ctx.destroy.bind(ctx);
4
- }
5
- }
6
- function getSTACKGLDestroyContext(ctx) {
7
- return new STACKGLDestroyContext(ctx);
8
- }
9
- export {
10
- STACKGLDestroyContext,
11
- getSTACKGLDestroyContext
12
- };
@@ -1,12 +0,0 @@
1
- class STACKGLResizeDrawingBuffer {
2
- constructor(ctx) {
3
- this.resize = ctx.resize.bind(ctx);
4
- }
5
- }
6
- function getSTACKGLResizeDrawingBuffer(ctx) {
7
- return new STACKGLResizeDrawingBuffer(ctx);
8
- }
9
- export {
10
- STACKGLResizeDrawingBuffer,
11
- getSTACKGLResizeDrawingBuffer
12
- };
@@ -1,70 +0,0 @@
1
- import { warnNotImplemented, notImplemented } from "@gjsify/utils";
2
- import { GjsifyWebGLRenderingContext } from "./webgl-rendering-context.js";
3
- class GjsifyHTMLCanvasElement {
4
- constructor(gtkGlArea) {
5
- this.gtkGlArea = gtkGlArea;
6
- }
7
- _getGlArea() {
8
- return this.gtkGlArea;
9
- }
10
- /** Gets the height of a canvas element on a document. */
11
- get height() {
12
- return this.gtkGlArea.get_allocated_height();
13
- }
14
- get clientHeight() {
15
- return this.height;
16
- }
17
- /** Sets the height of a canvas element on a document. */
18
- set height(_height) {
19
- warnNotImplemented("GjsifyHTMLCanvasElement.set_height");
20
- }
21
- /** Gets the width of a canvas element on a document. */
22
- get width() {
23
- return this.gtkGlArea.get_allocated_width();
24
- }
25
- /** Sets the width of a canvas element on a document. */
26
- set width(_width) {
27
- warnNotImplemented("GjsifyHTMLCanvasElement.set_width");
28
- }
29
- get clientWidth() {
30
- return this.width;
31
- }
32
- captureStream(_frameRequestRate) {
33
- notImplemented("HTMLCanvasElement.captureStream");
34
- return new MediaStream();
35
- }
36
- getContext(contextId, options) {
37
- switch (contextId) {
38
- case "webgl":
39
- if (this._webgl) {
40
- return this._webgl;
41
- }
42
- this._webgl = new GjsifyWebGLRenderingContext(this, options);
43
- return this._webgl;
44
- default:
45
- warnNotImplemented(`GjsifyHTMLCanvasElement.getContext("${contextId}")`);
46
- }
47
- return null;
48
- }
49
- toBlob(_callback, _type, _quality) {
50
- notImplemented("HTMLCanvasElement.toBlob");
51
- }
52
- /**
53
- * Returns the content of the current canvas as an image that you can use as a source for another canvas or an HTML element.
54
- * @param _type The standard MIME type for the image format to return. If you do not specify this parameter, the default value is a PNG format image.
55
- */
56
- toDataURL(_type, _quality) {
57
- notImplemented("HTMLCanvasElement.toDataURL");
58
- return "";
59
- }
60
- addEventListener(_type, _listener, _options) {
61
- notImplemented("HTMLCanvasElement.addEventListener");
62
- }
63
- removeEventListener(_type, _listener, _options) {
64
- notImplemented("HTMLCanvasElement.removeEventListener");
65
- }
66
- }
67
- export {
68
- GjsifyHTMLCanvasElement,
69
- GjsifyHTMLCanvasElement as HTMLCanvasElement
70
- };
package/lib/cjs/index.js DELETED
@@ -1,18 +0,0 @@
1
- import "@girs/gjs";
2
- import "@girs/gio-2.0";
3
- import "@girs/gtk-4.0";
4
- export * from "./html-canvas-element.js";
5
- export * from "./webgl-active-info.js";
6
- export * from "./webgl-buffer.js";
7
- export * from "./webgl-context-attributes.js";
8
- export * from "./webgl-drawing-buffer-wrapper.js";
9
- export * from "./webgl-framebuffer.js";
10
- export * from "./webgl-program.js";
11
- export * from "./webgl-renderbuffer.js";
12
- export * from "./webgl-rendering-context.js";
13
- export * from "./webgl-shader-precision-format.js";
14
- export * from "./webgl-shader.js";
15
- export * from "./webgl-texture-unit.js";
16
- export * from "./webgl-texture.js";
17
- export * from "./webgl-uniform-location.js";
18
- export * from "./webgl-vertex-attribute.js";
@@ -1,146 +0,0 @@
1
- import { describe, it, expect } from "@gjsify/unit";
2
- import { HTMLCanvasElement } from "@gjsify/webgl";
3
- import GLib from "@girs/glib-2.0";
4
- import Gtk from "@girs/gtk-4.0";
5
- import Gio from "@girs/gio-2.0";
6
- const GL_CONSTANT_NAMES = ["ACTIVE_ATTRIBUTES", "ACTIVE_TEXTURE", "ACTIVE_UNIFORMS", "ALIASED_LINE_WIDTH_RANGE", "ALIASED_POINT_SIZE_RANGE", "ALPHA", "ALPHA_BITS", "ALWAYS", "ARRAY_BUFFER", "ARRAY_BUFFER_BINDING", "ATTACHED_SHADERS", "BACK", "BLEND", "BLEND_COLOR", "BLEND_DST_ALPHA", "BLEND_DST_RGB", "BLEND_EQUATION", "BLEND_EQUATION_ALPHA", "BLEND_EQUATION_RGB", "BLEND_SRC_ALPHA", "BLEND_SRC_RGB", "BLUE_BITS", "BOOL", "BOOL_VEC2", "BOOL_VEC3", "BOOL_VEC4", "BROWSER_DEFAULT_WEBGL", "BUFFER_SIZE", "BUFFER_USAGE", "BYTE", "CCW", "CLAMP_TO_EDGE", "COLOR_ATTACHMENT0", "COLOR_BUFFER_BIT", "COLOR_CLEAR_VALUE", "COLOR_WRITEMASK", "COMPILE_STATUS", "COMPRESSED_TEXTURE_FORMATS", "CONSTANT_ALPHA", "CONSTANT_COLOR", "CONTEXT_LOST_WEBGL", "CULL_FACE", "CULL_FACE_MODE", "CURRENT_PROGRAM", "CURRENT_VERTEX_ATTRIB", "CW", "DECR", "DECR_WRAP", "DELETE_STATUS", "DEPTH_ATTACHMENT", "DEPTH_BITS", "DEPTH_BUFFER_BIT", "DEPTH_CLEAR_VALUE", "DEPTH_COMPONENT", "DEPTH_COMPONENT16", "DEPTH_FUNC", "DEPTH_RANGE", "DEPTH_STENCIL", "DEPTH_STENCIL_ATTACHMENT", "DEPTH_TEST", "DEPTH_WRITEMASK", "DITHER", "DONT_CARE", "DST_ALPHA", "DST_COLOR", "DYNAMIC_DRAW", "ELEMENT_ARRAY_BUFFER", "ELEMENT_ARRAY_BUFFER_BINDING", "EQUAL", "FASTEST", "FLOAT", "FLOAT_MAT2", "FLOAT_MAT3", "FLOAT_MAT4", "FLOAT_VEC2", "FLOAT_VEC3", "FLOAT_VEC4", "FRAGMENT_SHADER", "FRAMEBUFFER", "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", "FRAMEBUFFER_BINDING", "FRAMEBUFFER_COMPLETE", "FRAMEBUFFER_INCOMPLETE_ATTACHMENT", "FRAMEBUFFER_INCOMPLETE_DIMENSIONS", "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", "FRAMEBUFFER_UNSUPPORTED", "FRONT", "FRONT_AND_BACK", "FRONT_FACE", "FUNC_ADD", "FUNC_REVERSE_SUBTRACT", "FUNC_SUBTRACT", "GENERATE_MIPMAP_HINT", "GEQUAL", "GREATER", "GREEN_BITS", "HIGH_FLOAT", "HIGH_INT", "IMPLEMENTATION_COLOR_READ_FORMAT", "IMPLEMENTATION_COLOR_READ_TYPE", "INCR", "INCR_WRAP", "INT", "INT_VEC2", "INT_VEC3", "INT_VEC4", "INVALID_ENUM", "INVALID_FRAMEBUFFER_OPERATION", "INVALID_OPERATION", "INVALID_VALUE", "INVERT", "KEEP", "LEQUAL", "LESS", "LINEAR", "LINEAR_MIPMAP_LINEAR", "LINEAR_MIPMAP_NEAREST", "LINES", "LINE_LOOP", "LINE_STRIP", "LINE_WIDTH", "LINK_STATUS", "LOW_FLOAT", "LOW_INT", "LUMINANCE", "LUMINANCE_ALPHA", "MAX_COMBINED_TEXTURE_IMAGE_UNITS", "MAX_CUBE_MAP_TEXTURE_SIZE", "MAX_FRAGMENT_UNIFORM_VECTORS", "MAX_RENDERBUFFER_SIZE", "MAX_TEXTURE_IMAGE_UNITS", "MAX_TEXTURE_SIZE", "MAX_VARYING_VECTORS", "MAX_VERTEX_ATTRIBS", "MAX_VERTEX_TEXTURE_IMAGE_UNITS", "MAX_VERTEX_UNIFORM_VECTORS", "MAX_VIEWPORT_DIMS", "MEDIUM_FLOAT", "MEDIUM_INT", "MIRRORED_REPEAT", "NEAREST", "NEAREST_MIPMAP_LINEAR", "NEAREST_MIPMAP_NEAREST", "NEVER", "NICEST", "NONE", "NOTEQUAL", "NO_ERROR", "ONE", "ONE_MINUS_CONSTANT_ALPHA", "ONE_MINUS_CONSTANT_COLOR", "ONE_MINUS_DST_ALPHA", "ONE_MINUS_DST_COLOR", "ONE_MINUS_SRC_ALPHA", "ONE_MINUS_SRC_COLOR", "OUT_OF_MEMORY", "PACK_ALIGNMENT", "POINTS", "POLYGON_OFFSET_FACTOR", "POLYGON_OFFSET_FILL", "POLYGON_OFFSET_UNITS", "RED_BITS", "RENDERBUFFER", "RENDERBUFFER_ALPHA_SIZE", "RENDERBUFFER_BINDING", "RENDERBUFFER_BLUE_SIZE", "RENDERBUFFER_DEPTH_SIZE", "RENDERBUFFER_GREEN_SIZE", "RENDERBUFFER_HEIGHT", "RENDERBUFFER_INTERNAL_FORMAT", "RENDERBUFFER_RED_SIZE", "RENDERBUFFER_STENCIL_SIZE", "RENDERBUFFER_WIDTH", "RENDERER", "REPEAT", "REPLACE", "RGB", "RGB565", "RGB5_A1", "RGBA", "RGBA4", "SAMPLER_2D", "SAMPLER_CUBE", "SAMPLES", "SAMPLE_ALPHA_TO_COVERAGE", "SAMPLE_BUFFERS", "SAMPLE_COVERAGE", "SAMPLE_COVERAGE_INVERT", "SAMPLE_COVERAGE_VALUE", "SCISSOR_BOX", "SCISSOR_TEST", "SHADER_TYPE", "SHADING_LANGUAGE_VERSION", "SHORT", "SRC_ALPHA", "SRC_ALPHA_SATURATE", "SRC_COLOR", "STATIC_DRAW", "STENCIL_ATTACHMENT", "STENCIL_BACK_FAIL", "STENCIL_BACK_FUNC", "STENCIL_BACK_PASS_DEPTH_FAIL", "STENCIL_BACK_PASS_DEPTH_PASS", "STENCIL_BACK_REF", "STENCIL_BACK_VALUE_MASK", "STENCIL_BACK_WRITEMASK", "STENCIL_BITS", "STENCIL_BUFFER_BIT", "STENCIL_CLEAR_VALUE", "STENCIL_FAIL", "STENCIL_FUNC", "STENCIL_INDEX8", "STENCIL_PASS_DEPTH_FAIL", "STENCIL_PASS_DEPTH_PASS", "STENCIL_REF", "STENCIL_TEST", "STENCIL_VALUE_MASK", "STENCIL_WRITEMASK", "STREAM_DRAW", "SUBPIXEL_BITS", "TEXTURE", "TEXTURE0", "TEXTURE1", "TEXTURE10", "TEXTURE11", "TEXTURE12", "TEXTURE13", "TEXTURE14", "TEXTURE15", "TEXTURE16", "TEXTURE17", "TEXTURE18", "TEXTURE19", "TEXTURE2", "TEXTURE20", "TEXTURE21", "TEXTURE22", "TEXTURE23", "TEXTURE24", "TEXTURE25", "TEXTURE26", "TEXTURE27", "TEXTURE28", "TEXTURE29", "TEXTURE3", "TEXTURE30", "TEXTURE31", "TEXTURE4", "TEXTURE5", "TEXTURE6", "TEXTURE7", "TEXTURE8", "TEXTURE9", "TEXTURE_2D", "TEXTURE_BINDING_2D", "TEXTURE_BINDING_CUBE_MAP", "TEXTURE_CUBE_MAP", "TEXTURE_CUBE_MAP_NEGATIVE_X", "TEXTURE_CUBE_MAP_NEGATIVE_Y", "TEXTURE_CUBE_MAP_NEGATIVE_Z", "TEXTURE_CUBE_MAP_POSITIVE_X", "TEXTURE_CUBE_MAP_POSITIVE_Y", "TEXTURE_CUBE_MAP_POSITIVE_Z", "TEXTURE_MAG_FILTER", "TEXTURE_MIN_FILTER", "TEXTURE_WRAP_S", "TEXTURE_WRAP_T", "TRIANGLES", "TRIANGLE_FAN", "TRIANGLE_STRIP", "UNPACK_ALIGNMENT", "UNPACK_COLORSPACE_CONVERSION_WEBGL", "UNPACK_FLIP_Y_WEBGL", "UNPACK_PREMULTIPLY_ALPHA_WEBGL", "UNSIGNED_BYTE", "UNSIGNED_INT", "UNSIGNED_SHORT", "UNSIGNED_SHORT_4_4_4_4", "UNSIGNED_SHORT_5_5_5_1", "UNSIGNED_SHORT_5_6_5", "VALIDATE_STATUS", "VENDOR", "VERSION", "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", "VERTEX_ATTRIB_ARRAY_ENABLED", "VERTEX_ATTRIB_ARRAY_NORMALIZED", "VERTEX_ATTRIB_ARRAY_POINTER", "VERTEX_ATTRIB_ARRAY_SIZE", "VERTEX_ATTRIB_ARRAY_STRIDE", "VERTEX_ATTRIB_ARRAY_TYPE", "VERTEX_SHADER", "VIEWPORT", "ZERO"];
7
- var index_spec_default = async () => {
8
- let app;
9
- let win;
10
- let glArea;
11
- let canvas;
12
- let ctx;
13
- if (GLib.getenv("CI") || GLib.getenv("GITHUB_ACTIONS") || GLib.getenv("TRAVIS") || GLib.getenv("CIRCLECI") || GLib.getenv("GITLAB_CI")) {
14
- console.info("Skipping webgl tests on CI");
15
- return;
16
- }
17
- const initApp = async () => {
18
- Gtk.init();
19
- app = new Gtk.Application({
20
- application_id: "gjsify.webgl.index.spec.ts",
21
- flags: Gio.ApplicationFlags.FLAGS_NONE
22
- });
23
- const p = new Promise((resolve) => {
24
- app.connect("activate", () => {
25
- resolve(app);
26
- });
27
- });
28
- win = new Gtk.ApplicationWindow(app);
29
- win.set_default_size(800, 600);
30
- app.run([]);
31
- return p;
32
- };
33
- const initGLArea = async () => {
34
- glArea = new Gtk.GLArea({});
35
- const p = new Promise((resolve, reject) => {
36
- glArea.connect("realize", () => {
37
- glArea.make_current();
38
- const error = glArea.get_error();
39
- if (error) {
40
- reject(error);
41
- }
42
- resolve(glArea);
43
- });
44
- });
45
- glArea.set_use_es(true);
46
- glArea.set_has_depth_buffer(true);
47
- glArea.set_has_stencil_buffer(true);
48
- glArea.set_required_version(3, 2);
49
- win.set_child(glArea);
50
- win.present();
51
- return p;
52
- };
53
- await describe("Gtk.ApplicationWindow", async () => {
54
- await it("should be able to create a new instance", async () => {
55
- app = await initApp();
56
- expect(app).toBeDefined();
57
- });
58
- });
59
- await describe("Gtk.GLArea", async () => {
60
- await it("should be able to create a new instance", async () => {
61
- glArea = await initGLArea();
62
- expect(glArea).toBeDefined();
63
- });
64
- });
65
- await describe("HTMLCanvasElement", async () => {
66
- await it("should be defined", async () => {
67
- expect(HTMLCanvasElement).toBeDefined();
68
- });
69
- await it("should be able to create a new instance", async () => {
70
- expect(() => {
71
- canvas = new HTMLCanvasElement(glArea);
72
- }).not.toThrow();
73
- expect(canvas).toBeDefined();
74
- });
75
- await it("should be able to get a webgl context", async () => {
76
- expect(() => {
77
- ctx = canvas.getContext("webgl");
78
- }).not.toThrow();
79
- expect(ctx).toBeDefined();
80
- });
81
- });
82
- await describe("WebGLRenderingContext", async () => {
83
- await it("should have defined WebGL constants", async () => {
84
- for (const GL_CONSTANT_NAME of GL_CONSTANT_NAMES) {
85
- const constant = ctx?.[GL_CONSTANT_NAME];
86
- console.log(GL_CONSTANT_NAME, constant);
87
- expect(typeof constant).toBe("number");
88
- if (GL_CONSTANT_NAME === "NONE" || GL_CONSTANT_NAME === "ZERO" || GL_CONSTANT_NAME === "NO_ERROR" || GL_CONSTANT_NAME === "POINTS") {
89
- expect(constant === 0).toBeTruthy();
90
- } else {
91
- expect(constant > 0).toBeTruthy();
92
- }
93
- }
94
- });
95
- });
96
- await describe("Gwebgl.WebGLRenderingContext", async () => {
97
- await it("getParameterb should return a boolean", async () => {
98
- const res = ctx?._native.getParameterb(ctx?.BLEND);
99
- console.log("res", res);
100
- expect(typeof res).toBe("boolean");
101
- });
102
- await it("getParameterbv should return an array of boolean", async () => {
103
- const results = ctx?._native.getParameterbv(ctx?.COLOR_WRITEMASK, 16);
104
- console.log("results", results);
105
- expect(Array.isArray(results)).toBeTruthy();
106
- if (Array.isArray(results)) {
107
- for (const res of results) {
108
- expect(typeof res).toBe("boolean");
109
- }
110
- }
111
- });
112
- await it("getParameterf should return a float number", async () => {
113
- const result = ctx?._native.getParameterf(ctx?.SAMPLE_COVERAGE_VALUE);
114
- console.log("result", result);
115
- expect(typeof result).toBe("number");
116
- });
117
- await it("getParameterfv should return an array of float numbers", async () => {
118
- const results = ctx?._native.getParameterfv(ctx?.DEPTH_RANGE, 8);
119
- console.log("results", results);
120
- expect(Array.isArray(results)).toBeTruthy();
121
- if (Array.isArray(results)) {
122
- for (const res of results) {
123
- expect(typeof res).toBe("number");
124
- }
125
- }
126
- });
127
- await it("getParameteri should return a integer number", async () => {
128
- const result = ctx?._native.getParameteri(ctx?.ARRAY_BUFFER_BINDING);
129
- console.log("result", result);
130
- expect(typeof result).toBe("number");
131
- });
132
- await it("getParameteriv should return an array of integer numbers", async () => {
133
- const results = ctx?._native.getParameteriv(ctx?.MAX_VIEWPORT_DIMS, 8);
134
- console.log("results", results, typeof results);
135
- expect(Array.isArray(results)).toBeTruthy();
136
- if (Array.isArray(results)) {
137
- for (const res of results) {
138
- expect(typeof res).toBe("number");
139
- }
140
- }
141
- });
142
- });
143
- };
144
- export {
145
- index_spec_default as default
146
- };
@@ -1,50 +0,0 @@
1
- class Linkable {
2
- constructor(_) {
3
- this._ = 0;
4
- this._references = [];
5
- this._refCount = 0;
6
- this._pendingDelete = false;
7
- this._binding = 0;
8
- this._ = _;
9
- this._references = [];
10
- this._refCount = 0;
11
- this._pendingDelete = false;
12
- this._binding = 0;
13
- }
14
- _link(b) {
15
- this._references.push(b);
16
- b._refCount += 1;
17
- return true;
18
- }
19
- _unlink(b) {
20
- let idx = this._references.indexOf(b);
21
- if (idx < 0) {
22
- return false;
23
- }
24
- while (idx >= 0) {
25
- this._references[idx] = this._references[this._references.length - 1];
26
- this._references.pop();
27
- b._refCount -= 1;
28
- b._checkDelete();
29
- idx = this._references.indexOf(b);
30
- }
31
- return true;
32
- }
33
- _linked(b) {
34
- return this._references.indexOf(b) >= 0;
35
- }
36
- _checkDelete() {
37
- if (this._refCount <= 0 && this._pendingDelete && this._ !== 0) {
38
- while (this._references.length > 0) {
39
- this._unlink(this._references[0]);
40
- }
41
- this._performDelete();
42
- this._ = 0;
43
- }
44
- }
45
- _performDelete() {
46
- }
47
- }
48
- export {
49
- Linkable
50
- };
package/lib/cjs/test.js DELETED
@@ -1,3 +0,0 @@
1
- import { run } from "@gjsify/unit";
2
- import testSuite from "./index.spec.js";
3
- run({ testSuite });
File without changes
File without changes
@@ -1,5 +0,0 @@
1
- export * from "./constructor.js";
2
- export * from "./extension.js";
3
- export * from "./typed-array.js";
4
- export * from "./webgl-constants.js";
5
- export * from "./webgl-context-attribute-options.js";
File without changes
File without changes
File without changes