Skip to content

Commit 7db1b00

Browse files
authored
Merge pull request #1001 from dfcreative/webgl-context
Use package to obtain webgl context
2 parents 0b68f58 + 67d5b59 commit 7db1b00

File tree

4 files changed

+28
-41
lines changed

4 files changed

+28
-41
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@
8787
"sane-topojson": "^1.2.0",
8888
"superscript-text": "^1.0.0",
8989
"tinycolor2": "^1.3.0",
90-
"topojson": "^1.6.20"
90+
"topojson": "^1.6.20",
91+
"webgl-context": "^2.2.0"
9192
},
9293
"devDependencies": {
9394
"brfs": "^1.4.3",

src/plots/gl2d/scene2d.js

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ var Fx = require('../../plots/cartesian/graph_interact');
1515
var createPlot2D = require('gl-plot2d');
1616
var createSpikes = require('gl-spikes2d');
1717
var createSelectBox = require('gl-select-box');
18+
var getContext = require('webgl-context');
1819

1920
var createOptions = require('./convert');
2021
var createCamera = require('./camera');
@@ -87,40 +88,28 @@ proto.makeFramework = function() {
8788
if(!STATIC_CONTEXT) {
8889
STATIC_CANVAS = document.createElement('canvas');
8990

90-
try {
91-
STATIC_CONTEXT = STATIC_CANVAS.getContext('webgl', {
92-
preserveDrawingBuffer: false,
93-
premultipliedAlpha: true,
94-
antialias: true
95-
});
96-
} catch(e) {
97-
throw new Error([
98-
'Error creating static canvas/context for image server'
99-
].join(' '));
91+
STATIC_CONTEXT = getContext({
92+
canvas: STATIC_CANVAS,
93+
preserveDrawingBuffer: false,
94+
premultipliedAlpha: true,
95+
antialias: true
96+
});
97+
98+
if(!STATIC_CONTEXT) {
99+
throw new Error('Error creating static canvas/context for image server');
100100
}
101101
}
102102

103103
this.canvas = STATIC_CANVAS;
104104
this.gl = STATIC_CONTEXT;
105105
}
106106
else {
107-
var liveCanvas = document.createElement('canvas'),
108-
glOpts = { premultipliedAlpha: true };
109-
var gl;
110-
111-
try {
112-
gl = liveCanvas.getContext('webgl', glOpts);
113-
} catch(e) {
114-
//
115-
}
107+
var liveCanvas = document.createElement('canvas');
116108

117-
if(!gl) {
118-
try {
119-
gl = liveCanvas.getContext('experimental-webgl', glOpts);
120-
} catch(e) {
121-
//
122-
}
123-
}
109+
var gl = getContext({
110+
canvas: liveCanvas,
111+
premultipliedAlpha: true
112+
});
124113

125114
if(!gl) showNoWebGlMsg(this);
126115

src/plots/gl3d/scene.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
'use strict';
1111

1212
var createPlot = require('gl-plot3d');
13+
var getContext = require('webgl-context');
1314

1415
var Lib = require('../../lib');
1516

@@ -143,13 +144,13 @@ function initializeGLPlot(scene, fullLayout, canvas, gl) {
143144
if(scene.staticMode) {
144145
if(!STATIC_CONTEXT) {
145146
STATIC_CANVAS = document.createElement('canvas');
146-
try {
147-
STATIC_CONTEXT = STATIC_CANVAS.getContext('webgl', {
148-
preserveDrawingBuffer: true,
149-
premultipliedAlpha: true,
150-
antialias: true
151-
});
152-
} catch(e) {
147+
STATIC_CONTEXT = getContext({
148+
canvas: STATIC_CANVAS,
149+
preserveDrawingBuffer: true,
150+
premultipliedAlpha: true,
151+
antialias: true
152+
});
153+
if(!STATIC_CONTEXT) {
153154
throw new Error('error creating static canvas/context for image server');
154155
}
155156
}

test/jasmine/assets/has_webgl_support.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
'use strict';
22

3+
var getContext = require('webgl-context');
34

45
module.exports = function hasWebGLSupport(testName) {
56
var gl, canvas;
67

7-
try {
8-
canvas = document.createElement('canvas');
9-
gl = canvas.getContext('webgl');
10-
}
11-
catch(err) {
12-
gl = null;
13-
}
8+
canvas = document.createElement('canvas');
9+
gl = getContext({canvas: canvas});
1410

1511
var hasSupport = !!gl;
1612

0 commit comments

Comments
 (0)