16
16
* License along with this library.
17
17
*/
18
18
using System ;
19
- using AlphaTab . Collections ;
20
19
using AlphaTab . Model ;
21
20
using AlphaTab . Rendering ;
22
21
using AlphaTab . Rendering . Utils ;
23
22
using SharpKit . Html ;
24
- using SharpKit . Html . fileapi ;
25
23
using SharpKit . Html . workers ;
26
24
using SharpKit . JavaScript ;
25
+ using WorkerContext = SharpKit . Html . workers . WorkerContext ;
27
26
28
27
namespace AlphaTab . Platform . JavaScript
29
28
{
@@ -36,57 +35,29 @@ public class WorkerScoreRenderer : HtmlContext, IScoreRenderer
36
35
37
36
public WorkerScoreRenderer ( Settings settings )
38
37
{
39
- _worker = new Worker ( CreateWorkerUrl ( ) ) ;
40
- _worker . postMessage ( new { cmd = "initialize" , settings = settings . ToJson ( ) } ) ;
38
+ _worker = new Worker ( settings . ScriptFile ) ;
39
+ _worker . postMessage ( new { cmd = "alphaTab. initialize" , settings = settings . ToJson ( ) } ) ;
41
40
_worker . addEventListener ( "message" , HandleWorkerMessage , false ) ;
42
41
}
43
42
44
- private string CreateWorkerUrl ( )
45
- {
46
- var source = @"self.onmessage = function(e) {
47
- if(e.data.cmd == 'initialize') {
48
- importScripts(e.data.settings.atRoot);
49
- new AlphaTab.Platform.JavaScript.JsWorker(self, e.data.settings);
50
- }
51
- }" ;
52
-
53
- JsCode ( "window.URL = window.URL || window.webkitURL;" ) ;
54
- JsCode ( "window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;" ) ;
55
-
56
- Blob blob ;
57
- try
58
- {
59
- blob = new Blob ( new [ ] { source } , new { type = "application/javascript" } ) ;
60
- }
61
- catch
62
- {
63
- dynamic builder = JsCode ( "new BlobBuilder()" ) ;
64
- builder . append ( source ) ;
65
- blob = builder . getBlob ( ) ;
66
- }
67
-
68
- return JsCode ( "URL.createObjectURL(blob)" ) . As < string > ( ) ;
69
-
70
- }
71
-
72
43
public void UpdateSettings ( Settings settings )
73
44
{
74
- _worker . postMessage ( new { cmd = "updateSettings" , settings = settings . ToJson ( ) } ) ;
45
+ _worker . postMessage ( new { cmd = "alphaTab. updateSettings" , settings = settings . ToJson ( ) } ) ;
75
46
}
76
47
77
48
public void Invalidate ( )
78
49
{
79
- _worker . postMessage ( new { cmd = "invalidate" } ) ;
50
+ _worker . postMessage ( new { cmd = "alphaTab. invalidate" } ) ;
80
51
}
81
52
82
53
public void Resize ( int width )
83
54
{
84
- _worker . postMessage ( new { cmd = "resize" , width = width } ) ;
55
+ _worker . postMessage ( new { cmd = "alphaTab. resize" , width = width } ) ;
85
56
}
86
57
87
58
public void Load ( object data , int [ ] trackIndexes )
88
59
{
89
- _worker . postMessage ( new { cmd = "load" , data = data , indexes = trackIndexes } ) ;
60
+ _worker . postMessage ( new { cmd = "alphaTab. load" , data = data , indexes = trackIndexes } ) ;
90
61
}
91
62
92
63
private void HandleWorkerMessage ( DOMEvent e )
@@ -95,23 +66,23 @@ private void HandleWorkerMessage(DOMEvent e)
95
66
var cmd = data . Member ( "cmd" ) . As < string > ( ) ;
96
67
switch ( cmd )
97
68
{
98
- case "preRender" :
69
+ case "alphaTab. preRender" :
99
70
OnPreRender ( data . Member ( "result" ) . As < RenderFinishedEventArgs > ( ) ) ;
100
71
break ;
101
- case "partialRenderFinished" :
72
+ case "alphaTab. partialRenderFinished" :
102
73
OnPartialRenderFinished ( data . Member ( "result" ) . As < RenderFinishedEventArgs > ( ) ) ;
103
74
break ;
104
- case "renderFinished" :
75
+ case "alphaTab. renderFinished" :
105
76
OnRenderFinished ( data . Member ( "result" ) . As < RenderFinishedEventArgs > ( ) ) ;
106
77
break ;
107
- case "postRenderFinished" :
78
+ case "alphaTab. postRenderFinished" :
108
79
BoundsLookup = BoundsLookup . FromJson ( data . Member ( "boundsLookup" ) , Score ) ;
109
80
OnPostRenderFinished ( ) ;
110
81
break ;
111
- case "error" :
82
+ case "alphaTab. error" :
112
83
console . error ( data . Member ( "exception" ) ) ;
113
84
break ;
114
- case "loaded" :
85
+ case "alphaTab. loaded" :
115
86
var score = data . Member ( "score" ) . As < Score > ( ) ;
116
87
if ( score . As < bool > ( ) )
117
88
{
@@ -126,7 +97,7 @@ private void HandleWorkerMessage(DOMEvent e)
126
97
127
98
public void RenderMultiple ( int [ ] trackIndexes )
128
99
{
129
- _worker . postMessage ( new { cmd = "renderMultiple" , data = trackIndexes } ) ;
100
+ _worker . postMessage ( new { cmd = "alphaTab. renderMultiple" , data = trackIndexes } ) ;
130
101
}
131
102
132
103
public event Action < RenderFinishedEventArgs > PreRender ;
@@ -166,7 +137,7 @@ protected virtual void OnLoaded(Score score)
166
137
167
138
public void Tex ( string contents )
168
139
{
169
- _worker . postMessage ( new { cmd = "tex" , data = contents } ) ;
140
+ _worker . postMessage ( new { cmd = "alphaTab. tex" , data = contents } ) ;
170
141
}
171
142
172
143
}
0 commit comments