Commit fbb61ab9e69e2e4ab3621224e9886205338fd916
1 parent
5e735657
Exists in
master
Adds support to safari
Showing
48 changed files
with
604 additions
and
925 deletions
Show diff stats
.gitignore
Gulpfile.js
1 | 1 | var gulp = require('gulp'); |
2 | 2 | |
3 | -var playerFiles = [ | |
3 | +var playersPath = { | |
4 | + chrome: 'chrome/app/player', | |
5 | + firefox: 'firefox/data/player', | |
6 | + safari: 'safari.safariextension/app/player' | |
7 | +}; | |
8 | + | |
9 | +var webglOptions = { | |
10 | + base: 'webgl', | |
11 | + cwd: 'webgl' | |
12 | +}; | |
13 | + | |
14 | +var webglFiles = [ | |
4 | 15 | 'connect.js', |
5 | 16 | 'load.js', |
6 | 17 | 'window.html', |
... | ... | @@ -9,12 +20,29 @@ var playerFiles = [ |
9 | 20 | 'vendors/**/*' |
10 | 21 | ]; |
11 | 22 | |
23 | +var webplayerOptions = { | |
24 | + base: 'webplayer', | |
25 | + cwd: 'webplayer' | |
26 | +}; | |
27 | + | |
28 | +var webplayerFiles = [ | |
29 | + 'window.html', | |
30 | + 'player.js', | |
31 | + 'WEBPLAYER.unity3d', | |
32 | + 'vendors/**/*' | |
33 | +]; | |
34 | + | |
12 | 35 | gulp.task('chrome', function() { |
13 | - gulp.src(playerFiles, { base: '.', cwd: 'player/' }) | |
14 | - .pipe(gulp.dest('chrome/app')); | |
36 | + gulp.src(webglFiles, webglOptions) | |
37 | + .pipe(gulp.dest(playersPath.chrome)); | |
15 | 38 | }); |
16 | 39 | |
17 | 40 | gulp.task('firefox', function() { |
18 | - gulp.src(playerFiles, { base: '.', cwd: 'player/' }) | |
19 | - .pipe(gulp.dest('firefox/data')); | |
41 | + gulp.src(webglFiles, webglOptions) | |
42 | + .pipe(gulp.dest(playersPath.firefox)); | |
20 | 43 | }); |
44 | + | |
45 | +gulp.task('safari', function() { | |
46 | + gulp.src(webplayerFiles, webplayerOptions) | |
47 | + .pipe(gulp.dest(playersPath.safari)); | |
48 | +}); | |
21 | 49 | \ No newline at end of file | ... | ... |
chrome/background.js
... | ... | @@ -12,6 +12,8 @@ chrome.contextMenus.create({ |
12 | 12 | |
13 | 13 | // Listening the event click |
14 | 14 | chrome.contextMenus.onClicked.addListener( function (info) { |
15 | + selectedText = info.selectionText; | |
16 | + | |
15 | 17 | // Creates the window if it exists |
16 | 18 | if ( popup === undefined ) { |
17 | 19 | chrome.windows.create({ |
... | ... | @@ -23,12 +25,11 @@ chrome.contextMenus.onClicked.addListener( function (info) { |
23 | 25 | type: "popup" |
24 | 26 | }, function (w) { |
25 | 27 | popup = w; |
26 | - | |
27 | - selectedText = info.selectionText; | |
28 | 28 | }); |
29 | 29 | } else { |
30 | 30 | chrome.windows.update(popup.id, {focused: true}, function () { |
31 | - chrome.runtime.sendMessage({selectedText: info.selectionText}); | |
31 | + chrome.runtime.sendMessage({selectedText: selectedText}); | |
32 | + selectedText = undefined; | |
32 | 33 | }); |
33 | 34 | } |
34 | 35 | }); | ... | ... |
... | ... | @@ -0,0 +1,28 @@ |
1 | +-----BEGIN PRIVATE KEY----- | |
2 | +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8UI+z9pRhF8Kv | |
3 | +WC3Y2eI41b4AJeROjrO3rVeBG+FYjMuOB0r1byFUlebGP/Nep7nZ9eEUZ4E71lkp | |
4 | +WDyYLfZTb+gum6MQAeh8Wd7aBh9qSa4ru08ieu/8HxmHdfUFpWph3yPMV0TdAXVh | |
5 | +sbMLWcvzu+AmEkPM09KtXENyAOkR63ncll7HtmGFdxicTzNWuIhrvrhsd1xtuS1c | |
6 | +g4vk1XEJ5mcSnVLVGojAI8uwY4QEAGC2bUMzmD6mtZxySHu5XxNnk1xFdTxebd1K | |
7 | +4u0HyDgpY7epRsnkYHQq9HZ7Smet2JW4tHmd/5nPMZXFztZ/bUSuOqAmXvmLXvmw | |
8 | +JSpVnEENAgMBAAECggEAVCmFMB8iDYq6/fbg9qvaSSBt/E7zDJEGjS6xjwhQ3GyA | |
9 | +hQeJXsu+D7m3HB90u3cmvtz/LUldHssbqji/TBwunPfEwx/X7s2LhBf+W16lJ7Gq | |
10 | +X+0k3vomy31ywXHcght9wiQiMa9HHacLORBcPtRxLItpEFrVZnO9ErHLiuYRRGo+ | |
11 | +EKP79o1dVZ5kldJ7toB4ok+KIDu2PJJShj4nXj7mKNlGZPH2hYn+NG7ZLFOjUp09 | |
12 | +AKjTIE5WADt5bOKN9Wo2HiCG63zLZsaJmeYh2v3TxnpAj+W/TMxV/y0kIe7gzqw1 | |
13 | +2qxdBmLBILNM8AkwadpbJRuC6aynd41sqejix3uemQKBgQDzONGl0Yf8fg5EyX3r | |
14 | +w/OldzZv/Comy6Ka/aq8I88clFBlEoD2os+lF6IDAgMj102awjiI+fxOe81C7Pza | |
15 | +a5eGHeq3qaE0E7v7ggcW7YXlFs9YC6RikKEkGCFnnaxeBf+/iXICcf32GzZkSow2 | |
16 | +JTedIJIbu/oca2UFpVsK4inkHwKBgQDGNUZMmJ1ca4WdpmP6mUCwqEgOZ+UcG/3K | |
17 | +4Sy0BtJOB1wVoQOzM1q2FUurCqps81cghUbtJyeRk4y4eI1rOEbz8m0UB0hWyEq1 | |
18 | +pJJiz0nei7ficAIHO5e2elDV2lJ7KNxYeb3YN2NXbGmwmsI/IoudPp+wghnl4Xns | |
19 | +2JcBFZdVUwKBgQCBDcb/6xvyt5gum5M7BDBFvemepfhfuXFAOBTd20pL6c52ssjH | |
20 | +FUCEYvPOEMVFwTomQaPp2msr4bjaKBFKfAhcW4dtiI5Gqan3G9lTKxj+o4nFN/gz | |
21 | +bHZ0RnGDH0CUay52nSFndsDAU1QbBws6t6i4sM2V9boSVlG2GzUhozuDFQKBgG2P | |
22 | +kTZRvdoSTR9hlC43fDyqKHpeD5TEHDuC0HUKuEENbGdAQ41Qu7med98p3B6xO93s | |
23 | +DdKVLBgaGVT2viUgTIgX3xeNFv1xZWqWd5xKvKhZTuHJzDU3SZtCbWBod+NAKNx3 | |
24 | +HutfYng2ow1N3kWL0OSwcxDcOXiKdBzpdD7TMn2lAoGAH3xcQ9pI1aCeNxrnyvsJ | |
25 | +1EFlSX+3HQvjd9JOVemiVd6jP5SbrM6DplzimYPVmJhlAcq+wi8/dHyOGMRCb7ZV | |
26 | +Yv44hSheny/RhfMcePwubLBhVULRrdg2LWOEnSgrLIWNe2CCJ+xzgr2mEM+vGazI | |
27 | +zVWbI5s+shUi96/ZSZMjxGo= | |
28 | +-----END PRIVATE KEY----- | ... | ... |
player/.bowerrc
player/TemplateData/UnityProgress.js
... | ... | @@ -1,97 +0,0 @@ |
1 | -function UnityProgress (dom) { | |
2 | - this.progress = 0.0; | |
3 | - this.message = ""; | |
4 | - this.dom = dom; | |
5 | - | |
6 | - var parent = dom.parentNode; | |
7 | - | |
8 | - var background = document.createElement("div"); | |
9 | - background.style.background = "#FFFFFF"; | |
10 | - background.style.position = "absolute"; | |
11 | - parent.appendChild(background); | |
12 | - this.background = background; | |
13 | - | |
14 | - var logoImage = document.createElement("img"); | |
15 | - logoImage.src = "TemplateData/progresslogo.png"; | |
16 | - logoImage.style.position = "absolute"; | |
17 | - parent.appendChild(logoImage); | |
18 | - this.logoImage = logoImage; | |
19 | - | |
20 | - var progressFrame = document.createElement("img"); | |
21 | - progressFrame.src = "TemplateData/loadingbar.png"; | |
22 | - progressFrame.style.position = "absolute"; | |
23 | - parent.appendChild(progressFrame); | |
24 | - this.progressFrame = progressFrame; | |
25 | - | |
26 | - var progressBar = document.createElement("img"); | |
27 | - progressBar.src = "TemplateData/fullbar.png"; | |
28 | - progressBar.style.position = "absolute"; | |
29 | - parent.appendChild(progressBar); | |
30 | - this.progressBar = progressBar; | |
31 | - | |
32 | - var messageArea = document.createElement("p"); | |
33 | - messageArea.style.position = "absolute"; | |
34 | - parent.appendChild(messageArea); | |
35 | - this.messageArea = messageArea; | |
36 | - | |
37 | - | |
38 | - this.SetProgress = function (progress) { | |
39 | - if (this.progress < progress) | |
40 | - this.progress = progress; | |
41 | - this.messageArea.style.display = "none"; | |
42 | - this.progressFrame.style.display = "inline"; | |
43 | - this.progressBar.style.display = "inline"; | |
44 | - this.Update(); | |
45 | - } | |
46 | - | |
47 | - this.SetMessage = function (message) { | |
48 | - this.message = message; | |
49 | - this.background.style.display = "inline"; | |
50 | - this.logoImage.style.display = "inline"; | |
51 | - this.progressFrame.style.display = "none"; | |
52 | - this.progressBar.style.display = "none"; | |
53 | - this.Update(); | |
54 | - } | |
55 | - | |
56 | - this.Clear = function() { | |
57 | - this.background.style.display = "none"; | |
58 | - this.logoImage.style.display = "none"; | |
59 | - this.progressFrame.style.display = "none"; | |
60 | - this.progressBar.style.display = "none"; | |
61 | - } | |
62 | - | |
63 | - this.Update = function() { | |
64 | - this.background.style.top = this.dom.offsetTop + 'px'; | |
65 | - this.background.style.left = this.dom.offsetLeft + 'px'; | |
66 | - this.background.style.width = this.dom.offsetWidth + 'px'; | |
67 | - this.background.style.height = this.dom.offsetHeight + 'px'; | |
68 | - | |
69 | - var logoImg = new Image(); | |
70 | - logoImg.src = this.logoImage.src; | |
71 | - var progressFrameImg = new Image(); | |
72 | - progressFrameImg.src = this.progressFrame.src; | |
73 | - | |
74 | - this.logoImage.style.top = this.dom.offsetTop + (this.dom.offsetHeight * 0.5 - logoImg.height * 0.5) + 'px'; | |
75 | - this.logoImage.style.left = this.dom.offsetLeft + (this.dom.offsetWidth * 0.5 - logoImg.width * 0.5) + 'px'; | |
76 | - this.logoImage.style.width = logoImg.width+'px'; | |
77 | - this.logoImage.style.height = logoImg.height+'px'; | |
78 | - | |
79 | - this.progressFrame.style.top = this.dom.offsetTop + (this.dom.offsetHeight * 0.5 + logoImg.height * 0.5 + 10) + 'px'; | |
80 | - this.progressFrame.style.left = this.dom.offsetLeft + (this.dom.offsetWidth * 0.5 - progressFrameImg.width * 0.5) + 'px'; | |
81 | - this.progressFrame.width = progressFrameImg.width; | |
82 | - this.progressFrame.height = progressFrameImg.height; | |
83 | - | |
84 | - this.progressBar.style.top = this.progressFrame.style.top; | |
85 | - this.progressBar.style.left = this.progressFrame.style.left; | |
86 | - this.progressBar.width = progressFrameImg.width * Math.min(this.progress, 1); | |
87 | - this.progressBar.height = progressFrameImg.height; | |
88 | - | |
89 | - this.messageArea.style.top = this.progressFrame.style.top; | |
90 | - this.messageArea.style.left = 0; | |
91 | - this.messageArea.style.width = '100%'; | |
92 | - this.messageArea.style.textAlign = 'center'; | |
93 | - this.messageArea.innerHTML = this.message; | |
94 | - } | |
95 | - | |
96 | - this.Update (); | |
97 | -} | |
98 | 0 | \ No newline at end of file |
player/TemplateData/default-cover.jpg
51.6 KB
player/TemplateData/favicon.png
18.4 KB
player/TemplateData/fullbar.png
2.71 KB
player/TemplateData/loadingbar.png
2.78 KB
player/TemplateData/progresslogo.png
20.7 KB
player/TemplateData/style.css
... | ... | @@ -1,28 +0,0 @@ |
1 | - | |
2 | -/**************************************** | |
3 | - ==== RESETS | |
4 | -****************************************/ | |
5 | - | |
6 | -html,body,div,canvas { margin: 0; padding: 0; } | |
7 | -::-moz-selection { color: #333; text-shadow: none; } | |
8 | -::selection { color: #333; text-shadow: none; } | |
9 | -.clear:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } | |
10 | -.clear { display: inline-table; clear: both; } | |
11 | -/* Hides from IE-mac \*/ * html .clear { height: 1%; } .clear { display: block; } /* End hide from IE-mac */ | |
12 | - | |
13 | -/**************************************** | |
14 | - ==== LAYOUT | |
15 | -****************************************/ | |
16 | - | |
17 | -html, body { width: 100%; height: 100%; font-family: Helvetica, Verdana, Arial, sans-serif; } | |
18 | -body { } | |
19 | -p.header, p.footer { display: none; } | |
20 | -div.logo { width: 196px; height: 38px; float: left; background: url(logo.png) 0 0 no-repeat; position: relative; z-index: 10; } | |
21 | -div.title { height: 38px; line-height: 38px; padding: 0 10px; margin: 0 1px 0 0; float: right; color: #333; text-align: right; font-size: 18px; position: relative; z-index: 10; } | |
22 | -.template-wrap { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } | |
23 | -.template-wrap canvas { margin: 0 0 10px 0; position: relative; z-index: 9; box-shadow: 0 10px 30px rgba(0,0,0,0.2); -moz-box-shadow: 0 10px 30px rgba(0,0,0,0.2); } | |
24 | -.fullscreen { float: right; position: relative; z-index: 10; } | |
25 | - | |
26 | -body.template { } | |
27 | -.template .template-wrap { } | |
28 | -.template .template-wrap canvas { } |
player/bower.json
player/connect.js
... | ... | @@ -1,40 +0,0 @@ |
1 | -// connect to canvas | |
2 | - var Module = { | |
3 | - TOTAL_MEMORY: 268435456, | |
4 | - filePackagePrefixURL: "Release/", | |
5 | - memoryInitializerPrefixURL: "Release/", | |
6 | - preRun: [], | |
7 | - postRun: [], | |
8 | - print: (function() { | |
9 | - return function(text) { | |
10 | - console.log (text); | |
11 | - }; | |
12 | - })(), | |
13 | - printErr: function(text) { | |
14 | - console.error (text); | |
15 | - }, | |
16 | - canvas: document.getElementById('canvas'), | |
17 | - progress: null, | |
18 | - setStatus: function(text) { | |
19 | - if (this.progress == null) | |
20 | - { | |
21 | - if (typeof UnityProgress != 'function') | |
22 | - return; | |
23 | - this.progress = new UnityProgress (canvas); | |
24 | - } | |
25 | - if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' }; | |
26 | - if (text === Module.setStatus.text) return; | |
27 | - this.progress.SetMessage (text); | |
28 | - var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); | |
29 | - if (m) | |
30 | - this.progress.SetProgress (parseInt(m[2])/parseInt(m[4])); | |
31 | - if (text === "") | |
32 | - this.progress.Clear() | |
33 | - }, | |
34 | - totalDependencies: 0, | |
35 | - monitorRunDependencies: function(left) { | |
36 | - this.totalDependencies = Math.max(this.totalDependencies, left); | |
37 | - Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.'); | |
38 | - } | |
39 | - }; | |
40 | - Module.setStatus('Downloading (0.0/1)'); |
player/load.js
... | ... | @@ -1,39 +0,0 @@ |
1 | -if (!(!Math.fround)) { | |
2 | - var script = document.createElement('script'); | |
3 | - script.src = "Release/WEBGL.js"; | |
4 | - document.body.appendChild(script); | |
5 | -} else { | |
6 | - var codeXHR = new XMLHttpRequest(); | |
7 | - codeXHR.open('GET', 'Release/WEBGL.js', true); | |
8 | - codeXHR.onload = function() { | |
9 | - var code = codeXHR.responseText; | |
10 | - if (!Math.fround) { | |
11 | -try { | |
12 | - console.log('optimizing out Math.fround calls'); | |
13 | - var m = /var ([^=]+)=global\.Math\.fround;/.exec(code); | |
14 | - var minified = m[1]; | |
15 | - if (!minified) throw 'fail'; | |
16 | - var startAsm = code.indexOf('// EMSCRIPTEN_START_FUNCS'); | |
17 | - var endAsm = code.indexOf('// EMSCRIPTEN_END_FUNCS'); | |
18 | - var asm = code.substring(startAsm, endAsm); | |
19 | - do { | |
20 | - var moar = false; // we need to re-do, as x(x( will not be fixed | |
21 | - asm = asm.replace(new RegExp('[^a-zA-Z0-9\\$\\_]' + minified + '\\(', 'g'), function(s) { moar = true; return s[0] + '(' }); | |
22 | - } while (moar); | |
23 | - code = code.substring(0, startAsm) + asm + code.substring(endAsm); | |
24 | - code = code.replace("'use asm'", "'almost asm'"); | |
25 | -} catch(e) { console.log('failed to optimize out Math.fround calls ' + e) } | |
26 | - } | |
27 | - | |
28 | - var blob = new Blob([code], { type: 'text/javascript' }); | |
29 | - codeXHR = null; | |
30 | - var src = URL.createObjectURL(blob); | |
31 | - var script = document.createElement('script'); | |
32 | - script.src = URL.createObjectURL(blob); | |
33 | - script.onload = function() { | |
34 | - URL.revokeObjectURL(script.src); | |
35 | - }; | |
36 | - document.body.appendChild(script); | |
37 | - }; | |
38 | - codeXHR.send(null); | |
39 | -} |
player/vendors/qdclient/.bower.json
... | ... | @@ -1,27 +0,0 @@ |
1 | -{ | |
2 | - "name": "qdclient", | |
3 | - "main": [ | |
4 | - "qdclient.js" | |
5 | - ], | |
6 | - "ignore": [ | |
7 | - "**/.*", | |
8 | - "Gulpfile.js", | |
9 | - "demo", | |
10 | - "node_modules", | |
11 | - "vendor", | |
12 | - "tests" | |
13 | - ], | |
14 | - "devDependencies": { | |
15 | - "mocha": "~2.2.5", | |
16 | - "chai": "~3.0.0" | |
17 | - }, | |
18 | - "_release": "2b32d629d0", | |
19 | - "_resolution": { | |
20 | - "type": "branch", | |
21 | - "branch": "master", | |
22 | - "commit": "2b32d629d0a6c4818ad5dd53c22bd000d37a7893" | |
23 | - }, | |
24 | - "_source": "git@git.lavid.ufpb.br:qdclient.git", | |
25 | - "_target": "*", | |
26 | - "_originalSource": "git@git.lavid.ufpb.br:qdclient.git" | |
27 | -} | |
28 | 0 | \ No newline at end of file |
player/vendors/qdclient/README
... | ... | @@ -1,32 +0,0 @@ |
1 | -qdClient | |
2 | -========= | |
3 | - | |
4 | -1. Tools | |
5 | ----------------- | |
6 | - | |
7 | -1. NodeJS | |
8 | -2. NPM - Node Package Manager | |
9 | -3. Bower - Frontend dependencies | |
10 | -4. Gulp - Build tools | |
11 | - | |
12 | -2. Installing dependencies | |
13 | ----------------- | |
14 | - | |
15 | -```bash | |
16 | -$ npm install | |
17 | -$ bower install | |
18 | -``` | |
19 | - | |
20 | -3. Demo | |
21 | ----------------- | |
22 | -```bash | |
23 | -$ gulp demo | |
24 | -``` | |
25 | - | |
26 | -4. Building | |
27 | ----------------- | |
28 | -```bash | |
29 | -$ gulp build | |
30 | -``` | |
31 | - | |
32 | -**Enjoy** |
player/vendors/qdclient/bower.json
... | ... | @@ -1,19 +0,0 @@ |
1 | -{ | |
2 | - "name": "qdclient", | |
3 | - "version": "0.0.1", | |
4 | - "main": [ | |
5 | - "qdclient.js" | |
6 | - ], | |
7 | - "ignore": [ | |
8 | - "**/.*", | |
9 | - "Gulpfile.js", | |
10 | - "demo", | |
11 | - "node_modules", | |
12 | - "vendor", | |
13 | - "tests" | |
14 | - ], | |
15 | - "devDependencies": { | |
16 | - "mocha": "~2.2.5", | |
17 | - "chai": "~3.0.0" | |
18 | - } | |
19 | -} |
player/vendors/qdclient/lib/chooser.js
... | ... | @@ -1,222 +0,0 @@ |
1 | -(function(window, localStorage, undefined) { | |
2 | - 'use strict'; | |
3 | - | |
4 | - function Chooser() { | |
5 | - this.server = 'http://150.165.204.39/vlibras-cloud/get_servers.php'; | |
6 | - | |
7 | - this.options = { | |
8 | - THRESHOLDSLOW: 2000, | |
9 | - SLOWLIMITTRIES: 5, | |
10 | - NBESTHEURISTIC1: 2, | |
11 | - QUANTITYPREVIOUSTIMESSTORED: 10 | |
12 | - }; | |
13 | - | |
14 | - this.mirrors = []; | |
15 | - | |
16 | - this.heuristics = { | |
17 | - FIRSTHEURISTIC: { | |
18 | - FIRSTRANDOM : {value: 0, name: "Random"}, | |
19 | - FIRSTRANDOMNBEST: {value: 1, name: "Random Among N Best"}, | |
20 | - FIRSTBEST : {value: 2, name: "Best"} | |
21 | - }, | |
22 | - SECONDHEURISTIC: { | |
23 | - SECONDRANDOM : {value: 0, name: "Random"}, | |
24 | - SECONDCLOSEST: {value: 1, name: "Closest"} | |
25 | - }, | |
26 | - THIRDHEURISTIC: { | |
27 | - THIRDSIMPLEAVERAGE : {value: 0, name: "Simple Average"}, | |
28 | - THIRDWEIGHTEDAVERAGE: {value: 1, name: "Weighted Average"} | |
29 | - } | |
30 | - }; | |
31 | - } | |
32 | - | |
33 | - // Exports | |
34 | - qdClient.Chooser = Chooser; | |
35 | - | |
36 | - Chooser.prototype.choose = function(urlLast, millisLast, response, callback) { | |
37 | - var $this = this; | |
38 | - | |
39 | - this.loadMirrors_(function() { | |
40 | - $this.chooseServer_(urlLast, millisLast, response, callback); | |
41 | - }); | |
42 | - }; | |
43 | - | |
44 | - Chooser.prototype.chooseServer_ = function(urlLast, millisLast, response, callback) { | |
45 | - var firstHeuristic = this.heuristics.FIRSTHEURISTIC.FIRSTBEST; | |
46 | - var secondHeuristic = this.heuristics.SECONDHEURISTIC.SECONDRANDOM; | |
47 | - var thirdHeuristic = this.heuristics.THIRDHEURISTIC.THIRDWEIGHTEDAVERAGE; | |
48 | - | |
49 | - var j = 0, i = 0; /* Fix JSHint */ | |
50 | - | |
51 | - var sizeBest = this.options.NBESTHEURISTIC1; | |
52 | - if (firstHeuristic == this.heuristics.FIRSTHEURISTIC.FIRSTBEST) { | |
53 | - sizeBest = 1; | |
54 | - } | |
55 | - | |
56 | - if (urlLast && urlLast.length > 0) { | |
57 | - for (i = 0; i < this.mirrors.length; i++) { | |
58 | - if (this.mirrors[i].url.toLowerCase() == urlLast.toLowerCase()) { | |
59 | - if (this.mirrors[i].previousTimes.length < this.options.QUANTITYPREVIOUSTIMESSTORED) { | |
60 | - this.mirrors[i].previousTimes[this.mirrors[i].previousTimes.length] = millisLast; | |
61 | - } else { | |
62 | - for (j = this.options.QUANTITYPREVIOUSTIMESSTORED-1; j > 0; j--) { | |
63 | - this.mirrors[i].previousTimes[j-1] = this.mirrors[i].previousTimes[j]; | |
64 | - } | |
65 | - | |
66 | - this.mirrors[i].previousTimes[this.options.QUANTITYPREVIOUSTIMESSTORED-1] = millisLast; | |
67 | - } | |
68 | - | |
69 | - if (thirdHeuristic == this.heuristics.THIRDHEURISTIC.THIRDSIMPLEAVERAGE) { | |
70 | - var totalMillis = 0; | |
71 | - for (j = 0; j < this.mirrors[i].previousTimes.length; j++) { | |
72 | - totalMillis += this.mirrors[i].previousTimes[j]; | |
73 | - } | |
74 | - | |
75 | - this.mirrors[i].averageTime = totalMillis/this.mirrors[i].previousTimes.length; | |
76 | - } else if (thirdHeuristic == this.heuristics.THIRDHEURISTIC.THIRDWEIGHTEDAVERAGE) { | |
77 | - var totalMillisAndWeights = 0; | |
78 | - var totalWeights = 0; | |
79 | - for (j = 0; j < this.mirrors[i].previousTimes.length; j++) { | |
80 | - totalMillisAndWeights += this.mirrors[i].previousTimes[j]*(j+1); | |
81 | - totalWeights += (j+1); | |
82 | - } | |
83 | - | |
84 | - this.mirrors[i].averageTime = totalMillisAndWeights/totalWeights; | |
85 | - } | |
86 | - | |
87 | - if (millisLast > this.options.THRESHOLDSLOW || response == -1) { | |
88 | - this.mirrors[i].isSlow = true; | |
89 | - this.mirrors[i].remainingSlow = this.options.SLOWLIMITTRIES; | |
90 | - } | |
91 | - | |
92 | - localStorage.setItem("servers", JSON.stringify(this.mirrors)); | |
93 | - break; | |
94 | - } | |
95 | - | |
96 | - } | |
97 | - | |
98 | - } | |
99 | - | |
100 | - var position = Math.floor((Math.random() * this.mirrors.length)); | |
101 | - var closestPosition; | |
102 | - | |
103 | - if (firstHeuristic != this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM) { | |
104 | - position = -1; | |
105 | - closestPosition = -1; | |
106 | - } | |
107 | - | |
108 | - var vectorBest = []; | |
109 | - var k = 0, z = 0; /* JSHint Fix */ | |
110 | - | |
111 | - for (j = 0; j < this.mirrors.length; j++) { | |
112 | - if (this.mirrors[j].remainingSlow > 0) { | |
113 | - this.mirrors[j].remainingSlow = this.mirrors[j].remainingSlow - 1; | |
114 | - } | |
115 | - | |
116 | - if (this.mirrors[j].remainingSlow === 0) { | |
117 | - this.mirrors[j].isSlow = false; | |
118 | - } | |
119 | - | |
120 | - if (firstHeuristic != this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM && this.mirrors[j].isSlow === false) { | |
121 | - if (closestPosition == -1) { | |
122 | - closestPosition = j; | |
123 | - } | |
124 | - | |
125 | - var added = false; | |
126 | - | |
127 | - for (k = 0; k < vectorBest.length; k++) { | |
128 | - if (this.mirrors[j].averageTime < vectorBest[k].averageTime || (this.mirrors[j].averageTime == vectorBest[k].averageTime && (Math.floor(Math.random()) < 0.5) )) { | |
129 | - | |
130 | - added = true; | |
131 | - | |
132 | - if (vectorBest.length < sizeBest) { | |
133 | - for (z = vectorBest.length-1; z >= k; z--) { | |
134 | - vectorBest[z+1] = vectorBest[z]; | |
135 | - } | |
136 | - } else { | |
137 | - for (z = vectorBest.length-2; z >= k; z--) { | |
138 | - vectorBest[z+1] = vectorBest[z]; | |
139 | - } | |
140 | - } | |
141 | - | |
142 | - vectorBest[k] = this.mirrors[j]; | |
143 | - | |
144 | - break; | |
145 | - } | |
146 | - } | |
147 | - | |
148 | - if (added === false && vectorBest.length < sizeBest) { | |
149 | - vectorBest[vectorBest.length] = this.mirrors[j]; | |
150 | - } | |
151 | - | |
152 | - } | |
153 | - | |
154 | - } | |
155 | - | |
156 | - // pega aleatorio entre as N posicoes dos melhores (se for guloso, tera apenas um elemento no vetor) | |
157 | - if (firstHeuristic != this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM && vectorBest.length > 0) { | |
158 | - position = Math.floor((Math.random() * vectorBest.length)); | |
159 | - } | |
160 | - | |
161 | - if (position == -1) { | |
162 | - if (secondHeuristic == this.heuristics.SECONDHEURISTIC.SECONDCLOSEST) { | |
163 | - // escolhendo o mais proximo, no caso, o vetor já está ordenado | |
164 | - if (closestPosition != -1) { | |
165 | - position = closestPosition; | |
166 | - } else { | |
167 | - // se nao marcou nenhum como closest, todos devem estar como slow, nesse caso seleciona o primeiro que é o mais próximo | |
168 | - position = 0; | |
169 | - } | |
170 | - | |
171 | - } else { | |
172 | - position = Math.floor((Math.random() * this.mirrors.length)); | |
173 | - } | |
174 | - } | |
175 | - | |
176 | - callback(this.mirrors[position].url); | |
177 | - }; | |
178 | - | |
179 | - Chooser.prototype.loadMirrors_ = function(callback) { | |
180 | - if (this.mirrors.length > 0) { | |
181 | - if (callback instanceof Function) callback(); | |
182 | - | |
183 | - return; | |
184 | - } | |
185 | - | |
186 | - var $this = this; | |
187 | - | |
188 | - var localServers = JSON.parse(localStorage.getItem("servers")) || []; | |
189 | - | |
190 | - qdClient.getJSON(this.server, function (status, response) { | |
191 | - var servers = status === 200 ? response : []; | |
192 | - | |
193 | - for (var i = 0; i < servers.length; i++){ | |
194 | - var mirror = { | |
195 | - name: servers[i].nome, | |
196 | - url: servers[i].url, | |
197 | - averageTime: 99999999, | |
198 | - isSlow: false, | |
199 | - previousTimes: [], | |
200 | - remainingSlow: 0, | |
201 | - type: servers[i].type | |
202 | - }; | |
203 | - | |
204 | - for (var localServer in localServers) { | |
205 | - if (mirror.url == localServer.url) { | |
206 | - mirror.averageTime = localServer.averageTime; | |
207 | - mirror.isSlow = localServer.isSlow; | |
208 | - mirror.previousTimes = localServer.previousTimes; | |
209 | - mirror.remainingSlow = localServer.remainingSlow; | |
210 | - | |
211 | - break; | |
212 | - } | |
213 | - } | |
214 | - | |
215 | - $this.mirrors.push(mirror); | |
216 | - } | |
217 | - | |
218 | - if (callback instanceof Function) callback(); | |
219 | - }); | |
220 | - }; | |
221 | - | |
222 | -}(window, localStorage)); |
player/vendors/qdclient/lib/qdclient.js
... | ... | @@ -1,34 +0,0 @@ |
1 | -(function(window, undefined) { | |
2 | - 'use strict'; | |
3 | - | |
4 | - window.qdClient = window.qdClient || {}; | |
5 | - | |
6 | - qdClient.request = function request(url, method, params, callback) { | |
7 | - var xhr = new XMLHttpRequest(); | |
8 | - var raw_params = ""; | |
9 | - | |
10 | - xhr.open(method, url, true); | |
11 | - | |
12 | - xhr.onload = function() { | |
13 | - callback(xhr.status, xhr.responseText); | |
14 | - }; | |
15 | - | |
16 | - if (method == "POST" && params instanceof Object) { | |
17 | - | |
18 | - for(var param in params) { | |
19 | - raw_params += param + '=' + params[param] + '&'; | |
20 | - } | |
21 | - | |
22 | - if (params.length > 1) raw_params.slice(0, -1); | |
23 | - } | |
24 | - | |
25 | - xhr.send(raw_params); | |
26 | - }; | |
27 | - | |
28 | - qdClient.getJSON = function getJSON(url, callback) { | |
29 | - qdClient.request(url, "GET", {}, function(status, response) { | |
30 | - callback(status, JSON.parse(response)); | |
31 | - }); | |
32 | - }; | |
33 | - | |
34 | -}(window)); |
player/vendors/qdclient/package.json
... | ... | @@ -1,18 +0,0 @@ |
1 | -{ | |
2 | - "name": "qdclient", | |
3 | - "version": "0.0.1", | |
4 | - "description": "", | |
5 | - "scripts": { | |
6 | - "test": "echo \"Error: no test specified\" && exit 1" | |
7 | - }, | |
8 | - "devDependencies": { | |
9 | - "browser-sync": "^2.7.13", | |
10 | - "gulp": "^3.9.0", | |
11 | - "gulp-concat": "^2.6.0", | |
12 | - "gulp-jshint": "^1.11.2", | |
13 | - "gulp-rename": "^1.2.2", | |
14 | - "gulp-rimraf": "^0.1.1", | |
15 | - "gulp-uglify": "^1.2.0", | |
16 | - "run-sequence": "^1.1.1" | |
17 | - } | |
18 | -} |
player/vendors/qdclient/qdclient.js
... | ... | @@ -1,257 +0,0 @@ |
1 | -(function(window, undefined) { | |
2 | - 'use strict'; | |
3 | - | |
4 | - window.qdClient = window.qdClient || {}; | |
5 | - | |
6 | - qdClient.request = function request(url, method, params, callback) { | |
7 | - var xhr = new XMLHttpRequest(); | |
8 | - var raw_params = ""; | |
9 | - | |
10 | - xhr.open(method, url, true); | |
11 | - | |
12 | - xhr.onload = function() { | |
13 | - callback(xhr.status, xhr.responseText); | |
14 | - }; | |
15 | - | |
16 | - if (method == "POST" && params instanceof Object) { | |
17 | - | |
18 | - for(var param in params) { | |
19 | - raw_params += param + '=' + params[param] + '&'; | |
20 | - } | |
21 | - | |
22 | - if (params.length > 1) raw_params.slice(0, -1); | |
23 | - } | |
24 | - | |
25 | - xhr.send(raw_params); | |
26 | - }; | |
27 | - | |
28 | - qdClient.getJSON = function getJSON(url, callback) { | |
29 | - qdClient.request(url, "GET", {}, function(status, response) { | |
30 | - callback(status, JSON.parse(response)); | |
31 | - }); | |
32 | - }; | |
33 | - | |
34 | -}(window)); | |
35 | - | |
36 | -(function(window, localStorage, undefined) { | |
37 | - 'use strict'; | |
38 | - | |
39 | - function Chooser() { | |
40 | - this.server = 'http://150.165.204.39/vlibras-cloud/get_servers.php'; | |
41 | - | |
42 | - this.options = { | |
43 | - THRESHOLDSLOW: 2000, | |
44 | - SLOWLIMITTRIES: 5, | |
45 | - NBESTHEURISTIC1: 2, | |
46 | - QUANTITYPREVIOUSTIMESSTORED: 10 | |
47 | - }; | |
48 | - | |
49 | - this.mirrors = []; | |
50 | - | |
51 | - this.heuristics = { | |
52 | - FIRSTHEURISTIC: { | |
53 | - FIRSTRANDOM : {value: 0, name: "Random"}, | |
54 | - FIRSTRANDOMNBEST: {value: 1, name: "Random Among N Best"}, | |
55 | - FIRSTBEST : {value: 2, name: "Best"} | |
56 | - }, | |
57 | - SECONDHEURISTIC: { | |
58 | - SECONDRANDOM : {value: 0, name: "Random"}, | |
59 | - SECONDCLOSEST: {value: 1, name: "Closest"} | |
60 | - }, | |
61 | - THIRDHEURISTIC: { | |
62 | - THIRDSIMPLEAVERAGE : {value: 0, name: "Simple Average"}, | |
63 | - THIRDWEIGHTEDAVERAGE: {value: 1, name: "Weighted Average"} | |
64 | - } | |
65 | - }; | |
66 | - } | |
67 | - | |
68 | - // Exports | |
69 | - qdClient.Chooser = Chooser; | |
70 | - | |
71 | - Chooser.prototype.choose = function(urlLast, millisLast, response, callback) { | |
72 | - var $this = this; | |
73 | - | |
74 | - this.loadMirrors_(function() { | |
75 | - $this.chooseServer_(urlLast, millisLast, response, callback); | |
76 | - }); | |
77 | - }; | |
78 | - | |
79 | - Chooser.prototype.chooseServer_ = function(urlLast, millisLast, response, callback) { | |
80 | - var firstHeuristic = this.heuristics.FIRSTHEURISTIC.FIRSTBEST; | |
81 | - var secondHeuristic = this.heuristics.SECONDHEURISTIC.SECONDRANDOM; | |
82 | - var thirdHeuristic = this.heuristics.THIRDHEURISTIC.THIRDWEIGHTEDAVERAGE; | |
83 | - | |
84 | - var j = 0, i = 0; /* Fix JSHint */ | |
85 | - | |
86 | - var sizeBest = this.options.NBESTHEURISTIC1; | |
87 | - if (firstHeuristic == this.heuristics.FIRSTHEURISTIC.FIRSTBEST) { | |
88 | - sizeBest = 1; | |
89 | - } | |
90 | - | |
91 | - if (urlLast && urlLast.length > 0) { | |
92 | - for (i = 0; i < this.mirrors.length; i++) { | |
93 | - if (this.mirrors[i].url.toLowerCase() == urlLast.toLowerCase()) { | |
94 | - if (this.mirrors[i].previousTimes.length < this.options.QUANTITYPREVIOUSTIMESSTORED) { | |
95 | - this.mirrors[i].previousTimes[this.mirrors[i].previousTimes.length] = millisLast; | |
96 | - } else { | |
97 | - for (j = this.options.QUANTITYPREVIOUSTIMESSTORED-1; j > 0; j--) { | |
98 | - this.mirrors[i].previousTimes[j-1] = this.mirrors[i].previousTimes[j]; | |
99 | - } | |
100 | - | |
101 | - this.mirrors[i].previousTimes[this.options.QUANTITYPREVIOUSTIMESSTORED-1] = millisLast; | |
102 | - } | |
103 | - | |
104 | - if (thirdHeuristic == this.heuristics.THIRDHEURISTIC.THIRDSIMPLEAVERAGE) { | |
105 | - var totalMillis = 0; | |
106 | - for (j = 0; j < this.mirrors[i].previousTimes.length; j++) { | |
107 | - totalMillis += this.mirrors[i].previousTimes[j]; | |
108 | - } | |
109 | - | |
110 | - this.mirrors[i].averageTime = totalMillis/this.mirrors[i].previousTimes.length; | |
111 | - } else if (thirdHeuristic == this.heuristics.THIRDHEURISTIC.THIRDWEIGHTEDAVERAGE) { | |
112 | - var totalMillisAndWeights = 0; | |
113 | - var totalWeights = 0; | |
114 | - for (j = 0; j < this.mirrors[i].previousTimes.length; j++) { | |
115 | - totalMillisAndWeights += this.mirrors[i].previousTimes[j]*(j+1); | |
116 | - totalWeights += (j+1); | |
117 | - } | |
118 | - | |
119 | - this.mirrors[i].averageTime = totalMillisAndWeights/totalWeights; | |
120 | - } | |
121 | - | |
122 | - if (millisLast > this.options.THRESHOLDSLOW || response == -1) { | |
123 | - this.mirrors[i].isSlow = true; | |
124 | - this.mirrors[i].remainingSlow = this.options.SLOWLIMITTRIES; | |
125 | - } | |
126 | - | |
127 | - localStorage.setItem("servers", JSON.stringify(this.mirrors)); | |
128 | - break; | |
129 | - } | |
130 | - | |
131 | - } | |
132 | - | |
133 | - } | |
134 | - | |
135 | - var position = Math.floor((Math.random() * this.mirrors.length)); | |
136 | - var closestPosition; | |
137 | - | |
138 | - if (firstHeuristic != this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM) { | |
139 | - position = -1; | |
140 | - closestPosition = -1; | |
141 | - } | |
142 | - | |
143 | - var vectorBest = []; | |
144 | - var k = 0, z = 0; /* JSHint Fix */ | |
145 | - | |
146 | - for (j = 0; j < this.mirrors.length; j++) { | |
147 | - if (this.mirrors[j].remainingSlow > 0) { | |
148 | - this.mirrors[j].remainingSlow = this.mirrors[j].remainingSlow - 1; | |
149 | - } | |
150 | - | |
151 | - if (this.mirrors[j].remainingSlow === 0) { | |
152 | - this.mirrors[j].isSlow = false; | |
153 | - } | |
154 | - | |
155 | - if (firstHeuristic != this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM && this.mirrors[j].isSlow === false) { | |
156 | - if (closestPosition == -1) { | |
157 | - closestPosition = j; | |
158 | - } | |
159 | - | |
160 | - var added = false; | |
161 | - | |
162 | - for (k = 0; k < vectorBest.length; k++) { | |
163 | - if (this.mirrors[j].averageTime < vectorBest[k].averageTime || (this.mirrors[j].averageTime == vectorBest[k].averageTime && (Math.floor(Math.random()) < 0.5) )) { | |
164 | - | |
165 | - added = true; | |
166 | - | |
167 | - if (vectorBest.length < sizeBest) { | |
168 | - for (z = vectorBest.length-1; z >= k; z--) { | |
169 | - vectorBest[z+1] = vectorBest[z]; | |
170 | - } | |
171 | - } else { | |
172 | - for (z = vectorBest.length-2; z >= k; z--) { | |
173 | - vectorBest[z+1] = vectorBest[z]; | |
174 | - } | |
175 | - } | |
176 | - | |
177 | - vectorBest[k] = this.mirrors[j]; | |
178 | - | |
179 | - break; | |
180 | - } | |
181 | - } | |
182 | - | |
183 | - if (added === false && vectorBest.length < sizeBest) { | |
184 | - vectorBest[vectorBest.length] = this.mirrors[j]; | |
185 | - } | |
186 | - | |
187 | - } | |
188 | - | |
189 | - } | |
190 | - | |
191 | - // pega aleatorio entre as N posicoes dos melhores (se for guloso, tera apenas um elemento no vetor) | |
192 | - if (firstHeuristic != this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM && vectorBest.length > 0) { | |
193 | - position = Math.floor((Math.random() * vectorBest.length)); | |
194 | - } | |
195 | - | |
196 | - if (position == -1) { | |
197 | - if (secondHeuristic == this.heuristics.SECONDHEURISTIC.SECONDCLOSEST) { | |
198 | - // escolhendo o mais proximo, no caso, o vetor já está ordenado | |
199 | - if (closestPosition != -1) { | |
200 | - position = closestPosition; | |
201 | - } else { | |
202 | - // se nao marcou nenhum como closest, todos devem estar como slow, nesse caso seleciona o primeiro que é o mais próximo | |
203 | - position = 0; | |
204 | - } | |
205 | - | |
206 | - } else { | |
207 | - position = Math.floor((Math.random() * this.mirrors.length)); | |
208 | - } | |
209 | - } | |
210 | - | |
211 | - callback(this.mirrors[position].url); | |
212 | - }; | |
213 | - | |
214 | - Chooser.prototype.loadMirrors_ = function(callback) { | |
215 | - if (this.mirrors.length > 0) { | |
216 | - if (callback instanceof Function) callback(); | |
217 | - | |
218 | - return; | |
219 | - } | |
220 | - | |
221 | - var $this = this; | |
222 | - | |
223 | - var localServers = JSON.parse(localStorage.getItem("servers")) || []; | |
224 | - | |
225 | - qdClient.getJSON(this.server, function (status, response) { | |
226 | - var servers = status === 200 ? response : []; | |
227 | - | |
228 | - for (var i = 0; i < servers.length; i++){ | |
229 | - var mirror = { | |
230 | - name: servers[i].nome, | |
231 | - url: servers[i].url, | |
232 | - averageTime: 99999999, | |
233 | - isSlow: false, | |
234 | - previousTimes: [], | |
235 | - remainingSlow: 0, | |
236 | - type: servers[i].type | |
237 | - }; | |
238 | - | |
239 | - for (var localServer in localServers) { | |
240 | - if (mirror.url == localServer.url) { | |
241 | - mirror.averageTime = localServer.averageTime; | |
242 | - mirror.isSlow = localServer.isSlow; | |
243 | - mirror.previousTimes = localServer.previousTimes; | |
244 | - mirror.remainingSlow = localServer.remainingSlow; | |
245 | - | |
246 | - break; | |
247 | - } | |
248 | - } | |
249 | - | |
250 | - $this.mirrors.push(mirror); | |
251 | - } | |
252 | - | |
253 | - if (callback instanceof Function) callback(); | |
254 | - }); | |
255 | - }; | |
256 | - | |
257 | -}(window, localStorage)); |
player/vendors/qdclient/qdclient.min.js
... | ... | @@ -1 +0,0 @@ |
1 | -!function(i,r){"use strict";i.qdClient=i.qdClient||{},qdClient.request=function(i,r,s,e){var t=new XMLHttpRequest,o="";if(t.open(r,i,!0),t.onload=function(){e(t.status,t.responseText)},"POST"==r&&s instanceof Object){for(var n in s)o+=n+"="+s[n]+"&";s.length>1&&o.slice(0,-1)}t.send(o)},qdClient.getJSON=function(i,r){qdClient.request(i,"GET",{},function(i,s){r(i,JSON.parse(s))})}}(window),function(i,r,s){"use strict";function e(){this.server="http://150.165.204.39/vlibras-cloud/get_servers.php",this.options={THRESHOLDSLOW:2e3,SLOWLIMITTRIES:5,NBESTHEURISTIC1:2,QUANTITYPREVIOUSTIMESSTORED:10},this.mirrors=[],this.heuristics={FIRSTHEURISTIC:{FIRSTRANDOM:{value:0,name:"Random"},FIRSTRANDOMNBEST:{value:1,name:"Random Among N Best"},FIRSTBEST:{value:2,name:"Best"}},SECONDHEURISTIC:{SECONDRANDOM:{value:0,name:"Random"},SECONDCLOSEST:{value:1,name:"Closest"}},THIRDHEURISTIC:{THIRDSIMPLEAVERAGE:{value:0,name:"Simple Average"},THIRDWEIGHTEDAVERAGE:{value:1,name:"Weighted Average"}}}}qdClient.Chooser=e,e.prototype.choose=function(i,r,s,e){var t=this;this.loadMirrors_(function(){t.chooseServer_(i,r,s,e)})},e.prototype.chooseServer_=function(i,s,e,t){var o=this.heuristics.FIRSTHEURISTIC.FIRSTBEST,n=this.heuristics.SECONDHEURISTIC.SECONDRANDOM,h=this.heuristics.THIRDHEURISTIC.THIRDWEIGHTEDAVERAGE,T=0,S=0,a=this.options.NBESTHEURISTIC1;if(o==this.heuristics.FIRSTHEURISTIC.FIRSTBEST&&(a=1),i&&i.length>0)for(S=0;S<this.mirrors.length;S++)if(this.mirrors[S].url.toLowerCase()==i.toLowerCase()){if(this.mirrors[S].previousTimes.length<this.options.QUANTITYPREVIOUSTIMESSTORED)this.mirrors[S].previousTimes[this.mirrors[S].previousTimes.length]=s;else{for(T=this.options.QUANTITYPREVIOUSTIMESSTORED-1;T>0;T--)this.mirrors[S].previousTimes[T-1]=this.mirrors[S].previousTimes[T];this.mirrors[S].previousTimes[this.options.QUANTITYPREVIOUSTIMESSTORED-1]=s}if(h==this.heuristics.THIRDHEURISTIC.THIRDSIMPLEAVERAGE){var m=0;for(T=0;T<this.mirrors[S].previousTimes.length;T++)m+=this.mirrors[S].previousTimes[T];this.mirrors[S].averageTime=m/this.mirrors[S].previousTimes.length}else if(h==this.heuristics.THIRDHEURISTIC.THIRDWEIGHTEDAVERAGE){var I=0,l=0;for(T=0;T<this.mirrors[S].previousTimes.length;T++)I+=this.mirrors[S].previousTimes[T]*(T+1),l+=T+1;this.mirrors[S].averageTime=I/l}(s>this.options.THRESHOLDSLOW||-1==e)&&(this.mirrors[S].isSlow=!0,this.mirrors[S].remainingSlow=this.options.SLOWLIMITTRIES),r.setItem("servers",JSON.stringify(this.mirrors));break}var R,E=Math.floor(Math.random()*this.mirrors.length);o!=this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM&&(E=-1,R=-1);var u=[],v=0,g=0;for(T=0;T<this.mirrors.length;T++)if(this.mirrors[T].remainingSlow>0&&(this.mirrors[T].remainingSlow=this.mirrors[T].remainingSlow-1),0===this.mirrors[T].remainingSlow&&(this.mirrors[T].isSlow=!1),o!=this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM&&this.mirrors[T].isSlow===!1){-1==R&&(R=T);var f=!1;for(v=0;v<u.length;v++)if(this.mirrors[T].averageTime<u[v].averageTime||this.mirrors[T].averageTime==u[v].averageTime&&Math.floor(Math.random())<.5){if(f=!0,u.length<a)for(g=u.length-1;g>=v;g--)u[g+1]=u[g];else for(g=u.length-2;g>=v;g--)u[g+1]=u[g];u[v]=this.mirrors[T];break}f===!1&&u.length<a&&(u[u.length]=this.mirrors[T])}o!=this.heuristics.FIRSTHEURISTIC.FIRSTRANDOM&&u.length>0&&(E=Math.floor(Math.random()*u.length)),-1==E&&(E=n==this.heuristics.SECONDHEURISTIC.SECONDCLOSEST?-1!=R?R:0:Math.floor(Math.random()*this.mirrors.length)),t(this.mirrors[E].url)},e.prototype.loadMirrors_=function(i){if(this.mirrors.length>0)return void(i instanceof Function&&i());var s=this,e=JSON.parse(r.getItem("servers"))||[];qdClient.getJSON(this.server,function(r,t){for(var o=200===r?t:[],n=0;n<o.length;n++){var h={name:o[n].nome,url:o[n].url,averageTime:99999999,isSlow:!1,previousTimes:[],remainingSlow:0,type:o[n].type};for(var T in e)if(h.url==T.url){h.averageTime=T.averageTime,h.isSlow=T.isSlow,h.previousTimes=T.previousTimes,h.remainingSlow=T.remainingSlow;break}s.mirrors.push(h)}i instanceof Function&&i()})}}(window,localStorage); | |
2 | 0 | \ No newline at end of file |
player/window.html
... | ... | @@ -1,57 +0,0 @@ |
1 | -<!doctype html> | |
2 | -<html lang="en-us"> | |
3 | - <head> | |
4 | - <meta charset="utf-8"> | |
5 | - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
6 | - <title>VLibras Plugin</title> | |
7 | - <link rel="stylesheet" href="TemplateData/style.css"> | |
8 | - <link rel="shortcut icon" href="TemplateData/favicon.ico?v=2" /> | |
9 | - <script src="TemplateData/UnityProgress.js"></script> | |
10 | - | |
11 | - <script src="vendors/qdclient/qdclient.js"></script> | |
12 | - <script src="../main.js"></script> | |
13 | - | |
14 | - <style type="text/css"> | |
15 | - html, #canvas, .template, .template-wrap { | |
16 | - width: 100%; | |
17 | - height: 100%; | |
18 | - margin: 0; | |
19 | - overflow: hidden; | |
20 | - } | |
21 | - | |
22 | - #loading-screen span { | |
23 | - position: absolute; | |
24 | - top: 5px; | |
25 | - right: 40px; | |
26 | - padding: 15px 10px; | |
27 | - background: #000; | |
28 | - color: #FFF; | |
29 | - | |
30 | - font-size: 1.2em; | |
31 | - -webkit-border-radius: 20px; | |
32 | - -moz-border-radius: 20px; | |
33 | - border-radius: 20px; | |
34 | - } | |
35 | - | |
36 | - #loading-screen { | |
37 | - position: absolute; | |
38 | - top: 0; | |
39 | - left: 0; | |
40 | - display: none; | |
41 | - width: 100%; | |
42 | - height: 100%; | |
43 | - z-index: 9999; | |
44 | - } | |
45 | - </style> | |
46 | - </head> | |
47 | - <body class="template"> | |
48 | - <div id="loading-screen"><span>Carregando...</span></div> | |
49 | - <div class="template-wrap clear"> | |
50 | - <canvas class="emscripten" id="canvas"></canvas> | |
51 | - </div> | |
52 | - <script src="connect.js"></script> | |
53 | -<script src="Release/UnityConfig.js"></script> | |
54 | -<script src="Release/fileloader.js"></script> | |
55 | -<script src="load.js"></script> | |
56 | - </body> | |
57 | -</html> |
... | ... | @@ -0,0 +1,57 @@ |
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
3 | +<plist version="1.0"> | |
4 | +<dict> | |
5 | + <key>Author</key> | |
6 | + <string>LAViD</string> | |
7 | + <key>Builder Version</key> | |
8 | + <string>10600.6.3</string> | |
9 | + <key>CFBundleDisplayName</key> | |
10 | + <string>VLibras Plugin</string> | |
11 | + <key>CFBundleIdentifier</key> | |
12 | + <string>br.ufpb.lavid.vlibras</string> | |
13 | + <key>CFBundleInfoDictionaryVersion</key> | |
14 | + <string>6.0</string> | |
15 | + <key>CFBundleShortVersionString</key> | |
16 | + <string>0.1</string> | |
17 | + <key>CFBundleVersion</key> | |
18 | + <string>1</string> | |
19 | + <key>Chrome</key> | |
20 | + <dict> | |
21 | + <key>Database Quota</key> | |
22 | + <real>5242880</real> | |
23 | + <key>Global Page</key> | |
24 | + <string>global.html</string> | |
25 | + </dict> | |
26 | + <key>Content</key> | |
27 | + <dict> | |
28 | + <key>Scripts</key> | |
29 | + <dict> | |
30 | + <key>End</key> | |
31 | + <array> | |
32 | + <string>scripts/delegator.js</string> | |
33 | + </array> | |
34 | + <key>Start</key> | |
35 | + <array> | |
36 | + <string>scripts/contextmenu.js</string> | |
37 | + </array> | |
38 | + </dict> | |
39 | + </dict> | |
40 | + <key>Description</key> | |
41 | + <string>Um tradutor de portugues para LIBRAS</string> | |
42 | + <key>DeveloperIdentifier</key> | |
43 | + <string>3PTX2S8KDQ</string> | |
44 | + <key>ExtensionInfoDictionaryVersion</key> | |
45 | + <string>1.0</string> | |
46 | + <key>Permissions</key> | |
47 | + <dict> | |
48 | + <key>Website Access</key> | |
49 | + <dict> | |
50 | + <key>Include Secure Pages</key> | |
51 | + <true/> | |
52 | + <key>Level</key> | |
53 | + <string>All</string> | |
54 | + </dict> | |
55 | + </dict> | |
56 | +</dict> | |
57 | +</plist> | ... | ... |
... | ... | @@ -0,0 +1,56 @@ |
1 | +window.resizeTo(535, 500); | |
2 | + | |
3 | +var app = { | |
4 | + chooser: null, | |
5 | + glosa: undefined, | |
6 | + loaded: false, | |
7 | + lastReq: { | |
8 | + url: null, | |
9 | + millis: null, | |
10 | + response: null | |
11 | + } | |
12 | +}; | |
13 | + | |
14 | +function onLoadPlayer() { | |
15 | + if ( app.glosa !== undefined ) | |
16 | + SendMessage('PlayerManager', 'catchGlosa', app.glosa); | |
17 | + | |
18 | + app.loaded = true; | |
19 | +} | |
20 | + | |
21 | +safari.self.addEventListener('message', function (request) { | |
22 | + if (request.name !== 'plugin:selectedText' && request.message === undefined) return; | |
23 | + var selectedText = encodeURI(request.message); | |
24 | + | |
25 | + app.chooser = app.chooser || new qdClient.Chooser(); | |
26 | + | |
27 | + document.getElementById('loading-screen').style.display = 'block'; | |
28 | + app.chooser.choose( | |
29 | + app.lastReq.url, | |
30 | + app.lastReq.millis, | |
31 | + app.lastReq.response, | |
32 | + function (url) { | |
33 | + var start = new Date().getTime(); | |
34 | + | |
35 | + if (!url) { | |
36 | + document.getElementById('loading-screen').style.display = 'none'; | |
37 | + return; | |
38 | + } | |
39 | + | |
40 | + qdClient.request(url + '?texto=' + selectedText, "GET", {}, | |
41 | + function(status, response) { | |
42 | + app.lastReq.response = status === 200 ? status : -1; | |
43 | + app.lastReq.millis = (new Date().getTime() - start); | |
44 | + app.lastReq.url = url; | |
45 | + | |
46 | + document.getElementById('loading-screen').style.display = 'none'; | |
47 | + if (status !== 200) return; | |
48 | + | |
49 | + app.glosa = response; | |
50 | + if (app.loaded == true) | |
51 | + SendMessage('PlayerManager', 'catchGlosa', app.glosa); | |
52 | + }); | |
53 | + }); | |
54 | +}); | |
55 | + | |
56 | +safari.self.tab.dispatchMessage('page:ready', true); | ... | ... |
... | ... | @@ -0,0 +1,46 @@ |
1 | +var popup = null; | |
2 | +var selectedText = undefined; | |
3 | + | |
4 | +safari.application.addEventListener('contextmenu', function (event){ | |
5 | + var selectedText = event.userInfo; | |
6 | + | |
7 | + if (!selectedText) return; | |
8 | + | |
9 | + if (selectedText.length > 20) { | |
10 | + selectedText = selectedText.substr(0, 20) + '...'; | |
11 | + } | |
12 | + | |
13 | + if (selectedText !== '') { | |
14 | + event.contextMenu.appendContextMenuItem('translateLibras', 'Traduzir ' + selectedText + ' para LIBRAS'); | |
15 | + } | |
16 | +}, false); | |
17 | + | |
18 | +safari.application.addEventListener('command', function (event){ | |
19 | + if (event.command === 'translateLibras') { | |
20 | + selectedText = event.userInfo; | |
21 | + | |
22 | + if (popup === null) { | |
23 | + popup = safari.application.openBrowserWindow().activeTab; | |
24 | + popup.url = safari.extension.baseURI + 'app/player/window.html'; | |
25 | + | |
26 | + popup.addEventListener('close', function () { | |
27 | + popup = null; | |
28 | + }); | |
29 | + | |
30 | + popup.addEventListener('navigate', function () { | |
31 | + popup = null; | |
32 | + }); | |
33 | + | |
34 | + popup.addEventListener('message', function (request) { | |
35 | + if (selectedText !== undefined && request.name === 'page:ready' && request.message == true) { | |
36 | + popup.page.dispatchMessage('plugin:selectedText', selectedText); | |
37 | + selectedText = undefined; | |
38 | + }; | |
39 | + }); | |
40 | + } else { | |
41 | + popup.browserWindow.activate(); | |
42 | + popup.page.dispatchMessage('plugin:selectedText', selectedText); | |
43 | + selectedText = undefined; | |
44 | + } | |
45 | + } | |
46 | +}, false); | |
0 | 47 | \ No newline at end of file | ... | ... |
18.4 KB
vlibrasplugin-chrome.pem
... | ... | @@ -1,28 +0,0 @@ |
1 | ------BEGIN PRIVATE KEY----- | |
2 | -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8UI+z9pRhF8Kv | |
3 | -WC3Y2eI41b4AJeROjrO3rVeBG+FYjMuOB0r1byFUlebGP/Nep7nZ9eEUZ4E71lkp | |
4 | -WDyYLfZTb+gum6MQAeh8Wd7aBh9qSa4ru08ieu/8HxmHdfUFpWph3yPMV0TdAXVh | |
5 | -sbMLWcvzu+AmEkPM09KtXENyAOkR63ncll7HtmGFdxicTzNWuIhrvrhsd1xtuS1c | |
6 | -g4vk1XEJ5mcSnVLVGojAI8uwY4QEAGC2bUMzmD6mtZxySHu5XxNnk1xFdTxebd1K | |
7 | -4u0HyDgpY7epRsnkYHQq9HZ7Smet2JW4tHmd/5nPMZXFztZ/bUSuOqAmXvmLXvmw | |
8 | -JSpVnEENAgMBAAECggEAVCmFMB8iDYq6/fbg9qvaSSBt/E7zDJEGjS6xjwhQ3GyA | |
9 | -hQeJXsu+D7m3HB90u3cmvtz/LUldHssbqji/TBwunPfEwx/X7s2LhBf+W16lJ7Gq | |
10 | -X+0k3vomy31ywXHcght9wiQiMa9HHacLORBcPtRxLItpEFrVZnO9ErHLiuYRRGo+ | |
11 | -EKP79o1dVZ5kldJ7toB4ok+KIDu2PJJShj4nXj7mKNlGZPH2hYn+NG7ZLFOjUp09 | |
12 | -AKjTIE5WADt5bOKN9Wo2HiCG63zLZsaJmeYh2v3TxnpAj+W/TMxV/y0kIe7gzqw1 | |
13 | -2qxdBmLBILNM8AkwadpbJRuC6aynd41sqejix3uemQKBgQDzONGl0Yf8fg5EyX3r | |
14 | -w/OldzZv/Comy6Ka/aq8I88clFBlEoD2os+lF6IDAgMj102awjiI+fxOe81C7Pza | |
15 | -a5eGHeq3qaE0E7v7ggcW7YXlFs9YC6RikKEkGCFnnaxeBf+/iXICcf32GzZkSow2 | |
16 | -JTedIJIbu/oca2UFpVsK4inkHwKBgQDGNUZMmJ1ca4WdpmP6mUCwqEgOZ+UcG/3K | |
17 | -4Sy0BtJOB1wVoQOzM1q2FUurCqps81cghUbtJyeRk4y4eI1rOEbz8m0UB0hWyEq1 | |
18 | -pJJiz0nei7ficAIHO5e2elDV2lJ7KNxYeb3YN2NXbGmwmsI/IoudPp+wghnl4Xns | |
19 | -2JcBFZdVUwKBgQCBDcb/6xvyt5gum5M7BDBFvemepfhfuXFAOBTd20pL6c52ssjH | |
20 | -FUCEYvPOEMVFwTomQaPp2msr4bjaKBFKfAhcW4dtiI5Gqan3G9lTKxj+o4nFN/gz | |
21 | -bHZ0RnGDH0CUay52nSFndsDAU1QbBws6t6i4sM2V9boSVlG2GzUhozuDFQKBgG2P | |
22 | -kTZRvdoSTR9hlC43fDyqKHpeD5TEHDuC0HUKuEENbGdAQ41Qu7med98p3B6xO93s | |
23 | -DdKVLBgaGVT2viUgTIgX3xeNFv1xZWqWd5xKvKhZTuHJzDU3SZtCbWBod+NAKNx3 | |
24 | -HutfYng2ow1N3kWL0OSwcxDcOXiKdBzpdD7TMn2lAoGAH3xcQ9pI1aCeNxrnyvsJ | |
25 | -1EFlSX+3HQvjd9JOVemiVd6jP5SbrM6DplzimYPVmJhlAcq+wi8/dHyOGMRCb7ZV | |
26 | -Yv44hSheny/RhfMcePwubLBhVULRrdg2LWOEnSgrLIWNe2CCJ+xzgr2mEM+vGazI | |
27 | -zVWbI5s+shUi96/ZSZMjxGo= | |
28 | ------END PRIVATE KEY----- |
... | ... | @@ -0,0 +1,97 @@ |
1 | +function UnityProgress (dom) { | |
2 | + this.progress = 0.0; | |
3 | + this.message = ""; | |
4 | + this.dom = dom; | |
5 | + | |
6 | + var parent = dom.parentNode; | |
7 | + | |
8 | + var background = document.createElement("div"); | |
9 | + background.style.background = "#FFFFFF"; | |
10 | + background.style.position = "absolute"; | |
11 | + parent.appendChild(background); | |
12 | + this.background = background; | |
13 | + | |
14 | + var logoImage = document.createElement("img"); | |
15 | + logoImage.src = "TemplateData/progresslogo.png"; | |
16 | + logoImage.style.position = "absolute"; | |
17 | + parent.appendChild(logoImage); | |
18 | + this.logoImage = logoImage; | |
19 | + | |
20 | + var progressFrame = document.createElement("img"); | |
21 | + progressFrame.src = "TemplateData/loadingbar.png"; | |
22 | + progressFrame.style.position = "absolute"; | |
23 | + parent.appendChild(progressFrame); | |
24 | + this.progressFrame = progressFrame; | |
25 | + | |
26 | + var progressBar = document.createElement("img"); | |
27 | + progressBar.src = "TemplateData/fullbar.png"; | |
28 | + progressBar.style.position = "absolute"; | |
29 | + parent.appendChild(progressBar); | |
30 | + this.progressBar = progressBar; | |
31 | + | |
32 | + var messageArea = document.createElement("p"); | |
33 | + messageArea.style.position = "absolute"; | |
34 | + parent.appendChild(messageArea); | |
35 | + this.messageArea = messageArea; | |
36 | + | |
37 | + | |
38 | + this.SetProgress = function (progress) { | |
39 | + if (this.progress < progress) | |
40 | + this.progress = progress; | |
41 | + this.messageArea.style.display = "none"; | |
42 | + this.progressFrame.style.display = "inline"; | |
43 | + this.progressBar.style.display = "inline"; | |
44 | + this.Update(); | |
45 | + } | |
46 | + | |
47 | + this.SetMessage = function (message) { | |
48 | + this.message = message; | |
49 | + this.background.style.display = "inline"; | |
50 | + this.logoImage.style.display = "inline"; | |
51 | + this.progressFrame.style.display = "none"; | |
52 | + this.progressBar.style.display = "none"; | |
53 | + this.Update(); | |
54 | + } | |
55 | + | |
56 | + this.Clear = function() { | |
57 | + this.background.style.display = "none"; | |
58 | + this.logoImage.style.display = "none"; | |
59 | + this.progressFrame.style.display = "none"; | |
60 | + this.progressBar.style.display = "none"; | |
61 | + } | |
62 | + | |
63 | + this.Update = function() { | |
64 | + this.background.style.top = this.dom.offsetTop + 'px'; | |
65 | + this.background.style.left = this.dom.offsetLeft + 'px'; | |
66 | + this.background.style.width = this.dom.offsetWidth + 'px'; | |
67 | + this.background.style.height = this.dom.offsetHeight + 'px'; | |
68 | + | |
69 | + var logoImg = new Image(); | |
70 | + logoImg.src = this.logoImage.src; | |
71 | + var progressFrameImg = new Image(); | |
72 | + progressFrameImg.src = this.progressFrame.src; | |
73 | + | |
74 | + this.logoImage.style.top = this.dom.offsetTop + (this.dom.offsetHeight * 0.5 - logoImg.height * 0.5) + 'px'; | |
75 | + this.logoImage.style.left = this.dom.offsetLeft + (this.dom.offsetWidth * 0.5 - logoImg.width * 0.5) + 'px'; | |
76 | + this.logoImage.style.width = logoImg.width+'px'; | |
77 | + this.logoImage.style.height = logoImg.height+'px'; | |
78 | + | |
79 | + this.progressFrame.style.top = this.dom.offsetTop + (this.dom.offsetHeight * 0.5 + logoImg.height * 0.5 + 10) + 'px'; | |
80 | + this.progressFrame.style.left = this.dom.offsetLeft + (this.dom.offsetWidth * 0.5 - progressFrameImg.width * 0.5) + 'px'; | |
81 | + this.progressFrame.width = progressFrameImg.width; | |
82 | + this.progressFrame.height = progressFrameImg.height; | |
83 | + | |
84 | + this.progressBar.style.top = this.progressFrame.style.top; | |
85 | + this.progressBar.style.left = this.progressFrame.style.left; | |
86 | + this.progressBar.width = progressFrameImg.width * Math.min(this.progress, 1); | |
87 | + this.progressBar.height = progressFrameImg.height; | |
88 | + | |
89 | + this.messageArea.style.top = this.progressFrame.style.top; | |
90 | + this.messageArea.style.left = 0; | |
91 | + this.messageArea.style.width = '100%'; | |
92 | + this.messageArea.style.textAlign = 'center'; | |
93 | + this.messageArea.innerHTML = this.message; | |
94 | + } | |
95 | + | |
96 | + this.Update (); | |
97 | +} | |
0 | 98 | \ No newline at end of file | ... | ... |
51.6 KB
18.4 KB
2.71 KB
2.78 KB
20.7 KB
... | ... | @@ -0,0 +1,28 @@ |
1 | + | |
2 | +/**************************************** | |
3 | + ==== RESETS | |
4 | +****************************************/ | |
5 | + | |
6 | +html,body,div,canvas { margin: 0; padding: 0; } | |
7 | +::-moz-selection { color: #333; text-shadow: none; } | |
8 | +::selection { color: #333; text-shadow: none; } | |
9 | +.clear:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } | |
10 | +.clear { display: inline-table; clear: both; } | |
11 | +/* Hides from IE-mac \*/ * html .clear { height: 1%; } .clear { display: block; } /* End hide from IE-mac */ | |
12 | + | |
13 | +/**************************************** | |
14 | + ==== LAYOUT | |
15 | +****************************************/ | |
16 | + | |
17 | +html, body { width: 100%; height: 100%; font-family: Helvetica, Verdana, Arial, sans-serif; } | |
18 | +body { } | |
19 | +p.header, p.footer { display: none; } | |
20 | +div.logo { width: 196px; height: 38px; float: left; background: url(logo.png) 0 0 no-repeat; position: relative; z-index: 10; } | |
21 | +div.title { height: 38px; line-height: 38px; padding: 0 10px; margin: 0 1px 0 0; float: right; color: #333; text-align: right; font-size: 18px; position: relative; z-index: 10; } | |
22 | +.template-wrap { position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } | |
23 | +.template-wrap canvas { margin: 0 0 10px 0; position: relative; z-index: 9; box-shadow: 0 10px 30px rgba(0,0,0,0.2); -moz-box-shadow: 0 10px 30px rgba(0,0,0,0.2); } | |
24 | +.fullscreen { float: right; position: relative; z-index: 10; } | |
25 | + | |
26 | +body.template { } | |
27 | +.template .template-wrap { } | |
28 | +.template .template-wrap canvas { } | ... | ... |
... | ... | @@ -0,0 +1,40 @@ |
1 | +// connect to canvas | |
2 | + var Module = { | |
3 | + TOTAL_MEMORY: 268435456, | |
4 | + filePackagePrefixURL: "Release/", | |
5 | + memoryInitializerPrefixURL: "Release/", | |
6 | + preRun: [], | |
7 | + postRun: [], | |
8 | + print: (function() { | |
9 | + return function(text) { | |
10 | + console.log (text); | |
11 | + }; | |
12 | + })(), | |
13 | + printErr: function(text) { | |
14 | + console.error (text); | |
15 | + }, | |
16 | + canvas: document.getElementById('canvas'), | |
17 | + progress: null, | |
18 | + setStatus: function(text) { | |
19 | + if (this.progress == null) | |
20 | + { | |
21 | + if (typeof UnityProgress != 'function') | |
22 | + return; | |
23 | + this.progress = new UnityProgress (canvas); | |
24 | + } | |
25 | + if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' }; | |
26 | + if (text === Module.setStatus.text) return; | |
27 | + this.progress.SetMessage (text); | |
28 | + var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); | |
29 | + if (m) | |
30 | + this.progress.SetProgress (parseInt(m[2])/parseInt(m[4])); | |
31 | + if (text === "") | |
32 | + this.progress.Clear() | |
33 | + }, | |
34 | + totalDependencies: 0, | |
35 | + monitorRunDependencies: function(left) { | |
36 | + this.totalDependencies = Math.max(this.totalDependencies, left); | |
37 | + Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.'); | |
38 | + } | |
39 | + }; | |
40 | + Module.setStatus('Downloading (0.0/1)'); | ... | ... |
... | ... | @@ -0,0 +1,39 @@ |
1 | +if (!(!Math.fround)) { | |
2 | + var script = document.createElement('script'); | |
3 | + script.src = "Release/WEBGL.js"; | |
4 | + document.body.appendChild(script); | |
5 | +} else { | |
6 | + var codeXHR = new XMLHttpRequest(); | |
7 | + codeXHR.open('GET', 'Release/WEBGL.js', true); | |
8 | + codeXHR.onload = function() { | |
9 | + var code = codeXHR.responseText; | |
10 | + if (!Math.fround) { | |
11 | +try { | |
12 | + console.log('optimizing out Math.fround calls'); | |
13 | + var m = /var ([^=]+)=global\.Math\.fround;/.exec(code); | |
14 | + var minified = m[1]; | |
15 | + if (!minified) throw 'fail'; | |
16 | + var startAsm = code.indexOf('// EMSCRIPTEN_START_FUNCS'); | |
17 | + var endAsm = code.indexOf('// EMSCRIPTEN_END_FUNCS'); | |
18 | + var asm = code.substring(startAsm, endAsm); | |
19 | + do { | |
20 | + var moar = false; // we need to re-do, as x(x( will not be fixed | |
21 | + asm = asm.replace(new RegExp('[^a-zA-Z0-9\\$\\_]' + minified + '\\(', 'g'), function(s) { moar = true; return s[0] + '(' }); | |
22 | + } while (moar); | |
23 | + code = code.substring(0, startAsm) + asm + code.substring(endAsm); | |
24 | + code = code.replace("'use asm'", "'almost asm'"); | |
25 | +} catch(e) { console.log('failed to optimize out Math.fround calls ' + e) } | |
26 | + } | |
27 | + | |
28 | + var blob = new Blob([code], { type: 'text/javascript' }); | |
29 | + codeXHR = null; | |
30 | + var src = URL.createObjectURL(blob); | |
31 | + var script = document.createElement('script'); | |
32 | + script.src = URL.createObjectURL(blob); | |
33 | + script.onload = function() { | |
34 | + URL.revokeObjectURL(script.src); | |
35 | + }; | |
36 | + document.body.appendChild(script); | |
37 | + }; | |
38 | + codeXHR.send(null); | |
39 | +} | ... | ... |
... | ... | @@ -0,0 +1,57 @@ |
1 | +<!doctype html> | |
2 | +<html lang="en-us"> | |
3 | + <head> | |
4 | + <meta charset="utf-8"> | |
5 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
6 | + <title>VLibras Plugin</title> | |
7 | + <link rel="stylesheet" href="TemplateData/style.css"> | |
8 | + <link rel="shortcut icon" href="TemplateData/favicon.ico?v=2" /> | |
9 | + <script src="TemplateData/UnityProgress.js"></script> | |
10 | + | |
11 | + <script src="vendors/qdclient/qdclient.js"></script> | |
12 | + <script src="../main.js"></script> | |
13 | + | |
14 | + <style type="text/css"> | |
15 | + html, #canvas, .template, .template-wrap { | |
16 | + width: 100%; | |
17 | + height: 100%; | |
18 | + margin: 0; | |
19 | + overflow: hidden; | |
20 | + } | |
21 | + | |
22 | + #loading-screen span { | |
23 | + position: absolute; | |
24 | + top: 5px; | |
25 | + right: 40px; | |
26 | + padding: 15px 10px; | |
27 | + background: #000; | |
28 | + color: #FFF; | |
29 | + | |
30 | + font-size: 1.2em; | |
31 | + -webkit-border-radius: 20px; | |
32 | + -moz-border-radius: 20px; | |
33 | + border-radius: 20px; | |
34 | + } | |
35 | + | |
36 | + #loading-screen { | |
37 | + position: absolute; | |
38 | + top: 0; | |
39 | + left: 0; | |
40 | + display: none; | |
41 | + width: 100%; | |
42 | + height: 100%; | |
43 | + z-index: 9999; | |
44 | + } | |
45 | + </style> | |
46 | + </head> | |
47 | + <body class="template"> | |
48 | + <div id="loading-screen"><span>Carregando...</span></div> | |
49 | + <div class="template-wrap clear"> | |
50 | + <canvas class="emscripten" id="canvas"></canvas> | |
51 | + </div> | |
52 | + <script src="connect.js"></script> | |
53 | +<script src="Release/UnityConfig.js"></script> | |
54 | +<script src="Release/fileloader.js"></script> | |
55 | +<script src="load.js"></script> | |
56 | + </body> | |
57 | +</html> | ... | ... |
No preview for this file type
... | ... | @@ -0,0 +1,17 @@ |
1 | +{ | |
2 | + "name": "vlibras-player", | |
3 | + "version": "0.0.1", | |
4 | + "ignore": [ | |
5 | + "**/.*", | |
6 | + "node_modules", | |
7 | + "bower_components", | |
8 | + "test", | |
9 | + "tests" | |
10 | + ], | |
11 | + "devDependencies": { | |
12 | + "qdclient": "git@git.lavid.ufpb.br:qdclient.git" | |
13 | + }, | |
14 | + "dependencies": { | |
15 | + "jquery": "~2.1.4" | |
16 | + } | |
17 | +} | ... | ... |
... | ... | @@ -0,0 +1,7 @@ |
1 | +var Player = new UnityObject2(); | |
2 | +Player.initPlugin(document.getElementById('player'), 'WEBPLAYER.unity3d'); | |
3 | + | |
4 | +function SendMessage(object, method, params) { | |
5 | + console.log('SendMessage trigger'); | |
6 | + Player.getUnity().SendMessage(object, method, params); | |
7 | +} | |
0 | 8 | \ No newline at end of file | ... | ... |
... | ... | @@ -0,0 +1,58 @@ |
1 | +<!doctype html> | |
2 | +<html lang="en-us"> | |
3 | + <head> | |
4 | + <meta charset="utf-8"> | |
5 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
6 | + <title>VLibras Plugin</title> | |
7 | + | |
8 | + <style type="text/css"> | |
9 | + html, body, #player { | |
10 | + width: 100%; | |
11 | + height: 100%; | |
12 | + margin: 0; | |
13 | + overflow: hidden; | |
14 | + } | |
15 | + | |
16 | + #loading-screen span { | |
17 | + position: absolute; | |
18 | + top: 5px; | |
19 | + right: 40px; | |
20 | + padding: 15px 10px; | |
21 | + background: #000; | |
22 | + color: #FFF; | |
23 | + | |
24 | + font-size: 1.2em; | |
25 | + -webkit-border-radius: 20px; | |
26 | + -moz-border-radius: 20px; | |
27 | + border-radius: 20px; | |
28 | + } | |
29 | + | |
30 | + #loading-screen { | |
31 | + position: absolute; | |
32 | + top: 0; | |
33 | + left: 0; | |
34 | + display: none; | |
35 | + width: 100%; | |
36 | + height: 100%; | |
37 | + z-index: 9999; | |
38 | + } | |
39 | + </style> | |
40 | + </head> | |
41 | + <body> | |
42 | + <div id="loading-screen"><span>Carregando...</span></div> | |
43 | + <div id="player"> | |
44 | + <div class="missing"> | |
45 | + <a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!"> | |
46 | + <img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" /> | |
47 | + </a> | |
48 | + </div> | |
49 | + </div> | |
50 | + | |
51 | + <script src="vendors/jquery/dist/jquery.min.js"></script> | |
52 | + <script src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject2.js"></script> | |
53 | + <script src="vendors/qdclient/qdclient.js"></script> | |
54 | + <script src="player.js"></script> | |
55 | + | |
56 | + <script src="../main.js"></script> | |
57 | + </body> | |
58 | +</html> | |
0 | 59 | \ No newline at end of file | ... | ... |