This diff has been collapsed as it changes many lines, (12109 lines changed)
Show them
Hide them
|
|
@@
-0,0
+1,12109
|
|
|
1
|
{
|
|
|
2
|
"cells": [
|
|
|
3
|
{
|
|
|
4
|
"cell_type": "code",
|
|
|
5
|
"execution_count": 4,
|
|
|
6
|
"metadata": {
|
|
|
7
|
"ExecuteTime": {
|
|
|
8
|
"end_time": "2018-06-28T15:31:30.961300Z",
|
|
|
9
|
"start_time": "2018-06-28T15:31:30.949066Z"
|
|
|
10
|
}
|
|
|
11
|
},
|
|
|
12
|
"outputs": [],
|
|
|
13
|
"source": [
|
|
|
14
|
"from lfrcompliance.test_engine.result_loader import ResultLoader\n",
|
|
|
15
|
"from lfrcompliance.test_engine.testcontext import TestContextOutput,TestContextInput\n",
|
|
|
16
|
"from lfrcompliance.test_engine.tests.analysis import TF\n",
|
|
|
17
|
"import pandas as pds\n",
|
|
|
18
|
"import numpy as np\n",
|
|
|
19
|
"\n",
|
|
|
20
|
"%matplotlib notebook\n",
|
|
|
21
|
"import matplotlib.pyplot as plt\n"
|
|
|
22
|
]
|
|
|
23
|
},
|
|
|
24
|
{
|
|
|
25
|
"cell_type": "code",
|
|
|
26
|
"execution_count": 2,
|
|
|
27
|
"metadata": {
|
|
|
28
|
"ExecuteTime": {
|
|
|
29
|
"end_time": "2018-06-28T15:31:28.008590Z",
|
|
|
30
|
"start_time": "2018-06-28T15:31:27.076862Z"
|
|
|
31
|
}
|
|
|
32
|
},
|
|
|
33
|
"outputs": [],
|
|
|
34
|
"source": [
|
|
|
35
|
"res = ResultLoader('2018_06_28_10_46_33.output')\n",
|
|
|
36
|
"res.decomutePackets()\n",
|
|
|
37
|
"res.loadSWF()"
|
|
|
38
|
]
|
|
|
39
|
},
|
|
|
40
|
{
|
|
|
41
|
"cell_type": "markdown",
|
|
|
42
|
"metadata": {},
|
|
|
43
|
"source": [
|
|
|
44
|
"# Snapshot FFTs at F0"
|
|
|
45
|
]
|
|
|
46
|
},
|
|
|
47
|
{
|
|
|
48
|
"cell_type": "code",
|
|
|
49
|
"execution_count": 5,
|
|
|
50
|
"metadata": {
|
|
|
51
|
"ExecuteTime": {
|
|
|
52
|
"end_time": "2018-06-28T15:31:33.396423Z",
|
|
|
53
|
"start_time": "2018-06-28T15:31:33.259087Z"
|
|
|
54
|
},
|
|
|
55
|
"scrolled": false
|
|
|
56
|
},
|
|
|
57
|
"outputs": [
|
|
|
58
|
{
|
|
|
59
|
"data": {
|
|
|
60
|
"application/javascript": [
|
|
|
61
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
62
|
"window.mpl = {};\n",
|
|
|
63
|
"\n",
|
|
|
64
|
"\n",
|
|
|
65
|
"mpl.get_websocket_type = function() {\n",
|
|
|
66
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
67
|
" return WebSocket;\n",
|
|
|
68
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
69
|
" return MozWebSocket;\n",
|
|
|
70
|
" } else {\n",
|
|
|
71
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
72
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
73
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
74
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
75
|
" };\n",
|
|
|
76
|
"}\n",
|
|
|
77
|
"\n",
|
|
|
78
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
79
|
" this.id = figure_id;\n",
|
|
|
80
|
"\n",
|
|
|
81
|
" this.ws = websocket;\n",
|
|
|
82
|
"\n",
|
|
|
83
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
84
|
"\n",
|
|
|
85
|
" if (!this.supports_binary) {\n",
|
|
|
86
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
87
|
" if (warnings) {\n",
|
|
|
88
|
" warnings.style.display = 'block';\n",
|
|
|
89
|
" warnings.textContent = (\n",
|
|
|
90
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
91
|
" \"Performance may be slow.\");\n",
|
|
|
92
|
" }\n",
|
|
|
93
|
" }\n",
|
|
|
94
|
"\n",
|
|
|
95
|
" this.imageObj = new Image();\n",
|
|
|
96
|
"\n",
|
|
|
97
|
" this.context = undefined;\n",
|
|
|
98
|
" this.message = undefined;\n",
|
|
|
99
|
" this.canvas = undefined;\n",
|
|
|
100
|
" this.rubberband_canvas = undefined;\n",
|
|
|
101
|
" this.rubberband_context = undefined;\n",
|
|
|
102
|
" this.format_dropdown = undefined;\n",
|
|
|
103
|
"\n",
|
|
|
104
|
" this.image_mode = 'full';\n",
|
|
|
105
|
"\n",
|
|
|
106
|
" this.root = $('<div/>');\n",
|
|
|
107
|
" this._root_extra_style(this.root)\n",
|
|
|
108
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
109
|
"\n",
|
|
|
110
|
" $(parent_element).append(this.root);\n",
|
|
|
111
|
"\n",
|
|
|
112
|
" this._init_header(this);\n",
|
|
|
113
|
" this._init_canvas(this);\n",
|
|
|
114
|
" this._init_toolbar(this);\n",
|
|
|
115
|
"\n",
|
|
|
116
|
" var fig = this;\n",
|
|
|
117
|
"\n",
|
|
|
118
|
" this.waiting = false;\n",
|
|
|
119
|
"\n",
|
|
|
120
|
" this.ws.onopen = function () {\n",
|
|
|
121
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
122
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
123
|
" if (mpl.ratio != 1) {\n",
|
|
|
124
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
125
|
" }\n",
|
|
|
126
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
127
|
" }\n",
|
|
|
128
|
"\n",
|
|
|
129
|
" this.imageObj.onload = function() {\n",
|
|
|
130
|
" if (fig.image_mode == 'full') {\n",
|
|
|
131
|
" // Full images could contain transparency (where diff images\n",
|
|
|
132
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
133
|
" // there is no ghosting.\n",
|
|
|
134
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
135
|
" }\n",
|
|
|
136
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
137
|
" };\n",
|
|
|
138
|
"\n",
|
|
|
139
|
" this.imageObj.onunload = function() {\n",
|
|
|
140
|
" fig.ws.close();\n",
|
|
|
141
|
" }\n",
|
|
|
142
|
"\n",
|
|
|
143
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
144
|
"\n",
|
|
|
145
|
" this.ondownload = ondownload;\n",
|
|
|
146
|
"}\n",
|
|
|
147
|
"\n",
|
|
|
148
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
149
|
" var titlebar = $(\n",
|
|
|
150
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
151
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
152
|
" var titletext = $(\n",
|
|
|
153
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
154
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
155
|
" titlebar.append(titletext)\n",
|
|
|
156
|
" this.root.append(titlebar);\n",
|
|
|
157
|
" this.header = titletext[0];\n",
|
|
|
158
|
"}\n",
|
|
|
159
|
"\n",
|
|
|
160
|
"\n",
|
|
|
161
|
"\n",
|
|
|
162
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
163
|
"\n",
|
|
|
164
|
"}\n",
|
|
|
165
|
"\n",
|
|
|
166
|
"\n",
|
|
|
167
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
168
|
"\n",
|
|
|
169
|
"}\n",
|
|
|
170
|
"\n",
|
|
|
171
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
172
|
" var fig = this;\n",
|
|
|
173
|
"\n",
|
|
|
174
|
" var canvas_div = $('<div/>');\n",
|
|
|
175
|
"\n",
|
|
|
176
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
177
|
"\n",
|
|
|
178
|
" function canvas_keyboard_event(event) {\n",
|
|
|
179
|
" return fig.key_event(event, event['data']);\n",
|
|
|
180
|
" }\n",
|
|
|
181
|
"\n",
|
|
|
182
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
183
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
184
|
" this.canvas_div = canvas_div\n",
|
|
|
185
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
186
|
" this.root.append(canvas_div);\n",
|
|
|
187
|
"\n",
|
|
|
188
|
" var canvas = $('<canvas/>');\n",
|
|
|
189
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
190
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
191
|
"\n",
|
|
|
192
|
" this.canvas = canvas[0];\n",
|
|
|
193
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
194
|
"\n",
|
|
|
195
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
196
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
197
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
198
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
199
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
200
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
201
|
"\n",
|
|
|
202
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
203
|
"\n",
|
|
|
204
|
" var rubberband = $('<canvas/>');\n",
|
|
|
205
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
206
|
"\n",
|
|
|
207
|
" var pass_mouse_events = true;\n",
|
|
|
208
|
"\n",
|
|
|
209
|
" canvas_div.resizable({\n",
|
|
|
210
|
" start: function(event, ui) {\n",
|
|
|
211
|
" pass_mouse_events = false;\n",
|
|
|
212
|
" },\n",
|
|
|
213
|
" resize: function(event, ui) {\n",
|
|
|
214
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
215
|
" },\n",
|
|
|
216
|
" stop: function(event, ui) {\n",
|
|
|
217
|
" pass_mouse_events = true;\n",
|
|
|
218
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
219
|
" },\n",
|
|
|
220
|
" });\n",
|
|
|
221
|
"\n",
|
|
|
222
|
" function mouse_event_fn(event) {\n",
|
|
|
223
|
" if (pass_mouse_events)\n",
|
|
|
224
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
225
|
" }\n",
|
|
|
226
|
"\n",
|
|
|
227
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
228
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
229
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
230
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
231
|
"\n",
|
|
|
232
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
233
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
234
|
"\n",
|
|
|
235
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
236
|
" event = event.originalEvent;\n",
|
|
|
237
|
" event['data'] = 'scroll'\n",
|
|
|
238
|
" if (event.deltaY < 0) {\n",
|
|
|
239
|
" event.step = 1;\n",
|
|
|
240
|
" } else {\n",
|
|
|
241
|
" event.step = -1;\n",
|
|
|
242
|
" }\n",
|
|
|
243
|
" mouse_event_fn(event);\n",
|
|
|
244
|
" });\n",
|
|
|
245
|
"\n",
|
|
|
246
|
" canvas_div.append(canvas);\n",
|
|
|
247
|
" canvas_div.append(rubberband);\n",
|
|
|
248
|
"\n",
|
|
|
249
|
" this.rubberband = rubberband;\n",
|
|
|
250
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
251
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
252
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
253
|
"\n",
|
|
|
254
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
255
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
256
|
" // canvas in synch.\n",
|
|
|
257
|
" canvas_div.css('width', width)\n",
|
|
|
258
|
" canvas_div.css('height', height)\n",
|
|
|
259
|
"\n",
|
|
|
260
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
261
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
262
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
263
|
"\n",
|
|
|
264
|
" rubberband.attr('width', width);\n",
|
|
|
265
|
" rubberband.attr('height', height);\n",
|
|
|
266
|
" }\n",
|
|
|
267
|
"\n",
|
|
|
268
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
269
|
" // upon first draw.\n",
|
|
|
270
|
" this._resize_canvas(600, 600);\n",
|
|
|
271
|
"\n",
|
|
|
272
|
" // Disable right mouse context menu.\n",
|
|
|
273
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
274
|
" return false;\n",
|
|
|
275
|
" });\n",
|
|
|
276
|
"\n",
|
|
|
277
|
" function set_focus () {\n",
|
|
|
278
|
" canvas.focus();\n",
|
|
|
279
|
" canvas_div.focus();\n",
|
|
|
280
|
" }\n",
|
|
|
281
|
"\n",
|
|
|
282
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
283
|
"}\n",
|
|
|
284
|
"\n",
|
|
|
285
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
286
|
" var fig = this;\n",
|
|
|
287
|
"\n",
|
|
|
288
|
" var nav_element = $('<div/>')\n",
|
|
|
289
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
290
|
" this.root.append(nav_element);\n",
|
|
|
291
|
"\n",
|
|
|
292
|
" // Define a callback function for later on.\n",
|
|
|
293
|
" function toolbar_event(event) {\n",
|
|
|
294
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
295
|
" }\n",
|
|
|
296
|
" function toolbar_mouse_event(event) {\n",
|
|
|
297
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
298
|
" }\n",
|
|
|
299
|
"\n",
|
|
|
300
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
301
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
302
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
303
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
304
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
305
|
"\n",
|
|
|
306
|
" if (!name) {\n",
|
|
|
307
|
" // put a spacer in here.\n",
|
|
|
308
|
" continue;\n",
|
|
|
309
|
" }\n",
|
|
|
310
|
" var button = $('<button/>');\n",
|
|
|
311
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
312
|
" 'ui-button-icon-only');\n",
|
|
|
313
|
" button.attr('role', 'button');\n",
|
|
|
314
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
315
|
" button.click(method_name, toolbar_event);\n",
|
|
|
316
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
317
|
"\n",
|
|
|
318
|
" var icon_img = $('<span/>');\n",
|
|
|
319
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
320
|
" icon_img.addClass(image);\n",
|
|
|
321
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
322
|
"\n",
|
|
|
323
|
" var tooltip_span = $('<span/>');\n",
|
|
|
324
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
325
|
" tooltip_span.html(tooltip);\n",
|
|
|
326
|
"\n",
|
|
|
327
|
" button.append(icon_img);\n",
|
|
|
328
|
" button.append(tooltip_span);\n",
|
|
|
329
|
"\n",
|
|
|
330
|
" nav_element.append(button);\n",
|
|
|
331
|
" }\n",
|
|
|
332
|
"\n",
|
|
|
333
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
334
|
"\n",
|
|
|
335
|
" var fmt_picker = $('<select/>');\n",
|
|
|
336
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
337
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
338
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
339
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
340
|
"\n",
|
|
|
341
|
" for (var ind in mpl.extensions) {\n",
|
|
|
342
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
343
|
" var option = $(\n",
|
|
|
344
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
345
|
" fmt_picker.append(option)\n",
|
|
|
346
|
" }\n",
|
|
|
347
|
"\n",
|
|
|
348
|
" // Add hover states to the ui-buttons\n",
|
|
|
349
|
" $( \".ui-button\" ).hover(\n",
|
|
|
350
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
351
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
352
|
" );\n",
|
|
|
353
|
"\n",
|
|
|
354
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
355
|
" nav_element.append(status_bar);\n",
|
|
|
356
|
" this.message = status_bar[0];\n",
|
|
|
357
|
"}\n",
|
|
|
358
|
"\n",
|
|
|
359
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
360
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
361
|
" // which will in turn request a refresh of the image.\n",
|
|
|
362
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
363
|
"}\n",
|
|
|
364
|
"\n",
|
|
|
365
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
366
|
" properties['type'] = type;\n",
|
|
|
367
|
" properties['figure_id'] = this.id;\n",
|
|
|
368
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
369
|
"}\n",
|
|
|
370
|
"\n",
|
|
|
371
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
372
|
" if (!this.waiting) {\n",
|
|
|
373
|
" this.waiting = true;\n",
|
|
|
374
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
375
|
" }\n",
|
|
|
376
|
"}\n",
|
|
|
377
|
"\n",
|
|
|
378
|
"\n",
|
|
|
379
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
380
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
381
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
382
|
" fig.ondownload(fig, format);\n",
|
|
|
383
|
"}\n",
|
|
|
384
|
"\n",
|
|
|
385
|
"\n",
|
|
|
386
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
387
|
" var size = msg['size'];\n",
|
|
|
388
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
389
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
390
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
391
|
" };\n",
|
|
|
392
|
"}\n",
|
|
|
393
|
"\n",
|
|
|
394
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
395
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
396
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
397
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
398
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
399
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
400
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
401
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
402
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
403
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
404
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
405
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
406
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
407
|
"\n",
|
|
|
408
|
" fig.rubberband_context.clearRect(\n",
|
|
|
409
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
410
|
"\n",
|
|
|
411
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
412
|
"}\n",
|
|
|
413
|
"\n",
|
|
|
414
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
415
|
" // Updates the figure title.\n",
|
|
|
416
|
" fig.header.textContent = msg['label'];\n",
|
|
|
417
|
"}\n",
|
|
|
418
|
"\n",
|
|
|
419
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
420
|
" var cursor = msg['cursor'];\n",
|
|
|
421
|
" switch(cursor)\n",
|
|
|
422
|
" {\n",
|
|
|
423
|
" case 0:\n",
|
|
|
424
|
" cursor = 'pointer';\n",
|
|
|
425
|
" break;\n",
|
|
|
426
|
" case 1:\n",
|
|
|
427
|
" cursor = 'default';\n",
|
|
|
428
|
" break;\n",
|
|
|
429
|
" case 2:\n",
|
|
|
430
|
" cursor = 'crosshair';\n",
|
|
|
431
|
" break;\n",
|
|
|
432
|
" case 3:\n",
|
|
|
433
|
" cursor = 'move';\n",
|
|
|
434
|
" break;\n",
|
|
|
435
|
" }\n",
|
|
|
436
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
437
|
"}\n",
|
|
|
438
|
"\n",
|
|
|
439
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
440
|
" fig.message.textContent = msg['message'];\n",
|
|
|
441
|
"}\n",
|
|
|
442
|
"\n",
|
|
|
443
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
444
|
" // Request the server to send over a new figure.\n",
|
|
|
445
|
" fig.send_draw_message();\n",
|
|
|
446
|
"}\n",
|
|
|
447
|
"\n",
|
|
|
448
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
449
|
" fig.image_mode = msg['mode'];\n",
|
|
|
450
|
"}\n",
|
|
|
451
|
"\n",
|
|
|
452
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
453
|
" // Called whenever the canvas gets updated.\n",
|
|
|
454
|
" this.send_message(\"ack\", {});\n",
|
|
|
455
|
"}\n",
|
|
|
456
|
"\n",
|
|
|
457
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
458
|
"// Called in the figure constructor.\n",
|
|
|
459
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
460
|
" return function socket_on_message(evt) {\n",
|
|
|
461
|
" if (evt.data instanceof Blob) {\n",
|
|
|
462
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
463
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
464
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
465
|
" * to be part of the websocket stream */\n",
|
|
|
466
|
" evt.data.type = \"image/png\";\n",
|
|
|
467
|
"\n",
|
|
|
468
|
" /* Free the memory for the previous frames */\n",
|
|
|
469
|
" if (fig.imageObj.src) {\n",
|
|
|
470
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
471
|
" fig.imageObj.src);\n",
|
|
|
472
|
" }\n",
|
|
|
473
|
"\n",
|
|
|
474
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
475
|
" evt.data);\n",
|
|
|
476
|
" fig.updated_canvas_event();\n",
|
|
|
477
|
" fig.waiting = false;\n",
|
|
|
478
|
" return;\n",
|
|
|
479
|
" }\n",
|
|
|
480
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
481
|
" fig.imageObj.src = evt.data;\n",
|
|
|
482
|
" fig.updated_canvas_event();\n",
|
|
|
483
|
" fig.waiting = false;\n",
|
|
|
484
|
" return;\n",
|
|
|
485
|
" }\n",
|
|
|
486
|
"\n",
|
|
|
487
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
488
|
" var msg_type = msg['type'];\n",
|
|
|
489
|
"\n",
|
|
|
490
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
491
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
492
|
" try {\n",
|
|
|
493
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
494
|
" } catch (e) {\n",
|
|
|
495
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
496
|
" return;\n",
|
|
|
497
|
" }\n",
|
|
|
498
|
"\n",
|
|
|
499
|
" if (callback) {\n",
|
|
|
500
|
" try {\n",
|
|
|
501
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
502
|
" callback(fig, msg);\n",
|
|
|
503
|
" } catch (e) {\n",
|
|
|
504
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
505
|
" }\n",
|
|
|
506
|
" }\n",
|
|
|
507
|
" };\n",
|
|
|
508
|
"}\n",
|
|
|
509
|
"\n",
|
|
|
510
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
511
|
"mpl.findpos = function(e) {\n",
|
|
|
512
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
513
|
" var targ;\n",
|
|
|
514
|
" if (!e)\n",
|
|
|
515
|
" e = window.event;\n",
|
|
|
516
|
" if (e.target)\n",
|
|
|
517
|
" targ = e.target;\n",
|
|
|
518
|
" else if (e.srcElement)\n",
|
|
|
519
|
" targ = e.srcElement;\n",
|
|
|
520
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
521
|
" targ = targ.parentNode;\n",
|
|
|
522
|
"\n",
|
|
|
523
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
524
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
525
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
526
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
527
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
528
|
"\n",
|
|
|
529
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
530
|
"};\n",
|
|
|
531
|
"\n",
|
|
|
532
|
"/*\n",
|
|
|
533
|
" * return a copy of an object with only non-object keys\n",
|
|
|
534
|
" * we need this to avoid circular references\n",
|
|
|
535
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
536
|
" */\n",
|
|
|
537
|
"function simpleKeys (original) {\n",
|
|
|
538
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
539
|
" if (typeof original[key] !== 'object')\n",
|
|
|
540
|
" obj[key] = original[key]\n",
|
|
|
541
|
" return obj;\n",
|
|
|
542
|
" }, {});\n",
|
|
|
543
|
"}\n",
|
|
|
544
|
"\n",
|
|
|
545
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
546
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
547
|
"\n",
|
|
|
548
|
" if (name === 'button_press')\n",
|
|
|
549
|
" {\n",
|
|
|
550
|
" this.canvas.focus();\n",
|
|
|
551
|
" this.canvas_div.focus();\n",
|
|
|
552
|
" }\n",
|
|
|
553
|
"\n",
|
|
|
554
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
555
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
556
|
"\n",
|
|
|
557
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
558
|
" step: event.step,\n",
|
|
|
559
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
560
|
"\n",
|
|
|
561
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
562
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
563
|
" * to control all of the cursor setting manually through the\n",
|
|
|
564
|
" * 'cursor' event from matplotlib */\n",
|
|
|
565
|
" event.preventDefault();\n",
|
|
|
566
|
" return false;\n",
|
|
|
567
|
"}\n",
|
|
|
568
|
"\n",
|
|
|
569
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
570
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
571
|
"}\n",
|
|
|
572
|
"\n",
|
|
|
573
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
574
|
"\n",
|
|
|
575
|
" // Prevent repeat events\n",
|
|
|
576
|
" if (name == 'key_press')\n",
|
|
|
577
|
" {\n",
|
|
|
578
|
" if (event.which === this._key)\n",
|
|
|
579
|
" return;\n",
|
|
|
580
|
" else\n",
|
|
|
581
|
" this._key = event.which;\n",
|
|
|
582
|
" }\n",
|
|
|
583
|
" if (name == 'key_release')\n",
|
|
|
584
|
" this._key = null;\n",
|
|
|
585
|
"\n",
|
|
|
586
|
" var value = '';\n",
|
|
|
587
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
588
|
" value += \"ctrl+\";\n",
|
|
|
589
|
" if (event.altKey && event.which != 18)\n",
|
|
|
590
|
" value += \"alt+\";\n",
|
|
|
591
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
592
|
" value += \"shift+\";\n",
|
|
|
593
|
"\n",
|
|
|
594
|
" value += 'k';\n",
|
|
|
595
|
" value += event.which.toString();\n",
|
|
|
596
|
"\n",
|
|
|
597
|
" this._key_event_extra(event, name);\n",
|
|
|
598
|
"\n",
|
|
|
599
|
" this.send_message(name, {key: value,\n",
|
|
|
600
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
601
|
" return false;\n",
|
|
|
602
|
"}\n",
|
|
|
603
|
"\n",
|
|
|
604
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
605
|
" if (name == 'download') {\n",
|
|
|
606
|
" this.handle_save(this, null);\n",
|
|
|
607
|
" } else {\n",
|
|
|
608
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
609
|
" }\n",
|
|
|
610
|
"};\n",
|
|
|
611
|
"\n",
|
|
|
612
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
613
|
" this.message.textContent = tooltip;\n",
|
|
|
614
|
"};\n",
|
|
|
615
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
616
|
"\n",
|
|
|
617
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
618
|
"\n",
|
|
|
619
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
620
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
621
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
622
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
623
|
" var ws = {};\n",
|
|
|
624
|
"\n",
|
|
|
625
|
" ws.close = function() {\n",
|
|
|
626
|
" comm.close()\n",
|
|
|
627
|
" };\n",
|
|
|
628
|
" ws.send = function(m) {\n",
|
|
|
629
|
" //console.log('sending', m);\n",
|
|
|
630
|
" comm.send(m);\n",
|
|
|
631
|
" };\n",
|
|
|
632
|
" // Register the callback with on_msg.\n",
|
|
|
633
|
" comm.on_msg(function(msg) {\n",
|
|
|
634
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
635
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
636
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
637
|
" });\n",
|
|
|
638
|
" return ws;\n",
|
|
|
639
|
"}\n",
|
|
|
640
|
"\n",
|
|
|
641
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
642
|
" // This is the function which gets called when the mpl process\n",
|
|
|
643
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
644
|
"\n",
|
|
|
645
|
" var id = msg.content.data.id;\n",
|
|
|
646
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
647
|
" // socket was opened in Python.\n",
|
|
|
648
|
" var element = $(\"#\" + id);\n",
|
|
|
649
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
650
|
"\n",
|
|
|
651
|
" function ondownload(figure, format) {\n",
|
|
|
652
|
" window.open(figure.imageObj.src);\n",
|
|
|
653
|
" }\n",
|
|
|
654
|
"\n",
|
|
|
655
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
656
|
" ondownload,\n",
|
|
|
657
|
" element.get(0));\n",
|
|
|
658
|
"\n",
|
|
|
659
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
660
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
661
|
" ws_proxy.onopen();\n",
|
|
|
662
|
"\n",
|
|
|
663
|
" fig.parent_element = element.get(0);\n",
|
|
|
664
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
665
|
" if (!fig.cell_info) {\n",
|
|
|
666
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
667
|
" return;\n",
|
|
|
668
|
" }\n",
|
|
|
669
|
"\n",
|
|
|
670
|
" var output_index = fig.cell_info[2]\n",
|
|
|
671
|
" var cell = fig.cell_info[0];\n",
|
|
|
672
|
"\n",
|
|
|
673
|
"};\n",
|
|
|
674
|
"\n",
|
|
|
675
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
676
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
677
|
" fig.root.unbind('remove')\n",
|
|
|
678
|
"\n",
|
|
|
679
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
680
|
" fig.push_to_output();\n",
|
|
|
681
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
682
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
683
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
684
|
" IPython.keyboard_manager.enable()\n",
|
|
|
685
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
686
|
" fig.close_ws(fig, msg);\n",
|
|
|
687
|
"}\n",
|
|
|
688
|
"\n",
|
|
|
689
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
690
|
" fig.send_message('closing', msg);\n",
|
|
|
691
|
" // fig.ws.close()\n",
|
|
|
692
|
"}\n",
|
|
|
693
|
"\n",
|
|
|
694
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
695
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
696
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
697
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
698
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
699
|
"}\n",
|
|
|
700
|
"\n",
|
|
|
701
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
702
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
703
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
704
|
" this.send_message(\"ack\", {});\n",
|
|
|
705
|
" var fig = this;\n",
|
|
|
706
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
707
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
708
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
709
|
"}\n",
|
|
|
710
|
"\n",
|
|
|
711
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
712
|
" var fig = this;\n",
|
|
|
713
|
"\n",
|
|
|
714
|
" var nav_element = $('<div/>')\n",
|
|
|
715
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
716
|
" this.root.append(nav_element);\n",
|
|
|
717
|
"\n",
|
|
|
718
|
" // Define a callback function for later on.\n",
|
|
|
719
|
" function toolbar_event(event) {\n",
|
|
|
720
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
721
|
" }\n",
|
|
|
722
|
" function toolbar_mouse_event(event) {\n",
|
|
|
723
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
724
|
" }\n",
|
|
|
725
|
"\n",
|
|
|
726
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
727
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
728
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
729
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
730
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
731
|
"\n",
|
|
|
732
|
" if (!name) { continue; };\n",
|
|
|
733
|
"\n",
|
|
|
734
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
735
|
" button.click(method_name, toolbar_event);\n",
|
|
|
736
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
737
|
" nav_element.append(button);\n",
|
|
|
738
|
" }\n",
|
|
|
739
|
"\n",
|
|
|
740
|
" // Add the status bar.\n",
|
|
|
741
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
742
|
" nav_element.append(status_bar);\n",
|
|
|
743
|
" this.message = status_bar[0];\n",
|
|
|
744
|
"\n",
|
|
|
745
|
" // Add the close button to the window.\n",
|
|
|
746
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
747
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
748
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
749
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
750
|
" buttongrp.append(button);\n",
|
|
|
751
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
752
|
" titlebar.prepend(buttongrp);\n",
|
|
|
753
|
"}\n",
|
|
|
754
|
"\n",
|
|
|
755
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
756
|
" var fig = this\n",
|
|
|
757
|
" el.on(\"remove\", function(){\n",
|
|
|
758
|
"\tfig.close_ws(fig, {});\n",
|
|
|
759
|
" });\n",
|
|
|
760
|
"}\n",
|
|
|
761
|
"\n",
|
|
|
762
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
763
|
" // this is important to make the div 'focusable\n",
|
|
|
764
|
" el.attr('tabindex', 0)\n",
|
|
|
765
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
766
|
" // off when our div gets focus\n",
|
|
|
767
|
"\n",
|
|
|
768
|
" // location in version 3\n",
|
|
|
769
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
770
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
771
|
" }\n",
|
|
|
772
|
" else {\n",
|
|
|
773
|
" // location in version 2\n",
|
|
|
774
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
775
|
" }\n",
|
|
|
776
|
"\n",
|
|
|
777
|
"}\n",
|
|
|
778
|
"\n",
|
|
|
779
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
780
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
781
|
" if (!manager)\n",
|
|
|
782
|
" manager = IPython.keyboard_manager;\n",
|
|
|
783
|
"\n",
|
|
|
784
|
" // Check for shift+enter\n",
|
|
|
785
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
786
|
" this.canvas_div.blur();\n",
|
|
|
787
|
" event.shiftKey = false;\n",
|
|
|
788
|
" // Send a \"J\" for go to next cell\n",
|
|
|
789
|
" event.which = 74;\n",
|
|
|
790
|
" event.keyCode = 74;\n",
|
|
|
791
|
" manager.command_mode();\n",
|
|
|
792
|
" manager.handle_keydown(event);\n",
|
|
|
793
|
" }\n",
|
|
|
794
|
"}\n",
|
|
|
795
|
"\n",
|
|
|
796
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
797
|
" fig.ondownload(fig, null);\n",
|
|
|
798
|
"}\n",
|
|
|
799
|
"\n",
|
|
|
800
|
"\n",
|
|
|
801
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
802
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
803
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
804
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
805
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
806
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
807
|
" var ncells = cells.length;\n",
|
|
|
808
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
809
|
" var cell = cells[i];\n",
|
|
|
810
|
" if (cell.cell_type === 'code'){\n",
|
|
|
811
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
812
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
813
|
" if (data.data) {\n",
|
|
|
814
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
815
|
" data = data.data;\n",
|
|
|
816
|
" }\n",
|
|
|
817
|
" if (data['text/html'] == html_output) {\n",
|
|
|
818
|
" return [cell, data, j];\n",
|
|
|
819
|
" }\n",
|
|
|
820
|
" }\n",
|
|
|
821
|
" }\n",
|
|
|
822
|
" }\n",
|
|
|
823
|
"}\n",
|
|
|
824
|
"\n",
|
|
|
825
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
826
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
827
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
828
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
829
|
"}\n"
|
|
|
830
|
],
|
|
|
831
|
"text/plain": [
|
|
|
832
|
"<IPython.core.display.Javascript object>"
|
|
|
833
|
]
|
|
|
834
|
},
|
|
|
835
|
"metadata": {},
|
|
|
836
|
"output_type": "display_data"
|
|
|
837
|
},
|
|
|
838
|
{
|
|
|
839
|
"data": {
|
|
|
840
|
"text/html": [
|
|
|
841
|
"<img src=\"data:image/png;base64,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80zl7/3666/HpEmTSl+jR4+2wJin1gD8/kfvpx4JAAAASKRzAD489UgAbScAkzsBmGx9ngDcq1evTlG3ysyZM6PRaMTXvva1+OCDv/7JyylTpkRRFNGnT59O77/44oujKIqYOHFi5Wcef/zxURTFPL8sMFoJwAAAAMAcJ957YulOcMwdv0k9EkDbCcDkTgAmW/MbgC+77LL4whe+EPvuu+98f3b//v2jKIoYN25cRPgTwPzfGvP8mNKD3V8++kvqkQAAAIBETrj3hNKd4Ojbf516JIC2E4DJnQBMtuYnAI8dOza++MUvxlZbbRUff/zxfH/29ddfH0VRxJgxYyLCvwHM/y0BGAAAAJjj9/f+XgAGsuN+Tu4EYLL19wLw/fffH1/5yldi3XXXbf5VzvOrX79+URRF3Hvvvc3XVl999VhjjTU6vXeTTTaJZZdd9nN9foQFRrXRz40uPdhNnzk99UgAAABAIsePP750J/jd7YelHgmg7dzPyZ0ATLb+VgB+6qmn4utf/3qssMIK8fbbb1d+xhtvvNHptffeey+WW265+Pd///eYOXNm8/VTTjkliqKICRMmNF975plnYqGFForf/va3n3t+C4wqVz93denB7r2Zn+9PlwMAAAALjk4B+LZfpR4JoO3cz8mdAEx2+vXrFz179ozu3btHURSx3XbbRc+ePaNnz57x7rvvxnvvvRdLLbVU/NM//VOccsopMWTIkNLX3H+q9/jjj4+VVlopjjnmmBg4cGCccMIJscwyy8QXvvCFGDp0aOn3nROGv/GNb8Spp54aZ511Viy11FLxX//1X/MMyX+PBUaVq/5wlQAMAAAARETEceOPawnAh6YeCaDt3M/JnQBMdpZZZpkoimKeX5MnT47JkydX/npRFLHXXns1P2vs2LGxySabxBJLLBGLLLJIfO1rX4tNN900brvttnn+3i+//HLssMMO8S//8i/x1a9+Nbbaaqt47rnn/qH/DguMKq0BeNrMaalHAgAAABI59p5jS3eCo279ZeqRANrO/ZzcCcBQUxYYVVoD8Lsz3k09EgAAAJDIMfccU7oTHHnrIalHAmg793NyJwBDTVlgVLnyD1cKwAAAAEBERBw97mgBGMiO+zm5E4ChpiwwqgjAAAAAwBy/G/e70p3gt7ccnHokgLZzPyd3AjDUlAVGlSuevaL0YPfOh++kHgkA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QgAGAAAAAAAASIQADAAAAAAAAJAIARgAAAAAAAAgEQIwAAAAAAAAQCIEYAAAAAAAAIBECMAAAAAAAAAAiRCAAQAAAAAAABIhAAMAAAAAAAAkQgAGAAAAAAAASIQADAAAAAAAAJAIARgAAAAAAAAgEQIwAAAAAAAAQCIEYAAAAAAAAIBECMAAAAAAAAAAiRCAAQAAAAAAABIhAAMAAAAAAAAkQgAGAAAAAAAASIQADAAAAAAAAJAIARgAAAAAAAAgEQIwAAAAAAAAQCIEYAAAAAAAAIBECMAAAAAAAAAAiRCAAQAAAAAAABIhAAMAAAAAAAAkQgAGAAAAAAAASIQADAAAAAAAAJAIARgAAAAAAAAgEQIwAAAAAAAAQCIEYAAAAAAAAIBECMAAAAAAAAAAiRCAAQAAAAAAABIhAAMAAAAAAAAkQgAGAAAAAAAASIQADAAAAAAAAJAIARgAAAAAAAAgEQIwAAAAAAAAQCIEYAAAAAAAAIBECMAAAAAAAAAAiRCAAQAAAAAAABIhAAMAAAAAAAAkQgAGAAAAAAAASIQADAAAAAAAAJAIARgAAAAAAAAgEQIwAAAAAAAAQCIEYAAAAAAAAIBECMAAAAAAAAAAiRCAAQAAAAAAABLxJ+c2f6ro3oaeAAAAAElFTkSuQmCC\" width=\"1600\">"
|
|
|
842
|
],
|
|
|
843
|
"text/plain": [
|
|
|
844
|
"<IPython.core.display.HTML object>"
|
|
|
845
|
]
|
|
|
846
|
},
|
|
|
847
|
"metadata": {},
|
|
|
848
|
"output_type": "display_data"
|
|
|
849
|
},
|
|
|
850
|
{
|
|
|
851
|
"data": {
|
|
|
852
|
"application/javascript": [
|
|
|
853
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
854
|
"window.mpl = {};\n",
|
|
|
855
|
"\n",
|
|
|
856
|
"\n",
|
|
|
857
|
"mpl.get_websocket_type = function() {\n",
|
|
|
858
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
859
|
" return WebSocket;\n",
|
|
|
860
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
861
|
" return MozWebSocket;\n",
|
|
|
862
|
" } else {\n",
|
|
|
863
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
864
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
865
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
866
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
867
|
" };\n",
|
|
|
868
|
"}\n",
|
|
|
869
|
"\n",
|
|
|
870
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
871
|
" this.id = figure_id;\n",
|
|
|
872
|
"\n",
|
|
|
873
|
" this.ws = websocket;\n",
|
|
|
874
|
"\n",
|
|
|
875
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
876
|
"\n",
|
|
|
877
|
" if (!this.supports_binary) {\n",
|
|
|
878
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
879
|
" if (warnings) {\n",
|
|
|
880
|
" warnings.style.display = 'block';\n",
|
|
|
881
|
" warnings.textContent = (\n",
|
|
|
882
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
883
|
" \"Performance may be slow.\");\n",
|
|
|
884
|
" }\n",
|
|
|
885
|
" }\n",
|
|
|
886
|
"\n",
|
|
|
887
|
" this.imageObj = new Image();\n",
|
|
|
888
|
"\n",
|
|
|
889
|
" this.context = undefined;\n",
|
|
|
890
|
" this.message = undefined;\n",
|
|
|
891
|
" this.canvas = undefined;\n",
|
|
|
892
|
" this.rubberband_canvas = undefined;\n",
|
|
|
893
|
" this.rubberband_context = undefined;\n",
|
|
|
894
|
" this.format_dropdown = undefined;\n",
|
|
|
895
|
"\n",
|
|
|
896
|
" this.image_mode = 'full';\n",
|
|
|
897
|
"\n",
|
|
|
898
|
" this.root = $('<div/>');\n",
|
|
|
899
|
" this._root_extra_style(this.root)\n",
|
|
|
900
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
901
|
"\n",
|
|
|
902
|
" $(parent_element).append(this.root);\n",
|
|
|
903
|
"\n",
|
|
|
904
|
" this._init_header(this);\n",
|
|
|
905
|
" this._init_canvas(this);\n",
|
|
|
906
|
" this._init_toolbar(this);\n",
|
|
|
907
|
"\n",
|
|
|
908
|
" var fig = this;\n",
|
|
|
909
|
"\n",
|
|
|
910
|
" this.waiting = false;\n",
|
|
|
911
|
"\n",
|
|
|
912
|
" this.ws.onopen = function () {\n",
|
|
|
913
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
914
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
915
|
" if (mpl.ratio != 1) {\n",
|
|
|
916
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
917
|
" }\n",
|
|
|
918
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
919
|
" }\n",
|
|
|
920
|
"\n",
|
|
|
921
|
" this.imageObj.onload = function() {\n",
|
|
|
922
|
" if (fig.image_mode == 'full') {\n",
|
|
|
923
|
" // Full images could contain transparency (where diff images\n",
|
|
|
924
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
925
|
" // there is no ghosting.\n",
|
|
|
926
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
927
|
" }\n",
|
|
|
928
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
929
|
" };\n",
|
|
|
930
|
"\n",
|
|
|
931
|
" this.imageObj.onunload = function() {\n",
|
|
|
932
|
" fig.ws.close();\n",
|
|
|
933
|
" }\n",
|
|
|
934
|
"\n",
|
|
|
935
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
936
|
"\n",
|
|
|
937
|
" this.ondownload = ondownload;\n",
|
|
|
938
|
"}\n",
|
|
|
939
|
"\n",
|
|
|
940
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
941
|
" var titlebar = $(\n",
|
|
|
942
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
943
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
944
|
" var titletext = $(\n",
|
|
|
945
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
946
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
947
|
" titlebar.append(titletext)\n",
|
|
|
948
|
" this.root.append(titlebar);\n",
|
|
|
949
|
" this.header = titletext[0];\n",
|
|
|
950
|
"}\n",
|
|
|
951
|
"\n",
|
|
|
952
|
"\n",
|
|
|
953
|
"\n",
|
|
|
954
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
955
|
"\n",
|
|
|
956
|
"}\n",
|
|
|
957
|
"\n",
|
|
|
958
|
"\n",
|
|
|
959
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
960
|
"\n",
|
|
|
961
|
"}\n",
|
|
|
962
|
"\n",
|
|
|
963
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
964
|
" var fig = this;\n",
|
|
|
965
|
"\n",
|
|
|
966
|
" var canvas_div = $('<div/>');\n",
|
|
|
967
|
"\n",
|
|
|
968
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
969
|
"\n",
|
|
|
970
|
" function canvas_keyboard_event(event) {\n",
|
|
|
971
|
" return fig.key_event(event, event['data']);\n",
|
|
|
972
|
" }\n",
|
|
|
973
|
"\n",
|
|
|
974
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
975
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
976
|
" this.canvas_div = canvas_div\n",
|
|
|
977
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
978
|
" this.root.append(canvas_div);\n",
|
|
|
979
|
"\n",
|
|
|
980
|
" var canvas = $('<canvas/>');\n",
|
|
|
981
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
982
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
983
|
"\n",
|
|
|
984
|
" this.canvas = canvas[0];\n",
|
|
|
985
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
986
|
"\n",
|
|
|
987
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
988
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
989
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
990
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
991
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
992
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
993
|
"\n",
|
|
|
994
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
995
|
"\n",
|
|
|
996
|
" var rubberband = $('<canvas/>');\n",
|
|
|
997
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
998
|
"\n",
|
|
|
999
|
" var pass_mouse_events = true;\n",
|
|
|
1000
|
"\n",
|
|
|
1001
|
" canvas_div.resizable({\n",
|
|
|
1002
|
" start: function(event, ui) {\n",
|
|
|
1003
|
" pass_mouse_events = false;\n",
|
|
|
1004
|
" },\n",
|
|
|
1005
|
" resize: function(event, ui) {\n",
|
|
|
1006
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
1007
|
" },\n",
|
|
|
1008
|
" stop: function(event, ui) {\n",
|
|
|
1009
|
" pass_mouse_events = true;\n",
|
|
|
1010
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
1011
|
" },\n",
|
|
|
1012
|
" });\n",
|
|
|
1013
|
"\n",
|
|
|
1014
|
" function mouse_event_fn(event) {\n",
|
|
|
1015
|
" if (pass_mouse_events)\n",
|
|
|
1016
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
1017
|
" }\n",
|
|
|
1018
|
"\n",
|
|
|
1019
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
1020
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
1021
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
1022
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
1023
|
"\n",
|
|
|
1024
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
1025
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
1026
|
"\n",
|
|
|
1027
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
1028
|
" event = event.originalEvent;\n",
|
|
|
1029
|
" event['data'] = 'scroll'\n",
|
|
|
1030
|
" if (event.deltaY < 0) {\n",
|
|
|
1031
|
" event.step = 1;\n",
|
|
|
1032
|
" } else {\n",
|
|
|
1033
|
" event.step = -1;\n",
|
|
|
1034
|
" }\n",
|
|
|
1035
|
" mouse_event_fn(event);\n",
|
|
|
1036
|
" });\n",
|
|
|
1037
|
"\n",
|
|
|
1038
|
" canvas_div.append(canvas);\n",
|
|
|
1039
|
" canvas_div.append(rubberband);\n",
|
|
|
1040
|
"\n",
|
|
|
1041
|
" this.rubberband = rubberband;\n",
|
|
|
1042
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
1043
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
1044
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
1045
|
"\n",
|
|
|
1046
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
1047
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
1048
|
" // canvas in synch.\n",
|
|
|
1049
|
" canvas_div.css('width', width)\n",
|
|
|
1050
|
" canvas_div.css('height', height)\n",
|
|
|
1051
|
"\n",
|
|
|
1052
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
1053
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
1054
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
1055
|
"\n",
|
|
|
1056
|
" rubberband.attr('width', width);\n",
|
|
|
1057
|
" rubberband.attr('height', height);\n",
|
|
|
1058
|
" }\n",
|
|
|
1059
|
"\n",
|
|
|
1060
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
1061
|
" // upon first draw.\n",
|
|
|
1062
|
" this._resize_canvas(600, 600);\n",
|
|
|
1063
|
"\n",
|
|
|
1064
|
" // Disable right mouse context menu.\n",
|
|
|
1065
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
1066
|
" return false;\n",
|
|
|
1067
|
" });\n",
|
|
|
1068
|
"\n",
|
|
|
1069
|
" function set_focus () {\n",
|
|
|
1070
|
" canvas.focus();\n",
|
|
|
1071
|
" canvas_div.focus();\n",
|
|
|
1072
|
" }\n",
|
|
|
1073
|
"\n",
|
|
|
1074
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
1075
|
"}\n",
|
|
|
1076
|
"\n",
|
|
|
1077
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
1078
|
" var fig = this;\n",
|
|
|
1079
|
"\n",
|
|
|
1080
|
" var nav_element = $('<div/>')\n",
|
|
|
1081
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
1082
|
" this.root.append(nav_element);\n",
|
|
|
1083
|
"\n",
|
|
|
1084
|
" // Define a callback function for later on.\n",
|
|
|
1085
|
" function toolbar_event(event) {\n",
|
|
|
1086
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
1087
|
" }\n",
|
|
|
1088
|
" function toolbar_mouse_event(event) {\n",
|
|
|
1089
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
1090
|
" }\n",
|
|
|
1091
|
"\n",
|
|
|
1092
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
1093
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
1094
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
1095
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
1096
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
1097
|
"\n",
|
|
|
1098
|
" if (!name) {\n",
|
|
|
1099
|
" // put a spacer in here.\n",
|
|
|
1100
|
" continue;\n",
|
|
|
1101
|
" }\n",
|
|
|
1102
|
" var button = $('<button/>');\n",
|
|
|
1103
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
1104
|
" 'ui-button-icon-only');\n",
|
|
|
1105
|
" button.attr('role', 'button');\n",
|
|
|
1106
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
1107
|
" button.click(method_name, toolbar_event);\n",
|
|
|
1108
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
1109
|
"\n",
|
|
|
1110
|
" var icon_img = $('<span/>');\n",
|
|
|
1111
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
1112
|
" icon_img.addClass(image);\n",
|
|
|
1113
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
1114
|
"\n",
|
|
|
1115
|
" var tooltip_span = $('<span/>');\n",
|
|
|
1116
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
1117
|
" tooltip_span.html(tooltip);\n",
|
|
|
1118
|
"\n",
|
|
|
1119
|
" button.append(icon_img);\n",
|
|
|
1120
|
" button.append(tooltip_span);\n",
|
|
|
1121
|
"\n",
|
|
|
1122
|
" nav_element.append(button);\n",
|
|
|
1123
|
" }\n",
|
|
|
1124
|
"\n",
|
|
|
1125
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
1126
|
"\n",
|
|
|
1127
|
" var fmt_picker = $('<select/>');\n",
|
|
|
1128
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
1129
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
1130
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
1131
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
1132
|
"\n",
|
|
|
1133
|
" for (var ind in mpl.extensions) {\n",
|
|
|
1134
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
1135
|
" var option = $(\n",
|
|
|
1136
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
1137
|
" fmt_picker.append(option)\n",
|
|
|
1138
|
" }\n",
|
|
|
1139
|
"\n",
|
|
|
1140
|
" // Add hover states to the ui-buttons\n",
|
|
|
1141
|
" $( \".ui-button\" ).hover(\n",
|
|
|
1142
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
1143
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
1144
|
" );\n",
|
|
|
1145
|
"\n",
|
|
|
1146
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
1147
|
" nav_element.append(status_bar);\n",
|
|
|
1148
|
" this.message = status_bar[0];\n",
|
|
|
1149
|
"}\n",
|
|
|
1150
|
"\n",
|
|
|
1151
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
1152
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
1153
|
" // which will in turn request a refresh of the image.\n",
|
|
|
1154
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
1155
|
"}\n",
|
|
|
1156
|
"\n",
|
|
|
1157
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
1158
|
" properties['type'] = type;\n",
|
|
|
1159
|
" properties['figure_id'] = this.id;\n",
|
|
|
1160
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
1161
|
"}\n",
|
|
|
1162
|
"\n",
|
|
|
1163
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
1164
|
" if (!this.waiting) {\n",
|
|
|
1165
|
" this.waiting = true;\n",
|
|
|
1166
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
1167
|
" }\n",
|
|
|
1168
|
"}\n",
|
|
|
1169
|
"\n",
|
|
|
1170
|
"\n",
|
|
|
1171
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
1172
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
1173
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
1174
|
" fig.ondownload(fig, format);\n",
|
|
|
1175
|
"}\n",
|
|
|
1176
|
"\n",
|
|
|
1177
|
"\n",
|
|
|
1178
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
1179
|
" var size = msg['size'];\n",
|
|
|
1180
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
1181
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
1182
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
1183
|
" };\n",
|
|
|
1184
|
"}\n",
|
|
|
1185
|
"\n",
|
|
|
1186
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
1187
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
1188
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
1189
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
1190
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
1191
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
1192
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
1193
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
1194
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
1195
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
1196
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
1197
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
1198
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
1199
|
"\n",
|
|
|
1200
|
" fig.rubberband_context.clearRect(\n",
|
|
|
1201
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
1202
|
"\n",
|
|
|
1203
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
1204
|
"}\n",
|
|
|
1205
|
"\n",
|
|
|
1206
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
1207
|
" // Updates the figure title.\n",
|
|
|
1208
|
" fig.header.textContent = msg['label'];\n",
|
|
|
1209
|
"}\n",
|
|
|
1210
|
"\n",
|
|
|
1211
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
1212
|
" var cursor = msg['cursor'];\n",
|
|
|
1213
|
" switch(cursor)\n",
|
|
|
1214
|
" {\n",
|
|
|
1215
|
" case 0:\n",
|
|
|
1216
|
" cursor = 'pointer';\n",
|
|
|
1217
|
" break;\n",
|
|
|
1218
|
" case 1:\n",
|
|
|
1219
|
" cursor = 'default';\n",
|
|
|
1220
|
" break;\n",
|
|
|
1221
|
" case 2:\n",
|
|
|
1222
|
" cursor = 'crosshair';\n",
|
|
|
1223
|
" break;\n",
|
|
|
1224
|
" case 3:\n",
|
|
|
1225
|
" cursor = 'move';\n",
|
|
|
1226
|
" break;\n",
|
|
|
1227
|
" }\n",
|
|
|
1228
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
1229
|
"}\n",
|
|
|
1230
|
"\n",
|
|
|
1231
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
1232
|
" fig.message.textContent = msg['message'];\n",
|
|
|
1233
|
"}\n",
|
|
|
1234
|
"\n",
|
|
|
1235
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
1236
|
" // Request the server to send over a new figure.\n",
|
|
|
1237
|
" fig.send_draw_message();\n",
|
|
|
1238
|
"}\n",
|
|
|
1239
|
"\n",
|
|
|
1240
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
1241
|
" fig.image_mode = msg['mode'];\n",
|
|
|
1242
|
"}\n",
|
|
|
1243
|
"\n",
|
|
|
1244
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
1245
|
" // Called whenever the canvas gets updated.\n",
|
|
|
1246
|
" this.send_message(\"ack\", {});\n",
|
|
|
1247
|
"}\n",
|
|
|
1248
|
"\n",
|
|
|
1249
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
1250
|
"// Called in the figure constructor.\n",
|
|
|
1251
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
1252
|
" return function socket_on_message(evt) {\n",
|
|
|
1253
|
" if (evt.data instanceof Blob) {\n",
|
|
|
1254
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
1255
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
1256
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
1257
|
" * to be part of the websocket stream */\n",
|
|
|
1258
|
" evt.data.type = \"image/png\";\n",
|
|
|
1259
|
"\n",
|
|
|
1260
|
" /* Free the memory for the previous frames */\n",
|
|
|
1261
|
" if (fig.imageObj.src) {\n",
|
|
|
1262
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
1263
|
" fig.imageObj.src);\n",
|
|
|
1264
|
" }\n",
|
|
|
1265
|
"\n",
|
|
|
1266
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
1267
|
" evt.data);\n",
|
|
|
1268
|
" fig.updated_canvas_event();\n",
|
|
|
1269
|
" fig.waiting = false;\n",
|
|
|
1270
|
" return;\n",
|
|
|
1271
|
" }\n",
|
|
|
1272
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
1273
|
" fig.imageObj.src = evt.data;\n",
|
|
|
1274
|
" fig.updated_canvas_event();\n",
|
|
|
1275
|
" fig.waiting = false;\n",
|
|
|
1276
|
" return;\n",
|
|
|
1277
|
" }\n",
|
|
|
1278
|
"\n",
|
|
|
1279
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
1280
|
" var msg_type = msg['type'];\n",
|
|
|
1281
|
"\n",
|
|
|
1282
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
1283
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
1284
|
" try {\n",
|
|
|
1285
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
1286
|
" } catch (e) {\n",
|
|
|
1287
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
1288
|
" return;\n",
|
|
|
1289
|
" }\n",
|
|
|
1290
|
"\n",
|
|
|
1291
|
" if (callback) {\n",
|
|
|
1292
|
" try {\n",
|
|
|
1293
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
1294
|
" callback(fig, msg);\n",
|
|
|
1295
|
" } catch (e) {\n",
|
|
|
1296
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
1297
|
" }\n",
|
|
|
1298
|
" }\n",
|
|
|
1299
|
" };\n",
|
|
|
1300
|
"}\n",
|
|
|
1301
|
"\n",
|
|
|
1302
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
1303
|
"mpl.findpos = function(e) {\n",
|
|
|
1304
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
1305
|
" var targ;\n",
|
|
|
1306
|
" if (!e)\n",
|
|
|
1307
|
" e = window.event;\n",
|
|
|
1308
|
" if (e.target)\n",
|
|
|
1309
|
" targ = e.target;\n",
|
|
|
1310
|
" else if (e.srcElement)\n",
|
|
|
1311
|
" targ = e.srcElement;\n",
|
|
|
1312
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
1313
|
" targ = targ.parentNode;\n",
|
|
|
1314
|
"\n",
|
|
|
1315
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
1316
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
1317
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
1318
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
1319
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
1320
|
"\n",
|
|
|
1321
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
1322
|
"};\n",
|
|
|
1323
|
"\n",
|
|
|
1324
|
"/*\n",
|
|
|
1325
|
" * return a copy of an object with only non-object keys\n",
|
|
|
1326
|
" * we need this to avoid circular references\n",
|
|
|
1327
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
1328
|
" */\n",
|
|
|
1329
|
"function simpleKeys (original) {\n",
|
|
|
1330
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
1331
|
" if (typeof original[key] !== 'object')\n",
|
|
|
1332
|
" obj[key] = original[key]\n",
|
|
|
1333
|
" return obj;\n",
|
|
|
1334
|
" }, {});\n",
|
|
|
1335
|
"}\n",
|
|
|
1336
|
"\n",
|
|
|
1337
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
1338
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
1339
|
"\n",
|
|
|
1340
|
" if (name === 'button_press')\n",
|
|
|
1341
|
" {\n",
|
|
|
1342
|
" this.canvas.focus();\n",
|
|
|
1343
|
" this.canvas_div.focus();\n",
|
|
|
1344
|
" }\n",
|
|
|
1345
|
"\n",
|
|
|
1346
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
1347
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
1348
|
"\n",
|
|
|
1349
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
1350
|
" step: event.step,\n",
|
|
|
1351
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
1352
|
"\n",
|
|
|
1353
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
1354
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
1355
|
" * to control all of the cursor setting manually through the\n",
|
|
|
1356
|
" * 'cursor' event from matplotlib */\n",
|
|
|
1357
|
" event.preventDefault();\n",
|
|
|
1358
|
" return false;\n",
|
|
|
1359
|
"}\n",
|
|
|
1360
|
"\n",
|
|
|
1361
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
1362
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
1363
|
"}\n",
|
|
|
1364
|
"\n",
|
|
|
1365
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
1366
|
"\n",
|
|
|
1367
|
" // Prevent repeat events\n",
|
|
|
1368
|
" if (name == 'key_press')\n",
|
|
|
1369
|
" {\n",
|
|
|
1370
|
" if (event.which === this._key)\n",
|
|
|
1371
|
" return;\n",
|
|
|
1372
|
" else\n",
|
|
|
1373
|
" this._key = event.which;\n",
|
|
|
1374
|
" }\n",
|
|
|
1375
|
" if (name == 'key_release')\n",
|
|
|
1376
|
" this._key = null;\n",
|
|
|
1377
|
"\n",
|
|
|
1378
|
" var value = '';\n",
|
|
|
1379
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
1380
|
" value += \"ctrl+\";\n",
|
|
|
1381
|
" if (event.altKey && event.which != 18)\n",
|
|
|
1382
|
" value += \"alt+\";\n",
|
|
|
1383
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
1384
|
" value += \"shift+\";\n",
|
|
|
1385
|
"\n",
|
|
|
1386
|
" value += 'k';\n",
|
|
|
1387
|
" value += event.which.toString();\n",
|
|
|
1388
|
"\n",
|
|
|
1389
|
" this._key_event_extra(event, name);\n",
|
|
|
1390
|
"\n",
|
|
|
1391
|
" this.send_message(name, {key: value,\n",
|
|
|
1392
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
1393
|
" return false;\n",
|
|
|
1394
|
"}\n",
|
|
|
1395
|
"\n",
|
|
|
1396
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
1397
|
" if (name == 'download') {\n",
|
|
|
1398
|
" this.handle_save(this, null);\n",
|
|
|
1399
|
" } else {\n",
|
|
|
1400
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
1401
|
" }\n",
|
|
|
1402
|
"};\n",
|
|
|
1403
|
"\n",
|
|
|
1404
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
1405
|
" this.message.textContent = tooltip;\n",
|
|
|
1406
|
"};\n",
|
|
|
1407
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
1408
|
"\n",
|
|
|
1409
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
1410
|
"\n",
|
|
|
1411
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
1412
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
1413
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
1414
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
1415
|
" var ws = {};\n",
|
|
|
1416
|
"\n",
|
|
|
1417
|
" ws.close = function() {\n",
|
|
|
1418
|
" comm.close()\n",
|
|
|
1419
|
" };\n",
|
|
|
1420
|
" ws.send = function(m) {\n",
|
|
|
1421
|
" //console.log('sending', m);\n",
|
|
|
1422
|
" comm.send(m);\n",
|
|
|
1423
|
" };\n",
|
|
|
1424
|
" // Register the callback with on_msg.\n",
|
|
|
1425
|
" comm.on_msg(function(msg) {\n",
|
|
|
1426
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
1427
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
1428
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
1429
|
" });\n",
|
|
|
1430
|
" return ws;\n",
|
|
|
1431
|
"}\n",
|
|
|
1432
|
"\n",
|
|
|
1433
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
1434
|
" // This is the function which gets called when the mpl process\n",
|
|
|
1435
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
1436
|
"\n",
|
|
|
1437
|
" var id = msg.content.data.id;\n",
|
|
|
1438
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
1439
|
" // socket was opened in Python.\n",
|
|
|
1440
|
" var element = $(\"#\" + id);\n",
|
|
|
1441
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
1442
|
"\n",
|
|
|
1443
|
" function ondownload(figure, format) {\n",
|
|
|
1444
|
" window.open(figure.imageObj.src);\n",
|
|
|
1445
|
" }\n",
|
|
|
1446
|
"\n",
|
|
|
1447
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
1448
|
" ondownload,\n",
|
|
|
1449
|
" element.get(0));\n",
|
|
|
1450
|
"\n",
|
|
|
1451
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
1452
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
1453
|
" ws_proxy.onopen();\n",
|
|
|
1454
|
"\n",
|
|
|
1455
|
" fig.parent_element = element.get(0);\n",
|
|
|
1456
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
1457
|
" if (!fig.cell_info) {\n",
|
|
|
1458
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
1459
|
" return;\n",
|
|
|
1460
|
" }\n",
|
|
|
1461
|
"\n",
|
|
|
1462
|
" var output_index = fig.cell_info[2]\n",
|
|
|
1463
|
" var cell = fig.cell_info[0];\n",
|
|
|
1464
|
"\n",
|
|
|
1465
|
"};\n",
|
|
|
1466
|
"\n",
|
|
|
1467
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
1468
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
1469
|
" fig.root.unbind('remove')\n",
|
|
|
1470
|
"\n",
|
|
|
1471
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
1472
|
" fig.push_to_output();\n",
|
|
|
1473
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
1474
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
1475
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
1476
|
" IPython.keyboard_manager.enable()\n",
|
|
|
1477
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
1478
|
" fig.close_ws(fig, msg);\n",
|
|
|
1479
|
"}\n",
|
|
|
1480
|
"\n",
|
|
|
1481
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
1482
|
" fig.send_message('closing', msg);\n",
|
|
|
1483
|
" // fig.ws.close()\n",
|
|
|
1484
|
"}\n",
|
|
|
1485
|
"\n",
|
|
|
1486
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
1487
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
1488
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
1489
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
1490
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
1491
|
"}\n",
|
|
|
1492
|
"\n",
|
|
|
1493
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
1494
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
1495
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
1496
|
" this.send_message(\"ack\", {});\n",
|
|
|
1497
|
" var fig = this;\n",
|
|
|
1498
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
1499
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
1500
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
1501
|
"}\n",
|
|
|
1502
|
"\n",
|
|
|
1503
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
1504
|
" var fig = this;\n",
|
|
|
1505
|
"\n",
|
|
|
1506
|
" var nav_element = $('<div/>')\n",
|
|
|
1507
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
1508
|
" this.root.append(nav_element);\n",
|
|
|
1509
|
"\n",
|
|
|
1510
|
" // Define a callback function for later on.\n",
|
|
|
1511
|
" function toolbar_event(event) {\n",
|
|
|
1512
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
1513
|
" }\n",
|
|
|
1514
|
" function toolbar_mouse_event(event) {\n",
|
|
|
1515
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
1516
|
" }\n",
|
|
|
1517
|
"\n",
|
|
|
1518
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
1519
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
1520
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
1521
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
1522
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
1523
|
"\n",
|
|
|
1524
|
" if (!name) { continue; };\n",
|
|
|
1525
|
"\n",
|
|
|
1526
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
1527
|
" button.click(method_name, toolbar_event);\n",
|
|
|
1528
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
1529
|
" nav_element.append(button);\n",
|
|
|
1530
|
" }\n",
|
|
|
1531
|
"\n",
|
|
|
1532
|
" // Add the status bar.\n",
|
|
|
1533
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
1534
|
" nav_element.append(status_bar);\n",
|
|
|
1535
|
" this.message = status_bar[0];\n",
|
|
|
1536
|
"\n",
|
|
|
1537
|
" // Add the close button to the window.\n",
|
|
|
1538
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
1539
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
1540
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
1541
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
1542
|
" buttongrp.append(button);\n",
|
|
|
1543
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
1544
|
" titlebar.prepend(buttongrp);\n",
|
|
|
1545
|
"}\n",
|
|
|
1546
|
"\n",
|
|
|
1547
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
1548
|
" var fig = this\n",
|
|
|
1549
|
" el.on(\"remove\", function(){\n",
|
|
|
1550
|
"\tfig.close_ws(fig, {});\n",
|
|
|
1551
|
" });\n",
|
|
|
1552
|
"}\n",
|
|
|
1553
|
"\n",
|
|
|
1554
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
1555
|
" // this is important to make the div 'focusable\n",
|
|
|
1556
|
" el.attr('tabindex', 0)\n",
|
|
|
1557
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
1558
|
" // off when our div gets focus\n",
|
|
|
1559
|
"\n",
|
|
|
1560
|
" // location in version 3\n",
|
|
|
1561
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
1562
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
1563
|
" }\n",
|
|
|
1564
|
" else {\n",
|
|
|
1565
|
" // location in version 2\n",
|
|
|
1566
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
1567
|
" }\n",
|
|
|
1568
|
"\n",
|
|
|
1569
|
"}\n",
|
|
|
1570
|
"\n",
|
|
|
1571
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
1572
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
1573
|
" if (!manager)\n",
|
|
|
1574
|
" manager = IPython.keyboard_manager;\n",
|
|
|
1575
|
"\n",
|
|
|
1576
|
" // Check for shift+enter\n",
|
|
|
1577
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
1578
|
" this.canvas_div.blur();\n",
|
|
|
1579
|
" event.shiftKey = false;\n",
|
|
|
1580
|
" // Send a \"J\" for go to next cell\n",
|
|
|
1581
|
" event.which = 74;\n",
|
|
|
1582
|
" event.keyCode = 74;\n",
|
|
|
1583
|
" manager.command_mode();\n",
|
|
|
1584
|
" manager.handle_keydown(event);\n",
|
|
|
1585
|
" }\n",
|
|
|
1586
|
"}\n",
|
|
|
1587
|
"\n",
|
|
|
1588
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
1589
|
" fig.ondownload(fig, null);\n",
|
|
|
1590
|
"}\n",
|
|
|
1591
|
"\n",
|
|
|
1592
|
"\n",
|
|
|
1593
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
1594
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
1595
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
1596
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
1597
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
1598
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
1599
|
" var ncells = cells.length;\n",
|
|
|
1600
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
1601
|
" var cell = cells[i];\n",
|
|
|
1602
|
" if (cell.cell_type === 'code'){\n",
|
|
|
1603
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
1604
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
1605
|
" if (data.data) {\n",
|
|
|
1606
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
1607
|
" data = data.data;\n",
|
|
|
1608
|
" }\n",
|
|
|
1609
|
" if (data['text/html'] == html_output) {\n",
|
|
|
1610
|
" return [cell, data, j];\n",
|
|
|
1611
|
" }\n",
|
|
|
1612
|
" }\n",
|
|
|
1613
|
" }\n",
|
|
|
1614
|
" }\n",
|
|
|
1615
|
"}\n",
|
|
|
1616
|
"\n",
|
|
|
1617
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
1618
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
1619
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
1620
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
1621
|
"}\n"
|
|
|
1622
|
],
|
|
|
1623
|
"text/plain": [
|
|
|
1624
|
"<IPython.core.display.Javascript object>"
|
|
|
1625
|
]
|
|
|
1626
|
},
|
|
|
1627
|
"metadata": {},
|
|
|
1628
|
"output_type": "display_data"
|
|
|
1629
|
},
|
|
|
1630
|
{
|
|
|
1631
|
"data": {
|
|
|
1632
|
"text/html": [
|
|
|
1633
|
"<img src=\"data:image/png;base64,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\" width=\"1600\">"
|
|
|
1634
|
],
|
|
|
1635
|
"text/plain": [
|
|
|
1636
|
"<IPython.core.display.HTML object>"
|
|
|
1637
|
]
|
|
|
1638
|
},
|
|
|
1639
|
"metadata": {},
|
|
|
1640
|
"output_type": "display_data"
|
|
|
1641
|
},
|
|
|
1642
|
{
|
|
|
1643
|
"data": {
|
|
|
1644
|
"application/javascript": [
|
|
|
1645
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
1646
|
"window.mpl = {};\n",
|
|
|
1647
|
"\n",
|
|
|
1648
|
"\n",
|
|
|
1649
|
"mpl.get_websocket_type = function() {\n",
|
|
|
1650
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
1651
|
" return WebSocket;\n",
|
|
|
1652
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
1653
|
" return MozWebSocket;\n",
|
|
|
1654
|
" } else {\n",
|
|
|
1655
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
1656
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
1657
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
1658
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
1659
|
" };\n",
|
|
|
1660
|
"}\n",
|
|
|
1661
|
"\n",
|
|
|
1662
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
1663
|
" this.id = figure_id;\n",
|
|
|
1664
|
"\n",
|
|
|
1665
|
" this.ws = websocket;\n",
|
|
|
1666
|
"\n",
|
|
|
1667
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
1668
|
"\n",
|
|
|
1669
|
" if (!this.supports_binary) {\n",
|
|
|
1670
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
1671
|
" if (warnings) {\n",
|
|
|
1672
|
" warnings.style.display = 'block';\n",
|
|
|
1673
|
" warnings.textContent = (\n",
|
|
|
1674
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
1675
|
" \"Performance may be slow.\");\n",
|
|
|
1676
|
" }\n",
|
|
|
1677
|
" }\n",
|
|
|
1678
|
"\n",
|
|
|
1679
|
" this.imageObj = new Image();\n",
|
|
|
1680
|
"\n",
|
|
|
1681
|
" this.context = undefined;\n",
|
|
|
1682
|
" this.message = undefined;\n",
|
|
|
1683
|
" this.canvas = undefined;\n",
|
|
|
1684
|
" this.rubberband_canvas = undefined;\n",
|
|
|
1685
|
" this.rubberband_context = undefined;\n",
|
|
|
1686
|
" this.format_dropdown = undefined;\n",
|
|
|
1687
|
"\n",
|
|
|
1688
|
" this.image_mode = 'full';\n",
|
|
|
1689
|
"\n",
|
|
|
1690
|
" this.root = $('<div/>');\n",
|
|
|
1691
|
" this._root_extra_style(this.root)\n",
|
|
|
1692
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
1693
|
"\n",
|
|
|
1694
|
" $(parent_element).append(this.root);\n",
|
|
|
1695
|
"\n",
|
|
|
1696
|
" this._init_header(this);\n",
|
|
|
1697
|
" this._init_canvas(this);\n",
|
|
|
1698
|
" this._init_toolbar(this);\n",
|
|
|
1699
|
"\n",
|
|
|
1700
|
" var fig = this;\n",
|
|
|
1701
|
"\n",
|
|
|
1702
|
" this.waiting = false;\n",
|
|
|
1703
|
"\n",
|
|
|
1704
|
" this.ws.onopen = function () {\n",
|
|
|
1705
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
1706
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
1707
|
" if (mpl.ratio != 1) {\n",
|
|
|
1708
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
1709
|
" }\n",
|
|
|
1710
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
1711
|
" }\n",
|
|
|
1712
|
"\n",
|
|
|
1713
|
" this.imageObj.onload = function() {\n",
|
|
|
1714
|
" if (fig.image_mode == 'full') {\n",
|
|
|
1715
|
" // Full images could contain transparency (where diff images\n",
|
|
|
1716
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
1717
|
" // there is no ghosting.\n",
|
|
|
1718
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
1719
|
" }\n",
|
|
|
1720
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
1721
|
" };\n",
|
|
|
1722
|
"\n",
|
|
|
1723
|
" this.imageObj.onunload = function() {\n",
|
|
|
1724
|
" fig.ws.close();\n",
|
|
|
1725
|
" }\n",
|
|
|
1726
|
"\n",
|
|
|
1727
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
1728
|
"\n",
|
|
|
1729
|
" this.ondownload = ondownload;\n",
|
|
|
1730
|
"}\n",
|
|
|
1731
|
"\n",
|
|
|
1732
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
1733
|
" var titlebar = $(\n",
|
|
|
1734
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
1735
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
1736
|
" var titletext = $(\n",
|
|
|
1737
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
1738
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
1739
|
" titlebar.append(titletext)\n",
|
|
|
1740
|
" this.root.append(titlebar);\n",
|
|
|
1741
|
" this.header = titletext[0];\n",
|
|
|
1742
|
"}\n",
|
|
|
1743
|
"\n",
|
|
|
1744
|
"\n",
|
|
|
1745
|
"\n",
|
|
|
1746
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
1747
|
"\n",
|
|
|
1748
|
"}\n",
|
|
|
1749
|
"\n",
|
|
|
1750
|
"\n",
|
|
|
1751
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
1752
|
"\n",
|
|
|
1753
|
"}\n",
|
|
|
1754
|
"\n",
|
|
|
1755
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
1756
|
" var fig = this;\n",
|
|
|
1757
|
"\n",
|
|
|
1758
|
" var canvas_div = $('<div/>');\n",
|
|
|
1759
|
"\n",
|
|
|
1760
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
1761
|
"\n",
|
|
|
1762
|
" function canvas_keyboard_event(event) {\n",
|
|
|
1763
|
" return fig.key_event(event, event['data']);\n",
|
|
|
1764
|
" }\n",
|
|
|
1765
|
"\n",
|
|
|
1766
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
1767
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
1768
|
" this.canvas_div = canvas_div\n",
|
|
|
1769
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
1770
|
" this.root.append(canvas_div);\n",
|
|
|
1771
|
"\n",
|
|
|
1772
|
" var canvas = $('<canvas/>');\n",
|
|
|
1773
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
1774
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
1775
|
"\n",
|
|
|
1776
|
" this.canvas = canvas[0];\n",
|
|
|
1777
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
1778
|
"\n",
|
|
|
1779
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
1780
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
1781
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
1782
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
1783
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
1784
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
1785
|
"\n",
|
|
|
1786
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
1787
|
"\n",
|
|
|
1788
|
" var rubberband = $('<canvas/>');\n",
|
|
|
1789
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
1790
|
"\n",
|
|
|
1791
|
" var pass_mouse_events = true;\n",
|
|
|
1792
|
"\n",
|
|
|
1793
|
" canvas_div.resizable({\n",
|
|
|
1794
|
" start: function(event, ui) {\n",
|
|
|
1795
|
" pass_mouse_events = false;\n",
|
|
|
1796
|
" },\n",
|
|
|
1797
|
" resize: function(event, ui) {\n",
|
|
|
1798
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
1799
|
" },\n",
|
|
|
1800
|
" stop: function(event, ui) {\n",
|
|
|
1801
|
" pass_mouse_events = true;\n",
|
|
|
1802
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
1803
|
" },\n",
|
|
|
1804
|
" });\n",
|
|
|
1805
|
"\n",
|
|
|
1806
|
" function mouse_event_fn(event) {\n",
|
|
|
1807
|
" if (pass_mouse_events)\n",
|
|
|
1808
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
1809
|
" }\n",
|
|
|
1810
|
"\n",
|
|
|
1811
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
1812
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
1813
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
1814
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
1815
|
"\n",
|
|
|
1816
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
1817
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
1818
|
"\n",
|
|
|
1819
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
1820
|
" event = event.originalEvent;\n",
|
|
|
1821
|
" event['data'] = 'scroll'\n",
|
|
|
1822
|
" if (event.deltaY < 0) {\n",
|
|
|
1823
|
" event.step = 1;\n",
|
|
|
1824
|
" } else {\n",
|
|
|
1825
|
" event.step = -1;\n",
|
|
|
1826
|
" }\n",
|
|
|
1827
|
" mouse_event_fn(event);\n",
|
|
|
1828
|
" });\n",
|
|
|
1829
|
"\n",
|
|
|
1830
|
" canvas_div.append(canvas);\n",
|
|
|
1831
|
" canvas_div.append(rubberband);\n",
|
|
|
1832
|
"\n",
|
|
|
1833
|
" this.rubberband = rubberband;\n",
|
|
|
1834
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
1835
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
1836
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
1837
|
"\n",
|
|
|
1838
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
1839
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
1840
|
" // canvas in synch.\n",
|
|
|
1841
|
" canvas_div.css('width', width)\n",
|
|
|
1842
|
" canvas_div.css('height', height)\n",
|
|
|
1843
|
"\n",
|
|
|
1844
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
1845
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
1846
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
1847
|
"\n",
|
|
|
1848
|
" rubberband.attr('width', width);\n",
|
|
|
1849
|
" rubberband.attr('height', height);\n",
|
|
|
1850
|
" }\n",
|
|
|
1851
|
"\n",
|
|
|
1852
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
1853
|
" // upon first draw.\n",
|
|
|
1854
|
" this._resize_canvas(600, 600);\n",
|
|
|
1855
|
"\n",
|
|
|
1856
|
" // Disable right mouse context menu.\n",
|
|
|
1857
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
1858
|
" return false;\n",
|
|
|
1859
|
" });\n",
|
|
|
1860
|
"\n",
|
|
|
1861
|
" function set_focus () {\n",
|
|
|
1862
|
" canvas.focus();\n",
|
|
|
1863
|
" canvas_div.focus();\n",
|
|
|
1864
|
" }\n",
|
|
|
1865
|
"\n",
|
|
|
1866
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
1867
|
"}\n",
|
|
|
1868
|
"\n",
|
|
|
1869
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
1870
|
" var fig = this;\n",
|
|
|
1871
|
"\n",
|
|
|
1872
|
" var nav_element = $('<div/>')\n",
|
|
|
1873
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
1874
|
" this.root.append(nav_element);\n",
|
|
|
1875
|
"\n",
|
|
|
1876
|
" // Define a callback function for later on.\n",
|
|
|
1877
|
" function toolbar_event(event) {\n",
|
|
|
1878
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
1879
|
" }\n",
|
|
|
1880
|
" function toolbar_mouse_event(event) {\n",
|
|
|
1881
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
1882
|
" }\n",
|
|
|
1883
|
"\n",
|
|
|
1884
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
1885
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
1886
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
1887
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
1888
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
1889
|
"\n",
|
|
|
1890
|
" if (!name) {\n",
|
|
|
1891
|
" // put a spacer in here.\n",
|
|
|
1892
|
" continue;\n",
|
|
|
1893
|
" }\n",
|
|
|
1894
|
" var button = $('<button/>');\n",
|
|
|
1895
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
1896
|
" 'ui-button-icon-only');\n",
|
|
|
1897
|
" button.attr('role', 'button');\n",
|
|
|
1898
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
1899
|
" button.click(method_name, toolbar_event);\n",
|
|
|
1900
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
1901
|
"\n",
|
|
|
1902
|
" var icon_img = $('<span/>');\n",
|
|
|
1903
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
1904
|
" icon_img.addClass(image);\n",
|
|
|
1905
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
1906
|
"\n",
|
|
|
1907
|
" var tooltip_span = $('<span/>');\n",
|
|
|
1908
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
1909
|
" tooltip_span.html(tooltip);\n",
|
|
|
1910
|
"\n",
|
|
|
1911
|
" button.append(icon_img);\n",
|
|
|
1912
|
" button.append(tooltip_span);\n",
|
|
|
1913
|
"\n",
|
|
|
1914
|
" nav_element.append(button);\n",
|
|
|
1915
|
" }\n",
|
|
|
1916
|
"\n",
|
|
|
1917
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
1918
|
"\n",
|
|
|
1919
|
" var fmt_picker = $('<select/>');\n",
|
|
|
1920
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
1921
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
1922
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
1923
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
1924
|
"\n",
|
|
|
1925
|
" for (var ind in mpl.extensions) {\n",
|
|
|
1926
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
1927
|
" var option = $(\n",
|
|
|
1928
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
1929
|
" fmt_picker.append(option)\n",
|
|
|
1930
|
" }\n",
|
|
|
1931
|
"\n",
|
|
|
1932
|
" // Add hover states to the ui-buttons\n",
|
|
|
1933
|
" $( \".ui-button\" ).hover(\n",
|
|
|
1934
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
1935
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
1936
|
" );\n",
|
|
|
1937
|
"\n",
|
|
|
1938
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
1939
|
" nav_element.append(status_bar);\n",
|
|
|
1940
|
" this.message = status_bar[0];\n",
|
|
|
1941
|
"}\n",
|
|
|
1942
|
"\n",
|
|
|
1943
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
1944
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
1945
|
" // which will in turn request a refresh of the image.\n",
|
|
|
1946
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
1947
|
"}\n",
|
|
|
1948
|
"\n",
|
|
|
1949
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
1950
|
" properties['type'] = type;\n",
|
|
|
1951
|
" properties['figure_id'] = this.id;\n",
|
|
|
1952
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
1953
|
"}\n",
|
|
|
1954
|
"\n",
|
|
|
1955
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
1956
|
" if (!this.waiting) {\n",
|
|
|
1957
|
" this.waiting = true;\n",
|
|
|
1958
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
1959
|
" }\n",
|
|
|
1960
|
"}\n",
|
|
|
1961
|
"\n",
|
|
|
1962
|
"\n",
|
|
|
1963
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
1964
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
1965
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
1966
|
" fig.ondownload(fig, format);\n",
|
|
|
1967
|
"}\n",
|
|
|
1968
|
"\n",
|
|
|
1969
|
"\n",
|
|
|
1970
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
1971
|
" var size = msg['size'];\n",
|
|
|
1972
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
1973
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
1974
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
1975
|
" };\n",
|
|
|
1976
|
"}\n",
|
|
|
1977
|
"\n",
|
|
|
1978
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
1979
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
1980
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
1981
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
1982
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
1983
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
1984
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
1985
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
1986
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
1987
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
1988
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
1989
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
1990
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
1991
|
"\n",
|
|
|
1992
|
" fig.rubberband_context.clearRect(\n",
|
|
|
1993
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
1994
|
"\n",
|
|
|
1995
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
1996
|
"}\n",
|
|
|
1997
|
"\n",
|
|
|
1998
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
1999
|
" // Updates the figure title.\n",
|
|
|
2000
|
" fig.header.textContent = msg['label'];\n",
|
|
|
2001
|
"}\n",
|
|
|
2002
|
"\n",
|
|
|
2003
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
2004
|
" var cursor = msg['cursor'];\n",
|
|
|
2005
|
" switch(cursor)\n",
|
|
|
2006
|
" {\n",
|
|
|
2007
|
" case 0:\n",
|
|
|
2008
|
" cursor = 'pointer';\n",
|
|
|
2009
|
" break;\n",
|
|
|
2010
|
" case 1:\n",
|
|
|
2011
|
" cursor = 'default';\n",
|
|
|
2012
|
" break;\n",
|
|
|
2013
|
" case 2:\n",
|
|
|
2014
|
" cursor = 'crosshair';\n",
|
|
|
2015
|
" break;\n",
|
|
|
2016
|
" case 3:\n",
|
|
|
2017
|
" cursor = 'move';\n",
|
|
|
2018
|
" break;\n",
|
|
|
2019
|
" }\n",
|
|
|
2020
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
2021
|
"}\n",
|
|
|
2022
|
"\n",
|
|
|
2023
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
2024
|
" fig.message.textContent = msg['message'];\n",
|
|
|
2025
|
"}\n",
|
|
|
2026
|
"\n",
|
|
|
2027
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
2028
|
" // Request the server to send over a new figure.\n",
|
|
|
2029
|
" fig.send_draw_message();\n",
|
|
|
2030
|
"}\n",
|
|
|
2031
|
"\n",
|
|
|
2032
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
2033
|
" fig.image_mode = msg['mode'];\n",
|
|
|
2034
|
"}\n",
|
|
|
2035
|
"\n",
|
|
|
2036
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
2037
|
" // Called whenever the canvas gets updated.\n",
|
|
|
2038
|
" this.send_message(\"ack\", {});\n",
|
|
|
2039
|
"}\n",
|
|
|
2040
|
"\n",
|
|
|
2041
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
2042
|
"// Called in the figure constructor.\n",
|
|
|
2043
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
2044
|
" return function socket_on_message(evt) {\n",
|
|
|
2045
|
" if (evt.data instanceof Blob) {\n",
|
|
|
2046
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
2047
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
2048
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
2049
|
" * to be part of the websocket stream */\n",
|
|
|
2050
|
" evt.data.type = \"image/png\";\n",
|
|
|
2051
|
"\n",
|
|
|
2052
|
" /* Free the memory for the previous frames */\n",
|
|
|
2053
|
" if (fig.imageObj.src) {\n",
|
|
|
2054
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
2055
|
" fig.imageObj.src);\n",
|
|
|
2056
|
" }\n",
|
|
|
2057
|
"\n",
|
|
|
2058
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
2059
|
" evt.data);\n",
|
|
|
2060
|
" fig.updated_canvas_event();\n",
|
|
|
2061
|
" fig.waiting = false;\n",
|
|
|
2062
|
" return;\n",
|
|
|
2063
|
" }\n",
|
|
|
2064
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
2065
|
" fig.imageObj.src = evt.data;\n",
|
|
|
2066
|
" fig.updated_canvas_event();\n",
|
|
|
2067
|
" fig.waiting = false;\n",
|
|
|
2068
|
" return;\n",
|
|
|
2069
|
" }\n",
|
|
|
2070
|
"\n",
|
|
|
2071
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
2072
|
" var msg_type = msg['type'];\n",
|
|
|
2073
|
"\n",
|
|
|
2074
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
2075
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
2076
|
" try {\n",
|
|
|
2077
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
2078
|
" } catch (e) {\n",
|
|
|
2079
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
2080
|
" return;\n",
|
|
|
2081
|
" }\n",
|
|
|
2082
|
"\n",
|
|
|
2083
|
" if (callback) {\n",
|
|
|
2084
|
" try {\n",
|
|
|
2085
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
2086
|
" callback(fig, msg);\n",
|
|
|
2087
|
" } catch (e) {\n",
|
|
|
2088
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
2089
|
" }\n",
|
|
|
2090
|
" }\n",
|
|
|
2091
|
" };\n",
|
|
|
2092
|
"}\n",
|
|
|
2093
|
"\n",
|
|
|
2094
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
2095
|
"mpl.findpos = function(e) {\n",
|
|
|
2096
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
2097
|
" var targ;\n",
|
|
|
2098
|
" if (!e)\n",
|
|
|
2099
|
" e = window.event;\n",
|
|
|
2100
|
" if (e.target)\n",
|
|
|
2101
|
" targ = e.target;\n",
|
|
|
2102
|
" else if (e.srcElement)\n",
|
|
|
2103
|
" targ = e.srcElement;\n",
|
|
|
2104
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
2105
|
" targ = targ.parentNode;\n",
|
|
|
2106
|
"\n",
|
|
|
2107
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
2108
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
2109
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
2110
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
2111
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
2112
|
"\n",
|
|
|
2113
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
2114
|
"};\n",
|
|
|
2115
|
"\n",
|
|
|
2116
|
"/*\n",
|
|
|
2117
|
" * return a copy of an object with only non-object keys\n",
|
|
|
2118
|
" * we need this to avoid circular references\n",
|
|
|
2119
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
2120
|
" */\n",
|
|
|
2121
|
"function simpleKeys (original) {\n",
|
|
|
2122
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
2123
|
" if (typeof original[key] !== 'object')\n",
|
|
|
2124
|
" obj[key] = original[key]\n",
|
|
|
2125
|
" return obj;\n",
|
|
|
2126
|
" }, {});\n",
|
|
|
2127
|
"}\n",
|
|
|
2128
|
"\n",
|
|
|
2129
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
2130
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
2131
|
"\n",
|
|
|
2132
|
" if (name === 'button_press')\n",
|
|
|
2133
|
" {\n",
|
|
|
2134
|
" this.canvas.focus();\n",
|
|
|
2135
|
" this.canvas_div.focus();\n",
|
|
|
2136
|
" }\n",
|
|
|
2137
|
"\n",
|
|
|
2138
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
2139
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
2140
|
"\n",
|
|
|
2141
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
2142
|
" step: event.step,\n",
|
|
|
2143
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
2144
|
"\n",
|
|
|
2145
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
2146
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
2147
|
" * to control all of the cursor setting manually through the\n",
|
|
|
2148
|
" * 'cursor' event from matplotlib */\n",
|
|
|
2149
|
" event.preventDefault();\n",
|
|
|
2150
|
" return false;\n",
|
|
|
2151
|
"}\n",
|
|
|
2152
|
"\n",
|
|
|
2153
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
2154
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
2155
|
"}\n",
|
|
|
2156
|
"\n",
|
|
|
2157
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
2158
|
"\n",
|
|
|
2159
|
" // Prevent repeat events\n",
|
|
|
2160
|
" if (name == 'key_press')\n",
|
|
|
2161
|
" {\n",
|
|
|
2162
|
" if (event.which === this._key)\n",
|
|
|
2163
|
" return;\n",
|
|
|
2164
|
" else\n",
|
|
|
2165
|
" this._key = event.which;\n",
|
|
|
2166
|
" }\n",
|
|
|
2167
|
" if (name == 'key_release')\n",
|
|
|
2168
|
" this._key = null;\n",
|
|
|
2169
|
"\n",
|
|
|
2170
|
" var value = '';\n",
|
|
|
2171
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
2172
|
" value += \"ctrl+\";\n",
|
|
|
2173
|
" if (event.altKey && event.which != 18)\n",
|
|
|
2174
|
" value += \"alt+\";\n",
|
|
|
2175
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
2176
|
" value += \"shift+\";\n",
|
|
|
2177
|
"\n",
|
|
|
2178
|
" value += 'k';\n",
|
|
|
2179
|
" value += event.which.toString();\n",
|
|
|
2180
|
"\n",
|
|
|
2181
|
" this._key_event_extra(event, name);\n",
|
|
|
2182
|
"\n",
|
|
|
2183
|
" this.send_message(name, {key: value,\n",
|
|
|
2184
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
2185
|
" return false;\n",
|
|
|
2186
|
"}\n",
|
|
|
2187
|
"\n",
|
|
|
2188
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
2189
|
" if (name == 'download') {\n",
|
|
|
2190
|
" this.handle_save(this, null);\n",
|
|
|
2191
|
" } else {\n",
|
|
|
2192
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
2193
|
" }\n",
|
|
|
2194
|
"};\n",
|
|
|
2195
|
"\n",
|
|
|
2196
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
2197
|
" this.message.textContent = tooltip;\n",
|
|
|
2198
|
"};\n",
|
|
|
2199
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
2200
|
"\n",
|
|
|
2201
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
2202
|
"\n",
|
|
|
2203
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
2204
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
2205
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
2206
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
2207
|
" var ws = {};\n",
|
|
|
2208
|
"\n",
|
|
|
2209
|
" ws.close = function() {\n",
|
|
|
2210
|
" comm.close()\n",
|
|
|
2211
|
" };\n",
|
|
|
2212
|
" ws.send = function(m) {\n",
|
|
|
2213
|
" //console.log('sending', m);\n",
|
|
|
2214
|
" comm.send(m);\n",
|
|
|
2215
|
" };\n",
|
|
|
2216
|
" // Register the callback with on_msg.\n",
|
|
|
2217
|
" comm.on_msg(function(msg) {\n",
|
|
|
2218
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
2219
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
2220
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
2221
|
" });\n",
|
|
|
2222
|
" return ws;\n",
|
|
|
2223
|
"}\n",
|
|
|
2224
|
"\n",
|
|
|
2225
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
2226
|
" // This is the function which gets called when the mpl process\n",
|
|
|
2227
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
2228
|
"\n",
|
|
|
2229
|
" var id = msg.content.data.id;\n",
|
|
|
2230
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
2231
|
" // socket was opened in Python.\n",
|
|
|
2232
|
" var element = $(\"#\" + id);\n",
|
|
|
2233
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
2234
|
"\n",
|
|
|
2235
|
" function ondownload(figure, format) {\n",
|
|
|
2236
|
" window.open(figure.imageObj.src);\n",
|
|
|
2237
|
" }\n",
|
|
|
2238
|
"\n",
|
|
|
2239
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
2240
|
" ondownload,\n",
|
|
|
2241
|
" element.get(0));\n",
|
|
|
2242
|
"\n",
|
|
|
2243
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
2244
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
2245
|
" ws_proxy.onopen();\n",
|
|
|
2246
|
"\n",
|
|
|
2247
|
" fig.parent_element = element.get(0);\n",
|
|
|
2248
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
2249
|
" if (!fig.cell_info) {\n",
|
|
|
2250
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
2251
|
" return;\n",
|
|
|
2252
|
" }\n",
|
|
|
2253
|
"\n",
|
|
|
2254
|
" var output_index = fig.cell_info[2]\n",
|
|
|
2255
|
" var cell = fig.cell_info[0];\n",
|
|
|
2256
|
"\n",
|
|
|
2257
|
"};\n",
|
|
|
2258
|
"\n",
|
|
|
2259
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
2260
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
2261
|
" fig.root.unbind('remove')\n",
|
|
|
2262
|
"\n",
|
|
|
2263
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
2264
|
" fig.push_to_output();\n",
|
|
|
2265
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
2266
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
2267
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
2268
|
" IPython.keyboard_manager.enable()\n",
|
|
|
2269
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
2270
|
" fig.close_ws(fig, msg);\n",
|
|
|
2271
|
"}\n",
|
|
|
2272
|
"\n",
|
|
|
2273
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
2274
|
" fig.send_message('closing', msg);\n",
|
|
|
2275
|
" // fig.ws.close()\n",
|
|
|
2276
|
"}\n",
|
|
|
2277
|
"\n",
|
|
|
2278
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
2279
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
2280
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
2281
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
2282
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
2283
|
"}\n",
|
|
|
2284
|
"\n",
|
|
|
2285
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
2286
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
2287
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
2288
|
" this.send_message(\"ack\", {});\n",
|
|
|
2289
|
" var fig = this;\n",
|
|
|
2290
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
2291
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
2292
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
2293
|
"}\n",
|
|
|
2294
|
"\n",
|
|
|
2295
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
2296
|
" var fig = this;\n",
|
|
|
2297
|
"\n",
|
|
|
2298
|
" var nav_element = $('<div/>')\n",
|
|
|
2299
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
2300
|
" this.root.append(nav_element);\n",
|
|
|
2301
|
"\n",
|
|
|
2302
|
" // Define a callback function for later on.\n",
|
|
|
2303
|
" function toolbar_event(event) {\n",
|
|
|
2304
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
2305
|
" }\n",
|
|
|
2306
|
" function toolbar_mouse_event(event) {\n",
|
|
|
2307
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
2308
|
" }\n",
|
|
|
2309
|
"\n",
|
|
|
2310
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
2311
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
2312
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
2313
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
2314
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
2315
|
"\n",
|
|
|
2316
|
" if (!name) { continue; };\n",
|
|
|
2317
|
"\n",
|
|
|
2318
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
2319
|
" button.click(method_name, toolbar_event);\n",
|
|
|
2320
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
2321
|
" nav_element.append(button);\n",
|
|
|
2322
|
" }\n",
|
|
|
2323
|
"\n",
|
|
|
2324
|
" // Add the status bar.\n",
|
|
|
2325
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
2326
|
" nav_element.append(status_bar);\n",
|
|
|
2327
|
" this.message = status_bar[0];\n",
|
|
|
2328
|
"\n",
|
|
|
2329
|
" // Add the close button to the window.\n",
|
|
|
2330
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
2331
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
2332
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
2333
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
2334
|
" buttongrp.append(button);\n",
|
|
|
2335
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
2336
|
" titlebar.prepend(buttongrp);\n",
|
|
|
2337
|
"}\n",
|
|
|
2338
|
"\n",
|
|
|
2339
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
2340
|
" var fig = this\n",
|
|
|
2341
|
" el.on(\"remove\", function(){\n",
|
|
|
2342
|
"\tfig.close_ws(fig, {});\n",
|
|
|
2343
|
" });\n",
|
|
|
2344
|
"}\n",
|
|
|
2345
|
"\n",
|
|
|
2346
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
2347
|
" // this is important to make the div 'focusable\n",
|
|
|
2348
|
" el.attr('tabindex', 0)\n",
|
|
|
2349
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
2350
|
" // off when our div gets focus\n",
|
|
|
2351
|
"\n",
|
|
|
2352
|
" // location in version 3\n",
|
|
|
2353
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
2354
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
2355
|
" }\n",
|
|
|
2356
|
" else {\n",
|
|
|
2357
|
" // location in version 2\n",
|
|
|
2358
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
2359
|
" }\n",
|
|
|
2360
|
"\n",
|
|
|
2361
|
"}\n",
|
|
|
2362
|
"\n",
|
|
|
2363
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
2364
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
2365
|
" if (!manager)\n",
|
|
|
2366
|
" manager = IPython.keyboard_manager;\n",
|
|
|
2367
|
"\n",
|
|
|
2368
|
" // Check for shift+enter\n",
|
|
|
2369
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
2370
|
" this.canvas_div.blur();\n",
|
|
|
2371
|
" event.shiftKey = false;\n",
|
|
|
2372
|
" // Send a \"J\" for go to next cell\n",
|
|
|
2373
|
" event.which = 74;\n",
|
|
|
2374
|
" event.keyCode = 74;\n",
|
|
|
2375
|
" manager.command_mode();\n",
|
|
|
2376
|
" manager.handle_keydown(event);\n",
|
|
|
2377
|
" }\n",
|
|
|
2378
|
"}\n",
|
|
|
2379
|
"\n",
|
|
|
2380
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
2381
|
" fig.ondownload(fig, null);\n",
|
|
|
2382
|
"}\n",
|
|
|
2383
|
"\n",
|
|
|
2384
|
"\n",
|
|
|
2385
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
2386
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
2387
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
2388
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
2389
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
2390
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
2391
|
" var ncells = cells.length;\n",
|
|
|
2392
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
2393
|
" var cell = cells[i];\n",
|
|
|
2394
|
" if (cell.cell_type === 'code'){\n",
|
|
|
2395
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
2396
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
2397
|
" if (data.data) {\n",
|
|
|
2398
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
2399
|
" data = data.data;\n",
|
|
|
2400
|
" }\n",
|
|
|
2401
|
" if (data['text/html'] == html_output) {\n",
|
|
|
2402
|
" return [cell, data, j];\n",
|
|
|
2403
|
" }\n",
|
|
|
2404
|
" }\n",
|
|
|
2405
|
" }\n",
|
|
|
2406
|
" }\n",
|
|
|
2407
|
"}\n",
|
|
|
2408
|
"\n",
|
|
|
2409
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
2410
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
2411
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
2412
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
2413
|
"}\n"
|
|
|
2414
|
],
|
|
|
2415
|
"text/plain": [
|
|
|
2416
|
"<IPython.core.display.Javascript object>"
|
|
|
2417
|
]
|
|
|
2418
|
},
|
|
|
2419
|
"metadata": {},
|
|
|
2420
|
"output_type": "display_data"
|
|
|
2421
|
},
|
|
|
2422
|
{
|
|
|
2423
|
"data": {
|
|
|
2424
|
"text/html": [
|
|
|
2425
|
"<img src=\"data:image/png;base64,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5513XumxsWPHxu67794l6kZETJo0KbIsi9WrV+/ya+4sAwwAAAAAALqzP6foBGAKZ+vWrXH00UfHyJEjIyK6BeCf/OQnkWVZ3HHHHd2e+zd/8zdx/PHHl34+7bTT4sgjj+x23eLFiyPLsrjnnnt2+TV3lgEGAAAAAADd2Z9TdAIwhTNjxozYa6+9Yt26dRHRPQB/73vfiyzLYsmSJd2eO3To0HjPe95T+rm5uTkGDRrU7bpnnnkmsiyLb3/727v8mtvz8ssvR2tra5ezcOFCAwwAAAAAAN5GAKboBGAK5Xe/+13ss88+cd1115Uee3sAnjdvXmRZFkuXLu32/M9//vOx1157lX4+6KCD4mMf+1i3655//vnIsixuuOGGXX7N7Rk/fnxkWbbdY4ABAAAAAKSjvb09XnrppVi1alU8//zzzk6elStXxpo1a2Ljxo3R0dFR9t9YAKboBGAK5aKLLopDDjkkNm/eXHrMJ4ABAAAAAMhDe3t7rFq1Ktra2uLZZ5+NFStW1DyspnBWrFgRzz33XLS1tUVbW1u88MIL8dZbb+3w31kApugEYArjueeeix49esT06dNj1apVpXPSSSfFYYcdFqtWrYpXXnnFdwADAAAAAPAn8dJLL0VbW1usXbu24qdY6e6tt96KF198Mdra2kpf87g99ucUnQBMYTz88MM7/DPK286YMWPi97//ffTs2TPGjh3b5fmbN2+OPfbYI77whS+UHrv00ktj9913j40bN3a59uqrr44sy2L16tUREbv0mjvLAAMAAAAASMuqVavi2WefFX//Dzo6OuLZZ5+NlStX7vAa+3OKTgCmMNavXx933XVXt9Pc3Bx/8Rd/EXfddVc8/fTTERExePDgGDBgQLz22mul5//7v/97ZFkW999/f+mxJ554IrIsi8mTJ5cee/PNN+OQQw6Jk046qcv77+xr7iwDDAAAAAAgLdv+nDH/N9v+dPaO2J9TdAIwhff27wCOiFi+fHk0NDTEcccdF7NmzYorrrgi+vTpE6effnq35w8dOrT06d7Zs2fHhz70oejZs2c88sgj7/g1d4YBBgAAAACQlm3facv/TaV/R/tzik4ApvC2F4AjIh599NH40Ic+FH369In+/fvH6NGju3x6d5s33ngjLr300njPe94TDQ0NceKJJ8YDDzyw3ffa2dfcGQYYAAAAAEBaBODq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AAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAhyAABgAAAAAAAAAAAACHIAAGAAAAAAAAAAAAAIcgAAYAAAAAAAAAAAAAh/g/lNFkrivlm+QAAAAASUVORK5CYII=\" width=\"1600\">"
|
|
|
2426
|
],
|
|
|
2427
|
"text/plain": [
|
|
|
2428
|
"<IPython.core.display.HTML object>"
|
|
|
2429
|
]
|
|
|
2430
|
},
|
|
|
2431
|
"metadata": {},
|
|
|
2432
|
"output_type": "display_data"
|
|
|
2433
|
},
|
|
|
2434
|
{
|
|
|
2435
|
"data": {
|
|
|
2436
|
"application/javascript": [
|
|
|
2437
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
2438
|
"window.mpl = {};\n",
|
|
|
2439
|
"\n",
|
|
|
2440
|
"\n",
|
|
|
2441
|
"mpl.get_websocket_type = function() {\n",
|
|
|
2442
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
2443
|
" return WebSocket;\n",
|
|
|
2444
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
2445
|
" return MozWebSocket;\n",
|
|
|
2446
|
" } else {\n",
|
|
|
2447
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
2448
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
2449
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
2450
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
2451
|
" };\n",
|
|
|
2452
|
"}\n",
|
|
|
2453
|
"\n",
|
|
|
2454
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
2455
|
" this.id = figure_id;\n",
|
|
|
2456
|
"\n",
|
|
|
2457
|
" this.ws = websocket;\n",
|
|
|
2458
|
"\n",
|
|
|
2459
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
2460
|
"\n",
|
|
|
2461
|
" if (!this.supports_binary) {\n",
|
|
|
2462
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
2463
|
" if (warnings) {\n",
|
|
|
2464
|
" warnings.style.display = 'block';\n",
|
|
|
2465
|
" warnings.textContent = (\n",
|
|
|
2466
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
2467
|
" \"Performance may be slow.\");\n",
|
|
|
2468
|
" }\n",
|
|
|
2469
|
" }\n",
|
|
|
2470
|
"\n",
|
|
|
2471
|
" this.imageObj = new Image();\n",
|
|
|
2472
|
"\n",
|
|
|
2473
|
" this.context = undefined;\n",
|
|
|
2474
|
" this.message = undefined;\n",
|
|
|
2475
|
" this.canvas = undefined;\n",
|
|
|
2476
|
" this.rubberband_canvas = undefined;\n",
|
|
|
2477
|
" this.rubberband_context = undefined;\n",
|
|
|
2478
|
" this.format_dropdown = undefined;\n",
|
|
|
2479
|
"\n",
|
|
|
2480
|
" this.image_mode = 'full';\n",
|
|
|
2481
|
"\n",
|
|
|
2482
|
" this.root = $('<div/>');\n",
|
|
|
2483
|
" this._root_extra_style(this.root)\n",
|
|
|
2484
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
2485
|
"\n",
|
|
|
2486
|
" $(parent_element).append(this.root);\n",
|
|
|
2487
|
"\n",
|
|
|
2488
|
" this._init_header(this);\n",
|
|
|
2489
|
" this._init_canvas(this);\n",
|
|
|
2490
|
" this._init_toolbar(this);\n",
|
|
|
2491
|
"\n",
|
|
|
2492
|
" var fig = this;\n",
|
|
|
2493
|
"\n",
|
|
|
2494
|
" this.waiting = false;\n",
|
|
|
2495
|
"\n",
|
|
|
2496
|
" this.ws.onopen = function () {\n",
|
|
|
2497
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
2498
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
2499
|
" if (mpl.ratio != 1) {\n",
|
|
|
2500
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
2501
|
" }\n",
|
|
|
2502
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
2503
|
" }\n",
|
|
|
2504
|
"\n",
|
|
|
2505
|
" this.imageObj.onload = function() {\n",
|
|
|
2506
|
" if (fig.image_mode == 'full') {\n",
|
|
|
2507
|
" // Full images could contain transparency (where diff images\n",
|
|
|
2508
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
2509
|
" // there is no ghosting.\n",
|
|
|
2510
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
2511
|
" }\n",
|
|
|
2512
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
2513
|
" };\n",
|
|
|
2514
|
"\n",
|
|
|
2515
|
" this.imageObj.onunload = function() {\n",
|
|
|
2516
|
" fig.ws.close();\n",
|
|
|
2517
|
" }\n",
|
|
|
2518
|
"\n",
|
|
|
2519
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
2520
|
"\n",
|
|
|
2521
|
" this.ondownload = ondownload;\n",
|
|
|
2522
|
"}\n",
|
|
|
2523
|
"\n",
|
|
|
2524
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
2525
|
" var titlebar = $(\n",
|
|
|
2526
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
2527
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
2528
|
" var titletext = $(\n",
|
|
|
2529
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
2530
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
2531
|
" titlebar.append(titletext)\n",
|
|
|
2532
|
" this.root.append(titlebar);\n",
|
|
|
2533
|
" this.header = titletext[0];\n",
|
|
|
2534
|
"}\n",
|
|
|
2535
|
"\n",
|
|
|
2536
|
"\n",
|
|
|
2537
|
"\n",
|
|
|
2538
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
2539
|
"\n",
|
|
|
2540
|
"}\n",
|
|
|
2541
|
"\n",
|
|
|
2542
|
"\n",
|
|
|
2543
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
2544
|
"\n",
|
|
|
2545
|
"}\n",
|
|
|
2546
|
"\n",
|
|
|
2547
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
2548
|
" var fig = this;\n",
|
|
|
2549
|
"\n",
|
|
|
2550
|
" var canvas_div = $('<div/>');\n",
|
|
|
2551
|
"\n",
|
|
|
2552
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
2553
|
"\n",
|
|
|
2554
|
" function canvas_keyboard_event(event) {\n",
|
|
|
2555
|
" return fig.key_event(event, event['data']);\n",
|
|
|
2556
|
" }\n",
|
|
|
2557
|
"\n",
|
|
|
2558
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
2559
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
2560
|
" this.canvas_div = canvas_div\n",
|
|
|
2561
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
2562
|
" this.root.append(canvas_div);\n",
|
|
|
2563
|
"\n",
|
|
|
2564
|
" var canvas = $('<canvas/>');\n",
|
|
|
2565
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
2566
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
2567
|
"\n",
|
|
|
2568
|
" this.canvas = canvas[0];\n",
|
|
|
2569
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
2570
|
"\n",
|
|
|
2571
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
2572
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
2573
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
2574
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
2575
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
2576
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
2577
|
"\n",
|
|
|
2578
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
2579
|
"\n",
|
|
|
2580
|
" var rubberband = $('<canvas/>');\n",
|
|
|
2581
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
2582
|
"\n",
|
|
|
2583
|
" var pass_mouse_events = true;\n",
|
|
|
2584
|
"\n",
|
|
|
2585
|
" canvas_div.resizable({\n",
|
|
|
2586
|
" start: function(event, ui) {\n",
|
|
|
2587
|
" pass_mouse_events = false;\n",
|
|
|
2588
|
" },\n",
|
|
|
2589
|
" resize: function(event, ui) {\n",
|
|
|
2590
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
2591
|
" },\n",
|
|
|
2592
|
" stop: function(event, ui) {\n",
|
|
|
2593
|
" pass_mouse_events = true;\n",
|
|
|
2594
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
2595
|
" },\n",
|
|
|
2596
|
" });\n",
|
|
|
2597
|
"\n",
|
|
|
2598
|
" function mouse_event_fn(event) {\n",
|
|
|
2599
|
" if (pass_mouse_events)\n",
|
|
|
2600
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
2601
|
" }\n",
|
|
|
2602
|
"\n",
|
|
|
2603
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
2604
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
2605
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
2606
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
2607
|
"\n",
|
|
|
2608
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
2609
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
2610
|
"\n",
|
|
|
2611
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
2612
|
" event = event.originalEvent;\n",
|
|
|
2613
|
" event['data'] = 'scroll'\n",
|
|
|
2614
|
" if (event.deltaY < 0) {\n",
|
|
|
2615
|
" event.step = 1;\n",
|
|
|
2616
|
" } else {\n",
|
|
|
2617
|
" event.step = -1;\n",
|
|
|
2618
|
" }\n",
|
|
|
2619
|
" mouse_event_fn(event);\n",
|
|
|
2620
|
" });\n",
|
|
|
2621
|
"\n",
|
|
|
2622
|
" canvas_div.append(canvas);\n",
|
|
|
2623
|
" canvas_div.append(rubberband);\n",
|
|
|
2624
|
"\n",
|
|
|
2625
|
" this.rubberband = rubberband;\n",
|
|
|
2626
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
2627
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
2628
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
2629
|
"\n",
|
|
|
2630
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
2631
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
2632
|
" // canvas in synch.\n",
|
|
|
2633
|
" canvas_div.css('width', width)\n",
|
|
|
2634
|
" canvas_div.css('height', height)\n",
|
|
|
2635
|
"\n",
|
|
|
2636
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
2637
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
2638
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
2639
|
"\n",
|
|
|
2640
|
" rubberband.attr('width', width);\n",
|
|
|
2641
|
" rubberband.attr('height', height);\n",
|
|
|
2642
|
" }\n",
|
|
|
2643
|
"\n",
|
|
|
2644
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
2645
|
" // upon first draw.\n",
|
|
|
2646
|
" this._resize_canvas(600, 600);\n",
|
|
|
2647
|
"\n",
|
|
|
2648
|
" // Disable right mouse context menu.\n",
|
|
|
2649
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
2650
|
" return false;\n",
|
|
|
2651
|
" });\n",
|
|
|
2652
|
"\n",
|
|
|
2653
|
" function set_focus () {\n",
|
|
|
2654
|
" canvas.focus();\n",
|
|
|
2655
|
" canvas_div.focus();\n",
|
|
|
2656
|
" }\n",
|
|
|
2657
|
"\n",
|
|
|
2658
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
2659
|
"}\n",
|
|
|
2660
|
"\n",
|
|
|
2661
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
2662
|
" var fig = this;\n",
|
|
|
2663
|
"\n",
|
|
|
2664
|
" var nav_element = $('<div/>')\n",
|
|
|
2665
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
2666
|
" this.root.append(nav_element);\n",
|
|
|
2667
|
"\n",
|
|
|
2668
|
" // Define a callback function for later on.\n",
|
|
|
2669
|
" function toolbar_event(event) {\n",
|
|
|
2670
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
2671
|
" }\n",
|
|
|
2672
|
" function toolbar_mouse_event(event) {\n",
|
|
|
2673
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
2674
|
" }\n",
|
|
|
2675
|
"\n",
|
|
|
2676
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
2677
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
2678
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
2679
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
2680
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
2681
|
"\n",
|
|
|
2682
|
" if (!name) {\n",
|
|
|
2683
|
" // put a spacer in here.\n",
|
|
|
2684
|
" continue;\n",
|
|
|
2685
|
" }\n",
|
|
|
2686
|
" var button = $('<button/>');\n",
|
|
|
2687
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
2688
|
" 'ui-button-icon-only');\n",
|
|
|
2689
|
" button.attr('role', 'button');\n",
|
|
|
2690
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
2691
|
" button.click(method_name, toolbar_event);\n",
|
|
|
2692
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
2693
|
"\n",
|
|
|
2694
|
" var icon_img = $('<span/>');\n",
|
|
|
2695
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
2696
|
" icon_img.addClass(image);\n",
|
|
|
2697
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
2698
|
"\n",
|
|
|
2699
|
" var tooltip_span = $('<span/>');\n",
|
|
|
2700
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
2701
|
" tooltip_span.html(tooltip);\n",
|
|
|
2702
|
"\n",
|
|
|
2703
|
" button.append(icon_img);\n",
|
|
|
2704
|
" button.append(tooltip_span);\n",
|
|
|
2705
|
"\n",
|
|
|
2706
|
" nav_element.append(button);\n",
|
|
|
2707
|
" }\n",
|
|
|
2708
|
"\n",
|
|
|
2709
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
2710
|
"\n",
|
|
|
2711
|
" var fmt_picker = $('<select/>');\n",
|
|
|
2712
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
2713
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
2714
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
2715
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
2716
|
"\n",
|
|
|
2717
|
" for (var ind in mpl.extensions) {\n",
|
|
|
2718
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
2719
|
" var option = $(\n",
|
|
|
2720
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
2721
|
" fmt_picker.append(option)\n",
|
|
|
2722
|
" }\n",
|
|
|
2723
|
"\n",
|
|
|
2724
|
" // Add hover states to the ui-buttons\n",
|
|
|
2725
|
" $( \".ui-button\" ).hover(\n",
|
|
|
2726
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
2727
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
2728
|
" );\n",
|
|
|
2729
|
"\n",
|
|
|
2730
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
2731
|
" nav_element.append(status_bar);\n",
|
|
|
2732
|
" this.message = status_bar[0];\n",
|
|
|
2733
|
"}\n",
|
|
|
2734
|
"\n",
|
|
|
2735
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
2736
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
2737
|
" // which will in turn request a refresh of the image.\n",
|
|
|
2738
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
2739
|
"}\n",
|
|
|
2740
|
"\n",
|
|
|
2741
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
2742
|
" properties['type'] = type;\n",
|
|
|
2743
|
" properties['figure_id'] = this.id;\n",
|
|
|
2744
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
2745
|
"}\n",
|
|
|
2746
|
"\n",
|
|
|
2747
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
2748
|
" if (!this.waiting) {\n",
|
|
|
2749
|
" this.waiting = true;\n",
|
|
|
2750
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
2751
|
" }\n",
|
|
|
2752
|
"}\n",
|
|
|
2753
|
"\n",
|
|
|
2754
|
"\n",
|
|
|
2755
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
2756
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
2757
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
2758
|
" fig.ondownload(fig, format);\n",
|
|
|
2759
|
"}\n",
|
|
|
2760
|
"\n",
|
|
|
2761
|
"\n",
|
|
|
2762
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
2763
|
" var size = msg['size'];\n",
|
|
|
2764
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
2765
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
2766
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
2767
|
" };\n",
|
|
|
2768
|
"}\n",
|
|
|
2769
|
"\n",
|
|
|
2770
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
2771
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
2772
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
2773
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
2774
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
2775
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
2776
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
2777
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
2778
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
2779
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
2780
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
2781
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
2782
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
2783
|
"\n",
|
|
|
2784
|
" fig.rubberband_context.clearRect(\n",
|
|
|
2785
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
2786
|
"\n",
|
|
|
2787
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
2788
|
"}\n",
|
|
|
2789
|
"\n",
|
|
|
2790
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
2791
|
" // Updates the figure title.\n",
|
|
|
2792
|
" fig.header.textContent = msg['label'];\n",
|
|
|
2793
|
"}\n",
|
|
|
2794
|
"\n",
|
|
|
2795
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
2796
|
" var cursor = msg['cursor'];\n",
|
|
|
2797
|
" switch(cursor)\n",
|
|
|
2798
|
" {\n",
|
|
|
2799
|
" case 0:\n",
|
|
|
2800
|
" cursor = 'pointer';\n",
|
|
|
2801
|
" break;\n",
|
|
|
2802
|
" case 1:\n",
|
|
|
2803
|
" cursor = 'default';\n",
|
|
|
2804
|
" break;\n",
|
|
|
2805
|
" case 2:\n",
|
|
|
2806
|
" cursor = 'crosshair';\n",
|
|
|
2807
|
" break;\n",
|
|
|
2808
|
" case 3:\n",
|
|
|
2809
|
" cursor = 'move';\n",
|
|
|
2810
|
" break;\n",
|
|
|
2811
|
" }\n",
|
|
|
2812
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
2813
|
"}\n",
|
|
|
2814
|
"\n",
|
|
|
2815
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
2816
|
" fig.message.textContent = msg['message'];\n",
|
|
|
2817
|
"}\n",
|
|
|
2818
|
"\n",
|
|
|
2819
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
2820
|
" // Request the server to send over a new figure.\n",
|
|
|
2821
|
" fig.send_draw_message();\n",
|
|
|
2822
|
"}\n",
|
|
|
2823
|
"\n",
|
|
|
2824
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
2825
|
" fig.image_mode = msg['mode'];\n",
|
|
|
2826
|
"}\n",
|
|
|
2827
|
"\n",
|
|
|
2828
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
2829
|
" // Called whenever the canvas gets updated.\n",
|
|
|
2830
|
" this.send_message(\"ack\", {});\n",
|
|
|
2831
|
"}\n",
|
|
|
2832
|
"\n",
|
|
|
2833
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
2834
|
"// Called in the figure constructor.\n",
|
|
|
2835
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
2836
|
" return function socket_on_message(evt) {\n",
|
|
|
2837
|
" if (evt.data instanceof Blob) {\n",
|
|
|
2838
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
2839
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
2840
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
2841
|
" * to be part of the websocket stream */\n",
|
|
|
2842
|
" evt.data.type = \"image/png\";\n",
|
|
|
2843
|
"\n",
|
|
|
2844
|
" /* Free the memory for the previous frames */\n",
|
|
|
2845
|
" if (fig.imageObj.src) {\n",
|
|
|
2846
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
2847
|
" fig.imageObj.src);\n",
|
|
|
2848
|
" }\n",
|
|
|
2849
|
"\n",
|
|
|
2850
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
2851
|
" evt.data);\n",
|
|
|
2852
|
" fig.updated_canvas_event();\n",
|
|
|
2853
|
" fig.waiting = false;\n",
|
|
|
2854
|
" return;\n",
|
|
|
2855
|
" }\n",
|
|
|
2856
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
2857
|
" fig.imageObj.src = evt.data;\n",
|
|
|
2858
|
" fig.updated_canvas_event();\n",
|
|
|
2859
|
" fig.waiting = false;\n",
|
|
|
2860
|
" return;\n",
|
|
|
2861
|
" }\n",
|
|
|
2862
|
"\n",
|
|
|
2863
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
2864
|
" var msg_type = msg['type'];\n",
|
|
|
2865
|
"\n",
|
|
|
2866
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
2867
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
2868
|
" try {\n",
|
|
|
2869
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
2870
|
" } catch (e) {\n",
|
|
|
2871
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
2872
|
" return;\n",
|
|
|
2873
|
" }\n",
|
|
|
2874
|
"\n",
|
|
|
2875
|
" if (callback) {\n",
|
|
|
2876
|
" try {\n",
|
|
|
2877
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
2878
|
" callback(fig, msg);\n",
|
|
|
2879
|
" } catch (e) {\n",
|
|
|
2880
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
2881
|
" }\n",
|
|
|
2882
|
" }\n",
|
|
|
2883
|
" };\n",
|
|
|
2884
|
"}\n",
|
|
|
2885
|
"\n",
|
|
|
2886
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
2887
|
"mpl.findpos = function(e) {\n",
|
|
|
2888
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
2889
|
" var targ;\n",
|
|
|
2890
|
" if (!e)\n",
|
|
|
2891
|
" e = window.event;\n",
|
|
|
2892
|
" if (e.target)\n",
|
|
|
2893
|
" targ = e.target;\n",
|
|
|
2894
|
" else if (e.srcElement)\n",
|
|
|
2895
|
" targ = e.srcElement;\n",
|
|
|
2896
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
2897
|
" targ = targ.parentNode;\n",
|
|
|
2898
|
"\n",
|
|
|
2899
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
2900
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
2901
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
2902
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
2903
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
2904
|
"\n",
|
|
|
2905
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
2906
|
"};\n",
|
|
|
2907
|
"\n",
|
|
|
2908
|
"/*\n",
|
|
|
2909
|
" * return a copy of an object with only non-object keys\n",
|
|
|
2910
|
" * we need this to avoid circular references\n",
|
|
|
2911
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
2912
|
" */\n",
|
|
|
2913
|
"function simpleKeys (original) {\n",
|
|
|
2914
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
2915
|
" if (typeof original[key] !== 'object')\n",
|
|
|
2916
|
" obj[key] = original[key]\n",
|
|
|
2917
|
" return obj;\n",
|
|
|
2918
|
" }, {});\n",
|
|
|
2919
|
"}\n",
|
|
|
2920
|
"\n",
|
|
|
2921
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
2922
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
2923
|
"\n",
|
|
|
2924
|
" if (name === 'button_press')\n",
|
|
|
2925
|
" {\n",
|
|
|
2926
|
" this.canvas.focus();\n",
|
|
|
2927
|
" this.canvas_div.focus();\n",
|
|
|
2928
|
" }\n",
|
|
|
2929
|
"\n",
|
|
|
2930
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
2931
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
2932
|
"\n",
|
|
|
2933
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
2934
|
" step: event.step,\n",
|
|
|
2935
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
2936
|
"\n",
|
|
|
2937
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
2938
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
2939
|
" * to control all of the cursor setting manually through the\n",
|
|
|
2940
|
" * 'cursor' event from matplotlib */\n",
|
|
|
2941
|
" event.preventDefault();\n",
|
|
|
2942
|
" return false;\n",
|
|
|
2943
|
"}\n",
|
|
|
2944
|
"\n",
|
|
|
2945
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
2946
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
2947
|
"}\n",
|
|
|
2948
|
"\n",
|
|
|
2949
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
2950
|
"\n",
|
|
|
2951
|
" // Prevent repeat events\n",
|
|
|
2952
|
" if (name == 'key_press')\n",
|
|
|
2953
|
" {\n",
|
|
|
2954
|
" if (event.which === this._key)\n",
|
|
|
2955
|
" return;\n",
|
|
|
2956
|
" else\n",
|
|
|
2957
|
" this._key = event.which;\n",
|
|
|
2958
|
" }\n",
|
|
|
2959
|
" if (name == 'key_release')\n",
|
|
|
2960
|
" this._key = null;\n",
|
|
|
2961
|
"\n",
|
|
|
2962
|
" var value = '';\n",
|
|
|
2963
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
2964
|
" value += \"ctrl+\";\n",
|
|
|
2965
|
" if (event.altKey && event.which != 18)\n",
|
|
|
2966
|
" value += \"alt+\";\n",
|
|
|
2967
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
2968
|
" value += \"shift+\";\n",
|
|
|
2969
|
"\n",
|
|
|
2970
|
" value += 'k';\n",
|
|
|
2971
|
" value += event.which.toString();\n",
|
|
|
2972
|
"\n",
|
|
|
2973
|
" this._key_event_extra(event, name);\n",
|
|
|
2974
|
"\n",
|
|
|
2975
|
" this.send_message(name, {key: value,\n",
|
|
|
2976
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
2977
|
" return false;\n",
|
|
|
2978
|
"}\n",
|
|
|
2979
|
"\n",
|
|
|
2980
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
2981
|
" if (name == 'download') {\n",
|
|
|
2982
|
" this.handle_save(this, null);\n",
|
|
|
2983
|
" } else {\n",
|
|
|
2984
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
2985
|
" }\n",
|
|
|
2986
|
"};\n",
|
|
|
2987
|
"\n",
|
|
|
2988
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
2989
|
" this.message.textContent = tooltip;\n",
|
|
|
2990
|
"};\n",
|
|
|
2991
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
2992
|
"\n",
|
|
|
2993
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
2994
|
"\n",
|
|
|
2995
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
2996
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
2997
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
2998
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
2999
|
" var ws = {};\n",
|
|
|
3000
|
"\n",
|
|
|
3001
|
" ws.close = function() {\n",
|
|
|
3002
|
" comm.close()\n",
|
|
|
3003
|
" };\n",
|
|
|
3004
|
" ws.send = function(m) {\n",
|
|
|
3005
|
" //console.log('sending', m);\n",
|
|
|
3006
|
" comm.send(m);\n",
|
|
|
3007
|
" };\n",
|
|
|
3008
|
" // Register the callback with on_msg.\n",
|
|
|
3009
|
" comm.on_msg(function(msg) {\n",
|
|
|
3010
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
3011
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
3012
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
3013
|
" });\n",
|
|
|
3014
|
" return ws;\n",
|
|
|
3015
|
"}\n",
|
|
|
3016
|
"\n",
|
|
|
3017
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
3018
|
" // This is the function which gets called when the mpl process\n",
|
|
|
3019
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
3020
|
"\n",
|
|
|
3021
|
" var id = msg.content.data.id;\n",
|
|
|
3022
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
3023
|
" // socket was opened in Python.\n",
|
|
|
3024
|
" var element = $(\"#\" + id);\n",
|
|
|
3025
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
3026
|
"\n",
|
|
|
3027
|
" function ondownload(figure, format) {\n",
|
|
|
3028
|
" window.open(figure.imageObj.src);\n",
|
|
|
3029
|
" }\n",
|
|
|
3030
|
"\n",
|
|
|
3031
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
3032
|
" ondownload,\n",
|
|
|
3033
|
" element.get(0));\n",
|
|
|
3034
|
"\n",
|
|
|
3035
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
3036
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
3037
|
" ws_proxy.onopen();\n",
|
|
|
3038
|
"\n",
|
|
|
3039
|
" fig.parent_element = element.get(0);\n",
|
|
|
3040
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
3041
|
" if (!fig.cell_info) {\n",
|
|
|
3042
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
3043
|
" return;\n",
|
|
|
3044
|
" }\n",
|
|
|
3045
|
"\n",
|
|
|
3046
|
" var output_index = fig.cell_info[2]\n",
|
|
|
3047
|
" var cell = fig.cell_info[0];\n",
|
|
|
3048
|
"\n",
|
|
|
3049
|
"};\n",
|
|
|
3050
|
"\n",
|
|
|
3051
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
3052
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
3053
|
" fig.root.unbind('remove')\n",
|
|
|
3054
|
"\n",
|
|
|
3055
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
3056
|
" fig.push_to_output();\n",
|
|
|
3057
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
3058
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
3059
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
3060
|
" IPython.keyboard_manager.enable()\n",
|
|
|
3061
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
3062
|
" fig.close_ws(fig, msg);\n",
|
|
|
3063
|
"}\n",
|
|
|
3064
|
"\n",
|
|
|
3065
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
3066
|
" fig.send_message('closing', msg);\n",
|
|
|
3067
|
" // fig.ws.close()\n",
|
|
|
3068
|
"}\n",
|
|
|
3069
|
"\n",
|
|
|
3070
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
3071
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
3072
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
3073
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
3074
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
3075
|
"}\n",
|
|
|
3076
|
"\n",
|
|
|
3077
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
3078
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
3079
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
3080
|
" this.send_message(\"ack\", {});\n",
|
|
|
3081
|
" var fig = this;\n",
|
|
|
3082
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
3083
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
3084
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
3085
|
"}\n",
|
|
|
3086
|
"\n",
|
|
|
3087
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
3088
|
" var fig = this;\n",
|
|
|
3089
|
"\n",
|
|
|
3090
|
" var nav_element = $('<div/>')\n",
|
|
|
3091
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
3092
|
" this.root.append(nav_element);\n",
|
|
|
3093
|
"\n",
|
|
|
3094
|
" // Define a callback function for later on.\n",
|
|
|
3095
|
" function toolbar_event(event) {\n",
|
|
|
3096
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
3097
|
" }\n",
|
|
|
3098
|
" function toolbar_mouse_event(event) {\n",
|
|
|
3099
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
3100
|
" }\n",
|
|
|
3101
|
"\n",
|
|
|
3102
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
3103
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
3104
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
3105
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
3106
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
3107
|
"\n",
|
|
|
3108
|
" if (!name) { continue; };\n",
|
|
|
3109
|
"\n",
|
|
|
3110
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
3111
|
" button.click(method_name, toolbar_event);\n",
|
|
|
3112
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
3113
|
" nav_element.append(button);\n",
|
|
|
3114
|
" }\n",
|
|
|
3115
|
"\n",
|
|
|
3116
|
" // Add the status bar.\n",
|
|
|
3117
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
3118
|
" nav_element.append(status_bar);\n",
|
|
|
3119
|
" this.message = status_bar[0];\n",
|
|
|
3120
|
"\n",
|
|
|
3121
|
" // Add the close button to the window.\n",
|
|
|
3122
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
3123
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
3124
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
3125
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
3126
|
" buttongrp.append(button);\n",
|
|
|
3127
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
3128
|
" titlebar.prepend(buttongrp);\n",
|
|
|
3129
|
"}\n",
|
|
|
3130
|
"\n",
|
|
|
3131
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
3132
|
" var fig = this\n",
|
|
|
3133
|
" el.on(\"remove\", function(){\n",
|
|
|
3134
|
"\tfig.close_ws(fig, {});\n",
|
|
|
3135
|
" });\n",
|
|
|
3136
|
"}\n",
|
|
|
3137
|
"\n",
|
|
|
3138
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
3139
|
" // this is important to make the div 'focusable\n",
|
|
|
3140
|
" el.attr('tabindex', 0)\n",
|
|
|
3141
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
3142
|
" // off when our div gets focus\n",
|
|
|
3143
|
"\n",
|
|
|
3144
|
" // location in version 3\n",
|
|
|
3145
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
3146
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
3147
|
" }\n",
|
|
|
3148
|
" else {\n",
|
|
|
3149
|
" // location in version 2\n",
|
|
|
3150
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
3151
|
" }\n",
|
|
|
3152
|
"\n",
|
|
|
3153
|
"}\n",
|
|
|
3154
|
"\n",
|
|
|
3155
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
3156
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
3157
|
" if (!manager)\n",
|
|
|
3158
|
" manager = IPython.keyboard_manager;\n",
|
|
|
3159
|
"\n",
|
|
|
3160
|
" // Check for shift+enter\n",
|
|
|
3161
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
3162
|
" this.canvas_div.blur();\n",
|
|
|
3163
|
" event.shiftKey = false;\n",
|
|
|
3164
|
" // Send a \"J\" for go to next cell\n",
|
|
|
3165
|
" event.which = 74;\n",
|
|
|
3166
|
" event.keyCode = 74;\n",
|
|
|
3167
|
" manager.command_mode();\n",
|
|
|
3168
|
" manager.handle_keydown(event);\n",
|
|
|
3169
|
" }\n",
|
|
|
3170
|
"}\n",
|
|
|
3171
|
"\n",
|
|
|
3172
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
3173
|
" fig.ondownload(fig, null);\n",
|
|
|
3174
|
"}\n",
|
|
|
3175
|
"\n",
|
|
|
3176
|
"\n",
|
|
|
3177
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
3178
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
3179
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
3180
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
3181
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
3182
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
3183
|
" var ncells = cells.length;\n",
|
|
|
3184
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
3185
|
" var cell = cells[i];\n",
|
|
|
3186
|
" if (cell.cell_type === 'code'){\n",
|
|
|
3187
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
3188
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
3189
|
" if (data.data) {\n",
|
|
|
3190
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
3191
|
" data = data.data;\n",
|
|
|
3192
|
" }\n",
|
|
|
3193
|
" if (data['text/html'] == html_output) {\n",
|
|
|
3194
|
" return [cell, data, j];\n",
|
|
|
3195
|
" }\n",
|
|
|
3196
|
" }\n",
|
|
|
3197
|
" }\n",
|
|
|
3198
|
" }\n",
|
|
|
3199
|
"}\n",
|
|
|
3200
|
"\n",
|
|
|
3201
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
3202
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
3203
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
3204
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
3205
|
"}\n"
|
|
|
3206
|
],
|
|
|
3207
|
"text/plain": [
|
|
|
3208
|
"<IPython.core.display.Javascript object>"
|
|
|
3209
|
]
|
|
|
3210
|
},
|
|
|
3211
|
"metadata": {},
|
|
|
3212
|
"output_type": "display_data"
|
|
|
3213
|
},
|
|
|
3214
|
{
|
|
|
3215
|
"data": {
|
|
|
3216
|
"text/html": [
|
|
|
3217
|
"<img src=\"data:image/png;base64,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ARgAAACAPAjAjSEAQ30CMJX01FNPRXt7e9x2220xcuTIOP/882Pjxo113zNjxoxIKcWyZctqrw0fPjxOOumkPs92dXVFSikmT54cERGrV6+OlFIsX768z7NXX311pJRiy5Yte/zsKVOm1IL1O48BBvvOPwENAAAAQB4E4MYQgKE+ARgi4uMf/3h86EMf6vNPOff085//PPr16xcXX3xx7TU/AQzF5CeAAQAAAMiDANwYAjDUJwBDRNxwww2RUoof/ehHdZ8bMmRInH/++bU/jx8/PgYNGuR3AEPB9AzAt3Xclvd1AAAAAKgIAbgxBGCoTwCGiJgzZ06klOLRRx/d4zOvvfZa7LfffnHppZfWXps3b16klGLt2rW9nl2yZEmklGL16tW114YMGRKjRo3q83WHDh0aw4cP3+c7G2CQnQAMAAAAQB7KHoBvueWWPr/GcMiQIXHWWWfFPffc0+vZK664In7rt34rmpubY+DAgXHiiSfGlClTYtu2be/6OQIw1CcAUymvvPJKn9d27NgRp59+egwcODC2bdsWb775Zrz22mt9nnv7n2r+1re+VXttw4YN0b9//5g0aVLtte7u7mhpaYkjjzwydu3aVXv9sssui4EDB8YLL7xQe23VqlWRUooFCxbs8/digEF2AjAAAAAAeahKAJ42bVq0tbXFokWL4tprr41hw4ZFSilWrlxZe/bMM8+ML3zhCzF37txYuHBhTJw4MZqamuLMM8+Mrq6uup8jAEN9AjCV8ulPfzqGDx8eU6dOjRtvvDGmT58eJ554YqSUYvbs2RER8eyzz8ZBBx0UEydOjOuvvz6uv/76+MQnPhEppTjvvPP6DJ63w/Cll14aN954Y4wcOTJSSrFkyZJez73wwgtxyCGHxHHHHRdz586NmTNnRnNzc5x88sl1f//vnhhgkJ0ADAAAAEAeqhKA16xZ0+v1V199Nfr37x+jR4+u+/7rrrsuUkrx8MMP131OAIb6BGAqZdmyZXHOOefE4YcfHvvvv380NzfHOeecE3feeWftmS1btsTYsWPjgx/8YAwaNCiamppi2LBhMXPmzNixY0efr9nV1RUzZ86M97///TFgwIAYNmxYLF68eLef39HREeeee24MGjQoDjrooBgzZkxs3Lgx0/digEF2AjAAAAAAeahqAO7u7o4DDzwwLrzwwrrv/+Y3vxkppbj33nvrPicAQ30CMBSUAQbZCcAAAAAA5KEqAXjVqlWxefPm2LRpU3R0dMSECROiX79+cf/99/d6fufOnbF58+Z46aWX4r777osTTzwxfvVXfzV++tOf1v0cARjqE4ChoAwwyK5nAF60dlHe1wEAAACgIqoSgN95mpqa4tZbb+3z/MMPP9zruRNOOCG+973vvevnCMBQnwAMBWWAQXYCMAAAAAB52FO4vObRa+Kiey/6pTnXPHpNpu/v7QA8f/78aG9vj/b29li8eHGcd955sf/++8cdd9zR6/mtW7dGe3t7rFixIr70pS/F6aefHitXrsz89/g2+3OqTgCGgjLAIDsBGAAAAIA87ClcXnTvRbV91S/DuejeizJ9f3v6HcBdXV1xyimnxBFHHBHbt2/f4/uXLFkS/fr1iyeeeCLT3+Pb7M+pOgEYCsoAg+wEYAAAAADyUJWfAH5nAI6ImDx58rvutN98883o169ftLa21v0cARjqE4ChoAwwyO6vHv0rARgAAACA91xVfgfw7gLwpEmTIqUUjzzyyB7f/7Of/SxSSjFx4sS6nyMAQ30CMBSUAQbZ9QzAbWvb8r4OAAAAABVR1QC8Y8eOOP7442PAgAGxdevW2LJlS+zYsaPP+6+77rpIKcVNN91U93MEYKhPAIaCMsAgOwEYAAAAgDxUJQBPmzYt2traoq2tLWbPnh1nnHFGpJRq/7Tzt7/97Tj66KPji1/8Ynz961+POXPmxGc+85nYb7/94rd/+7fr/p7gCAEY3o0ADAVlgEF2AjAAAAAAeahKAO55DjjggDjttNNiwYIF0d3dHRER69atiwsvvDCOPfbYGDhwYBxwwAExbNiwmDJlSrz++uvv+jkCMNQnAENBGWCQnQAMAAAAQB7KHoDfKwIw1CcAQ0EZYJCdAAwAAABAHgTgxhCAoT4BGArKAIPsZj4yUwAGAAAA4D0nADeGAAz1CcBQUAYYZNczAC/uXJz3dQAAAACoCAG4MQRgqE8AhoIywCA7PwEMAAAAQB4E4MYQgKE+ARgKygCD7ARgAAAAAPIgADeGAAz1CcBQUAYYZOefgAYAAAAgDz/5yU9i3bp1eV+j8NatWycAQx0CMBSUAQbZCcAAAAAA5GH9+vXxzDPP5H2Nwvvxj38c69ev3+N/tz+n6gRgKCgDDLKb8cgMARgAAACA99yGDRuis7Mzdu7cmfdVCmv79u3R2dkZL7300h6fsT+n6gRgKCgDDLITgAEAAADIw9atW2vxsru7O+/rFM727dvjueeei87Ozti2bdsen7M/p+oEYCgoAwyyE4ABAAAAyEN3d3ctYD799NO132Xr1D/r1q2LH//4x9HZ2RmdnZ2xcePGugHd/pyqE4ChoAwwyE4ABgAAACAvO3fujE2bNsX69etzD6tFOuvXr4+XXnoptm3b9q4/PW1/TtUJwFBQBhhkJwADAAAAQHnZn1N1AjAUlAEG2f3lw38pAAMAAABASdmfU3UCMBSUAQbZCcAAAAAAUF7251SdAAwFZYBBdv4JaAAAAAAoL/tzqk4AhoIywCA7PwEMAAAAAOVlf07VCcBQUAYYZNczAC/pXJL3dQAAAACABrI/p+oEYCgoAwyyE4ABAAAAoLzsz6k6ARgKygCD7ARgAAAAACgv+3OqTgCGgjLAIDsBGAAAAADKy/6cqhOAoaAMMMhu+sPTBWAAAAAAKCn7c6pOAIaCMsAgu54BeOlTS/O+DgAAAADQQPbnVJ0ADAVlgEF2AjAAAAAAlJf9OVUnAENBGWCQnQAMAAAAAOVlf07VCcBQUAYYZCcAAwAAAEB52Z9TdQIwFJQBBtn1DMBLOpfkfR0AAAAAoIHsz6k6ARgKygCD7ARgAAAAACgv+3OqTgCGgjLAILueAXhx5+K8rwMAAAAANJD9OVUnAENBGWCQnQAMAAAAAOVlf07VCcBQUAYYZCcAAwAAAEB52Z9TdQIwFJQBBtn1DMBta9vyvg4AAAAA0ED251SdAAwFZYBBdj0D8KK1i/K+DgAAAADQQPbnVJ0ADAVlgEF20x6aJgADAAAAQEnZn1N1AjAUlAEG2fUMwLd13Jb3dQAAAACABrI/p+oEYCgoAwyyE4ABAAAAoLzsz6k6ARgKygCD7HoG4Fs7bs37OgAAAABAA9mfU3UCMBSUAQbZCcAAAAAAUF7251SdAAwFZYBBdn/x0F8IwAAAAABQUvbnVJ0ADAVlgEF2PQPwLU/ekvd1AAAAAIAGsj+n6gRgKCgDDLLrGYBvfvLmvK8DAAAAADSQ/TlVJwBDQRlgkJ0ADAAAAADlZX9O1QnAUFAGGGTXMwDf9ORNeV8HAAAAAGgg+3OqTgCGgjLAILueAfhvfvg3eV8HAAAAAGgg+3OqTgCGgjLAILupD00VgAEAAACgpOzPqToBGArKAIPsegbgG394Y97XAQAAAAAayP6cqhOAoaAMMMiu5z8BLQADAAAAQLnYn1N1AjAUlAEG2fkJYAAAAAAoL/tzqk4AhoIywCC7ngF44b8szPs6AAAAAEAD2Z9TdQIwFJQBBtlN+cEUARgAAAAASsr+nKoTgKGgDDDIrmcAvuFfbsj7OgAAAABAA9mfU3UCMBSUAQbZ9fwnoL/xxDfyvg4AAAAA0ED251SdAAwFZYBBdj1/AlgABgAAAIBysT+n6gRgKCgDDLLrGYAXPLEg7+sAAAAAAA1kf07VCcBQUAYYZNczAH/9ia/nfR0AAAAAoIHsz6k6ARgKygCD7ARgAAAAACgv+3OqTgCGgjLAILteAfifBWAAAAAAKBP7c6pOAIaCMsAgu54BeP4/z8/7OgAAAABAA9mfU3UCMBSUAQbZCcAAAAAAUF7251SdAAwFZYBBdl/5wVdqAXjeP8/L+zoAAAAAQAPZn1N1AjAUlAEG2V39D1cLwAAAAABQUvbnVJ0ADAVlgEF2PQPwX//TX+d9HQAAAACggezPqToBGArKAIPs/vwf/rwWgOf+09y8rwMAAAAANJD9OVUnAENBGWCQ3Z89+GcCMAAAAACUlP05VScAQ0EZYJDdlx/8ci0AX//49XlfBwAAAABoIPtzqk4AhoIywCA7ARgAAAAAysv+nKoTgKGgDDDITgAGAAAAgPKyP6fqBGAoKAMMsvvT1X9aC8BzHp+T93UAAAAAgAayP6fqBGAoKAMMsmtd3VoLwP/3H/9v3tcBAAAAABrI/pyqE4ChoAwwyO6q1VcJwAAAAABQUvbnVJ0ATKV0dHTEBRdcEB/4wAdi4MCBccghh0RLS0vcddddfZ7t7OyMESNGxODBg6O5uTnGjh0bmzZt6vNcV1dXzJo1K4455phoamqKk08+OZYuXbrbz9/br7m334sBBtl86YEv1QLw1/7xa3lfBwAAAABoIPtzqk4AplLuvvvuGDFiREydOjUWLlwYc+bMiZaWlkgpxQ033FB7bsOGDXHooYfGcccdF9dff33MmDEjmpub49RTT43t27f3+pqtra2RUopLLrkkFi5cGCNHjoyUUixbtqzXc/vyNfeGAQbZ9QzAs/9xdt7XAQAAAAAayP6cqhOAqbxdu3bFqaeeGieccELttYkTJ8bAgQPj+eefr73W3t7eJxS/+OKL0b9//5g0aVLtte7u7mhpaYmjjjoqdu3atc9fc28ZYJDdlQ9cKQADAAAAQEnZn1N1AjBExCc/+ck4/PDDa38+7LDDYtSoUX2eGzp0aJx99tm1P8+fPz9SSrF27dpezy1dujRSSvHggw/u89fcWwYYZHfl93sE4DUCMAAAAACUif05VRWzkCYAACAASURBVCcAU0mvv/56bN68OdatWxdf+9rX4n3ve1+MHj06Iv79p3pTSjFr1qw+7xs7dmwcfPDBtT+PHz8+Bg8eHN3d3b2eW7duXaSUYu7cufv8NfeWAQbZ/cn3/0QABgAAAICSsj+n6gRgKmnChAmRUoqUUvTr1y8uuOCCePXVVyMiYs2aNZFSikWLFvV535VXXhkppXjrrbciImLkyJFx7LHH9nnujTfeiJRStLa27vPX3J1XXnklOjo6ep0VK1YYYJDRH3//j2sB+Lo11+V9HQAAAACggQRgqk4AppKeeuqpaG9vj9tuuy1GjhwZ559/fmzcuDEiIlavXh0ppVi+fHmf91199dWRUootW7ZERMTw4cPjpJNO6vNcV1dXpJRi8uTJ+/w1d2fKlCm1YP3OY4DBvusZgK997Nq8rwMAAAAANJAATNUJwBARH//4x+NDH/pQdHd3+wlgqIA/+t4fCcAAAAAAUFICMFUnAENE3HDDDZFSih/96Ef7/DuABw0a5HcAQ8F88XtfrAXgrz721byvAwAAAAA0kP05VScAQ0TMmTMnUkrx6KOPRkTEkCFDYtSoUX2eGzp0aAwfPrz253nz5kVKKdauXdvruSVLlkRKKVavXl17bW+/5t4ywCC7ngF41mN9/48ZAAAAAEBx2Z9TdQIwlfLKK6/0eW3Hjh1x+umnx8CBA2Pbtm0REXHZZZfFwIED44UXXqg9t2rVqkgpxYIFC2qvbdiwIfr37x+TJk2qvdbd3R0tLS1x5JFHxq5du2qv7+3X3FsGGGR3xd9fIQADAAAAQEnZn1N1AjCV8ulPfzqGDx8eU6dOjRtvvDGmT58eJ554YqSUYvbs2bXnXnjhhTjkkEPiuOOOi7lz58bMmTOjubk5Tj755D6/q/ft3+F76aWXxo033hgjR46MlFIsWbKk13P78jX3hgEG2fUMwNc8ek3e1wEAAAAAGsj+nKoTgKmUZcuWxTnnnBOHH3547L///tHc3BznnHNO3HnnnX2e7ejoiHPPPTcGDRoUBx10UIwZMyY2btzY57murq6YOXNmvP/9748BAwbEsGHDYvHixbv9/L39mnvDAIPsJv/9ZAEYAAAAAErK/pyqE4ChoAwwyO4L3/2CAAwAAAAAJWV/TtUJwFBQBhhk9/nvfr4WgP/q0b/K+zoAAAAAQAPZn1N1AjAUlAEG2X3uu5+rBeCZj8zM+zoAAAAAQAPZn1N1AjAUlAEG2X1ulQAMAAAAAGVlf07VCcBQUAYYZNczAM94ZEbe1wEAAAAAGsj+nKoTgKGgDDDIbtKqSQIwAAAAAJSU/TlVJwBDQRlgkN3lqy6vBeC/fPgv874OAAAAANBA9udUnQAMBWWAQXYT2yfWAvD0h6fnfR0AAAAAoIHsz6k6ARgKygCD7C5rv0wABgAAAICSsj+n6gRgKCgDDLITgAEAAACgvOzPqToBGArKAIPsJrRPqAXgaQ9Ny/s6AAAAAEAD2Z9TdQIwFJQBBtlNuF8ABgAAAICysj+n6gRgKCgDDLK79P5LawH4Lx76i7yvAwAAAAA0kP05VScAQ0EZYJDdJfddUgvAUx+amvd1AAAAAIAGsj+n6gRgKCgDDLITgAEAAACgvOzPqToBGArKAIPsxt83vhaAp/xgSt7XAQAAAAAayP6cqhOAoaAMMMju4vsuFoABAAAAoKTsz6k6ARgKygCD7C7+jgAMAAAAAGVlf07VCcBQUAYYZPeH3/nDWgD+yg++kvd1AAAAAIAGsj+n6gRgKCgDDLITgAEAAACgvOzPqToBGArKAIPs/uA7f1ALwFf/w9V5XwcAAAAAaCD7c6pOAIaCMsAgu4vuvagWgP/8H/487+sAAAAAAA1kf07VCcBQUAYYZDfu3nECMAAAAACUlP05VScAQ0EZYJDdhfdcWAvAf/bgn+V9HQAAAACggezPqToBGArKAIPsegbgLz/45byvAwAAAAA0kP05VScAQ0EZYJCdAAwAAAAA5WV/TtUJwFBQBhhk9/v3/L4ADAAAAAAlZX9O1QnAUFAGGGQ39u6xtQD8p6v/NO/rAAAAAAANZH9O1QnAUFAGGGQ35u4xAjAAAAAAlJT9OVUnAENBGWCQXc8A3Lq6Ne/rAAAAAAANZH9O1QnAUFAGGGQ3+u7RAjAAAAAAlJT9OVUnAENBGWCQ3ei/+88AfNXqq/K+DgAAAADQQPbnVJ0ADAVlgEF2v/d3v1cLwF964Et5XwcAAAAAaCD7c6pOAIaCMsAgu99d+bsCMAAAAACUlP05VScAQ0EZYJDd/1n5f2oB+MoHrsz7OgAAAABAA9mfU3UCMBSUAQbZ9QrA3xeAAQAAAKBM7M+pOgEYCsoAg+w+u/KzAjAAAAAAlJT9OVUnAENBGWCQ3ai7RtUC8J98/0/yvg4AAAAA0ED251SdAAwFZYBBdj0D8B9//4/zvg4AAAAA0ED251SdAAwFZYBBdhfcdYEADAAAAAAlZX9O1QnAUFAGGGTXMwD/0ff+KO/rAAAAAAANZH9O1QnAUFAGGGT3mTs/UwvAX/zeF/O+DgAAAADQQPbnVJ0ADAVlgEF2//vO/y0AAwAAAEBJ2Z9TdQIwFJQBBtmdf+f5AjAAAAAAlJT9OVUnAENBGWCQ3adXfFoABgAAAICSsj+n6gRgKCgDDLLrGYCv+Psr8r4OAAAAANBA9udUnQAMBWWAQXY9A/Dkv5+c93UAAAAAgAayP6fqBGAoKAMMsvvUtz8lAAMAAABASdmfU3UCMBSUAQbZ/a9v/69aAP7Cd7+Q93UAAAAAgAayP6fqBGAoKAMMsvudb/9OLQB//rufz/s6AAAAAEAD2Z9TdQIwFJQBBtkJwAAAAABQXvbnVJ0ADAVlgEF2n/zWJ2sB+HPf/Vze1wEAAAAAGsj+nKoTgKGgDDDIrlcAXiUAAwAAAECZ2J9TdQIwFJQBBtmN/NZIARgAAAAASsr+nKoTgKGgDDDI7hN3fKIWgCetmpT3dQAAAACABrI/p+oEYCgoAwyyE4ABAAAAoLzsz6k6ARgKygCD7P7nHf+zFoAvX3V53tcBAAAAABrI/pyqE4ChoAwwyO68b55XC8AT2yfmfR0AAAAAoIHsz6k6ARgKygCD7EZ8c4QADAAAAAAlZX9O1QnAUFAGGGTXMwBf1n5Z3tcBAAAAABrI/pyqE4ChoAwwyK5nAJ7QPiHv6wAAAAAADWR/TtUJwFBQBhhkd+7fnisAAwAAAEBJ2Z9TdQIwFJQBBtl9/G8//p8B+H4BGAAAAADKxP6cqhOAoaAMMMjunL89pxaAL73/0ryvAwAAAAA0kP05VScAQ0EZYJDd2f/vbAEYAAAAAErK/pyqE4ChoAwwyG74/xteC8CX3HdJ3tcBAAAAABrI/pyqE4ChoAwwyK5nAB5/3/i8rwMAAAAANJD9OVUnAENBGWCQ3fDlAjAAAAAAlJX9OVUnAENBGWCQ3ceWf6wWgC++7+K8rwMAAAAANJD9OVUnAENBGWCQ3VnLzxKAAQAAAKCk7M+pOgEYCsoAg+w+evtH/zMAf0cABgAAAIAysT+n6gRgKCgDDLLrGYD/8Dt/mPd1AAAAAIAGsj+n6gRgKCgDDLL7H7f/DwEYAAAAAErK/pyqE4ChoAwwyK5nAP6D7/xB3tcBAAAAABrI/pyqE4ChoAwwyK5lWUstAF9070V5XwcAAAAAaCD7c6pOAIaCMsAgu/++7L8LwAAAAABQUvbnVJ0ADAVlgEF2PQPwuHvH5X0dAAAAAKCB7M+pOgEYCsoAg+zOXHZmLQBfeM+FeV8HAAAAAGgg+3OqTgCmMh577LGYNGlS/MZv/EYMGjQojj766Bg1alQ8/fTTvZ4bN25cpJT6nBNOOKHP1+zq6opZs2bFMcccE01NTXHyySfH0qVLd/v5nZ2dMWLEiBg8eHA0NzfH2LFjY9OmTZm/HwMMsvtvS/+bAAwAAAAAJWV/TtUJwFTGZz7zmfj1X//1+PznPx833nhjTJ8+PQ4//PAYPHhwPPnkk7Xnxo0bF01NTdHW1tbr3HXXXX2+Zmtra6SU4pJLLomFCxfGyJEjI6UUy5Yt6/Xchg0b4tBDD43jjjsurr/++pgxY0Y0NzfHqaeeGtu3b8/0/RhgkN1Hln5EAAYAAACAkrI/p+oEYCrjBz/4QZ/Y+swzz0RTU1OMGTOm9tq4ceNi8ODB7/r1Xnzxxejfv39MmjSp9lp3d3e0tLTEUUcdFbt27aq9PnHixBg4cGA8//zztdfa29sjpRQ33HBDpu/HAIPsPrLkPwPw79/z+3lfBwAAAABoIPtzqk4ApvJOP/30OP3002t/fjsA79q1K7Zu3brH982fPz9SSrF27dpery9dujRSSvHggw/WXjvssMNi1KhRfb7G0KFD4+yzz850bwMMshOAAQAAAKC87M+pOgGYSuvu7o4jjzwyzj333Npr48aNi/322y8GDRoUKaVobm6Oyy+/PLZt29brvePHj4/BgwdHd3d3r9fXrVsXKaWYO3duRPz7TwqnlGLWrFl9Pn/s2LFx8MEHZ7q7AQbZ/dcl/7UWgMfePTbv6wAAAAAADWR/TtUJwFRaW1tbpJTipptuqr3W2toaV111VSxfvjyWLVsW48aNi5RSnHnmmbFz587acyNHjoxjjz22z9d84403IqUUra2tERGxZs2aSCnFokWL+jx75ZVXRkop3nrrrbr3fOWVV6Kjo6PXWbFihQEGGX14yYcFYAAAAAAoKQGYqhOAqaynnnoqDjzwwPjIRz7S6/f17s6MGTMipRTLli2rvTZ8+PA46aST+jzb1dUVKaWYPHlyRESsXr06UkqxfPnyPs9effXVkVKKLVu21P38KVOmREppt8cAg333Xxb/l1oAHnP3mHd/AwAAAABQGAIwVScAU0n/+q//Gscee2wcffTR8dJLL73r8z//+c+jX79+cfHFF9de8xPAUFwfWvyhWgAefffovK8DAAAAADSQAEzVCcBUzs9+9rM47bTT4uCDD461a9fu9fuGDBkS559/fu3P48ePj0GDBvkdwFBAAjAAAAAAlJf9OVUnAFMpb775ZrS0tMSgQYPioYce2uv3vfbaa7HffvvFpZdeWntt3rx5kVLqE5GXLFkSKaVYvXp17bUhQ4bEqFGj+nzdoUOHxvDhwzN8JwYY/CJ6BeC/E4ABAADg/7N379Fe1XXCx3ezQhawViPe6nm0MDHK2KTZZboM6eCMNJJWFk0lk8+UMhLTw8w0TkyTYhEUlRV4QcTLT67SxdA0S6kMQs1LWgJe0tADCuIFFBFQzvk8f1Q/zvGHjb/97LX22r/v67XWWQt2mx8f/mh91vq81/EAdBL3c1InAJOMXbt2xQknnBAvf/nL45prrtnjO9u3b4+nn3665fmf/lPNV1xxRfPZunXrol+/fjFx4sTms56enhg5cmQceOCBfX6u8GmnnRYDBgyIrq6u5rNly5ZFlmUxe/bsQv8eCwyKe+v8tzYD8Meu/ljV4wAAAAAAJXI/J3UCMMmYNGlSZFkWxx9/fMyfP7/lKyJi7dq1sffee8eECRNi5syZMXPmzDjuuOMiy7J473vfG93d3X0+809hePz48TF37twYM2ZMZFkWCxcu7PNeV1dX7LvvvjF06NCYNWtWTJ8+PQYPHhwjRoz4H3/+74uxwKC4t8x/iwAMAAAAAB3K/ZzUCcAk46ijjoosy170KyJi8+bNMW7cuDj00ENj4MCB0b9//xg+fHhMnz49nnvuuZbP7O7ujunTp8eQIUNir732iuHDh8eCBQv2+PevWrUqjj322Bg4cGDsvffecdJJJ8XGjRsL/3ssMCjuyHlHNgPwR3/40arHAQAAAABK5H5O6gRgqCkLDIrrHYD/4Yf/UPU4AAAAAECJ3M9JnQAMNWWBQXFvnvdmARgAAAAAOpT7OakTgKGmLDAo7oh5RzQD8Ed++JGqxwEAAAAASuR+TuoEYKgpCwyKO+IyARgAAAAAOpX7OakTgKGmLDAo7vDLDm8G4LFXja16HAAAAACgRO7npE4AhpqywKA4ARgAAAAAOpf7OakTgKGmLDAo7k2XvUkABgAAAIAO5X5O6gRgqCkLDIob0RjRDMAfvurDVY8DAAAAAJTI/ZzUCcBQUxYYFPen+Js38vjQlR+qehwAAAAAoETu56ROAIaassCgOAEYAAAAADqX+zmpE4ChpiwwKKanp6dPAD7xyhOrHgkAAAAAKJH7OakTgKGmLDAo5oUB+INXfrDqkQAAAACAErmfkzoBGGrKAoNiunu6BWAAAAAA6GDu56ROAIaassCgmF3du/oE4A8s/UDVIwEAAAAAJXI/J3UCMNSUBQbFPN/9vAAMAAAAAB3M/ZzUCcBQUxYYFPNc93MCMAAAAAB0MPdzUicAQ01ZYFDMCwPw+3/w/qpHAgAAAABK5H5O6gRgqCkLDIp5bpcADAAAAACdzP2c1AnAUFMWGBSzc9fOPgH4hB+cUPVIAAAAAECJ3M9JnQAMNWWBQTE7du3oE4CP/8HxVY8EAAAAAJTI/ZzUCcBQUxYYFLP9+e0CMAAAAAB0MPdzUicAQ01ZYFDMCwPw+654X9UjAQAAAAAlcj8ndQIw1JQFBsU8+/yzAjAAAAAAdDD3c1InAENNWWBQzLbntgnAAAAAANDB3M9JnQAMNWWBQTEvDMBjrhhT9UgAAAAAQIncz0mdAAw1ZYFBMc8890yfAHzc94+reiQAAAAAoETu56ROAIaassCgGAEYAAAAADqb+zmpE4ChpiwwKGbrzq19AvDfX/43VY8EAAAAAJTI/ZzUCcBQUxYYFPP0zqf7BOD3Lnhn1SMBAAAAACVyPyd1AjDUlAUGxTy18ykBGAAAAAA6mPs5qROAoaYsMChmy44tfQLw6AXvqHokAAAAAKBE7uekTgCGmrLAoJgXBuC/aby96pEAAAAAgBK5n5M6ARhqygKDYl4YgI8SgAEAAACgo7ifkzoBGGrKAoNiNm/f/IIA/LaqRwIAAAAASuR+TuoEYKgpCwyKeXL7k74DGAAAAAA6mPs5qROAoaYsMCjmie1P9AnA7/EdwAAAAADQUdzPSZ0ADDVlgUExLwzAIwVgAAAAAOgo7uekTgCGmrLAoJjHn31cAAYAAACADuZ+TuoEYKgpCwyKeezZxwRgAAAAAOhg7uekTgCGmrLAoJgXBuC/bry16pEAAAAAgBK5n5M6ARhqygKDYjZt2yQAAwAAAEAHcz8ndQIw1JQFBsU8uu1RARgAAAAAOpj7OakTgKGmLDAoRgAGAAAAgM7mfk7qBGCoKQsMitn4zMY+AfjdAjAAAAAAdBT3c1InAENNWWBQzIZnNvQJwO8SgAEAAACgo7ifkzoBGGrKAoNiBGAAAAAA6Gzu56ROAIaassCgmEe2PvKCAPyWqkcCAAAAAErkfk7qBGCoKQsMinlhAH6nAAwAAAAAHcX9nNQJwFBTFhgU8/DWhwVgAAAAAOhg7uekTgCGmrLAoJj1W9cLwAAAAADQwdzPSZ0ADDVlgUEx655e1ycAv6NxZNUjAQAAAAAlcj8ndQIw1JQFBsV0Pd31ggDsO4ABAAAAoJO4n5M6ARhqygKDYl4YgP/KdwADAAAAQEdxPyd1AjDUlAUGxXQ9JQADAAAAQCdzPyd1AjDUlAUGxTz01EMCMAAAAAB0MPdzUicAQ01ZYFDMg0892CcAv10ABgAAAICO4n5O6gRgqCkLDIpZu2WtAAwAAAAAHcz9nNQJwFBTFhgU0xqA31z1SAAAAABAidzPSZ0ADDVlgUExv9/y+z4B+G0CMAAAAAB0FPdzUicAQ01ZYFDMA1seEIABAAAAoIO5n5M6ARhqygKDYh7YLAADAAAAQCdzPyd1AjDUlAUGxdy/+f4+AfitjSOqHgkAAAAAKJH7OakTgKGmLDAoRgAGAAAAgM7mfk7qBGCoKQsMivndk7/rE4DfIgADAAAAQEdxPyd1AjDUlAUGxdz35H0CMAAAAAB0MPdzUicAQ01ZYFDMvU/eKwADAAAAQAdzPyd1AjDUlAUGxdzzxD19AvCRjcOrHgkAAAAAKJH7OakTgKGmLDAoRgAGAAAAgM7mfk7qBGCoKQsMihGAAQAAAKCzuZ+TOgEYasoCg2LufuLuPgH4zQIwAAAAAHQU93NSJwBDTVlgUMyax9cIwAAAAADQwdzPSZ0ADDVlgUExqx9f3ScAH9F4U9UjAQAAAAAlcj8ndQIw1JQFBsWsenyVAAwAAAAAHcz9nNQJwFBTFhgUIwADAAAAQGdzPyd1AjDUlAUGxax6rG8APlwABgAAAICO4n5O6gRgqCkLDIq567G7XhCAR1Q9EgAAAABQIvdzUicAQ01ZYFDMbzf9VgAGAAAAgA7mfk7qBGCoKQsMivnNpt/0CcBvEoABAAAAoKO4n5M6AZhk3HLLLTFx4sR44xvfGAMHDoxXv/rVMXbs2Lj33ntb3l2zZk2MHj06Bg0aFIMHD45x48bFpk2bWt7r7u6OGTNmxMEHHxz9+/ePESNGxKJFi/b497/Uz3ypLDAo5oUBeIQADAAAAAAdxf2c1AnAJONDH/pQvOpVr4rPfOYzMXfu3Jg6dWq88pWvjEGDBsVdd93VfG/dunWx3377xdChQ2PmzJkxbdq0GDx4cBx++OGxc+fOPp85efLkyLIsTj311LjwwgtjzJgxkWVZLF68uM977XzmS2WBQTF3brrzBQE4r3okAAAAAKBE7uekTgAmGStXrmyJrffdd1/0798/TjrppOazCRMmxIABA+Khhx5qPrv++usjy7KYM2dO89n69eujX79+MXHixOaznp6eGDlyZBx00EGxa9eutj+zHRYYFHPHo3cIwAAAAADQwdzPSZ0ATPKOPPLIOPLII5u/P+CAA2Ls2LEt7w0bNiyOOeaY5u/PO++8yLIsVq9e3ee9RYsWRZZlsWLFirY/sx0WGBQjAAMAAABAZ3M/J3UCMEnr6emJAw88MI499tiI+MN39WZZFjNmzGh5d9y4cbHPPvs0f3/KKafEoEGDoqenp897999/f2RZFrNmzWr7M9thgUExv370130CcC4AAwAAAEBHcT8ndQIwSZs/f35kWRYXX3xxRETceuutkWVZzJs3r+Xd008/PbIsix07dkRExJgxY+KQQw5peW/btm2RZVlMnjy57c98MY8++misWrWqz9fSpUstMChAAAYAAACAziYAkzoBmGTdfffd8YpXvCLe+c53Nn9e7/LlyyPLsliyZEnL+2eccUZkWRabN2+OiIhRo0bFYYcd1vJed3d3ZFkWkyZNavszX8yUKVMiy7I9fllg0J7bN94uAAMAAABABxOASZ0ATJI2bNgQhxxySLz61a+Ohx9+uPncdwBD57tt420tAfiF/yl3AAAAAKC+BGBSJwCTnC1btsQRRxwR++yzT6xevbrP/9buzwAeOHCgnwEMNXPrhltbAnB3T3fVYwEAAAAAJXE/J3UCMEnZvn17jBw5MgYOHBg33njjHt/Zf//9Y+zYsS3Phw0bFqNGjWr+/txzz40sy1oi8sKFCyPLsli+fHnbn9kOCwyKuWXDLQIwAAAAAHQw93NSJwCTjF27dsUJJ5wQL3/5y+Oaa6550fdOO+20GDBgQHR1dTWfLVu2LLIsi9mzZzefrVu3Lvr16xcTJ05sPuvp6YmRI0fGgQce2Py5wu18ZjssMChmTwF4V/eu//kPAgAAAAC14H5O6gRgkjFp0qTIsiyOP/74mD9/fsvXn3R1dcW+++4bQ4cOjVmzZsX06dNj8ODBMWLEiJaf1funn+E7fvz4mDt3bowZMyayLIuFCxf2ea+dz3ypLDAoZk8B+Pnu56seCwAAAAAoifs5qROAScZRRx0VWZa96Fdvq1atimOPPTYGDhwYe++9d5x00kmxcePGls/s7u6O6dOnx5AhQ2KvvfaK4cOHx4IFC/b497/Uz3ypLDAo5leP/EoABgAAAIAO5n5O6gRgqCkLDIq5+ZGbWwLwc93PVT0WAAAAAFAS93NSJwBDTVlgUMxNj9zUGoB3CcAAAAAA0Cncz0mdAAw1ZYFBMQIwAAAAAHQ293NSJwBDTVlgUMyND9/YEoB37tpZ9VgAAAAAQEncz0mdAAw1ZYFBMSsfXikAAwAAAEAHcz8ndQIw1JQFBsWsXN8agHfs2lH1WAAAAABASdzPSZ0ADDVlgUExv1z/y5YAvP357VWPBQAAAACUxP2c1AnAUFMWGBQjAAMAAABAZ3M/J3UCMNSUBQbFrFi/oiUAP/v8s1WPBQAAAACUxP2c1AnAUFMWGBSzfN3ylgC87bltVY8FAAAAAJTE/ZzUCcBQUxYYFPOLdb8QgAEAAACgg7mfkzoBGGrKAoNiBGAAAAAA6Gzu56ROAIaassCgmBu6bmgJwM8890zVYwEAAAAAJXE/J3UCMNSUBQbFCMAAAAAA0Nncz0mdAAw1ZYFBMT/v+nlLAN66c2vVYwEAAAAAJXE/J3UCMNSUBQbF/Oyhn7UE4Kd3Pl31WAAAAABASdzPSZ0ADDVlgUExP33opwIwAAAAAHQw93NSJwBDTVlgUMyyh5a1BOCndj5V9VgAAAAAQEncz0mdAAw1ZYFBMQIwAAAAAHQ293NSJwBDTVlgUMyyB1sD8JYdW6oeCwAAAAAoifs5qROAoaYsMCjm+gevF4ABAAAAoIO5n5M6ARhqygKDYq578DoBGAAAAAA6mPs5qROAoaYsMCjmJ2t/0hKAN2/fXPVYAAAAAEBJ3M9JnQAMNWWBQTF7CsBPbn+y6rEAAAAAgJK4n5M6ARhqygKDYn689scCMAAAAAB0MPdzUicAQ01ZYFDMtWuvbQnAT2x/ouqxAAAAAICSuJ+TOgEYasoCg2Ku/X1rAH782cerHgsAAAAAKIn7OakTgKGmLDAo5ke//5EADAAAAAAdzP2c1AnAUFMWGBSzpwD82LOPVT0WAAAArhqJcQAAIABJREFUAFAS93NSJwBDTVlgUMw1D1wjAAMAAABAB3M/J3UCMNSUBQbFXP3A1QIwAAAAAHQw93NSJwBDTVlgUMwPH/hhSwDetG1T1WMBAAAAACVxPyd1AjDUlAUGxVx1/1UCMAAAAAB0MPdzUicAQ01ZYFDMngLwo9serXosAAAAAKAk7uekTgCGmrLAoJg9BeCNz2yseiwAAAAAoCTu56ROAIaassCgmCvvv1IABgAAAIAO5n5O6gRgqCkLDIpZ+rulLQF4wzMbqh4LAAAAACiJ+zmpE4ChpiwwKOYHv/uBAAwAAAAAHcz9nNQJwFBTFhgUIwADAAAAQGdzPyd1AjDUlAUGxVxx3xUtAfiRrY9UPRYAAAAAUBL3c1InAENNWWBQzJ4C8MNbH656LAAAAACgJO7npE4AhpqywKCY79/3fQEYAAAAADqY+zmpE4ChpiwwKOZ7936vJQCv37q+6rEAAAAAgJK4n5M6ARhqygKDYr5773cFYAAAAADoYO7npE4AhpqywKCYPQXgdU+vq3osAAAAAKAk7uekTgCGmrLAoJjv3PudlgDc9XRX1WMBAAAAACVxPyd1AjDUlAUGxSy5Z4kADAAAAAAdzP2c1AnAUFMWGBSzxwD8lAAMAAAAAJ3C/ZzUCcBQUxYYFHP53Ze3BOCHnnqo6rEAAAAAgJK4n5M6ARhqygKDYgRgAAAAAOhs7uekTgCGmrLAoJjFdy9uCcAPPvVg1WMBAAAAACVxPyd1AjDUlAUGxSy6e1FLAF67ZW3VYwEAAAAAJXE/J3UCMNSUBQbFLFyzUAAGAAAAgA7mfk7qBGCoKQsMilmwZkFLAP79lt9XPRYAAAAAUBL3c1InAENNWWBQzJ4C8ANbHqh6LAAAAACgJO7npE4AhpqywKAYARgAAAAAOpv7OakTgKGmLDAoZv7q+a0BeLMADAAAAACdwv2c1AnAUFMWGBQzb/U8ARgAAAAAOpj7OakTgKGmLDAo5rJVl7UE4Ps331/1WAAAAABASdzPSZ0ADDVlgUExewrAv3vyd1WPBQAAAACUxP2c1AnAUFMWGBTTWNUQgAEAAACgg7mfkzoBGGrKAoNi9hSA73vyvqrHAgAAAABK4n5O6gRgqCkLDIq59K5LWwLwvU/eW/VYAAAAAEBJ3M9JnQAMNWWBQTGX3HWJAAwAAAAAHcz9nNQJwFBTFhgUs6cAfM8T91Q9FgAAAABQEvdzUicAQ01ZYFDMxXddLAADAAAAQAdzPyd1AjDUlAUGxVz024sEYAAAAADoYO7npE4AhpqywKCYub+d2xKA737i7qrHAgAAAABK4n5O6gRgqCkLDIoRgAEAAACgs7mfkzoBGGrKAoNi9hSA1zy+puqxAAAAAICSuJ+TOgEYasoCg2Iu/M2FLQF49eOrqx4LAAAAACiJ+zmpE4ChpiwwKGbOb+YIwAAAAADQwdzPSZ0ADDVlgUExF9x5QUsAXvW4/x8BAAAAQKdwPyd1AjDUlAUGxcy+c3ZrAH7M/48AAAAAoFO4n5M6ARhqygKDYgRgAAAAAOhs7uekTgCGmrLAoJjz7zy/JQDf9dhdVY8FAAAAAJTE/ZzUCcBQUxYYFHP+Ha0B+Lebflv1WAAAAABASdzPSZ0ADDVlgUEx591xngAMAAAAAB3M/ZzUCcBQUxYYFHPuHee2BODfbPpN1WMBAAAAACVxPyd1AjBJ2bp1a5x55pkxevToGDx4cGRZFpdeemnLeyeffHJkWdby9frXv77l3e7u7pgxY0YcfPDB0b9//xgxYkQsWrRoj3//mjVrYvTo0TFo0KAYPHhwjBs3LjZt2lTo32KBQTHn/PqclgB856Y7qx4LAAAAACiJ+zmpE4BJytq1ayPLsnjNa14TRx999J8NwP3794/58+f3+brqqqta3p08eXJkWRannnpqXHjhhTFmzJjIsiwWL17c571169bFfvvtF0OHDo2ZM2fGtGnTYvDgwXH44YfHzp072/63WGBQjAAMAAAAAJ3N/ZzUCcAkZceOHbFhw4aIiLj11lv/bAAeNGjQ//h569evj379+sXEiRObz3p6emLkyJFx0EEHxa5du5rPJ0yYEAMGDIiHHnqo+ez666+PLMtizpw5bf9bLDAoZtavZ7UE4DsevaPqsQAAAACAkrifkzoBmGS9lAC8a9eueOqpp170M84777zIsixWr17d5/miRYsiy7JYsWJF89kBBxwQY8eObfmMYcOGxTHHHNP2/BYYFDPz9pkCMAAAAAB0MPdzUicAk6z/KQC/7GUvi4EDB0aWZTF48OD49Kc/HVu3bu3z3imnnBKDBg2Knp6ePs/vv//+yLIsZs2aFRF/+E7hLMtixowZLX/XuHHjYp999ml7fgsMipl5+7cFYAAAAADoYO7npE4AJll/LgBPnjw5Pve5z8WSJUti8eLFcfLJJ0eWZfHud787nn/++eZ7Y8aMiUMOOaTlz2/bti2yLIvJkyf3+bvmzZvX8u7pp58eWZbFjh07XnTWRx99NFatWtXna+nSpRYYFPDt277ZEoB//eivqx4LAAAAACiJAEzqBGCS9ecC8J5MmzYtsiyLxYsXN5+NGjUqDjvssJZ3u7u7I8uymDRpUkRELF++PLIsiyVLlrS8e8YZZ0SWZbF58+YX/bunTJkSWZbt8csCg/Z869azBWAAAAAA6GACMKkTgElWuwH42Wefjb/4i7+IT33qU81nvgMY6uebt3yjJQDfvvH2qscCAAAAAEoiAJM6AZhktRuAIyL233//+OAHP9j8/SmnnBIDBw70M4ChRs7+1ddaAvBtG2+reiwAAAAAoCTu56ROACZZ7Qbgp59+Ol72spfF+PHjm8/OPffcyLIsVq9e3efdhQsXRpZlsXz58uaz/fffP8aOHdvyucOGDYtRo0a1Pb8FBsV8/eYZAjAAAAAAdDD3c1InAJOsFwvA27dvj6effrrl/T/9p5qvuOKK5rN169ZFv379YuLEic1nPT09MXLkyDjwwANj165dzeennXZaDBgwILq6uprPli1bFlmWxezZs9ue3wKDYr5201daAvCtG26teiwAAAAAoCTu56ROACY555xzTkydOjUmTJgQWZbFiSeeGFOnTo2pU6fGli1bYu3atbH33nvHhAkTYubMmTFz5sw47rjjIsuyeO973xvd3d19Pu9PYXj8+PExd+7cGDNmTGRZFgsXLuzzXldXV+y7774xdOjQmDVrVkyfPj0GDx4cI0aM+LM///fFWGBQzIw9BOBbNtxS9VgAAAAAQEncz0mdAExyhgwZElmW7fFr7dq1sXnz5hg3blwceuihMXDgwOjfv38MHz48pk+fHs8991zL53V3d8f06dNjyJAhsddee8Xw4cNjwYIFe/y7V61aFccee2wMHDgw9t577zjppJNi48aNhf4dFhgU89UbpwnAAAAAANDB3M9JnQAMNWWBQTFfWfllARgAAAAAOpj7OakTgKGmLDAoZvovv9QSgH/1yK+qHgsAAAAAKIn7OakTgKGmLDAo5ssrvigAAwAAAEAHcz8ndQIw1JQFBsVMXXFWSwC++ZGbqx4LAAAAACiJ+zmpE4ChpiwwKOZLy6cIwAAAAADQwdzPSZ0ADDVlgUExX/zFmS0B+KZHbqp6LAAAAACgJO7npE4AhpqywKCYs274QksAvvHhG6seCwAAAAAoifs5qROAoaYsMChmys8/LwADAAAAQAdzPyd1AjDUlAUGxewpAK98eGXVYwEAAAAAJXE/J3UCMNSUBQbFnPGzya0BeL0ADAAAAACdwv2c1AnAUFMWGBTzhZ9+TgAGAAAAgA7mfk7qBGCoKQsMivnvZf/ZEoB/uf6XVY8FAAAAAJTE/ZzUCcBQUxYYFPP5Zae3BOAV61dUPRYAAAAAUBL3c1InAENNWWBQzOev/w8BGAAAAAA6mPs5qROAoaYsMChm8nX/3hKAl69bXvVYAAAAAEBJ3M9JnQAMNWWBQTH/+ZN/FYABAAAAoIO5n5M6ARhqygKDYv7jx/+3JQD/Yt0vqh4LAAAAACiJ+zmpE4ChpiwwKObfrp0oAAMAAABAB3M/J3UCMNSUBQbF/OuPPi0AAwAAAEAHcz8ndQIw1JQFBsVMuua0lgB8Q9cNVY8FAAAAAJTE/ZzUCcBQUxYYFPMvV5/aEoB/3vXzqscCAAAAAErifk7qBGCoKQsMivn0Dz8lAAMAAABAB3M/J3UCMNSUBQbFnHbVJ1sC8M8e+lnVYwEAAAAAJXE/J3UCMNSUBQbFjL/y5JYA/NOHflr1WAAAAABASdzPSZ0ADDVlgUExp175jwIwAAAAAHQw93NSJwBDTVlgUMynlo5rCcDLHlpW9VgAAAAAQEncz0mdAAw1ZYFBMf/nBx+PvJHH4ZcO3x2AHxSAAQAAAKBTuJ+TOgEYasoCg2JOvuKjkTfyeLMADAAAAAAdyf2c1AnAUFMWGBTzj1d8JPJGHm+55I3NAHz9g9dXPRYAAAAAUBL3c1InAENNWWBQzEnf/3DkjTzeJgADAAAAQEdyPyd1AjDUlAUGxXzseydG3sjjHb0C8HUPXlf1WAAAAABASdzPSZ0ADDVlgUExH/3uByNv5PGuiw9rBuCfrP1J1WMBAAAAACVxPyd1AjDUlAUGxXzkux+IvJHHSAEYAAAAADqS+zmpE4ChpiwwKObD3zkh8kYeR120OwD/eO2Pqx4LAAAAACiJ+zmpE4ChpiwwKOZDS94XeSOPURe9oRmAr117bdVjAQAAAAAlcT8ndQIw1JQFBsV8cMmYyBt5/K0ADAAAAAAdyf2c1AnAUFMWGBTz/sv/PvJGHqPn9grAvxeAAQAAAKBTuJ+TOgEYasoCg2JOWDw68kYefz/39c0A/KMHrql6LAAAAACgJO7npE4AhpqywKCY9y0+NvJGHu+7sFcAvv/qqscCAAAAAErifk7qBGCoKQsMijlu0d9G3sjjhF4B+OrfXVX1WAAAAABASdzPSZ0ADDVlgUEx7110TOSNPD5w4bBmAP7hfVdWPRYAAAAAUBL3c1InAENNWWBQzOiFfxN5I48T5+wOwFfdt7TqsQAAAACAkrifkzoBGGrKAoNi/m7h0ZE38hjbKwBfee8VVY8FAAAAAJTE/ZzUCcBQUxYYFPO3C46KvJHHR+e8rhmAl94jAAMAAABAp3A/J3UCMNSUBQbFjFowMvJGHh+/YHcA/sHd36t6LAAAAACgJO7npE4AhpqywKCYo+f/deSNPP7xgkObAfj7a75T9VgAAAAAQEncz0mdAAw1ZYFBMUfNf1fkjTxOnt07AC+peiwAAAAAoCTu56ROAIaassCgmPfMf2fkjTz+qVcA/t7qy6seCwAAAAAoifs5qROAoaYsMCjmr+e9I/JGHp/qFYC/s2px1WMBAAAAACVxPyd1AjDUlAUGxbxr3l9F3shj/PlDdwfguxZWPRYAAAAAUBL3c1InAENNWWBQzDvnvS3yRh6n9QrAl/92QdVjAQAAAAAlcT8ndQIw1JQFBsW847K3Rt7IY2KvALz4N/OrHgsAAAAAKIn7OakTgKGmLDAo5u2XvSXyRh6fOe+QZgBedOe8qscCAAAAAErifk7qBGCoKQsMinnrZUdG3sjjX3sF4IV3Xlb1WAAAAABASdzPSZ0ADDVlgUExb7nszZE38vj3c1+7OwDf0ah6LAAAAACgJO7npE4AhpqywKCYNzeOiLyRx+m9AvCCX19a9VgAAAAAQEncz0mdAAw1ZYFBMUc0Do+8kcfnegXg+bdfXPVYAAAAAEBJ3M9JnQAMNWWBQTGHN94UeSOPz59zcDMAz7v9oqrHAgAAAABK4n5O6gRgqCkLDIoZ8cfo+4VeAfiy2+ZWPRYAAAAAUBL3c1InAENNWWDQvp6enmb0ndIrAF9665yqRwMAAAAASuJ+TuoEYKgpCwza193T3Yy+X5w1pFcAvqDq0QAAAACAkrifkzoBGGrKAoP2Pdf9XDP6Tu0VgC/5lQAMAAAAAJ3C/ZzUCcBQUxYYtG/nrp3N6Dt95u4AfPHN51c9GgAAAABQEvdzUicAQ01ZYNC+7c9vb0bfr858TfPXF918XtWjAQAAAAAlcT8ndQIw1JQFBu3b9ty2ZvT9eq8APPemc6seDQAAAAAoifs5qROAoaYsMGjf1p1bm9H37G/vDsBzbppV9WgAAAAAQEncz0mdAAw1ZYFB+57a+VQz+n7726/eHYBvnFn1aAAAAABASdzPSZ0ADDVlgUH7Nm/f3Iy+M3sF4AtWfrvq0QAAAACAkrifkzoBGGrKAoP2PbH9iWb0PfdbvQPwt6oeDQAAAAAoifs5qROAoaYsMGjfY88+1oy+53/roN2/XvHNqkcDAAAAAErifk7qBGCoKQsM2rdp26bdP/f3m70D8NlVjwYAAAAAlMT9nNQJwFBTFhi0b8MzG5rRd27vALz8G1WPBgAAAACUxP2c1AnAUFMWGLTvka2PNKPvJd88cPfPA17+tapHAwAAAABK4n5O6gRgqCkLDNq3fuv6ZvRtnL07AJ9zw4yqRwMAAAAASuJ+TuoEYKgpCwza1/VUVzP6zu8TgL9a9WgAAAAAQEncz0mdAAw1ZYFB+x586sFm9F34jf/d/PWsG75S9WgAAAAAQEncz0mdAAw1ZYFB+36/5ffN6Ht5rwD87Z9Pr3o0AAAAAKAk7uekTgCGmrLAoH33b76/GX2/843/tTsA/2xa1aMBAAAAACVxPyd1AjBJ2bp1a5x55pkxevToGDx4cGRZFpdeeuke312zZk2MHj06Bg0aFIMHD45x48bFpk2bWt7r7u6OGTNmxMEHHxz9+/ePESNGxKJFi/6/PvOlsMCgffc9eV8z+n7/670D8JerHg0AAAAAKIn7OakTgEnK2rVrI8uyeM1rXhNHH330iwbgdevWxX777RdDhw6NmTNnxrRp02Lw4MFx+OGHx86dO/u8O3ny5MiyLE499dS48MILY8yYMZFlWSxevLjwZ74UFhi0754n7mlG3x/0CsDf/OmXqh4NAAAAACiJ+zmpE4BJyo4dO2LDhg0REXHrrbe+aACeMGFCDBgwIB566KHms+uvvz6yLIs5c+Y0n61fvz769esXEydObD7r6emJkSNHxkEHHRS7du1q+zNfKgsM2rfm8TXN6HvV118lAAMAAABAB3I/J3UCMMn6cwH4gAMOiLFjx7Y8HzZsWBxzzDHN35933nmRZVmsXr26z3uLFi2KLMtixYoVbX/mS2WBQftWPb6qGX2v/truAHz2si9WPRoAAAAAUBL3c1InAJOsFwvA69evjyzLYsaMGS1/Zty4cbHPPvs0f3/KKafEoEGDoqenp897999/f2RZFrNmzWr7M18qCwzad9djdzWj77W9A/D1Z1U9GgAAAABQEvdzUicAk6wXC8B/ej5v3ryWP3P66adHlmWxY8eOiIgYM2ZMHHLIIS3vbdu2LbIsi8mTJ7f9mXvy6KOPxqpVq/p8LV261AKDNt256c5m9P3xjFc2f/3166dUPRoAAAAAUBIBmNQJwCTrxQLw8uXLI8uyWLJkScufOeOMMyLLsti8eXNERIwaNSoOO+ywlve6u7sjy7KYNGlS25+5J1OmTIksy/b4ZYHBS3fHo3c0o++y3gH4ujOrHg0AAAAAKIkATOoEYJLlO4AhPbdvvL0ZfX/WKwB/7bozqh4NAAAAACiJAEzqBGCSVdbPAB44cKCfAQw1ccuGW5rR94avHtD89YyffKHq0QAAAACAkrifkzoBmGS9WACOiNh///1j7NixLc+HDRsWo0aNav7+3HPPjSzLYvXq1X3eW7hwYWRZFsuXL2/7M18qCwza96tHftWMvit6BeCv/vi/qx4NAAAAACiJ+zmpE4BJ1p8LwKeddloMGDAgurq6ms+WLVsWWZbF7Nmzm8/WrVsX/fr1i4kTJzaf9fT0xMiRI+PAAw+MXbt2tf2ZL5UFBu276ZGbmtF35VcEYAAAAADoRO7npE4AJjnnnHNOTJ06NSZMmBBZlsWJJ54YU6dOjalTp8aWLVsiIqKrqyv23XffGDp0aMyaNSumT58egwcPjhEjRrT8rN4//Qzf8ePHx9y5c2PMmDGRZVksXLiwz3vtfOZLYYFB+1Y+vLIZfW/6yv7NX3/l2v+qejQAAAAAoCTu56ROACY5Q4YMiSzL9vi1du3a5nurVq2KY489NgYOHBh77713nHTSSbFx48aWz+vu7o7p06fHkCFDYq+99orhw4fHggUL9vh3v9TPfCksMGjfivUrmtH3ll4BePqPJlc9GgAAAABQEvdzUicAQ01ZYNC+X6z7RTP63j69dwD+XNWjAQAAAAAlcT8ndQIw1JQFBu27oeuGZvS9Y/p+zV9P+9F/Vj0aAAAAAFAS93NSJwBDTVlg0L6fPvTTZvT9Te8AfI0ADAAAAACdwv2c1AnAUFMWGLRv2YPLmtF31bTdAfjL15xe9WgAAAAAQEncz0mdAAw1ZYFB+6578Lpm9F0zbd/mr6de/dmqRwMAAAAASuJ+TuoEYKgpCwzad+3aa5vR954v7w7AX7r636seDQAAAAAoifs5qROAoaYsMGjfj37/o2b0/V3vAPzDf6t6NAAAAACgJO7npE4AhpqywKB9Vz9wdTP6PvDlfZq/Puuqf616NAAAAACgJO7npE4AhpqywKB9V91/VTP6PjhVAAYAAACATuR+TuoEYKgpCwzat/R3S5vRt2vq4Oavp1w5qerRAAAAAICSuJ+TOgEYasoCg/Zdcd8Vzej7cK8AfOaVn6l6NAAAAACgJO7npE4AhpqywKB937v3e83ou+FLvb4DeKkADAAAAACdwv2c1AnAUFMWGLTvO/d+pxl9N/YKwGcu/ZeqRwMAAAAASuJ+TuoEYKgpCwzat+SeJc3o+9iX9o4Rlw6PvJHHGUsnVj0aAAAAAFAS93NSJwBDTVlg0L5Fdy9qBuDHv7h3vOmPAfgLSz9d9WgAAAAAQEncz0mdAAw1ZYFB+xasWdAMwE/2DsBXTKh6NAAAAACgJO7npE4AhpqywKB981fPbwbgLV/8yzj8jwH4vwVgAAAAAOgY7uekTgCGmrLAoH2XrbqsGYCfPqt3AD6t6tEAAAAAgJK4n5M6ARhqygKD9l1616XNAPzMWX8ZR/wxAP/XFf9c9WgAAAAAQEncz0mdAAw1ZYFB+y6+6+JmAH62VwD+/PfHVz0aAAAAAFAS93NSJwBDTVlg0L65v53bDMA7znrF7u8AFoABAAAAoGO4n5M6ARhqygKD9s35zZxmAH5uyivizX8MwJO/d2rVowEAAAAAJXE/J3UCMNSUBQbtm33n7GYA3jXlFXHkJX8KwKdUPRoAAAAAUBL3c1InAENNWWDQvvPvOL8ZgHt6BeDPfe9TVY8GAAAAAJTE/ZzUCcBQUxYYtO+cX5/TDMDdZ/5lvOWSN0beyOM/v/vJqkcDAAAAAErifk7qBGCoKQsM2jfz9pmRN/I4/NLhsePMfeKtAjAAAAAAdBz3c1InAENNWWDQvm/f/u3IG3kccenw2Hbm/s0AfPp3/qnq0QAAAACAkrifkzoBGGrKAoP2nX3b2ZE38jjykuHx1Jmvirc1A/DJVY8GAAAAAJTE/ZzUCcBQUxYYtO8bt34j8kYeb7vkjfHEmQfuDsBLTq56NAAAAACgJO7npE4AhpqywKB9X7vla5E38nj7JW+MTVNe0wzA/7HkE1WPBgAAAACUxP2c1AnAUFMWGLTvq7/6auSNPN5xyRvjkSmHxNsFYAAAAADoOO7npE4AhpqywKB902+eHnkjj3de/MbomjKsGYA/e/m4qkcDAAAAAErifk7qBGCoKQsM2vflm74ceSOPv774sHjwrMPir/4YgP9dAAYAAACAjuF+TuoEYKgpCwza96UbvxR5I4/3XHxYPHBWHu+6+LDIG3lMuvzjVY8GAAAAAJTE/ZzUCcBQUxYYtO+sG8+KvJHHURcdFvd98Yg46qI/BOB/WfyRqkcDAAAAAErifk7qBGCoKQsM2jdl5ZTIG3mMuugNcc+X3hLHXPSGyBt5TFj04apHAwAAAABK4n5O6gRgqCkLDNp3xi/PiLyRxzEXvSFWT/2rGD33DwH41EUnVj0aAAAAAFAS93NSJwBDTVlg0L7Pr/h85I08/u6iN8RdX353vO/C10feyOOfFr6/6tEAAAAAgJK4n5M6ARhqygKD9v3X8v+KvJHH6LlviN9Me0984MJhkTfy+MSC91U9GgAAAABQEvdzUicAQ01ZYNC+zy3/XOSNPP5+7uvjjumjYuycPwTgkxYcV/VoAAAAAEBJ3M9JnQAMNWWBQftOv+H0yBt5jJn7+rj9K8fGxy94XeSNPD46/71VjwYAAAAAlMT9nNQJwFBTFhi077M3fDbyRh7HX/j6uG3GcfGJCw6NvJHHh+f/XdWjAQAAAAAlcT8ndQIw1JQFBu37t5//W+SNPN5/4bC45WsnxCdn/yEAf3DeMVWPBgAAAACUxP2c1AnAUFMWGLRv0s8mRd7I4wMXDotffePEGH/+0MgbeZww72+qHg0AAAAAKIn7OakTgKGmLDBo32d++pnIG3l8aM6wuPnssTHxjwH4uHnvqXo0AAAAAKAk7uekTgCGmrLAoH3/smxi5I08xs4ZFjd962Mx6bxDIm/kMfqyv656NAAAAACgJO7npE4AhpqywKB9E647LfJGHh+Z87q4ceYn4rPnvjbyRh5/e9m7qh4NAAAAACiJ+zmpE4ChpiwwaN8//+TUyBt5fOyC18XKcz4Zk/8YgI++7B1VjwYAAAAAlMT9nNQJwFBTFhi075RrPxl5I4+PX/C6WHnu+PjCOQdH3shj5GVvr3o0AAAAAKAk7uekTgCGmrLAoH3/dM3JkTfyGHfB6+KXsyfGWbOGRN7I412Nt1Y9GgAAAABQEvdzUicAQ01ZYNC+T1w9LvJGHp+44ND45ZxJMW3mHwIyEMhGAAAgAElEQVTw2xtHVj0aAAAAAFAS93NSJwBDTVlg0L5xV30s8kYe/2f2ofHLuZ+NGTNfE3kjj7c0jqh6NAAAAACgJO7npE4AhpqywKB9H1v6kcgbeXxy9qGx4uLJcfa3/xCAj2i8qerRAAAAAICSuJ+TOgEYasoCg/b9ww8+HHkjj0/NPjR+2fhCzPrWqyNv5DGiMaLq0QAAAACAkrifkzoBGGrKAoP2jb3ig5E38hh//tBYOf+sOP9bB0XeyCNv5LGre1fV4wEAAAAAJXA/J3UCMNSUBQbt+9D33x95I49/Pn9orFw4LeZ+c3cA3rFrR9XjAQAAAAAlcD8ndQIw1JQFBu374HePj7yRx4Tzh8bKy78Wl559YDMAP/PcM1WPBwAAAACUwP2c1AnAUFMWGLTv/d85LvJGHv9y3iFx43e/GQvO/t/NALx5++aqxwMAAAAASuB+TuoEYKgpCwzad/yS90beyOMz5x0SN33/nLj8G7sD8GPPPlb1eAAAAABACdzPSZ0ADDVlgUH7xlx+bOSNPCadd0jcfOUF8b2v/69mAN7wzIaqxwMAAAAASuB+TuoEYKgpCwza9/eL/zbyRh7/dt4hccvVF8WVvQJw11NdVY8HAAAAAJTA/ZzUCcBQUxYYtG/0olGRN/L47LmvjVuvnRfXfO1VzQD8wJYHqh4PAAAAACiB+zmpE4ChpiwwaN/fLTw68kYep5/72rjtusXxkxmvbAbge5+8t+rxAAAAAIASuJ+TOgEYasoCg/Yds/A9kTfy+Ny5r41f//S78bNeAXjV4/6/BAAAAACdwP2c1AnAUFMWGLRv1IKRkTfy+K9zXht3/uLKWP7VA5oB+M5Nd1Y9HgAAAABQAvdzUicAQ01ZYNC+o+e/O/JGHp8/5+D47cofxY1f2b8ZgG/beFvV4wEAAAAAJXA/J3UCMNSUBQbte8/8d0beyOML5xwcq26+Lm7tFYBveuSmqscDAAAAAErgfk7qBGCoKQsM2jdy3jsib+Qx5ZyDY81tN8Qd0/drBuAV61dUPR4AAAAAUAL3c1InAENNWWDQvnfPe3vkjTzOmjUk7r1zZayatjsA/7zr51WPBwAAAACUwP2c1AnA/D/27jsqqjPvAzjnxPfd7Hv2jEmMqyaxxF4uVSzYxW4SY0zMmo3JmrhZs4npaooJIyqKIgIidQpjwxZRsStWBBREUFERQQQUBJQOQ5v5vn+MXhwHFRS5mcz3c849i7fN797nzjzZ53vvDJkpdmBEjTdgTV8IGgGLV3XE1QunkezWSgyAD10/JHV5RERERERERERE1AQ4fk6WjgEwkZliB0bUeA4aOwgaASu8O+BaciLSFr8kBsB7r+2VujwiIiIiIiIiIiJqAhw/J0vHAJjITLEDI2ocvV4vhr2+Xu2RkXoRGYvqAuDw1HCpSyQiIiIiIiIiIqImwPFzsnQMgInMFDswosaprK0Uw17FytdwIz0FNxe9KM4LSwmTukQiIiIiIiIiIiJqAhw/J0vHAJjITLEDI2qcosoiMexd6/kqcm6kI2/hC+K8zcmbpS6RiIiIiIiIiIiImgDHz8nSMQAmMlPswIgaJ7c8ty7sXfEK8nIycXtB3RPA6y+tl7pEIiIiIiIiIiIiagIcPydLxwCYyEyxAyNqnMziTDHs3enRDrfzclAor3sCWJOkkbpEIiIiIiIiIiIiagIcPydLxwCYyEyxAyNqnJSCFDHs3be8LQoLbqP0vgBYcV4hdYlERERERERERETUBDh+TpaOATCRmWIHRtQ4F/IviGHvUfc2KCkpQoVL3VdAByQGSF0iERERERERERERNQGOn5OlYwBMVI+jR4/Cysqq3ikmJsZo3aioKAwePBh//etf0aZNG3z11VcoLS012WdlZSXmzZuHdu3a4fnnn0f//v1x8ODBJ66RHRhR48TlxIlhb/TS1igvL0PlfQGw71lfqUskIiIiIiIiIiKiJsDxc7J0DICJ6nEvAP7666+xbt06oyk/P19cLyEhAc8//zzs7e0REBCA+fPn4y9/+QvGjx9vss9p06ahRYsWmDNnDoKCguDk5IQWLVogMjLyiWpkB0bUOFE3osSw9+ySl1FZVYVKl1awD+kDQSNg5ZmVUpdIRERERERERERETYDj52TpGAAT1eNeALx169ZHrjdhwgS0a9cOxcXF4jyFQgErKyscOHBAnHf69GlYWVnBw8NDnKfVatGlSxc4OTk9UY3swBqnqKIaUwOjMW/rOalLIYkczjgsBsAX3VqhtlYHrUsr9FP3hqARsDx2udQlEhERERERERERURPg+DlZOgbARPW4PwAuKSlBTU2NyTrFxcVo0aIF5s6dazS/qqoKf/vb3zBz5kxx3ty5c/Hcc88ZBcUAsGTJElhZWSEzM7PRNbIDa5xfws6j44+70fHH3bhwo0jqckgCe6/tFQPgK4tehl6vR4XLy3BSGQLgJaeWSF0iERERERERERERNQGOn5OlYwBMVI97AfDf/vY3WFlZ4bnnnsOIESMQFxcnrnPy5ElYWVlh8+bNJtsPGTIEDg4O4r9Hjx6NXr16mawXEREBKysrhIeHN7pGdmCNMzUwWgyAo1LzH78B/emEpYSJAfC1hX8HAJS7tMYwVS8IGgGu0a4SV0hERERERERERERNgePnZOkYABPVIyoqCu+++y5UKhV27tyJpUuXolWrVnj++edx9uxZAMDWrVthZWWFEydOmGw/depUtG3bVvx3nz594OzsbLLexYsXYWVlhcDAwEfWk5ubi6SkJKNpx44d7MAa4b2AKDEAjkm7LXU5JIGNlzeKAXCGaxsAQJlLazgre0LQCPjt5G8SV0hERERERERERERNgQEwWToGwEQNdPXqVfz1r3/FuHHjAABr166FlZUVTp8+bbLuRx99hJYtW4r/7ty5MyZMmGCyXlpaGqysrODl5fXI15bL5bCysqp3YgfWMFP86wLg2PQ7UpdDEtAkacQAOEduuEGjzOXvGKcwBMA/n/hZ4gqJiIiIiIiIiIioKTAAJkvHAJioEaZNm4b//d//RW1tLZ8ANjOT/U6KAfCZ6wVSl0MSCEwMFAPgPJdXAAClLm3whqIHBI2AucfmPmYPREREREREREREZA4YAJOlYwBM1Ahz586FlZUViouL+RvAZmaSb6QYAMfxCWCL5BPvA0EjwCakD/Ll7QEABS6vYnJwdwgaAd8e+VbiComIiIiIiIiIiKgpcPycLB0DYKJGePfdd/H8889Dp9OhqKgILVq0wNy5xk8NVlVV4W9/+xs+/fRTcd6cOXPw3HPPobi42GhdNzc3WFlZITMzs9G1sANrnDdWneBvAFu45bHLIWgE9FP3Rp68IwDglrwT3gsyBMCzI2ZLWyARERERERERERE1CY6fk6VjAExUj7y8PJN5iYmJ+J//+R9MmjRJnDd+/Hi0a9cOJSUl4jylUgkrKyvs27dPnHfq1ClYWVnBw8NDnFdZWYmuXbtiwIABT1QjO7DGmeBdFwBHpuRLXQ5JYFHMIggaAUNVvZAj7wwAyJJ3x7SgbhA0AmYdmiVxhURERERERERERNQUOH5Olo4BMFE9Ro4ciYkTJ2Lx4sUIDg7Gt99+i//7v/9Dy5YtcenSJXG9+Ph4/OUvf4G9vT0CAgIwf/58PP/88xg7dqzJPqdOnSo+MRwUFIRBgwahRYsWOH78+BPVyA6sccZ5HRcD4CPJuVKXQxKYHzkfgkbAaGVP3JB3AwCkuVrjo8CuEDQCZu6fKXGFRERERERERERE1BQ4fk6WjgEwUT18fHzQv39/vPTSS2jRogXatWuH6dOn4+rVqybrRkZGYtCgQXj++efRunVrfPnll0ZPBN+j1WoxZ84ctG3bFn/5y1/Qr18/7N+//4lrZAfWOGNWHhMD4IMXb0ldDklgzrE5EDQC3gzugcwFPQAAVxY64JMAQwD88d6PJa6QiIiIiIiIiIiImgLHz8nSMQAmMlPswBpnlGddALz3fLbU5ZAEZh+eDUEj4N2g7ri+oDcAIGmxEz4L6AJBI+Cfe/4pcYVERERERERERETUFDh+TpaOATCRmWIH1jgjPY6KAXB44k2pyyEJfHbgM0PQG9gNaa7WAIBEtxH4wt8QAE8NnypxhURERERERERERNQUOH5Olo4BMJGZYgfWOMOXHxED4LCzWVKXQxL4eO/HEDQCPg3oilRXWwBAvPs4fO3XGYJGwDs735G4QiIiIiIiIiIiImoKHD8nS8cAmMhMsQNrnKHL6gLgzXGZUpdDEnh/1/sQNAI+9++ClIUOAIDY5ZPw/erXIWgEvLX9LYkrJCIiIiIiIiIioqbA8XOydAyAicwUO7DGGbT0sBgAbziVIXU5JIHJOyZD0Aj41q8zkhf1AwCc8pyKeXcD4PG/j5e4QiIiIiIiIiIiImoKHD8nS8cAmMhMsQNrHKclEWIAvDY6XepySALjfx8PQSPgx9Wv49KiAQCAaO/p+NW3EwSNAOctzhJXSERERERERERERE2B4+dk6RgAE5kpdmCN09/tkBgAqyKvSV0OSWDk5pEQNALkvp2QtHgQACDKdybcfTpA0AgYuGGgxBUSERERERERERFRU+D4OVk6BsBEZoodWOM4Lq4LgIOOp0pdDknAKdQJgkbAEp+OOO82DABwMuBLrPJqD0EjwFpjDZ1eJ3GVRERERERERERE9LQ4fk6WjgEwkZliB9Y4DgsPigHw6iNXpS6HJOCw1gGCRoCndwecWzICAHBS8QPUK1+FoBEgaASUVZdJXCURERERERERERE9LY6fk6VjAExkptiBNY6d6wExAPaJSJG6HGpmOr1ODHn9vNojcekoAMBJzXxsXvGKuCy3PFfiSomIiIiIiIiIiOhpcfycLB0DYCIzxQ6scQT5fjEA9jyQLHU51MwqairEkFe58lWcdR8LAIhavwh7lrcVl6UVpUlcKRERERERERERET0tjp+TpWMATGSm2IE1Tvf5e8UA2H3fZanLoWZWqC0UQ971nq8gftkEAEDMZg8cc/+7uOx83nmJKyUiIiIiIiIiIqKnxfFzsnQMgInMFDuwhtPr9ej000508/gWXdwWYvHui1KXRM3sVtktMeTdsqIdzix/EwBwKmw14pa2FpfFZMdIXCkRERERERERERE9LY6fk6VjAExkptiBNVxVjQ5d3X8SQ745YUekLomaWUZxhtj+4R5tEecxGQAQu1uJy26txGUR1yMkrpSIiIiIiIiIiIieFsfPydIxACYyU+zAGq60sgY9/d4SQ75ZWzdKXRI1sysFV8T2P7CsDWI93wUAnDkQisxFL4rLdlzdIXGlRERERERERERE9LQ4fk6WjgEwkZliB9Zwd8qq0NP/TTHk+/dmBsCW5nzeebH9j7v/HadXvg8ASDwWhjuuL4jLNlzaIHGlRERERERERERE9LQ4fk6WjgEwkZliB9ZwOUVa9PR/Qwz5Ptm4SeqSqJnFZMeI7R+7tDVOeX0AALgQvR9Vcpm4LPhcsMSVEhERERERERER0dPi+DlZOgbARGaKHVjDZdwuRy//iWLI9/EGPgFsafan7xfb/8riVjjlMx0AcDn+OCCXwT6kDwSNgJVnVkpcKRERERERERERET0tjp+TpWMATGSm2IE1XMqtEvQKmCAGgP9ct07qkqiZbU7eLLb/rYUvInL1fwAAqUmxgFyGIapeEDQCFsUskrhSIiIiIiIiIiIielocPydLxwCYyEyxA2u4CzeK0CtgvBgAvr9GLXVJ1MwU5xVi+2sXtMTx4B8AABlXkwC5DOMUPSFoBPx04ieJKyUiIiIiIiIiIqKnxfFzsnQMgInMFDuwhovPKECvgHFiAPiOJkjqkqiZrYhbAUEjoK+6NyCX4cRaVwBATtY1QC7Du0HdIWgEzD48W+JKiYiIiIiIiIiI6Glx/JwsHQNgIjPFDqzhYtJuo1fgWDEAfku1WuqSqJn9dvI3CBoBzsqegFyGk1sMv/V7J/8WIJfh48CuEDQCPtn/icSVEhERERERERER0dPi+DlZOgbARGaKHVjDHb+Sh16BY8QAeKLSS+qSqJl9c+QbCBoBk4O7A3IZYsKVAICy0hJALsN//bsYvh581/sSV0pERERERERERERPi+PnZOkYABOZKXZgDXfw4i30ChwtBsBjFMulLoma2Yx9MyBoBPwroCsglyEuYisAoKamFpDLMHf16xA0At4Ie0PiSomIiIiIiIiIiOhpcfycLB0DYCIzxQ6s4Xafy0avwFFiAOwcvETqkqiZvbPzHQgaAV/7dQbkMpyLPiguq3RphQWrOkLQCBi+abh0RRIREREREREREVGT4Pg5WToGwERmih1Yw4WdzUKvIGcxAB4e6Cp1SdTMnLcY2v83306AXIbk86fFZcUubbHCuwMEjQDHdY4SVklERERERERERERNgePnZOkYABOZKXZgDbcpNgO9gkaKAfDggF+lLomameM6RwgaASu8OwByGTLSU8Rl+fIO8Pd6Tbw+anQ1ElZKRERERERERERET4vj52TpGAATmSl2YA23NjodvYNGiAGfk/9PUpdEzUhboxXbXrHyNUAuQ35+vrj85oKuWOv5qrhOUWWRhNUSERERERERERHR0+L4OVk6BsBEZoodWMMpTqShd/BQMeDr7/+D1CVRM8otzxXbfvOKVwC5DNqqanF5+oLeCPNoJ65zs/SmhNUSERERERERERHR0+L4OVk6BsBEZoodWMOtPnIVvZVOYsDX1+8bqUuiZpRSkCK2/f5lbVDq0gZ6vV5cfnWhPQ4sayOuc6XgioTVEhERERERERER0dPi+DlZOgbARGaKHVjDrTx4BX1UjmLAZ7/6C6lLomYUlxMntn3M0ta4Je9ktPzSogE4tbS1uE5sTqxElRIREREREREREVFT4Pg5WToGwERmih1Yw7nvu4w+ajsx4LNdPUvqkqgZRWREiG1/ya0Vri3obbT8gtswpC5+SVxnT9oeiSolIiIiIiIiIiKipsDxc7J0DICJzBQ7sIZzDb8ghnuCRoD16k+lLomaUVhKmNj2Nxa9iEsL+xktT1g6GkWuL4jrrElaI1GlRERERERERERE1BQ4fk6WjgEwkZliB9ZwP4fFGwXAwuqPpS6JmlHIhRCx7UsXtESC2wij5WeWvwG9XAa7EMM6nmc8JaqUiIiIiIiIiIiImgLHz8nSMQAmMlPswBrumy0njQLg3r7/lLokakbe8d4QNAJsQvpAL5chdtmbRsvjPKcAchlGKvtA0Aj4JfIXiSolIiIiIiIiIiKipsDxc7J0DICJzBQ7sIb7PPSwUQDca/X7UpdEzeinEz9B0AgYoewNyGWIXjnNaHn0qhmAXIapQT0haAT85+B/JKqUiIiIiIiIiIiImgLHz8nSMQAmMlPswBpuxrq9RgFwz9VTpC6JmtFHez+CoBEwPbA7IJch0vffRsujlD8Achlm+3WGoBEwZSevDyIiIiIiIiIiInPG8XOydAyAicwUO7CGmxay3TgA9puEWp1e6rKomThvdjZ8tbNvJ0MAHPSd0fKYTcsAuQwLVnWEoBEwbNMwiSolIiIiIiIiIiKipsDxc7J0DICJzBQ7sIabFBxqHAD7vwFtda3UZVEzqKytFNvdz6u9IQDWuBitE7cnBJDLsNqrPQSNAGuNNWp0NdIUTERERERERERERE+N4+dk6RgAE5kpdmANN8Y/xCgAtg1wRmklAz5LcK3omtjuOzzaAXIZTm7yMFrnfNReQC7DphWviOvmludKVDERERERERERERE9LY6fk6VjAExkptiBNdwQnwCjANgxcCiKyqulLouaQeSNSLHd45a2BuQyxOwMNlrn2uWzgFyGiGVtxHUv3r4oUcVERERERERERET0tDh+TpaOATCRmWIH1nCOnt5GAbBD0CDkl1ZKXRY9IzllOfj2yLfYemUrNl3eJLZ7zsIXAbkMcQc3Ga1/Jy8HkMuQsORlcd3jWcclqp6IiIiIiIiIiIieFsfPydIxACYyU+zAGk5Y7m4UANsHD0ROkVbqsugZ+ebIN2Jbu582tL2txga1chkglyEx9pjR+rW1tah2eRFZi14UtwtLCZOoeiIiIiIiIiIiInpaHD8nS8cAmMhMsQNrGL1ej25LFxoHwIp+yLxTLnVp9IzYrrEV2/r9Xe9D0AgYtWYgcDcAvp6ZYbJNvrwDKha0FLcLOhckQeVERERERERERETUFDh+TpaOATCRmWIH1jDa6lp0XfqbUQBsp3RAen6Z1KXRM+IU6mTU3oJGwD/UQwC5DFqXVtBW1Zhsk+pqA8hlGKi2hqARII+SN3/hRERERERERERE1CQ4fk6WjgEwkZliB9Ywd8qq0NX9J6Mw0FZlh6u5JVKXRs/I6K2jTQLgbwIHAXIZMuTd693mvNtwQC7D5GAbCBoBM/fPbN6iiYiIiIiIiIiIqMlw/JwsHQNgIjPFDqxhMu+Uo9vyOUZhoI3aBpeyi6UujZ6RN8PeNAmAfbwdALkM5xYNrneb2BXvAHIZvlzdC4JGwNitY5u5aiIiIiIiIiIiImoqHD8nS8cAmMhMsQNrmOScEnTz+MYkEDyXWSh1afSMjNg8wqS9Dy3tCshliPZ4t95tYlb/G5DLsML7dcNNAmtsUF1b3cyVExERERERERERUVPg+DlZOgbARGaKHVjDxGcUoNuKL00CwdPpeVKXRs+AXq+H3Vo7k/bOX/ASIJfhuP+X9W4Xpf4JkMsQ5tFO3OZ68fVmrp6IiIiIiIiIiIiaAsfPydIxACYyU+zAGuZESh66r/yPSSB4IjVL6tLoGSitKjVp6xEbhwFymSEA3rC03u1itnoCchlil7YWt4u8EdnM1RMREREREREREVFT4Pg5WToGwERmih1Yw+y7kIPuXp+ahIIHL6dJXRo9A1klWSZt/Y+tb4sBcMzedfVud+bABkAuQ87CF8XtQi+HNnP1RERERERERERE1BQ4fk6WjgEwkZliB9Yw2+Kz0NNnukkoGH7hstSl0TNwIf+CSVtP3/iWGABfOFP/U72pF+MAuQw6uQz2GlsIGgHLYpchpSAFu9J2oUZX08xHQkRERERERERERE+K4+dk6RgAE5kpdmANszbmOoRVU01Cwa2J56QujZ6ByBuRJm09Z927YgB882ZmvdtpK8pR69ISkMswJqQ/BI2ALyK+wOCNg/k0MBERERERERERkZnh+DlZOgbARGaKHVjDBB5Lhe3qt0xCwfVn4qQujZ6B8NRwsY2dNjhh4raJOB7wMSCXocLlZVTX1D502xsLugFyGaYH9RO3v/+aISIiIiIiIiIiIvPA8XOydAyAicwUO7CG8Tx4BfYBo0wCYNXpKKlLo2dg3cV1YhsXaAug1+txdclAQC7DRVfHR26buHQUIJfh51WCyfXCAJiIiIiIiIiIiMh8cPycLB0DYCIzxQ6sYRbuugj7IMPX+NqH9BHDPL+oo1KXRs/AqrOrIGgEWGusUaurBWproJW/DMhlOO718SO3jfH7DJDLoFnRvt4AuFb38KeHiYiIiIiIiIiI6I+D4+dk6RgAE5kpdmAN89O2c7BTOkLQCBit7CmGeV4nDkpdGj0Di2IWQdAIGBQ6GDW1OtxOPSP+/u/RTV6P3PbU5uWGoNj97/UGwNeKrjXTURAREREREREREdHT4Pg5WToGwERmih1Yw8zeEA9rtQ0EjYBpQd3EMM/96C6pS6Nn4Puj30PQCBgebIdVKxfi4q5VYgCcGB/9yG2TTu4C5DKkLX6p3gD4QPqBZjoKIiIiIiIiIiIiehocPydLxwCYyEyxA2uYGZpIMcD70r+L+Peiw2FSl0bPwMz9MyFoBEwP7AbIZTjj9T4gl6HMpTVKKyofuW3+jWuAXIYquQzW9QTAqxNWN9NREBERERERERER0dPg+DlZOgbARGaKHVjDvBu0VwzwXHw7iX//dmCz1KVRE9Pr9Rj/+3gIGgGz/TqLT/5CLsO5hQMfv71OhxJ5W0AuwzCVnUkA/O2Rb5vhKIiIiIiIiIiIiOhpcfycLB0DYCIzxQ6sYcb7bRYDPB/v9uLf8/auk7o0amKRN+qe9laufNUoAI5Y9XmD9nF+qTMgl+GDgN4mAfCg0EGorH30U8REREREREREREQkPY6fk6VjAExkptiBNcwQb6UY4K33fEX8e/aOIKlLoyZ27+ufHdV9UOTa0igAPnFwW4P2cTpkLiCX4bf7nhafsW+G+Pe+9H3P+CiIiIiIiIiIiIjoaXH8nCwdA2AiM8UOrGEcPb3rwrvlbcW/p6/zkLo0akIJuQli27r7dDAKf0tc2uBOcVmD9pMctROQyxC88jVxfxEZEXAKdYKgETDr4Cyj9c/cOoOwlDDU6mqfxWERERERERERERHRE+D4OVk6BsBEZoodWMMIHm5ikBe7tLX496Sg36QujZqIXq/HJ/s/gaARYLfGDjkLXzQKgJMW9m/wvrSlBah1aYmj7m3EayVt+5dYHCWHoBFgrbHG9eLrAIA72jviOvvT9z+rwyMiIiIiIiIiIqJG4vg5WToGwERmih3Y4+n1enRf9ktdkLf4JfFvZ+/vpC6PmkhMdozYrnPCPjMKfyGXYd/qxrX1tUV20MllWOJti+0e7QC5DFHr674G+scTPwIADqQfEOd9sPuDZ3FoRERERERERERE9AQ4fk6WjgEwkZliB/Z4OUVadPP4Vgzpil1bin8P8vg3qmt1UpdITWDWoVkQNAL6re+HQ1sWi8Fv3G+OiJQPw43c/EbtL371xyYhMuQy/HDsB/Ep4JSCFKyIWyFeT58f+vwZHR0RERERERERERE1FsfPydIxACYyU+zAHm9/Ug66exrCwf7q3oBHdwxX9oKgETDQ521k3C6XukR6CufzziMwMVAMYRfFLEJM8NeAXIYalxdQVqGFtrrxv82buMO73gA4OfssrDXWEDQCJu+YjHd2vheNk10AACAASURBVCO+9tTwqc/gCImIiIiIiIiIiOhJcPycLB0DYCIzxQ7s8Zbtu4ye3h9B0AgYrewJqMZjln8XCBoBfYMGI+pq454MpT+GGl0N3E+7i+Gr+BXfRWk44zkFkMuQLe/yxPvPST5dbwCcciwU3vHeJq8raAQM3DAQer2+CY+SiIiIiIiIiIiInhTHz8nSMQAmMlPswB7vQ8Up2PpOhqARMCWoO7D9C3h7tzeEdiHWWH8qReoS6QkEnws2CWC/iPgC0OuRtsgBkMtwYfHgJ96/vqYKlfJWJgFwvP8nqNHV4NP9n9YbAt/R3ql/f3o9CrWFT1wPERERERERERERNQ7Hz8nSMQAmMlPswB5Np9NDkO+Ho/9oCBoBMwK6AidWYP+yNmJgN29XuNRl0gNSClIw59gcxObE1ru8QFuAARsGQNAIGP/7eGy6vAlrL65FUWUREnf6imHtcZ+ZT1VHmlt/kwC4TP53FGenobiqGNP3TDcJgBPzEuvdl2u0KwSNgNDLoU9VExERERERERERETUMx8/J0jEAJjJT7MAeLS2vFB1/3I3+QYMhaAR85dcZSApDxqKXxMDuvfUeUpdJD5gdMVtsn/ufmtXr9Ui+k4yZB2aKyyNvRIrLM05tR7lLa0AuQ668IzIyM56qjsTAmWLwG7t8Ut3vAC8fBeh0qKipgPqCGq6bZ4n1hKea3lCg0+uMQmIiIiIiIiIiIiJ69jh+TpaOATCRmWIH9mjBx9PQ8cfdcFT0haARMN+3E5CdCJ1chgHq3hA0AgYEz5K6THrA/WHp90e/x4H0A9hwaQMmbJtgtGzmgZnib+6Wnt+FWvkLgFwGnUtLJBz9/anryDysEEPforRYHFv+vvjvC6G/AgDSL8dDu6ClWNPimMXQ6XXG+ynONKqbXwVNRERERERERET07HH8nCwdA2AiM8UO7OFqanUYtPQwOv64G/ZqGwgaAct8OgLaYkAuw78CukLQCOgdPAzXb5dKXa7FyCzOxK60XajR1dS7/HbF7Xp/W/f+yVpjjfmR8w1BarUWNWknULGgLSCXQevSCnu2BDVNsVXlKF7zAUq2fw/o9ci+dQsZ8u5iyHz598WIDvgvIJfBWdlTrG/M1jHYe22vGE4fvH7QqP4D6Qeapj4iIiIiIiIiIiJ6KI6fk6VjAExkptiBPdze89no+ONudPxlsxi8Bfn1NCz0H4R1nq+K83/dv03aYi2EXq/Hm2FvQtAIWHV2Vb3rRN2MemjwO3brWGiSNMgszkRtSS4yAt5F5YLWRr/Rq/JfJgavz0JC3EmUubQ2+W3gr/06m9Q7fc90JN9Jhk+8j9H8BdELnll9REREREREREREZMDxc7J0DICJzBQ7sPrdLq3EwCUR6PjjbgjLlonB2+lgJ8MKEa4ocm2Jvve+Blr5kbQFW4jUwlSjILRWV2uyjvqCWlyeevUYskuzkVKQgku3L6FaV21YqbYa1z2GmYSwhxdPQlll/U8WN6XoEweQKe9m9Nq3Fr6IEM9X4XFsEYZtGiYeg90au3rD7PmR81FeXW6035yyHPwS+QuOZx1/5sdARERERERERET0Z8fxc7J0DICJzBQ7MFMJmYV4Y9UJw9O/P+7Gh9t/gKAR4Kjujcr1Uw0rZZ4G5DL84tsJgkZAnxBrLD6hRFl1mbTF/8ltuLTBKATdk7YH6y+tx7LYZdiTtgebLm/CkI1DIGgEjFT2RMGC9ijNzzJsXK1FbsI+5Gz9AfnutmLwGr1gKDYFu2NH2AYUljRf+93IuYVoj3dNQuj4XUEoqSrBirgVsF1j+8ivsv715K9G+/wl8hdx2aXbl5rtWIiIiIiIiIiIiP6MOH5Olo4BMJGZYgdmLOVWCTr/vEcMf2eHnsX438dD0Aj4j38XIPwbw4q6WmDZ67i6uBUc1HWBnI3GBusurpP2IP7AanQ1Jk+t7k7bjel7puN41nEk30nG6ezT9T7ZCwDfHPnmsb/ve2+a5d8FkMtwZ0EH3FnYBdXyl0zC1mS5NbJybzfHoT9U5sUY5GelQOvSSqwr0WsK0qK2ISk3EQ5rHcRjCl75GvYub4spv08S531+6HMczTwKvV5vdPwTt03EmVtnGl3P7Yrb+Prw1/A96/tMvwqbiIiIiIiIiIjoj47j52TpGAATmSl2YMbWn7ouhr8Ld11EakGGGKipV74KHFtet/Ku7wC5DAlLXoadyl5cr/+6gSYh55+dXq9H5I1IJN1++HVUXl2OSdsnod/6fjiQfgAAcKP0Bvqu62sS3jpvccacY3Pw9eGvMTV8KkZsHoF+6/s9NOy1WWNjMs/bu71J4Au5DLUuLRH/mwPWLv0c51LSm+kMPV7ikhEmtRYs6IBtyn/CIcQaNiF9kLzYEBInuvXB4A1ORsf77s536z030/dMx8jNIzFs0zB8sPsDjPt9HDxiPVBZW1lvHS5RLuK20Tejm/ksEBERERE1XGVtJQISAxCTHSN1KURERPQnxfFzsnQMgInMFDswY/KdSej44270/HUfdDo93E+7132lrlsrIDuxbuWyfMC9EyCXIXvRq3jbx1lc9/vDvyD+VjwqaipQWlX6VDVV1lbCJ94HqguqBj2RmVOWg/fC38P3R79HSVUJrhdfh06ve+LX1+v1OJd3Dl5nvKBJ0tS7L02SRjz2zw58hqWnl5qEwcHngo2CyXnH5xk93dqYyce7Pb7z6wy33Z8hYrcc8aE/Ye+Wb7Bn41y4ruqBz/27IGfhi4hyn4RTbmNxcMkUbFv6L4St80XkuStIuln0h3u69XrqZRzz+wKxS8ejwuVloyA4Z+GLSFts/ARz2qJW+FwzEU4PBMGCRsCnfjaPPbfDNw3H7MOz4Z/oj52pO5F8JxmZJZlG60zeMfmhT2OXVpXidPZpHMs89sQ3POj1+ocG0eaqUFuI3PLchy6/WXoTPxz74Ymf0CbLU6OrQaG2UOoyiIiI/pBWnlkJQSOg3/p+/DkeIiIieiY4fk6WjgEwUTOqrKzEvHnz0K5dOzz//PPo378/Dh48+ET7YgdmbFpQDDr+uBtvropEWlEa7NbYQdAImBHQFXp/J+DB0PD81ronS+UyjFP0rDdsmxo+FTtTd2Jf+j7sT9+PX0/+io/3foxZB2fh0PVDuHT7EmJzYnHx9kWkF6Xj4u2LyCzORK2uFvOOzxP3E54aLr60Tq+rN8RccmqJyetP2zUNZ26dwY3SGwhPDcf+9P0ITAzEhksbUF1bjbCUMISlhOFwxmFE3ohEaVUpdqXtgk+8Dz7c86HRvuRRcmy4tAELohfgnZ3vPDJk/HDPh5ixbwYm75j8yPUGhdjBea0TZqicsCpwBP615R2MXu+EN9YNxox1zvh+zRj8VzEU/dS9MUzVC3dcX6j36d77p8RFg5/15fLM3MrNQ0SoJ864DjY6psuLB6JE3sZo3g3XlzFBYfxbwXq5DKmur+ALv8EYohmAKRpnfLL2DUzZMA5OGtMnrh812a21w08nfkJ4ajiS7yRDp9ehQFuAYZuGiesM3TgU/9r3L3x39DuEpYQhITcB2hot8srzsD99P3al7UJeeZ7RMVbWVmLmgZnot74ftlzZ8tBzkVqYikUxi7Dv2r6HhtF/FHe0dzBi8wj0XdcXCbkJJstzy3PF36g2fE33m/UeU1J+EkIvh6KipqI5yqY/uLnH55p8/j/oevF1/HDsB5zIOtGMlREREUlLp9cZ/XfrkYwjUpdEREREf0IcPydLxwCYqBlNmzYNLVq0wJw5cxAUFAQnJye0aNECkZGRjd4XOzBjfRcdRMcfd+PLTcfx9va3IWgEWIf0wWW3VkC0X/0bXdoFrOwDyGVY7/nKEz3R+rDJdo1xsDds0zAsjF6Ib498i6Ebh8JxnSMWxyyGf6I/NlzagKsFVzH4voCpIdNb298ymWetsW7S47h/WuXVHl/6dcVglTWGqHrjk4CuuN2AQBdyGSoXyFCxoGWD1j20ZnHzXjzPgF6vR9S+UBS7tEOlSytcvxyPmqpKJETtR86CLnXBsFsr8fy6+HZ65HmplsuwacUr+GJ1T4xUmn51tqARMDOgK4aoetW7bOjGoXg//P3HtvOADQNgt9bO6N/up90hj5Jj7rG5JuvPj5yP9ZfWY0/aHlTVVonHP2l73e8dT9w2EaoLKmy9shWbkzdj9uHZmH14Nu5o7yApPwnpRen13hRxIusEPtj9AVyjXXGz9Ga957qqtgr+Cf7wT/BHUn4Som9Go6iyqFHtpTivEGudsG2CSS1+CX4mx73j6g6jdXLLc9F/fX8IGgGzDs1Cta66UTXQn0tqYarR9fIwM/Z9AkEjwGnDoKd6qj6tKK3R1z0REZFUzuaeNeonXY/Ok7okIiIi+hPi+DlZOgbARM3k9OnTsLKygoeHhzhPq9WiS5cucHJyavT+2IHVuVNWhY4/7kan+esxbP14cSBhmU8HYGl7w1c+P4yuFshPQe0qB4Qvb4udHu2wf1kbrPZqjx9Wvw7rkD5GgxP2IX3wcWBXDH5IyNYUUz91b3wU0A2uqzrC/oHXb+hkE9IHQ1W94O3dHufdXsZoZd0TzgPUvfFxYFf84tsJnwR0xf5lbZCz8EXELG2Nfcvbor+6t6GGwK6YGdAVk4O7Y6lPR+gfEU7WuLyASpeXTOaXuvwdeS7tUevSEtfl3RF7/hIUSj8Ea9TYeigSyTfyEHs1G1czsrAvbA3C1vtBW/XnCc7KSgpRkJdtNE9bWoCkfUGIXf0JCuSv4ciyNvjFtxPSF7bFtcNqXPJ+GxXyvz82KC9f0BJXF7fCWs9XscK7A8I82qFsQUvkLXwB2zza4Tu/znBQ13/9OKl6Y+/ytpjl3wX/Cmi669l58yg4bRj0RNvef/PCiM0jMXHbG0bL7dbY4beTv0FxXoHQy6EITw1H9M3oep+ct19rj1mHZsEn3gcR1yNQUVMBvwQ/fHf0O4ReDoV/oj8OZxxG9M1oLIxeaLL9Tyd+woZLG3Ak4whyynLgHDoUgkbA28HdMULZ6269NvhH+If476EvEHIhBON/H2e0jyGhQ/F++D/wyb5P8PmhzzE1fCom75iMOcfm4FbZLWSWZGJ2xGxMDZ+KC/kXUF5djupaw7V/vfg6NEkabE7ejPN551FeXY5CbSFic2IRlxMnrpdWmIaTN04itTAVZ26dwf70/Yi4HoHdabux5NQSxN+Kr/e61Ov10NZokV+Rj6raKuj0OuSU5aCipgJ6vb7eMD6vPA8JuQnIKM4w+jr5ytpKMfivj06vw6nsU9iWsq3eJ6NrdDWIy4lDTHYManQ1j39TAaiurYa2Rmt4P9Voxaex9Xo9bpTeEM/Pw5RVlzX4tR5GW6PFrbJbuFF6o97ztThqkdH1UN/Xi2cUZxits/PqrieqZcfVHRA0AkZtGW3yxH5D3Ci9Aa8zXoi88fib0bJKshCbE/uH+yp+c6DX65FTltMs5+5h72Mioj8CnV6HuQe/NP5vSE0/fm4RERFRk+P4OVk6BsBEzWTu3Ll47rnnUFxcbDR/yZIlsLKyQmZmZqP2xw6sTkzabXT6dQ0cFI51TyX6doJuaQcgq4G/1VmUBWz8J/SevaBzrfsd17TFLyFiWRsku7XCBbeXUexqeIq10PUFbFnRDuHL2yJmaWtELGuD8OVtEbGsDdZ7voIV3h2wZUU7lCxoiXmrX4ddSB8MUfXCm8E98JVfZ8wI6FpvCNZf3Rvl9z0pm7/wBahXvgpfL0OQe9mtFUJXGD+tvH9ZG1x0a4WDy9pg8aqO2LTiFVQ9EBYWur6A00tbI3vhiyZB7nV5D9x2eU38t3ZBS1Q/+PSpy4tYu+xLHHWfgguLByPSbSI2+v6KxJR0xJ7Yh8vJl5GblYr4fSHYuPsAfo9JxpHLOTianIsSbTWu5xXhdon22V4IZig7/RJuLegMyGWIW/tL3YJqLQquRKEs7zpupifjSvxx3Lx2GTHrFuC851vIWGyHXNcuqJUbP4F91X0wbi3qZfTkdfLdkNgoaPJoZ/J0cfLiVti3vC3mrn4d8307IfbudT1R0QN2IX0wTNULo+7eSDBM1QtH3dvgS/8uj7xJoa+6N0I8XzW6AaGxk90T3gTxLKbNK17B7uVtn3o/I9cNg4PG1mS+TYg1+oaYzjc5rxp7vL9lSoNey3GNAwZqHNFf0xeOGgc4auxhp6l7gtxeY4eBmv5G29hrbDF6zRCMWDMY721+BxM2jn/g9e0wce1wjFk7FDYh1higcYT3KR9M2jgRo9YNx+A1A9F/jSOmbHwLQ9YMqAvF1zlh9s4Z+O/2j/HVri/w+Z4vMGBt3fKxoaPw3uYpmLzpbXy4dRq+3fEFZm79EB9umoL3Qt/EPzdPxcakTRgVOgK2GhuMWT8CgkaA05r++GDjFAxfY/hd7QnrR2Nbchi+2vsF3v/9bfw7fAZ+3P8dvtv5Gd5ePxbWIQIcNXb4cvtMTN3wBn7YMRth5/ZAc24LPtk5E5/s+Bgzt8/AZ2GfYPaOT/Gvrf/A1E1vYsKGkRiydgDsH2i7UevH4b97fsa8/T9jzt7v8XHYB3AIMf42hpUnPZBWlIarBVcRcS0Cu1MOYdzGCSbtNXvXTJzIOI7j14/iSPphJN1OwqmsE/hi58f45cC3iMyIRNj57YjLPoPdqXuwOn6VyT4mb3wbn/7+CX7e8zOWHFqC7/d+jymbJ+O7A99j19VwhF0Ow4ZzG6COVWLZ0SXof9/Xy8/Y/ikyizMRGBsI95OeCIxfh9CkcCyJ9sLXh+bC9u6xfxg+HeuTNmJ90lZ4Ra3C59v/DU3iehxOPwrl2RD4xwfi8PXD2JAUilWnV2NjUhjCkn5HePIueESuxJy9cxGVFYPLeRdw6Ope7E07iPic84jLjsO3B7/Fm5vG46eDP+Ny/hXo9XqUV5cjrzwP14qu4XT2aRzPOo6EW4kIPBWAlSe9oE4MxZbLYfA+sxqr4xUITdqJtYlhWHXMAxsT1iMmOwZHM49CkaBC6MUtOJV9Ckl5FxB4OhCf/T4dX4XNxLmcc9Dr9bijvYPy6nJU1FRgV+ouKM9p4HPKF8sPy7H8+GKEJKihSlgD79OrEXouFKHxavy27zvM3f0Fom9EizdSVNdWo6SqBGlFaTiWcQyT7r6Ppm6eiKjME0gtTMXp7NNILUxFRnEGcspyEH/zDObt+wlLTnhCdW4dPON8EJMdg8ScOOy7vB2/HZFjwqYJ8DzlIwYl1bpq6PV6pBam4uD1g/A97Yshawfi7U0TkVF0XexWdHodSqtKkVGcgX3X9iHk3FpsvvS7+LMVeeV5SCtKw+2K28ivyEdOWQ6ySrJw8fZF7ErbhYjrEUjKT0JmSSYu3r6I7NJs3Ci9gQv5F5BSkIJjGUdwIe+8UYCjrdHiyu1LOHh+E6IzI5FWmIby6nJU1VYhtTAVKQUpyCnLQWphKvziAxCUoMCxzGNIyk9CZW0l0orSsP/afvyetB7Xi9JRo6tBta5aPOZ79Ho9SqpKkFqYiqgbUTiRdUK8SeRBl/IvYdulMFzOv4QTWScQkRGBhNwEVNZWQlujNbxGbTVuld1Cbnmu+GR+ja4GxVXFyCnLwZmcOOy8sgNxOXG4VXYL+RX5uFZ0zegml4qaCkRcO4ij6UeRW1Z3A0h5dTmuF1/H1YKrKK0qxfGs44jJjkF+RT7SCtNQVVuFsuoy5Jbniseo1+tRras2+ukBnV6H8upy6PV6xGbHYUdKOG6U3kBFTYV401ChtlC8YadaV420O1eQVpiGhNwEnM09i6sFVw1tmHsOOy9ux7bz21BeXV7vedPr9YZzUF6C4opicf9l1WWorjVuj9zyXGQUZyC3PBfFVcXiTTnVumqUVpU+NOTT6/WorK1EXnkeUgtTkVmSKbZjja7G6Oaje2p0NSitKkWNrgYlVSVi/eXV5ajV1aK8uhxJt5OQXZqNzOJMnMs7h/hb8dDWaKHT61Bdaziv4vupthrFVcXidarT61BZW4ns0mxklWQhqyQLtytuQ6/Xo6iyCHnleeJNUDq9DjW6mkaFmPfa6/5/F2gLxG8RqaytxM3Sm0gvShfnFVUW4UL+BcO51VUjqyQLSbeTcLP0JrJKspByJxUZxVni+arV1aJWVwudXofs0mzx52oy7lzDr7u+guKkF26W3kROWQ5qdbW4VXYLd7R3xNc/l3cOkVmRiMs5g/SidETfjMaeK9uwYO/3+Me68XA7JBe/gaKkqgSapDXwS/DHztSdOHPrjPgeKq0qxbWia7hScAWf7fmk3v9meS90FDaeDUaBtkBs36ySLJRUleBC3nlsT/4dibkJyK/IR42uBjW6GuSU5YjXyb0bbdIK05BXnocaXQ0KtAXiudDWaJFamCq27b2bwW6W3kRMdgzOP/AZdq9NSqpKUFRZhNzyXGSXZhtdi3q9HmXVZeL7s1BbiITcBGSVZIk/+1NaVWpy/d77TC6qLDL5WRG9Xo/bFbeNvhmkWlct1nDv8+H+a/6eqtoqlFaVivvJLMlESkEK9Hq9eC08TFVtFTYmBMH7xHzxGqioqUBOWY74efMw9/rq+t6ngKEt739PP2o/T3ojwL335eNu8qvWGfrn4qriBr3Ww36+qaEKtYWPramytvKhn7/31/HgTY5FlUWIy4kz+RaY+/vJxLxELIp2RVhK2EPb50H32vNxN1Xe/3oPVZAOnF0PlJrepFirq0VFTUWD6yIiehIcPydLxwCYqJmMHj0avXr1MpkfEREBKysrhIc//DcC68MOrE7IkRiMDK77ytqlPh1RGzQcyLvyZDvU6wFtMZCXjFuHfHFu80Ic37cVWYf8UH54BUoiPJActgTHV32G+OVvIt59PHYueg+K+f9AvIsjcl27It+1MzIW2+Gs4gvEuL+FCpdWgFyGCpeXcfjXYQj9dRLOL+yJEvmLSF7cCv/x72Ko3asLLni/g1j/fyPp5G4cWeuGk/JhuPxbH5xbOBBXljjhxmJBDJBdfTojzOtr7Frxb+xf8h5i3Scizut9nA2YiQuabxBzdDeOR53E/pBFOO7xD0R6TMXBwDk4sXUV4ncHITJcg9zbBbh5MxNnTh7A+UuXsEOxENsCfsWujUGI3B6EY+pfEXfsyZ5Mo8fTltxBetx+6J/kd3Jrq5GfeQVXTu1B+olQ1FQUAzVVKM68iAunD+PY9mBEhvyCmJUfIHDla4ZwTNEDZ3b6oCzvOi7vC8SpzctwXPkjor0+wHm3Ybi5oBtSXW0Q6fURzqyYjCr5S0Y3DeQufBH5C1rjwqqpqJS3gnZBS9xxNdyo8GFgN6OBPPmqTih2bY8Kl1a44/oCcha+iKxFL+K26wtiKOyk6g1v7/ZY5dUeq70M//uz7+v4r38X/Lj6dSQvboXzbi/jc/8uDw2D+6oNTzTvWt4Wh5e1wa++nfBWcA+TJ/gfNTmpeiN2aWt8FtCl3ien+6l744DXhygOegPJbq3wq28n/Cugq9Hvh/dT90aSmyFw/8W3E2b5d8FHgV0xNag7PvfvAud6gvDG1MiJk6VN1iF94KRqvtdzvPvetw/pgxHKP/Z7c7jKFuPu/o68TUj969iG9IGjWoD9Q5bfmx62/ZNMzkprjFLYYLDKGtZPsV+bx3w2WocYjqufWkBfteny/moBjmrDsfVVW2OQyhrjFXYNeu0HP5ftGnEcdiECRintTH6qYYTSGv3qqdO0zQTxvA1U9cHE4D4YqKqrZ6BKwGClNezV9873o28asgsR8G7wQIxUNqx+B7WAwSobDFDZwFFtDQe1oaYGXZNKAVOC+9a7zPa+c+qotoaTynAs99rvUefYUV13LINU1hisssE0xUCMVtrXu/4gVd129g8553Yh1ibH1Zjr1VF9/74ETFL0NZpnEyJgmNIezgpbDFEZrsehKms4qg2v46AWjK6HAWoBY5XWRufJQf1gzQLeVvSHfUjDfu7F4YH3/oPnuL732L151iECRqvsG9z2gkZAP7U1HNWmtTmobTBAXf91OkHRA8fd/17vNy5NCH78e89WrLcPhqgM57G+9exDBAxRWYv7s1cLcAgxXNvDHnivjlTaY4zCGmPvfo7Vf6x11+29drIOMX2v2ITUtYH93XUd1AJGKWxMPpcd735m9VMb3hv32mOkygZDVKY//XLverMNETA5sC8mBDsY1TtWYYv+6rrtnJW2sA8xvP8mKvpihNIGYxT2GKG0x3ClA94J7m/0Ok4qAZOC7YzawC7EsN83g20xUCVgrMIa/wy0xqTgurawDemD/nfPj32IgCFKAcPu+8yyCREwQmmDCQpbvB1sizEKGwy823ZvKBzgoBYwUGWNt4LtME4h4A2FPZyVthh497w4qQyfH4NUAgaqbOCkMny+D1LVXX8OakOdYxS2GKWwwUilDYaqrNFfbW1yTfVVCxijsMcYhT2GqGwxQmmHAWobOKlsMUxlJ+7T5u5xDVcKGKewwaRge7wX1A//CBqIt4MdMVpph3EKO/wzaCCmBPfD4Lvvd6e759RRbY23g+3xXpA93g12xDiFoZ8Yp7DBtOCB4nU0QG0NJ1UfDFAbPjcGqA3X7hsKRwxUWcM6pA+GK63RV20NJ1XddWQbIsBZaYcRShvx2rj/Wro3DVPZYaTSHsOVdngz2AHvBjlggsIeI5W2GKewwzvB9ng72FbsV63v+9wdrLLBUKUtnJV2GKOwxeC7bXHvs2yU0hpvB9tivMIGI5WGNhmptMbk4B54M7gHxil6YbjKFmOV9pgRaIePAu0wQG38mXfvunFUG/rSoSobDFIJGKYUMFJpjdFKW4xT2GOcwgGjlLYYqrLGeIUN3guyxTiFDUYrreGsNLzuSKUNRiptMVJpA2elDUYq7TBO4YChKlv0U9tgsMoWI5V2GK+wx6RgB0wKtsfQu8c6VGWLEUpbjFLaYqzCDuMU9pigcMAbir4YrbTFcKUNhqlsMfTueRmkssYAtWEarrTBKKUN7RzDwgAAIABJREFURojrWWO40jB/hNLwmqOUthijtMVopS1GKe2MpnvznJX2GKnsC2elA5yV9hiltMdopR3GKwztPFRlDee77Tbm7nEOV1pjlNIGYxWG99hEhS3GKmwwQmmD0UobTFTYYvzd94bhnBjOzai7071596YRShvDMdw9jiHie03AcKUNxt/d3ziFLcbencYoDMc1+u75c767X+eH7tcGQ+9OI5Q2d8953b4M+7DFSKWtuN3wu/sYcV8bP25yvrufh082GHX3M+P+abTCBqMV1uI05oFptMIGzg+04aOm0Y2YxjRgGqt49DRvzftNP4Blhjh+TpaOATBRM+nTpw+cnZ1N5l+8eBFWVlYIDAx86La5ublISkoymnbs2MEODEBNtRYfBdX9nxoPv+7A6WCg9um+3rOx9Ho9coq00FbXH+JptRUozEhCVu5tZN4pR7HWcJdsubYSVzJvQRG2D796uuHA2asm2+p0epP9Ru4OxjrviTh7+ljTHwz9KV08tgWRS7rgxKop0Osafpe1XlsMffFNoKYSFSUFyLt8EjV3MgwLa6tRmZeGjIsxuHBAjQshX+P86qn42fd1/DOwG07sMPyec0FJOZJTknHzYjQKz+1DwbUEbPedBn/PLjjk9xFSfl+AlHXfICn0ZySunYc41beIC56Ns5o5yEo4hMuH1+GM/0wkLR2GhCWDEOXWHxFL+mKdR0d869cZ25b3wbn9apzevAxRoUtxxPvfuOA+ClfcrBHs2QlOqt74R1A3RLo54uhSe1xZ1AErvdvjF9/XEeXWEWEe7RDu7oTLSQk4smoWYl0HYc8CJ4S62SLAsxPmr3ody91HI79EC+hqUXtpN7JDZyNr1QTkuNvjilsHnFraGheW9UFZVhIyDvohWflvXPV9B9e9xyHLcziu+ryF854T8K8AQ0g+RtkT+5Z2wa5l3fCVX2f4eLeHt3d7LPXpCPXKV5G4pCMS3bpg2/JO8FvZESGer+KoexvsWd4WX/t1hl1IH3wa0BVbPTpi5/J2OO7eDtFuXXBiSVecXNIe25d3Rj91bziqe2Pe6tfh5tMRS306wt2nAzy9O0Cx8jVsWPEKXHw74Tu/ztB4voqgla/Bz6s93H064Gu/zvhh9euYFNwDbwX3gJ9XexxZ1gabV7yChas6YpZ/F3zl1xmz/LuIg35DVb3wnV9n/OLbCfN9O+H9oG742q8zQjxfwy++ne+Geb0xUdEDo5U9MVLZE1/7dcYOj3YI8HoNk4J74IPAbvg0oCveCu4BR3VvjFX0xNSg7pge2A191b2NBrE+DeiK5T4d8B//LngnuDs+C+hiNIh87+vu31D0wGBVLwxV9cK0oG5w9+mAqUHdYRfSB28G93hgYKwX3g3qjknBPTBB0QNjFT0xJag7ZgR0xTd+neHi20k8f1tWtIO/12uYoOgBJ1Vv9Ff3xgB1b0wO7o7Zfp3h7dkdc3yN9//gZBfSBz5eDhiu7AXHu+31/+3deXRUVbr+8d0QQYIXG70qXkXvD2gUKkMlIQTCKCpIMzhARAQckCEhhDAEAZkJYRAFkjrnVCUhgjKJI9rSIkPbKNA40HQrg6KIgt0KqIgog0Ke+wdav04XYKJ0Qp18P2u9a3V2dm0Ker3unP3UyTnTvLOtM8hqqEy7nm4pvE69Ar/TTfOuD/5bxD/mCf59T/fadvOu18JHrtHAHz+IdLbqVHidbitoGDL+7//f/FydLdyLnn/q/ZbXhyNaFTUqEbr8kvLO9/zsIxti53uUfpYPsvzr3788/t4URVG/tm74Fb/hZZT1/7Ry2i3623s7lftwKw236qn1f/AROxRFURRV2So1v+V/4mgp7BAAo7IjAAbKSb169dSxY8eQ8V27dskYozlz5pzxtRMnTpQx5rRV2Tew4uJiDc7voagFUbrPidfJbz6r6LcEVHrHvvhYhz5842fn/dpnvX1/9Fvt3bJKPxw9fMY5X3+1X39ZNEl/X7P41N39Pzpx/KiOH/lWxcXF2vfl1zr2fckPjZw8Wax9h45q/QcHVLjuQ+347NC/L13SD8dLrH8mH25/S0Xz+mnjq8/phx9OSMXF+v7gp9K3X0jfH5F+OCYdO83fp7j41PeOHNS+99/UlufnaM/fXj3jn3PyxAltev15bXr1aX33+Yc6tvfv+u7TrTr0zw906J+79N0/tun4nrf1w0ev68TujTrx1Sf6/vMdOrZ/l7778lMd/uf7Ovjhm3pv9WPa9nJAhz/erKOHDujQwQP68rNPtO/jHfrHzi068uWneuHp8ZrmdND65Q9r/7trdXDnBn2+dZ0+2vCMvvjwbRX/cEzffPlP/eUPPm364xN6e/WTevclR1ufna6P1i3SkY/f1qFP/q6taxbpo3WLtXfDk/p4/TLtev0p7d70oj7+6yrt/duf9PRTo9XTH6sH/e303ttr9f6mFTq0d7v271ivT//6sr788G19vW+Xxs3volEFN+jVpybpjRXztfkFS5tfsPT2qiX6aMufdfTwV/rk3Y16Z2WR9vztT3pjtV+LF/XTwsfu0rvLZ2rLH/x695UivffqYm1e/aS2vr5cf1//R721YZXe27JB//zgb/p230cqPrxfxZ9v03drZujTF6bovRdna9sKR+++8ph2vP0nff3NN/rg/dc1ONBEDzmJ8ts3Kq/gVi167AEtL+qjVQvu1d+en6yTx77Thk0bterFhVr51DQ9mt9FhfN6a9G8vvIFuivH313PLntYyxc/pIJ5vbV0UYYKCntoaWEfPT0vXY8UZGj7Rx/p8J6/6+O18/TPvyzTJ68t1vbV+dr80lxtezFXO9fM158XjtEzBf31/PzBenFhll5+cqzWPzdDO9Yu0g9Hv9WBnRs13mmunoFGyi/opi2Lx+iVJ1L13BN9teXxIdq8IF27XvHr3bXzVOB01AuFvfXHBQP08sLBeuelXC0N3KYl+d205vFhenV+ppY6d+iFwr5at2i0/vj4ID33xBA9u2CQ1ix5UK8tztKcvCTl2u21aEGqnp53n/KLemh+4FatKuqnrSvnaeWTD2pEoKXS/YmaYrfWI/728gW6akGgu5b6u8nv76oXFw/Tpqcm6s/zB2hNIEVvFQ3U+gWDtXLBA1r9RD/9+bmpen7+AC2xu+gpq6vWPpauNfm9tNjppLn53fTiohHatnaJXnl2qqYGblG6v5XGBjqoZ0EztSyK0dRAB73lv0t/XZCmjc/laeOymXr58eFa/fhQrV88Wi8sHq7lix/SuhcCWvPEaBXMaapsX1NN8SVops+rWVaS8u12etJ/m9YtytLO7Vu0cH628qzblOdrpydyb5LjayvLd4Nm2jdrXP7tWvPMJK1bkqXVjw3Qa/MGKGB3lB3oqYULhujPS8Zq/TOTNciO0235HvUJRGu81URj7Gaaat+gZXY3vTivr95Zu0j5Bb2UZSXqQbupxvriNNmXoGm+FnrUuVlPBnpozfwMPVPYR49YrfWQk6zpVks5vjaaZbXSo1Zr2b7mKvAlq9Bpr+f8d2tZfi/587tpVn5X2f5bNc3fUbP8HTTfai8nt7Uec1I03n+D7vd7leqP0zCniSY4yZob6KIFCzO1zN9Fjq+1plgtNN5KVl5ea/lz22hubrLychO0ItBTa4tS9YzTVfN8bTTWn6yZTls946Ro6WODlJ3/e43zt9M4u43G2y01zm6uUXZzZdlNNMrn1TRfM/ntm7XI300+p5PS/XEa7jTVRF+cJuY10lArRr38Ucp0murxx/pqVkF3Pe7vpues2+V3Omisv7Um2y01zm6lMXYrPZrXUnm5TZWTF6fxPq8m+ZKUY7XVTP/vZRf01NNFAzXf6axZvlaabrXRI05njbdba4wvQT0Cp+4gnxK4RY8X3aeH/G3U3x+nLDtBU31Jys1rq9m+mzTBTlKB72YV+m7Wo3YLOVYbjbESNM5KUrZ1g9L9yeoTSFSav5nGO2001mmtLCdBwx2vxlleTbBi1bEgSqmBZlrqv0NzfM00Iy9Rs/ISlJcbr9zcOD1oRantvEbqUOjR5IKumhm4U36nux6zuyhgt9cjgc7yFfTU4gUZKizqpeFOE42wYzXG59F4n0ejrURN8MVpSl6cJlvNNaHoVk0uul0PB27Uo1YL5dgtNd5urVF2G90diNFNhY001GmmXH8nzbXb6FGrmcb722mMv6Um2MnKsVroIStaWXa8hjlJGmEnKctO0kN2M423mmmSr5kezU1WwdyWys1ro4l2a2XZiRpvNdMYK1HDLK8yLI/aFzZW9/zGmuyL0/S8Zproa6acvOYa70tSqj9R451WGmbHa7gdrzyrvR7Na6XZee1UlNtOC2fHa2JeQ030xWqy3UITnNYa62+r8VaSpvoSNdOXrByrpabnxSsn16upufGy85JUlNtEgdzmyrFaaYiTpKm+Zno0r6Uy7Xjdkd9I6Xa8JlnNle2L12RflDLt65XuRGuI3UQjrEQNthOUZSVoXF6CRvviNdyXoMm+Zpria65Mq4nusb0aardQTqCDJjitNcpO0kSrhR6xb9Rcq51GWl7dlt9I9/uvV9GcOE3PjddEu4UetW/QAt8N8lstNM9KVmHgFs3M/71G2EkaZTXTOF+yxvuS9JAVp5m5LTUn9/ca52urgf4mmr9kqAqL7tVM+2ZNt2/SCH8bTbFv1Ehfgu5zGukhn1f5vrZaGkjRYwU9NddpryJ/dy0rGqw/PDVL7/5lpQLWrcrObaqRvlgNsaNUYLfXm/bdWjO7nebPbqIxvgYa4/udZuZ65ZvbSrPzWujpQE+9u/6l4M+Bx344oXc/3q81q15UQdED6h9oobvzm+hBp5l8dmtlW8mabt+oxYUD9IjTQ5OcTnrQaacR/raa5O+ikU47DXKSNNhO0CznBlmBrpqe11JTcmP1yByvRltxyrTi9KAvXnlzm2q4naCRVqJG+eLV34lWttNWC/zdNd2XqAf816m/41V/f5zSnThNsltqmi9ZD+c21ezc5ppp36Ch/iSNsRM03orTGCte0/KaaoLVVA9ZScr2tVD+3Bs0w9dW43yJGueL1bS8pnrI59UoXxMNs5uqnz9Go6x4Tc9rrhyrtcbarTXaitMoK0HDnSRlOImaYN+oEVYzpdleDbFiNDYvUTPnNtGjc5tpgu8mZdhJGm+31FB/gm4v8Og+v0eZllcP+VpotN1Kvf3RGmE1km9uvMZbLdUj36MMO1aZVrTu9TfWYDtaAx2PhtjXKcNuqDvzG2mg01jTcttqWt6tut8fpbsDMcq0EzUjt7Um+1porM+re/wxuisQq6F2gvr643VrfpzuyE/QMLuFJtg3aKSdrBFWosZYCRplJ2mIP1FD/PEa68Rrjt1WY33xSrdj1NeJVa9ArPo5cRpqNVGGHaeeAY+GWV4NtmPVxx+t+50E3e94lGZHaZiVoOFWgkbY8RpqN9Vwu4lGWdEaacVquB2vLMurh6woPZwbpxG2V/39sUp1YpXmeDXIiVOmHacHrTiNsZI0Ka+pplqtNdl/k8b4YtTfidIAx6PhlkcZtkejfY010tdYmXZjjfV5NN7XVKOsFsq0minNaaIHHK/6+KN1Z75Ht+c3Uq9AYw20o3WvP0qdChrrzkAjpTtejbTiNcxqrGl5CcqwY3R3IFo9AtHqEfDoASdKg2yv+vhP/XfzAX+sJvmSlGXFKsNurmF2kobbScq0minD8upe/3VKtxtrjJ2sVH+CxvhiNMyO0lA7RnZuS43xRSndjlK6HauRVhNNtJpruBWvDCtOk612Wmbfq+zcOA2yr9cQu5Ey7cbqHYhSj/wo9fVHKd2OVn8nSj0D0UoJxGqY3VSTfK00ztdMw22vhluxGmFF//hv1FgD/DHKdOI11E7QMCtB431NdJ8/Tr38Xt3veJVmx2mYHa9BTpz6BJqqS35H9XOaaKjl0QOOR78viNHvC2J0vz9Jk6yWys6L1Siricb6vBrni9MIq4kGOlEaYsdoqJWgQXai0px4pdoxGuh4NNBprHQ7Whl2nO71xykl36u+/jgNcOKVZsf9WF4NtqM1yI7VIDtWGXZj9Xcaa5jVWGN9jZVleTTY9qi/41GfQJTuDkQp3fFquBWjYVaUMuxoDbJjNNA59W/T1+/R/f7GGuDEaLAdq6FWlIZa0RpmxWiE5VWWL05Zvnil216l2bEabMdoiB2jwXa80u0EZdheZdjRGmI31iA7WgOdWKXaMRpkRyvd9ijd9miQHaW0H78eYl+voVZDZdrXKcNupMF2Y6U5UernRGuQ7VWG7VWaHaN+TrQGODFKs2M1yPYq1faqv+PV/X6v7vPHqr/j1SDbqwFOrO73x6qfE6OBTmzw32WQfapXUp1YpdmxSrNPzf+pBv9YQ+w4ZVpeDbO8etAXp0G2V339sXrAObVmfydGA5xYDfhx/VP9d6r+9c9Kt2M12I5Vhh2rIXaMMv+lMuwYpQXXilGqc+rrdDtGg3/8/hA7Vhk//u/B9qnvhVZsyXJ+vgb9WGmOV2mOV6mOV6lOnFKdOA104jXQH68B/gQN8Ceov79JsNKc2B9771QNKkWlOdFnrNQfa+A5qhmPcQewRAAMEAAD5YQ7gP+Diou15vWHtXPfgYp+JwAAAAAAAACACkYAjMqOABgoJzwDGAAAAAAAAACA/zzOz1HZEQAD5SQrK0tVq1bVoUMlf41oTk6OjDHas2dPmdZjAwMAAAAAAAAAIBTn56jsCICBcrJp0yYZYzRr1qzg2LFjx9SgQQMlJSWVeT02MAAAAAAAAAAAQnF+jsqOABgoRykpKYqIiNDIkSOVn5+v5ORkRUREaN26dWVeiw0MAAAAAAAAAIBQnJ+jsiMABsrR0aNHlZWVpTp16qh69epKTEzUypUrf9FabGAAAAAAAAAAAITi/ByVHQEwEKbYwAAAAAAAAAAACMX5OSo7AmAgTLGBAQAAAAAAAAAQivNzVHYEwECYYgMDAAAAAAAAACAU5+eo7AiAgTDFBgYAAAAAAAAAQCjOz1HZEQADYYoNDAAAAAAAAACAUJyfo7IjAAbCFBsYAAAAAAAAAAChOD9HZUcADIQpNjAAAAAAAAAAAEJxfo7KjgAYCFNsYAAAAAAAAAAAhOL8HJUdATAQptjAAAAAAAAAAAAIxfk5KjsCYCBMsYEBAAAAAAAAABCK83NUdgTAQJhiAwMAAAAAAAAAIBTn56jsCICBMMUGBgAAAAAAAABAKM7PUdkRAANhig0MAAAAAAAAAIBQnJ+jsiMABsIUGxgAAAAAAAAAAKE4P0dlRwAMhCk2MAAAAAAAAAAAQnF+jsqOABgIU2xgAAAAAAAAAACE4vwclR0BMBCm2MAAAAAAAAAAAAjF+TkqOwJgIEyxgQEAAAAAAAAAEIrzc1R2BMBAmGIDAwAAAAAAAAAgFOfnqOwIgIEwxQYGAAAAAAAAAEAozs9R2REAA2GKDQwAAAAAAAAAgFCcn6OyIwAGwhQbGAAAAAAAAAAAoTg/R2VHAAyEKTYwAAAAAAAAAABCcX6Oyo4AGAhTbGAAAAAAAAAAAITi/ByVHQEwEKbYwAAAAAAAAAAACMX5OSo7AmAgTG3evFnGGC1fvlxbt26lKIqiKIqiKIqiKIqiKIqiKGrrVi1fvlzGGG3evLmij/KBCkEADISpnzYwiqIoiqIoiqIoiqIoiqIoiqJCa/ny5RV9lA9UCAJgIEwdPHhQy5cv1+bNmyv801TnQ/0UiHNHNEX954t+o6jyK/qNosqv6DeKKr+i3yiq/Ip+o6jyLXru/KnNmzdr+fLlOnjwYEUf5QMVggAYgCts3cozHYDyQr8B5Yd+A8oP/QaUH/oNKD/0G1C+6DkA5wsCYACuwA9XQPmh34DyQ78B5Yd+A8oP/QaUH/oNKF/0HIDzBQEwAFfghyug/NBvQPmh34DyQ78B5Yd+A8oP/QaUL3oOwPmCABiAK/DDFVB+6Deg/NBvQPmh34DyQ78B5Yd+A8oXPQfgfEEADMAV9u3bp4kTJ2rfvn0V/VYA16PfgPJDvwHlh34Dyg/9BpQf+g0oX/QcgPMFATAAAAAAAAAAAAAAuAQBMAAAAAAAAAAAAAC4BAEwAAAAAAAAAAAAALgEATAAAAAAAAAAAAAAuAQBMAAAAAAAAAAAAAC4BAEwAAAAAAAAAAAAALgEATCAsHbs2DE9+OCDuvLKK3XhhReqadOmWrVqVUW/LeC88+abbyo9PV2NGzdWZGSk6tatq5SUFL3//vshc7dv364OHTqoZs2aql27tnr37q39+/eHzDt58qRmzpyp//3f/1X16tUVHR2tJUuWnPbPL+2agFtNnTpVxhh5PJ6Q723YsEEtWrRQjRo1dMUVVygjI0OHDx8OmVeWPa+0awJusXnzZnXp0kW1a9dWjRo15PF4lJubW2IOvQb8ejt37lSPHj101VVXqUaNGrruuus0efJkfffddyXm0W9A2Rw+fFgTJkxQhw4dVLt2bRljNH/+/NPOrcjrtbKsCZyvStNvJ0+e1Pz589WlSxddffXVioyMlMfjUXZ2to4ePXradefNm6frr79e1atXV4MGDZSXl3faeZ9++qlSUlJ08cUX67/+67/UtWtX7dq161etCQCnQwAMIKzdddddioiIUFZWlvLz89W8eXNFRETo9ddfr+i3BpxXunXrpjp16igjI0OFhYXKzs7WFVdcoZo1a+rdd98Nztu7d6/++7//W/Xr11dubq5ycnJUu3ZtxcbG6vjx4yXWHD16tIwx6t+/vwoKCtSpUycZY7R06dIS88qyJuBGe/fuVWRkpGrWrBkSAG/ZskUXXnih4uLi5Pf7NXbsWFWvXl233HJLyDql3fPKsibgBq+88oqqVaumpKQkzZ49WwUFBRo1apRGjhwZnEOvAb/enj179Nvf/lbXXnutpk+frvz8fN13330yxqhr167BefQbUHa7d++WMUbXXHON2rZte8YAuKKv10q7JnA+K02/HT58WMYYNWvWTFOnTlVBQYHuv/9+ValSRW3btlVxcXGJ+YFAQMYYdevWTQUFBerTp4+MMZoxY0bIur/73e90+eWXa+bMmZo9e7bq1q2rq6++Wl988cUvWhMAzoQAGEDYeuONN2SM0axZs4JjR48eVf369dW8efMKfGfA+WfDhg0hF+87d+5U9erV1atXr+BYWlqaatSooU8++SQ4tnr1ahljlJ+fHxz79NNPdcEFFyg9PT04VlxcrFatWunqq6/WiRMnyrwm4FY9evRQu3bt1KZNm5AAuGPHjrryyit16NCh4FhhYaGMMXrllVeCY2XZ80q7JuAGhw4d0hVXXKHbb79dJ0+ePOM8eg349XJycmSM0datW0uM33PPPTLG6KuvvpJEvwG/xLFjx/TZZ59Jkt56660zBsAVeb1WljWB81lp+u348ePasGFDyGsnT54sY4xWr14dHDty5IguvfRSderUqcTcXr16qWbNmsH9UZJmzpwpY4zefPPN4NiOHTtUtWpVjRkz5hetCQBnQgAMIGyNHDlSVatWLXEIIEnTpk2TMUZ79uypoHcGhI/4+HjFx8cHv7788suVkpISMq9hw4a68cYbg1/bti1jjLZt21Zi3pIlS2SMKXHXRmnXBNxo3bp1qlq1qt55552QAPjQoUOKiIgocZeidOqw4aKLLtIDDzwQHCvtnleWNQE38Pv9MsZo+/btkqRvv/02JAim14BzY9SoUTLG6MCBAyHjVapU0bfffku/AefA2QLgirxeK8uaQLg4W7+dzjvvvCNjTIlfxbxixQoZY7RixYoSczdu3ChjjBYuXBgcS0xMVGJiYsi67du3V/369X/RmgBwJgTAAMLWTTfdpEaNGoWMr1mzRsYYvfjiixXwroDwUVxcrKuuukrt27eXdOoT3cYYzZw5M2Ru7969dckllwS/7tevn2rWrBnya48+/PDDEhdDZVkTcJsTJ04oJiZGAwcOlKSQAHj9+vUyxmjZsmUhr23ZsmWJD2eUds8ry5qAG3Tr1k21atXS6tWr1bBhQxljVLNmTaWmpgafz0avAefGyy+/HPx1z1u2bNGePXv05JNPqlatWho6dKgk+g04F84USFX09Vpp1wTCSVkD4FWrVskYU+LZ11OnTpUxRvv27Ssx9/jx46pSpYqGDx8u6dRzhatXr660tLSQdceNGydjjL755psyrQkAZ0MADCBseTwetWvXLmR827ZtMsYoEAhUwLsCwsfChQtljFFRUZGk/3/h88QTT4TMHTlypIwxOnbsmCSpU6dOqlevXsi87777TsYYjR49usxrAm5jWZYuvvhi7d+/X1JoAPz000/LGKPXXnst5LUpKSmqU6dO8OvS7nllWRNwg5iYGEVGRioyMlIZGRl69tlnlZGRIWOM7rrrLkn0GnAuZWdnq0aNGjLGBGvs2LHB79NvwK93pkCqoq/XSrsmEE7KGgDfdNNNqlWrlg4ePBgcS09PV9WqVU87/7LLLgv+THrgwAEZYzRlypSQeT/dYf/ee++VaU0AOBsCYABhq169eurYsWPI+K5du2SM0Zw5cyrgXQHhYceOHapVq5aaN28efFbTa6+9dsa7K8aPHy9jTPAip127dqe9Y+PkyZMyxigzM7PMawJu8sUXX+iSSy7RI488Ehz79wD4iSeekDFGb7zxRsjr+/Tpo4svvjj4dWn3vLKsCbhBvXr1ZIxRampqifGBAwfKGKOdO3fSa8A5tHDhQnXo0EEFBQV69tln1bdvX/3mN7+Rz+eTxN4GnAtnCqQq+nqttGsC4aQsAXBOTo6MMXIcp8R43759VaNGjdO+pm7durr11lslSXv27DnjHfdFRUUyxmjLli1lWhMAzoYAGEDY4g5g4Jf57LPPVK9ePdWtW1f/+Mc/guMV/YlywE1SU1PVoEEDHT9+PDjGHcDAuefxeGSM0bp160qMr1u3TsYYPf744/QacI4sXbpUNWrVacxOAAAJpElEQVTU0N69e0uM33fffYqMjNQXX3xBvwHnAHcAA+WntAHwk08+qd/85jenfe48dwADOF8RAAMIWzwDGCi7r7/+Wl6vV5dccom2bdtW4ntlff5TZGQkzwAGTmPnzp2qUqWK8vLytHv37mAlJSWpYcOG2r17t7788kuekwicAzfffHOJw7Kf7NixQ8YYzZ07l14DzpFWrVopOTk5ZPy5556TMUarV6+m34Bz4Fw9A/hcX6+Vdk0gnJQmAF61apWqVaumzp0764cffgj5Ps8ABnC+IgAGELaysrJUtWpVHTp0qMT4T7+SZc+ePRX0zoDz09GjR9WqVStFRkZq48aNp51z2WWXKSUlJWS8YcOGJe7QsCxLxpiQEHnx4sUhd2iUdk3ALV599dUSz0Y8XWVmZurrr79WRESERo4cWeL1x48f10UXXaS+ffsGx0q755VlTcANRo8eLWOM1q5dW2J87dq1MsZo8eLF9BpwjjRs2FBJSUkh48uWLZMxRi+//DL9BpwDZwukKvJ6rSxrAuHi5wLgTZs2qWbNmkpOTtaRI0dOO+ell16SMUYrVqwoMb5hw4aQO+ybNGmixMTEkDVuvvnmEnfYl2VNADgTAmAAYWvTpk0yxmjWrFnBsWPHjqlBgwanPZgAKrMTJ06oa9euioiICLmA+FepqamqUaNGiQ9Q/HQXht/vD47t3btXF1xwgdLT04NjxcXFatWqla666qrgc4XLsibgFgcOHNDzzz8fUh6PR9dcc42ef/55vfPOO5KkW265RVdeeWXwk96SNG/evOBB+k/KsueVdk3ADf7617/KGKO77767xHjPnj0VERERfNQBvQb8ep07d1a1atX0/vvvlxi/7bbbVKVKFfoNOEfOFkhV5PVaWdYEwsXZ+m379u269NJL5fF49NVXX51xjSNHjuiSSy5R586dS4z37t1bkZGR+vLLL4NjM2bMkDFGb731VnDsvffeU9WqVTVq1KhftCYAnAkBMICwlpKSEvw0eH5+vpKTkxURERHyHDigssvMzJQxRl26dNHChQtD6id79uzRpZdeqvr16ysvL0/Tpk1T7dq1FR0dHfKs3p+eCTVgwAAVFhaqU6dOwbut/lVZ1gTc7N+fASxJmzdvVvXq1RUXFye/36+xY8fqwgsvVPv27UNeX9o9ryxrAm7Qt29fGWN05513yrZtpaSkyBijMWPGBOfQa8Cvt27dOlWtWlWXX365pkyZItu21bFjRxlj1K9fv+A8+g34ZXw+n7Kzs5WWliZjjO644w5lZ2crOztbX3/9taSKv14r7ZrA+e7n+u2bb75R3bp1VaVKFc2YMSPkDOXff6vaT8/w7d69uwoLC3XPPffIGKOcnJwS87755hvVr19fl19+uR5++GHNmTNHdevW1f/8z/9o//79v2hNADgTAmAAYe3o0aPKyspSnTp1VL16dSUmJmrlypUV/baA806bNm3O+uto/9XWrVvVvn17RUZG6re//a169eqlzz//PGTNkydPatq0abr22mtVrVo1eTweLVq06LR/fmnXBNzsdAGwJL3++utKTk7WhRdeqMsuu0zp6ekl7nD6SVn2vNKuCbjB999/r0mTJunaa6/VBRdcoAYNGmjOnDkh8+g14Nd744031LFjR9WpU0cXXHCBGjZsqJycnJBnItJvQNlde+21Z7xe2717d3BeRV6vlWVN4Hz2c/22e/fus56h3HvvvSFrFhQU6LrrrlO1atVUv359zZkzJ+SZ2dKpu+m7d++uWrVq6aKLLlLnzp31wQcfnPZ9lnZNADgdAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwCQJgAAAAAAAAAAAAAHAJAmAAAAAAAAAAAAAAcAkCYAAAAAAAAAAAAABwif8D95I7dTq1MPEAAAAASUVORK5CYII=\" width=\"1600\">"
|
|
|
3218
|
],
|
|
|
3219
|
"text/plain": [
|
|
|
3220
|
"<IPython.core.display.HTML object>"
|
|
|
3221
|
]
|
|
|
3222
|
},
|
|
|
3223
|
"metadata": {},
|
|
|
3224
|
"output_type": "display_data"
|
|
|
3225
|
},
|
|
|
3226
|
{
|
|
|
3227
|
"data": {
|
|
|
3228
|
"application/javascript": [
|
|
|
3229
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
3230
|
"window.mpl = {};\n",
|
|
|
3231
|
"\n",
|
|
|
3232
|
"\n",
|
|
|
3233
|
"mpl.get_websocket_type = function() {\n",
|
|
|
3234
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
3235
|
" return WebSocket;\n",
|
|
|
3236
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
3237
|
" return MozWebSocket;\n",
|
|
|
3238
|
" } else {\n",
|
|
|
3239
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
3240
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
3241
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
3242
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
3243
|
" };\n",
|
|
|
3244
|
"}\n",
|
|
|
3245
|
"\n",
|
|
|
3246
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
3247
|
" this.id = figure_id;\n",
|
|
|
3248
|
"\n",
|
|
|
3249
|
" this.ws = websocket;\n",
|
|
|
3250
|
"\n",
|
|
|
3251
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
3252
|
"\n",
|
|
|
3253
|
" if (!this.supports_binary) {\n",
|
|
|
3254
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
3255
|
" if (warnings) {\n",
|
|
|
3256
|
" warnings.style.display = 'block';\n",
|
|
|
3257
|
" warnings.textContent = (\n",
|
|
|
3258
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
3259
|
" \"Performance may be slow.\");\n",
|
|
|
3260
|
" }\n",
|
|
|
3261
|
" }\n",
|
|
|
3262
|
"\n",
|
|
|
3263
|
" this.imageObj = new Image();\n",
|
|
|
3264
|
"\n",
|
|
|
3265
|
" this.context = undefined;\n",
|
|
|
3266
|
" this.message = undefined;\n",
|
|
|
3267
|
" this.canvas = undefined;\n",
|
|
|
3268
|
" this.rubberband_canvas = undefined;\n",
|
|
|
3269
|
" this.rubberband_context = undefined;\n",
|
|
|
3270
|
" this.format_dropdown = undefined;\n",
|
|
|
3271
|
"\n",
|
|
|
3272
|
" this.image_mode = 'full';\n",
|
|
|
3273
|
"\n",
|
|
|
3274
|
" this.root = $('<div/>');\n",
|
|
|
3275
|
" this._root_extra_style(this.root)\n",
|
|
|
3276
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
3277
|
"\n",
|
|
|
3278
|
" $(parent_element).append(this.root);\n",
|
|
|
3279
|
"\n",
|
|
|
3280
|
" this._init_header(this);\n",
|
|
|
3281
|
" this._init_canvas(this);\n",
|
|
|
3282
|
" this._init_toolbar(this);\n",
|
|
|
3283
|
"\n",
|
|
|
3284
|
" var fig = this;\n",
|
|
|
3285
|
"\n",
|
|
|
3286
|
" this.waiting = false;\n",
|
|
|
3287
|
"\n",
|
|
|
3288
|
" this.ws.onopen = function () {\n",
|
|
|
3289
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
3290
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
3291
|
" if (mpl.ratio != 1) {\n",
|
|
|
3292
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
3293
|
" }\n",
|
|
|
3294
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
3295
|
" }\n",
|
|
|
3296
|
"\n",
|
|
|
3297
|
" this.imageObj.onload = function() {\n",
|
|
|
3298
|
" if (fig.image_mode == 'full') {\n",
|
|
|
3299
|
" // Full images could contain transparency (where diff images\n",
|
|
|
3300
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
3301
|
" // there is no ghosting.\n",
|
|
|
3302
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
3303
|
" }\n",
|
|
|
3304
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
3305
|
" };\n",
|
|
|
3306
|
"\n",
|
|
|
3307
|
" this.imageObj.onunload = function() {\n",
|
|
|
3308
|
" fig.ws.close();\n",
|
|
|
3309
|
" }\n",
|
|
|
3310
|
"\n",
|
|
|
3311
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
3312
|
"\n",
|
|
|
3313
|
" this.ondownload = ondownload;\n",
|
|
|
3314
|
"}\n",
|
|
|
3315
|
"\n",
|
|
|
3316
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
3317
|
" var titlebar = $(\n",
|
|
|
3318
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
3319
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
3320
|
" var titletext = $(\n",
|
|
|
3321
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
3322
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
3323
|
" titlebar.append(titletext)\n",
|
|
|
3324
|
" this.root.append(titlebar);\n",
|
|
|
3325
|
" this.header = titletext[0];\n",
|
|
|
3326
|
"}\n",
|
|
|
3327
|
"\n",
|
|
|
3328
|
"\n",
|
|
|
3329
|
"\n",
|
|
|
3330
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
3331
|
"\n",
|
|
|
3332
|
"}\n",
|
|
|
3333
|
"\n",
|
|
|
3334
|
"\n",
|
|
|
3335
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
3336
|
"\n",
|
|
|
3337
|
"}\n",
|
|
|
3338
|
"\n",
|
|
|
3339
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
3340
|
" var fig = this;\n",
|
|
|
3341
|
"\n",
|
|
|
3342
|
" var canvas_div = $('<div/>');\n",
|
|
|
3343
|
"\n",
|
|
|
3344
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
3345
|
"\n",
|
|
|
3346
|
" function canvas_keyboard_event(event) {\n",
|
|
|
3347
|
" return fig.key_event(event, event['data']);\n",
|
|
|
3348
|
" }\n",
|
|
|
3349
|
"\n",
|
|
|
3350
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
3351
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
3352
|
" this.canvas_div = canvas_div\n",
|
|
|
3353
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
3354
|
" this.root.append(canvas_div);\n",
|
|
|
3355
|
"\n",
|
|
|
3356
|
" var canvas = $('<canvas/>');\n",
|
|
|
3357
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
3358
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
3359
|
"\n",
|
|
|
3360
|
" this.canvas = canvas[0];\n",
|
|
|
3361
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
3362
|
"\n",
|
|
|
3363
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
3364
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
3365
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
3366
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
3367
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
3368
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
3369
|
"\n",
|
|
|
3370
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
3371
|
"\n",
|
|
|
3372
|
" var rubberband = $('<canvas/>');\n",
|
|
|
3373
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
3374
|
"\n",
|
|
|
3375
|
" var pass_mouse_events = true;\n",
|
|
|
3376
|
"\n",
|
|
|
3377
|
" canvas_div.resizable({\n",
|
|
|
3378
|
" start: function(event, ui) {\n",
|
|
|
3379
|
" pass_mouse_events = false;\n",
|
|
|
3380
|
" },\n",
|
|
|
3381
|
" resize: function(event, ui) {\n",
|
|
|
3382
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
3383
|
" },\n",
|
|
|
3384
|
" stop: function(event, ui) {\n",
|
|
|
3385
|
" pass_mouse_events = true;\n",
|
|
|
3386
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
3387
|
" },\n",
|
|
|
3388
|
" });\n",
|
|
|
3389
|
"\n",
|
|
|
3390
|
" function mouse_event_fn(event) {\n",
|
|
|
3391
|
" if (pass_mouse_events)\n",
|
|
|
3392
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
3393
|
" }\n",
|
|
|
3394
|
"\n",
|
|
|
3395
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
3396
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
3397
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
3398
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
3399
|
"\n",
|
|
|
3400
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
3401
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
3402
|
"\n",
|
|
|
3403
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
3404
|
" event = event.originalEvent;\n",
|
|
|
3405
|
" event['data'] = 'scroll'\n",
|
|
|
3406
|
" if (event.deltaY < 0) {\n",
|
|
|
3407
|
" event.step = 1;\n",
|
|
|
3408
|
" } else {\n",
|
|
|
3409
|
" event.step = -1;\n",
|
|
|
3410
|
" }\n",
|
|
|
3411
|
" mouse_event_fn(event);\n",
|
|
|
3412
|
" });\n",
|
|
|
3413
|
"\n",
|
|
|
3414
|
" canvas_div.append(canvas);\n",
|
|
|
3415
|
" canvas_div.append(rubberband);\n",
|
|
|
3416
|
"\n",
|
|
|
3417
|
" this.rubberband = rubberband;\n",
|
|
|
3418
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
3419
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
3420
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
3421
|
"\n",
|
|
|
3422
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
3423
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
3424
|
" // canvas in synch.\n",
|
|
|
3425
|
" canvas_div.css('width', width)\n",
|
|
|
3426
|
" canvas_div.css('height', height)\n",
|
|
|
3427
|
"\n",
|
|
|
3428
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
3429
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
3430
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
3431
|
"\n",
|
|
|
3432
|
" rubberband.attr('width', width);\n",
|
|
|
3433
|
" rubberband.attr('height', height);\n",
|
|
|
3434
|
" }\n",
|
|
|
3435
|
"\n",
|
|
|
3436
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
3437
|
" // upon first draw.\n",
|
|
|
3438
|
" this._resize_canvas(600, 600);\n",
|
|
|
3439
|
"\n",
|
|
|
3440
|
" // Disable right mouse context menu.\n",
|
|
|
3441
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
3442
|
" return false;\n",
|
|
|
3443
|
" });\n",
|
|
|
3444
|
"\n",
|
|
|
3445
|
" function set_focus () {\n",
|
|
|
3446
|
" canvas.focus();\n",
|
|
|
3447
|
" canvas_div.focus();\n",
|
|
|
3448
|
" }\n",
|
|
|
3449
|
"\n",
|
|
|
3450
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
3451
|
"}\n",
|
|
|
3452
|
"\n",
|
|
|
3453
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
3454
|
" var fig = this;\n",
|
|
|
3455
|
"\n",
|
|
|
3456
|
" var nav_element = $('<div/>')\n",
|
|
|
3457
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
3458
|
" this.root.append(nav_element);\n",
|
|
|
3459
|
"\n",
|
|
|
3460
|
" // Define a callback function for later on.\n",
|
|
|
3461
|
" function toolbar_event(event) {\n",
|
|
|
3462
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
3463
|
" }\n",
|
|
|
3464
|
" function toolbar_mouse_event(event) {\n",
|
|
|
3465
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
3466
|
" }\n",
|
|
|
3467
|
"\n",
|
|
|
3468
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
3469
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
3470
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
3471
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
3472
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
3473
|
"\n",
|
|
|
3474
|
" if (!name) {\n",
|
|
|
3475
|
" // put a spacer in here.\n",
|
|
|
3476
|
" continue;\n",
|
|
|
3477
|
" }\n",
|
|
|
3478
|
" var button = $('<button/>');\n",
|
|
|
3479
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
3480
|
" 'ui-button-icon-only');\n",
|
|
|
3481
|
" button.attr('role', 'button');\n",
|
|
|
3482
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
3483
|
" button.click(method_name, toolbar_event);\n",
|
|
|
3484
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
3485
|
"\n",
|
|
|
3486
|
" var icon_img = $('<span/>');\n",
|
|
|
3487
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
3488
|
" icon_img.addClass(image);\n",
|
|
|
3489
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
3490
|
"\n",
|
|
|
3491
|
" var tooltip_span = $('<span/>');\n",
|
|
|
3492
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
3493
|
" tooltip_span.html(tooltip);\n",
|
|
|
3494
|
"\n",
|
|
|
3495
|
" button.append(icon_img);\n",
|
|
|
3496
|
" button.append(tooltip_span);\n",
|
|
|
3497
|
"\n",
|
|
|
3498
|
" nav_element.append(button);\n",
|
|
|
3499
|
" }\n",
|
|
|
3500
|
"\n",
|
|
|
3501
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
3502
|
"\n",
|
|
|
3503
|
" var fmt_picker = $('<select/>');\n",
|
|
|
3504
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
3505
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
3506
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
3507
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
3508
|
"\n",
|
|
|
3509
|
" for (var ind in mpl.extensions) {\n",
|
|
|
3510
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
3511
|
" var option = $(\n",
|
|
|
3512
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
3513
|
" fmt_picker.append(option)\n",
|
|
|
3514
|
" }\n",
|
|
|
3515
|
"\n",
|
|
|
3516
|
" // Add hover states to the ui-buttons\n",
|
|
|
3517
|
" $( \".ui-button\" ).hover(\n",
|
|
|
3518
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
3519
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
3520
|
" );\n",
|
|
|
3521
|
"\n",
|
|
|
3522
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
3523
|
" nav_element.append(status_bar);\n",
|
|
|
3524
|
" this.message = status_bar[0];\n",
|
|
|
3525
|
"}\n",
|
|
|
3526
|
"\n",
|
|
|
3527
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
3528
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
3529
|
" // which will in turn request a refresh of the image.\n",
|
|
|
3530
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
3531
|
"}\n",
|
|
|
3532
|
"\n",
|
|
|
3533
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
3534
|
" properties['type'] = type;\n",
|
|
|
3535
|
" properties['figure_id'] = this.id;\n",
|
|
|
3536
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
3537
|
"}\n",
|
|
|
3538
|
"\n",
|
|
|
3539
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
3540
|
" if (!this.waiting) {\n",
|
|
|
3541
|
" this.waiting = true;\n",
|
|
|
3542
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
3543
|
" }\n",
|
|
|
3544
|
"}\n",
|
|
|
3545
|
"\n",
|
|
|
3546
|
"\n",
|
|
|
3547
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
3548
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
3549
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
3550
|
" fig.ondownload(fig, format);\n",
|
|
|
3551
|
"}\n",
|
|
|
3552
|
"\n",
|
|
|
3553
|
"\n",
|
|
|
3554
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
3555
|
" var size = msg['size'];\n",
|
|
|
3556
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
3557
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
3558
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
3559
|
" };\n",
|
|
|
3560
|
"}\n",
|
|
|
3561
|
"\n",
|
|
|
3562
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
3563
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
3564
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
3565
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
3566
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
3567
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
3568
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
3569
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
3570
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
3571
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
3572
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
3573
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
3574
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
3575
|
"\n",
|
|
|
3576
|
" fig.rubberband_context.clearRect(\n",
|
|
|
3577
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
3578
|
"\n",
|
|
|
3579
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
3580
|
"}\n",
|
|
|
3581
|
"\n",
|
|
|
3582
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
3583
|
" // Updates the figure title.\n",
|
|
|
3584
|
" fig.header.textContent = msg['label'];\n",
|
|
|
3585
|
"}\n",
|
|
|
3586
|
"\n",
|
|
|
3587
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
3588
|
" var cursor = msg['cursor'];\n",
|
|
|
3589
|
" switch(cursor)\n",
|
|
|
3590
|
" {\n",
|
|
|
3591
|
" case 0:\n",
|
|
|
3592
|
" cursor = 'pointer';\n",
|
|
|
3593
|
" break;\n",
|
|
|
3594
|
" case 1:\n",
|
|
|
3595
|
" cursor = 'default';\n",
|
|
|
3596
|
" break;\n",
|
|
|
3597
|
" case 2:\n",
|
|
|
3598
|
" cursor = 'crosshair';\n",
|
|
|
3599
|
" break;\n",
|
|
|
3600
|
" case 3:\n",
|
|
|
3601
|
" cursor = 'move';\n",
|
|
|
3602
|
" break;\n",
|
|
|
3603
|
" }\n",
|
|
|
3604
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
3605
|
"}\n",
|
|
|
3606
|
"\n",
|
|
|
3607
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
3608
|
" fig.message.textContent = msg['message'];\n",
|
|
|
3609
|
"}\n",
|
|
|
3610
|
"\n",
|
|
|
3611
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
3612
|
" // Request the server to send over a new figure.\n",
|
|
|
3613
|
" fig.send_draw_message();\n",
|
|
|
3614
|
"}\n",
|
|
|
3615
|
"\n",
|
|
|
3616
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
3617
|
" fig.image_mode = msg['mode'];\n",
|
|
|
3618
|
"}\n",
|
|
|
3619
|
"\n",
|
|
|
3620
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
3621
|
" // Called whenever the canvas gets updated.\n",
|
|
|
3622
|
" this.send_message(\"ack\", {});\n",
|
|
|
3623
|
"}\n",
|
|
|
3624
|
"\n",
|
|
|
3625
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
3626
|
"// Called in the figure constructor.\n",
|
|
|
3627
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
3628
|
" return function socket_on_message(evt) {\n",
|
|
|
3629
|
" if (evt.data instanceof Blob) {\n",
|
|
|
3630
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
3631
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
3632
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
3633
|
" * to be part of the websocket stream */\n",
|
|
|
3634
|
" evt.data.type = \"image/png\";\n",
|
|
|
3635
|
"\n",
|
|
|
3636
|
" /* Free the memory for the previous frames */\n",
|
|
|
3637
|
" if (fig.imageObj.src) {\n",
|
|
|
3638
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
3639
|
" fig.imageObj.src);\n",
|
|
|
3640
|
" }\n",
|
|
|
3641
|
"\n",
|
|
|
3642
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
3643
|
" evt.data);\n",
|
|
|
3644
|
" fig.updated_canvas_event();\n",
|
|
|
3645
|
" fig.waiting = false;\n",
|
|
|
3646
|
" return;\n",
|
|
|
3647
|
" }\n",
|
|
|
3648
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
3649
|
" fig.imageObj.src = evt.data;\n",
|
|
|
3650
|
" fig.updated_canvas_event();\n",
|
|
|
3651
|
" fig.waiting = false;\n",
|
|
|
3652
|
" return;\n",
|
|
|
3653
|
" }\n",
|
|
|
3654
|
"\n",
|
|
|
3655
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
3656
|
" var msg_type = msg['type'];\n",
|
|
|
3657
|
"\n",
|
|
|
3658
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
3659
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
3660
|
" try {\n",
|
|
|
3661
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
3662
|
" } catch (e) {\n",
|
|
|
3663
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
3664
|
" return;\n",
|
|
|
3665
|
" }\n",
|
|
|
3666
|
"\n",
|
|
|
3667
|
" if (callback) {\n",
|
|
|
3668
|
" try {\n",
|
|
|
3669
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
3670
|
" callback(fig, msg);\n",
|
|
|
3671
|
" } catch (e) {\n",
|
|
|
3672
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
3673
|
" }\n",
|
|
|
3674
|
" }\n",
|
|
|
3675
|
" };\n",
|
|
|
3676
|
"}\n",
|
|
|
3677
|
"\n",
|
|
|
3678
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
3679
|
"mpl.findpos = function(e) {\n",
|
|
|
3680
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
3681
|
" var targ;\n",
|
|
|
3682
|
" if (!e)\n",
|
|
|
3683
|
" e = window.event;\n",
|
|
|
3684
|
" if (e.target)\n",
|
|
|
3685
|
" targ = e.target;\n",
|
|
|
3686
|
" else if (e.srcElement)\n",
|
|
|
3687
|
" targ = e.srcElement;\n",
|
|
|
3688
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
3689
|
" targ = targ.parentNode;\n",
|
|
|
3690
|
"\n",
|
|
|
3691
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
3692
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
3693
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
3694
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
3695
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
3696
|
"\n",
|
|
|
3697
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
3698
|
"};\n",
|
|
|
3699
|
"\n",
|
|
|
3700
|
"/*\n",
|
|
|
3701
|
" * return a copy of an object with only non-object keys\n",
|
|
|
3702
|
" * we need this to avoid circular references\n",
|
|
|
3703
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
3704
|
" */\n",
|
|
|
3705
|
"function simpleKeys (original) {\n",
|
|
|
3706
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
3707
|
" if (typeof original[key] !== 'object')\n",
|
|
|
3708
|
" obj[key] = original[key]\n",
|
|
|
3709
|
" return obj;\n",
|
|
|
3710
|
" }, {});\n",
|
|
|
3711
|
"}\n",
|
|
|
3712
|
"\n",
|
|
|
3713
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
3714
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
3715
|
"\n",
|
|
|
3716
|
" if (name === 'button_press')\n",
|
|
|
3717
|
" {\n",
|
|
|
3718
|
" this.canvas.focus();\n",
|
|
|
3719
|
" this.canvas_div.focus();\n",
|
|
|
3720
|
" }\n",
|
|
|
3721
|
"\n",
|
|
|
3722
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
3723
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
3724
|
"\n",
|
|
|
3725
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
3726
|
" step: event.step,\n",
|
|
|
3727
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
3728
|
"\n",
|
|
|
3729
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
3730
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
3731
|
" * to control all of the cursor setting manually through the\n",
|
|
|
3732
|
" * 'cursor' event from matplotlib */\n",
|
|
|
3733
|
" event.preventDefault();\n",
|
|
|
3734
|
" return false;\n",
|
|
|
3735
|
"}\n",
|
|
|
3736
|
"\n",
|
|
|
3737
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
3738
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
3739
|
"}\n",
|
|
|
3740
|
"\n",
|
|
|
3741
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
3742
|
"\n",
|
|
|
3743
|
" // Prevent repeat events\n",
|
|
|
3744
|
" if (name == 'key_press')\n",
|
|
|
3745
|
" {\n",
|
|
|
3746
|
" if (event.which === this._key)\n",
|
|
|
3747
|
" return;\n",
|
|
|
3748
|
" else\n",
|
|
|
3749
|
" this._key = event.which;\n",
|
|
|
3750
|
" }\n",
|
|
|
3751
|
" if (name == 'key_release')\n",
|
|
|
3752
|
" this._key = null;\n",
|
|
|
3753
|
"\n",
|
|
|
3754
|
" var value = '';\n",
|
|
|
3755
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
3756
|
" value += \"ctrl+\";\n",
|
|
|
3757
|
" if (event.altKey && event.which != 18)\n",
|
|
|
3758
|
" value += \"alt+\";\n",
|
|
|
3759
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
3760
|
" value += \"shift+\";\n",
|
|
|
3761
|
"\n",
|
|
|
3762
|
" value += 'k';\n",
|
|
|
3763
|
" value += event.which.toString();\n",
|
|
|
3764
|
"\n",
|
|
|
3765
|
" this._key_event_extra(event, name);\n",
|
|
|
3766
|
"\n",
|
|
|
3767
|
" this.send_message(name, {key: value,\n",
|
|
|
3768
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
3769
|
" return false;\n",
|
|
|
3770
|
"}\n",
|
|
|
3771
|
"\n",
|
|
|
3772
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
3773
|
" if (name == 'download') {\n",
|
|
|
3774
|
" this.handle_save(this, null);\n",
|
|
|
3775
|
" } else {\n",
|
|
|
3776
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
3777
|
" }\n",
|
|
|
3778
|
"};\n",
|
|
|
3779
|
"\n",
|
|
|
3780
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
3781
|
" this.message.textContent = tooltip;\n",
|
|
|
3782
|
"};\n",
|
|
|
3783
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
3784
|
"\n",
|
|
|
3785
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
3786
|
"\n",
|
|
|
3787
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
3788
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
3789
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
3790
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
3791
|
" var ws = {};\n",
|
|
|
3792
|
"\n",
|
|
|
3793
|
" ws.close = function() {\n",
|
|
|
3794
|
" comm.close()\n",
|
|
|
3795
|
" };\n",
|
|
|
3796
|
" ws.send = function(m) {\n",
|
|
|
3797
|
" //console.log('sending', m);\n",
|
|
|
3798
|
" comm.send(m);\n",
|
|
|
3799
|
" };\n",
|
|
|
3800
|
" // Register the callback with on_msg.\n",
|
|
|
3801
|
" comm.on_msg(function(msg) {\n",
|
|
|
3802
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
3803
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
3804
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
3805
|
" });\n",
|
|
|
3806
|
" return ws;\n",
|
|
|
3807
|
"}\n",
|
|
|
3808
|
"\n",
|
|
|
3809
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
3810
|
" // This is the function which gets called when the mpl process\n",
|
|
|
3811
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
3812
|
"\n",
|
|
|
3813
|
" var id = msg.content.data.id;\n",
|
|
|
3814
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
3815
|
" // socket was opened in Python.\n",
|
|
|
3816
|
" var element = $(\"#\" + id);\n",
|
|
|
3817
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
3818
|
"\n",
|
|
|
3819
|
" function ondownload(figure, format) {\n",
|
|
|
3820
|
" window.open(figure.imageObj.src);\n",
|
|
|
3821
|
" }\n",
|
|
|
3822
|
"\n",
|
|
|
3823
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
3824
|
" ondownload,\n",
|
|
|
3825
|
" element.get(0));\n",
|
|
|
3826
|
"\n",
|
|
|
3827
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
3828
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
3829
|
" ws_proxy.onopen();\n",
|
|
|
3830
|
"\n",
|
|
|
3831
|
" fig.parent_element = element.get(0);\n",
|
|
|
3832
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
3833
|
" if (!fig.cell_info) {\n",
|
|
|
3834
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
3835
|
" return;\n",
|
|
|
3836
|
" }\n",
|
|
|
3837
|
"\n",
|
|
|
3838
|
" var output_index = fig.cell_info[2]\n",
|
|
|
3839
|
" var cell = fig.cell_info[0];\n",
|
|
|
3840
|
"\n",
|
|
|
3841
|
"};\n",
|
|
|
3842
|
"\n",
|
|
|
3843
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
3844
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
3845
|
" fig.root.unbind('remove')\n",
|
|
|
3846
|
"\n",
|
|
|
3847
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
3848
|
" fig.push_to_output();\n",
|
|
|
3849
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
3850
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
3851
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
3852
|
" IPython.keyboard_manager.enable()\n",
|
|
|
3853
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
3854
|
" fig.close_ws(fig, msg);\n",
|
|
|
3855
|
"}\n",
|
|
|
3856
|
"\n",
|
|
|
3857
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
3858
|
" fig.send_message('closing', msg);\n",
|
|
|
3859
|
" // fig.ws.close()\n",
|
|
|
3860
|
"}\n",
|
|
|
3861
|
"\n",
|
|
|
3862
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
3863
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
3864
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
3865
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
3866
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
3867
|
"}\n",
|
|
|
3868
|
"\n",
|
|
|
3869
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
3870
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
3871
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
3872
|
" this.send_message(\"ack\", {});\n",
|
|
|
3873
|
" var fig = this;\n",
|
|
|
3874
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
3875
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
3876
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
3877
|
"}\n",
|
|
|
3878
|
"\n",
|
|
|
3879
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
3880
|
" var fig = this;\n",
|
|
|
3881
|
"\n",
|
|
|
3882
|
" var nav_element = $('<div/>')\n",
|
|
|
3883
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
3884
|
" this.root.append(nav_element);\n",
|
|
|
3885
|
"\n",
|
|
|
3886
|
" // Define a callback function for later on.\n",
|
|
|
3887
|
" function toolbar_event(event) {\n",
|
|
|
3888
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
3889
|
" }\n",
|
|
|
3890
|
" function toolbar_mouse_event(event) {\n",
|
|
|
3891
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
3892
|
" }\n",
|
|
|
3893
|
"\n",
|
|
|
3894
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
3895
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
3896
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
3897
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
3898
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
3899
|
"\n",
|
|
|
3900
|
" if (!name) { continue; };\n",
|
|
|
3901
|
"\n",
|
|
|
3902
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
3903
|
" button.click(method_name, toolbar_event);\n",
|
|
|
3904
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
3905
|
" nav_element.append(button);\n",
|
|
|
3906
|
" }\n",
|
|
|
3907
|
"\n",
|
|
|
3908
|
" // Add the status bar.\n",
|
|
|
3909
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
3910
|
" nav_element.append(status_bar);\n",
|
|
|
3911
|
" this.message = status_bar[0];\n",
|
|
|
3912
|
"\n",
|
|
|
3913
|
" // Add the close button to the window.\n",
|
|
|
3914
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
3915
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
3916
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
3917
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
3918
|
" buttongrp.append(button);\n",
|
|
|
3919
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
3920
|
" titlebar.prepend(buttongrp);\n",
|
|
|
3921
|
"}\n",
|
|
|
3922
|
"\n",
|
|
|
3923
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
3924
|
" var fig = this\n",
|
|
|
3925
|
" el.on(\"remove\", function(){\n",
|
|
|
3926
|
"\tfig.close_ws(fig, {});\n",
|
|
|
3927
|
" });\n",
|
|
|
3928
|
"}\n",
|
|
|
3929
|
"\n",
|
|
|
3930
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
3931
|
" // this is important to make the div 'focusable\n",
|
|
|
3932
|
" el.attr('tabindex', 0)\n",
|
|
|
3933
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
3934
|
" // off when our div gets focus\n",
|
|
|
3935
|
"\n",
|
|
|
3936
|
" // location in version 3\n",
|
|
|
3937
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
3938
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
3939
|
" }\n",
|
|
|
3940
|
" else {\n",
|
|
|
3941
|
" // location in version 2\n",
|
|
|
3942
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
3943
|
" }\n",
|
|
|
3944
|
"\n",
|
|
|
3945
|
"}\n",
|
|
|
3946
|
"\n",
|
|
|
3947
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
3948
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
3949
|
" if (!manager)\n",
|
|
|
3950
|
" manager = IPython.keyboard_manager;\n",
|
|
|
3951
|
"\n",
|
|
|
3952
|
" // Check for shift+enter\n",
|
|
|
3953
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
3954
|
" this.canvas_div.blur();\n",
|
|
|
3955
|
" event.shiftKey = false;\n",
|
|
|
3956
|
" // Send a \"J\" for go to next cell\n",
|
|
|
3957
|
" event.which = 74;\n",
|
|
|
3958
|
" event.keyCode = 74;\n",
|
|
|
3959
|
" manager.command_mode();\n",
|
|
|
3960
|
" manager.handle_keydown(event);\n",
|
|
|
3961
|
" }\n",
|
|
|
3962
|
"}\n",
|
|
|
3963
|
"\n",
|
|
|
3964
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
3965
|
" fig.ondownload(fig, null);\n",
|
|
|
3966
|
"}\n",
|
|
|
3967
|
"\n",
|
|
|
3968
|
"\n",
|
|
|
3969
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
3970
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
3971
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
3972
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
3973
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
3974
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
3975
|
" var ncells = cells.length;\n",
|
|
|
3976
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
3977
|
" var cell = cells[i];\n",
|
|
|
3978
|
" if (cell.cell_type === 'code'){\n",
|
|
|
3979
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
3980
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
3981
|
" if (data.data) {\n",
|
|
|
3982
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
3983
|
" data = data.data;\n",
|
|
|
3984
|
" }\n",
|
|
|
3985
|
" if (data['text/html'] == html_output) {\n",
|
|
|
3986
|
" return [cell, data, j];\n",
|
|
|
3987
|
" }\n",
|
|
|
3988
|
" }\n",
|
|
|
3989
|
" }\n",
|
|
|
3990
|
" }\n",
|
|
|
3991
|
"}\n",
|
|
|
3992
|
"\n",
|
|
|
3993
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
3994
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
3995
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
3996
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
3997
|
"}\n"
|
|
|
3998
|
],
|
|
|
3999
|
"text/plain": [
|
|
|
4000
|
"<IPython.core.display.Javascript object>"
|
|
|
4001
|
]
|
|
|
4002
|
},
|
|
|
4003
|
"metadata": {},
|
|
|
4004
|
"output_type": "display_data"
|
|
|
4005
|
},
|
|
|
4006
|
{
|
|
|
4007
|
"data": {
|
|
|
4008
|
"text/html": [
|
|
|
4009
|
"<img src=\"data:image/png;base64,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kPv+qVOnRpZl8cwzz+Q+JwBDPgGYpLW0tESWZXHrrbfWXps4cWJ897vfjTlz5sTs2bPjwgsvjCzL4pRTTomdO//tn9EdPXp0HHXUUXVf86233oosy2LixIkREbFo0aLIsiymT59e9+x3vvOdyLIs3nnnndw5X3311Whtbe1y5s6da4GRq3MAfmvHW2WPAwAAAADJSyUAL1y4MDZs2BDr16+P1tbWuOSSS6JPnz5x//33577/e9/7XmRZFmvXrs19TgCGfAIwyXruuefiwAMPjJNPPrnL7+vtzuWXXx5ZlsXs2bNrr40cOTI+8YlP1D3b3t4eWZbFhAkTIiLiwQcfjCzLYs6cOXXPfv/7348sy2LTpk25nz9p0qTIsqzbY4GxJ50D8Bvb3yh7HAAAAABIXioBePfTv3//mDZtWu57X3/99Tj00ENjxIgRhZ8jAEM+AZgkvfLKK3HUUUfFEUccEWvWrCl8/u23344+ffrEV77yldprfgKYfV3nALz5nc1ljwMAAAAAydtjuJz/3YifnrXvnPnf3avv790AfMMNN8SCBQtiwYIFMWPGjBg1alTsv//+ceedd3b7vvb29hg1alT069cvnn766b3/e/z/BGBSJwCTnM2bN8ewYcPi4IMPjiVLlrzn9w0ZMiS+8IUv1P580UUXxcCBA/0OYPZZnQPwxm0byx4HAAAAAJK3x3D507MiJh2475yfnrVX39+efgdwe3t7HH/88XHYYYfF9u3b69739a9/fY8/SPW+/h7/P/fnpE4AJinbtm2LESNGxMCBA+ORRx55z+974403Yr/99ouLL7649tr1118fWZbVReSZM2dGlmXx4IMP1l4bMmRIjBkzpu7rHnvssTFy5Mi9+E4sMIp1DsAb3t5Q9jgAAAAAkLxUfgJ49wAcETFhwoRu77Qvu+yyyLIsrrzyyvf8OQIw5BOAScauXbvinHPOif333z/uvffebp/Ztm1bvPFG/e9Kffefar7rrrtqr61evTr69u0b48ePr73W0dERI0aMiMMPP7zL7xX+2te+FgMGDIhVq1bVXlu4cGFkWRY33njjXn0/FhhFOgfgV996texxAAAAACB5qfwO4O4C8Pjx4yPLsnjsscdqr737g1bf+ta33tfnCMCQTwAmGe/+v4vOPvvsaGlpqTsREStXroyDDjooLr300rjuuuviuuuui7PO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pbZt28psNquoqEj79u07Yb+BQEBRUVFq3bq1OnfuLJvNdsLtPvroI+Xm5urCCy/U//zP/2jIkCF6//33f1KfAHAiBMAAmrRRo0apVatWmjdvnrxer7p166ZWrVrppZdeauxdA84qw4cPV/v27VVYWCi/36+ioiJdfvnlateunf7yl7/Ubvfhhx/qf//3f9WpUydVVFRo5cqVuuiiixQbG6sDBw7U6XPRokUyDENTpkyRz+dTdna2DMPQgw8+WGe7+vQJhKMPP/xQbdu2Vbt27UIC4O3bt+u8885TfHy83G63Fi9erNatW2vgwIEh/ZzqnFefPoFw8Nxzz+ncc89VSkqKSktL5fP5tHDhQs2fP792G8Ya8NPt3r1bP//5z3XNNdforrvuktfr1cSJE2UYhoYMGVK7HeMNqL9du3bJMAxdffXV6t2790kD4MY+XjvVPoGz2amMt2+++UaGYSg1NVUrVqyQz+fTTTfdpBYtWqh37946cuRIne09Ho8Mw9Dw4cPl8/k0btw4GYah1atXh/TbpUsXXXbZZVqzZo1KS0vVoUMHXXXVVfr8889Pq08AOBkCYABN1quvvirDMLR27dratn379qlTp07q1q1bI+4ZcPbZunVryMH7u+++q9atW2vMmDG1bdOnT1ebNm30wQcf1LZt3rxZhmHI6/XWtn300Uc655xzVFBQUNt25MgRpaen66qrrtLhw4fr3ScQrkaOHKm+ffuqV69eIQFwVlaWrrjiCu3du7e2ze/3yzAMPffcc7Vt9ZnzTrVPIBzs3btXl19+uYYNG6bq6uqTbsdYA366lStXyjAM7dixo077+PHjZRiGvvzyS0mMN+B07N+/Xx9//LEk6fXXXz9pANyYx2v16RM4m53KeDtw4IC2bt0a8tg777xThmFo8+bNtW3ff/+9LrnkEmVnZ9fZdsyYMWrXrl3t/ChJa9askWEYeu2112rb3n77bbVs2VK33nrrafUJACdDAAygyZo/f75atmxZZxFAklatWiXDMLR79+5G2jOg6ejatau6du1a+/Vll12m3NzckO0iIiLUr1+/2q+dTqcMw9DOnTvrbLd+/XoZhlHnqo1T7RMIR1u2bFHLli315ptvhgTAe/fuVatWrepcpSjVLDacf/75mjRpUm3bqc559ekTCAdut1uGYeitt96SJH377bchQTBjDTgzFi5cKMMw9Nlnn4W0t2jRQt9++y3jDTgDfiwAbszjtfr0CTQVPzbeTuTNN9+UYRh1Por56aeflmEYevrpp+ts+/LLL8swDK1bt662LSkpSUlJSSH9ZmRkqFOnTqfVJwCcDAEwgCarf//+io6ODml//vnnZRiGnnzyyUbYK6DpOHLkiK688kplZGRIqjmj2zAMrVmzJmTbsWPH6uKLL679evLkyWrXrl3Ixx797W9/q3MwVJ8+gXBz+PBhxcTEKD8/X5JCAuD/+7//k2EYevjhh0Me26NHjzonZ5zqnFefPoFwMHz4cF1wwQXavHmzIiIiZBiG2rVrp2nTptXen42xBpwZzzzzTO3HPW/fvl27d+/WQw89pAsuuEBz5syRxHgDzoSTBVKNfbx2qn0CTUl9A+BNmzbJMIw6975esWKFDMPQJ598UmfbAwcOqEWLFpo7d66kmvsKt27dWtOnTw/p9/bbb5dhGPr666/r1ScA/BgCYABNltlsVt++fUPad+7cKcMw5PF4GmGvgKZj3bp1MgxDwWBQ0r8PfO67776QbefPny/DMLR//35JUnZ2tjp27Biy3XfffSfDMLRo0aJ69wmEG4fDoQsvvFCffvqppNAA+NFHH5VhGHrxxRdDHpubm6v27dvXfn2qc159+gTCQUxMjNq2bau2bduqsLBQjz/+uAoLC2UYhkaNGiWJsQacSUVFRWrTpo0Mw6itxYsX136f8Qb8dCcLpBr7eO1U+wSakvoGwP3799cFF1ygr776qratoKBALVu2POH2l156ae170s8++0yGYWj58uUh2x27wv6dd96pV58A8GMIgAE0WR07dlRWVlZI+/vvvy/DMFRWVtYIewU0DW+//bYuuOACdevWrfZeTS+++OJJr65YsmSJDMOoPcjp27fvCa/YqK6ulmEYmj17dr37BMLJ559/rosvvljFxcW1bT8MgO+77z4ZhqFXX3015PHjxo3ThRdeWPv1qc559ekTCAcdO3aUYRiaNm1anfb8/HwZhqF3332XsQacQevWrVNmZqZ8Pp8ef/xx5eXl6Wc/+5nsdrsk5jbgTDhZINXYx2un2ifQlNQnAF65cqUMw5DL5arTnpeXpzZt2pzwMR06dNDQoUMlSbt37z7pFffBYFCGYWj79u316hMAfgwBMIAmiyuAgdPz8ccfq2PHjurQoYP+8Y9/1LY39hnlQDiZNm2aOnfurAMHDtS2cQUwcOaZzWYZhqEtW7bUad+yZYsMw9C9997LWAPOkAcffFBt2rTRhx9+WKd94sSJatu2rT7//HPGG3AGcAUw0HBONQB+6KGH9LOf/eyE953nCmAAZysCYABNFvcABupvz549iouL08UXX6ydO3fW+V597//Utm1b7gEMnMC7776rFi1ayGazadeuXbWVkpKiiIgI7dq1S1988QX3SQTOgAEDBtRZLDvm7bfflmEYKi8vZ6wBZ0h6errS0tJC2p944gkZhqHNmzcz3oAz4EzdA/hMH6+dap9AU3IqAfCmTZt07rnnKicnR4cOHQr5PvcABnC2IgAG0GTNmzdPLVu21N69e+u0H/tIlt27dzfSngFnp3379ik9PV1t27bVyy+/fMJtLr30UuXm5oa0R0RE1LlCw+FwyDCMkBD5gQceCLlC41T7BMLF7373uzr3RjxRzZ49W3v27FGrVq00f/78Oo8/cOCAzj//fOXl5dW2neqcV58+gXCwaNEiGYahF154oU77Cy+8IMMw9MADDzDWgDMkIiJCKSkpIe0PP/ywDMPQM888w3gDzoAfC6Qa83itPn0CTcV/CoBfeeUVtWvXTmlpafr+++9PuM1TTz0lwzD09NNP12nfunVryBX2iYmJSkpKCuljwIABda6wr0+fAHAyBMAAmqxXXnlFhmFo7dq1tW379+9X586dT7gwATRnhw8f1pAhQ9SqVauQA4jjTZs2TW3atKlzAsWxqzDcbndt24cffqhzzjlHBQUFtW1HjhxRenq6rrzyytr7CtenTyBcfPbZZ9qwYUNImc1mXX311dqwYYPefPNNSdLAgQN1xRVX1J7pLUmBQKB2If2Y+sx5p9onEA7+9Kc/yTAM3XjjjXXaR48erVatWtXe6oCxBvx0OTk5Ovfcc/XXv/61Tvt1112nFi1aMN6AM+THAqnGPF6rT59AU/Fj4+2tt97SJZdcIrPZrC+//PKkfXz//fe6+OKLlZOTU6d97Nixatu2rb744ovattWrV8swDL3++uu1be+8845atmyphQsXnlafAHAyBMAAmrTc3Nzas8G9Xq/S0tLUqlWrkPvAAc3d7NmzZRiGBg8erHXr1oXUMbt379Yll1yiTp06yWazadWqVbroootktVpD7tV77J5QU6dOld/vV3Z2du3VVserT59AOPvhPYAladu2bWrdurXi4+Pldru1ePFinXfeecrIyAh5/KnOefXpEwgHeXl5MgxDN9xwg5xOp3Jzc2UYhm699dbabRhrwE+3ZcsWtWzZUpdddpmWL18up9OprKwsGYahyZMn127HeANOj91uV1FRkaZPny7DMHT99derqKhIRUVF2rNnj6TGP1471T6Bs91/Gm9ff/21OnTooBYtWmj16tUhayg//FS1Y/fwHTFihPx+v8aPHy/DMLRy5co623399dfq1KmTLrvsMt19990qKytThw4d9Itf/EKffvrpafUJACdDAAygSdu3b5/mzZun9u3bq3Xr1kpKStKzzz7b2LsFnHV69er1ox9He7wdO3YoIyNDbdu21c9//nONGTNG//rXv0L6rK6u1qpVq3TNNdfo3HPPldls1v3333/C5z/VPoFwdqIAWJJeeuklpaWl6bzzztOll16qgoKCOlc4HVOfOe9U+wTCwcGDB3XHHXfommuu0TnnnKPOnTurrKwsZDvGGvDTvfrqq8rKylL79u11zjnnKCIiQitXrgy5JyLjDai/a6655qTHa7t27ardrjGP1+rTJ3A2+0/jbdeuXT+6hjJhwoSQPn0+nyIjI3XuueeqU6dOKisrC7lntlRzNf2IESN0wQUX6Pzzz1dOTo7ee++9E+7nqfYJACdCAAwAAAAAAAAAAAAAYYIAGAAAAAAAAAAAAADCBAEwAAAAAAAAAAAAAIQJAmAAAAAAAAAAAAAACBMEwAAAAAAAAAAAAAAQJgiAAQAAAAAAAAAAACBMEAADAAAAAAAAAAAAQJggAAYAAAAAAAAAAACAMEEADAAAAAAAAAAAAABhggAYAAAAAAAAAAAAAMIEATAAAAAAAAAAAAAAhAkCYAAAAAAAAAAAAAAIEwTAAAAAAAAAAAAAABAmCIABAAAAAAAAAAAAIEwQAAMAAAAAAAAAAABAmCAABgAAAAAAAAAAAIAwQQAMAAAAAAAAAAAAAGGCABgAAAAAAAAAAAAAwgQBMAAAAAAAAAAAAACECQJgAAAAAAAAAAAAAAgTBMAAAAAAAAAAAAAAECYIgAEAAAAAAAAAAAAgTBAAAwAAAAAAAAAAAECYIAAGAAAAAAAAAAAAgDBBAAwAAAAAAAAAAAAAYYIAGAAAAAAAAAAAAADCBAEwAAAAAAAAAAAAAIQJAmAAAAAAAAAAAAAACBMEwAAAAAAAAAAAAAAQJgiAAQAAAAAAAAAAACBMEAADAAAAAAAAAAAAQJggAAYAAAAAAAAAAACAMEEADAAAAAAAAAAAAABhggAYAAAAAAAAAAAAAMIEATAAAAAAAAAAAAAAhAkCYAAAAAAAAAAAAAAIEwTAAAAAAAAAAAAAABAmCIABAAAAAAAAAAAAIEwQAAMAAAAAAAAAAABAmCAABgAAAAAAAAAAAIAwQQAMAAAAAAAAAAAAAGGCABgAAAAAAAAAAAAAwgQBMAAAAAAAAAAAAACECQJgAAAAAAAAAAAAAAgTBMAAAAAAAAAAAAAAECYIgAEAAAAAAAAAAAAgTBAAAwAAAAAAAAAAAECYIAAGAAAAAAAAAAAAgDBBAAwAAAAAAAAAAAAAYYIAGAAAAAAAAAAAAADCBAEwAAAAAAAAAAAAAIQJAmAAAAAAAAAAAAAACBMEwAAAAAAAAAAAAAAQJgiAAQAAAAAAAAAAACBMEAADAAAAAAAAAAAAQJggAAYAAAAAAAAAAACAMEEADAAAAAAAAAAAAABhggAYAAAAAAAAAAAAAMIEATAAAAAAAAAAAAAAhAkCYAAAAAAAAAAAAAAIEwTAAAAAAAAAAAAAABAmCIABAAAAAAAAAAAAIEwQAAMAAAAAAAAAAABAmCAABgAAAAAAAAAAAIAwQQAMAAAAAAAAAAAAAGGCABgAAAAAAAAAAAAAwgQBMAAAAAAAAAAAAACECQJgAAAAAAAAAAAAAAgTBMAAAAAAAAAAAAAAECYIgAEAAAAAAAAAAAAgTBAAAwAAAAAAAAAAAECYIAAGAAAAAAAAAAAAgDBBAAwAAAAAAAAAAAAAYYIAGAAAAAAAAAAAAADCBAEwAAAAAAAAAAAAAIQJAmAAAAAAAAAAAAAACBMEwAAAAAAAAAAAAAAQJgiAAQAAAAAAAAAAACBMEAADAAAAAAAAAAAAQJggAAYAAAAAAAAAAACAMPH/AdTWXH00KWyfAAAAAElFTkSuQmCC\" width=\"1600\">"
|
|
|
4010
|
],
|
|
|
4011
|
"text/plain": [
|
|
|
4012
|
"<IPython.core.display.HTML object>"
|
|
|
4013
|
]
|
|
|
4014
|
},
|
|
|
4015
|
"metadata": {},
|
|
|
4016
|
"output_type": "display_data"
|
|
|
4017
|
}
|
|
|
4018
|
],
|
|
|
4019
|
"source": [
|
|
|
4020
|
"for i in range(18,23):\n",
|
|
|
4021
|
" plt.figure()\n",
|
|
|
4022
|
" for ch in [\"B1\",\"B2\",\"B3\"]:\n",
|
|
|
4023
|
" spec = TF.fft(res.SWF(0,i)[ch], TF.LFR_Fs0)\n",
|
|
|
4024
|
" plt.plot(spec[\"f\"],spec[\"mod\"])\n",
|
|
|
4025
|
" plt.legend([\"B1\",\"B2\",\"B3\"])\n",
|
|
|
4026
|
" plt.show()"
|
|
|
4027
|
]
|
|
|
4028
|
},
|
|
|
4029
|
{
|
|
|
4030
|
"cell_type": "markdown",
|
|
|
4031
|
"metadata": {},
|
|
|
4032
|
"source": [
|
|
|
4033
|
"# Snapshot FFTs at F1"
|
|
|
4034
|
]
|
|
|
4035
|
},
|
|
|
4036
|
{
|
|
|
4037
|
"cell_type": "code",
|
|
|
4038
|
"execution_count": 6,
|
|
|
4039
|
"metadata": {
|
|
|
4040
|
"ExecuteTime": {
|
|
|
4041
|
"end_time": "2018-06-28T15:31:57.714938Z",
|
|
|
4042
|
"start_time": "2018-06-28T15:31:57.592323Z"
|
|
|
4043
|
},
|
|
|
4044
|
"scrolled": false
|
|
|
4045
|
},
|
|
|
4046
|
"outputs": [
|
|
|
4047
|
{
|
|
|
4048
|
"data": {
|
|
|
4049
|
"application/javascript": [
|
|
|
4050
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
4051
|
"window.mpl = {};\n",
|
|
|
4052
|
"\n",
|
|
|
4053
|
"\n",
|
|
|
4054
|
"mpl.get_websocket_type = function() {\n",
|
|
|
4055
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
4056
|
" return WebSocket;\n",
|
|
|
4057
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
4058
|
" return MozWebSocket;\n",
|
|
|
4059
|
" } else {\n",
|
|
|
4060
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
4061
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
4062
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
4063
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
4064
|
" };\n",
|
|
|
4065
|
"}\n",
|
|
|
4066
|
"\n",
|
|
|
4067
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
4068
|
" this.id = figure_id;\n",
|
|
|
4069
|
"\n",
|
|
|
4070
|
" this.ws = websocket;\n",
|
|
|
4071
|
"\n",
|
|
|
4072
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
4073
|
"\n",
|
|
|
4074
|
" if (!this.supports_binary) {\n",
|
|
|
4075
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
4076
|
" if (warnings) {\n",
|
|
|
4077
|
" warnings.style.display = 'block';\n",
|
|
|
4078
|
" warnings.textContent = (\n",
|
|
|
4079
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
4080
|
" \"Performance may be slow.\");\n",
|
|
|
4081
|
" }\n",
|
|
|
4082
|
" }\n",
|
|
|
4083
|
"\n",
|
|
|
4084
|
" this.imageObj = new Image();\n",
|
|
|
4085
|
"\n",
|
|
|
4086
|
" this.context = undefined;\n",
|
|
|
4087
|
" this.message = undefined;\n",
|
|
|
4088
|
" this.canvas = undefined;\n",
|
|
|
4089
|
" this.rubberband_canvas = undefined;\n",
|
|
|
4090
|
" this.rubberband_context = undefined;\n",
|
|
|
4091
|
" this.format_dropdown = undefined;\n",
|
|
|
4092
|
"\n",
|
|
|
4093
|
" this.image_mode = 'full';\n",
|
|
|
4094
|
"\n",
|
|
|
4095
|
" this.root = $('<div/>');\n",
|
|
|
4096
|
" this._root_extra_style(this.root)\n",
|
|
|
4097
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
4098
|
"\n",
|
|
|
4099
|
" $(parent_element).append(this.root);\n",
|
|
|
4100
|
"\n",
|
|
|
4101
|
" this._init_header(this);\n",
|
|
|
4102
|
" this._init_canvas(this);\n",
|
|
|
4103
|
" this._init_toolbar(this);\n",
|
|
|
4104
|
"\n",
|
|
|
4105
|
" var fig = this;\n",
|
|
|
4106
|
"\n",
|
|
|
4107
|
" this.waiting = false;\n",
|
|
|
4108
|
"\n",
|
|
|
4109
|
" this.ws.onopen = function () {\n",
|
|
|
4110
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
4111
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
4112
|
" if (mpl.ratio != 1) {\n",
|
|
|
4113
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
4114
|
" }\n",
|
|
|
4115
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
4116
|
" }\n",
|
|
|
4117
|
"\n",
|
|
|
4118
|
" this.imageObj.onload = function() {\n",
|
|
|
4119
|
" if (fig.image_mode == 'full') {\n",
|
|
|
4120
|
" // Full images could contain transparency (where diff images\n",
|
|
|
4121
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
4122
|
" // there is no ghosting.\n",
|
|
|
4123
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
4124
|
" }\n",
|
|
|
4125
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
4126
|
" };\n",
|
|
|
4127
|
"\n",
|
|
|
4128
|
" this.imageObj.onunload = function() {\n",
|
|
|
4129
|
" fig.ws.close();\n",
|
|
|
4130
|
" }\n",
|
|
|
4131
|
"\n",
|
|
|
4132
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
4133
|
"\n",
|
|
|
4134
|
" this.ondownload = ondownload;\n",
|
|
|
4135
|
"}\n",
|
|
|
4136
|
"\n",
|
|
|
4137
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
4138
|
" var titlebar = $(\n",
|
|
|
4139
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
4140
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
4141
|
" var titletext = $(\n",
|
|
|
4142
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
4143
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
4144
|
" titlebar.append(titletext)\n",
|
|
|
4145
|
" this.root.append(titlebar);\n",
|
|
|
4146
|
" this.header = titletext[0];\n",
|
|
|
4147
|
"}\n",
|
|
|
4148
|
"\n",
|
|
|
4149
|
"\n",
|
|
|
4150
|
"\n",
|
|
|
4151
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
4152
|
"\n",
|
|
|
4153
|
"}\n",
|
|
|
4154
|
"\n",
|
|
|
4155
|
"\n",
|
|
|
4156
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
4157
|
"\n",
|
|
|
4158
|
"}\n",
|
|
|
4159
|
"\n",
|
|
|
4160
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
4161
|
" var fig = this;\n",
|
|
|
4162
|
"\n",
|
|
|
4163
|
" var canvas_div = $('<div/>');\n",
|
|
|
4164
|
"\n",
|
|
|
4165
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
4166
|
"\n",
|
|
|
4167
|
" function canvas_keyboard_event(event) {\n",
|
|
|
4168
|
" return fig.key_event(event, event['data']);\n",
|
|
|
4169
|
" }\n",
|
|
|
4170
|
"\n",
|
|
|
4171
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
4172
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
4173
|
" this.canvas_div = canvas_div\n",
|
|
|
4174
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
4175
|
" this.root.append(canvas_div);\n",
|
|
|
4176
|
"\n",
|
|
|
4177
|
" var canvas = $('<canvas/>');\n",
|
|
|
4178
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
4179
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
4180
|
"\n",
|
|
|
4181
|
" this.canvas = canvas[0];\n",
|
|
|
4182
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
4183
|
"\n",
|
|
|
4184
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
4185
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
4186
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
4187
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
4188
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
4189
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
4190
|
"\n",
|
|
|
4191
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
4192
|
"\n",
|
|
|
4193
|
" var rubberband = $('<canvas/>');\n",
|
|
|
4194
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
4195
|
"\n",
|
|
|
4196
|
" var pass_mouse_events = true;\n",
|
|
|
4197
|
"\n",
|
|
|
4198
|
" canvas_div.resizable({\n",
|
|
|
4199
|
" start: function(event, ui) {\n",
|
|
|
4200
|
" pass_mouse_events = false;\n",
|
|
|
4201
|
" },\n",
|
|
|
4202
|
" resize: function(event, ui) {\n",
|
|
|
4203
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
4204
|
" },\n",
|
|
|
4205
|
" stop: function(event, ui) {\n",
|
|
|
4206
|
" pass_mouse_events = true;\n",
|
|
|
4207
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
4208
|
" },\n",
|
|
|
4209
|
" });\n",
|
|
|
4210
|
"\n",
|
|
|
4211
|
" function mouse_event_fn(event) {\n",
|
|
|
4212
|
" if (pass_mouse_events)\n",
|
|
|
4213
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
4214
|
" }\n",
|
|
|
4215
|
"\n",
|
|
|
4216
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
4217
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
4218
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
4219
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
4220
|
"\n",
|
|
|
4221
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
4222
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
4223
|
"\n",
|
|
|
4224
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
4225
|
" event = event.originalEvent;\n",
|
|
|
4226
|
" event['data'] = 'scroll'\n",
|
|
|
4227
|
" if (event.deltaY < 0) {\n",
|
|
|
4228
|
" event.step = 1;\n",
|
|
|
4229
|
" } else {\n",
|
|
|
4230
|
" event.step = -1;\n",
|
|
|
4231
|
" }\n",
|
|
|
4232
|
" mouse_event_fn(event);\n",
|
|
|
4233
|
" });\n",
|
|
|
4234
|
"\n",
|
|
|
4235
|
" canvas_div.append(canvas);\n",
|
|
|
4236
|
" canvas_div.append(rubberband);\n",
|
|
|
4237
|
"\n",
|
|
|
4238
|
" this.rubberband = rubberband;\n",
|
|
|
4239
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
4240
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
4241
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
4242
|
"\n",
|
|
|
4243
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
4244
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
4245
|
" // canvas in synch.\n",
|
|
|
4246
|
" canvas_div.css('width', width)\n",
|
|
|
4247
|
" canvas_div.css('height', height)\n",
|
|
|
4248
|
"\n",
|
|
|
4249
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
4250
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
4251
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
4252
|
"\n",
|
|
|
4253
|
" rubberband.attr('width', width);\n",
|
|
|
4254
|
" rubberband.attr('height', height);\n",
|
|
|
4255
|
" }\n",
|
|
|
4256
|
"\n",
|
|
|
4257
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
4258
|
" // upon first draw.\n",
|
|
|
4259
|
" this._resize_canvas(600, 600);\n",
|
|
|
4260
|
"\n",
|
|
|
4261
|
" // Disable right mouse context menu.\n",
|
|
|
4262
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
4263
|
" return false;\n",
|
|
|
4264
|
" });\n",
|
|
|
4265
|
"\n",
|
|
|
4266
|
" function set_focus () {\n",
|
|
|
4267
|
" canvas.focus();\n",
|
|
|
4268
|
" canvas_div.focus();\n",
|
|
|
4269
|
" }\n",
|
|
|
4270
|
"\n",
|
|
|
4271
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
4272
|
"}\n",
|
|
|
4273
|
"\n",
|
|
|
4274
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
4275
|
" var fig = this;\n",
|
|
|
4276
|
"\n",
|
|
|
4277
|
" var nav_element = $('<div/>')\n",
|
|
|
4278
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
4279
|
" this.root.append(nav_element);\n",
|
|
|
4280
|
"\n",
|
|
|
4281
|
" // Define a callback function for later on.\n",
|
|
|
4282
|
" function toolbar_event(event) {\n",
|
|
|
4283
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
4284
|
" }\n",
|
|
|
4285
|
" function toolbar_mouse_event(event) {\n",
|
|
|
4286
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
4287
|
" }\n",
|
|
|
4288
|
"\n",
|
|
|
4289
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
4290
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
4291
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
4292
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
4293
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
4294
|
"\n",
|
|
|
4295
|
" if (!name) {\n",
|
|
|
4296
|
" // put a spacer in here.\n",
|
|
|
4297
|
" continue;\n",
|
|
|
4298
|
" }\n",
|
|
|
4299
|
" var button = $('<button/>');\n",
|
|
|
4300
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
4301
|
" 'ui-button-icon-only');\n",
|
|
|
4302
|
" button.attr('role', 'button');\n",
|
|
|
4303
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
4304
|
" button.click(method_name, toolbar_event);\n",
|
|
|
4305
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
4306
|
"\n",
|
|
|
4307
|
" var icon_img = $('<span/>');\n",
|
|
|
4308
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
4309
|
" icon_img.addClass(image);\n",
|
|
|
4310
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
4311
|
"\n",
|
|
|
4312
|
" var tooltip_span = $('<span/>');\n",
|
|
|
4313
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
4314
|
" tooltip_span.html(tooltip);\n",
|
|
|
4315
|
"\n",
|
|
|
4316
|
" button.append(icon_img);\n",
|
|
|
4317
|
" button.append(tooltip_span);\n",
|
|
|
4318
|
"\n",
|
|
|
4319
|
" nav_element.append(button);\n",
|
|
|
4320
|
" }\n",
|
|
|
4321
|
"\n",
|
|
|
4322
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
4323
|
"\n",
|
|
|
4324
|
" var fmt_picker = $('<select/>');\n",
|
|
|
4325
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
4326
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
4327
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
4328
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
4329
|
"\n",
|
|
|
4330
|
" for (var ind in mpl.extensions) {\n",
|
|
|
4331
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
4332
|
" var option = $(\n",
|
|
|
4333
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
4334
|
" fmt_picker.append(option)\n",
|
|
|
4335
|
" }\n",
|
|
|
4336
|
"\n",
|
|
|
4337
|
" // Add hover states to the ui-buttons\n",
|
|
|
4338
|
" $( \".ui-button\" ).hover(\n",
|
|
|
4339
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
4340
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
4341
|
" );\n",
|
|
|
4342
|
"\n",
|
|
|
4343
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
4344
|
" nav_element.append(status_bar);\n",
|
|
|
4345
|
" this.message = status_bar[0];\n",
|
|
|
4346
|
"}\n",
|
|
|
4347
|
"\n",
|
|
|
4348
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
4349
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
4350
|
" // which will in turn request a refresh of the image.\n",
|
|
|
4351
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
4352
|
"}\n",
|
|
|
4353
|
"\n",
|
|
|
4354
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
4355
|
" properties['type'] = type;\n",
|
|
|
4356
|
" properties['figure_id'] = this.id;\n",
|
|
|
4357
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
4358
|
"}\n",
|
|
|
4359
|
"\n",
|
|
|
4360
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
4361
|
" if (!this.waiting) {\n",
|
|
|
4362
|
" this.waiting = true;\n",
|
|
|
4363
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
4364
|
" }\n",
|
|
|
4365
|
"}\n",
|
|
|
4366
|
"\n",
|
|
|
4367
|
"\n",
|
|
|
4368
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
4369
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
4370
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
4371
|
" fig.ondownload(fig, format);\n",
|
|
|
4372
|
"}\n",
|
|
|
4373
|
"\n",
|
|
|
4374
|
"\n",
|
|
|
4375
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
4376
|
" var size = msg['size'];\n",
|
|
|
4377
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
4378
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
4379
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
4380
|
" };\n",
|
|
|
4381
|
"}\n",
|
|
|
4382
|
"\n",
|
|
|
4383
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
4384
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
4385
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
4386
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
4387
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
4388
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
4389
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
4390
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
4391
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
4392
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
4393
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
4394
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
4395
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
4396
|
"\n",
|
|
|
4397
|
" fig.rubberband_context.clearRect(\n",
|
|
|
4398
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
4399
|
"\n",
|
|
|
4400
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
4401
|
"}\n",
|
|
|
4402
|
"\n",
|
|
|
4403
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
4404
|
" // Updates the figure title.\n",
|
|
|
4405
|
" fig.header.textContent = msg['label'];\n",
|
|
|
4406
|
"}\n",
|
|
|
4407
|
"\n",
|
|
|
4408
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
4409
|
" var cursor = msg['cursor'];\n",
|
|
|
4410
|
" switch(cursor)\n",
|
|
|
4411
|
" {\n",
|
|
|
4412
|
" case 0:\n",
|
|
|
4413
|
" cursor = 'pointer';\n",
|
|
|
4414
|
" break;\n",
|
|
|
4415
|
" case 1:\n",
|
|
|
4416
|
" cursor = 'default';\n",
|
|
|
4417
|
" break;\n",
|
|
|
4418
|
" case 2:\n",
|
|
|
4419
|
" cursor = 'crosshair';\n",
|
|
|
4420
|
" break;\n",
|
|
|
4421
|
" case 3:\n",
|
|
|
4422
|
" cursor = 'move';\n",
|
|
|
4423
|
" break;\n",
|
|
|
4424
|
" }\n",
|
|
|
4425
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
4426
|
"}\n",
|
|
|
4427
|
"\n",
|
|
|
4428
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
4429
|
" fig.message.textContent = msg['message'];\n",
|
|
|
4430
|
"}\n",
|
|
|
4431
|
"\n",
|
|
|
4432
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
4433
|
" // Request the server to send over a new figure.\n",
|
|
|
4434
|
" fig.send_draw_message();\n",
|
|
|
4435
|
"}\n",
|
|
|
4436
|
"\n",
|
|
|
4437
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
4438
|
" fig.image_mode = msg['mode'];\n",
|
|
|
4439
|
"}\n",
|
|
|
4440
|
"\n",
|
|
|
4441
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
4442
|
" // Called whenever the canvas gets updated.\n",
|
|
|
4443
|
" this.send_message(\"ack\", {});\n",
|
|
|
4444
|
"}\n",
|
|
|
4445
|
"\n",
|
|
|
4446
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
4447
|
"// Called in the figure constructor.\n",
|
|
|
4448
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
4449
|
" return function socket_on_message(evt) {\n",
|
|
|
4450
|
" if (evt.data instanceof Blob) {\n",
|
|
|
4451
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
4452
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
4453
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
4454
|
" * to be part of the websocket stream */\n",
|
|
|
4455
|
" evt.data.type = \"image/png\";\n",
|
|
|
4456
|
"\n",
|
|
|
4457
|
" /* Free the memory for the previous frames */\n",
|
|
|
4458
|
" if (fig.imageObj.src) {\n",
|
|
|
4459
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
4460
|
" fig.imageObj.src);\n",
|
|
|
4461
|
" }\n",
|
|
|
4462
|
"\n",
|
|
|
4463
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
4464
|
" evt.data);\n",
|
|
|
4465
|
" fig.updated_canvas_event();\n",
|
|
|
4466
|
" fig.waiting = false;\n",
|
|
|
4467
|
" return;\n",
|
|
|
4468
|
" }\n",
|
|
|
4469
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
4470
|
" fig.imageObj.src = evt.data;\n",
|
|
|
4471
|
" fig.updated_canvas_event();\n",
|
|
|
4472
|
" fig.waiting = false;\n",
|
|
|
4473
|
" return;\n",
|
|
|
4474
|
" }\n",
|
|
|
4475
|
"\n",
|
|
|
4476
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
4477
|
" var msg_type = msg['type'];\n",
|
|
|
4478
|
"\n",
|
|
|
4479
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
4480
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
4481
|
" try {\n",
|
|
|
4482
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
4483
|
" } catch (e) {\n",
|
|
|
4484
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
4485
|
" return;\n",
|
|
|
4486
|
" }\n",
|
|
|
4487
|
"\n",
|
|
|
4488
|
" if (callback) {\n",
|
|
|
4489
|
" try {\n",
|
|
|
4490
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
4491
|
" callback(fig, msg);\n",
|
|
|
4492
|
" } catch (e) {\n",
|
|
|
4493
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
4494
|
" }\n",
|
|
|
4495
|
" }\n",
|
|
|
4496
|
" };\n",
|
|
|
4497
|
"}\n",
|
|
|
4498
|
"\n",
|
|
|
4499
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
4500
|
"mpl.findpos = function(e) {\n",
|
|
|
4501
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
4502
|
" var targ;\n",
|
|
|
4503
|
" if (!e)\n",
|
|
|
4504
|
" e = window.event;\n",
|
|
|
4505
|
" if (e.target)\n",
|
|
|
4506
|
" targ = e.target;\n",
|
|
|
4507
|
" else if (e.srcElement)\n",
|
|
|
4508
|
" targ = e.srcElement;\n",
|
|
|
4509
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
4510
|
" targ = targ.parentNode;\n",
|
|
|
4511
|
"\n",
|
|
|
4512
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
4513
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
4514
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
4515
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
4516
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
4517
|
"\n",
|
|
|
4518
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
4519
|
"};\n",
|
|
|
4520
|
"\n",
|
|
|
4521
|
"/*\n",
|
|
|
4522
|
" * return a copy of an object with only non-object keys\n",
|
|
|
4523
|
" * we need this to avoid circular references\n",
|
|
|
4524
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
4525
|
" */\n",
|
|
|
4526
|
"function simpleKeys (original) {\n",
|
|
|
4527
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
4528
|
" if (typeof original[key] !== 'object')\n",
|
|
|
4529
|
" obj[key] = original[key]\n",
|
|
|
4530
|
" return obj;\n",
|
|
|
4531
|
" }, {});\n",
|
|
|
4532
|
"}\n",
|
|
|
4533
|
"\n",
|
|
|
4534
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
4535
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
4536
|
"\n",
|
|
|
4537
|
" if (name === 'button_press')\n",
|
|
|
4538
|
" {\n",
|
|
|
4539
|
" this.canvas.focus();\n",
|
|
|
4540
|
" this.canvas_div.focus();\n",
|
|
|
4541
|
" }\n",
|
|
|
4542
|
"\n",
|
|
|
4543
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
4544
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
4545
|
"\n",
|
|
|
4546
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
4547
|
" step: event.step,\n",
|
|
|
4548
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
4549
|
"\n",
|
|
|
4550
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
4551
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
4552
|
" * to control all of the cursor setting manually through the\n",
|
|
|
4553
|
" * 'cursor' event from matplotlib */\n",
|
|
|
4554
|
" event.preventDefault();\n",
|
|
|
4555
|
" return false;\n",
|
|
|
4556
|
"}\n",
|
|
|
4557
|
"\n",
|
|
|
4558
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
4559
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
4560
|
"}\n",
|
|
|
4561
|
"\n",
|
|
|
4562
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
4563
|
"\n",
|
|
|
4564
|
" // Prevent repeat events\n",
|
|
|
4565
|
" if (name == 'key_press')\n",
|
|
|
4566
|
" {\n",
|
|
|
4567
|
" if (event.which === this._key)\n",
|
|
|
4568
|
" return;\n",
|
|
|
4569
|
" else\n",
|
|
|
4570
|
" this._key = event.which;\n",
|
|
|
4571
|
" }\n",
|
|
|
4572
|
" if (name == 'key_release')\n",
|
|
|
4573
|
" this._key = null;\n",
|
|
|
4574
|
"\n",
|
|
|
4575
|
" var value = '';\n",
|
|
|
4576
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
4577
|
" value += \"ctrl+\";\n",
|
|
|
4578
|
" if (event.altKey && event.which != 18)\n",
|
|
|
4579
|
" value += \"alt+\";\n",
|
|
|
4580
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
4581
|
" value += \"shift+\";\n",
|
|
|
4582
|
"\n",
|
|
|
4583
|
" value += 'k';\n",
|
|
|
4584
|
" value += event.which.toString();\n",
|
|
|
4585
|
"\n",
|
|
|
4586
|
" this._key_event_extra(event, name);\n",
|
|
|
4587
|
"\n",
|
|
|
4588
|
" this.send_message(name, {key: value,\n",
|
|
|
4589
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
4590
|
" return false;\n",
|
|
|
4591
|
"}\n",
|
|
|
4592
|
"\n",
|
|
|
4593
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
4594
|
" if (name == 'download') {\n",
|
|
|
4595
|
" this.handle_save(this, null);\n",
|
|
|
4596
|
" } else {\n",
|
|
|
4597
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
4598
|
" }\n",
|
|
|
4599
|
"};\n",
|
|
|
4600
|
"\n",
|
|
|
4601
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
4602
|
" this.message.textContent = tooltip;\n",
|
|
|
4603
|
"};\n",
|
|
|
4604
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
4605
|
"\n",
|
|
|
4606
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
4607
|
"\n",
|
|
|
4608
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
4609
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
4610
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
4611
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
4612
|
" var ws = {};\n",
|
|
|
4613
|
"\n",
|
|
|
4614
|
" ws.close = function() {\n",
|
|
|
4615
|
" comm.close()\n",
|
|
|
4616
|
" };\n",
|
|
|
4617
|
" ws.send = function(m) {\n",
|
|
|
4618
|
" //console.log('sending', m);\n",
|
|
|
4619
|
" comm.send(m);\n",
|
|
|
4620
|
" };\n",
|
|
|
4621
|
" // Register the callback with on_msg.\n",
|
|
|
4622
|
" comm.on_msg(function(msg) {\n",
|
|
|
4623
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
4624
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
4625
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
4626
|
" });\n",
|
|
|
4627
|
" return ws;\n",
|
|
|
4628
|
"}\n",
|
|
|
4629
|
"\n",
|
|
|
4630
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
4631
|
" // This is the function which gets called when the mpl process\n",
|
|
|
4632
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
4633
|
"\n",
|
|
|
4634
|
" var id = msg.content.data.id;\n",
|
|
|
4635
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
4636
|
" // socket was opened in Python.\n",
|
|
|
4637
|
" var element = $(\"#\" + id);\n",
|
|
|
4638
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
4639
|
"\n",
|
|
|
4640
|
" function ondownload(figure, format) {\n",
|
|
|
4641
|
" window.open(figure.imageObj.src);\n",
|
|
|
4642
|
" }\n",
|
|
|
4643
|
"\n",
|
|
|
4644
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
4645
|
" ondownload,\n",
|
|
|
4646
|
" element.get(0));\n",
|
|
|
4647
|
"\n",
|
|
|
4648
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
4649
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
4650
|
" ws_proxy.onopen();\n",
|
|
|
4651
|
"\n",
|
|
|
4652
|
" fig.parent_element = element.get(0);\n",
|
|
|
4653
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
4654
|
" if (!fig.cell_info) {\n",
|
|
|
4655
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
4656
|
" return;\n",
|
|
|
4657
|
" }\n",
|
|
|
4658
|
"\n",
|
|
|
4659
|
" var output_index = fig.cell_info[2]\n",
|
|
|
4660
|
" var cell = fig.cell_info[0];\n",
|
|
|
4661
|
"\n",
|
|
|
4662
|
"};\n",
|
|
|
4663
|
"\n",
|
|
|
4664
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
4665
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
4666
|
" fig.root.unbind('remove')\n",
|
|
|
4667
|
"\n",
|
|
|
4668
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
4669
|
" fig.push_to_output();\n",
|
|
|
4670
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
4671
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
4672
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
4673
|
" IPython.keyboard_manager.enable()\n",
|
|
|
4674
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
4675
|
" fig.close_ws(fig, msg);\n",
|
|
|
4676
|
"}\n",
|
|
|
4677
|
"\n",
|
|
|
4678
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
4679
|
" fig.send_message('closing', msg);\n",
|
|
|
4680
|
" // fig.ws.close()\n",
|
|
|
4681
|
"}\n",
|
|
|
4682
|
"\n",
|
|
|
4683
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
4684
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
4685
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
4686
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
4687
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
4688
|
"}\n",
|
|
|
4689
|
"\n",
|
|
|
4690
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
4691
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
4692
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
4693
|
" this.send_message(\"ack\", {});\n",
|
|
|
4694
|
" var fig = this;\n",
|
|
|
4695
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
4696
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
4697
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
4698
|
"}\n",
|
|
|
4699
|
"\n",
|
|
|
4700
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
4701
|
" var fig = this;\n",
|
|
|
4702
|
"\n",
|
|
|
4703
|
" var nav_element = $('<div/>')\n",
|
|
|
4704
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
4705
|
" this.root.append(nav_element);\n",
|
|
|
4706
|
"\n",
|
|
|
4707
|
" // Define a callback function for later on.\n",
|
|
|
4708
|
" function toolbar_event(event) {\n",
|
|
|
4709
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
4710
|
" }\n",
|
|
|
4711
|
" function toolbar_mouse_event(event) {\n",
|
|
|
4712
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
4713
|
" }\n",
|
|
|
4714
|
"\n",
|
|
|
4715
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
4716
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
4717
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
4718
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
4719
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
4720
|
"\n",
|
|
|
4721
|
" if (!name) { continue; };\n",
|
|
|
4722
|
"\n",
|
|
|
4723
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
4724
|
" button.click(method_name, toolbar_event);\n",
|
|
|
4725
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
4726
|
" nav_element.append(button);\n",
|
|
|
4727
|
" }\n",
|
|
|
4728
|
"\n",
|
|
|
4729
|
" // Add the status bar.\n",
|
|
|
4730
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
4731
|
" nav_element.append(status_bar);\n",
|
|
|
4732
|
" this.message = status_bar[0];\n",
|
|
|
4733
|
"\n",
|
|
|
4734
|
" // Add the close button to the window.\n",
|
|
|
4735
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
4736
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
4737
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
4738
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
4739
|
" buttongrp.append(button);\n",
|
|
|
4740
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
4741
|
" titlebar.prepend(buttongrp);\n",
|
|
|
4742
|
"}\n",
|
|
|
4743
|
"\n",
|
|
|
4744
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
4745
|
" var fig = this\n",
|
|
|
4746
|
" el.on(\"remove\", function(){\n",
|
|
|
4747
|
"\tfig.close_ws(fig, {});\n",
|
|
|
4748
|
" });\n",
|
|
|
4749
|
"}\n",
|
|
|
4750
|
"\n",
|
|
|
4751
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
4752
|
" // this is important to make the div 'focusable\n",
|
|
|
4753
|
" el.attr('tabindex', 0)\n",
|
|
|
4754
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
4755
|
" // off when our div gets focus\n",
|
|
|
4756
|
"\n",
|
|
|
4757
|
" // location in version 3\n",
|
|
|
4758
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
4759
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
4760
|
" }\n",
|
|
|
4761
|
" else {\n",
|
|
|
4762
|
" // location in version 2\n",
|
|
|
4763
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
4764
|
" }\n",
|
|
|
4765
|
"\n",
|
|
|
4766
|
"}\n",
|
|
|
4767
|
"\n",
|
|
|
4768
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
4769
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
4770
|
" if (!manager)\n",
|
|
|
4771
|
" manager = IPython.keyboard_manager;\n",
|
|
|
4772
|
"\n",
|
|
|
4773
|
" // Check for shift+enter\n",
|
|
|
4774
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
4775
|
" this.canvas_div.blur();\n",
|
|
|
4776
|
" event.shiftKey = false;\n",
|
|
|
4777
|
" // Send a \"J\" for go to next cell\n",
|
|
|
4778
|
" event.which = 74;\n",
|
|
|
4779
|
" event.keyCode = 74;\n",
|
|
|
4780
|
" manager.command_mode();\n",
|
|
|
4781
|
" manager.handle_keydown(event);\n",
|
|
|
4782
|
" }\n",
|
|
|
4783
|
"}\n",
|
|
|
4784
|
"\n",
|
|
|
4785
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
4786
|
" fig.ondownload(fig, null);\n",
|
|
|
4787
|
"}\n",
|
|
|
4788
|
"\n",
|
|
|
4789
|
"\n",
|
|
|
4790
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
4791
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
4792
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
4793
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
4794
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
4795
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
4796
|
" var ncells = cells.length;\n",
|
|
|
4797
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
4798
|
" var cell = cells[i];\n",
|
|
|
4799
|
" if (cell.cell_type === 'code'){\n",
|
|
|
4800
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
4801
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
4802
|
" if (data.data) {\n",
|
|
|
4803
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
4804
|
" data = data.data;\n",
|
|
|
4805
|
" }\n",
|
|
|
4806
|
" if (data['text/html'] == html_output) {\n",
|
|
|
4807
|
" return [cell, data, j];\n",
|
|
|
4808
|
" }\n",
|
|
|
4809
|
" }\n",
|
|
|
4810
|
" }\n",
|
|
|
4811
|
" }\n",
|
|
|
4812
|
"}\n",
|
|
|
4813
|
"\n",
|
|
|
4814
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
4815
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
4816
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
4817
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
4818
|
"}\n"
|
|
|
4819
|
],
|
|
|
4820
|
"text/plain": [
|
|
|
4821
|
"<IPython.core.display.Javascript object>"
|
|
|
4822
|
]
|
|
|
4823
|
},
|
|
|
4824
|
"metadata": {},
|
|
|
4825
|
"output_type": "display_data"
|
|
|
4826
|
},
|
|
|
4827
|
{
|
|
|
4828
|
"data": {
|
|
|
4829
|
"text/html": [
|
|
|
4830
|
"<img src=\"data:image/png;base64,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CcCzn5xd7+sAAACQGQG4fwjAUJsADJkywACgeAIwAAAAm0MA7h8CMNQmAEOmDDAAKN7Tq56uBODfPPmbel8HAACAzAjA/UMAhtoEYEpl9erVceqpp8ahhx4aLS0tkVKKGTNm9HoupdTn+cIXvlB5rrOzs8/nrrnmml7v29HREYceemgMHz48Wlpa4thjj40VK1Zs0vdigAFA8QRgAAAANocA3D8EYKhNAKZU1gXbnXbaKcaOHdtnAG5ra+t1Tj755EgpxVlnndXr/b761a/2ev7pp5/u8Z7Lly+P7bbbLkaPHh0XXHBBnH766dHS0hJ77713rFmzZqO/FwMMAIrX+XpnJQDf+MSN9b4OAAAAmRGA+4cADLUJwJTKO++8Ey+88EJERCxcuLDPAFzNiSeeGAMGDIjly5dXXlsXgM8+++wP/fpx48bF0KFD45lnnqm8Nm/evEgpxaWXXrpx30gYYABQDwIwAAAAm0MA7h8CMNQmAFNaGxOA33nnnRgxYkSMHTu2x+vrB+A333yz5k/yjho1Ko466qher++2227x+c9/fqPvb4ABQPGWvr5UAAYAAGCTCcD9QwCG2gRgSmtjAvCNN94YKaW47LLLery+LgBvtdVWkVKKAQMGxH777Re33XZbj+eeffbZSCnF5MmTe733scceGx/72Mc2+v4GGAAUTwAGAABgcwjA/UMAhtoEYEprYwLwl7/85RgyZEisXLmyx+vPPPNMHHLIITFt2rS4+eab4/zzz4+ddtopBg4cGL/97W97fdbMmTN7vfePfvSjSCnFO++80+fnv/TSS9He3t7jzJ492wADgII99fpTlQB8wxM31Ps6AAAAZKbZA/CMGTMipdTjjBw5MsaOHRu33HJL5blXXnklzjrrrDjwwANju+22i2222Sb+9m//Nq699toN+hwBGGoTgCmtDQ3Aq1atii233DKOOOKIDXrfV199Nf7iL/4idt9998prd911V6SU4rrrruv1/M9//vNIKfWKy+ubOHFir6G57hhgAFAcARgAAIDNUZYAPGnSpGhra4uZM2fG2WefHWPGjImUUsyZMyciIubMmRODBg2Kf/qnf4rzzz8/Lrroovjc5z4XKaU49dRTP/RzBGCoTQCmtDY0AF9xxRWRUorrr79+g997woQJkVKK5cuX9/gsPwEMAHl7auX7Afj6xRv+/w0AAAAg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X/7yl2P16tX93jvggANit9126/reW265JaqqitmzZ2/wTBYYAKT3oUvfLwADAABAy7mfUzoBGNbDD37wg6iqKr7zne/0e37sscfG1772tbjmmmtiypQpcdhhh0VVVfHJT36y33tDhgyJESNGdH3v/Pnzo6qquOCCC97031+0aFHMmzev32fWrFkWGAAktl8tAD+99OmmRwIAAABqBGBKJwDDevj0pz8dAwYMiJdeeukt3z3hhBOiqqq45557Os923nnnOOSQQ7reffLJJ6Oqqvj2t7/9pt95+umnR1VVPT8WGACkUw/AC5du+K9xAAAAAP7/JQBTOgEY3sKyZcti8ODB8dGPfnS93n/00UejqqqYMGFC55n/AQwA/28QgAEAAKD9BGBKJwDDW5g6dWpUVRUzZsxYr/eXL18eVVXFqaee2nnmdwADwP8b9q0H4CUCMAAAALSN+zmlE4DhLRx88MGx+eabx/Lly9fr/YceeiiqqopJkyZ1no0dOzY23njjWLJkSb93J06cGFVVxcKFG348tsAAID0BGAAAANrP/ZzSCcDwJl544YXo6+uLY445puvvlixZEitXruz3bN26dfGpT30qqqqKBx54oPP83nvvjaqq4swzz+w8W7lyZey6666xzz77vK3ZLDAASG/fS9/XLwA/teSppkcCAAAAatzPKZ0ADG/inHPOiaqq4oYbbuj6u9tuuy223XbbOPXUU+O8886Lb33rW7HffvtFVVVx4okndr0/atSo6Ovri3HjxsWFF14Y++67b/T19cUdd9zxtmazwAAgPQEYAAAA2s/9nNIJwPAmPvjBD8a73vWuWLNmTdff/frXv45Ro0bFTjvtFIMGDYrBgwfHBz7wgbjgggti3bp1Xe+vWLEixo4dG9tuu20MHDgw9tprr55heX1ZYACQ3tBaAP7Nkt80PRIAAABQ435O6QRgyJQFBgDpCcAAAADQfu7nlE4AhkxZYACQXj0AL1i8oOmRAAAAgBr3c0onAEOmLDAASE8ABgAAgPZzP6d0AjBkygIDgPQ+WAvAv17866ZHAgAAAGrczymdAAyZssAAID0BGAAAANrP/ZzSCcCQKQsMANLb59K/6heAn1z8ZNMjAQAAADXu55ROAIZMWWAAkJ4ADAAAAO3nfk7pBGDIlAUGAOl1BeCXBWAAAABoG/dzSicAQ6YsMABITwAG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y5Z1fefKlSvjtNNOi+222y4GDRoUe++9d9x0001ve0YLDADS+v2K33cF4Fk/m9H0WAAAAECN+zmlE4Chh9cC8Oc+97mYOnVqv8+LL77Yee9nP/tZDBo0KPbYY484//zz40tf+lIMHDgwDj744K7vPPLII6Ovry/Gjh0bF154YQwdOjT6+vpi7ty5b2tGCwwA0uoVgL//4PSmxwIAAABq3M8pnQAMPbwWgK+66qo3fe+QQw6J7bbbLpYsWdJ5dvHFF0dVVXHjjTd2nt13331RVVWceeaZnWcrVqyIXXbZJYYOHfq2ZrTAACCt3634XY8APK3psQAAAIAa93NKJwBDD68PwEuXLo1XX321650lS5ZEX19fjBs3rt/zVatWxeabbx7HHXdc59m4ceNi44037heKIyImTZoUVVXFwoULN3hGCwwA0uoVgK998IqmxwIAAABq3M8pnQAMPbwWgDfffPOoqio23njj2H///eP+++/vvHPnnXdGVVUxc+bMrp//0Ic+FHvuuWfnzwcccEDstttuXe/dcsstUVVVzJ49e4NntMAAIK2XXnmpKwBf84AADAAAAG3jfk7pBGDo4a677oojjjgiLrnkkrjuuuvim9/8Zmy11VYxaNCgePDBByMi4qqrroqqqmLOnDldPz9q1KjYdtttO38eMmRIjBgxouu9+fPnR1VVccEFF7zpPIsWLYp58+b1+8yaNcsCA4CEegfgKU2PBQAAANQIwJROAIb19Pjjj8emm24aBx10UERETJkyJaqqivvuu6/r3WOOOSbe8Y53dP688847xyGHHNL13pNPPhlVVcW3v/3tN/23Tz/99KiqqufHAgOANF585cWuAHz1/Zc3PRYAAABQIwBTOgEYNsCRRx4Zm2yySaxZs8b/AAaAwvQKwFfef1nTYwEAAAA1AjClE4BhA4wbNy6qqoolS5b4HcAAUBgBGAAAAPLgfk7pBGDYAEcccUQMGjQo1q5dG4sXL46+vr4YN25cv3dWrVoVm2++eRx77LGdZ2PHjo2NN944lixZ0u/diRMnRlVVsXDhwg2exQIDgLR6BeCZP7206bEAAACAGvdzSicAQw8vvPBC17Of//znMWDAgDjssMM6zw4++ODYbrvtYunSpZ1n3/3ud6Oqqvjxj3/ceXbvvfdGVVVx5plndp6tXLkydt1119hnn33e1owWGACk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yU2bNk05x8zKykp6LOMkgNnkhz/8odra2uTxeHTuuefqwx/+sNauXauf/exnSY9lPgkgXRAAA0hrV155pebMmaOenh5FIhEVFxdrzpw5evjhh1PdNQB4W4wHwJ2dnbrrrrsmtd/+9reJx/3bv/2bzj77bC1atEh9fX265pprNHfuXAWDwaR9MpYCSGfPPvusXC6X/vqv/1per/eUwcYvf/lL/cVf/IUuvvhiHTx4UNdff73OP/98LViwQENDQ5Meu3//frlcLu3YsUOGYai+vl4ul0v33nvvW94nAKTKmx0nN23apLlz5ybNMR944IGkxzJOAphN1qxZowsuuEAdHR0yTVPXXXedPvjBD+q8887TT37yk8TjmE8CSCcEwADS1qOPPiqXy6WbbropsW1gYEAXX3yxiouLU9gzAHj7jAfA999//2kfFwqFdOGFF+qVV15JbDNNUy6XS1//+tcT2xhLAaS7wcFBPf/885Kkxx577JTBRktLi8455xz993//d2LbN7/5TblcLkUikcS2X/3qV3rnO9+ptra2xLaxsTGVl5frr/7qrzQ6OnrG+wSAVHqz4+SmTZt03nnnveH+GCcBzDaPPPJIUtj685//XHPnztX69esT25hPAkgnBMAA0lZvb6/OOuusSeGGJN1www1yuVx67rnnUtQzAHj7TAyAX331VY2MjCQ95pVXXtGcOXPU29s7afvQ0JDe/e53a9u2bYltjKUAZpPTBRt/+Zd/qbVr1yZtnzdvnqqrqxNfHz58WC6XS08++eSkx91zzz1yuVyT/jrCm90nAMwUbyYAHh0dTZobTsQ4CSBTLF68WIsXL058zXwSQDohAAaQtmpqauR2u5O2P/TQQ3K5XFP+mSoASHfjAfC73/1uuVwunXXWWfJ6vXrssccSj/nud78rl8ul++67L+n7y8rKJr2BZSwFMJucKtj41a9+JZfLpRtvvDHpexobG/W+970v8fX27dt13nnnaWxsbNLjnn76ablcLt12221nvE8AmCneKAB+xzveoXPPPVcul0vnn3++Wltb9dprr016HOMkgEwwNjamD33oQwoEApKYTwJIPwTAANJWTk6OfD5f0vYnn3xSLpdL4XA4Bb0CgLfXI488ojVr1si2bX35y1/WZz7zGb3//e/X2WefrR/96EeSpPvvv18ul0vf+c53kr5/7dq1uuCCCxJfM5YCmE1OFWyMb7/zzjuTvqe3t1cul0uDg4OSpPr6el100UVJj3v99dflcrm0f//+M94nAMwUpwuA9+/fr3379um+++7Tvffeq02bNsnlcqm0tHTSX51hnASQCe666y65XC7Zti2J+SSA9EMADCBtXXTRRQqFQknbn3nmGblcLh04cCAFvQKA6feLX/xC55xzjmprayVJd955p1wulx599NGkx27YsEHvec97El8zlgKYTU4VbHznO9855V9G+PjHPy6Xy6WXXnpJkuTz+ab8ywjRaFQul0u7du06430CwExxugB4Ktdff71cLpfuvffexDbGSQCz3U9/+lP9+Z//uYqLixOf18t8EkC6IQAGkLb4rTUAOOHKK6/Uu971Lo2OjvIbwAAyFr8BDACnd6YB8PHjx/Vnf/Zn2rZtW2Ib4ySA2ez555/XRRddpA9/+MP69a9/ndjOfBJAuiEABpC2+NxKADhh/M3hK6+8wmcAA8hYf6rPAD733HP5zDYAs9KZBsCS9IEPfECrVq1KfM04CWC2evnll7Vw4UK9733v05NPPjnp35hPAkg3BMAA0lZPT4/OOussvfLKK5O2j/+Jqueeey5FPQOA6bdmzRqdffbZikajevnllzVnzhz19vZOeszQ0JDe/e53a+vWrYltjKUAZpPTBRsf+MAHtHbt2qTt8+bNm/SXEG6//Xa5XK6kRb/Pf/7zSX9d4c3uEwBmijMNgF999VW94x3vUFNTU2Ib4ySA2WhgYEDl5eU699xz9b3vfW/KxzCfBJBOCIABpK0f/OAHcrlcuummmxLbBgcHdckll6iwsDCFPQOAt8+LL76YtO3HP/6x3vnOd2r58uWJbcFgUBdeeKFeffXVxDbLsuRyufS1r30tsY2xFMBscrpgo7m5Weecc86kH2wZ/2sHfX19iW2//OUv9c53vlNtbW2JbWNjYyovL9eHPvShxOfAnck+AWCmONU4OTAwMGneOG78r8x88YtfTGxjnAQw24yOjmr58uWaM2eOvvrVr57yccwnAaQTAmAAaW3t2rWJ33KLRCIqKSnRnDlz9O1vfzvVXQOAt0VVVZXq6ur06U9/WoZhqKurS+eee67e85736Kmnnko87vHHH9fcuXO1aNEi9fX16ZprrtHZZ5+tQCCQtE/GUgDp7tChQ7ruuuvU0tIil8ul1atX67rrrtN1112nl19+WZL03HPP6f3vf78uvvhi3Xbbbbrhhht0/vnnKy8vL+mz1cYDj6amJpmmqfr6erlcLn3+85+f9Lgz2ScApNIbjZPPPvus3vve96qlpUUHDx7UwYMHVVdXJ5fLpWAwqGg0Oml/jJMAZpNdu3bJ5XJp2bJluuuuu5LaOOaTANIJATCAtDYwMKCenh5dcMEFmjt3rvLz8/Xggw+mulsA8LY5ePCgCgoK9L73vU9z5szRhRdeqMbGRv3iF79IeuzDDz+skpISnX322frABz6gtra2KX+zg7EUQLr7yEc+IpfLNWV79tlnE4974oknFAgEdO655+q9732v1q9fr9/85jdJ+4tGo7rhhhv0kY98RO9617uUk5Oju+++e8rnfrP7BIBUeqNx8qWXXlJjY6MuueQSnXvuuZo7d65ycnJ0ww03aHh4OGl/jJMAZpPKyspTjpEu1+QIhfkkgHRBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMAAAAAAAAAAAAADMEgTAAAAAAAAAAAAAADBLEAADAAAAAAAAAAAAwCxBAAwAAAAAAAAAAAAAswQBMID/vz07kAEAAAAY5G99j680AgAAAAAAYEIAAwAAAAAAAEwIYAAAAAAAAIAJAQwAAAAAAAAwIYABAAAAAAAAJgQwAAAAAAAAwIQABgAAAAAAAJgQwAAAAAAAAAATAhgAAAAAAABgQgADAAAAAAAATAhgAAAAAAAAgAkBDAAAAAAAADAhgAEAAAAAAAAmBDAAAAAAAADAhAAGAAAAAAAAmBDAAAAAAAAAABMCGAAAAAAAAGBCAAMAAAAAAABMCGAAAAAAAACACQEMAAAAAAAAMCGAAQAAAAAAACYEMAAAAAAAAMCEAAYAAAAAAACYEMAAAAAAAAAAEwIYAAAAAAAAYEIAAwAAAAAAAEwIYAAAAAAAAIAJAQwAAAAAAAAwIYABAAAAAAAAJgQwAAAAAAAAwIQABgAAAAAAAJgQwAAAAAAAAAATAhgAAAAAAABgQgADAAAAAAAATAhgAAAAAAAAgAkBDAAAAAAAADAhgAEAAAAAAAAmBDAAAAAAAADAhAAGAAAAAAAAmBDAAAAAAAAAABMCGAAAAAAAAGBCAAMAAAAAAABMCGAAAAAAAACACQEMAAAAAAAAMCGAAQAAAAAAACYEMAAAAAAAAMCEAAYAAAAAAACYCGZSpfwDz4KKAAAAAElFTkSuQmCC\" width=\"1600\">"
|
|
|
4831
|
],
|
|
|
4832
|
"text/plain": [
|
|
|
4833
|
"<IPython.core.display.HTML object>"
|
|
|
4834
|
]
|
|
|
4835
|
},
|
|
|
4836
|
"metadata": {},
|
|
|
4837
|
"output_type": "display_data"
|
|
|
4838
|
},
|
|
|
4839
|
{
|
|
|
4840
|
"data": {
|
|
|
4841
|
"application/javascript": [
|
|
|
4842
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
4843
|
"window.mpl = {};\n",
|
|
|
4844
|
"\n",
|
|
|
4845
|
"\n",
|
|
|
4846
|
"mpl.get_websocket_type = function() {\n",
|
|
|
4847
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
4848
|
" return WebSocket;\n",
|
|
|
4849
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
4850
|
" return MozWebSocket;\n",
|
|
|
4851
|
" } else {\n",
|
|
|
4852
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
4853
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
4854
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
4855
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
4856
|
" };\n",
|
|
|
4857
|
"}\n",
|
|
|
4858
|
"\n",
|
|
|
4859
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
4860
|
" this.id = figure_id;\n",
|
|
|
4861
|
"\n",
|
|
|
4862
|
" this.ws = websocket;\n",
|
|
|
4863
|
"\n",
|
|
|
4864
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
4865
|
"\n",
|
|
|
4866
|
" if (!this.supports_binary) {\n",
|
|
|
4867
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
4868
|
" if (warnings) {\n",
|
|
|
4869
|
" warnings.style.display = 'block';\n",
|
|
|
4870
|
" warnings.textContent = (\n",
|
|
|
4871
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
4872
|
" \"Performance may be slow.\");\n",
|
|
|
4873
|
" }\n",
|
|
|
4874
|
" }\n",
|
|
|
4875
|
"\n",
|
|
|
4876
|
" this.imageObj = new Image();\n",
|
|
|
4877
|
"\n",
|
|
|
4878
|
" this.context = undefined;\n",
|
|
|
4879
|
" this.message = undefined;\n",
|
|
|
4880
|
" this.canvas = undefined;\n",
|
|
|
4881
|
" this.rubberband_canvas = undefined;\n",
|
|
|
4882
|
" this.rubberband_context = undefined;\n",
|
|
|
4883
|
" this.format_dropdown = undefined;\n",
|
|
|
4884
|
"\n",
|
|
|
4885
|
" this.image_mode = 'full';\n",
|
|
|
4886
|
"\n",
|
|
|
4887
|
" this.root = $('<div/>');\n",
|
|
|
4888
|
" this._root_extra_style(this.root)\n",
|
|
|
4889
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
4890
|
"\n",
|
|
|
4891
|
" $(parent_element).append(this.root);\n",
|
|
|
4892
|
"\n",
|
|
|
4893
|
" this._init_header(this);\n",
|
|
|
4894
|
" this._init_canvas(this);\n",
|
|
|
4895
|
" this._init_toolbar(this);\n",
|
|
|
4896
|
"\n",
|
|
|
4897
|
" var fig = this;\n",
|
|
|
4898
|
"\n",
|
|
|
4899
|
" this.waiting = false;\n",
|
|
|
4900
|
"\n",
|
|
|
4901
|
" this.ws.onopen = function () {\n",
|
|
|
4902
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
4903
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
4904
|
" if (mpl.ratio != 1) {\n",
|
|
|
4905
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
4906
|
" }\n",
|
|
|
4907
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
4908
|
" }\n",
|
|
|
4909
|
"\n",
|
|
|
4910
|
" this.imageObj.onload = function() {\n",
|
|
|
4911
|
" if (fig.image_mode == 'full') {\n",
|
|
|
4912
|
" // Full images could contain transparency (where diff images\n",
|
|
|
4913
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
4914
|
" // there is no ghosting.\n",
|
|
|
4915
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
4916
|
" }\n",
|
|
|
4917
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
4918
|
" };\n",
|
|
|
4919
|
"\n",
|
|
|
4920
|
" this.imageObj.onunload = function() {\n",
|
|
|
4921
|
" fig.ws.close();\n",
|
|
|
4922
|
" }\n",
|
|
|
4923
|
"\n",
|
|
|
4924
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
4925
|
"\n",
|
|
|
4926
|
" this.ondownload = ondownload;\n",
|
|
|
4927
|
"}\n",
|
|
|
4928
|
"\n",
|
|
|
4929
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
4930
|
" var titlebar = $(\n",
|
|
|
4931
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
4932
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
4933
|
" var titletext = $(\n",
|
|
|
4934
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
4935
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
4936
|
" titlebar.append(titletext)\n",
|
|
|
4937
|
" this.root.append(titlebar);\n",
|
|
|
4938
|
" this.header = titletext[0];\n",
|
|
|
4939
|
"}\n",
|
|
|
4940
|
"\n",
|
|
|
4941
|
"\n",
|
|
|
4942
|
"\n",
|
|
|
4943
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
4944
|
"\n",
|
|
|
4945
|
"}\n",
|
|
|
4946
|
"\n",
|
|
|
4947
|
"\n",
|
|
|
4948
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
4949
|
"\n",
|
|
|
4950
|
"}\n",
|
|
|
4951
|
"\n",
|
|
|
4952
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
4953
|
" var fig = this;\n",
|
|
|
4954
|
"\n",
|
|
|
4955
|
" var canvas_div = $('<div/>');\n",
|
|
|
4956
|
"\n",
|
|
|
4957
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
4958
|
"\n",
|
|
|
4959
|
" function canvas_keyboard_event(event) {\n",
|
|
|
4960
|
" return fig.key_event(event, event['data']);\n",
|
|
|
4961
|
" }\n",
|
|
|
4962
|
"\n",
|
|
|
4963
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
4964
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
4965
|
" this.canvas_div = canvas_div\n",
|
|
|
4966
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
4967
|
" this.root.append(canvas_div);\n",
|
|
|
4968
|
"\n",
|
|
|
4969
|
" var canvas = $('<canvas/>');\n",
|
|
|
4970
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
4971
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
4972
|
"\n",
|
|
|
4973
|
" this.canvas = canvas[0];\n",
|
|
|
4974
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
4975
|
"\n",
|
|
|
4976
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
4977
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
4978
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
4979
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
4980
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
4981
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
4982
|
"\n",
|
|
|
4983
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
4984
|
"\n",
|
|
|
4985
|
" var rubberband = $('<canvas/>');\n",
|
|
|
4986
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
4987
|
"\n",
|
|
|
4988
|
" var pass_mouse_events = true;\n",
|
|
|
4989
|
"\n",
|
|
|
4990
|
" canvas_div.resizable({\n",
|
|
|
4991
|
" start: function(event, ui) {\n",
|
|
|
4992
|
" pass_mouse_events = false;\n",
|
|
|
4993
|
" },\n",
|
|
|
4994
|
" resize: function(event, ui) {\n",
|
|
|
4995
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
4996
|
" },\n",
|
|
|
4997
|
" stop: function(event, ui) {\n",
|
|
|
4998
|
" pass_mouse_events = true;\n",
|
|
|
4999
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
5000
|
" },\n",
|
|
|
5001
|
" });\n",
|
|
|
5002
|
"\n",
|
|
|
5003
|
" function mouse_event_fn(event) {\n",
|
|
|
5004
|
" if (pass_mouse_events)\n",
|
|
|
5005
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
5006
|
" }\n",
|
|
|
5007
|
"\n",
|
|
|
5008
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
5009
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
5010
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
5011
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
5012
|
"\n",
|
|
|
5013
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
5014
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
5015
|
"\n",
|
|
|
5016
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
5017
|
" event = event.originalEvent;\n",
|
|
|
5018
|
" event['data'] = 'scroll'\n",
|
|
|
5019
|
" if (event.deltaY < 0) {\n",
|
|
|
5020
|
" event.step = 1;\n",
|
|
|
5021
|
" } else {\n",
|
|
|
5022
|
" event.step = -1;\n",
|
|
|
5023
|
" }\n",
|
|
|
5024
|
" mouse_event_fn(event);\n",
|
|
|
5025
|
" });\n",
|
|
|
5026
|
"\n",
|
|
|
5027
|
" canvas_div.append(canvas);\n",
|
|
|
5028
|
" canvas_div.append(rubberband);\n",
|
|
|
5029
|
"\n",
|
|
|
5030
|
" this.rubberband = rubberband;\n",
|
|
|
5031
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
5032
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
5033
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
5034
|
"\n",
|
|
|
5035
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
5036
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
5037
|
" // canvas in synch.\n",
|
|
|
5038
|
" canvas_div.css('width', width)\n",
|
|
|
5039
|
" canvas_div.css('height', height)\n",
|
|
|
5040
|
"\n",
|
|
|
5041
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
5042
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
5043
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
5044
|
"\n",
|
|
|
5045
|
" rubberband.attr('width', width);\n",
|
|
|
5046
|
" rubberband.attr('height', height);\n",
|
|
|
5047
|
" }\n",
|
|
|
5048
|
"\n",
|
|
|
5049
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
5050
|
" // upon first draw.\n",
|
|
|
5051
|
" this._resize_canvas(600, 600);\n",
|
|
|
5052
|
"\n",
|
|
|
5053
|
" // Disable right mouse context menu.\n",
|
|
|
5054
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
5055
|
" return false;\n",
|
|
|
5056
|
" });\n",
|
|
|
5057
|
"\n",
|
|
|
5058
|
" function set_focus () {\n",
|
|
|
5059
|
" canvas.focus();\n",
|
|
|
5060
|
" canvas_div.focus();\n",
|
|
|
5061
|
" }\n",
|
|
|
5062
|
"\n",
|
|
|
5063
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
5064
|
"}\n",
|
|
|
5065
|
"\n",
|
|
|
5066
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
5067
|
" var fig = this;\n",
|
|
|
5068
|
"\n",
|
|
|
5069
|
" var nav_element = $('<div/>')\n",
|
|
|
5070
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
5071
|
" this.root.append(nav_element);\n",
|
|
|
5072
|
"\n",
|
|
|
5073
|
" // Define a callback function for later on.\n",
|
|
|
5074
|
" function toolbar_event(event) {\n",
|
|
|
5075
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
5076
|
" }\n",
|
|
|
5077
|
" function toolbar_mouse_event(event) {\n",
|
|
|
5078
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
5079
|
" }\n",
|
|
|
5080
|
"\n",
|
|
|
5081
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
5082
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
5083
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
5084
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
5085
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
5086
|
"\n",
|
|
|
5087
|
" if (!name) {\n",
|
|
|
5088
|
" // put a spacer in here.\n",
|
|
|
5089
|
" continue;\n",
|
|
|
5090
|
" }\n",
|
|
|
5091
|
" var button = $('<button/>');\n",
|
|
|
5092
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
5093
|
" 'ui-button-icon-only');\n",
|
|
|
5094
|
" button.attr('role', 'button');\n",
|
|
|
5095
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
5096
|
" button.click(method_name, toolbar_event);\n",
|
|
|
5097
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
5098
|
"\n",
|
|
|
5099
|
" var icon_img = $('<span/>');\n",
|
|
|
5100
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
5101
|
" icon_img.addClass(image);\n",
|
|
|
5102
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
5103
|
"\n",
|
|
|
5104
|
" var tooltip_span = $('<span/>');\n",
|
|
|
5105
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
5106
|
" tooltip_span.html(tooltip);\n",
|
|
|
5107
|
"\n",
|
|
|
5108
|
" button.append(icon_img);\n",
|
|
|
5109
|
" button.append(tooltip_span);\n",
|
|
|
5110
|
"\n",
|
|
|
5111
|
" nav_element.append(button);\n",
|
|
|
5112
|
" }\n",
|
|
|
5113
|
"\n",
|
|
|
5114
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
5115
|
"\n",
|
|
|
5116
|
" var fmt_picker = $('<select/>');\n",
|
|
|
5117
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
5118
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
5119
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
5120
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
5121
|
"\n",
|
|
|
5122
|
" for (var ind in mpl.extensions) {\n",
|
|
|
5123
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
5124
|
" var option = $(\n",
|
|
|
5125
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
5126
|
" fmt_picker.append(option)\n",
|
|
|
5127
|
" }\n",
|
|
|
5128
|
"\n",
|
|
|
5129
|
" // Add hover states to the ui-buttons\n",
|
|
|
5130
|
" $( \".ui-button\" ).hover(\n",
|
|
|
5131
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
5132
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
5133
|
" );\n",
|
|
|
5134
|
"\n",
|
|
|
5135
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
5136
|
" nav_element.append(status_bar);\n",
|
|
|
5137
|
" this.message = status_bar[0];\n",
|
|
|
5138
|
"}\n",
|
|
|
5139
|
"\n",
|
|
|
5140
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
5141
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
5142
|
" // which will in turn request a refresh of the image.\n",
|
|
|
5143
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
5144
|
"}\n",
|
|
|
5145
|
"\n",
|
|
|
5146
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
5147
|
" properties['type'] = type;\n",
|
|
|
5148
|
" properties['figure_id'] = this.id;\n",
|
|
|
5149
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
5150
|
"}\n",
|
|
|
5151
|
"\n",
|
|
|
5152
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
5153
|
" if (!this.waiting) {\n",
|
|
|
5154
|
" this.waiting = true;\n",
|
|
|
5155
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
5156
|
" }\n",
|
|
|
5157
|
"}\n",
|
|
|
5158
|
"\n",
|
|
|
5159
|
"\n",
|
|
|
5160
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
5161
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
5162
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
5163
|
" fig.ondownload(fig, format);\n",
|
|
|
5164
|
"}\n",
|
|
|
5165
|
"\n",
|
|
|
5166
|
"\n",
|
|
|
5167
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
5168
|
" var size = msg['size'];\n",
|
|
|
5169
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
5170
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
5171
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
5172
|
" };\n",
|
|
|
5173
|
"}\n",
|
|
|
5174
|
"\n",
|
|
|
5175
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
5176
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
5177
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
5178
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
5179
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
5180
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
5181
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
5182
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
5183
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
5184
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
5185
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
5186
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
5187
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
5188
|
"\n",
|
|
|
5189
|
" fig.rubberband_context.clearRect(\n",
|
|
|
5190
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
5191
|
"\n",
|
|
|
5192
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
5193
|
"}\n",
|
|
|
5194
|
"\n",
|
|
|
5195
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
5196
|
" // Updates the figure title.\n",
|
|
|
5197
|
" fig.header.textContent = msg['label'];\n",
|
|
|
5198
|
"}\n",
|
|
|
5199
|
"\n",
|
|
|
5200
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
5201
|
" var cursor = msg['cursor'];\n",
|
|
|
5202
|
" switch(cursor)\n",
|
|
|
5203
|
" {\n",
|
|
|
5204
|
" case 0:\n",
|
|
|
5205
|
" cursor = 'pointer';\n",
|
|
|
5206
|
" break;\n",
|
|
|
5207
|
" case 1:\n",
|
|
|
5208
|
" cursor = 'default';\n",
|
|
|
5209
|
" break;\n",
|
|
|
5210
|
" case 2:\n",
|
|
|
5211
|
" cursor = 'crosshair';\n",
|
|
|
5212
|
" break;\n",
|
|
|
5213
|
" case 3:\n",
|
|
|
5214
|
" cursor = 'move';\n",
|
|
|
5215
|
" break;\n",
|
|
|
5216
|
" }\n",
|
|
|
5217
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
5218
|
"}\n",
|
|
|
5219
|
"\n",
|
|
|
5220
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
5221
|
" fig.message.textContent = msg['message'];\n",
|
|
|
5222
|
"}\n",
|
|
|
5223
|
"\n",
|
|
|
5224
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
5225
|
" // Request the server to send over a new figure.\n",
|
|
|
5226
|
" fig.send_draw_message();\n",
|
|
|
5227
|
"}\n",
|
|
|
5228
|
"\n",
|
|
|
5229
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
5230
|
" fig.image_mode = msg['mode'];\n",
|
|
|
5231
|
"}\n",
|
|
|
5232
|
"\n",
|
|
|
5233
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
5234
|
" // Called whenever the canvas gets updated.\n",
|
|
|
5235
|
" this.send_message(\"ack\", {});\n",
|
|
|
5236
|
"}\n",
|
|
|
5237
|
"\n",
|
|
|
5238
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
5239
|
"// Called in the figure constructor.\n",
|
|
|
5240
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
5241
|
" return function socket_on_message(evt) {\n",
|
|
|
5242
|
" if (evt.data instanceof Blob) {\n",
|
|
|
5243
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
5244
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
5245
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
5246
|
" * to be part of the websocket stream */\n",
|
|
|
5247
|
" evt.data.type = \"image/png\";\n",
|
|
|
5248
|
"\n",
|
|
|
5249
|
" /* Free the memory for the previous frames */\n",
|
|
|
5250
|
" if (fig.imageObj.src) {\n",
|
|
|
5251
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
5252
|
" fig.imageObj.src);\n",
|
|
|
5253
|
" }\n",
|
|
|
5254
|
"\n",
|
|
|
5255
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
5256
|
" evt.data);\n",
|
|
|
5257
|
" fig.updated_canvas_event();\n",
|
|
|
5258
|
" fig.waiting = false;\n",
|
|
|
5259
|
" return;\n",
|
|
|
5260
|
" }\n",
|
|
|
5261
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
5262
|
" fig.imageObj.src = evt.data;\n",
|
|
|
5263
|
" fig.updated_canvas_event();\n",
|
|
|
5264
|
" fig.waiting = false;\n",
|
|
|
5265
|
" return;\n",
|
|
|
5266
|
" }\n",
|
|
|
5267
|
"\n",
|
|
|
5268
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
5269
|
" var msg_type = msg['type'];\n",
|
|
|
5270
|
"\n",
|
|
|
5271
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
5272
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
5273
|
" try {\n",
|
|
|
5274
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
5275
|
" } catch (e) {\n",
|
|
|
5276
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
5277
|
" return;\n",
|
|
|
5278
|
" }\n",
|
|
|
5279
|
"\n",
|
|
|
5280
|
" if (callback) {\n",
|
|
|
5281
|
" try {\n",
|
|
|
5282
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
5283
|
" callback(fig, msg);\n",
|
|
|
5284
|
" } catch (e) {\n",
|
|
|
5285
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
5286
|
" }\n",
|
|
|
5287
|
" }\n",
|
|
|
5288
|
" };\n",
|
|
|
5289
|
"}\n",
|
|
|
5290
|
"\n",
|
|
|
5291
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
5292
|
"mpl.findpos = function(e) {\n",
|
|
|
5293
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
5294
|
" var targ;\n",
|
|
|
5295
|
" if (!e)\n",
|
|
|
5296
|
" e = window.event;\n",
|
|
|
5297
|
" if (e.target)\n",
|
|
|
5298
|
" targ = e.target;\n",
|
|
|
5299
|
" else if (e.srcElement)\n",
|
|
|
5300
|
" targ = e.srcElement;\n",
|
|
|
5301
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
5302
|
" targ = targ.parentNode;\n",
|
|
|
5303
|
"\n",
|
|
|
5304
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
5305
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
5306
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
5307
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
5308
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
5309
|
"\n",
|
|
|
5310
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
5311
|
"};\n",
|
|
|
5312
|
"\n",
|
|
|
5313
|
"/*\n",
|
|
|
5314
|
" * return a copy of an object with only non-object keys\n",
|
|
|
5315
|
" * we need this to avoid circular references\n",
|
|
|
5316
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
5317
|
" */\n",
|
|
|
5318
|
"function simpleKeys (original) {\n",
|
|
|
5319
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
5320
|
" if (typeof original[key] !== 'object')\n",
|
|
|
5321
|
" obj[key] = original[key]\n",
|
|
|
5322
|
" return obj;\n",
|
|
|
5323
|
" }, {});\n",
|
|
|
5324
|
"}\n",
|
|
|
5325
|
"\n",
|
|
|
5326
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
5327
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
5328
|
"\n",
|
|
|
5329
|
" if (name === 'button_press')\n",
|
|
|
5330
|
" {\n",
|
|
|
5331
|
" this.canvas.focus();\n",
|
|
|
5332
|
" this.canvas_div.focus();\n",
|
|
|
5333
|
" }\n",
|
|
|
5334
|
"\n",
|
|
|
5335
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
5336
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
5337
|
"\n",
|
|
|
5338
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
5339
|
" step: event.step,\n",
|
|
|
5340
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
5341
|
"\n",
|
|
|
5342
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
5343
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
5344
|
" * to control all of the cursor setting manually through the\n",
|
|
|
5345
|
" * 'cursor' event from matplotlib */\n",
|
|
|
5346
|
" event.preventDefault();\n",
|
|
|
5347
|
" return false;\n",
|
|
|
5348
|
"}\n",
|
|
|
5349
|
"\n",
|
|
|
5350
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
5351
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
5352
|
"}\n",
|
|
|
5353
|
"\n",
|
|
|
5354
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
5355
|
"\n",
|
|
|
5356
|
" // Prevent repeat events\n",
|
|
|
5357
|
" if (name == 'key_press')\n",
|
|
|
5358
|
" {\n",
|
|
|
5359
|
" if (event.which === this._key)\n",
|
|
|
5360
|
" return;\n",
|
|
|
5361
|
" else\n",
|
|
|
5362
|
" this._key = event.which;\n",
|
|
|
5363
|
" }\n",
|
|
|
5364
|
" if (name == 'key_release')\n",
|
|
|
5365
|
" this._key = null;\n",
|
|
|
5366
|
"\n",
|
|
|
5367
|
" var value = '';\n",
|
|
|
5368
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
5369
|
" value += \"ctrl+\";\n",
|
|
|
5370
|
" if (event.altKey && event.which != 18)\n",
|
|
|
5371
|
" value += \"alt+\";\n",
|
|
|
5372
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
5373
|
" value += \"shift+\";\n",
|
|
|
5374
|
"\n",
|
|
|
5375
|
" value += 'k';\n",
|
|
|
5376
|
" value += event.which.toString();\n",
|
|
|
5377
|
"\n",
|
|
|
5378
|
" this._key_event_extra(event, name);\n",
|
|
|
5379
|
"\n",
|
|
|
5380
|
" this.send_message(name, {key: value,\n",
|
|
|
5381
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
5382
|
" return false;\n",
|
|
|
5383
|
"}\n",
|
|
|
5384
|
"\n",
|
|
|
5385
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
5386
|
" if (name == 'download') {\n",
|
|
|
5387
|
" this.handle_save(this, null);\n",
|
|
|
5388
|
" } else {\n",
|
|
|
5389
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
5390
|
" }\n",
|
|
|
5391
|
"};\n",
|
|
|
5392
|
"\n",
|
|
|
5393
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
5394
|
" this.message.textContent = tooltip;\n",
|
|
|
5395
|
"};\n",
|
|
|
5396
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
5397
|
"\n",
|
|
|
5398
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
5399
|
"\n",
|
|
|
5400
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
5401
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
5402
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
5403
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
5404
|
" var ws = {};\n",
|
|
|
5405
|
"\n",
|
|
|
5406
|
" ws.close = function() {\n",
|
|
|
5407
|
" comm.close()\n",
|
|
|
5408
|
" };\n",
|
|
|
5409
|
" ws.send = function(m) {\n",
|
|
|
5410
|
" //console.log('sending', m);\n",
|
|
|
5411
|
" comm.send(m);\n",
|
|
|
5412
|
" };\n",
|
|
|
5413
|
" // Register the callback with on_msg.\n",
|
|
|
5414
|
" comm.on_msg(function(msg) {\n",
|
|
|
5415
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
5416
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
5417
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
5418
|
" });\n",
|
|
|
5419
|
" return ws;\n",
|
|
|
5420
|
"}\n",
|
|
|
5421
|
"\n",
|
|
|
5422
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
5423
|
" // This is the function which gets called when the mpl process\n",
|
|
|
5424
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
5425
|
"\n",
|
|
|
5426
|
" var id = msg.content.data.id;\n",
|
|
|
5427
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
5428
|
" // socket was opened in Python.\n",
|
|
|
5429
|
" var element = $(\"#\" + id);\n",
|
|
|
5430
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
5431
|
"\n",
|
|
|
5432
|
" function ondownload(figure, format) {\n",
|
|
|
5433
|
" window.open(figure.imageObj.src);\n",
|
|
|
5434
|
" }\n",
|
|
|
5435
|
"\n",
|
|
|
5436
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
5437
|
" ondownload,\n",
|
|
|
5438
|
" element.get(0));\n",
|
|
|
5439
|
"\n",
|
|
|
5440
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
5441
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
5442
|
" ws_proxy.onopen();\n",
|
|
|
5443
|
"\n",
|
|
|
5444
|
" fig.parent_element = element.get(0);\n",
|
|
|
5445
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
5446
|
" if (!fig.cell_info) {\n",
|
|
|
5447
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
5448
|
" return;\n",
|
|
|
5449
|
" }\n",
|
|
|
5450
|
"\n",
|
|
|
5451
|
" var output_index = fig.cell_info[2]\n",
|
|
|
5452
|
" var cell = fig.cell_info[0];\n",
|
|
|
5453
|
"\n",
|
|
|
5454
|
"};\n",
|
|
|
5455
|
"\n",
|
|
|
5456
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
5457
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
5458
|
" fig.root.unbind('remove')\n",
|
|
|
5459
|
"\n",
|
|
|
5460
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
5461
|
" fig.push_to_output();\n",
|
|
|
5462
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
5463
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
5464
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
5465
|
" IPython.keyboard_manager.enable()\n",
|
|
|
5466
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
5467
|
" fig.close_ws(fig, msg);\n",
|
|
|
5468
|
"}\n",
|
|
|
5469
|
"\n",
|
|
|
5470
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
5471
|
" fig.send_message('closing', msg);\n",
|
|
|
5472
|
" // fig.ws.close()\n",
|
|
|
5473
|
"}\n",
|
|
|
5474
|
"\n",
|
|
|
5475
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
5476
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
5477
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
5478
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
5479
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
5480
|
"}\n",
|
|
|
5481
|
"\n",
|
|
|
5482
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
5483
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
5484
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
5485
|
" this.send_message(\"ack\", {});\n",
|
|
|
5486
|
" var fig = this;\n",
|
|
|
5487
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
5488
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
5489
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
5490
|
"}\n",
|
|
|
5491
|
"\n",
|
|
|
5492
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
5493
|
" var fig = this;\n",
|
|
|
5494
|
"\n",
|
|
|
5495
|
" var nav_element = $('<div/>')\n",
|
|
|
5496
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
5497
|
" this.root.append(nav_element);\n",
|
|
|
5498
|
"\n",
|
|
|
5499
|
" // Define a callback function for later on.\n",
|
|
|
5500
|
" function toolbar_event(event) {\n",
|
|
|
5501
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
5502
|
" }\n",
|
|
|
5503
|
" function toolbar_mouse_event(event) {\n",
|
|
|
5504
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
5505
|
" }\n",
|
|
|
5506
|
"\n",
|
|
|
5507
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
5508
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
5509
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
5510
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
5511
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
5512
|
"\n",
|
|
|
5513
|
" if (!name) { continue; };\n",
|
|
|
5514
|
"\n",
|
|
|
5515
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
5516
|
" button.click(method_name, toolbar_event);\n",
|
|
|
5517
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
5518
|
" nav_element.append(button);\n",
|
|
|
5519
|
" }\n",
|
|
|
5520
|
"\n",
|
|
|
5521
|
" // Add the status bar.\n",
|
|
|
5522
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
5523
|
" nav_element.append(status_bar);\n",
|
|
|
5524
|
" this.message = status_bar[0];\n",
|
|
|
5525
|
"\n",
|
|
|
5526
|
" // Add the close button to the window.\n",
|
|
|
5527
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
5528
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
5529
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
5530
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
5531
|
" buttongrp.append(button);\n",
|
|
|
5532
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
5533
|
" titlebar.prepend(buttongrp);\n",
|
|
|
5534
|
"}\n",
|
|
|
5535
|
"\n",
|
|
|
5536
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
5537
|
" var fig = this\n",
|
|
|
5538
|
" el.on(\"remove\", function(){\n",
|
|
|
5539
|
"\tfig.close_ws(fig, {});\n",
|
|
|
5540
|
" });\n",
|
|
|
5541
|
"}\n",
|
|
|
5542
|
"\n",
|
|
|
5543
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
5544
|
" // this is important to make the div 'focusable\n",
|
|
|
5545
|
" el.attr('tabindex', 0)\n",
|
|
|
5546
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
5547
|
" // off when our div gets focus\n",
|
|
|
5548
|
"\n",
|
|
|
5549
|
" // location in version 3\n",
|
|
|
5550
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
5551
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
5552
|
" }\n",
|
|
|
5553
|
" else {\n",
|
|
|
5554
|
" // location in version 2\n",
|
|
|
5555
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
5556
|
" }\n",
|
|
|
5557
|
"\n",
|
|
|
5558
|
"}\n",
|
|
|
5559
|
"\n",
|
|
|
5560
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
5561
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
5562
|
" if (!manager)\n",
|
|
|
5563
|
" manager = IPython.keyboard_manager;\n",
|
|
|
5564
|
"\n",
|
|
|
5565
|
" // Check for shift+enter\n",
|
|
|
5566
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
5567
|
" this.canvas_div.blur();\n",
|
|
|
5568
|
" event.shiftKey = false;\n",
|
|
|
5569
|
" // Send a \"J\" for go to next cell\n",
|
|
|
5570
|
" event.which = 74;\n",
|
|
|
5571
|
" event.keyCode = 74;\n",
|
|
|
5572
|
" manager.command_mode();\n",
|
|
|
5573
|
" manager.handle_keydown(event);\n",
|
|
|
5574
|
" }\n",
|
|
|
5575
|
"}\n",
|
|
|
5576
|
"\n",
|
|
|
5577
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
5578
|
" fig.ondownload(fig, null);\n",
|
|
|
5579
|
"}\n",
|
|
|
5580
|
"\n",
|
|
|
5581
|
"\n",
|
|
|
5582
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
5583
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
5584
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
5585
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
5586
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
5587
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
5588
|
" var ncells = cells.length;\n",
|
|
|
5589
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
5590
|
" var cell = cells[i];\n",
|
|
|
5591
|
" if (cell.cell_type === 'code'){\n",
|
|
|
5592
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
5593
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
5594
|
" if (data.data) {\n",
|
|
|
5595
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
5596
|
" data = data.data;\n",
|
|
|
5597
|
" }\n",
|
|
|
5598
|
" if (data['text/html'] == html_output) {\n",
|
|
|
5599
|
" return [cell, data, j];\n",
|
|
|
5600
|
" }\n",
|
|
|
5601
|
" }\n",
|
|
|
5602
|
" }\n",
|
|
|
5603
|
" }\n",
|
|
|
5604
|
"}\n",
|
|
|
5605
|
"\n",
|
|
|
5606
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
5607
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
5608
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
5609
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
5610
|
"}\n"
|
|
|
5611
|
],
|
|
|
5612
|
"text/plain": [
|
|
|
5613
|
"<IPython.core.display.Javascript object>"
|
|
|
5614
|
]
|
|
|
5615
|
},
|
|
|
5616
|
"metadata": {},
|
|
|
5617
|
"output_type": "display_data"
|
|
|
5618
|
},
|
|
|
5619
|
{
|
|
|
5620
|
"data": {
|
|
|
5621
|
"text/html": [
|
|
|
5622
|
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAPACAYAAADUtWS5AAAgAElEQVR4nOzdf7DXdZ3o8U94gIPr6jqzqMzOTjumVkPXK1p5xbyZ07aw0+6207VcmxivNWOt19W9A2rr3sXwWm5kWkmIVhroiinJSoH8MMOfoKFmeBTklyCogMARFA54zuv+cz3T1+/ha31746f35/N4zLz/4Mvny/fN+cNX83p2OEUAAAAAAAAAUAlF2RcAAAAAAAAAIA0BGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYAAAAAAAAoCIEYAAAAAAAAICKEIABAAAAAAAAKkIABgAAAAAAAKgIARgAAAAAAACgIgRgAAAAAAAAgIoQgAEAAAAAAAAqQgAGAAAAAAAAqAgBGAAAAAAAAKAiBGAAAAAAAACAihCAAQAAAAAAACpCAAYAAAAAAACoCAEYMrV9+/aYPXt2LFu2LJYvX+44juM4juM4juM4juM4juM4zvLlsWzZspg9e3Zs37697FU+lEIAhkzNnj07iqJwHMdxHMdxHMdxHMdxHMdxHGeAM3v27LJX+VAKARgytWzZsv4BVvb/m8pxHMdxHMdxHMdxHMdxHMdx/lDOm99AtWzZsrJX+VAKARgytXz58iiKIpYvX172VQAAAAAA4A+G/Tl1JwBDpgwwAAAAAABoZn9O3QnAkCkDDAAAAAAAmtmfU3cCMGTKAAMAAAAAgGb259SdAAyZMsAAAAAAAKCZ/Tl1JwBDpgwwAAAAAABoZn9O3QnAkCkDDAAAAAAgP729vbFp06ZYu3ZtrF692vktz5o1a2LDhg3R3d0dfX19Lb/G9ufUnQAMmTLAAAAAAADy0tvbG2vXro2urq5YsWJFrFq1qvSwmsNZtWpVrFy5Mrq6uqKrqyvWrVsX+/bt2+/X2f6cuhOAIVMGGAAAAABAXjZt2hRdXV3x0ksvve13sdJs3759sXHjxujq6orNmzfv9zn7c+pOAIZMGWAAAAAAAHlZu3ZtrFixQvz9PfT19cWKFStizZo1+33G/py6E4AhUwYYAAAAAEBe3vznjPn9vPlPZ++P/Tl1JwBDpgwwAAAAAIC8vPkzbfn9vN3X0f6cuhOAIVMGGAAAAABAXgTgNARgaE0AhkwZYAAAAAAAeRGA0xCAoTUBGDJlgAEAAAAA5KXqAfimm26KoigazvDhw+P000+PuXPnNjw7c+bM+NznPhfHHHNMFEURH/3oR3/rzxGAoTUBGDJlgAEAAAAA5KUuAXjSpEkxY8aMmD59ekyePDlGjhwZRVHEnDlz+p/96Ec/Goccckh87GMfi8MPP1wAhoQEYMiUAQYAAAAAkJe6BODHHnus4fVt27bF4MGD4+yzz+5/bf369dHb2xsRESNHjhSAISEBGDJlgAEAAAAA5KWuAbivry8OPfTQGDdu3IDvE4AhLQEYMmWAAQAAAADkpS4BeNGiRbFly5bYvHlzLF++PM4777wYNGhQLFiwYMD3CcCQlgAMmTLAAAAAAADyUpcA/NYzdOjQuPnmm/f7PgEY0hKAIVMGGAAAAABAXvYXLi+/e3l85vqH/2DO5Xe3t3d+MwBPmTIlFi5cGAsXLoxbbrklxowZEx0dHTFr1qwB3ycAQ1oCMGTKAAMAAAAAyMv+wuVnrn843n3JT/9gzmeuf7itv9/+fgZwb29vHH/88TFixIjo6elpep8ADGkJwJApAwwAAAAAIC91+Q7gtwbgiIgLL7xwvzttARjSEoAhUwYYAAAAAEBe6vIzgAcKwOeff34URRFLlixp+j0BGNISgCFTBhgAAAAAQF7qGoD37t0bxx57bAwZMiS6u7ub3icAQ1oCMGTKAAMAAAAAyEtdAvCkSZNixowZMWPGjLj66qvjpJNOiqIo4tJLL+1/dvHixXHFFVfEFVdcEUcccUT8xV/8Rf+vFy9e3PJzBGBoTQCGTBlgAAAAAAB5qUsA/s3T2dkZJ5xwQkydOjX6+vr6n504cWLTs2+eiRMntvwcARhaE4AhUwYYAAAAAEBeqh6A3ykCMLQmAEOmDDAAAAAAgLwIwGkIwNCaAAyZMsAAAAAAAPIiAKchAENrAjBkygADUtrzxp6Yt3ZebNq5qeyrAAAAAFSWAJyGAAytCcCQKQMMSOnfH/33+MDNH4gTp59Y9lUAAAAAKksATkMAhtYEYMiUAQak9IGbP9B/AAAAADgwBOA0BGBoTQCGTBlgQEoCMAAAAMCBJwCnIQBDawIwZMoAA1ISgAEAAAAOPAE4DQEYWhOAIVMGGJCSAAwAAABw4AnAaQjA0JoADJkywICUBGAAAACAA08ATkMAhtYEYMiUAQakJAADAAAAHHgCcBoCMLQmAEOmDDAgJQEYAAAA4MATgNMQgKE1ARgyZYABKQnAAAAAAAeeAJyGAAytCcCQKQMMSEkABgAAADjwBOA0BGBoTQCGTBlgQEoCMAAAAMCBV/UAfNNNN0VRFA1n+PDhcfrpp8fcuXP7n9u6dWt84xvfiNNOOy3+9E//NA477LA4+eSTY+bMmb/V5wjA0JoADJkywICUBGAAAACAA68uAXjSpEkxY8aMmD59ekyePDlGjhwZRVHEnDlzIiJizpw5MXjw4Pi7v/u7uPbaa+O6666Lj33sY1EURfzbv/3b236OAAytCcCQKQMMSEkABgAAADjw6hKAH3vssYbXt23bFoMHD46zzz47IiLWrFkT69ata3imr68vzjjjjBg6dGjs2rWr5ecIwNCaAAyZMsCAlARgAAAAgAOvrgG4r68vDj300Bg3blzL93/nO9+JoijiqaeeavmcAAytCcCQKQMMSEkABgAAADjw6hKAFy1aFFu2bInNmzfH8uXL47zzzotBgwbFggULWr7/X/7lX6Ioiti0aVPL5wRgaE0AhkwZYEBKAjAAAADAgVeXAPzWM3To0Lj55ptbvveVV16JI444Ik477bS3/RwBGFoTgCFTBhiQkgAMAAAAcODtN1zOvSTih3/9h3PmXtLW3+/NADxlypRYuHBhLFy4MG655ZYYM2ZMdHR0xKxZswZ8X29vb4wZMyaGDBkSTz75ZPtfx//P/py6E4AhUwYYkJIADAAAAHDg7Tdc/vCvIyYe+odzfvjXbf399vczgHt7e+P444+PESNGRE9PT9P7/vEf/zGKoojp06f/fl/H/8/+nLoTgCFTBhiQkgAMAAAAcODV5TuA3xqAIyIuvPDCAXfal19+eRRFEVddddVv/TkCMLQmAEOmDDAgJQEYAAAA4MCry88AHigAn3/++VEURSxZsqT/teuuuy6KooiLLrrod/ocARhaE4AhUwYYkJIADAAAAHDg1TUA7927N4499tgYMmRIdHd3R0TEzJkzY9CgQfG5z30u+vr6fqfPEYChNQEYMmWAASkJwAAAAAAHXl0C8KRJk2LGjBkxY8aMuPrqq+Okk06Koiji0ksvjYiIpUuXxpAhQ2L48OHxwx/+sP/ZN8/bfY0EYGhNAIZMGWBASgIwAAAAwIFXlwD8m6ezszNOOOGEmDp1av93+g703G+em266qeXnCMDQmgAMmTLAgJQEYAAAAIADr+oB+J0iAENrAjBkygADUhKAAQAAAA48ATgNARhaE4AhUwYYkJIADAAAAHDgCcBpCMDQmgAMmTLAgJR+MwC/+bNYAAAAAEhLAE5DAIbWBGDIlAEGpNLb19sQgHv7esu+EgAAAEAlCcBpCMDQmgAMmTLAgFT29u4VgAEAAADeAQJwGgIwtCYAQ6YMMCCV3ft2NwTgN3rfKPtKAAAAAJUkAKchAENrAjBkygADUtm1d1dDAN7Xu6/sKwEAAABUkgCchgAMrQnAkCkDDEhlx54dDQF4b+/esq8EAAAAUEkCcBoCMLQmAEOmDDAgla2vbxWAAQAAAN4BAnAaAjC0JgBDpgwwIJWXX3u5MQC/IQADAAAAHAgCcBoCMLQmAEOmDDAglU07NzUE4J43esq+EgAAAEAlCcBpCMDQmgAMmTLAgFTWv7q+IQDveWNP2VcCAAAAqCQBOA0BGFoTgCFTBhiQytodawVgAAAAgHdA1QPwTTfdFEVRNJzhw4fH6aefHnPnzm149qKLLopRo0bF4YcfHsOGDYv3ve99MXHixNi5c+fbfo4ADK0JwJApAwxIZdX2VQ0BePe+3WVfCQAAAKCS6hKAJ02aFDNmzIjp06fH5MmTY+TIkVEURcyZM6f/2VNPPTX+6Z/+Kb7zne/EDTfcEF/+8pdj6NChceqpp0Zvb2/LzxGAoTUBGDJlgAGpPPvKsw0B+PV9r5d9JQAAAIBKqksAfuyxxxpe37ZtWwwePDjOPvvslu//5je/GUVRxCOPPNLyOQEYWhOAIVMGGJDK01ufbgjAr+19rewrAQAAAFRSXQNwX19fHHrooTFu3LiW77/zzjujKIqYN29ey+cEYGhNAIZMGWBAKr/a/CsBGAAAAOAdUJcAvGjRotiyZUts3rw5li9fHuedd14MGjQoFixY0PD8vn37YsuWLbFx48aYP39+vO9974s//uM/jldeeaXl5wjA0JoADJkywIBUHn/5cQEYAAAA4B1QlwD81jN06NC4+eabm55/5JFHGp5773vfG/fdd9/bfo4ADK0JwJApAwxI5dEXH20IwLv27ir7SgAAAACVtL9wedXSq+Kceef8wZyrll7V1t/vzQA8ZcqUWLhwYSxcuDBuueWWGDNmTHR0dMSsWbManu/u7o6FCxfG7Nmz4+KLL44TTzwx5syZ0/bX8U3259SdAAyZMsCAVB7Z9IgADAAAAPAO2F+4PGfeOQ37mbLPOfPOaevvt7+fAdzb2xvHH398jBgxInp6evb7/ltvvTUGDRoUTz75ZFtfxzfZn1N3AjBkygADUnnwhQcb/gf+zp6dZV8JAAAAoJLq8h3Abw3AEREXXnjh2+60d+/eHYMGDYpLL7205ecIwNCaAAyZMsCAVBZvWNwQgF/tebXsKwEAAABUUl1+BvBAAfj888+PoihiyZIl+33/jh07oiiK+PKXv9zycwRgaE0AhkwZYEAq9z5/b0MA7u7pLvtKAAAAAJVU1wC8d+/eOPbYY2PIkCHR3d0d27dvj7179za9/5vf/GYURRE/+MEPWn6OAAytCcCQKQMMSGXBugUCMAAAAMA7oC4BeNKkSTFjxoyYMWNGXH311XHSSSdFURT9/7TzXXfdFX/+538e//zP/xzf+9734tprr41Pf/rT8a53vSs++MEPtvw5wRECMLwdARgyZYABqcxdM7chAO/Ys6PsKwEAAABUUl0C8G+ezs7OOOGEE2Lq1KnR19cXERGrVq2KcePGxdFHHx3Dhg2Lzs7OGDlyZEycODF27dr1tp8jAENrAjBkygADUrl71d0CMAAAAMA7oOoB+J0iAENrAjBkygADUrnrubsaAvD23dvLvhIAAABAJQnAaQjA0JoADJkywIBU7lxxpwAMAAAA8A4QgNMQgKE1ARgyZYABqdz+7O0NAXjb7m1lXwkAAACgkgTgNARgaE0AhkwZYEAqt3bd2hCAX9n9StlXAgAAAKgkATgNARhaE4AhUwYYkMr0p6c3BOCtr28t+0oAAAAAlSQApyEAQ2sCMGTKAANSuenXNwnAAAAAAO+A1atXx6pVq8q+RvZWrVolAEMLAjBkygADUrnxqRsbAvCW17eUfSUAAACASlqzZk2sXLmy7Gtk77nnnos1a9bs9/ftz6k7ARgyZYABqUx9cqoADAAAAPAO2LBhQ3R1dcW+ffvKvkq2enp6oqurKzZu3LjfZ+zPqTsBGDJlgAGpXPfEdQ0BePNrm8u+EgAAAEAldXd398fLvr6+sq+TnZ6enli3bl10dXXFzp079/uc/Tl1JwBDpgwwIJVvL/u2AAwAAADwDujr6+sPmCtWrOj/WbZO67Nq1ap47rnnoqurK7q6uuKll15qGdDtz6k7ARgyZYABqVz9y6sbAvDLr71c9pUAAAAAKmvfvn2xefPmWLNmTelhNaezZs2a2LhxY+zcufNtv3va/py6E4AhUwYYkMo3Hv1GQwB+addLZV8JAAAAANpmf07dCcCQKQMMSOXrS7/eEIBf3PVi2VcCAAAAgLbZn1N3AjBkygADUrnikSsEYAAAAAAqw/6cuhOAIVMGGJDKxIcmCsAAAAAAVIb9OXUnAEOmDDAglX998F8bAvCmnZvKvhIAAAAAtM3+nLoTgCFTBhiQylfu/4oADAAAAEBl2J9TdwIwZMoAA1KZsHhCQwDeuHNj2VcCAAAAgLbZn1N3AjBkygADUvnf9/3vhgD8ws4Xyr4SAAAAALTN/py6E4AhUwYYkMqFP7+wIQBveHVD2VcCAAAAgLbZn1N3AjBkygADUvlfi/6XAAwAAABAZdifU3cCMGTKAANS+dLCLzUE4PWvri/7SgAAAADQNvtz6k4Ahv1YuXJlfPazn40/+7M/i2HDhsV73/ve+OpXvxqvvfZaw3MPPfRQnHrqqTFs2LA48sgj44ILLoidO3c2/Xl79uyJiy++OEaMGBGdnZ3x4Q9/OBYsWND2/QwwIJUvzv9iYwDuFoABAAAAyJf9OXUnAMMA1q9fH3/yJ38S7373u+PrX/96TJs2Lc4555woiiL+9m//tv+5J554Ijo7O2PUqFExderUuOyyy2Lo0KExZsyYpj/zrLPOio6Ojhg/fnxMmzYtTjnllOjo6IgHHnigrTsaYEAq//Oe/9kQgJ/vfr7sKwEAAABA2+zPqTsBGAZw5ZVXDjgcxo0bF0VRxLZt2yIiYuzYsTFixIjo7u7uf+bGG2+Moihi/vz5/a8tXbo0iqKIyZMn97+2e/fueM973hOnnHJKW3c0wIBUxs0dJwADAAAAUBn259SdAAwDuOSSS6IoitiyZUvT64MGDYpdu3ZFd3d3dHR0xIQJExqe6enpiUMOOSS+8IUv9L82YcKEOOiggxpCcUTE1772tSiKItav/93/uVUDDEjl7J+d3RCA13WvK/tKAAAAANA2+3PqTgCGAcybN6//n3t+4oknYv369TFz5sw49NBD46KLLoqIiAcffDCKoojbb7+96f0f+chH4sQTT+z/9cc//vF4//vf3/TcokWLoiiKuPvuu3/nOxpgQCqfnfPZhgC8dsfasq8EAAAAAG2zP6fuBGDYjyuuuCKGDRsWRVH0n8suu6z/9++4444oiiLuv//+pveeeeaZcdRRR/X/euTIkXHGGWc0Pff0009HURRx/fXXt7zLyy+/HMuXL284s2fPNsCAJP7H3f+jIQCv2bGm7CsBAAAAQNsEYOpOAIb9mDFjRvzVX/1V3HDDDTFr1qw499xz413veld897vfjYiI6dOnR1EUsXTp0qb3fv7zn4/DDjus/9dHH310jB07tum51atXR1EUcc0117S8y8SJExtC9G8eAwz4fX1q9qcEYAAAAAAqQwCm7gRgGMBtt90Ww4YNiw0bNjS8fs4558TBBx8cW7du9R3AQGV88iefbAjAq3esLvtKAAAAANA2AZi6E4BhAKeddlqMHj266fWf/OQnURRFLFy40M8ABipj7KyxjQF4uwAMAAAAQL7sz6k7ARgGcNxxx8XJJ5/c9Prtt98eRVHEvHnzYseOHdHR0RETJkxoeKanpycOOeSQOPfcc/tfGz9+fBx00EHR3d3d8OyVV14ZRVHE+vXrf+c7GmBAKp+44xMNAXjV9lVlXwkAAAAA2mZ/Tt0JwDCAT37ykzFkyJBYsWJFw+uf+tSnYtCgQbFx48aIiBgzZkyMGDEiXn311f5nvv/97/dH4jctWbIkiqKIyZMn97+2Z8+eOOaYYwYMzb8NAwxI5YwfnyEAAwAAAFAZ9ufUnQAMA1i8eHEcdNBBccQRR8SkSZNiypQpMXbs2CiKIr74xS/2P7ds2bIYOnRojBo1KqZOnRqXXXZZdHZ2xic+8YmmP/PMM8/s/47hadOmxejRo6OjoyMWL17c1h0NMCCVj93+sYYA/Ny258q+EgAAAAC0zf6cuhOAYT+WLl0aY8eOjaOOOioGDx4cxx13XFx55ZWxb9++huceeOCBGD16dHR2dsbw4cPj/PPPb/iO4Dft3r07xo8fH0cddVQMHTo0PvShD8U999zT9v0MMCCV028/vSEAr9y2suwrAQAAAEDb7M+pOwEYMmWAAam8NQCv2Lbi7d8EAAAAAH+g7M+pOwEYMmWAAal8dOZHBWAAAAAAKsP+nLoTgCFTBhiQyn+f+d8bAvCzrzxb9pUAAAAAoG3259SdAAyZMsCAVARgAAAAAKrE/py6E4AhUwYYkMppt50mAAMAAABQGfbn1J0ADJkywIBUPnLbRxoC8DOvPFP2lQAAAACgbfbn1J0ADJkywIBUTr3t1IYA3LW1q+wrAQAAAEDb7M+pOwEYMmWAAamM/o/RDQH46a1Pl30lAAAAAGib/Tl1JwBDpgwwIBUBGAAAAIAqsT+n7gRgyJQBBqRyyn+c0hCAl2/13xUAAAAA8mV/Tt0JwJApAwxI5ZRb3xKAt/jvCgAAAAD5sj+n7gRgyJQBBqTy3279bw0B+Ndbfl32lQAAAACgbfbn1J0ADJkywIBUTr71ZAEYAAAAgMqwP6fuBGDIlAEGpPLhWz7cEICf2vxU2VcCAAAAgLbZn1N3AjBkygADUvnQLR9qCMC/2vyrsq8EAAAAAG2zP6fuBGDIlAEGpPLWAPzk5ifLvhIAAAAAtM3+nLoTgCFTBhiQygdnfFAABgAAAKAy7M+pOwEYMmWAAam8NQA/8fITZV8JAAAAANpmf07dCcCQKQMMSOWkGScJwAAAAABUhv05dScAQ6YMMCCVE6ef2BCAH3/58bKvBAAAAABtsz+n7gRgyJQBBqQyavooARgAAACAyrA/p+4EYMiUAQakcsL0ExoC8LKXlpV9JQAAAABom/05dScAQ6YMMCCVE37UGIB/+dIvy74SAAAAALTN/py6E4AhUwYYkMp//dF/bQjAj734WNlXAgAAAIC22Z9TdwIwZMoAA1I5/kfHC8AAAAAAVIb9OXUnAEOmDDAglbcG4EdffLTsKwEAAABA2+zPqTsBGDJlgAGp/Jeb/4sADAAAAEBl2J9TdwIwZMoAA1L5zfj7gZs/EEs3LS37SgAAAADQNvtz6k4AhkwZYEAqAjAAAAAAVWJ/Tt0JwJApAwxIoa+vrykAL9m0pOxrAQAAAEDb7M+pOwEYMmWAASn09vU2BeBHNj1S9rUAAAAAoG3259SdAAyZMsCAFN7ofUMABgAAAKBS7M+pOwEYMmWAASns693XFIAf3vhw2dcCAAAAgLbZn1N3AjBkygADUhgoAD+08aGyrwUAAAAAbbM/p+4EYMiUAQaksLd3b3MAfkEABgAAACBf9ufUnQAMmTLAgBT2viEAAwAAAFAt9ufUnQAMmTLAgBR63uhpCsAPvvBg2dcCAAAAgLbZn1N3AjBkygADUtjzxp6mAPzACw+UfS0AAAAAaJv9OXUnAEOmDDAghd37djcF4Ps33F/2tQAAAACgbfbn1J0ADJkywIAUXt/3ugAMAAAAQKXYn1N3AjBkygADUnht72tNAXjxhsVlXwsAAAAA2mZ/Tt0JwJApAwxIQQAGAAAAoGrsz6k7ARgyZYABKQwUgH+x/hdlXwsAAAAA2mZ/Tt0JwJApAwxIYenm0ZIAACAASURBVNfeXQIwAAAAAJVif07dCcCQKQMMSGFnz86mAHzf+vvKvhYAAAAAtM3+nLoTgCFTBhiQwqs9rzYF4J8///OyrwUAAAAAbbM/p+4EYMiUAQak0N3T3RSA733+3rKvBQAAAABtsz+n7gRgyJQBBqSwY88OARgAAACASrE/p+4EYMiUAQakMFAAXvT8orKvBQAAAABtsz+n7gRgyJQBBqSwfff25gC8TgAGAAAAIF/259SdAAyZMsCAFAYKwAvXLSz7WgAAAADQNvtz6k4AhkwZYEAK23ZvE4ABAAAAqBT7c+pOAIZMGWBACq/sfqUpAC9Yt6DsawEAAABA2+zPqTsBGDJlgAEpbH19a1MAnr92ftnXAgAAAIC22Z9TdwIwZMoAA1LY8voWARgAAACASrE/p+4EYMiUAQakMFAAvmftPWVfCwAAAADaZn9O3QnAkCkDDEhh82ubmwLwvLXzyr4WAAAAALTN/py6E4AhUwYYkMLLr73cHIDXCMAAAAAA5Mv+nLoTgCFTBhiQggAMAAAAQNXYn1N3AjBkygADUnhp10tNAXjumrllXwsAAAAA2mZ/Tt0JwJApAwxI4cVdLzYF4J+t/lnZ1wIAAACAttmfU3cCMGTKAANSGCgA/3T1T8u+FgAAAAC0zf6cuhOAIVMGGJDCpp2bBGAAAAAAKsX+nLoTgCFTBhiQwsadG5sC8JzVc8q+FgAAAAC0zf6cuhOAIVMGGJDCCztfaArAd6+6u+xrAQAAAEDb7M+pOwEYMmWAASlseHWDAAwAAABApdifU3cCMGTKAANSEIABAAAAqBr7c+pOAIZMGWBACutfXd8UgP9z1X+WfS0AAAAAaJv9OXUnAEOmDDAghfXdzQF49nOzy74WAAAAALTN/py6E4AhUwYYkMLz3c83BeC7nrur7GsBAAAAQNvsz6k7ARgyZYABKazrXicAAwAAAFAp9ufUnQAMmTLAgBTW7ljbFIB/svInZV8LAAAAANpmf07dCcCQKQMMSGHNjjUCMAAAAACVYn9O3QnAkCkDDEhh9Y7VTQF41spZZV8LAAAAANpmf07dCcCQKQMMSGH1dgEYAAAAgGqxP6fuBGDIlAEGpDBQAL5zxZ1lXwsAAAAA2mZ/Tt0JwJApAwxIYdX2VU0B+I4Vd5R9LQAAAABom/05dScAQ6YMMCCF57Y9JwADAAAAUCn259SdAAyZMsCAFFZuW9kUgH+84sdlXwsAAAAA2mZ/Tt0JwJApAwxIYcW2FU0B+PZnby/7WgAAAADQNvtz6k4AhkwZYEAKz77yrAAMAAAAQKXYn1N3AjBkygADUhCAAQAAAKga+3PqTgCGTBlgQArPvPJMUwCe+czMsq8FAAAAAG2zP6fuBGDIlAEGpDBQAL7tmdvKvhYAAAAAtM3+nLoTgCFTBhiQQtfWrqYA/B/P/EfZ1wIAAACAttmfU3cCMGTKAANSeHrr0wIwAAAAAJVif07dCcCQKQMMSGH51uVNAfjWrlvLvhYAAAAAtM3+nLoTgCFTBhiQwvItzQH4lq5byr4WAAAAALTN/py6E4AhUwYYkMKvt/xaAAYAAACgUuzPqTsBGDJlgAEpPLX5KQEYAAAAgEqxP6fuBGDIlAEGpPCrzb9qCsAznp5R9rUAAAAAoG3259SdAAyZMsCAFAYKwNOfnl72tQAAAACgbfbn1J0ADJkywIAUntz8ZFMA/tHyH5V9LQAAAABom/05dScAQ6YMMCCFJ15+QgAGAAAAoFLsz6k7ARgyZYABKQwUgG9efnPZ1wIAAACAttmfU3cCMGTKAANSePzlxwVgAAAAACrF/py6E4AhUwYYkMKyl5Y1BeCbfn1T2dcCAAAAgLbZn1N3AjBkygADUvjlS78UgAEAAACoFPtz6k4AhkwZYEAKj734WFMA/uGvf1j2tQAAAACgbfbn1J0ADJkywIAUBgrAP/j1D8q+FgAAAAC0zf6cuhOAIVMGGJDCoy8+2hSAv//U98u+FgAAAAC0zf6cuhOAIVMGGJCCAAwAAABA1difU3cCMGTKAANSWLppaVMAvvGpG8u+FgAAAAC0zf6cuhOAIVMGGJDCkk1LBGAAAAAAKsX+nLoTgCFTBhiQwiObHhGAAQAAAKgU+3PqTgCGTBlgQAoPb3y4KQDf8Ksbyr4WAAAAALTN/py6E4AhUwYYkMJDGx9qCsDTfjWt7GsBAAAAQNvsz6k7ARgyZYABKTz0QnMAvv7J68u+FgAAAAC0zf6cuhOAIVMGGJCCAAwAAABA1difU3cCMGTKAANSePCFB5sC8NQnp5Z9LQAAAABom/05dScAQ6YMMCCFB154oCkAf+/J75V9LQAAAABom/05dScAQ6YMMCCF+zfc3xyAnxCAAQAAAMiX/Tl1JwBDpgwwIIXFGxYLwAAAAABUiv05dScAQ6YMMCCFgQLwlCemlH0tAAAAAGib/Tl1JwBDpgwwIIVfrP9FUwC+7onryr4WAAAAALTN/py6E4AhUwYYkMJ96+9rCsDfffy7ZV8LAAAAANpmf07dCcCQKQMMSEEABgAAAKBq7M+pOwEYMmWAASn8/PmfNwXg7zz+nbKvBQAAAABtsz+n7gRgyJQBBqRw7/P3NgXgby/7dtnXAgAAAIC22Z9TdwIwZMoAA1JY9PyipgB87bJry74WAAAAALTN/py6E4AhUwYYkMKidQME4F8KwAAAAADky/6cuhOAIVMGGJDCwnULmwLwt355TdnXAgAAAIC22Z9TdwIwZMoAA1JYsG5BUwC++rFvlX0tAAAAAGib/Tl1JwBDpgwwIIX5a+c3BeBvPnZ12dcCAAAAgLbZn1N3AjBkygADUhgoAE9+VAAGAAAAIF/259SdAAyZMsCAFO5Ze09TAP7Go98s+1oAAAAA0Db7c+pOAIZMGWBACvPWzmsKwP++dHLZ1wIAAACAttmfU3cCMGTKAANSmLdGAAYAAACgWuzPqTsBGDJlgAEpzF0ztykAX7XkG2VfCwAAAADaZn9O3QnAkCkDDEjhZ6t/1hSAv7bk38u+FgAAAAC0zf6cuhOAIVMGGJDCT1f/tCkAX/nIVWVfCwAAAADaZn9O3QnAkCkDDEhhzuo5AjAAAAAAlWJ/Tt0JwJApAwxI4e5VdzcF4Cse/nrZ1wIAAACAttmfU3cCMGTKAANSGCgAT3r4a2VfCwAAAADaZn9O3QnAkCkDDEhhoAD81YeuLPtaAAAAANA2+3PqTgCGTBlgQAr/ueo/BWAAAAAAKsX+nLoTgKGFZcuWxd/8zd/E4YcfHsOGDYuRI0fGt7/97YZnHnrooTj11FNj2LBhceSRR8YFF1wQO3fubPqz9uzZExdffHGMGDEiOjs748Mf/nAsWLCg7bsZYEAKs5+b3RSAL3/w/5Z9LQAAAABom/05dScAw37Mnz8/hgwZEieffHJ861vfihtuuCEuueSSmDBhQv8zTzzxRHR2dsaoUaNi6tSpcdlll8XQoUNjzJgxTX/eWWedFR0dHTF+/PiYNm1anHLKKdHR0REPPPBAW/czwIAU7nrurqYAPPHBK8q+FgAAAAC0zf6cuhOAYQDd3d1x5JFHxt///d9Hb2/vfp8bO3ZsjBgxIrq7u/tfu/HGG6Moipg/f37/a0uXLo2iKGLy5Mn9r+3evTve8573xCmnnNLWHQ0wIIWfrPxJUwD+Pw8IwAAAAADky/6cuhOAYQBTp06Noiiiq6srIiJ27drVFIK7u7ujo6Oj4TuCIyJ6enrikEMOiS984Qv9r02YMCEOOuighlAcEfG1r30tiqKI9evX/853NMCAFAYOwJPKvhYAAAAAtM3+nLoTgGEAn/70p+PQQw+NhQsXxnHHHRdFUcQf/dEfxZe+9KXYvXt3REQ8+OCDURRF3H777U3v/8hHPhInnnhi/68//vGPx/vf//6m5xYtWhRFUcTdd9/9O9/RAANSmLVyVlMA/tf7v1r2tQAAAACgbfbn1J0ADAM4/vjj4+CDD46DDz44Lrjggpg1a1ZccMEFURRFnHXWWRERcccdd0RRFHH//fc3vf/MM8+Mo446qv/XI0eOjDPOOKPpuaeffjqKoojrr7++5X1efvnlWL58ecOZPXu2AQb83gYKwJcJwAAAAABkTACm7gRgGMDRRx8dRVHEl770pYbXzzvvvCiKIlauXBnTp0+Poihi6dKlTe///Oc/H4cddljDnzd27Nim51avXh1FUcQ111zT8j4TJ06MoigGPAYY8Pu4c8WdTQH4XxZPLPtaAAAAANA2AZi6E4BhACNHjoyiKGLx4sUNry9evDiKoogf/ehHvgMYqIQ7VtwhAAMAAABQKQIwdScAwwD+8i//MoqiiGeffbbh9WeeeSaKoohrr73WzwAGKuHHK37cFIAvFYABAAAAyJj9OXUnAMMALr300iiKIu69996G1++9994oiiJuvfXW2LFjR3R0dMSECRManunp6YlDDjkkzj333P7Xxo8fHwcddFB0d3c3PHvllVdGURSxfv363/mOBhiQwu3P3t4UgC/5xb+VfS0AAAAAaJv9OXUnAMMAHn/88SiKIs4+++yG1//hH/4hOjo6YuPGjRERMWbMmBgxYkS8+uqr/c98//vfj6IoYt68ef2vLVmyJIqiiMmTJ/e/tmfPnjjmmGPi5JNPbuuOBhiQwkAB+OJf/J+yrwUAAAAAbbM/p+4EYNiPc889N4qiiM985jMxZcqUOPPMM6MoivjKV77S/8yyZcti6NChMWrUqJg6dWpcdtll0dnZGZ/4xCea/rwzzzyz/zuGp02bFqNHj46Ojo6mnzP82zLAgBRmPjOzOQDfJwADAAAAkC/7c+pOAIb92Lt3b1x++eXx7ne/OwYPHhzHHHNMXHPNNU3PPfDAAzF69Ojo7OyM4cOHx/nnn9/wHcFv2r17d4wfPz6OOuqoGDp0aHzoQx+Ke+65p+37GWBACrc9c1t/+D3+ppHxgZs/EBPu+9eyrwX/j707jdZrPhs/fq+n+qd0tQ8d8LSmhBiyzUVjrJhrqFZTFNVSU1PVAVWqakpNdTLPw5ZJg5pnKUVpKQkR1FQkVTMxRkhy/V/kZOekoU/Pvu+19vPL/nzWOi/2dh+uV661ru865wAAAACU5n5O3QnAkCgLDGiFjgF44/YAfPytp1Q9FgAAAACU5n5O3QnAkCgLDGiFiY9OLALwJu0B+Ke3nlz1WAAAAABQmvs5dScAQ6IsMKAVJjwyoQjAmwrAAAAAACwF3M+pOwEYEmWBAa0w/pHxRQDefPQGkeVZ/OQPv6h6LAAAAAAozf2cuhOAIVEWGNAKHQPwFu0B+Md/OKnqsQAAAACgNPdz6k4AhkRZYEArjHt43JIBePLPqx4LAAAAAEpzP6fuBGBIlAUGtMLYh8cWAXir9gB83C0nVj0WAAAAAJTmfk7dCcCQKAsMaIWLpl9UBOAeoxYE4B/dfHzVYwEAAABAae7n1J0ADImywIBW+LAAfOzNP6t6LAAAAAAozf2cuhOAIVEWGNAK+fS8CMBbj1o/sjyLH94kAAMAAACQLvdz6k4AhkRZYEArdAzA2xYB+CdVjwUAAAAApbmfU3cCMCTKAgNaYcxDY4oAvH17AO5944+rHgsAAAAASnM/p+4EYEiUBQa0wuiHRhcBeIeRCwLwD248ruqxAAAAAKA093PqTgCGRFlgQCuMemhUEYC/0h6Aj7lBAAYAAAAgXe7n1J0ADImywIBWGDltZBGAe45cL7I8i6Nv+FHVYwEAAABAae7n1J0ADImywIBWGDFtRBGAd2oPwEdd/8OqxwIAAACA0tzPqTsBGBJlgQGt0DEA79wegI+8rnfVYwEAAABAae7n1J0ADImywIBW6BiAdxGAAQAAAFgKuJ9TdwIwJMoCA1ph+IPDiwC824gFAfiIa39Q9VgAAAAAUJr7OXUnAEOiLDCgFYY9OKwIwLuPWDeyPIvvX3tM1WMBAAAAQGnu59SdAAyJssCAVhj6wNAiAH91YQC+5qiqxwIAAACA0tzPqTsBGBJlgQGtMOSBIUUA3rM9AB8uAAMAAACQMPdz6k4AhkRZYEArDH5gcBGA9xq+IAAfds2RVY8FAAAAAKW5n1N3AjAkygIDWmHw1EUBeJ+FAfjqI6oeCwAAAABKcz+n7gRgSJQFBrTCoKmDigC87/BukeVZfO/q71c9FgAAAACU5n5O3QnAkCgLDGiFDw3AVx1e9VgAAAAAUJr7OXUnAEOiLDCgFQZOHbhEAP7uVYdVPRYAAAAAlOZ+Tt0JwJAoCwxohQFTBhQB+OvtAfjQK79X9VgAAAAAUJr7OXUnAEOiLDCgFfpP6R9ZnsWGY7rHN4YJwAAAAACkz/2cuhOAIVEWGNAK/e7vF1mexUYdAvB3rvhu1WMBAAAAQGnu59SdAAyJssCAVlgYgDce0z32aw/Ah1xxaNVjAQAAAEBp7ufUnQAMibLAgFboe3/fyPIsNhnTPb7ZHoAPvvw7VY8FAAAAAKW5n1N3AjAkygIDWqHtvrYiAPcSgAEAAABYCrifU3cCMCTKAgNaYWEA3rRDAD7o8oOrHgsAAAAASnM/p+4EYEiUBQa0wm//euGSAfj3B1U9FgAAAACU5n5O3QnAkCgLDGiFC+69ILI8i81Gd49vDVsnsjyLb//+21WPBQAAAACluZ9TdwIwJMoCA1rhvPYAvPnoDWJ/ARgAAACApYD7OXUnAEOiLDCgFc695/zI8iy+1CEAH3jZgVWPBQAAAACluZ9TdwIwJMoCA1rhnHvOiyzPYovRG8QB7QH4gMsOqHosAAAAACjN/Zy6E4AhURYY0Ap9/nJuEYAPHLowAO9f9VgAAAAAUJr7OXUnAEOiLDCgFc7+8zmR5VlsOXqD+PbCAHypAAwAAABAutzPqTsBGBJlgQGtcNaffxNZnsVWHQLw/pd+q+qxAAAAAKA093PqTgCGRFlgQCucdfeSAfhbl/SqeiwAAAAAKM39nLoTgCFRFhjQCmfc3SeyPIsvj94gDmoPwL0u+WbVYwEAAABAae7n1J0ADImywIBWOP2usyPLs+gxaoM4WAAGAAAAYCngfk7dCcCQKAsMaIVf/+msJQPwpP2qHgsAAAAASnM/p+4EYEiUBQa0wml/OjOyPIutR60fhwxdO7I8i29O+kbVYwEAAABAae7n1J0ADImywIBW+NWdZ0SWZ7HNqPXjO+0BeL9JX696LAAAAAAozf2cuhOAIVEWGNAKv7zz9MjyLLbtGIB/JwADAAAAkC73c+pOAIZEWWBAK5xyx68jy7PYrkMA/sbv9q16LAAAAAAozf2cuhOAIVEWGNAKJ7cH4O1HrR+HDlkYgL9W9VgAAAAAUJr7OXUnAEOiLDCgFX5x+2lFAP5uewD+ugAMAAAAQMLcz6k7ARgSZYEBrXDS7b9aMgBfvE/VYwEAAABAae7n1J0ADImywIBW+PkfT40sz2KHkevH99oD8L4X7131WAAAAABQmvs5dScAQ6IsMKAVTrztl5HlWXxl5PpxWHsA/trFe1U9FgAAAACU5n5O3QnAkCgLDGiFE247JbI8ix1HrheHLwzAEwVgAAAAANLlfk7dCcCQKAsMaIXjbz05sjyLnosF4D2rHgsAAAAASnM/p+4EYEiUBQa0wk9v/cUSAXifiV+teiwAAAAAKM39nLoTgCFRFhjQCgsD8E4j14vvD+kaWZ7F3gIwAAAAAAlzP6fuBGBIlAUGtMJP/nBSEYCPKALwHlWPBQAAAACluZ9TdwIwJMoCA1rhx5N/Hlmexc4dA/AEARgAAACAdLmfU3cCMCTKAgNa4bjJJ0aWZ7HLyPXiyMELAvBeE3aveiwAAAAAKM39nLoTgCFRFhjQCj+6ZUEA3nXEenFUewDec8JuVY8FAAAAAKW5n1N3AjAkygIDWuHYW06ILM9it44BeLwADAAAAEC63M+pOwEYEmWBAa3Q++afLRGAvzp+16rHAgAAAIDS3M+pOwEYEmWBAa3wg5t+Glmexe4j1o2jiwC8S9VjAQAAAEBp7ufUnQAMibLAgFb4wU0/iSzPYo8R68Yx7QF4j/E7Vz0WAAAAAJTmfk7dCcCQKAsMaIVjbvxxEYB/IAADAAAAsBRwP6fuBGBIlAUGtMLRNxy34Nc+dwjAu48TgAEAAABIl/s5dScAQ6IsMKAVjrrh2MjyLPYcsW70LgLwTlWPBQAAAACluZ9TdwIwJMoCA1rhyOt/GFmexV7D140fDuoSWZ7FbuN6Vj0WAAAAAJTmfk7dCcCQKAsMaIUjru8tAAMAAACwVHE/p+4EYEiUBQa0wvevOyayPIu9BWAAAAAAlhLu59SdAAyJssCAVjj82qMjy7PYZ/i6cWx7AN517I5VjwUAAAAApbmfU3cCMCTKAgNa4bBrjoosz+Jrw7vFj9oD8C5jv1L1WAAAAABQmvs5dScAQ6IsMKAVDrvmSAEYAAAAgKWK+zl1JwBDoiwwoBUWBuB9h3eL44oAvEPVYwEAAABAae7n1J0ADImywIBW+N7VRxQB+MftAXhnARgAAACAhLmfU3cCMCTKAgNa4dCrDo8sz+Lrw7vFTwRgAAAAAJYC7ufUnQAMibLAgFY49KrDIsuz+MawjgF4+6rHAgAAAIDS3M+pOwEYEmWBAa3wnSu/F1mexX4dAvBOF21X9VgAAAAAUJr7OXUnAEOiLDCgFQ658ruR5Vl8c1i3+OnAtSLLs+gpAAMAAACQMPdz6k4AhkRZYEArHHzFoZHlWfQa1i1+JgADAAAAsBRwP6fuBGBIlAUGtMLBV3znQwLwtlWPBQAAAACluZ9TdwIwJMoCA1rhoCsOKQLw8e0BeMeLtql6LAAAAAAozf2cuhOAIVEWGNAK37784MjyLL41bJ04QQAGAAAAYCngfk7dCcCQKAsMaIUDLz8osjyL/QVgAAAAAJYS7ufUnQAMibLAgFY48PffjizP4oAOAfgrF21d9VgAAAAAUJr7OXUnAEOiLDCgFQ647MDI8iwOHLpOnNgegHfIBWAAAAAA0uV+Tt0JwJAoCwxohf0vOyCyPItvD10nfl4E4B5VjwUAAAAApbmfU3cCMCTKAgNa4VuX7l8E4JMEYAAAAACWAu7n1J0ADImywIBWWBiAD+oQgLfPv1z1WAAAAABQmvs5dScAQ6IsMKAVel3aqwjAvxggAAMAAACQPvdz6k4AhkRZYEAr9LpkQQA+eOg6cfKANSPLs9gu36rqsQAAAACgNPdz6k4AhkRZYEArfPOS/SLLszhk6NoCMAAAAABLBfdz6k4AhkRZYEAr7NcegL8jAAMAAACwlHA/p+4EYEiUBQa0wjcmfaMIwKe0B+Bt8y2rHgsAAAAASnM/p+4EYEiUBQa0wjcmfT2yPItDh6wdvxSAAQAAAFgKuJ9TdwIwJMoCA1rh67/bN7I8i+8OWTtOFYABAAAAWAq4n1N3AjAkygIDWmHf330tsjyL73UIwNvkW1Q9FgAAAACU5n5O3QnAkCgLDGiFjgH4V+0BeGsBGAAAAICEuZ9TdwIwJMoCA1ph34v3jizP4rAha8dpCwPwGAEYAAAAgHS5n1N3AjAkygIDWuFr7QH48MUC8JeqHgsAAAAASnM/p+4EYEiUBQa0wj4X77UoAPdfEIB7CMAAAAAAJMz9nLoTgCFRFhjQCntP3DOyPIvvD+kav+6/RnsA3rzqsQAAAACgNPdz6k4AhkRZYEAr7D3xq5HlWRwxpGucLgADAAAAsBRwP6fuBGBIlAUGtMJeE/eILM/iyMGLAvCXBWAAAAAAEuZ+Tt0JwJAoCwxohT0n7B5ZnsVRg7vGGUUA3qzqsQAAAACgNPdz6k4AhkRZYEArdAzAZ7YH4K0EYAAAAAAS5n5O3QnAkCgLDGiFPSfsJgADAAAAsFRxP6fuBGBIlAUGtMJX2wPw0YsF4E2rHgsAAAAASnM/p+4EYEiUBQa0wh7jd40sz+KYwV3jrPYAvKUADAAAAEDC3M+pOwEYEmWBAa2w+/hdIsuz+MHgrnF2vwUBeAsBGAAAAICEuZ9TdwIwJMoCA1ph9/E7R5Zn0Xtw1+jTz08AAwAAAJA+93PqTgCGRFlgQCvsNn6nyPIsfjioSxGAtxizSdVjAQAAAEBp7ufUnQAMibLAgFbYbdyiAPyb9gD8JQEYAAAAgIS5n1N3AjAkygIDWmG3cT0jy7M4dlCXOKff6gIwAAAAAMlzP6fuBGBIlAUGtMKuAjAAAAAASxn3c+pOAIZEWWBAK+wybsfI8ix+1CEAbz5m46rHAgAAAIDS3M+pOwEYEmWBAa2wy7ivRJZncdygLnGuAAwAAADAUsD9nLoTgCFRFhjQCjuPXRCAfzyoS5zXHoA3E4ABAAAASJj7OXUnAEOiLDCgFXYeu0NkeRY/GdQlzheAAQAAAFgKuJ9TdwIwJMoCA1php7Hbf0gA3qjqsQAAAACgNPdz6k4AhkRZYEAr9GwPwD8duFZc0HdBAN5UAAYAAAAgYe7n1J0ADImywIBW6Dl2u8jyLH42cK34rQAMAAAAwFLA/Zy6E4AhURYY0AoCMAAAAABLG/dz6k4AhkRZYEAr7HjRtpHlWRzfIQBvMmbDqscCAAAAgNLcz6k7ARgSZYEBrbDjRdtElmdxwsC14sK+q0WWZ7GxAAwAAABAwtzPqTsBGBJlgQGt8JUOAbhNAAYAAABgKeB+Tt0JwJAoCwxohR0u2jqyPIsTBWAAAAAAlhLu59SdAAyJssCAVlgYgH8+cK3o2x6ANxKAAQAAAEiY+zl1JwBDoiwwoBW2v6hHZHkWJw1cK/oVATireiwAAAAAKM39nLoTgCFRFhjQCtvnCwLwLwYIwAAAAAAsHdzPqTsBGBJlgQGtsH3+5SUC8IYCMAAAAAAJcz+n7gRgSJQFBrTCdu0B+OQBa0b/NgEYAAAAgPS5n1N3AjD8h84666xoNBrRvXv3Jf7ZXXfdFdtss0184hOfiJVXGIszkAAAIABJREFUXjmOPfbYeOutt5b43HvvvRcnnnhirLrqqrHccsvFlltuGTfffHOpeSwwoBW2y7cqAvCA9gCc5QIwAAAAAOlyP6fuBGD4D8ycOTOWX375WGGFFZYIwFOnTo3lllsuNt100xgyZEiccsopseyyy8buu+++xL/ngAMOiGWWWSaOP/74GDZsWPTo0SOWWWaZuPPOOzs9kwUGtMK27QH4lAFrxkABGAAAAIClgPs5dScAw39g//33j549e8YOO+ywRADeY489YtVVV4033nijeDdixIhoNBpx0003Fe/uueeeaDQacf755xfvZs+eHV27do0ePXp0eiYLDGiFbfItI8uz+KUADAAAAMBSwv2cuhOA4X9x++23x8c+9rGYNm3aEgH4jTfeiGWWWSZOOOGExb5nzpw58clPfjIOP/zw4t0JJ5wQH/vYxxYLxRERffr0iUajETNmzOjUXBYY0AoLA/CpA9aMQR0C8Pz586seDQAAAABKcT+n7gRg+Dfmzp0bG220URx11FEREUsE4D/96U/RaDRi0qRJS3zvtttuG5tttlnxvPPOO8f666+/xOcmT54cjUYjrr766k7NZoEBrbB1vkVkeRa/GrBmDG77YhGA582fV/VoAAAAAFCK+zl1JwDDvzFw4MD49Kc/HS+99FJELBmAL7300mg0GnHHHXcs8b29evWKVVZZpXju3r179OzZc4nPPfzww9FoNGLo0KEfOceLL74Y06dPX+zryiuvtMCApi0MwKcJwAAAAAAsJQRg6k4Aho/wyiuvxEorrRQXXHBB8e5fA/DYsWOj0WjEPffcs8T3H3LIIfHpT3+6eO7SpUvsscceS3zuqaeeikajEW1tbR85y2mnnRaNRuNDvywwoBlFAO6/eACeO29u1aMBAAAAQCkCMHUnAMNHOProo2PttdeOOXPmFO/8BDCwtOmRf6kIwEM6BOAP5n1Q9WgAAAAAUIoATN0JwPAhHn/88fiv//qv6N+/fzz99NPF11ZbbRXdunWLp59+Ol599VV/AxhIXo8xCwLwr/uvEUPaVisC8Pvz3q96NAAAAAAoxf2cuhOA4UPcdtttH/krlxd+HXfccTFr1qxYZpll4oQTTljs++fMmROf/OQn47DDDiveHX/88fGxj30s3njjjcU+e/bZZ0ej0YgZM2Z0akYLDGiFL4/ZPLI8i9P7rxFDLhSAAQAAAEif+zl1JwDDh3j55ZfjiiuuWOKre/fusfrqq8cVV1wR06ZNi4iI3XffPVZdddV48803i+8fOXJkNBqNuOGGG4p3f/nLX6LRaMT5559fvHvvvfdi7bXXjq222qrTM1pgQCts1R6Az+i/Rgy+cPVFAXiuAAwAAABAmtzPqTsBGDrhX/8GcETE/fffH8suu2xsuummMWTIkDjllFNiueWWi1133XWJ7+/Vq1fxE8PDhg2LrbfeOpZZZpm4/fbbOz2LBQa0wlZjNossz+LM/mvE4AvXKALwnLlz/vdvBgAAAID/g9zPqTsBGDrhwwJwRMSdd94ZW2+9dSy33HLxuc99Lnr37r3YTwQvNHv27Dj++ONjlVVWiWWXXTa22GKLuPHGG0vNYoEBrbDlRwTg9+a+V/VoAAAAAFCK+zl1JwBDoiwwoBUWBuCz+q8Rg9vWFIABAAAASJ77OXUnAEOiLDCgFbYcs2lkeRZn91sjBrWtVQTg2R/Mrno0AAAAACjF/Zy6E4AhURYY0ApbdAzAF3YpAvC7H7xb9WgAAAAAUIr7OXUnAEOiLDCgFRYG4D791ojBF3YVgAEAAABInvs5dScAQ6IsMKAVvjRmk8jyLH7Tb40YeOHaRQB+5/13qh4NAAAAAEpxP6fuBGBIlAUGtMLCAHxOv9VjYNs6AjAAAAAAyXM/p+4EYEiUBQa0wuYfEYDffv/tqkcDAAAAgFLcz6k7ARgSZYEBrbD5mI0jy7M4t9/qMfDCdQVgAAAAAJLnfk7dCcCQKAsMaIXN2gPwef1WjwFt6xUB+K05b1U9GgAAAACU4n5O3QnAkCgLDGiFhQH4/H6rx4C29YsA/OacN6seDQAAAABKcT+n7gRgSJQFBrTCZmM2+tAA/MacN6oeDQAAAABKcT+n7gRgSJQFBrTCpu0B+IK+q8eAtg0EYAAAAACS535O3QnAkCgLDGiFTdoD8G/7rh7927IiAM96b1bVowEAAABAKe7n1J0ADImywIBWEIABAAAAWNq4n1N3AjAkygIDWmHjMRtGlmdxYd/VYkDfDYsA/Prs16seDQAAAABKcT+n7gRgSJQFBrTCogC8egxo20gABgAAACB57ufUnQAMibLAgFbY6CMC8GuzX6t6NAAAAAAoxf2cuhOAIVEWGNAKG41ZEHzb+q6xWAB+dfarVY8GAAAAAKW4n1N3AjAkygIDWqFjAB7YtnERgF9595WqRwMAAACAUtzPqTsBGBJlgQGtsOFiAXgTARgAAACA5LmfU3cCMCTKAgNaoQjAbWvGwL6LAvDL775c9WgAAAAAUIr7OXUnAEOiLDCgFRYGXwEYAAAAgKWF+zl1JwBDoiwwoBUWBt++bWvGwLZNi+eX3nmp6tEAAAAAoBT3c+pOAIZEWWBAs+bPn98hAK8VgwRgAAAAAJYC7ufUnQAMibLAgGbNmz9v8QDcd7Pi+cV3Xqx6PAAAAAAoxf2cuhOAIVEWGNCsufPmFsG3X9taMajv5sXzC2+/UPV4AAAAAFCK+zl1JwBDoiwwoFmLB+AuAjAAAAAASwX3c+pOAIZEWWBAsz6Y90GHXwHdJQb1/VLx/Pzbz1c9HgAAAACU4n5O3QnAkCgLDGjW+/Pe7/ATwF0FYAAAAACWCu7n1J0ADImywIBmvT938QA8uO8WxfM/3/pn1eMBAAAAQCnu59SdAAyJssCAZs2ZO6dDAF5bAAYAAABgqeB+Tt0JwJAoCwxo1ntz3yuCb/+2tWNwvy2L5+feeq7q8QAAAACgFPdz6k4AhkRZYECzZn8w+18C8FbF8z/e+kfV4wEAAABAKe7n1J0ADImywIBmvfvBu4sC8IXrxJAOAXjmmzOrHg8AAAAASnE/p+4EYEiUBQY0q2MAHtDWLYb0+7IADAAAAEDy3M+pOwEYEmWBAc165/13OvwK6G4xpF+P4nnGmzOqHg8AAAAASnE/p+4EYEiUBQY0a/EAvG4M7RiA3xCAAQAAAEiT+zl1JwBDoiwwoFlvv/92h18BvW4M7b918fzsG89WPR4AAAAAlOJ+Tt0JwJAoCwxo1ltz3loUgC9cN4b2E4ABAAAASJ/7OXUnAEOiLDCgWW/OebMIvgPb1ouh/bYpnp9545mqxwMAAACAUtzPqTsBGBJlgQHNemPOG4sF4GH9ti2en571dNXjAQAAAEAp7ufUnQAMibLAgGbNem9WEXwHta0fw/ovCsB/n/X3qscDAAAAgFLcz6k7ARgSZYEBzeoYgAe2bRDD+m8vAAMAAACQPPdz6k4AhkRZYECz/l0AfmrWU1WPBwAAAACluJ9TdwIwJMoCA5r1+uzXFwvAw/vvsCgAvy4AAwAAAJAm93PqTgCGRFlgQLNem/1ah78B3H2xAPzk609WPR4AAAAAlOJ+Tt0JwJAoCwxo1quzX+0QgLMY3v8rAjAAAAAAyXM/p+4EYEiUBQY065V3X1k8AA/YsXh+4rUnqh4PAAAAAEpxP6fuBGBIlAUGNOvld18ugu/gtg1jxICexfPjrz1e9XgAAAAAUIr7OXUnAEOiLDCgWYsH4I0WC8CPvfZY1eMBAAAAQCnu59SdAAyJssCAZr30zksCMAAAAABLHfdz6k4AhkRZYECzOgbgIW0bxcgBOxXPf3v1b1WPBwAAAACluJ9TdwIwJMoCA5r14jsvdvgJ4E1i5MBdBGAAAAAAkud+Tt0JwJAoCwxo1gtvv9DhJ4AFYAAAAACWDu7n1J0ADImywIBmPf/284sH4EG7Fs+Pvvpo1eMBAAAAQCnu59SdAAyJssCAZi0WgPtuFqM6BOBHXnmk6vEAAAAAoBT3c+pOAIZEWWBAs/751j8XD8ADdyueH37l4arHAwAAAIBS3M+pOwEYEmWBAc167q3niuA7tG2zGDVodwEYAAAAgOS5n1N3AjAkygIDmvWPt/5RBN9hbZvHqEF7FM/TX/H/FgAAAADS5H5O3QnAkCgLDGjWYgG475di9KCvLgrAL/t/CwAAAABpcj+n7gRgSJQFBjRr5pszOwTgLWLM4EUB+KGXH6p6PAAAAAAoxf2cuhOAIVEWGNCsGW/O+JcAvKcADAAAAEDy3M+pOwEYEmWBAc2a8UbHALxljBm8V/E87aVpVY8HAAAAAKW4n1N3AjAkygIDmvXsG892CMBbxZghexfPD770YNXjAQAAAEAp7ufUnQAMibLAgGY988YzRfAd3u/LkQ/Zp3h+4KUHqh4PAAAAAEpxP6fuBGBIlAUGNOvpWU8vFoAvGvI1ARgAAACA5LmfU3cCMCTKAgOa9fdZfy+C74h+PeKioYsC8NQXp1Y9HgAAAACU4n5O3QnAkCgLDGhWxwA8st/WcdHQfQVgAAAAAJLnfk7dCcCQKAsMaNZTs57q8BPA28TYoV8vnqe8OKXq8QAAAACgFPdz6k4AhkRZYECznnr9XwPwNwRgAAAAAJLnfk7dCcCQKAsMaNaTrz+56FdA9982xg7br3i+/4X7qx4PAAAAAEpxP6fuBGBIlAUGNOuJ157oEIC3i7HDvlk83/fCfVWPBwAAAACluJ9TdwIwJMoCA5r1+GuPdwjA28e44d8qnv/6/F+rHg8AAAAASnE/p+4EYEiUBQY067HXHiuC76j+O8T4DgH43ufvrXo8AAAAACjF/Zy6E4AhURYY0Ky/vfq3IviO7v+VGD98/+L5nn8KwAAAAACkyf2cuhOAIVEWGNCsxQLwgB0XC8B/fu6eqscDAAAAgFLcz6k7ARgSZYEBzfrXAHzxiAOL5z/NvLvq8QAAAACgFPdz6k4AhkRZYECzHn310Q4BuGdMGnFQ8fzHGXdUPR4AAAAAlOJ+Tt0JwJAoCwxo1iOvPNIhAO8Ul448uHie/MxtVY8HAAAAAKW4n1N3AjAkygIDmvXwKw8XwXfMwJ3j8hHfKZ5venpy1eMBAAAAQCnu59SdAAyJssCAZk1/ZXqHALxLXDHiu8XzdU/dVPV4AAAAAFCK+zl1JwBDoiwwoFnTX+4YgHeNq0ceVjxf/cR1VY8HAAAAAKW4n1N3AjAkygIDmvXQyw8VwTcfuFtcN+qI4vnyx66uejwAAAAAKMX9nLoTgCFRFhjQrGkvTVsUgAftHjeMOrJ4vvRvl1c9HgAAAACU4n5O3QnAkCgLDGhWxwB80aA94ubRRxfPFz9yadXjAQAAAEAp7ufUnQAMibLAgGY9+NKDiwLw4D1i8uhjiudx039X9XgAAAAAUIr7OXUnAEOiLDCgWVNfnFoE37GDvhq3jeldPI+ZNr7q8QAAAACgFPdz6k4AhkRZYECz7nvhviL4Thi8V9w+5tjieeSDF1U9HgAAAACU4n5O3QnAkCgLDGjWPf+8Z9Hf/B28T9yZH1c8D506uurxAAAAAKAU93PqTgCGRFlgQLPueu6uIvheMnjfuDv/SfE86P7hVY8HAAAAAKW4n1N3AjAkygIDmnX7zNuL4HvZ4K/HX/Lji+f+9w2uejwAAAAAKMX9nLoTgCFRFhjQrFufvbUIvlcM2S/+etHPi+e2e/pXPR4AAAAAlOJ+Tt0JwJAoCwxo1i3P3FIE36sHfzPuu+ik4vn8v7RVPR4AAAAAlOJ+Tt0JwJAoCwxo1g1P31AE32uHfCvuH3dybDKme2R5FufcfV7V4wEAAABAKe7n1J0ADImywIBmXfvUtUUAvn7IgXH/+FNi89EbRJZncdafflP1eAAAAABQivs5dScAQ6IsMKBZVz15VRGAbxr67Zgy/pexZXsAPv2OM6seDwAAAABKcT+n7gRgSJQFBjTrsscuKwLwLUMPjvsnnBo9Ri0IwKfeflrV4wEAAABAKe7n1J0ADImywIBm/e7RSUUA/sPQQ+P+Cb+KbUetH1mexcm3/bLq8QAAAACgFPdz6k4AhkRZYECzxj8ysQjAfxz6vZgy8Vexw8gFAfjnt/6i6vEAAAAAoBT3c+pOAIZEWWBAsy6aPrYIwHcOOzymTPx19By5XmR5FsdPPrHq8QAAAACgFPdz6k4AhkRZYECzRk0bXQTgu4YdHlMuPiN2HbEgAP/klp9VPR4AAAAAlOJ+Tt0JwJAoCwxo1rAHRhQB+J4RR8aUi8+IPUasG1mexY9uOq7q8QAAAACgFPdz6k4AhkRZYECzBk4ZUgTge0ccHVN+d2bsNXxBAO594w+rHg8AAAAASnE/p+4EYEiUBQY0q999A4oAfP/IH8SUSWfHvsO7RZZncfT1R1c9HgAAAACU4n5O3QnAkCgLDGjWb//aN7I8i43HdI8pI4+NKZPOjv2GLQjAR1x3RNXjAQAAAEAp7ufUnQAMibLAgGadd88FkeVZbDa6e0wZ9aOYckmf+NawdSLLszjs2sOqHg8AAAAASnE/p+4EYEiUBQY06+w/nxtZnsUWozeIKaOPiymXnhPfHrogAB969aFVjwcAAAAApbifU3cCMCTKAgOadfpdZ0eWZ9Fj1AYxZfRPYuql58TB7QH44KsOqno8AAAAACjF/Zy6E4AhURYY0Kxf/en0yPIsth21fkwZ89OYetm5ceiQtSPLszjwygOqHg8AAAAASnE/p+4EYEiUBQY06+Q7fhVZnsVXRrYH4N+fF4e3B+BvXdGr6vEAAAAAoBT3c+pOAIZEWWBAs37+x1Miy7PYaeR6MSU/Pqb+/oI4cnDXyPIs9vv9flWPBwAAAACluJ9TdwIwJMoCA5r1s1t/HlmexW4j1ospF50QUy//bRzTHoD3/f2+VY8HAAAAAKW4n1N3AjAkygIDmvXjP/wssjyLr45YN6ZcdGJMveLC+OGgLpHlWex96d5VjwcAAAAApbifU3cCMCTKAgOa9cNbjlsQe4evG1PGnhQPXNEWP24PwHte8tWqxwMAAACAUtzPqTsBGBJlgQHNOuam3gt+3fPwbjFl3C/igSv7xs8GrhVZnsXuk3arejwAAAAAKMX9nLoTgCFRFhjQrCNuPDqyPItew7rFlPEnx4NX9Y8T2wPwLr/buerxAAAAAKAU93PqTgCGRFlgQLMOu/77keVZHDBsnZgy/pR48OoBcfKANSPLs+h58Y5VjwcAAAAApbifU3cCMCTKAgOadei134ssz+KgoevElAmnxoNXD4hftgfgHSZuX/V4AAAAAFCK+zl1JwBDoiwwoFkHX3NIZHkW3xm6dkyZ8KuYds3AOK3/ggC87YRtqx4PAAAAAEpxP6fuBGBIlAUGNOuAqw6MLM/isCFrx9SJp8WD1wyOM/uvEVmexdbje1Q9HgAAAACU4n5O3QnAkCgLDGhWryu/FVmexRFDusbUi0+PB68bEn36LQjAXx63VdXjAQAAAEAp7ufUnQAMibLAgGZ9/fJvRJZncczgrjH1d2fEtOuGxrn9Vo8sz2KLsV+qejwAAAAAKMX9nLoTgCFRFhjQrH1+/7XI8ix+OKhLTJ10Zky7fnj8tu+CALzZ2M2qHg8AAAAASnE/p+4EYEiUBQY0a6/L9oosz+LHg7rE1Elnx7TrR0TfvqtFlmexyUUbVz0eAAAAAJTifk7dCcCQKAsMaNbul+weWZ7FzwauFVMv6RMP3TAyBrQtCMAb5htWPR4AAAAAlOJ+Tt0JwJAoCwxo1i6Tdoksz+LEgWvFA5f+Jh66cWQMbvtiZHkWWZ7FvPnzqh4RAAAAADrN/Zy6E4AhURYY0Kyev+sZWZ7FyQPWjAcuOyem3zQ6hl+4KAC/P/f9qkcEAAAAgE5zP6fuBGBIlAUGNGuHiTtElmfxqwFrxgOXnRcP3TwmRl74hSIAv/vBu1WPCAAAAACd5n5O3QnAkCgLDGjWthO2jSzP4vT+a8QDvz8/pt+cR/7bRQH4rTlvVT0iAAAAAHSa+zl1JwBDoiwwoFk9xveILM/irP5rxIOXXxDTbxkb4zoE4Fnvzap6RAAAAADoNPdz6k4AhkRZYECzthy3ZWR5Fuf0Wz0evOLCmD55XEy84H+KAPzq7FerHhEAAAAAOs39nLoTgCFRFhjQrM3Hbh5ZnsX5/VaPB69si4f/MD4mdQjAL73zUtUjAgAAAECnuZ9TdwIwJMoCA5q1yUWbRJZn0dZ3tXjwyr7x8B8mxO/PX7UIwM+//XzVIwIAAABAp7mfU3cCMCTKAgOatVG+YWR5Fv3bVosHr+ofj9w6Ma7sEIBnvjmz6hEBAAAAoNPcz6k7ARgSZYEBzZg3f14Rege3fTGmXT0gHrn14rjmvFWK98+88UzVYwIAAABAp7mfU3cCMCTKAgOa8f6894vQO+zCL8a0awbGo7dNihs6BOCnXn+q6jEBAAAAoNPcz6k7ARg+xL333hu9e/eODTbYIJZffvlYbbXVolevXvHYY48t8dlHHnkkdtttt1hhhRVixRVXjIMPPjheeumlJT43b968OPfcc2PNNdeMZZddNjbccMOYOHFi6RktMKAZ737wbhF6R174hZh27eB47I5L4uZzVy7eP/bakv/PAwAAAID/69zPqTsBGD7EfvvtF6usskoce+yxMWLEiDjzzDNj5ZVXjhVWWCEeeuih4nMzZ86Mz372s9G1a9fo169fnH322bHiiivGxhtvHHPmzFns33nSSSdFo9GII444IoYPHx577rlnNBqNuPjii0vNaIEBzXhrzltF6M1/+4WYdu2QeOpPl8XkDgH4kVceqXpMAAAAAOg093PqTgCGD3HXXXctEXAff/zxWHbZZeOggw4q3h1zzDHxiU98Ip599tni3S233BKNRiOGDRtWvPvHP/4RH//4x6N3797Fu/nz58d2220XX/ziF2Pu3LmdntECA5ox671ZRegd/9v/iYeuGxpP3315/PGczxfvH3r5of/9XwQAAAAA/8e4n1N3AjB0wmabbRabbbZZ8fz5z38+evXqtcTnunXrFjvttFPxPGjQoGg0GvHwww8v9rmJEydGo9GIO++8s9OzWGBAM15595Ui9F58wf/EQ9cPjxn3XBV3dgjAU1+cWvWYAAAAANBp7ufUnQAM/6H58+fHF77whdh1110jYsFP9TYajTj33HOX+OzBBx8cK620UvH8/e9/P1ZYYYWYP3/+Yp978skno9FoRP/+/Ts9jwUGNOPFd14sQu8lF6wa028YEf+875q4+zefK97f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\" width=\"1600\">"
|
|
|
5623
|
],
|
|
|
5624
|
"text/plain": [
|
|
|
5625
|
"<IPython.core.display.HTML object>"
|
|
|
5626
|
]
|
|
|
5627
|
},
|
|
|
5628
|
"metadata": {},
|
|
|
5629
|
"output_type": "display_data"
|
|
|
5630
|
},
|
|
|
5631
|
{
|
|
|
5632
|
"data": {
|
|
|
5633
|
"application/javascript": [
|
|
|
5634
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
5635
|
"window.mpl = {};\n",
|
|
|
5636
|
"\n",
|
|
|
5637
|
"\n",
|
|
|
5638
|
"mpl.get_websocket_type = function() {\n",
|
|
|
5639
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
5640
|
" return WebSocket;\n",
|
|
|
5641
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
5642
|
" return MozWebSocket;\n",
|
|
|
5643
|
" } else {\n",
|
|
|
5644
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
5645
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
5646
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
5647
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
5648
|
" };\n",
|
|
|
5649
|
"}\n",
|
|
|
5650
|
"\n",
|
|
|
5651
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
5652
|
" this.id = figure_id;\n",
|
|
|
5653
|
"\n",
|
|
|
5654
|
" this.ws = websocket;\n",
|
|
|
5655
|
"\n",
|
|
|
5656
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
5657
|
"\n",
|
|
|
5658
|
" if (!this.supports_binary) {\n",
|
|
|
5659
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
5660
|
" if (warnings) {\n",
|
|
|
5661
|
" warnings.style.display = 'block';\n",
|
|
|
5662
|
" warnings.textContent = (\n",
|
|
|
5663
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
5664
|
" \"Performance may be slow.\");\n",
|
|
|
5665
|
" }\n",
|
|
|
5666
|
" }\n",
|
|
|
5667
|
"\n",
|
|
|
5668
|
" this.imageObj = new Image();\n",
|
|
|
5669
|
"\n",
|
|
|
5670
|
" this.context = undefined;\n",
|
|
|
5671
|
" this.message = undefined;\n",
|
|
|
5672
|
" this.canvas = undefined;\n",
|
|
|
5673
|
" this.rubberband_canvas = undefined;\n",
|
|
|
5674
|
" this.rubberband_context = undefined;\n",
|
|
|
5675
|
" this.format_dropdown = undefined;\n",
|
|
|
5676
|
"\n",
|
|
|
5677
|
" this.image_mode = 'full';\n",
|
|
|
5678
|
"\n",
|
|
|
5679
|
" this.root = $('<div/>');\n",
|
|
|
5680
|
" this._root_extra_style(this.root)\n",
|
|
|
5681
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
5682
|
"\n",
|
|
|
5683
|
" $(parent_element).append(this.root);\n",
|
|
|
5684
|
"\n",
|
|
|
5685
|
" this._init_header(this);\n",
|
|
|
5686
|
" this._init_canvas(this);\n",
|
|
|
5687
|
" this._init_toolbar(this);\n",
|
|
|
5688
|
"\n",
|
|
|
5689
|
" var fig = this;\n",
|
|
|
5690
|
"\n",
|
|
|
5691
|
" this.waiting = false;\n",
|
|
|
5692
|
"\n",
|
|
|
5693
|
" this.ws.onopen = function () {\n",
|
|
|
5694
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
5695
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
5696
|
" if (mpl.ratio != 1) {\n",
|
|
|
5697
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
5698
|
" }\n",
|
|
|
5699
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
5700
|
" }\n",
|
|
|
5701
|
"\n",
|
|
|
5702
|
" this.imageObj.onload = function() {\n",
|
|
|
5703
|
" if (fig.image_mode == 'full') {\n",
|
|
|
5704
|
" // Full images could contain transparency (where diff images\n",
|
|
|
5705
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
5706
|
" // there is no ghosting.\n",
|
|
|
5707
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
5708
|
" }\n",
|
|
|
5709
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
5710
|
" };\n",
|
|
|
5711
|
"\n",
|
|
|
5712
|
" this.imageObj.onunload = function() {\n",
|
|
|
5713
|
" fig.ws.close();\n",
|
|
|
5714
|
" }\n",
|
|
|
5715
|
"\n",
|
|
|
5716
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
5717
|
"\n",
|
|
|
5718
|
" this.ondownload = ondownload;\n",
|
|
|
5719
|
"}\n",
|
|
|
5720
|
"\n",
|
|
|
5721
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
5722
|
" var titlebar = $(\n",
|
|
|
5723
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
5724
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
5725
|
" var titletext = $(\n",
|
|
|
5726
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
5727
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
5728
|
" titlebar.append(titletext)\n",
|
|
|
5729
|
" this.root.append(titlebar);\n",
|
|
|
5730
|
" this.header = titletext[0];\n",
|
|
|
5731
|
"}\n",
|
|
|
5732
|
"\n",
|
|
|
5733
|
"\n",
|
|
|
5734
|
"\n",
|
|
|
5735
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
5736
|
"\n",
|
|
|
5737
|
"}\n",
|
|
|
5738
|
"\n",
|
|
|
5739
|
"\n",
|
|
|
5740
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
5741
|
"\n",
|
|
|
5742
|
"}\n",
|
|
|
5743
|
"\n",
|
|
|
5744
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
5745
|
" var fig = this;\n",
|
|
|
5746
|
"\n",
|
|
|
5747
|
" var canvas_div = $('<div/>');\n",
|
|
|
5748
|
"\n",
|
|
|
5749
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
5750
|
"\n",
|
|
|
5751
|
" function canvas_keyboard_event(event) {\n",
|
|
|
5752
|
" return fig.key_event(event, event['data']);\n",
|
|
|
5753
|
" }\n",
|
|
|
5754
|
"\n",
|
|
|
5755
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
5756
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
5757
|
" this.canvas_div = canvas_div\n",
|
|
|
5758
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
5759
|
" this.root.append(canvas_div);\n",
|
|
|
5760
|
"\n",
|
|
|
5761
|
" var canvas = $('<canvas/>');\n",
|
|
|
5762
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
5763
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
5764
|
"\n",
|
|
|
5765
|
" this.canvas = canvas[0];\n",
|
|
|
5766
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
5767
|
"\n",
|
|
|
5768
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
5769
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
5770
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
5771
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
5772
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
5773
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
5774
|
"\n",
|
|
|
5775
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
5776
|
"\n",
|
|
|
5777
|
" var rubberband = $('<canvas/>');\n",
|
|
|
5778
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
5779
|
"\n",
|
|
|
5780
|
" var pass_mouse_events = true;\n",
|
|
|
5781
|
"\n",
|
|
|
5782
|
" canvas_div.resizable({\n",
|
|
|
5783
|
" start: function(event, ui) {\n",
|
|
|
5784
|
" pass_mouse_events = false;\n",
|
|
|
5785
|
" },\n",
|
|
|
5786
|
" resize: function(event, ui) {\n",
|
|
|
5787
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
5788
|
" },\n",
|
|
|
5789
|
" stop: function(event, ui) {\n",
|
|
|
5790
|
" pass_mouse_events = true;\n",
|
|
|
5791
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
5792
|
" },\n",
|
|
|
5793
|
" });\n",
|
|
|
5794
|
"\n",
|
|
|
5795
|
" function mouse_event_fn(event) {\n",
|
|
|
5796
|
" if (pass_mouse_events)\n",
|
|
|
5797
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
5798
|
" }\n",
|
|
|
5799
|
"\n",
|
|
|
5800
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
5801
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
5802
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
5803
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
5804
|
"\n",
|
|
|
5805
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
5806
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
5807
|
"\n",
|
|
|
5808
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
5809
|
" event = event.originalEvent;\n",
|
|
|
5810
|
" event['data'] = 'scroll'\n",
|
|
|
5811
|
" if (event.deltaY < 0) {\n",
|
|
|
5812
|
" event.step = 1;\n",
|
|
|
5813
|
" } else {\n",
|
|
|
5814
|
" event.step = -1;\n",
|
|
|
5815
|
" }\n",
|
|
|
5816
|
" mouse_event_fn(event);\n",
|
|
|
5817
|
" });\n",
|
|
|
5818
|
"\n",
|
|
|
5819
|
" canvas_div.append(canvas);\n",
|
|
|
5820
|
" canvas_div.append(rubberband);\n",
|
|
|
5821
|
"\n",
|
|
|
5822
|
" this.rubberband = rubberband;\n",
|
|
|
5823
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
5824
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
5825
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
5826
|
"\n",
|
|
|
5827
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
5828
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
5829
|
" // canvas in synch.\n",
|
|
|
5830
|
" canvas_div.css('width', width)\n",
|
|
|
5831
|
" canvas_div.css('height', height)\n",
|
|
|
5832
|
"\n",
|
|
|
5833
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
5834
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
5835
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
5836
|
"\n",
|
|
|
5837
|
" rubberband.attr('width', width);\n",
|
|
|
5838
|
" rubberband.attr('height', height);\n",
|
|
|
5839
|
" }\n",
|
|
|
5840
|
"\n",
|
|
|
5841
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
5842
|
" // upon first draw.\n",
|
|
|
5843
|
" this._resize_canvas(600, 600);\n",
|
|
|
5844
|
"\n",
|
|
|
5845
|
" // Disable right mouse context menu.\n",
|
|
|
5846
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
5847
|
" return false;\n",
|
|
|
5848
|
" });\n",
|
|
|
5849
|
"\n",
|
|
|
5850
|
" function set_focus () {\n",
|
|
|
5851
|
" canvas.focus();\n",
|
|
|
5852
|
" canvas_div.focus();\n",
|
|
|
5853
|
" }\n",
|
|
|
5854
|
"\n",
|
|
|
5855
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
5856
|
"}\n",
|
|
|
5857
|
"\n",
|
|
|
5858
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
5859
|
" var fig = this;\n",
|
|
|
5860
|
"\n",
|
|
|
5861
|
" var nav_element = $('<div/>')\n",
|
|
|
5862
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
5863
|
" this.root.append(nav_element);\n",
|
|
|
5864
|
"\n",
|
|
|
5865
|
" // Define a callback function for later on.\n",
|
|
|
5866
|
" function toolbar_event(event) {\n",
|
|
|
5867
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
5868
|
" }\n",
|
|
|
5869
|
" function toolbar_mouse_event(event) {\n",
|
|
|
5870
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
5871
|
" }\n",
|
|
|
5872
|
"\n",
|
|
|
5873
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
5874
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
5875
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
5876
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
5877
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
5878
|
"\n",
|
|
|
5879
|
" if (!name) {\n",
|
|
|
5880
|
" // put a spacer in here.\n",
|
|
|
5881
|
" continue;\n",
|
|
|
5882
|
" }\n",
|
|
|
5883
|
" var button = $('<button/>');\n",
|
|
|
5884
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
5885
|
" 'ui-button-icon-only');\n",
|
|
|
5886
|
" button.attr('role', 'button');\n",
|
|
|
5887
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
5888
|
" button.click(method_name, toolbar_event);\n",
|
|
|
5889
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
5890
|
"\n",
|
|
|
5891
|
" var icon_img = $('<span/>');\n",
|
|
|
5892
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
5893
|
" icon_img.addClass(image);\n",
|
|
|
5894
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
5895
|
"\n",
|
|
|
5896
|
" var tooltip_span = $('<span/>');\n",
|
|
|
5897
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
5898
|
" tooltip_span.html(tooltip);\n",
|
|
|
5899
|
"\n",
|
|
|
5900
|
" button.append(icon_img);\n",
|
|
|
5901
|
" button.append(tooltip_span);\n",
|
|
|
5902
|
"\n",
|
|
|
5903
|
" nav_element.append(button);\n",
|
|
|
5904
|
" }\n",
|
|
|
5905
|
"\n",
|
|
|
5906
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
5907
|
"\n",
|
|
|
5908
|
" var fmt_picker = $('<select/>');\n",
|
|
|
5909
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
5910
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
5911
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
5912
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
5913
|
"\n",
|
|
|
5914
|
" for (var ind in mpl.extensions) {\n",
|
|
|
5915
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
5916
|
" var option = $(\n",
|
|
|
5917
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
5918
|
" fmt_picker.append(option)\n",
|
|
|
5919
|
" }\n",
|
|
|
5920
|
"\n",
|
|
|
5921
|
" // Add hover states to the ui-buttons\n",
|
|
|
5922
|
" $( \".ui-button\" ).hover(\n",
|
|
|
5923
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
5924
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
5925
|
" );\n",
|
|
|
5926
|
"\n",
|
|
|
5927
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
5928
|
" nav_element.append(status_bar);\n",
|
|
|
5929
|
" this.message = status_bar[0];\n",
|
|
|
5930
|
"}\n",
|
|
|
5931
|
"\n",
|
|
|
5932
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
5933
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
5934
|
" // which will in turn request a refresh of the image.\n",
|
|
|
5935
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
5936
|
"}\n",
|
|
|
5937
|
"\n",
|
|
|
5938
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
5939
|
" properties['type'] = type;\n",
|
|
|
5940
|
" properties['figure_id'] = this.id;\n",
|
|
|
5941
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
5942
|
"}\n",
|
|
|
5943
|
"\n",
|
|
|
5944
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
5945
|
" if (!this.waiting) {\n",
|
|
|
5946
|
" this.waiting = true;\n",
|
|
|
5947
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
5948
|
" }\n",
|
|
|
5949
|
"}\n",
|
|
|
5950
|
"\n",
|
|
|
5951
|
"\n",
|
|
|
5952
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
5953
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
5954
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
5955
|
" fig.ondownload(fig, format);\n",
|
|
|
5956
|
"}\n",
|
|
|
5957
|
"\n",
|
|
|
5958
|
"\n",
|
|
|
5959
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
5960
|
" var size = msg['size'];\n",
|
|
|
5961
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
5962
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
5963
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
5964
|
" };\n",
|
|
|
5965
|
"}\n",
|
|
|
5966
|
"\n",
|
|
|
5967
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
5968
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
5969
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
5970
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
5971
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
5972
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
5973
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
5974
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
5975
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
5976
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
5977
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
5978
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
5979
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
5980
|
"\n",
|
|
|
5981
|
" fig.rubberband_context.clearRect(\n",
|
|
|
5982
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
5983
|
"\n",
|
|
|
5984
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
5985
|
"}\n",
|
|
|
5986
|
"\n",
|
|
|
5987
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
5988
|
" // Updates the figure title.\n",
|
|
|
5989
|
" fig.header.textContent = msg['label'];\n",
|
|
|
5990
|
"}\n",
|
|
|
5991
|
"\n",
|
|
|
5992
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
5993
|
" var cursor = msg['cursor'];\n",
|
|
|
5994
|
" switch(cursor)\n",
|
|
|
5995
|
" {\n",
|
|
|
5996
|
" case 0:\n",
|
|
|
5997
|
" cursor = 'pointer';\n",
|
|
|
5998
|
" break;\n",
|
|
|
5999
|
" case 1:\n",
|
|
|
6000
|
" cursor = 'default';\n",
|
|
|
6001
|
" break;\n",
|
|
|
6002
|
" case 2:\n",
|
|
|
6003
|
" cursor = 'crosshair';\n",
|
|
|
6004
|
" break;\n",
|
|
|
6005
|
" case 3:\n",
|
|
|
6006
|
" cursor = 'move';\n",
|
|
|
6007
|
" break;\n",
|
|
|
6008
|
" }\n",
|
|
|
6009
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
6010
|
"}\n",
|
|
|
6011
|
"\n",
|
|
|
6012
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
6013
|
" fig.message.textContent = msg['message'];\n",
|
|
|
6014
|
"}\n",
|
|
|
6015
|
"\n",
|
|
|
6016
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
6017
|
" // Request the server to send over a new figure.\n",
|
|
|
6018
|
" fig.send_draw_message();\n",
|
|
|
6019
|
"}\n",
|
|
|
6020
|
"\n",
|
|
|
6021
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
6022
|
" fig.image_mode = msg['mode'];\n",
|
|
|
6023
|
"}\n",
|
|
|
6024
|
"\n",
|
|
|
6025
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
6026
|
" // Called whenever the canvas gets updated.\n",
|
|
|
6027
|
" this.send_message(\"ack\", {});\n",
|
|
|
6028
|
"}\n",
|
|
|
6029
|
"\n",
|
|
|
6030
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
6031
|
"// Called in the figure constructor.\n",
|
|
|
6032
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
6033
|
" return function socket_on_message(evt) {\n",
|
|
|
6034
|
" if (evt.data instanceof Blob) {\n",
|
|
|
6035
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
6036
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
6037
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
6038
|
" * to be part of the websocket stream */\n",
|
|
|
6039
|
" evt.data.type = \"image/png\";\n",
|
|
|
6040
|
"\n",
|
|
|
6041
|
" /* Free the memory for the previous frames */\n",
|
|
|
6042
|
" if (fig.imageObj.src) {\n",
|
|
|
6043
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
6044
|
" fig.imageObj.src);\n",
|
|
|
6045
|
" }\n",
|
|
|
6046
|
"\n",
|
|
|
6047
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
6048
|
" evt.data);\n",
|
|
|
6049
|
" fig.updated_canvas_event();\n",
|
|
|
6050
|
" fig.waiting = false;\n",
|
|
|
6051
|
" return;\n",
|
|
|
6052
|
" }\n",
|
|
|
6053
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
6054
|
" fig.imageObj.src = evt.data;\n",
|
|
|
6055
|
" fig.updated_canvas_event();\n",
|
|
|
6056
|
" fig.waiting = false;\n",
|
|
|
6057
|
" return;\n",
|
|
|
6058
|
" }\n",
|
|
|
6059
|
"\n",
|
|
|
6060
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
6061
|
" var msg_type = msg['type'];\n",
|
|
|
6062
|
"\n",
|
|
|
6063
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
6064
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
6065
|
" try {\n",
|
|
|
6066
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
6067
|
" } catch (e) {\n",
|
|
|
6068
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
6069
|
" return;\n",
|
|
|
6070
|
" }\n",
|
|
|
6071
|
"\n",
|
|
|
6072
|
" if (callback) {\n",
|
|
|
6073
|
" try {\n",
|
|
|
6074
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
6075
|
" callback(fig, msg);\n",
|
|
|
6076
|
" } catch (e) {\n",
|
|
|
6077
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
6078
|
" }\n",
|
|
|
6079
|
" }\n",
|
|
|
6080
|
" };\n",
|
|
|
6081
|
"}\n",
|
|
|
6082
|
"\n",
|
|
|
6083
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
6084
|
"mpl.findpos = function(e) {\n",
|
|
|
6085
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
6086
|
" var targ;\n",
|
|
|
6087
|
" if (!e)\n",
|
|
|
6088
|
" e = window.event;\n",
|
|
|
6089
|
" if (e.target)\n",
|
|
|
6090
|
" targ = e.target;\n",
|
|
|
6091
|
" else if (e.srcElement)\n",
|
|
|
6092
|
" targ = e.srcElement;\n",
|
|
|
6093
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
6094
|
" targ = targ.parentNode;\n",
|
|
|
6095
|
"\n",
|
|
|
6096
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
6097
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
6098
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
6099
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
6100
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
6101
|
"\n",
|
|
|
6102
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
6103
|
"};\n",
|
|
|
6104
|
"\n",
|
|
|
6105
|
"/*\n",
|
|
|
6106
|
" * return a copy of an object with only non-object keys\n",
|
|
|
6107
|
" * we need this to avoid circular references\n",
|
|
|
6108
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
6109
|
" */\n",
|
|
|
6110
|
"function simpleKeys (original) {\n",
|
|
|
6111
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
6112
|
" if (typeof original[key] !== 'object')\n",
|
|
|
6113
|
" obj[key] = original[key]\n",
|
|
|
6114
|
" return obj;\n",
|
|
|
6115
|
" }, {});\n",
|
|
|
6116
|
"}\n",
|
|
|
6117
|
"\n",
|
|
|
6118
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
6119
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
6120
|
"\n",
|
|
|
6121
|
" if (name === 'button_press')\n",
|
|
|
6122
|
" {\n",
|
|
|
6123
|
" this.canvas.focus();\n",
|
|
|
6124
|
" this.canvas_div.focus();\n",
|
|
|
6125
|
" }\n",
|
|
|
6126
|
"\n",
|
|
|
6127
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
6128
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
6129
|
"\n",
|
|
|
6130
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
6131
|
" step: event.step,\n",
|
|
|
6132
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
6133
|
"\n",
|
|
|
6134
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
6135
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
6136
|
" * to control all of the cursor setting manually through the\n",
|
|
|
6137
|
" * 'cursor' event from matplotlib */\n",
|
|
|
6138
|
" event.preventDefault();\n",
|
|
|
6139
|
" return false;\n",
|
|
|
6140
|
"}\n",
|
|
|
6141
|
"\n",
|
|
|
6142
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
6143
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
6144
|
"}\n",
|
|
|
6145
|
"\n",
|
|
|
6146
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
6147
|
"\n",
|
|
|
6148
|
" // Prevent repeat events\n",
|
|
|
6149
|
" if (name == 'key_press')\n",
|
|
|
6150
|
" {\n",
|
|
|
6151
|
" if (event.which === this._key)\n",
|
|
|
6152
|
" return;\n",
|
|
|
6153
|
" else\n",
|
|
|
6154
|
" this._key = event.which;\n",
|
|
|
6155
|
" }\n",
|
|
|
6156
|
" if (name == 'key_release')\n",
|
|
|
6157
|
" this._key = null;\n",
|
|
|
6158
|
"\n",
|
|
|
6159
|
" var value = '';\n",
|
|
|
6160
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
6161
|
" value += \"ctrl+\";\n",
|
|
|
6162
|
" if (event.altKey && event.which != 18)\n",
|
|
|
6163
|
" value += \"alt+\";\n",
|
|
|
6164
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
6165
|
" value += \"shift+\";\n",
|
|
|
6166
|
"\n",
|
|
|
6167
|
" value += 'k';\n",
|
|
|
6168
|
" value += event.which.toString();\n",
|
|
|
6169
|
"\n",
|
|
|
6170
|
" this._key_event_extra(event, name);\n",
|
|
|
6171
|
"\n",
|
|
|
6172
|
" this.send_message(name, {key: value,\n",
|
|
|
6173
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
6174
|
" return false;\n",
|
|
|
6175
|
"}\n",
|
|
|
6176
|
"\n",
|
|
|
6177
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
6178
|
" if (name == 'download') {\n",
|
|
|
6179
|
" this.handle_save(this, null);\n",
|
|
|
6180
|
" } else {\n",
|
|
|
6181
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
6182
|
" }\n",
|
|
|
6183
|
"};\n",
|
|
|
6184
|
"\n",
|
|
|
6185
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
6186
|
" this.message.textContent = tooltip;\n",
|
|
|
6187
|
"};\n",
|
|
|
6188
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
6189
|
"\n",
|
|
|
6190
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
6191
|
"\n",
|
|
|
6192
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
6193
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
6194
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
6195
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
6196
|
" var ws = {};\n",
|
|
|
6197
|
"\n",
|
|
|
6198
|
" ws.close = function() {\n",
|
|
|
6199
|
" comm.close()\n",
|
|
|
6200
|
" };\n",
|
|
|
6201
|
" ws.send = function(m) {\n",
|
|
|
6202
|
" //console.log('sending', m);\n",
|
|
|
6203
|
" comm.send(m);\n",
|
|
|
6204
|
" };\n",
|
|
|
6205
|
" // Register the callback with on_msg.\n",
|
|
|
6206
|
" comm.on_msg(function(msg) {\n",
|
|
|
6207
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
6208
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
6209
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
6210
|
" });\n",
|
|
|
6211
|
" return ws;\n",
|
|
|
6212
|
"}\n",
|
|
|
6213
|
"\n",
|
|
|
6214
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
6215
|
" // This is the function which gets called when the mpl process\n",
|
|
|
6216
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
6217
|
"\n",
|
|
|
6218
|
" var id = msg.content.data.id;\n",
|
|
|
6219
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
6220
|
" // socket was opened in Python.\n",
|
|
|
6221
|
" var element = $(\"#\" + id);\n",
|
|
|
6222
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
6223
|
"\n",
|
|
|
6224
|
" function ondownload(figure, format) {\n",
|
|
|
6225
|
" window.open(figure.imageObj.src);\n",
|
|
|
6226
|
" }\n",
|
|
|
6227
|
"\n",
|
|
|
6228
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
6229
|
" ondownload,\n",
|
|
|
6230
|
" element.get(0));\n",
|
|
|
6231
|
"\n",
|
|
|
6232
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
6233
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
6234
|
" ws_proxy.onopen();\n",
|
|
|
6235
|
"\n",
|
|
|
6236
|
" fig.parent_element = element.get(0);\n",
|
|
|
6237
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
6238
|
" if (!fig.cell_info) {\n",
|
|
|
6239
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
6240
|
" return;\n",
|
|
|
6241
|
" }\n",
|
|
|
6242
|
"\n",
|
|
|
6243
|
" var output_index = fig.cell_info[2]\n",
|
|
|
6244
|
" var cell = fig.cell_info[0];\n",
|
|
|
6245
|
"\n",
|
|
|
6246
|
"};\n",
|
|
|
6247
|
"\n",
|
|
|
6248
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
6249
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
6250
|
" fig.root.unbind('remove')\n",
|
|
|
6251
|
"\n",
|
|
|
6252
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
6253
|
" fig.push_to_output();\n",
|
|
|
6254
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
6255
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
6256
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
6257
|
" IPython.keyboard_manager.enable()\n",
|
|
|
6258
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
6259
|
" fig.close_ws(fig, msg);\n",
|
|
|
6260
|
"}\n",
|
|
|
6261
|
"\n",
|
|
|
6262
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
6263
|
" fig.send_message('closing', msg);\n",
|
|
|
6264
|
" // fig.ws.close()\n",
|
|
|
6265
|
"}\n",
|
|
|
6266
|
"\n",
|
|
|
6267
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
6268
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
6269
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
6270
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
6271
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
6272
|
"}\n",
|
|
|
6273
|
"\n",
|
|
|
6274
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
6275
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
6276
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
6277
|
" this.send_message(\"ack\", {});\n",
|
|
|
6278
|
" var fig = this;\n",
|
|
|
6279
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
6280
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
6281
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
6282
|
"}\n",
|
|
|
6283
|
"\n",
|
|
|
6284
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
6285
|
" var fig = this;\n",
|
|
|
6286
|
"\n",
|
|
|
6287
|
" var nav_element = $('<div/>')\n",
|
|
|
6288
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
6289
|
" this.root.append(nav_element);\n",
|
|
|
6290
|
"\n",
|
|
|
6291
|
" // Define a callback function for later on.\n",
|
|
|
6292
|
" function toolbar_event(event) {\n",
|
|
|
6293
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
6294
|
" }\n",
|
|
|
6295
|
" function toolbar_mouse_event(event) {\n",
|
|
|
6296
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
6297
|
" }\n",
|
|
|
6298
|
"\n",
|
|
|
6299
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
6300
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
6301
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
6302
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
6303
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
6304
|
"\n",
|
|
|
6305
|
" if (!name) { continue; };\n",
|
|
|
6306
|
"\n",
|
|
|
6307
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
6308
|
" button.click(method_name, toolbar_event);\n",
|
|
|
6309
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
6310
|
" nav_element.append(button);\n",
|
|
|
6311
|
" }\n",
|
|
|
6312
|
"\n",
|
|
|
6313
|
" // Add the status bar.\n",
|
|
|
6314
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
6315
|
" nav_element.append(status_bar);\n",
|
|
|
6316
|
" this.message = status_bar[0];\n",
|
|
|
6317
|
"\n",
|
|
|
6318
|
" // Add the close button to the window.\n",
|
|
|
6319
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
6320
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
6321
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
6322
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
6323
|
" buttongrp.append(button);\n",
|
|
|
6324
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
6325
|
" titlebar.prepend(buttongrp);\n",
|
|
|
6326
|
"}\n",
|
|
|
6327
|
"\n",
|
|
|
6328
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
6329
|
" var fig = this\n",
|
|
|
6330
|
" el.on(\"remove\", function(){\n",
|
|
|
6331
|
"\tfig.close_ws(fig, {});\n",
|
|
|
6332
|
" });\n",
|
|
|
6333
|
"}\n",
|
|
|
6334
|
"\n",
|
|
|
6335
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
6336
|
" // this is important to make the div 'focusable\n",
|
|
|
6337
|
" el.attr('tabindex', 0)\n",
|
|
|
6338
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
6339
|
" // off when our div gets focus\n",
|
|
|
6340
|
"\n",
|
|
|
6341
|
" // location in version 3\n",
|
|
|
6342
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
6343
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
6344
|
" }\n",
|
|
|
6345
|
" else {\n",
|
|
|
6346
|
" // location in version 2\n",
|
|
|
6347
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
6348
|
" }\n",
|
|
|
6349
|
"\n",
|
|
|
6350
|
"}\n",
|
|
|
6351
|
"\n",
|
|
|
6352
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
6353
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
6354
|
" if (!manager)\n",
|
|
|
6355
|
" manager = IPython.keyboard_manager;\n",
|
|
|
6356
|
"\n",
|
|
|
6357
|
" // Check for shift+enter\n",
|
|
|
6358
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
6359
|
" this.canvas_div.blur();\n",
|
|
|
6360
|
" event.shiftKey = false;\n",
|
|
|
6361
|
" // Send a \"J\" for go to next cell\n",
|
|
|
6362
|
" event.which = 74;\n",
|
|
|
6363
|
" event.keyCode = 74;\n",
|
|
|
6364
|
" manager.command_mode();\n",
|
|
|
6365
|
" manager.handle_keydown(event);\n",
|
|
|
6366
|
" }\n",
|
|
|
6367
|
"}\n",
|
|
|
6368
|
"\n",
|
|
|
6369
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
6370
|
" fig.ondownload(fig, null);\n",
|
|
|
6371
|
"}\n",
|
|
|
6372
|
"\n",
|
|
|
6373
|
"\n",
|
|
|
6374
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
6375
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
6376
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
6377
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
6378
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
6379
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
6380
|
" var ncells = cells.length;\n",
|
|
|
6381
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
6382
|
" var cell = cells[i];\n",
|
|
|
6383
|
" if (cell.cell_type === 'code'){\n",
|
|
|
6384
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
6385
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
6386
|
" if (data.data) {\n",
|
|
|
6387
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
6388
|
" data = data.data;\n",
|
|
|
6389
|
" }\n",
|
|
|
6390
|
" if (data['text/html'] == html_output) {\n",
|
|
|
6391
|
" return [cell, data, j];\n",
|
|
|
6392
|
" }\n",
|
|
|
6393
|
" }\n",
|
|
|
6394
|
" }\n",
|
|
|
6395
|
" }\n",
|
|
|
6396
|
"}\n",
|
|
|
6397
|
"\n",
|
|
|
6398
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
6399
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
6400
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
6401
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
6402
|
"}\n"
|
|
|
6403
|
],
|
|
|
6404
|
"text/plain": [
|
|
|
6405
|
"<IPython.core.display.Javascript object>"
|
|
|
6406
|
]
|
|
|
6407
|
},
|
|
|
6408
|
"metadata": {},
|
|
|
6409
|
"output_type": "display_data"
|
|
|
6410
|
},
|
|
|
6411
|
{
|
|
|
6412
|
"data": {
|
|
|
6413
|
"text/html": [
|
|
|
6414
|
"<img src=\"data:image/png;base64,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f07pBGB4ly699NI45JBD4tlnn42I/zeoW1paYtasWQ33dXd3x+jRo+Piiy/uuzZr1qwYPnx4QyiOiLj22msjpRRbt259z89jgJGT7W9sF4ABAAAAKF5vb29fwNy4cWPf77J1mp9NmzbFM888E52dndHZ2Rkvvvhi04Buf07pBGB4F/bt2xe//uu/HpMmTeq79vDDD0dKKe6+++5+959xxhlx8skn9319zjnnxAknnNDvvlWrVkVKKe699973/EwGGDkRgAEAAADg/9m/f39s3749tmzZMuRhNaezZcuW2LZtW+zatesdPz1tf07pBGB4F5YuXRoppfja177Wd+2ee+6JlFI89NBD/e6fOnVqjB07tu/rcePGxdlnn93vvqeeeipSSnHzzTc3ff+XXnopNmzY0HCWLFligJGNl954SQAGAAAAACohAFM6ARjehY997GMxYsSIePnll/uuLVq0KFJKsW7dun73X3DBBXH44Yf3fX300UfHlClT+t23efPmSCnF9ddf3/T958yZEymlAY8BRg5e3P2iAAwAAAAAVEIApnQCMLyDXbt2xaGHHhof/vCHG677BDC8ewIwAAAAAFAVAZjSCcDwDjo6OiKlFN/61rcarvsdwPDu/Wz3zwRgAAAAAKAS9ueUTgCGdzB58uQYPXp0vPHGGw3XX3vttWhpaYlZs2Y1XO/u7o7Ro0fHRRdd1Hdt5syZMXz48Ojq6mq4d968eZFSiq1bt77n5zLAyIkADAAAAABUxf6c0gnA0MT27dujpaUlLrjgggH/fPLkydHe3h6vv/5637XbbrstUkqxbNmyvmtr166NlFLMnz+/79revXvj2GOPjdNPP/2gns0AIycCMAAAAABQFftzSicAQxNf+cpXIqUU999//4B/vn79+mhtbY3x48fHggULYvbs2dHW1hbnnntuv3unTp3a94nhhQsXxsSJE6OlpSVWr159UM9mgJGTF3a9IAADAAAAAJWwP6d0AjA08fu///tx5JFHxptvvnnAe9asWRMTJ06Mtra2GDNmTEyfPr3hE8Fv2bNnT8ycOTPGjh0bra2tceqppx4wLL8bBhg52bZrmwAMAAAAAFTC/pzSCcCQKQOMnPx0108FYAAAAACgEvbnlE4AhkwZYOREAAYAAAAAqmJ/TukEYMiUAUZOnn/9eQEYAAAAAKiE/TmlE4AhUwYY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W8WgQYPimmuuaXp3+fLlMWzYsOjVq1f07t07Ro0aFatWrWp6b8OGDTF+/PjYYYcdolu3btG/f/+YO3fu/9WMFhgpWPP3NU0B+MR5ny17LAAAAACgotzPyZ0ADB249tprY9iwYfGNb3wjpk6dGueee24MGjQoiqKIKVOm1N9buXJlvPWtb42+ffvGxIkT4+yzz47evXvHbrvtFuvWrWv4Z55xxhlRFEWceOKJMXXq1BgxYkQURRHz5s17QzNaYKTiv//+3x0E4FPLHgsAAAAAqCj3c3InAMPrtH79+thtt93iPe95T/3ZqaeeGj169IhHHnmk/mzBggVNofjRRx+NzTbbLEaP/uf/7O3GjRtj0KBBsf3228f69es3eR4LjFR0GIDnnlL2WAAAAABARbmfkzsBGDbBoYceGttss03989ve9rYYOXJk03s777xzHHzwwfXPF1xwQRRFEcuWLWt4b+7cuVEURSxevHiTZ7HASMWLL73YFIA/M/fksscCAAAAACrK/ZzcCcDwGl544YV46qmn4oEHHogf/vCH0aVLl/jkJz8ZEf/4Vm9RFDF+/Pim3xs1alRsueWW9c+f+cxnolevXrFx48aG9x544IEoiiImTZq0ybNZYKRCAAYAAAAAOpP7ObkTgOE1nHzyyVEURRRFEW9605vi6KOPjr/97W8REXH77bdHURQxa9aspt8bO3ZsFEURa9eujYiIESNGxI477tj03osvvhhFUcQZZ5zxmnM8+eSTsXTp0oafq666ygIjCR0F4BPmnlT2WAAAAABARQnA5E4Ahtdwzz33xIIFC+Liiy+OESNGxJFHHhlPPPFEREQsWrQoiqKI+fPnN/3e1772tSiKIp555pmIiBg8eHDssssuTe9t2LAhiqKI008//TXnOOuss+ohuv2PBcb/71546YXmbwDPEYABAAAAgNYQgMmdAAyb4EMf+lDsueeesXHjRt8Ahtfp+XXPN38DeM6JZY8FAAAAAFSUAEzuBGDYBFOmTImiKOJPf/rTJv8N4J49e/obwGTpuXXPNQXg4+d8puyxAAAAAICKcj8ndwIwbIJzzz03iqKIJUuWRETE1ltvHSNHjmx6b+edd47BgwfXP59//vlRFEUsW7as4b05c+ZEURSxaNGiTZ7FAiMVHQfgE8oeCwAAAACoKPdzcicAQweefPLJpmcvvfRSDBgw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cMZ1I6D2tYZTtC0ElYAZexc2frFERERERERERERkljh+TpaOATCRiWIHRk1NdV217oze1oHfIWV+e20AvHGM4cw7ZgK+1ugns4GgEjB4y5TGL5iIiIiIiIiIiIjMEsfPydIxACYyUezAqKnJLsvWBcCtls1H/oL3tQHwb/8xnPnocsDXGl+KWkJQCei0tl/jF0xERERERERERERmiePnZOkYABOZKHZg1NQk5yfrAmA7v0Xa8NfXGjgebDjzeSXga42A0I+08ysdUF1X3eg1ExERERERERERkfnh+DlZOgbARCaKHRg1NfGZ8boAuM/COfUB8PVdhjPf2Af4WmPXivd0r0nO57ZMREREREREREREfx3Hz8nSMQAmMlHswKip2X5ruy7M/XHpf+oD4LybhjPfvwT4WuPOkrd0r1FdWd/4RRMREREREREREZHZ4fg5WToGwEQmih0YNTWKKwpdmLspcKI2/F30FlBXYzhzyQPA1xpqX2s4RjlAUAmYtufnxi+aiIiIiIiIiIiIzA7Hz8nSMQAmMlHswKipWXF2BQSVANtoJySv7KcNgMM7PH1mdR2w8E3A1xq9Re4QVAK6rBvYuAUTERERERERERGRWeL4OVk6BsBEJoodGDU13x+ZDUEloL3MC4XL7bUB8IbRz35BhBvga40fwly1Zw4rHVBVV9V4BRMREREREREREZFZ4vg5WToGwEQmih0YNTUjd0zUBsDiPlAvfEsbAB/0ffYLtn4B+FojdmUr3aWjT98701jlEhERERERERERkZni+DlZOgbARCaKHRg1Nd03DoCgEuAV0UMb/vpaA4nrnv2CEyGArzUKF70BQWkHQSVgztEljVcwERERERERERERmSWOn5OlYwBMZKLYgVFTklOeA0GlDXGXh3ysDX8XvQ0UpT/7RbcO6YJid5E3BJUAz5ge0Gg0jVc4ERERERERERERmR2On5OlYwBMZKLYgVFTsubqGt1lnC/7/xNY9BZwfdfzX1SaowuAvwwdrHv97aLbjVM0ERERERERERERmSWOn5OlYwBMZKLYgVFTMmrXKAgqAd5yARpfa0DR88+9MLAN4GuNg+GDdAHwyjNhr7dYIiIiIiIiIiIiMmscPydLxwCYyESxA6Om4nbR7frwNvgT7Vm9O2f9uRevHQb4WqNypT1sxL0hqAR4xHRFrbr29RZNREREREREREREZovj52TpGAATmSh2YNRU/HLsF20ArBSQ5veWNgA+K/9zLz4WpLsMtE/QD7og+cDdA6+3aCIiIiIiIiIiIjJbHD8nS8cAmMhEsQOjpiCjJAMOqx0gqAR0CeujC3ORdvLPLSDnmu41+5W/wDaqAwSVgM/ixr3ewomIiIiIiIiIiMhscfycLB0DYCITxQ6MmoKZR2bqztqdu3BkfQBcWfznFqDRAMEC4GuNakVftFs1Xbe8y7mXX2/xREREREREREREZJY4fk6WjgEwkYliB0bGdjDtoC6sbRs6Bjt/7akNf1cJL7ag3bO1r1v0Fr5b9xtsldoziodunfp6CiciIiIiIiIiIiKzxvFzsnQMgIlMFDswMqac8hx4bfCCoBJgq3BDi7nrUOjXUhvkrvv8xRaW+rvuzOGy+Ag4RH6hC5ajLux8PW+AiIiIiIiIiIiIzBbHz8nSMQAmMlHswMhY8iryMG7POF1I23LpEsyav6D+8s9nFS+2QLUaCLHXvjbCHTuSL8M22lm7/GgXnMm89nreCFEj0Wg0OJt9FneL7xq7FCIiIiIiIiIii8Dxc7J0DICJTBQ7MDKGM/fPwGO9R/2ln0MmoPnPO5G7ylMb4C7/GKguf/EFH19VHyCnJeDX/Rt063BW+qDoz95TmKgJOpt9FoJKgMd6D5TXvMTfBxERERERERERvRCOn5OlYwBMZKLYgVFjS8hKQIe1HerD37BRaD5nG35bOa0+vD285OUWXpoLLHpbuwxJF2jqajA4ZoFuXT3Xj0VNbe2rfUNEjSQ6KVq3LacUpBi7HCIiIiIiIiIis8fxc7J0DICJTBQ7MGos+RX5CLkQAvvV9hBUAuxU9mi9zA/Nf96FyEVf1oe/qwSgvODlV3TQt35ZvwfgYWU1nKSjdcGZT/QPyC2pelVvi6jRLD+zXLcdn8g6YexyiIiIiIjoBd0rvYdB2wdhQcICY5dCz5FXkYdNKZuQV5Fn7FKIqAng+DlZOgbARCaKHRi9bqXVpQi/GA6XtS668MpO6YSWS/zR/OddWPzrt/WB7cq2QMGdv7bCmkogzKXBvYTluHIvGw6Knrr1O4TNRHRCCmrq1K/mTdJrlVueiwl7JyDofJCxSzGq749+r9uGt9/abuxyiIiIiIjoBckuy3T79LnlucYuh55h2oFpEFQCfvj9B2OXQkRNAMfPydIxACYyUezA6HWprK3E8jPL4RrjqvuBK6gEOCr64pMFcjT/eRd+WboMGt9/aIPagBZA7o1Xs/LsJGDZR/Uh8IEFuJ57C86qzro6bKOd4Cn5AefScqDRaF7Neum1iEqK0n1ulnwE9tjdY3XtIL8iN3Y5RERERNTEpBSk4FjmMf6+acIWJNTfouhS7iVjl0NPUVJdojeGQU3TjcIbyCnPMXYZZCE4fk6WjgEwkYliB0av2uYbm+GzyUfvB5OgEtBpzUDYLY9E8593ovnPOxET9is0i9/RBrRLmgH3X/GP36wLwPLm9SFwpAfSrsXCa31PvbpsJN3htMoPg6KkOHH7/qutgV6JhScX6j6vizkXjV2O0fTe2lvXDv6n/Y1dDhERERE1ISXVJXCLcYOgEnDq/iljl0PPMHnfZN0+/d47e41dDj3F3jt79cYMqup4C6mm5lz2OQgqAV02dsHD6ofGLocsAMfPydIxACYyUezA6FXIKMlA6IVQTNo3ySD4Hbj1czivDMXHP8dh+JxALJs7DRnL3euD2YVvAimv6YdvQSoQ0WBdvtaojJuOfan70CVmoEGtNqIBWLb/LJLv5/Ly0E3I1P1TdZ/Rjts7jF2OUWg0GjitcdK1w/dHvzd2SUaj0Wiw5cYWHM04auxSiJqU6wXXcS77nLHLMDqNRgO1hn04aVXXVeNB2QNjl0HUKC7mXNTtK0ouSYxdDj1Dw4M6o5KijF0OPcXPx37WGye4VXjL2CXRE374/Qfd57Ph+gZjl0MWgOPnZOkYABOZKHZg9GfdKb6D5LxkFFcV42z2WaiSVZgdPxv9t/U3CFIFlQBB9DnarZgL4eeNGPXLcmTMb6kXxMLXGgiyAdJOvt7CayqB+BWA37v1690yCTXlBQg4FQ57laNB7bZKe9iKB0OacAYajQaFZdW4m1eGOnXjXkqtsLIQP/z+AzalbGrU9TY1/WL76T4bUaLI2OUYRWFlod42On7PeGOXZDTHMo/p2iH9YbqxyzGaitoKTNk/BTMOz0CNusbY5ZCR5ZTnwHmNMwSVgMu5l41djtHUqmsxfs94eG/yxr3Se8Yuh4xMrVHjsx2fQVAJSMhKMHY5Jq+ythIXcy6ipo59TlO1/dZ23T7S3ONzjV0OPUWNugb2Kjvd5+R3crGxS6In1NTVwHO9p95vr4NpB41dFj1hyv4pus9n7O6xxi6HLADHz8nSMQAmMlHswCxTZW2lwX2hNBoNzmafRcS51RgbHY+Q+GPwP+2PaQemYe7xubBfbf/0oLfh/X2VnWEn6oPPF36HhXO/QeaCFoahr681ENgaOLQYqGzES/UUpQMSr/oalr4PbJmE7NOROHp9K/pv/dTwjGBJD7QJngwbUX+0DR0DIXARJsXsxp6ke0jNLUVGQTkyCspRWVP3WkqetPsbXS0FFQWvZR1NXZ26Do5r6kP6X479YuySjCKlIEVv2+y1qYexSzKaGYdn6Nph3bV1xi7HaHal7tK1w/Gs48Yux2gqaysxce9EjNk9BuU15cYux2hib8bqtocZh2cYuxyjScxJ5L3SSed20W3d9tBji+X2mwBwLf8aNlzf8JcOGJr9+2wIKgEBZwNeYWWNq7qu2qzvFxl6IVS3zY/bPeaZ82k0GlTUVjRiZU1TSkEKVp5b2ajbREZJht4+/aS4Z39OjaVOXYes0izeN/qRhvvYun2Ky9ynaEo0Gg06b/DS+4zuFt81dllk5jh+TpaOATCRiWIH1rTkVeRBcknyl87eefKyhxqNBneL7+Jy7mWcuX8Gy84sg+MaR/SL7YfYm7E4lH4IXx78El02dtELPm2Vfxz4OkV3hLt4EHqtHIkdfo54uOC9pwe+vtbaM3ATwoFSIw66lBcAMu+n1lcZLGB1eFuIpR3QX+nx3PfdXu6JVst+RQu/FWgbMgG2oV9hzrZzWBCXBPmxVBxJycGhaw+gSriLC+mFqK1TQ/2CZw+rNWq9dUaeiX1NjdK03S+9r9cO4/aMM3ZJRtHwrFdBJcBZ5WixgzQzDtUHwIst+KwJ/9P+Fn9mPADsu7vP4i8RDwBB54J07TDmOYP+5m518mpdO3x96Gvd4xqNBtV11UasrPHtTt2NkAshFve+G2p4YISgEiy236ypq9Ht54deCH2pZVTXVeu1paleZv3rQ19DUAnYfmu7sUt5LWbsnab7jDqtdn3mfL4JvrBT2WHbzW2NWF3TotFoMGDbAAgqAdMOTGu09Z68d1Lvb6n32i6Ntu5nWX5mOQSVgAUJCyz2e/IxjUaDETtHQFAJ6BJlA4+o9hBUAr7dN8vYpVED2WXZBmM0kYmRxi6rSbmYcxFbbmwx2f66KeL4OVk6BsBEjaiqqgo//fQTmjVrhv/93/+Fm5sbDhw48FLLYgf2dH/1h8+90nu4U3wHGo0GGo0GCVkJiLkWg/jMeKQ9TEN5TTkqayvxsPohymrKIL0sxXdHv9Od6ei0xgnxmfGorK3E0YyjiL0Zi4NpB3Gn+A5uF91GYk4i/E/7Y9yecZiyfwr8TvlhzO4xcFnrAkElwGuDF2YdmQX5FTk+jTM8s/VPT0oBTkrtJarslbbwDfsY4lUf4kjAu8hZ/Oazw97H08q2wOElwNHlQO6NV/Tp/EVqNZCyB9g0Dlj24VPrLl70D9gpbfXawnWt5x+2V3u5J9pFDkLb0HFoGzIBnyyQ4xNfMVosjIDgtw4L9hyE4vgNRJ+4gzUn72Ll/hQcuvYAVzKLcSG9EAVl1cgrrYLyxB1M27xFf3BgjWX+6DybfVavHbpt7GrskoziyUFsQSWgrKbspZd3Lvsclp1ZZpJHSveN7atrg2G/DTN2OUYzcudIXTtMPzjd2OUYzaKTi3TtsCBhQaOvX6PR4OS9k0Y/o2zyvsn1/VWMq8VeFrzh/eA813vqBr2WnVkGQSVYTNiRWZIJu0eXGDWFAdGS6hIsPb0UQ+KGYNyecSiofDVXPVmQsECv37TU2wacuX9Grx1e5hLOFx5c0KoqzDIAACAASURBVFvG1fyrr6HS1yvtYZp+O5jh92T/td567/FpV8YoqizSm6e0utQIlRrf1fyrujawU9k12m0DNlzboNf+Lkp7o4auNXU1evXE3rTMg44fO551vD5QDP4Q4yWtIKgEDFrb09ilUQNHM44a/DYeGvepsctqMvIr8tFhbQcIKsHibyf2KnH8nCwdA2CiRjRy5Ej87W9/w48//gipVAoPDw/87W9/w/HjL34JSHZg+vIq8tB/W394rPPA2N1j0XNLT4zeNRqDtw9Gx3Ud0XlDZ/hs8sFnOz7DF/u+wIBtA+AW4wbH1Y7otKETRu8ejSFxQ3Q7ocN3DMeYXaNeOoDtuM795cPb50xDpE7wiHKo/+EZZYdZ4W0Qvep9+Cja6QLfQwHvInvxm1Cseh8pS99+btirXvwOsONb4PcA4E48UHAHqKs19kf6fOo6IPOcNqDeOAbYPh0QdQJ8rREZ/CEElQD36PZI93sLdeEuSA78GDFB/0b3R230MpOtwg3twj9D27CRaBs6Fm1DxsFG6oP2Mi+0CZ6CtiHj0GbVNLRXuOm9zlnqhRnrL8Jv51WsPZWGObGX4bViPzxX7MAv267gYnohzqcVIKekEjsv30PU8TuQH0vFoh3JWHc6HbdySlDz6EzknJJKFFfUQKPRoKq2DhqNBqm5pbiVU/LMAYjqWjUupBfiyPUclFU9+3O9W3wXi+N/xZbrm1/JWUcN72X2eDLWJevOZd3C/ZJ8o6w74GSQQTu8bHhbXVeNLo8umdVhjRu2p+x/tcW+RuU15XptYK+yM+vL/pbXlD91YLaythIOq+u/wzuv72SxZ2w0vEd439i+jb5+1ZVoCCoBPTd6o6quqtHXD2hDaI91+leuSMpLMkotarXGqNtizy099drhdtFt5FXk6f5evDd5m2Xo86SopCi9dqhTv55bVbwqS08v1as3+HzwK1nu4O2D9Za75caWV7JcU7Py3Eq9dth/98X7/YgLkXrLkCSKX0Olr5f8ilzvPexO3W3skl4pjUYDlyeu4JRSkGIwX9ytOL15LOkqImU1ZUjMSUStuharzq/Sb4dLjdMO8/fONtinL64qbpR1P82p+6f0anGNcUV+hXF+7xhbZkkmOm/orP2NFN0eeYvewILwjx+NCThYzL52wr0EDIkbghmHZuBoxlFjl/NUy4+v0G2zgaEf6f5tqQd6PSnmWoyuTTzXeRq7HLPB8XOydAyAiRrJmTNnYGVlhcDAQN1jlZWVaNmyJTw8PF54eezA9IkviV9L4Poi0/SIdnBQ/rl5R0la43NpazhH26KXvB38Q5sjPPhDzI74BI6PzmDtL28L6aoPEL/8Xzi97B1k+L0Fja81anytkej/T+xd8R6KF72hC3LTF72DhWHNcSjgXW2w6/sPnPLrjiPSH3F9wy+4opyJBzuXQH1KAiSuBy5tAM7ItIGvOdBogItrUbfkPexa8R7uLHnLIOyu9rXGZf9/4uyyd5C/6A34hzZHP3lbzIxsgQGytugUZfNatg2boGnoHTQUDpJusI2uvy9ue3EveCybBeegCbAR90G7iKFoE/S19vLUUS5oG/45Wi5dgtYrfkTbVV+iVcBstIsYhvbSnmi98j9o5b8YbUMmoG3YCPSQhCLwwGV8ve4CvlCdw7bEDOy8eQjeoRvQfE4sWvithH3wzxgYvQD9o/3QTboQwvJgOAcFobN8FhwbDDy5RXti2aEjOHj1ATaeTceGM+mIS8yCLD4Vv9/IRUZBORJu50F+LBXS+NuYE3sFM9ZfxNpTaTifVogTt/IwatN8g3Y4lZmElOwSZBdXoqCsGpcyirDnyn0cuvYA+5Ozsf1iFgrKqnE3rwzxN3KRcCsPFdV1uJheiFOp+cgvrUJmYTnq1BokZRVDcfwOdl2+j+KK+lCgqrYOeaVVuvs7z9m/GrZKOwhRHjiZdhsA8LCyBnfyylBYpg26iytqkFlYjtIGAXnDgYLKmjrUqTVQqzXPDdGf5sstkwzbIev0S23ie1N36y3HTmmHuftjUFFdh6raph0SXMq9ZNAOp++/XDs0dRklGei6oTM6xrgiMSdR77mLORcN2iGjJMModRaX1+j97TSme6X3DNohuyy70dZfU1eDzipn3brXXVI22robSn+YbtAOqmRVo9eRVVQMF/nnsJP1xqn0242+/tzyXIN22HJjC6IfhfSPp5cJv16URqN5qbMsX5XPd36u956NdZ/wmIunMHvPGpRVPfuAsOyybDiq9EMr99WuqKyt/Evrflj90GB7mHlk5l9apqlqeHCqoBLw+c7PX/hgus/W99dbxuCY7iZ3WcnHl3V9PA2JG2K0A3deh7yKPINtflvSVoP5vj38rd48LmtdjHbQUGPRaDSITIyE66Mz4npt7gPP9fpXd+q5pWejHGQ6bk1/g88pOdd47f/48s8Np5e9VLwpq6mr0es7dwS+hzu+7REY4qJ77Jf4eWZ/EFlFbQV8NvnobQ+H0w8buyydytpKJGQlwFOlPVi+r7wtbi15W1er6EL4K13X+uvrMff4XIRfDEetuomf3NDAp5vqv2fslcY9yMSccPycLB0DYKJGMnv2bPzXf/0XHj58qPe4v78/rKyskJHxYgPA7MDqaTQa9F7XWbejNFbSGj9GfIJJ4lb4UtQSS0Obwy+sORaEf4xpopYYLWmNWZEtsCy0OUJCPsSC8I8xSdwK00UtERryIcKDP8QIaWsMkbWBX1hzpPm9hfP+72BbYDPIV30A2aoPIF31AeaFf4zYwGaoWmiNvEdB7F2/txAY+hG+j/gEu1a8h3t+b+K8/zvYEfge9q54D4cC3kW6X30wWbngLZQseFcvpCxc9AYu+n2EM/NddI/VLngDlxc4I83PAcWLPkThwg9xw9cO+UttkB3RF0m/hSDv3h1g/694sGspUk5sh7rUMo8ARnaS9qzgI0uB/b8C4k7AlsnAhdXawHvLZEDeA4gZDixvbhASX/L/J+aGa88YPhLwLmIDm2HLymb4WtQSw6VtMFjWBn3lbdFD0Q7jJa0wXtIK9kpbeCvawTnaFo5KW0wQt8LaoPdfS5j8vMlOKcA1yh5dpU7oKqsPmp2jbV94Wc5R9ugYOhi9wrqjV0gfCAGz0NJ/IdzCBsErvCe6hQyCa+gQdFv+JXoHTETX8B5wl7nBW+SJEUG9MSiyg8Eye4X7wC1kGGzDP4VN2OdwXDkVHkt/RFf/mRgYMBrDg/qiX2hfdAnvDffgEXBZMhefBg1Bj5D+cFs5Ea0CZsNW6g1nRUc4iHvAdtVkfLpsAjoFfo9xMXL8R/Qrhgd3R+/ggXAImgr78CkGNXiIx8Fm1WS0XvkNHAKnY6R4OlyXfQcfvx8xYPHP6C/2hbdsAryCpsArZAo6K0ZBWDET7ZYthU3Qd2gbPBmDQ77DosCvMCfoR3waFYGhaxejt3Qsekinoa/SD96KSegYOQw9pV1h/+iADpfo9roavlT5QnH8DoIP3sBo+SnYL9yPz8QJCDqgvcz4wrgriNu7D/sTzmDT2XSsOZWG03cz4L3m6fe4dpR0g3vYYLiKR6OLYia8pf7oqZqNKeuDMWfdfszccBGrju7HiI19MGztQPQRyeDkr8RQ8TwMEK1C/+DdmL9OjhnbpPh513Ys25OMmRsu4jPpfny17jjmbbuCycqz+H7TJUxcfRCT1m9GwOHD+GbDCcyJvYIFcUmYtTERc2IvY+rqc5i1MREBe65hsvIsVuy7jiMpOZi9O8xwG4v2gLfiZ3ymEmHZ+pXwl0/FxOifMGmzBIsPbYfvwfWYvkWEkRvnY9J2fyw/dBRfxEZi7r712H81E3GJWdh7Lhk/bN2O0as3Y8ameIQdP4Sw0xux9vIepOYW4fDVTIQfSUTggbMQxV+E775dcJd8A2fpMHivGY0f90cgIuEg5AnnsXzfeUxeFwf/veew/9pdXM95gIRbeQjafx1fblViUuwqrNh/GYGHziHu0l0cu5kL+bFUBB+8gY1n07E/KRPS+H3oHuOle4+uSmd8sXkVftwuxufr58NN3sugHcTnYnDkeg6OpuQgKasY+5KzceJWHhJua6crmcVYe+YmYi+m4UhKDuTHUrHxbDoOX3+A3y7dQ9D+FEh/v42t5zNwNCUHx1My4HcoDouPrIfs7H7svJKG3y7dw/aLWYg4cgu/bk/C11ti4SDtBkeZF77YHoDosyewJ+kezt0twMPKGlTXqnErpxS7rl5DZMI+xJy5iT1X7mPbxUzEnE7DjkuZOHI9HclZxbiVU4qL6YVIevTvtIISJN67g5Op9xGXmIWt5zNxOjUfmYXlOHLrJvZev4bF8eEG7fDFbz9j85UTOJeWi1Op+Sgsq0Zqbinib2ZhV/I1XMhMR2V5CTS1VSivrkVOSSXu5JUhKasYB1JuQ3nuGDacv4YbD0pQXl2Lc6m5SLmbjqSMPCTcfoATN3ORlpmJwpJyhPwu0Vt3t2hXpOYWobKmDklZxTiakoMzdwpwr6gC6fnlyCutgkajwYOHlYhLvoRNiRdxNCUHx27mIuF2Hk6n5uNKZjHyS7W13SsswYnUqziSmoQ7+XmoqVPjblE21l7eg3P3riKjKA/JDzLhf9Lw78JxtTO+3LUACw+vxs6rSTh68y7S88ugOLcbU3cuwpqzx3E9+yFKq2qh0WhQUlmD2jptmKNWa1BRXYuismrcztV+LtfuP8SdvDLdgTd5pVXYd/0a5AmJWHMqDYevP0BH8Uzd+jtHa+9DXFxRg/T8chSX10Ct1j9zprK2EnV1auSXVuFeUYXe85U11biWk4Y9N0/jVv495JaUIfLUPoSc3IrY5ONIKyjCg+IKiE4ehvjUPvx2/Ti+3b/AoB26ru9q8FjPdd2x+9YRnMq4hjsFebr1VtXUIOHuNdzKe4CqmjpU1tShrKoGpZU1KKnUHujw+ICHuifeS0llDW7llOJecRk2Xd2DjqpucFR2wPqkp59h+PgWIdo2qjBoG22ArEZNnWHAVlNXg43XNyL2ZizKa8qh0WhQWVOnW0ZyfrLBe/bZ2Ae7bx3FvdJ70Gg0uP+wCGcybuN8ZjrySipRU6dGQVk1krOKceZOAQrKqvUOYCqpKkfto6u6VFTX4e6jg58Ky6pwM6cAWUUVujapqVMjLb8M3+2Mht2j24gMWvOVYSNUlyMv7w7GbhqmqzOgwVk83dd2xbAtw/Htvl9wNPUK5Od2IO76cZxKT0H8nWvIKX2IXbd3ISZ5M7YmncDyo3E4nnoH57JuIOT0GozdWX8v1I4N+s6YMytRUlX/O6qiug5F5YYB9eMDtp53xpdGo0FeaRVSc0uRU/L0wPp+aTaScpNwp/jOHwamjw8QK62qRXlVLcqqqgy2tYbz5j/6TnmWGnUNdqbufGqf32fzYPx0eDm2Jp/CoqNKBJ9aj6N3L0J5/gjOZl7DgbQDiLsVh7SiDKyO3winaMNlDI7pheAzImSXPoBao/7Ds+PuF1Xg7N1cVNc+/q5Ro7Lm2WFKbZ0aJZU1uuU+3tafXI9at+3V4EFZLm4WpCOjqACXH9xAWlEm8soLseh4YIP93Pr92bnH56KspuyptTf8O30ejUaDiuo/fwDdqfunsPRkIOYdlGHvtRsGf+faK/RUIbekStdWf0StUePgzcMGn9Gi7dpbyBRUFuBm4U1klWbBZY32wKXe8nZweNQWnus6Y9WxAOy8uR8XHiQiOec2Lt3LQPrDTN0VBNRq7fZeXl1r0C7Pa6vymnKDA2Jq1bUorS5FSVUJUvPzUFH9x8GKWqNGxsMsXM69/NQzVJ9Xw4YnDgRqOH0mbaP795KTfi988IlGo3nm3+ljZdVV2JwUj5/311/twOeJK0r9uPMrJN5LQ1ZRxVP7mVelRl2D7LJs5Ffko7iqGD0e9ZMTxK0wRtJau9+52gW/3fwNF3Mu4vyD80gtSgWg/Qxq6mpQWFmI5Nyr2Hn9ALIe1h94V/uUPuuxitoKpBSkPDdk12g0uHL/HnJLn32bm4qaipe+qkVxVTFOZJ1Adlk2Kmsrcb/0PurUdcgtz8W847/qPovloR8BvtY4vkOJI8qZ6Cdvq3uur6oX5m74Fr5b52Dx3jCEnNyE364fx92ieyiuqEB6QSmqa9WP9qXqnnnQ7x/1LYdv3kLslUQkZmUhPb9MdyWv/Ed9TllVLS5l3cfptAyDbeV57VNZU4us4qdf9Uuj0SD0QqjB30iHNW5YelyMuJRDOHznPM5m3EJpVZlu2y8qr0ZGUR7yyyqQX1aBjKI8pBbcR1FZNXJLypBRlI+cklJkFOUhp6QU2Q+LcfnBbRy5expH757DibRknEm/g7PpmdiWfApBJ2MwY+9CfLZ1KuYdXImFh1dibOxXGLh+FBxUjnq1SYI+weGY5Rggq/+MfjzwNU5nnXypq5FV1FZot3N1Db7Y94Xeun46Oht3i+8a9QC/P1KnrsPxjBMGn+Gac4oXWk5RZZFZX2XrZXH8nCwdA2CiRtKjRw/Y2NgYPH7o0CFYWVlhx44dL7Q8dmD1Em4caLAj+TGO/uqF2/Pb4vivHtj1aw8c+dULifOdULHgnyhY8G+cm98BifMdcfxXD1ya74iCBf8GfK1xe35bXJsvIGm+PdbMG4rgeRNxer4b7sxvjZO/dkT0vOHYMG8QshZ8AvhaI2m+PQLmTsWiud9g87wBOLu8H8p9/4W8BR8gfN44BMydgsVzv8bsuT9APm8EMhe1w5mISdi9VYmd0f6QB8/H6JVbYDP3N3j/Eo3w1euxU+GH7RtkWHviJgL2XMPm3fsQvWUbxPsSkV9qPke6NxnV5UD2FaDwLlD5ENj+NRDiAOybC6Ts1d5z+MoWIHEdoOgFLHzK/ZNDHKCO7Aj4vYvaR2dow9ca6i2TMSeyNbpE2ejCv8GyNlgR+hHkqz5AQOhHurO97ZW2GC3RHnTw+LGR0tZPhGXax12j22NYgwEPJ6UtPKLaG/xYeJHJXmmLsZLW+H3FRxAHN/9Ly3pyGi5toxd+WuLkqLSFKuh9XRgsqAS4Rdmii9wOAyR28FLYooe8PTorbOERZYuBMhtMEbfEGElrDJe0Q3+J/g/m5aEfIT7gfXT4k+3qEWULuz95dYLH25pLg4MGnKIFdJML6CkzXF8XmRPGhnbE1GBPjA9zxbRwAf+JaI0xkjZwitYeudxNZo/ecu1gmWt0e/g+uiTbX5k6RAsYLrZ7bhs4vMB7fnZbCOisaLheW936h0a4YqjYDn1kNughE/Ta7I+mnop2ur8Le6UtOkYJ6Cy3Rx9xB/SVOGGo2B4DpTboLW+HAVJb2Clt4Rxti55yG9grbeEjs0NvmR285e3hrWive6/O0bZwf6JN7JS2cIwW4KVoj4EyG/hIHZ+6PXSR22NApDv6iF0wPcwOY8OddAPMLtG26C2zw2CpDborbHSD8J5R7fFZpBPGhnfA6AgnDBJ1gLui/ozATgpb9JQJ8JEL8FTYGayzq8IGrk/U6x5li68ibDBU5KS3LEElwFthg4Gytugit0N/UQf0EbsYzNNRYY9eMjt0imqPwbI2cI1uD3ulgL6yduimsEEvuY3ufTWc+sjbYWKkDUZH2mNEpBOGiB3hESWgs8IO3aVO6Ct2Ry9xhwbt5QAHpfY9DpLYoa+4AzrJHTBY5IROT3wnu0TZwf4526NztC22BTYzuIf9syaXaAEdouzgqRDQU2qPQWInfBbpjD4Sh/r1KAU4Rmvbo6vMCQMl9hgjEtBX4qTXVp5yR4Pld5M5wktuD8do7bbeQ+KE/mIX9JA5okO09nP0UDiil9gVPlJn9JHaoZfMAZ0V9nrbloNS+z335N9lp6dsC9q/q/aY+5Tvh26Kp1+do4fMAcMkzujQIODykbfHRFFbOCi1B0V1iLaFj8IGY8Rt0UXRHq7RtughFzA53BXfhHlieIQb+kgc0THKsO0dlAK85c4YLHZDL6kzesmcMETshM8jndD90UFWnWXO+DyyE7pLO2CYyAmTw50wVOQIb5k9Rogd4Rlli84KW4wMd0V3aX3bO0fbYbDIBRMjbTFGZIt+Uge976xpopYG9QyR2OptR07RdhgS2QGecgc4Rduhh8QFw8M7orPMCZ3lThgocYOg1L6P7jIHDBcL6CuzwQiRHbwefS6d5PbabUTugEFiB3STG342QyXO6C1zhKfCHj1kjujyxOcxXdQSV5Z6/qXbbDzt+7q3vB1uLnkbnRtcncVOaYvuMkdMiXDBYLEDekgdMS6iCyZIXDBG6oZRIk+MjHBGN5kDPhU5YUy4C3xkDugpdcbICBdMDXXH6NDuGBXaFd4ye3jJ7TBA5IJ+Ug+MknZGd7kznKMF9Jbqf690iHJAX6kTRotcMDXSA19EOqOXzAFdFAL6yASMCXPHsDAv9JY46PbX+oqd8UW4B6aFu2NcqAfGhHvhC5E7JkY6YXSEI4aI3DA60g1Twt0xNbQTJoS7YpjYHX1lHeEa5aj3nq8s/Se+ELd66fYVVAK2BL6vF4YIKgGOSu33e4doAf3E7uglc0M3hT26ywV8LnbE5HA3DBU7wzXKDnZKAT5SNwyTdICnQvudNlRiizGRHTBM5IK+Unt4KezRU+aIUSIBUyPbYbjYDn1kjugrdkUfkTu85I4YJHHAMIkDPhc7YGKEPTyf8rdXv43rf0/eWPI2xkkM28FHboeeMnt4RNnBS+6ILjJHdJM5orvMCf2lHTBa4owvRM6YFuGOcWIvdIqyRw+5MyZEdMaYCEd0Ujiih7wDRovdMC7SCeNEXdBf0RF9Fa4YJe6MXjI3dFa46NemtEVvmQCPKDsMlnbAQHFHdFRoL1nvFmUPl2htvzdY7ISpEQ7oLbOHZ5QdvBV2mBxpj1EiD3RWGPbHDfuBjg1u+9Nw+n35vxAT9O8//Mw9oxzQX+YIr8d9scwOfaUOGCxxRk+5E0aL3DEi0hV9JM7oLXWCp8IevaUOmBDphIFS7fe5o1JAP6kDxka6oJvMwaAvc42yx0BpR4wUdURnhR16yhwwQuyMiSJnTBR5YrjUHW5R+n9PnRVOGCZxRX+JOz4XO6Gb3B6uUXYYJbHHDxHO+D7CHTNEnTFF4gWnR+3hFWWjd0DI16KWKF/4D4yWtG7QdgJ8FI4YLHVBX6m23gFSR4wQd0BvuQs6RjlikKQDRok8MSHCExPCnTFEYocpka6YJfLGFJEHxort0VPeHv1kNvhUaqfXvwgq7UEph5a1MtjXElQCusvsMFDigC/CXDA9xB1TQz0wPtwTQyI7YrDYE8NEXhge6YUxoq4YE94V48O9MVbUBT1lLugtd8JIqROmi5wxTOYAzygBPeSOGC/tjnEyL4yVuMM9+unbgyrofcQv/9czt4MucrunfsfaK2213+lyR3RS2ME1yg6dFA7oI3FGX6kL+shd4aNwgaPy8fYoYLDECX2kjpggssOnUgf0ldmjt9wenR7ti7lHCfgq0g3jxR3RVWGHATInjInsCG+Zg67f8pY7o6/MBQOlzvCIsoOTUkBXhT0GyhwwTuKIaSJ7fB1pi1mRTpgudscIWQc4KR9/Z9nCNbr+93PD9zNc2gY1vtY4tmIY6urUKC96gOQlNhje4Hfzn5ke73N3lQvoJ9XuO02LcMRnok7oqND+DXRW2OMzkTu6yB3hpRDwqdQOMyI8MFzi/EQbC+gkd0B/sTMGSQS4P1qunVK7b99f4gB3hSO85U7wkWvbqJvcHuPFLhgjdkF3mSP6St3RR+oMt6hH33cyBwyW2KOP1A7d5PYYInVBV3n9/sUwaRvsC3j3ue/RKVqAl9weHaMMv3cElXbf70V+O77I5Ki0xeqg93FzwxyUVVRi6/K2Br8FnJS28IqyR68oJwxWuGCo3A39ozpiiKIjRsk8MEnSGV+KumKSpAsmSL0wUO4KQSWgU5QDuiqe/nfy+PPoIndEb6kbusld0F3WAf1k7hgi9cBwsSfGSbwwTOqBIZKO+Cq8K8aIOuEzsQdGiDphUkQ3jInsis/EXvhM1AVjIrzRX+KJgZJOGCL2wgCJJ/pLXdFT5ohucgd0UTjAS+GAIeIOGB/hgVGRHTFU5I4esg7wlrmgr8QFg8Uu6ClzhFvU0/eLH099pY4YKnbBCJEHJkR0wZdh3vgyzAfjIrtilMgbI0VdMUrUGf2k9b9TvOUOmBXmCnHUN8YecWsSOH5Olo4BMFEjsbW1hY+Pj8HjV69ehZWVFSQSyTNfm5OTg+TkZL0pLi6OHRi0Zyt8E6k9K85BaYtlkUsxJ/YyZm1MxFdrz2Ni9BmMkJ7EZ+IE+P6WjDWn0iCNv415269grOI0vlCdw09bLuOXrRcxJ/YyQg7exK7L9/H7jVzseHRm1U9bLmNO7BWIjt6G/55rWLorGdtP30BSVjGu3X+I06n5SMoq1h69rFajoroODytrkPOwEidv5yP+Ri5uPnj2PVqrapv+5Vvpkepy4OE9oKJQGw5nnddeehoA1GptkJx5Dsi5pn38wVVg1/fA2mGoPR4MqAYCMm9g1w9AYBsUrh6IlIRVKIudAvj+Q3eZ6tLAlsC2r3B/7WBcW/kJHi76BzSBrZEbao8KRQ9g6xfIWz8ctzePRenWSSiP+QyHoroiXOaMxRJbfC21wTBZeywPaodZIR0wL7ojjoS0QvHaoSg+4oe89cORt/Q9nF32DpKD2+Lh2qHAmiHAvYvAg2QckLphqrgleiraoZ+8LbwaDL66R7fHAFlbdI6y0XvcR9EOMyJb6P3I9lG0w+loH+zctRjjpdofdl2itD/E+8nbGvzYtFPawivKBgNkbXVB+ONBn8f/7idvi7nhH2OMpLVuUOjJH5WeUTZwevTD2i26PWTBH2KSuBUcH52p3TnK5rlnRTcMrL2euCz4swJHj6j2upo7P3oPoyStMTf8Y6QueQsVsd8gMOSvDd4+Xn/s1uVA5nncC/gIkcEfYoK4FfrK26KfXL/dntY2elC8PAAAIABJREFUz3u+MabpotaoWmWHbYHNMFBmuA00xmSvtMXn0tbo+RfCij+axkhaQ76quV5wIai0lzubHfEJflcMhCqoxVODyMaanJS26P9EGNCYk0dUexwJ+ASRwfbo8pouv/9Hk3xVa73BY2NMXaJssDXwAxQF2GNfwLtGawunR9+XxmqHodI2OLCiDc4H9oNfWP2BSCMlbXFSPAJ+Yc2N/v3VGJO90hYRwR/i/oKPEBryodHr+aNpqrglTiinAwDEkimYE94CX4taGhzE9iKTg9IWP0V8gjS/ZrgY8jnOLHtHL/ixpKlLlA3iApshObA3Chf9C/6hzTFE9mJhhqPSFiGr2iHr7g1sjV4Ev9AW6CV/ff3f65hGS1rjlH8znIychsxFb2OQzHh91+ucesvbYbz4+e/NL6w5Ehc4omxRM2wPbKZ39py5Tg5KWyiXd8Zd8VDsDWiGS/7/RNWid3FS8T1OLm5lsK/1uiYfRTvsDXREfloyYpd1QnTQh5gq+uv79n9lmipuiV2SH3BV9R8EBX9s1H7cmNNQaRtc8/s3EjYsh7rB2czqyhIkR0/GvHDj7nM31uQR1R6nlzZD1hI7bF7ZTHcAbmNOj39vP/6/96PxhLnhH2NfwLu4vlxA3umNujGUMyePIN5P0LsV2quYhkvbIMvvTXz6gn2msSeX6PaQr2yF7yLsX8nyhsvdG3vErEliAEyWjgEwUSNp0aIF+vbta/B4amoqrKysEBwc/MzX+vr6wsrK6qmTpXdgmrpaTI32hr3SFmOkrq/tkktEr11FIVCYBpQX6D+uVgM1L34/PbVag5O385Fd/IzXajTadT3tUlNqtfbM6KRY4P5l4OZBFO6cieur+6Li4EJtUJx+GnVJW5F4TozkpA3QZCcBxZlA5UOkPEjE6VNBqNk/r/4e03W1qMk8CyRtBeIDgcNLUHFahJRToUi9oEDhrQOoK8sFitKBrAvIOxWJs3tnoSj1CHDvIu4cC8CR7RNRfWgRcHkzNLFTUS32xM34ZcjcPQt7t43DpkM/Ii/3GnAnHoj7Rhu4750DPEgGyvKgSdkHnJYA8SuAAwtQe8QfD69sQXbCKpw9GYjfT67Etd/9UHteidSzEtw6FQrNiVBkHF6I1HWfoljVD7W/zUDSiUDsSJRjx6GfcTl2PIr2zQEubUDFocXI3joRmviVwMUYIOMsUF2mfU9qNTS5N7B190yMW++NX6LdMSu6A6aoXDFvrRdmx3TDr2u9sWB1V/xnbWcMX++Dcet7YsLqjhiusMeySAFbRN1x4YiswTZTBNw6pL2fd/I2YMe3KIvqibQIF1RIvPD79okQbx8NP1UnLBfbY7tiPA7ErcTeuMnYHjcBV+P9sWf7eMg2DMD2/bOQtHUctm4aisAtnyJg80Cs2TQESlVXrIhyw5zVnvhu7f9v797DtSzrfIG/jRiIXlPaOOnVNHV5ANaZM4KieALxiBKCgaGCB8RjgmkeGkNwzEo5rPUe1wJBUbdl6N6VZSdPZTXMNJOHXdm402bKykvRqwEL+O4/UGbYS1H33orrXZ/Pdf3+eG/v9fAsF/zuZ93f932esVlaHZbv3TQgX7tpYErtDTmt2pSDu5oydHlzDu9qzrErhuT4VaMydeXoLKi05vMdTflErS2TugantKwpLz68dMsbKX5+X/LwkvzxK+fkX74yK/d/56o8+sSX89tvXJYnvnx6Hlo1Kf9SPiSP3zM3L9xzfh5afVIW3XZsHr7zlNy9YkIuqA3LsV2tueSWCfnSV07P1788PStun5S7q+Py/RVTsqo2MZ8tDc/1q45N5y1H55bVx2XFrcfn7va2/PstJybf+1z+/PVP5yfLj8/XVk/LzXdOT+edJ+drX56e2urj0l4ameLSplxTHpqLukamtPKw3HHLhMxeOTo3rjo8Z1eac2y1MTO7huaTtx6aS6pDcnV5SG65Y3q+3XlC/vDwiuS5X2bj/Z/L/7zv03ns25/Jc9/+bPLta7f8vdi8Oeuf+ed8+/ZzMr9zXK6oHZCLyy35RHlQZldbMr1zSGatGJO5Kw/NqZ0jcu3KI3PZLRNyzs2H5O9vHpfzOofl3M4Rmbfi4Hz61sPz+c5RWdx5UD6zcnwuWjUhdy0/Iv9SHJt7ygfl88vH5XOVYfn0irGZu2JUzq405sbq8Pzyqxflzw8uyb/cckpqK47IKbWWTKoMyozywBzU1ZLDOpszpzYst64+OVcvH5O5XSMy5+aDMm/1+Hzu5iPyhVtOyHmdB2RSrSUTOptzfGdrTqk05IKOgVlaOSw3rJiQy5cfmAu7RubizlGZXx6aJZWD0lE9KJ8pDc0TX5qdPPfLbN7wUv5wfzmPrj4tK7uOyazlB+aw5UNyUrUl84qNWVIaltryiVlSHptTOw/OjM4Dc355cKZWGjKz3JhLSy0ploZnTfmglMrDc3FHU2YXW/LJFUfmtFXjM69rbK6tjc7ZNx+SuSuPzZza6FxeHp6Hbv5Y8ocn8+Q3l+VzXcdk8vIxOaFzeE6qDc7kztZMrbXlk9WRmVcemnNKjZleGpiTKoPy2fKwLKqNytmVliwsNudTnQdkZq0tp1QacmGxMSdUm/OJ2ogsXnlylncdn6Xtw3J1e0OuWdaUu8tHplwZny9WxmdJbWJWd52Yn918Zl547L5k3b9n40NL8/vbz8szd12S+790Tqo3H5sltUMypzI4ny4Py0O3Ts0Nt07KtcW2XNPemEtKw3JOeXBOqTTnY5XmTK+05TPFYblpyYDcuHRQrisNzhXF5lxQbMhpldacWBuSE6pN+dyyhpQ7WnNFuSUXFQfmmvLgPPLf52T1nefl46XWnFhpytmlliwoj8zl5ZE5o9SQU8uNOavYnCuXNuaLiwfm3OLAzCwNzNziwJxZGpyzSy25uNiaBcUDsqw6IStWTM2ptVE5orM11dLIrG0/IHctG5ZrOlpzVrkly7qOyL0rTsw95SPzg85JeeE7N23p0xv/nCe+szr3VqblkTvm58/P/zpJ8sJP780/16bmnvZDs7w6IZ/vGJqPVVpyXLUllxSHZMnySfn76hE5uXNkDu0akk91NOX69tZcWRmTs7oOzQldB+TszrG5pDw208tDc0DXlk8HH1lryqxKcy6qHpBq8ZD8z9vn5t5bzsqnl7bkyqUNOa3UkMmVhswuNubMYnNOrrTkxGpLTi815brFH8n46qAc0NWYM4oD8rFKSw7tbMkxtdbMLrfl6GpLTq+MzBmVYTmy1pSjq41ZUBydVTeNyaeWDcrkSlNO6BySk6pDMqPcmk8Xh+drNx6af7xjYbL+hbz4rc/nidIRuevGAzKnOCITOodkXqkttyxpTm1pUy7taMyRtabMKDfm79obclq5IYfVGjOzNCgzSoNyeK0xVy4bkIVLB+asYnNOrg3LrK6DckKtLdOrbVlUPiCfLDbmsvbGnFtsyccrbTm7OjQd7a3519um54GvLsy5HUNzXKU5p5RaMq+9Oed2DMj55TG5dMXJqf23C/P8kz/c5vLh2d89m6ceuiNPfbMjX1s1PTeWx2TNylPy5eLBWdUxOu0rTsinOiekWDkx/70yNau7JuWrKyflivLwLOgYnB8vG5N/XXFGnvteR/Lcv2bzpk350Y8fyRdv7sxVS2flsmVjclqpMWO6mjOx1pqPV7a8cWFCtSmTyg05utqQo2rNmV1uzWGdzTmwqzlnlpozu7RlfMwrd0kY0dWYUyrNuaAyJNMqjflEaf8cWxmUaeWGzO9oydRKW/6uvTlf/kJzKl9szJVLP5rTS405ttqcQ2pNObTWklPLbbmgNDwzKkMytrMxh9cG5dRyYy4vj8kVpVGZWG3M2M6mjO1syrjOphxaa8jhtaaMr7Xk+FpLPlYelKNfmTOiqymH15ozudKQM4r75+Jl++b2L+ybH9wwMd/6H7dvuVXy+hfy/PdX5t++cmUeXjUz5a4j893lx+ahJSNz102tuafz2BTLE3Prson50pKJubY4Pjfddnoef/TuLdd1r9iw7tn86zeLubtyUi4qj8olpdG5uDg4U8oDMru4Xy5sb87s0vCcUG3NgZ3NOaHakvkdzblu6f45tbR/ppYbcnZxSC4rjcpJ1aE5utqYEyuNOb08OBe0t+asYnMmVwfn6K7hObk6NLOKzTmlPChTygNzfkdDPl5pzbTK4BxfbcvBXa05ozo615YOSUf7qNy8pC03doxMtXRoFpRG56JSW+4sHZqn7vpMXvzNlueT//yxtfnhFyfn5s+PyqVLxuTyZaMyqzQks0uDM6+jLRd3NOSijsZcUGzKnGJjZpYaMqnSkiNrLRnbueWuObOKzZlaHpSDOxsyodaS8zsG5rTiwBxXacyx1ZYcWmvI1NKATC8OyuG1hpxWHJDTivtlfvugfK1jRr52xzmZ2zU2p1aH5qKO1kwtN2ZqeWDO6xiY65a15tMdjbmqY0guKg7OlEpLxna25JRyWz7ZPjinF4fk8M7WHFUdlNnFgbl62dDMbx+e5UtH5Ff3XpufPFDJNe2tObvYmEvaG3LTTU35/E1jcmrHwbnipuOypnptXlr/cvLH5/KHe6/Pk7dclG+vnp9vLzs0X/9CQ770hY/m5hv3y9JlI3JacVCmlxpyfnlU5lRHZm5lWE4rt2VquTmzio0ZV9vSA2eWmzKr1JRPFltySqU1E2qt+VhlcK5uH5YrO4ZmWqU1h9WaM7vUkmuWDcl1S0Zn0bKDc1P78FzaPignVQblkFpjziq1ZlapJSdVmnNUtTmH1RpzUrkhF7Q3prR0SFYvOTDLbto/57cPyMfKjTm1NCAnVZpzRrk18zqac3SlLSNeufPEqK4t/y5mFpvSXpyeF1565fbDL/1uy3X9+i3Pxfzeo0+ntviiLLthRK67af+c1dGcU0pN+USpMXOLzTm13JJJleZMLzVk/rL9M6XcmGMrDTm81pjDOpszpTokI7ua0ra8KYfUGnNstTWnV8ZkRmV0Tq4MybyOtqyqHJlHbrsgP3/g9mx+5Zb6f9q4Kb/47Yv52aNrc2/XyVlYGZNzq8Pz8WpbxnQ1Z2RXcw7oasrBnU2ZVGnI5PLAnFAZmKOrg3JErSGH1BoyprMxYzsbc3qxIbM7mnNspSUH11oyudSWue3DMq20Zd4xlUGZUG3MGR0NqX5+nyz/wkdz6eIRuWLJx/O1b3x16/7Hr555Jv+wcn6+c9OBua39yKwqnZgFpXE5szw4C5YOzBdvGpQbb2zNqiVjcsvy6ZlfOiBnF5tzccegzC+25aplTbmkvSGnlxozq9iQ2R0Dc177gFy1tCGLlx2YUytDMq3SktNKzZlYbcu0clvOKA7O7OKQnN/Rmr8vjs7UyuAc0NWccbXGnFFsy3GV5hxaa8qsUnMWtQ/J1Usbc377wMwqNmZ6uTkXdLTmiqWDc17H4MwoteXYSmvGV9tyeG1wxnS25JBaU04oN+XcpW0pLj4os4ujc1ppbK4pH5tLy+OycOmBuX3psfnplxZm/Yv/x+/Q/9Ufn8sfH7sn//74vXnyH27Lo2vm5UfVY3JXdWLaOw7K3xcPzGe7Juby2tG5sjohl1cPzgWVkZlZbssJtSE5vNacw2oNubBjUBa0D86MckvG1xpzbrEhFxaHZmK1NcO6mnJYrSmXlg/ILV0T0l4ek2tLw/PJjoZMLzdlWnVw5nWNy3nlobmmMjqX1Q7KidWWfLJ9v5xZHJTTii35u2WDc1axLUfUmnNErTlnFpsys7R/ZhUbcklxSBYUR2R2sSXTK4NzRmVo5hTbMqXclLM7BuXGJS35h44pee5XW96I/tKj9+bpOy/PI6vn5J7alNxZOiJdxbFZ2HFwrm4fnIuLg3NxeXi+UBqbBdVxua48Nu0dI1NeNiSXlUfms5WD0t4+PEuXDMzS4pgsrI3PtZ1HpVIenzXt4/Ll4uG5uXpUSp3js6xyUFavOCEP3nFenv7KVXn+6wvznS/Py3fvujy/v+/G/OkH1S13V3v+V6/949nwp9z39a+ks+Py/N1Nk3Lh0jG5YGlbzlrWnE90NGZaqSGzO/bPqcWBmVRuyJHVxozpbMzhtcYcVW3IMZXGXL20MacVm/OxcnPmtw/Ld2+/Mk/984N55KvV3F48KTcvbs2ipU05v2NQzigOyIXt++fcjv1zenFAppUG5oTKoIyvNuTEyqAcX9lyt6DDa405sdKQo6oNGd3ZmMNeuRPRxOqgHNjZkKnlAZlSHpBJlQE5pbR/PlEalLOLzTm/ozUXd7Tkwo7mHF/Z8vfi6GpjTqo05MziwMztGJjTSg2ZWm7K7FJLLu0YnGvbh+eL7WPy7dXzsu7ZX+UP//5kKiumZX5pWM4otebkcnOOqTZk7CtvOt/SsxpyZG1QJlQH5ahqQyZVGrJwaWM+t7Q508pb7tRxw8qpr//vohcRANPbCYDhHeITwG+v+773pTzxv36wo08DAIDeYNPG/7wLCD3Hxj93/7m90c9x05t4nmtv+LtQT9/j9r6XTZveme+1nv5/9mBv9pnR77jNm7f0K+Ad967sCa/Ypmdt5zyfW/9c1r287h06q3c3ATC9nQAY3iGeAQwAAAAAAG8/++f0dgJgeIfMmzcvO+20U9at2/YdWAsXLkyhUMjTTz/9lo5nAQMAAAAAgO7sn9PbCYDhHfLII4+kUCjkhhtu2Dq2YcOG7Lfffhk1atRbPp4FDAAAAAAAurN/Tm8nAIZ30JQpU9KnT5/Mnz8/5XI5Y8aMSZ8+fXL//fe/5WNZwAAAAAAAoDv75/R2AmB4B61fvz7z5s3LXnvtlb59+2bEiBG59957/6+OZQEDAAAAAIDu7J/T2wmAoYeygAEAAAAAQHf2z+ntBMDQQ1nAAAAAAACgO/vn9HYCYOihLGAAAAAAANCd/XN6OwEw9FAWMAAAAAAA6M7+Ob2dABh6KAsYAAAAAAB0Z/+c3k4ADD2UBQwAAAAAALqzf05vJwCGHsoCBgAAAAAA3dk/p7cTAEMPZQEDAAAAAIDu7J/T2wmAoYeygAEAAAAAQHf2z+ntBMDQQ1nAAAAAAACgO/vn9HYCYOihLGAAAAAAANCd/XN6OwEw9FAWMAAAAAAA6M7+Ob2dABh6KAsYAAAAAAB0Z/+c3k4ADD2UBQwAAAAAALqzf05vJwCGHsoCBgAAAAAA3dk/p7cTAEMPZQEDAAAAAIDu7J/T2wmAoYeygAEAAAAAQHf2z+ntBMDQQ1nAAAAAAACgO/vn9HYCYOihLGAAAAAAANCd/XN6OwEw9FAWMAAAAAAA6M7+Ob2dABh6KAsYAAAAAAB0Z/+c3k4ADD2UBQwAAAAAALqzf05vJwCGHsoCBgAAAAAA3dk/p7cTAEMPZQEDAAAAAIDu7J/T2wmAoYeygAEAAAAAQHf2z+ntBMDQQ61duzaFQiFr1qzJo48+qpRSSimllFJKKaWUUkqpRx/NmjVrUigUsnbt2h29lQ87hAAYeqhXFzCllFJKKaWUUkoppZRSSnWvNWvW7OitfNghBMDQQz3//PNZs2ZN1q5du8PfTfVuqFcDcZ+IVkqp1y59Uimltl/6pFJKbb/0SaWUeuPSK989tXbt2qxZsybPP//8jt7Khx1CAAzUhUcf9UwHgO3RJwG2T58E2D59EuCN6ZXAu4UAGKgLLq4Atk+fBNg+fRJg+/RJgDemVwLvFgJgoC64uALYPn0SYPv0SYDt0ycB3pheCbxbCICBuuDiCmD79EmA7dMnAbZPnwR4Y3ol8G4hAAbqwrPPPpvPfOYzefbZZ3f0qQC8K+mTANunTwJsnz4J8Mb0SuDdQgAMAAAAAAAAUCcEwAAAAAAAAAB1QgAMAAAAAAAAUCcEwAAAAAAAAAB1QgAMAAAAAAAAUCcEwAAAAAAAAAB1QgAM9GgbNmzIpZdemr333jv9+vXLyJEj881vfnNHnxbA2+a73/1uCoXCa9YPfvCDbeY+/PDDOfDAA7PLLrvkgx/8YM4///y89NJL3Y6plwI92UsvvZSrr746EyZMyO67755CoZDly5e/5tzHH388EyZMyK677prdd989M2bMyO9+97tu8zZt2pTrr78+H/3oR9O3b9+0tLRk9erV/0/HBNhR3myfnDlz5mteYw4cOLDbXH0SqCc/+tGPMnfu3DQ2NqZ///758Ic/nClTpuRnP/tZt7muJ4GeQgAM9GjTpk1Lnz59Mm/evJTL5YwePTp9+vTJgw8+uKNPDeBt8WoAfMEFF2TVqlXb1O9///ut8/7pn/4p/fr1y5AhQ1IsFnPFFVekb9++Oeqoo7odUy8FerKnnnoqhUIhf/u3f5tx48a9brDxzDPP5K/+6q+y7777ZvHixVm4cGF23333tLW15eWXX95m7mWXXZZCoZAzzzwzlUolxxxzTAqFQm677bb/62MC7Chvtk/OnDkzffv27XaNec8993Sbq08C9WTy5MnZa6+9cv7556darWbBggX54Ac/mF133TU//elPt85zPQn0JAJgoMf64Q9/mEKhkBtuuGHr2Pr167Pvvvtm9OjRO/DMAN4+rwbAd95553bnTZw4MXvvvXfWrVu3daxaraZQKOQb3/jG1jG9FOjpNmzYkN/85jdJkh//+MevG2zMmTMnu+yyS371q19tHbvvvvtSKBRSLpe3jv3617/OzjvvnLlz524d27x5c8aOHZu/+Zu/ycaNG9/yMQF2pDfbJ2fOnJldd931DY+nTwL15uGHH+4Wtv785z9P3759M3369K1jrieBnkQADPRY8+fPz0477bRNuJEkixYtSqFQyNNPP72Dzgzg7fNfA+AXX3wxf/7zn7vNWbduXfr06ZP58+dvM/7yyy9nt912y6xZs7aO6aVAPdlesPHXf/3XmTJlSrfxAQMG5PDDD9/6ur29PYVCIY899tg281avXp1CobDN3RHe7DEB3i3eTAC8cePGbteG/5U+CfQWQ4cOzdChQ7e+dj0J9CQCYKDHOuKII9LQ0NBt/Fvf+lYKhcJr3qYKoKd7NQDebbfdUigUstNOO2XcuHH58Y9/vHXOQw89lEKhkDvuuKPb1x900EHb/AKrlwL15PWCjV//+tcpFAq5/vrru33NjBkzsscee2x9PXv27Oy6667ZvHnzNvOefPLJFAqFLFmy5C0fE+Dd4o0C4Pe85z3p379/CoVCdt9995x77rl56aWXtpmnTwK9webNm/OhD30o48ePT+J6Euh5BMBAj9XU1JTDDjus2/hjjz2WQqGQUqm0A84K4O318MMPZ/Lkyens7Mzdd9+d6667Lh/4wAfSr1+//OM//mOS5M4770yhUMgDDzzQ7eunTJmSvfbaa+trvRSoJ68XbLw6vnLlym5fM3/+/BQKhWzYsCFJcswxx2SfffbpNu+Pf/xjCoVCLrvssrd8TIB3i+0FwJdddlk+9alP5Y477shtt92WmTNnplAo5MADD9zmrjP6JNAbrFq1KoVCIZ2dnUlcTwI9jwAY6LH22WefTJw4sdv4L3/5yxQKhdx444074KwA3nm/+MUvsssuu2TChAlJkpUrV6ZQKOSHP/xht7mnnnpq3ve+9219rZcC9eT1go0HHnjgde+McNVVV6VQKOT5559Pkhx22GGveWeETZs2pVAo5MILL3zLxwR4t9heAPxaFi5cmEKhkNtuu23rmD4J1Lsnnngif/mXf5nRo0dvfV6v60mgpxEAAz2WT60B/Kdp06blve99bzZu3OgTwECv5RPAANv3VgPg//iP/8hf/MVfZNasWVvH9Emgnv3mN7/JPvvskw9/+MP5t3/7t63jrieBnkYADPRYnlsJ8J9e/eVw3bp1ngEM9Fr/v54B3L9/f89sA+rSWw2Ak2TPPffMiSeeuPW1PgnUqxdeeCGDBw/OHnvskccee2yb/+Z6EuhpBMBAjzVv3rzstNNOWbdu3Tbjr96i6umnn95BZwbwzps8eXL69euXTZs25YUXXkifPn0yf/78bea8/PLL2W233XLGGWdsHdNLgXqyvWBjzz33zJQpU7qNDxgwYJs7ISxbtiyFQqHbpt+tt97a7e4Kb/aYAO8WbzUAfvHFF/Oe97wnZ5111tYxfRKoR+vXr8/YsWPTv3//fP/733/NOa4ngZ5EAAz0WI888kgKhUJuuOGGrWMbNmzIfvvtl1GjRu3AMwN4+/zud7/rNvaTn/wkO++8c44//vitY0cddVT23nvvvPjii1vHarVaCoVCvv71r28d00uBerK9YOOcc87JLrvsss0bW16920GxWNw69swzz2TnnXfO3Llzt45t3rw5Y8eOzYc+9KGtz4F7K8cEeLd4vT65fv36ba4bX/XqXWbuuuuurWP6JFBvNm7cmOOPPz59+vTJV7/61ded53oS6EkEwECPNmXKlK2fciuXyxkzZkz69OmT+++/f0efGsDb4tBDD83RRx+da6+9NpVKJRdddFH69++f973vfXn88ce3zlu7dm369u2bIUOGpFgs5oorrki/fv0yfvz4bsfUS4GebunSpVmwYEHmzJmTQqGQk046KQsWLMiCBQvywgsvJEmefvrpfOADH8i+++6bJUuWZNGiRdl9993T0tLS7dlqrwYeZ511VqrVao455pgUCoXceuut28x7K8cE2JHeqE8+9dRTef/73585c+Zk8eLFWbx4cY4++ugUCoUcddRR2bRp0zbH0yeBenLhhRemUCjkuOOOy6pVq7rVq1xPAj2JABjo0davX5958+Zlr732St++fTNixIjce++9O/q0AN42ixcvzsiRI7PHHnukT58+2XvvvTNjxoz84he/6Db3wQcfzJgxY9KvX7/sueeemTt37mt+skMvBXq6j3zkIykUCq9ZTz311NZ5jz76aMaPH5/+/fvn/e9/f6ZPn57f/va33Y63adOmLFq0KB/5yEfy3ve+N01NTbnlllte889+s8cE2JHeqE8+//zzmTFjRvbbb7/079+YRXnsAAADdUlEQVQ/ffv2TVNTUxYtWpQ//elP3Y6nTwL15JBDDnndHlkobBuhuJ4EegoBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1AkBMAAAAAAAAECdEAADAAAAAAAA1In/DawlYiMgLVLmAAAAAElFTkSuQmCC\" width=\"1600\">"
|
|
|
6415
|
],
|
|
|
6416
|
"text/plain": [
|
|
|
6417
|
"<IPython.core.display.HTML object>"
|
|
|
6418
|
]
|
|
|
6419
|
},
|
|
|
6420
|
"metadata": {},
|
|
|
6421
|
"output_type": "display_data"
|
|
|
6422
|
},
|
|
|
6423
|
{
|
|
|
6424
|
"data": {
|
|
|
6425
|
"application/javascript": [
|
|
|
6426
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
6427
|
"window.mpl = {};\n",
|
|
|
6428
|
"\n",
|
|
|
6429
|
"\n",
|
|
|
6430
|
"mpl.get_websocket_type = function() {\n",
|
|
|
6431
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
6432
|
" return WebSocket;\n",
|
|
|
6433
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
6434
|
" return MozWebSocket;\n",
|
|
|
6435
|
" } else {\n",
|
|
|
6436
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
6437
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
6438
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
6439
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
6440
|
" };\n",
|
|
|
6441
|
"}\n",
|
|
|
6442
|
"\n",
|
|
|
6443
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
6444
|
" this.id = figure_id;\n",
|
|
|
6445
|
"\n",
|
|
|
6446
|
" this.ws = websocket;\n",
|
|
|
6447
|
"\n",
|
|
|
6448
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
6449
|
"\n",
|
|
|
6450
|
" if (!this.supports_binary) {\n",
|
|
|
6451
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
6452
|
" if (warnings) {\n",
|
|
|
6453
|
" warnings.style.display = 'block';\n",
|
|
|
6454
|
" warnings.textContent = (\n",
|
|
|
6455
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
6456
|
" \"Performance may be slow.\");\n",
|
|
|
6457
|
" }\n",
|
|
|
6458
|
" }\n",
|
|
|
6459
|
"\n",
|
|
|
6460
|
" this.imageObj = new Image();\n",
|
|
|
6461
|
"\n",
|
|
|
6462
|
" this.context = undefined;\n",
|
|
|
6463
|
" this.message = undefined;\n",
|
|
|
6464
|
" this.canvas = undefined;\n",
|
|
|
6465
|
" this.rubberband_canvas = undefined;\n",
|
|
|
6466
|
" this.rubberband_context = undefined;\n",
|
|
|
6467
|
" this.format_dropdown = undefined;\n",
|
|
|
6468
|
"\n",
|
|
|
6469
|
" this.image_mode = 'full';\n",
|
|
|
6470
|
"\n",
|
|
|
6471
|
" this.root = $('<div/>');\n",
|
|
|
6472
|
" this._root_extra_style(this.root)\n",
|
|
|
6473
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
6474
|
"\n",
|
|
|
6475
|
" $(parent_element).append(this.root);\n",
|
|
|
6476
|
"\n",
|
|
|
6477
|
" this._init_header(this);\n",
|
|
|
6478
|
" this._init_canvas(this);\n",
|
|
|
6479
|
" this._init_toolbar(this);\n",
|
|
|
6480
|
"\n",
|
|
|
6481
|
" var fig = this;\n",
|
|
|
6482
|
"\n",
|
|
|
6483
|
" this.waiting = false;\n",
|
|
|
6484
|
"\n",
|
|
|
6485
|
" this.ws.onopen = function () {\n",
|
|
|
6486
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
6487
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
6488
|
" if (mpl.ratio != 1) {\n",
|
|
|
6489
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
6490
|
" }\n",
|
|
|
6491
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
6492
|
" }\n",
|
|
|
6493
|
"\n",
|
|
|
6494
|
" this.imageObj.onload = function() {\n",
|
|
|
6495
|
" if (fig.image_mode == 'full') {\n",
|
|
|
6496
|
" // Full images could contain transparency (where diff images\n",
|
|
|
6497
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
6498
|
" // there is no ghosting.\n",
|
|
|
6499
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
6500
|
" }\n",
|
|
|
6501
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
6502
|
" };\n",
|
|
|
6503
|
"\n",
|
|
|
6504
|
" this.imageObj.onunload = function() {\n",
|
|
|
6505
|
" fig.ws.close();\n",
|
|
|
6506
|
" }\n",
|
|
|
6507
|
"\n",
|
|
|
6508
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
6509
|
"\n",
|
|
|
6510
|
" this.ondownload = ondownload;\n",
|
|
|
6511
|
"}\n",
|
|
|
6512
|
"\n",
|
|
|
6513
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
6514
|
" var titlebar = $(\n",
|
|
|
6515
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
6516
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
6517
|
" var titletext = $(\n",
|
|
|
6518
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
6519
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
6520
|
" titlebar.append(titletext)\n",
|
|
|
6521
|
" this.root.append(titlebar);\n",
|
|
|
6522
|
" this.header = titletext[0];\n",
|
|
|
6523
|
"}\n",
|
|
|
6524
|
"\n",
|
|
|
6525
|
"\n",
|
|
|
6526
|
"\n",
|
|
|
6527
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
6528
|
"\n",
|
|
|
6529
|
"}\n",
|
|
|
6530
|
"\n",
|
|
|
6531
|
"\n",
|
|
|
6532
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
6533
|
"\n",
|
|
|
6534
|
"}\n",
|
|
|
6535
|
"\n",
|
|
|
6536
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
6537
|
" var fig = this;\n",
|
|
|
6538
|
"\n",
|
|
|
6539
|
" var canvas_div = $('<div/>');\n",
|
|
|
6540
|
"\n",
|
|
|
6541
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
6542
|
"\n",
|
|
|
6543
|
" function canvas_keyboard_event(event) {\n",
|
|
|
6544
|
" return fig.key_event(event, event['data']);\n",
|
|
|
6545
|
" }\n",
|
|
|
6546
|
"\n",
|
|
|
6547
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
6548
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
6549
|
" this.canvas_div = canvas_div\n",
|
|
|
6550
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
6551
|
" this.root.append(canvas_div);\n",
|
|
|
6552
|
"\n",
|
|
|
6553
|
" var canvas = $('<canvas/>');\n",
|
|
|
6554
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
6555
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
6556
|
"\n",
|
|
|
6557
|
" this.canvas = canvas[0];\n",
|
|
|
6558
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
6559
|
"\n",
|
|
|
6560
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
6561
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
6562
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
6563
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
6564
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
6565
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
6566
|
"\n",
|
|
|
6567
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
6568
|
"\n",
|
|
|
6569
|
" var rubberband = $('<canvas/>');\n",
|
|
|
6570
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
6571
|
"\n",
|
|
|
6572
|
" var pass_mouse_events = true;\n",
|
|
|
6573
|
"\n",
|
|
|
6574
|
" canvas_div.resizable({\n",
|
|
|
6575
|
" start: function(event, ui) {\n",
|
|
|
6576
|
" pass_mouse_events = false;\n",
|
|
|
6577
|
" },\n",
|
|
|
6578
|
" resize: function(event, ui) {\n",
|
|
|
6579
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
6580
|
" },\n",
|
|
|
6581
|
" stop: function(event, ui) {\n",
|
|
|
6582
|
" pass_mouse_events = true;\n",
|
|
|
6583
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
6584
|
" },\n",
|
|
|
6585
|
" });\n",
|
|
|
6586
|
"\n",
|
|
|
6587
|
" function mouse_event_fn(event) {\n",
|
|
|
6588
|
" if (pass_mouse_events)\n",
|
|
|
6589
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
6590
|
" }\n",
|
|
|
6591
|
"\n",
|
|
|
6592
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
6593
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
6594
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
6595
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
6596
|
"\n",
|
|
|
6597
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
6598
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
6599
|
"\n",
|
|
|
6600
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
6601
|
" event = event.originalEvent;\n",
|
|
|
6602
|
" event['data'] = 'scroll'\n",
|
|
|
6603
|
" if (event.deltaY < 0) {\n",
|
|
|
6604
|
" event.step = 1;\n",
|
|
|
6605
|
" } else {\n",
|
|
|
6606
|
" event.step = -1;\n",
|
|
|
6607
|
" }\n",
|
|
|
6608
|
" mouse_event_fn(event);\n",
|
|
|
6609
|
" });\n",
|
|
|
6610
|
"\n",
|
|
|
6611
|
" canvas_div.append(canvas);\n",
|
|
|
6612
|
" canvas_div.append(rubberband);\n",
|
|
|
6613
|
"\n",
|
|
|
6614
|
" this.rubberband = rubberband;\n",
|
|
|
6615
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
6616
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
6617
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
6618
|
"\n",
|
|
|
6619
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
6620
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
6621
|
" // canvas in synch.\n",
|
|
|
6622
|
" canvas_div.css('width', width)\n",
|
|
|
6623
|
" canvas_div.css('height', height)\n",
|
|
|
6624
|
"\n",
|
|
|
6625
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
6626
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
6627
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
6628
|
"\n",
|
|
|
6629
|
" rubberband.attr('width', width);\n",
|
|
|
6630
|
" rubberband.attr('height', height);\n",
|
|
|
6631
|
" }\n",
|
|
|
6632
|
"\n",
|
|
|
6633
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
6634
|
" // upon first draw.\n",
|
|
|
6635
|
" this._resize_canvas(600, 600);\n",
|
|
|
6636
|
"\n",
|
|
|
6637
|
" // Disable right mouse context menu.\n",
|
|
|
6638
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
6639
|
" return false;\n",
|
|
|
6640
|
" });\n",
|
|
|
6641
|
"\n",
|
|
|
6642
|
" function set_focus () {\n",
|
|
|
6643
|
" canvas.focus();\n",
|
|
|
6644
|
" canvas_div.focus();\n",
|
|
|
6645
|
" }\n",
|
|
|
6646
|
"\n",
|
|
|
6647
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
6648
|
"}\n",
|
|
|
6649
|
"\n",
|
|
|
6650
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
6651
|
" var fig = this;\n",
|
|
|
6652
|
"\n",
|
|
|
6653
|
" var nav_element = $('<div/>')\n",
|
|
|
6654
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
6655
|
" this.root.append(nav_element);\n",
|
|
|
6656
|
"\n",
|
|
|
6657
|
" // Define a callback function for later on.\n",
|
|
|
6658
|
" function toolbar_event(event) {\n",
|
|
|
6659
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
6660
|
" }\n",
|
|
|
6661
|
" function toolbar_mouse_event(event) {\n",
|
|
|
6662
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
6663
|
" }\n",
|
|
|
6664
|
"\n",
|
|
|
6665
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
6666
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
6667
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
6668
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
6669
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
6670
|
"\n",
|
|
|
6671
|
" if (!name) {\n",
|
|
|
6672
|
" // put a spacer in here.\n",
|
|
|
6673
|
" continue;\n",
|
|
|
6674
|
" }\n",
|
|
|
6675
|
" var button = $('<button/>');\n",
|
|
|
6676
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
6677
|
" 'ui-button-icon-only');\n",
|
|
|
6678
|
" button.attr('role', 'button');\n",
|
|
|
6679
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
6680
|
" button.click(method_name, toolbar_event);\n",
|
|
|
6681
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
6682
|
"\n",
|
|
|
6683
|
" var icon_img = $('<span/>');\n",
|
|
|
6684
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
6685
|
" icon_img.addClass(image);\n",
|
|
|
6686
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
6687
|
"\n",
|
|
|
6688
|
" var tooltip_span = $('<span/>');\n",
|
|
|
6689
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
6690
|
" tooltip_span.html(tooltip);\n",
|
|
|
6691
|
"\n",
|
|
|
6692
|
" button.append(icon_img);\n",
|
|
|
6693
|
" button.append(tooltip_span);\n",
|
|
|
6694
|
"\n",
|
|
|
6695
|
" nav_element.append(button);\n",
|
|
|
6696
|
" }\n",
|
|
|
6697
|
"\n",
|
|
|
6698
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
6699
|
"\n",
|
|
|
6700
|
" var fmt_picker = $('<select/>');\n",
|
|
|
6701
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
6702
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
6703
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
6704
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
6705
|
"\n",
|
|
|
6706
|
" for (var ind in mpl.extensions) {\n",
|
|
|
6707
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
6708
|
" var option = $(\n",
|
|
|
6709
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
6710
|
" fmt_picker.append(option)\n",
|
|
|
6711
|
" }\n",
|
|
|
6712
|
"\n",
|
|
|
6713
|
" // Add hover states to the ui-buttons\n",
|
|
|
6714
|
" $( \".ui-button\" ).hover(\n",
|
|
|
6715
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
6716
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
6717
|
" );\n",
|
|
|
6718
|
"\n",
|
|
|
6719
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
6720
|
" nav_element.append(status_bar);\n",
|
|
|
6721
|
" this.message = status_bar[0];\n",
|
|
|
6722
|
"}\n",
|
|
|
6723
|
"\n",
|
|
|
6724
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
6725
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
6726
|
" // which will in turn request a refresh of the image.\n",
|
|
|
6727
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
6728
|
"}\n",
|
|
|
6729
|
"\n",
|
|
|
6730
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
6731
|
" properties['type'] = type;\n",
|
|
|
6732
|
" properties['figure_id'] = this.id;\n",
|
|
|
6733
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
6734
|
"}\n",
|
|
|
6735
|
"\n",
|
|
|
6736
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
6737
|
" if (!this.waiting) {\n",
|
|
|
6738
|
" this.waiting = true;\n",
|
|
|
6739
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
6740
|
" }\n",
|
|
|
6741
|
"}\n",
|
|
|
6742
|
"\n",
|
|
|
6743
|
"\n",
|
|
|
6744
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
6745
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
6746
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
6747
|
" fig.ondownload(fig, format);\n",
|
|
|
6748
|
"}\n",
|
|
|
6749
|
"\n",
|
|
|
6750
|
"\n",
|
|
|
6751
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
6752
|
" var size = msg['size'];\n",
|
|
|
6753
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
6754
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
6755
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
6756
|
" };\n",
|
|
|
6757
|
"}\n",
|
|
|
6758
|
"\n",
|
|
|
6759
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
6760
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
6761
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
6762
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
6763
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
6764
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
6765
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
6766
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
6767
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
6768
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
6769
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
6770
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
6771
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
6772
|
"\n",
|
|
|
6773
|
" fig.rubberband_context.clearRect(\n",
|
|
|
6774
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
6775
|
"\n",
|
|
|
6776
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
6777
|
"}\n",
|
|
|
6778
|
"\n",
|
|
|
6779
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
6780
|
" // Updates the figure title.\n",
|
|
|
6781
|
" fig.header.textContent = msg['label'];\n",
|
|
|
6782
|
"}\n",
|
|
|
6783
|
"\n",
|
|
|
6784
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
6785
|
" var cursor = msg['cursor'];\n",
|
|
|
6786
|
" switch(cursor)\n",
|
|
|
6787
|
" {\n",
|
|
|
6788
|
" case 0:\n",
|
|
|
6789
|
" cursor = 'pointer';\n",
|
|
|
6790
|
" break;\n",
|
|
|
6791
|
" case 1:\n",
|
|
|
6792
|
" cursor = 'default';\n",
|
|
|
6793
|
" break;\n",
|
|
|
6794
|
" case 2:\n",
|
|
|
6795
|
" cursor = 'crosshair';\n",
|
|
|
6796
|
" break;\n",
|
|
|
6797
|
" case 3:\n",
|
|
|
6798
|
" cursor = 'move';\n",
|
|
|
6799
|
" break;\n",
|
|
|
6800
|
" }\n",
|
|
|
6801
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
6802
|
"}\n",
|
|
|
6803
|
"\n",
|
|
|
6804
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
6805
|
" fig.message.textContent = msg['message'];\n",
|
|
|
6806
|
"}\n",
|
|
|
6807
|
"\n",
|
|
|
6808
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
6809
|
" // Request the server to send over a new figure.\n",
|
|
|
6810
|
" fig.send_draw_message();\n",
|
|
|
6811
|
"}\n",
|
|
|
6812
|
"\n",
|
|
|
6813
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
6814
|
" fig.image_mode = msg['mode'];\n",
|
|
|
6815
|
"}\n",
|
|
|
6816
|
"\n",
|
|
|
6817
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
6818
|
" // Called whenever the canvas gets updated.\n",
|
|
|
6819
|
" this.send_message(\"ack\", {});\n",
|
|
|
6820
|
"}\n",
|
|
|
6821
|
"\n",
|
|
|
6822
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
6823
|
"// Called in the figure constructor.\n",
|
|
|
6824
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
6825
|
" return function socket_on_message(evt) {\n",
|
|
|
6826
|
" if (evt.data instanceof Blob) {\n",
|
|
|
6827
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
6828
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
6829
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
6830
|
" * to be part of the websocket stream */\n",
|
|
|
6831
|
" evt.data.type = \"image/png\";\n",
|
|
|
6832
|
"\n",
|
|
|
6833
|
" /* Free the memory for the previous frames */\n",
|
|
|
6834
|
" if (fig.imageObj.src) {\n",
|
|
|
6835
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
6836
|
" fig.imageObj.src);\n",
|
|
|
6837
|
" }\n",
|
|
|
6838
|
"\n",
|
|
|
6839
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
6840
|
" evt.data);\n",
|
|
|
6841
|
" fig.updated_canvas_event();\n",
|
|
|
6842
|
" fig.waiting = false;\n",
|
|
|
6843
|
" return;\n",
|
|
|
6844
|
" }\n",
|
|
|
6845
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
6846
|
" fig.imageObj.src = evt.data;\n",
|
|
|
6847
|
" fig.updated_canvas_event();\n",
|
|
|
6848
|
" fig.waiting = false;\n",
|
|
|
6849
|
" return;\n",
|
|
|
6850
|
" }\n",
|
|
|
6851
|
"\n",
|
|
|
6852
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
6853
|
" var msg_type = msg['type'];\n",
|
|
|
6854
|
"\n",
|
|
|
6855
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
6856
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
6857
|
" try {\n",
|
|
|
6858
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
6859
|
" } catch (e) {\n",
|
|
|
6860
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
6861
|
" return;\n",
|
|
|
6862
|
" }\n",
|
|
|
6863
|
"\n",
|
|
|
6864
|
" if (callback) {\n",
|
|
|
6865
|
" try {\n",
|
|
|
6866
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
6867
|
" callback(fig, msg);\n",
|
|
|
6868
|
" } catch (e) {\n",
|
|
|
6869
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
6870
|
" }\n",
|
|
|
6871
|
" }\n",
|
|
|
6872
|
" };\n",
|
|
|
6873
|
"}\n",
|
|
|
6874
|
"\n",
|
|
|
6875
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
6876
|
"mpl.findpos = function(e) {\n",
|
|
|
6877
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
6878
|
" var targ;\n",
|
|
|
6879
|
" if (!e)\n",
|
|
|
6880
|
" e = window.event;\n",
|
|
|
6881
|
" if (e.target)\n",
|
|
|
6882
|
" targ = e.target;\n",
|
|
|
6883
|
" else if (e.srcElement)\n",
|
|
|
6884
|
" targ = e.srcElement;\n",
|
|
|
6885
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
6886
|
" targ = targ.parentNode;\n",
|
|
|
6887
|
"\n",
|
|
|
6888
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
6889
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
6890
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
6891
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
6892
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
6893
|
"\n",
|
|
|
6894
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
6895
|
"};\n",
|
|
|
6896
|
"\n",
|
|
|
6897
|
"/*\n",
|
|
|
6898
|
" * return a copy of an object with only non-object keys\n",
|
|
|
6899
|
" * we need this to avoid circular references\n",
|
|
|
6900
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
6901
|
" */\n",
|
|
|
6902
|
"function simpleKeys (original) {\n",
|
|
|
6903
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
6904
|
" if (typeof original[key] !== 'object')\n",
|
|
|
6905
|
" obj[key] = original[key]\n",
|
|
|
6906
|
" return obj;\n",
|
|
|
6907
|
" }, {});\n",
|
|
|
6908
|
"}\n",
|
|
|
6909
|
"\n",
|
|
|
6910
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
6911
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
6912
|
"\n",
|
|
|
6913
|
" if (name === 'button_press')\n",
|
|
|
6914
|
" {\n",
|
|
|
6915
|
" this.canvas.focus();\n",
|
|
|
6916
|
" this.canvas_div.focus();\n",
|
|
|
6917
|
" }\n",
|
|
|
6918
|
"\n",
|
|
|
6919
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
6920
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
6921
|
"\n",
|
|
|
6922
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
6923
|
" step: event.step,\n",
|
|
|
6924
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
6925
|
"\n",
|
|
|
6926
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
6927
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
6928
|
" * to control all of the cursor setting manually through the\n",
|
|
|
6929
|
" * 'cursor' event from matplotlib */\n",
|
|
|
6930
|
" event.preventDefault();\n",
|
|
|
6931
|
" return false;\n",
|
|
|
6932
|
"}\n",
|
|
|
6933
|
"\n",
|
|
|
6934
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
6935
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
6936
|
"}\n",
|
|
|
6937
|
"\n",
|
|
|
6938
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
6939
|
"\n",
|
|
|
6940
|
" // Prevent repeat events\n",
|
|
|
6941
|
" if (name == 'key_press')\n",
|
|
|
6942
|
" {\n",
|
|
|
6943
|
" if (event.which === this._key)\n",
|
|
|
6944
|
" return;\n",
|
|
|
6945
|
" else\n",
|
|
|
6946
|
" this._key = event.which;\n",
|
|
|
6947
|
" }\n",
|
|
|
6948
|
" if (name == 'key_release')\n",
|
|
|
6949
|
" this._key = null;\n",
|
|
|
6950
|
"\n",
|
|
|
6951
|
" var value = '';\n",
|
|
|
6952
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
6953
|
" value += \"ctrl+\";\n",
|
|
|
6954
|
" if (event.altKey && event.which != 18)\n",
|
|
|
6955
|
" value += \"alt+\";\n",
|
|
|
6956
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
6957
|
" value += \"shift+\";\n",
|
|
|
6958
|
"\n",
|
|
|
6959
|
" value += 'k';\n",
|
|
|
6960
|
" value += event.which.toString();\n",
|
|
|
6961
|
"\n",
|
|
|
6962
|
" this._key_event_extra(event, name);\n",
|
|
|
6963
|
"\n",
|
|
|
6964
|
" this.send_message(name, {key: value,\n",
|
|
|
6965
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
6966
|
" return false;\n",
|
|
|
6967
|
"}\n",
|
|
|
6968
|
"\n",
|
|
|
6969
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
6970
|
" if (name == 'download') {\n",
|
|
|
6971
|
" this.handle_save(this, null);\n",
|
|
|
6972
|
" } else {\n",
|
|
|
6973
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
6974
|
" }\n",
|
|
|
6975
|
"};\n",
|
|
|
6976
|
"\n",
|
|
|
6977
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
6978
|
" this.message.textContent = tooltip;\n",
|
|
|
6979
|
"};\n",
|
|
|
6980
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
6981
|
"\n",
|
|
|
6982
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
6983
|
"\n",
|
|
|
6984
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
6985
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
6986
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
6987
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
6988
|
" var ws = {};\n",
|
|
|
6989
|
"\n",
|
|
|
6990
|
" ws.close = function() {\n",
|
|
|
6991
|
" comm.close()\n",
|
|
|
6992
|
" };\n",
|
|
|
6993
|
" ws.send = function(m) {\n",
|
|
|
6994
|
" //console.log('sending', m);\n",
|
|
|
6995
|
" comm.send(m);\n",
|
|
|
6996
|
" };\n",
|
|
|
6997
|
" // Register the callback with on_msg.\n",
|
|
|
6998
|
" comm.on_msg(function(msg) {\n",
|
|
|
6999
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
7000
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
7001
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
7002
|
" });\n",
|
|
|
7003
|
" return ws;\n",
|
|
|
7004
|
"}\n",
|
|
|
7005
|
"\n",
|
|
|
7006
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
7007
|
" // This is the function which gets called when the mpl process\n",
|
|
|
7008
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
7009
|
"\n",
|
|
|
7010
|
" var id = msg.content.data.id;\n",
|
|
|
7011
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
7012
|
" // socket was opened in Python.\n",
|
|
|
7013
|
" var element = $(\"#\" + id);\n",
|
|
|
7014
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
7015
|
"\n",
|
|
|
7016
|
" function ondownload(figure, format) {\n",
|
|
|
7017
|
" window.open(figure.imageObj.src);\n",
|
|
|
7018
|
" }\n",
|
|
|
7019
|
"\n",
|
|
|
7020
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
7021
|
" ondownload,\n",
|
|
|
7022
|
" element.get(0));\n",
|
|
|
7023
|
"\n",
|
|
|
7024
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
7025
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
7026
|
" ws_proxy.onopen();\n",
|
|
|
7027
|
"\n",
|
|
|
7028
|
" fig.parent_element = element.get(0);\n",
|
|
|
7029
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
7030
|
" if (!fig.cell_info) {\n",
|
|
|
7031
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
7032
|
" return;\n",
|
|
|
7033
|
" }\n",
|
|
|
7034
|
"\n",
|
|
|
7035
|
" var output_index = fig.cell_info[2]\n",
|
|
|
7036
|
" var cell = fig.cell_info[0];\n",
|
|
|
7037
|
"\n",
|
|
|
7038
|
"};\n",
|
|
|
7039
|
"\n",
|
|
|
7040
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
7041
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
7042
|
" fig.root.unbind('remove')\n",
|
|
|
7043
|
"\n",
|
|
|
7044
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
7045
|
" fig.push_to_output();\n",
|
|
|
7046
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
7047
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
7048
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
7049
|
" IPython.keyboard_manager.enable()\n",
|
|
|
7050
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
7051
|
" fig.close_ws(fig, msg);\n",
|
|
|
7052
|
"}\n",
|
|
|
7053
|
"\n",
|
|
|
7054
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
7055
|
" fig.send_message('closing', msg);\n",
|
|
|
7056
|
" // fig.ws.close()\n",
|
|
|
7057
|
"}\n",
|
|
|
7058
|
"\n",
|
|
|
7059
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
7060
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
7061
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
7062
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
7063
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
7064
|
"}\n",
|
|
|
7065
|
"\n",
|
|
|
7066
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
7067
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
7068
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
7069
|
" this.send_message(\"ack\", {});\n",
|
|
|
7070
|
" var fig = this;\n",
|
|
|
7071
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
7072
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
7073
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
7074
|
"}\n",
|
|
|
7075
|
"\n",
|
|
|
7076
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
7077
|
" var fig = this;\n",
|
|
|
7078
|
"\n",
|
|
|
7079
|
" var nav_element = $('<div/>')\n",
|
|
|
7080
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
7081
|
" this.root.append(nav_element);\n",
|
|
|
7082
|
"\n",
|
|
|
7083
|
" // Define a callback function for later on.\n",
|
|
|
7084
|
" function toolbar_event(event) {\n",
|
|
|
7085
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
7086
|
" }\n",
|
|
|
7087
|
" function toolbar_mouse_event(event) {\n",
|
|
|
7088
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
7089
|
" }\n",
|
|
|
7090
|
"\n",
|
|
|
7091
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
7092
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
7093
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
7094
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
7095
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
7096
|
"\n",
|
|
|
7097
|
" if (!name) { continue; };\n",
|
|
|
7098
|
"\n",
|
|
|
7099
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
7100
|
" button.click(method_name, toolbar_event);\n",
|
|
|
7101
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
7102
|
" nav_element.append(button);\n",
|
|
|
7103
|
" }\n",
|
|
|
7104
|
"\n",
|
|
|
7105
|
" // Add the status bar.\n",
|
|
|
7106
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
7107
|
" nav_element.append(status_bar);\n",
|
|
|
7108
|
" this.message = status_bar[0];\n",
|
|
|
7109
|
"\n",
|
|
|
7110
|
" // Add the close button to the window.\n",
|
|
|
7111
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
7112
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
7113
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
7114
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
7115
|
" buttongrp.append(button);\n",
|
|
|
7116
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
7117
|
" titlebar.prepend(buttongrp);\n",
|
|
|
7118
|
"}\n",
|
|
|
7119
|
"\n",
|
|
|
7120
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
7121
|
" var fig = this\n",
|
|
|
7122
|
" el.on(\"remove\", function(){\n",
|
|
|
7123
|
"\tfig.close_ws(fig, {});\n",
|
|
|
7124
|
" });\n",
|
|
|
7125
|
"}\n",
|
|
|
7126
|
"\n",
|
|
|
7127
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
7128
|
" // this is important to make the div 'focusable\n",
|
|
|
7129
|
" el.attr('tabindex', 0)\n",
|
|
|
7130
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
7131
|
" // off when our div gets focus\n",
|
|
|
7132
|
"\n",
|
|
|
7133
|
" // location in version 3\n",
|
|
|
7134
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
7135
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
7136
|
" }\n",
|
|
|
7137
|
" else {\n",
|
|
|
7138
|
" // location in version 2\n",
|
|
|
7139
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
7140
|
" }\n",
|
|
|
7141
|
"\n",
|
|
|
7142
|
"}\n",
|
|
|
7143
|
"\n",
|
|
|
7144
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
7145
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
7146
|
" if (!manager)\n",
|
|
|
7147
|
" manager = IPython.keyboard_manager;\n",
|
|
|
7148
|
"\n",
|
|
|
7149
|
" // Check for shift+enter\n",
|
|
|
7150
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
7151
|
" this.canvas_div.blur();\n",
|
|
|
7152
|
" event.shiftKey = false;\n",
|
|
|
7153
|
" // Send a \"J\" for go to next cell\n",
|
|
|
7154
|
" event.which = 74;\n",
|
|
|
7155
|
" event.keyCode = 74;\n",
|
|
|
7156
|
" manager.command_mode();\n",
|
|
|
7157
|
" manager.handle_keydown(event);\n",
|
|
|
7158
|
" }\n",
|
|
|
7159
|
"}\n",
|
|
|
7160
|
"\n",
|
|
|
7161
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
7162
|
" fig.ondownload(fig, null);\n",
|
|
|
7163
|
"}\n",
|
|
|
7164
|
"\n",
|
|
|
7165
|
"\n",
|
|
|
7166
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
7167
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
7168
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
7169
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
7170
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
7171
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
7172
|
" var ncells = cells.length;\n",
|
|
|
7173
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
7174
|
" var cell = cells[i];\n",
|
|
|
7175
|
" if (cell.cell_type === 'code'){\n",
|
|
|
7176
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
7177
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
7178
|
" if (data.data) {\n",
|
|
|
7179
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
7180
|
" data = data.data;\n",
|
|
|
7181
|
" }\n",
|
|
|
7182
|
" if (data['text/html'] == html_output) {\n",
|
|
|
7183
|
" return [cell, data, j];\n",
|
|
|
7184
|
" }\n",
|
|
|
7185
|
" }\n",
|
|
|
7186
|
" }\n",
|
|
|
7187
|
" }\n",
|
|
|
7188
|
"}\n",
|
|
|
7189
|
"\n",
|
|
|
7190
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
7191
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
7192
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
7193
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
7194
|
"}\n"
|
|
|
7195
|
],
|
|
|
7196
|
"text/plain": [
|
|
|
7197
|
"<IPython.core.display.Javascript object>"
|
|
|
7198
|
]
|
|
|
7199
|
},
|
|
|
7200
|
"metadata": {},
|
|
|
7201
|
"output_type": "display_data"
|
|
|
7202
|
},
|
|
|
7203
|
{
|
|
|
7204
|
"data": {
|
|
|
7205
|
"text/html": [
|
|
|
7206
|
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAPACAYAAADUtWS5AAAgAElEQVR4nOzde5jV9X3g8Z9UQKC1oqL1MT6xGi8p8VJNtpt1WQ1J1A25bmK2FSq28YYkIdldEza7CRZXV2PMKtUYtYmGAdHEC0pEZfCG9xAbm4xjUEQEMQhRxEuUy8xn/2g5mTMDh592Tn/zPd/X63m+f3DyO3O+wz+fJ5+3wxQBAAAAAAAAQEsoqr4AAAAAAAAAAP1DAAYAAAAAAABoEQIwAAAAAAAAQIsQgAEAAAAAAABahAAMAAAAAAAA0CIEYAAAAAAAAIAWIQADAAAAAAAAtAgBGAAAAAAAAKBFCMAAAAAAAAAALUIABgAAAAAAAGgRAjAAAAAAAABAixCAAQAAAAAAAFqEAAwAAAAAAADQIgRgAAAAAAAAgBYhAAMAAAAAAAC0CAEYAAAAAAAAoEUIwAAAAAAAAAAtQgAGAAAAAAAAaBECMAAAAAAAAECLEIABAAAAAAAAWoQADAAAAAAAANAiBGAAAAAAAACAFiEAAwAAAAAAALQIARgAAAAAAACgRQjAAAAAAAAAAC1CAAYAAAAAAABoEQIwAAAAAAAAQIsQgAEAAAAAAABahAAMAAAAAAAA0CIEYAAAAAAAAIAWIQADAAAAAAAAtAgBGAAAAAAAAKBFCMAAAAAAAAAALUIABgAAAAAAAGgRAjAAAAAAAABAixCAAQAAAAAAAFqEAAwAAAAAAADQIgRgAAAAAAAAgBYhAAMAAAAAAAC0CAEYAAAAAAAAoEUIwAAAAAAAAAAtQgAGAAAAAAAAaBECMAAAAAAAAECLEIABAAAAAAAAWoQADAAAAAAAANAiBGAAAAAAAACAFiEAAwAAAAAAALQIARgAAAAAAACgRQjAAAAAAAAAAC1CAAYAAAAAAABoEQIwAAAAAAAAQIsQgAEAAAAAAABahAAMAAAAAAAA0CIEYAAAAAAAAIAWIQADAAAAAAAAtAgBGAAAAAAAAKBFCMAAAAAAAAAALUIABgAAAAAAAGgRAjAAAAAAAABAixCAAQAAAAAAAFqEAAwAAAAAAADQIgRgAAAAAAAAgBYhAAMAAAAAAAC0CAEYAAAAAAAAoEUIwAAAAAAAAAAtQgAGAAAAAAAAaBECMAAAAAAAAECLEIABAAAAAAAAWoQADAAAAAAAANAiBGAAAAAAAACAFiEAAwAAAAAAALQIARgAAAAAAACgRQjAAAAAAAAAAC1CAAYAAAAAAABoEQIwAAAAAAAAQIsQgAEAAAAAAABahAAMAAAAAAAA0CIEYAAAAAAAAIAWIQADAAAAAAAAtAgBGAAAAAAAAKBFCMAAAAAAAAAALUIABgAAAAAAAGgRAjAAAAAAAABAixCAAQAAAAAAAFqEAAwAAAAAAADQIgRgAAAAAAAAgBYhAAMAAAAAAAC0CAEYAAAAAAAAoEUIwAAAAAAAAAAtQgAGAAAAAAAAaBECMAAAAAAAAECLEIABAAAAAAAAWoQADAAAAAAAANAiBGAAAAAAAACAFiEAAwAAAAAAALQIARgAAAAAAACgRQjAAAAAAAAAAC1CAAYAAAAAAABoEQIwAAAAAAAAQIsQgAEAAAAAAABahAAMAAAAAAAA0CIEYAAAAAAAAIAWIQADAAAAAAAAtAgBGAAAAAAAAKBFCMAAAAAAAAAALUIABgAAAAAAAGgRAjAAAAAAAABAixCAAQAAAAAAAFqEAAwAAAAAAADQIgRgAAAAAAAAgBYhAAMAAAAAAAC0CAEYAAAAAAAAoEUIwAAAAAAAAAAtQgCGRK1bty7mzp0bjz32WHR0dDiO4ziO4ziO4ziO4ziO4ziO09ERjz32WMydOzfWrVtX9SofKiEAQ6Lmzp0bRVE4juM4juM4juM4juM4juM4jrOVM3fu3KpX+VAJARgS9dhjj9UGWNX/NZXjOI7jOI7jOI7jOI7jOI7jDJSz5QeoHnvssapX+VAJARgS1dHREUVRREdHR9VXAQAAAACAAcP+nNwJwJAoAwwAAAAAAPqyPyd3AjAkygADAAAAAIC+7M/JnQAMiTLAAAAAAACgL/tzcicAQ6IMMAAAAAAA6Mv+nNwJwJAoAwwAAAAAAPqyPyd3AjAkygADAAAAAEhPV1dXvPDCC/Hss8/GM88845Q8y5Yti5UrV8b69euju7u74d+x/Tm5E4AhUQYYAAAAAEBaurq64tlnn43Ozs5YsmRJLF26tPKwmsJZunRpPPXUU9HZ2RmdnZ2xfPny2LRp0zb/nu3PyZ0ADIkywAAAAAAA0vLCCy9EZ2dnrF69ers/xUpfmzZtilWrVkVnZ2esWbNmm8/Zn5M7ARgSZYABAAAAAKTl2WefjSVLloi//wrd3d2xZMmSWLZs2TafsT8ndwIwJMoAAwAAAABIy5Z/zph/nS3/dPa22J+TOwEYEmWAAQAAAACkZcvvtOVfZ3t/j/bn5E4AhkQZYAAAAAAAaRGA+4cADI0JwJAoAwwAAAAAIC0CcP8QgKExARgSZYABAAAAAKSl1QPw1VdfHUVR1J1Ro0bFMcccE/Pnz6979rrrrovx48fHe97zniiKIo4++ujSnyMAQ2MCMCTKAAMAAAAASEsuAXj69OnR1tYWM2fOjAsvvDBGjx4dRVHEvHnzas8effTR8Yd/+IfxoQ99KEaOHCkAQz8SgCFRBhgAAAAAQFpyCcCLFy+ue/3ll1+OwYMHx4knnlh7bcWKFdHV1RUREaNHjxaAoR8JwJAoAwwAAAAAIC25BuDu7u7Yeeed46STTtrq+wRg6F8CMCTKAAMAAAAASEsuAXjhwoWxdu3aWLNmTXR0dMTpp58egwYNigULFmz1fQIw9C8BGBJlgAEAAAAApCWXANz7DB06NK655pptvk8Ahv4lAEOiDDAAAAAAgLRsK1yefWtHfP77Dw2Yc/at72zvvCUAX3bZZdHe3h7t7e0xa9asOP7442PHHXeMG2+8cavvE4ChfwnAkCgDDAAAAAAgLdsKl5///kPx7q//dMCcz3//oXf0/W3rdwB3dXXFoYceGnvttVds2LChz/sEYOhfAjAkygADAAAAAEhLLj8B3DsAR0RMmTJlmzttARj6lwAMiTLAAAAAAADSksvvAN5aAJ48eXIURRGPPPJIn/9NAIb+JQBDogwwAAAAAIC05BqAN27cGAcccEAMGTIk1q9f3+d9AjD0LwEYEmWAAQAAAACkJZcAPH369Ghra4u2tra46KKL4sgjj4yiKGLq1Km1Z++7774455xz4pxzzok99tgj9t1339qf77vvvoafIwBDYwIwJMoAAwAAAABISy4BuOfZaaed4vDDD4/LL788uru7a89Omzatz7NbzrRp0xp+jgAMjQnAkCgDDAAAAAAgLa0egP+tCMDQmAAMiTLAAAAAAADSIgD3DwEYGhOAIVEGGAAAAABAWgTg/iEAQ2MCMCTKAAMAAKCsjrUd8cDzD9T93j0A4N+eANw/BGBoTACGRBlgAAAAlLHmjTXxvmveF++75n3xwPMPVH0dAMiaANw/BGBoTACGRBlgAAAAlLFg+YJaAJ5y95SqrwMAWROA+4cADI0JwJAoAwwAAIAy2pe3C8AAMEAIwP1DAIbGBGBIlAEGAABAGQIwAAwcAnD/EIChMQEYEmWAAQAAUEbPAPzlu75c9XUAIGsCcP8QgKExARgSZYABAABQxsLlC2sB+Et3fanq6wBA1gTg/iEAQ2MCMCTKAAMAAKCMhc8JwAAwUAjA/UMAhsYEYEiUAQYAAEAZPQPwF+/6YtXXAYCsCcD9QwCGxgRgSJQBBgAAQBl3PXeXAAwAA4QA3D8EYGhMAIZEGWAAAACUIQADwMAhAPcPARgaE4AhUQYYAAAAZdz93N2/D8ALBWAAqFKrB+Crr746iqKoO6NGjYpjjjkm5s+fX3vut7/9bXz729+OMWPGxO677x5//Md/HH/xF38R1113XanPEYChMQEYEmWAAQAAUMY9K+6pBeDJCydXfR0AyFouAXj69OnR1tYWM2fOjAsvvDBGjx4dRVHEvHnzIiJi3rx5MXjw4PjUpz4VF198cVx66aXxoQ99KIqiiG9961vb/RwBGBoTgCFRBhgAAABlCMAAMHDkEoAXL15c9/rLL78cgwcPjhNPPDEiIpYtWxbLly+ve6a7uzvGjh0bQ4cOjddff73h5wjA0JgADIkywAAAAChDAAaAgSPXANzd3R0777xznHTSSQ3fP2PGjCiKIn75y182fE4AhsYEYEiUAQYAAEAZPQPwmQvPrPo6AJC1XALwwoULY+3atbFmzZro6OiI008/PQYNGhQLFixo+P5vfOMbURRFvPDCCw2fE4ChMQEYEmWAAQAAUMa9K+4VgAFggMglAPc+Q4cOjWuuuabhe1966aXYY489YsyYMdv9HAEYGhOAIVEGGAAAAGX0DMCT2idVfR0AyNo2w+X8r0f88GMD58z/+jv6/rYE4Msuuyza29ujvb09Zs2aFccff3zsuOOOceONN271fV1dXXH88cfHkCFD4vHHH3/nf4//wv6c3AnAkCgDDAAAgDLuW3lfLQCf0X5G1dcBgKxtM1z+8GMR03YeOOeHH3tH39+2fgdwV1dXHHroobHXXnvFhg0b+rzvzDPPjKIoYubMmf+6v8d/YX9O7gRgSJQBBgAAQBkCMAAMHLn8BHDvABwRMWXKlK3utM8+++woiiLOP//80p8jAENjAjAkygADAACgDAEYAAaOXH4H8NYC8OTJk6MoinjkkUdqr1166aVRFEV85StfeVufIwBDYwIwJMoAAwAAoIyeAfj09tOrvg4AZC3XALxx48Y44IADYsiQIbF+/fqIiLjuuuti0KBBMX78+Oju7n5bnyMAQ2MCMCTKAAMAAKCMRSsX/T4ALxCAAaBKuQTg6dOnR1tbW7S1tcVFF10URx55ZBRFEVOnTo2IiEcffTSGDBkSo0aNih/+8Ie1Z7ec7f0dCcDQmAAMiTLAAAAAKOP+5+8XgAFggMglAPc8O+20Uxx++OFx+eWX137Sd2vP9TxXX311w88RgKExARgSZYABAABQRs8AfNqC06q+DgBkrdUD8L8VARgaE4AhUQYYAAAAZTzw/AMCMAAMEAJw/xCAoTEBGBJlgAEAAFCGAAwAA4cA3D8EYGhMAIZEGWAAAACU0TMAn3rnqVVfBwCyJgD3DwEYGhOAIVEGGAAAAGU8+PyDtQB8yp2nVH0dAMiaANw/BGBoTACGRBlgAAAAlPHgKgEYAAYKAbh/CMDQmAAMiTLAAAAAKEMABoCBQwDuHwIwNCYAQ6IMMAAAAMroGYC/cOcXqr4OAGRNAO4fAjA0JgBDogwwAAAAynho1UMCMAAMEAJw/xCAoTEBGBJlgAEAAFBGXQC+QwAGgCoJwP1DAIbGBGBIlAEGAABAGQ+/8HAtAP/tHX9b9XUAIGsCcP8QgKExARgSZYABAABQxiMvPCIAA8AAIQD3DwEYGhOAIVEGGAAAAGUIwAAwcAjA/UMAhsYEYEiUAQYAAEAZPQPw39zxN1VfBwCy1uoB+Oqrr46iKOrOqFGj4phjjon58+fXPfuVr3wl/vzP/zxGjhwZw4YNi4MPPjimTZsWr7322nY/RwCGxgRgSJQBBgAAQBk9fwewAAwA1colAE+fPj3a2tpi5syZceGFF8bo0aOjKIqYN29e7dmjjjoqvvzlL8eMGTPiyiuvjEmTJsXQoUPjqKOOiq6uroafIwBDYwIwJMoAAwAAoIyHVj1UC8An335y1dcBgKzlEoAXL15c9/rLL78cgwcPjhNPPLHh+7/zne9EURTx8MMPN3xOAIbGBGBIlAEGAABAGT0D8MTbJ1Z9HQDIWq4BuLu7O3beeec46aSTGr7/hhtuiKIo4vbbb2/4nAAMjQnAkCgDDAAAgDIeXPWgAAwAA0QuAXjhwoWxdu3aWLNmTXR0dMTpp58egwYNigULFtQ9v2nTpli7dm2sWrUq7rzzzjj44IPjj/7oj+Kll15q+DkCMDQmAEOiDDAAAADKePB5ARgABopcAnDvM3To0Ljmmmv6PP/www/XPXfQQQfFPffcs93PEYChMQEYEmWAAQAAUEbPAHzS/Mb/7CIA0FzbCpfnP3p+nHz7yQPmnP/o+e/o+9sSgC+77LJob2+P9vb2mDVrVhx//PGx4447xo033lj3/Pr166O9vT3mzp0bX/va1+KII46IefPmveO/xy3sz8mdAAyJMsAAAAAo44HnHxCAAWCA2Fa4PPn2k2vzeiCck28/+R19f9v6HcBdXV1x6KGHxl577RUbNmzY5vtnz54dgwYNiscff/wd/T1uYX9O7gRgSJQBBgAAQBn3P3+/AAwAA0QuPwHcOwBHREyZMmW7O+0333wzBg0aFFOnTm34OQIwNCYAQ6IMMAAAAMroGYD/ev5fV30dAMhaLr8DeGsBePLkyVEURTzyyCPbfP8rr7wSRVHEpEmTGn6OAAyNCcBkpaOjIz73uc/Fn/7pn8awYcNit912izFjxsStt97a59nOzs447rjjYsSIETFy5MiYMGFCrFmzps9zXV1dccEFF8S+++4bQ4cOjUMOOSSuvfbarX5+2a9Z9nsxwAAAANieRSsXCcAAMEDkGoA3btwYBxxwQAwZMiTWr18f69ati40bN/Z5/3e+850oiiJ+8IMfNPwcARgaE4DJym233RbHHXdcnH322XHllVfGxRdfHGPGjImiKOKKK66oPbdy5crYfffdY//9949LLrkkzj333Bg5cmQcdthhfX4/wdSpU6Moijj11FPjyiuvjHHjxkVRFDFnzpy6597O1yzDAAMAAKCM+1beJwADwACRSwCePn16tLW1RVtbW1x00UVx5JFHRlEUtX/a+eabb4599tknvvrVr8b3vve9uPjii+Ozn/1s7LDDDvH+979/uztzARgaE4DJ3ubNm+Owww6Lgw46qPbapEmTYtiwYfHcc8/VXmtvb+8Tip9//vkYPHhwTJ48ufZad3d3jBkzJt71rnfF5s2b3/bXLMsAAwAAoAwBGAAGjlwCcM+z0047xeGHHx6XX355dHd3R0TE0qVL46STTor99tsvhg0bFjvttFOMHj06pk2bFq+//vp2P0cAhsYEYIiIj3/847HnnnvW/rzHHnvECSec0Oe5Aw88MD784Q/X/nzZZZdFURTxxBNP1D137bXXRlEUcf/997/t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xvjx42uvTZw4MUaMGLHdr/f888/H4MGDY/LkybXXuru7Y8yYMfGud70rNm/eXHt90qRJMWzYsHjuuedqr7W3t0dRFHHFFVe8o+/HAAMAAKCM8x45ry4A/27T76q+EgBAU9mfkzsBmOwdccQRccQRR9T+vCUAb968OdavX7/N91122WVRFEU88cQTda9fe+21URRF3H///bXX9thjjzjhhBP6fI0DDzwwPvzhD7+jextgAAAAlHHuI+fWBeA3Nr5R9ZUAAJrK/pzcCcBkrbu7O/bee+849thja69NnDgxdthhhxg+fHgURREjR46MM888M1577bW6955yyikxYsSI6O7urnt96dKlURRFzJgxIyL++SeFi6KICy64oM/nT5gwIXbdddd3dHcDDAAAgDJ6B+DXN75e9ZUAAJrK/pzcCcBkra2tLYqiiB/84Ae116ZOnRpf//rX4/rrr485c+bExIkToyiKOOqoo2LTpk2158aNGxf77bdfn6/5xhtvRFEUMXXq1IiIWLx4cRRFETNnzuzz7FlnnRVFUcRbb73V8J4vvvhidHR01J25c+caYAAAAGzX/3n4/9QF4Nc2vLb9NwEAJEwAJncCMNl68sknY+edd44PfvCDdb+vd2vOPffcKIoi5syZU3tt7Nix8d73vrfPs11dXVEURUyZMiUiIhYtWhRFUcT111/f59lvfvObURRFrFu3ruHnT5s2LYqi2OoxwAAAAGjknIfPqQvAr254teorAQA0lQBM7gRgsvSb3/wm9ttvv9hnn31i1apV233+d7/7XQwaNCi+8IUv1F7zE8AAAACkoHcAXr9hfdVXAgBoKgGY3AnAZOeVV16Jww8/PHbdddd44oknSr9v1KhR8ZnPfKb251NOOSWGDx/udwADAAAwoPUOwK+89UrVVwIAaCr7c3InAJOVN998M8aMGRPDhw+Phx56qPT7Xn311dhhhx3itNNOq7126aWXRlEUfSLy7NmzoyiKWLRoUe21UaNGxQknnNDn6x544IExduzYd/CdGGAAAACUM/2h6QIwAJAV+3NyJwCTjc2bN8cnP/nJ2HHHHeO2227b6jNvvvlmvPpq39+FtOWfar7ppptqr61cuTIGDx4ckydPrr3W3d0dY8aMib333rvu9wqfccYZMWzYsFixYkXttYULF0ZRFHH55Ze/o+/HAAMAAKCM3gH4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L2XkAGa6covKjQrg8koWwERERERE9Gyq9FViybtuxbs4s8wTAHBq7Tgc+VUBfC372n/ZExEREZH8cP6czB0LYKJarFq1Ck5OTnj11VfRqFEjNG3aFMOGDcPNmzXfGR0TEwM3Nze8/PLLeP311/Hdd98ZXRH8H6WlpZg2bRreeust/O1vf4OjoyMOHDjwlzNyADNdWYVlRgVwaUWV1JGIiIiIiEhmiiqKxJI3aNk7OLViKADg1LoJOLHoDXHdpUeXJE5KREREVPc4f07mjgUwkUxxADNdmfmlRgVwUVml1JGIiIiIiEhmskqyxJJ389K3cWr1KADAKf9vcXrh6+K68w/PS5yUiIiIqO5x/pzMHQtgIpniAGa6HuSVGBXA+aUVUkciIiIiIiKZSctPE0veXb5NEbt2PAAg1n8izi94WgCffnBa4qREREREdY/z52TuWAATyRQHMNOV/ti4AM4rZgFMRERERETPJjknWSx5Dy1+Eyf9JwEAYtXf49KC18R1J+6dkDgpERERUd3j/DmZOxbARDLFAcx0peUUGxXAOUXlUkciIiIiIiKZSchMEEvemEVv4KR2GgAgJmAGkuY3EdcdvntY4qREREREdY/z52TuWAATyRQHMNN1J6sIH89egS/8+uHjWWvwqKBM6khERERERCQzp+6fEkvecwtfx8mgmQCAmJBZSJv7qrhu582dEiclIiIiqnucPydzxwKYSKY4gJmuW48K8cXa3hB0Ar5Y44nM/FKpIxERERERkcwcST0ilryJ85vg5IY5AICTYYuRPfuf4rrQa6ESJyUiIiKqe5w/J3PHAphIpjiAma6bmQVovr5bdQG8tjce5JVIHYmIiIiIiGQmMiVSLHlT5r2K2LDFAIBT29egdFZjcZ3mskbipERERER1j/PnZO5YABPJFAcw05WcUYDm/l2qC+B1PXEvt1jqSEREREREJDPh18PFkjdjzis4vW0lAODMHi0MSgVsglpC0AlYeWGlxEmJiIiI6h7nz8ncsQAmkikOYKbr6v18NPfvDEEnoPm6HkjNZgFMRERERETPJuRqiFgA583+J87sXA8AOHdwE6BUwC2gOQSdgHmn50mclIiIiKjucf6czB0LYCKZ4gBmuq6k56G5qmN1AbzeA3eyiqSOREREREREMqO6pBIL4HKlAnF7gwAA8cd3AkoFumi/gKATMDNm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\" width=\"1600\">"
|
|
|
7207
|
],
|
|
|
7208
|
"text/plain": [
|
|
|
7209
|
"<IPython.core.display.HTML object>"
|
|
|
7210
|
]
|
|
|
7211
|
},
|
|
|
7212
|
"metadata": {},
|
|
|
7213
|
"output_type": "display_data"
|
|
|
7214
|
},
|
|
|
7215
|
{
|
|
|
7216
|
"data": {
|
|
|
7217
|
"application/javascript": [
|
|
|
7218
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
7219
|
"window.mpl = {};\n",
|
|
|
7220
|
"\n",
|
|
|
7221
|
"\n",
|
|
|
7222
|
"mpl.get_websocket_type = function() {\n",
|
|
|
7223
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
7224
|
" return WebSocket;\n",
|
|
|
7225
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
7226
|
" return MozWebSocket;\n",
|
|
|
7227
|
" } else {\n",
|
|
|
7228
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
7229
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
7230
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
7231
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
7232
|
" };\n",
|
|
|
7233
|
"}\n",
|
|
|
7234
|
"\n",
|
|
|
7235
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
7236
|
" this.id = figure_id;\n",
|
|
|
7237
|
"\n",
|
|
|
7238
|
" this.ws = websocket;\n",
|
|
|
7239
|
"\n",
|
|
|
7240
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
7241
|
"\n",
|
|
|
7242
|
" if (!this.supports_binary) {\n",
|
|
|
7243
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
7244
|
" if (warnings) {\n",
|
|
|
7245
|
" warnings.style.display = 'block';\n",
|
|
|
7246
|
" warnings.textContent = (\n",
|
|
|
7247
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
7248
|
" \"Performance may be slow.\");\n",
|
|
|
7249
|
" }\n",
|
|
|
7250
|
" }\n",
|
|
|
7251
|
"\n",
|
|
|
7252
|
" this.imageObj = new Image();\n",
|
|
|
7253
|
"\n",
|
|
|
7254
|
" this.context = undefined;\n",
|
|
|
7255
|
" this.message = undefined;\n",
|
|
|
7256
|
" this.canvas = undefined;\n",
|
|
|
7257
|
" this.rubberband_canvas = undefined;\n",
|
|
|
7258
|
" this.rubberband_context = undefined;\n",
|
|
|
7259
|
" this.format_dropdown = undefined;\n",
|
|
|
7260
|
"\n",
|
|
|
7261
|
" this.image_mode = 'full';\n",
|
|
|
7262
|
"\n",
|
|
|
7263
|
" this.root = $('<div/>');\n",
|
|
|
7264
|
" this._root_extra_style(this.root)\n",
|
|
|
7265
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
7266
|
"\n",
|
|
|
7267
|
" $(parent_element).append(this.root);\n",
|
|
|
7268
|
"\n",
|
|
|
7269
|
" this._init_header(this);\n",
|
|
|
7270
|
" this._init_canvas(this);\n",
|
|
|
7271
|
" this._init_toolbar(this);\n",
|
|
|
7272
|
"\n",
|
|
|
7273
|
" var fig = this;\n",
|
|
|
7274
|
"\n",
|
|
|
7275
|
" this.waiting = false;\n",
|
|
|
7276
|
"\n",
|
|
|
7277
|
" this.ws.onopen = function () {\n",
|
|
|
7278
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
7279
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
7280
|
" if (mpl.ratio != 1) {\n",
|
|
|
7281
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
7282
|
" }\n",
|
|
|
7283
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
7284
|
" }\n",
|
|
|
7285
|
"\n",
|
|
|
7286
|
" this.imageObj.onload = function() {\n",
|
|
|
7287
|
" if (fig.image_mode == 'full') {\n",
|
|
|
7288
|
" // Full images could contain transparency (where diff images\n",
|
|
|
7289
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
7290
|
" // there is no ghosting.\n",
|
|
|
7291
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
7292
|
" }\n",
|
|
|
7293
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
7294
|
" };\n",
|
|
|
7295
|
"\n",
|
|
|
7296
|
" this.imageObj.onunload = function() {\n",
|
|
|
7297
|
" fig.ws.close();\n",
|
|
|
7298
|
" }\n",
|
|
|
7299
|
"\n",
|
|
|
7300
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
7301
|
"\n",
|
|
|
7302
|
" this.ondownload = ondownload;\n",
|
|
|
7303
|
"}\n",
|
|
|
7304
|
"\n",
|
|
|
7305
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
7306
|
" var titlebar = $(\n",
|
|
|
7307
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
7308
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
7309
|
" var titletext = $(\n",
|
|
|
7310
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
7311
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
7312
|
" titlebar.append(titletext)\n",
|
|
|
7313
|
" this.root.append(titlebar);\n",
|
|
|
7314
|
" this.header = titletext[0];\n",
|
|
|
7315
|
"}\n",
|
|
|
7316
|
"\n",
|
|
|
7317
|
"\n",
|
|
|
7318
|
"\n",
|
|
|
7319
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
7320
|
"\n",
|
|
|
7321
|
"}\n",
|
|
|
7322
|
"\n",
|
|
|
7323
|
"\n",
|
|
|
7324
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
7325
|
"\n",
|
|
|
7326
|
"}\n",
|
|
|
7327
|
"\n",
|
|
|
7328
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
7329
|
" var fig = this;\n",
|
|
|
7330
|
"\n",
|
|
|
7331
|
" var canvas_div = $('<div/>');\n",
|
|
|
7332
|
"\n",
|
|
|
7333
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
7334
|
"\n",
|
|
|
7335
|
" function canvas_keyboard_event(event) {\n",
|
|
|
7336
|
" return fig.key_event(event, event['data']);\n",
|
|
|
7337
|
" }\n",
|
|
|
7338
|
"\n",
|
|
|
7339
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
7340
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
7341
|
" this.canvas_div = canvas_div\n",
|
|
|
7342
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
7343
|
" this.root.append(canvas_div);\n",
|
|
|
7344
|
"\n",
|
|
|
7345
|
" var canvas = $('<canvas/>');\n",
|
|
|
7346
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
7347
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
7348
|
"\n",
|
|
|
7349
|
" this.canvas = canvas[0];\n",
|
|
|
7350
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
7351
|
"\n",
|
|
|
7352
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
7353
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
7354
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
7355
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
7356
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
7357
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
7358
|
"\n",
|
|
|
7359
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
7360
|
"\n",
|
|
|
7361
|
" var rubberband = $('<canvas/>');\n",
|
|
|
7362
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
7363
|
"\n",
|
|
|
7364
|
" var pass_mouse_events = true;\n",
|
|
|
7365
|
"\n",
|
|
|
7366
|
" canvas_div.resizable({\n",
|
|
|
7367
|
" start: function(event, ui) {\n",
|
|
|
7368
|
" pass_mouse_events = false;\n",
|
|
|
7369
|
" },\n",
|
|
|
7370
|
" resize: function(event, ui) {\n",
|
|
|
7371
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
7372
|
" },\n",
|
|
|
7373
|
" stop: function(event, ui) {\n",
|
|
|
7374
|
" pass_mouse_events = true;\n",
|
|
|
7375
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
7376
|
" },\n",
|
|
|
7377
|
" });\n",
|
|
|
7378
|
"\n",
|
|
|
7379
|
" function mouse_event_fn(event) {\n",
|
|
|
7380
|
" if (pass_mouse_events)\n",
|
|
|
7381
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
7382
|
" }\n",
|
|
|
7383
|
"\n",
|
|
|
7384
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
7385
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
7386
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
7387
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
7388
|
"\n",
|
|
|
7389
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
7390
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
7391
|
"\n",
|
|
|
7392
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
7393
|
" event = event.originalEvent;\n",
|
|
|
7394
|
" event['data'] = 'scroll'\n",
|
|
|
7395
|
" if (event.deltaY < 0) {\n",
|
|
|
7396
|
" event.step = 1;\n",
|
|
|
7397
|
" } else {\n",
|
|
|
7398
|
" event.step = -1;\n",
|
|
|
7399
|
" }\n",
|
|
|
7400
|
" mouse_event_fn(event);\n",
|
|
|
7401
|
" });\n",
|
|
|
7402
|
"\n",
|
|
|
7403
|
" canvas_div.append(canvas);\n",
|
|
|
7404
|
" canvas_div.append(rubberband);\n",
|
|
|
7405
|
"\n",
|
|
|
7406
|
" this.rubberband = rubberband;\n",
|
|
|
7407
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
7408
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
7409
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
7410
|
"\n",
|
|
|
7411
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
7412
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
7413
|
" // canvas in synch.\n",
|
|
|
7414
|
" canvas_div.css('width', width)\n",
|
|
|
7415
|
" canvas_div.css('height', height)\n",
|
|
|
7416
|
"\n",
|
|
|
7417
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
7418
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
7419
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
7420
|
"\n",
|
|
|
7421
|
" rubberband.attr('width', width);\n",
|
|
|
7422
|
" rubberband.attr('height', height);\n",
|
|
|
7423
|
" }\n",
|
|
|
7424
|
"\n",
|
|
|
7425
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
7426
|
" // upon first draw.\n",
|
|
|
7427
|
" this._resize_canvas(600, 600);\n",
|
|
|
7428
|
"\n",
|
|
|
7429
|
" // Disable right mouse context menu.\n",
|
|
|
7430
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
7431
|
" return false;\n",
|
|
|
7432
|
" });\n",
|
|
|
7433
|
"\n",
|
|
|
7434
|
" function set_focus () {\n",
|
|
|
7435
|
" canvas.focus();\n",
|
|
|
7436
|
" canvas_div.focus();\n",
|
|
|
7437
|
" }\n",
|
|
|
7438
|
"\n",
|
|
|
7439
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
7440
|
"}\n",
|
|
|
7441
|
"\n",
|
|
|
7442
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
7443
|
" var fig = this;\n",
|
|
|
7444
|
"\n",
|
|
|
7445
|
" var nav_element = $('<div/>')\n",
|
|
|
7446
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
7447
|
" this.root.append(nav_element);\n",
|
|
|
7448
|
"\n",
|
|
|
7449
|
" // Define a callback function for later on.\n",
|
|
|
7450
|
" function toolbar_event(event) {\n",
|
|
|
7451
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
7452
|
" }\n",
|
|
|
7453
|
" function toolbar_mouse_event(event) {\n",
|
|
|
7454
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
7455
|
" }\n",
|
|
|
7456
|
"\n",
|
|
|
7457
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
7458
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
7459
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
7460
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
7461
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
7462
|
"\n",
|
|
|
7463
|
" if (!name) {\n",
|
|
|
7464
|
" // put a spacer in here.\n",
|
|
|
7465
|
" continue;\n",
|
|
|
7466
|
" }\n",
|
|
|
7467
|
" var button = $('<button/>');\n",
|
|
|
7468
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
7469
|
" 'ui-button-icon-only');\n",
|
|
|
7470
|
" button.attr('role', 'button');\n",
|
|
|
7471
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
7472
|
" button.click(method_name, toolbar_event);\n",
|
|
|
7473
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
7474
|
"\n",
|
|
|
7475
|
" var icon_img = $('<span/>');\n",
|
|
|
7476
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
7477
|
" icon_img.addClass(image);\n",
|
|
|
7478
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
7479
|
"\n",
|
|
|
7480
|
" var tooltip_span = $('<span/>');\n",
|
|
|
7481
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
7482
|
" tooltip_span.html(tooltip);\n",
|
|
|
7483
|
"\n",
|
|
|
7484
|
" button.append(icon_img);\n",
|
|
|
7485
|
" button.append(tooltip_span);\n",
|
|
|
7486
|
"\n",
|
|
|
7487
|
" nav_element.append(button);\n",
|
|
|
7488
|
" }\n",
|
|
|
7489
|
"\n",
|
|
|
7490
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
7491
|
"\n",
|
|
|
7492
|
" var fmt_picker = $('<select/>');\n",
|
|
|
7493
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
7494
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
7495
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
7496
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
7497
|
"\n",
|
|
|
7498
|
" for (var ind in mpl.extensions) {\n",
|
|
|
7499
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
7500
|
" var option = $(\n",
|
|
|
7501
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
7502
|
" fmt_picker.append(option)\n",
|
|
|
7503
|
" }\n",
|
|
|
7504
|
"\n",
|
|
|
7505
|
" // Add hover states to the ui-buttons\n",
|
|
|
7506
|
" $( \".ui-button\" ).hover(\n",
|
|
|
7507
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
7508
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
7509
|
" );\n",
|
|
|
7510
|
"\n",
|
|
|
7511
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
7512
|
" nav_element.append(status_bar);\n",
|
|
|
7513
|
" this.message = status_bar[0];\n",
|
|
|
7514
|
"}\n",
|
|
|
7515
|
"\n",
|
|
|
7516
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
7517
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
7518
|
" // which will in turn request a refresh of the image.\n",
|
|
|
7519
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
7520
|
"}\n",
|
|
|
7521
|
"\n",
|
|
|
7522
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
7523
|
" properties['type'] = type;\n",
|
|
|
7524
|
" properties['figure_id'] = this.id;\n",
|
|
|
7525
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
7526
|
"}\n",
|
|
|
7527
|
"\n",
|
|
|
7528
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
7529
|
" if (!this.waiting) {\n",
|
|
|
7530
|
" this.waiting = true;\n",
|
|
|
7531
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
7532
|
" }\n",
|
|
|
7533
|
"}\n",
|
|
|
7534
|
"\n",
|
|
|
7535
|
"\n",
|
|
|
7536
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
7537
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
7538
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
7539
|
" fig.ondownload(fig, format);\n",
|
|
|
7540
|
"}\n",
|
|
|
7541
|
"\n",
|
|
|
7542
|
"\n",
|
|
|
7543
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
7544
|
" var size = msg['size'];\n",
|
|
|
7545
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
7546
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
7547
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
7548
|
" };\n",
|
|
|
7549
|
"}\n",
|
|
|
7550
|
"\n",
|
|
|
7551
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
7552
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
7553
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
7554
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
7555
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
7556
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
7557
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
7558
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
7559
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
7560
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
7561
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
7562
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
7563
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
7564
|
"\n",
|
|
|
7565
|
" fig.rubberband_context.clearRect(\n",
|
|
|
7566
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
7567
|
"\n",
|
|
|
7568
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
7569
|
"}\n",
|
|
|
7570
|
"\n",
|
|
|
7571
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
7572
|
" // Updates the figure title.\n",
|
|
|
7573
|
" fig.header.textContent = msg['label'];\n",
|
|
|
7574
|
"}\n",
|
|
|
7575
|
"\n",
|
|
|
7576
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
7577
|
" var cursor = msg['cursor'];\n",
|
|
|
7578
|
" switch(cursor)\n",
|
|
|
7579
|
" {\n",
|
|
|
7580
|
" case 0:\n",
|
|
|
7581
|
" cursor = 'pointer';\n",
|
|
|
7582
|
" break;\n",
|
|
|
7583
|
" case 1:\n",
|
|
|
7584
|
" cursor = 'default';\n",
|
|
|
7585
|
" break;\n",
|
|
|
7586
|
" case 2:\n",
|
|
|
7587
|
" cursor = 'crosshair';\n",
|
|
|
7588
|
" break;\n",
|
|
|
7589
|
" case 3:\n",
|
|
|
7590
|
" cursor = 'move';\n",
|
|
|
7591
|
" break;\n",
|
|
|
7592
|
" }\n",
|
|
|
7593
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
7594
|
"}\n",
|
|
|
7595
|
"\n",
|
|
|
7596
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
7597
|
" fig.message.textContent = msg['message'];\n",
|
|
|
7598
|
"}\n",
|
|
|
7599
|
"\n",
|
|
|
7600
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
7601
|
" // Request the server to send over a new figure.\n",
|
|
|
7602
|
" fig.send_draw_message();\n",
|
|
|
7603
|
"}\n",
|
|
|
7604
|
"\n",
|
|
|
7605
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
7606
|
" fig.image_mode = msg['mode'];\n",
|
|
|
7607
|
"}\n",
|
|
|
7608
|
"\n",
|
|
|
7609
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
7610
|
" // Called whenever the canvas gets updated.\n",
|
|
|
7611
|
" this.send_message(\"ack\", {});\n",
|
|
|
7612
|
"}\n",
|
|
|
7613
|
"\n",
|
|
|
7614
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
7615
|
"// Called in the figure constructor.\n",
|
|
|
7616
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
7617
|
" return function socket_on_message(evt) {\n",
|
|
|
7618
|
" if (evt.data instanceof Blob) {\n",
|
|
|
7619
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
7620
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
7621
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
7622
|
" * to be part of the websocket stream */\n",
|
|
|
7623
|
" evt.data.type = \"image/png\";\n",
|
|
|
7624
|
"\n",
|
|
|
7625
|
" /* Free the memory for the previous frames */\n",
|
|
|
7626
|
" if (fig.imageObj.src) {\n",
|
|
|
7627
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
7628
|
" fig.imageObj.src);\n",
|
|
|
7629
|
" }\n",
|
|
|
7630
|
"\n",
|
|
|
7631
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
7632
|
" evt.data);\n",
|
|
|
7633
|
" fig.updated_canvas_event();\n",
|
|
|
7634
|
" fig.waiting = false;\n",
|
|
|
7635
|
" return;\n",
|
|
|
7636
|
" }\n",
|
|
|
7637
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
7638
|
" fig.imageObj.src = evt.data;\n",
|
|
|
7639
|
" fig.updated_canvas_event();\n",
|
|
|
7640
|
" fig.waiting = false;\n",
|
|
|
7641
|
" return;\n",
|
|
|
7642
|
" }\n",
|
|
|
7643
|
"\n",
|
|
|
7644
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
7645
|
" var msg_type = msg['type'];\n",
|
|
|
7646
|
"\n",
|
|
|
7647
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
7648
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
7649
|
" try {\n",
|
|
|
7650
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
7651
|
" } catch (e) {\n",
|
|
|
7652
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
7653
|
" return;\n",
|
|
|
7654
|
" }\n",
|
|
|
7655
|
"\n",
|
|
|
7656
|
" if (callback) {\n",
|
|
|
7657
|
" try {\n",
|
|
|
7658
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
7659
|
" callback(fig, msg);\n",
|
|
|
7660
|
" } catch (e) {\n",
|
|
|
7661
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
7662
|
" }\n",
|
|
|
7663
|
" }\n",
|
|
|
7664
|
" };\n",
|
|
|
7665
|
"}\n",
|
|
|
7666
|
"\n",
|
|
|
7667
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
7668
|
"mpl.findpos = function(e) {\n",
|
|
|
7669
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
7670
|
" var targ;\n",
|
|
|
7671
|
" if (!e)\n",
|
|
|
7672
|
" e = window.event;\n",
|
|
|
7673
|
" if (e.target)\n",
|
|
|
7674
|
" targ = e.target;\n",
|
|
|
7675
|
" else if (e.srcElement)\n",
|
|
|
7676
|
" targ = e.srcElement;\n",
|
|
|
7677
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
7678
|
" targ = targ.parentNode;\n",
|
|
|
7679
|
"\n",
|
|
|
7680
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
7681
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
7682
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
7683
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
7684
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
7685
|
"\n",
|
|
|
7686
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
7687
|
"};\n",
|
|
|
7688
|
"\n",
|
|
|
7689
|
"/*\n",
|
|
|
7690
|
" * return a copy of an object with only non-object keys\n",
|
|
|
7691
|
" * we need this to avoid circular references\n",
|
|
|
7692
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
7693
|
" */\n",
|
|
|
7694
|
"function simpleKeys (original) {\n",
|
|
|
7695
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
7696
|
" if (typeof original[key] !== 'object')\n",
|
|
|
7697
|
" obj[key] = original[key]\n",
|
|
|
7698
|
" return obj;\n",
|
|
|
7699
|
" }, {});\n",
|
|
|
7700
|
"}\n",
|
|
|
7701
|
"\n",
|
|
|
7702
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
7703
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
7704
|
"\n",
|
|
|
7705
|
" if (name === 'button_press')\n",
|
|
|
7706
|
" {\n",
|
|
|
7707
|
" this.canvas.focus();\n",
|
|
|
7708
|
" this.canvas_div.focus();\n",
|
|
|
7709
|
" }\n",
|
|
|
7710
|
"\n",
|
|
|
7711
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
7712
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
7713
|
"\n",
|
|
|
7714
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
7715
|
" step: event.step,\n",
|
|
|
7716
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
7717
|
"\n",
|
|
|
7718
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
7719
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
7720
|
" * to control all of the cursor setting manually through the\n",
|
|
|
7721
|
" * 'cursor' event from matplotlib */\n",
|
|
|
7722
|
" event.preventDefault();\n",
|
|
|
7723
|
" return false;\n",
|
|
|
7724
|
"}\n",
|
|
|
7725
|
"\n",
|
|
|
7726
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
7727
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
7728
|
"}\n",
|
|
|
7729
|
"\n",
|
|
|
7730
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
7731
|
"\n",
|
|
|
7732
|
" // Prevent repeat events\n",
|
|
|
7733
|
" if (name == 'key_press')\n",
|
|
|
7734
|
" {\n",
|
|
|
7735
|
" if (event.which === this._key)\n",
|
|
|
7736
|
" return;\n",
|
|
|
7737
|
" else\n",
|
|
|
7738
|
" this._key = event.which;\n",
|
|
|
7739
|
" }\n",
|
|
|
7740
|
" if (name == 'key_release')\n",
|
|
|
7741
|
" this._key = null;\n",
|
|
|
7742
|
"\n",
|
|
|
7743
|
" var value = '';\n",
|
|
|
7744
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
7745
|
" value += \"ctrl+\";\n",
|
|
|
7746
|
" if (event.altKey && event.which != 18)\n",
|
|
|
7747
|
" value += \"alt+\";\n",
|
|
|
7748
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
7749
|
" value += \"shift+\";\n",
|
|
|
7750
|
"\n",
|
|
|
7751
|
" value += 'k';\n",
|
|
|
7752
|
" value += event.which.toString();\n",
|
|
|
7753
|
"\n",
|
|
|
7754
|
" this._key_event_extra(event, name);\n",
|
|
|
7755
|
"\n",
|
|
|
7756
|
" this.send_message(name, {key: value,\n",
|
|
|
7757
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
7758
|
" return false;\n",
|
|
|
7759
|
"}\n",
|
|
|
7760
|
"\n",
|
|
|
7761
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
7762
|
" if (name == 'download') {\n",
|
|
|
7763
|
" this.handle_save(this, null);\n",
|
|
|
7764
|
" } else {\n",
|
|
|
7765
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
7766
|
" }\n",
|
|
|
7767
|
"};\n",
|
|
|
7768
|
"\n",
|
|
|
7769
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
7770
|
" this.message.textContent = tooltip;\n",
|
|
|
7771
|
"};\n",
|
|
|
7772
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
7773
|
"\n",
|
|
|
7774
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
7775
|
"\n",
|
|
|
7776
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
7777
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
7778
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
7779
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
7780
|
" var ws = {};\n",
|
|
|
7781
|
"\n",
|
|
|
7782
|
" ws.close = function() {\n",
|
|
|
7783
|
" comm.close()\n",
|
|
|
7784
|
" };\n",
|
|
|
7785
|
" ws.send = function(m) {\n",
|
|
|
7786
|
" //console.log('sending', m);\n",
|
|
|
7787
|
" comm.send(m);\n",
|
|
|
7788
|
" };\n",
|
|
|
7789
|
" // Register the callback with on_msg.\n",
|
|
|
7790
|
" comm.on_msg(function(msg) {\n",
|
|
|
7791
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
7792
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
7793
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
7794
|
" });\n",
|
|
|
7795
|
" return ws;\n",
|
|
|
7796
|
"}\n",
|
|
|
7797
|
"\n",
|
|
|
7798
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
7799
|
" // This is the function which gets called when the mpl process\n",
|
|
|
7800
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
7801
|
"\n",
|
|
|
7802
|
" var id = msg.content.data.id;\n",
|
|
|
7803
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
7804
|
" // socket was opened in Python.\n",
|
|
|
7805
|
" var element = $(\"#\" + id);\n",
|
|
|
7806
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
7807
|
"\n",
|
|
|
7808
|
" function ondownload(figure, format) {\n",
|
|
|
7809
|
" window.open(figure.imageObj.src);\n",
|
|
|
7810
|
" }\n",
|
|
|
7811
|
"\n",
|
|
|
7812
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
7813
|
" ondownload,\n",
|
|
|
7814
|
" element.get(0));\n",
|
|
|
7815
|
"\n",
|
|
|
7816
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
7817
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
7818
|
" ws_proxy.onopen();\n",
|
|
|
7819
|
"\n",
|
|
|
7820
|
" fig.parent_element = element.get(0);\n",
|
|
|
7821
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
7822
|
" if (!fig.cell_info) {\n",
|
|
|
7823
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
7824
|
" return;\n",
|
|
|
7825
|
" }\n",
|
|
|
7826
|
"\n",
|
|
|
7827
|
" var output_index = fig.cell_info[2]\n",
|
|
|
7828
|
" var cell = fig.cell_info[0];\n",
|
|
|
7829
|
"\n",
|
|
|
7830
|
"};\n",
|
|
|
7831
|
"\n",
|
|
|
7832
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
7833
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
7834
|
" fig.root.unbind('remove')\n",
|
|
|
7835
|
"\n",
|
|
|
7836
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
7837
|
" fig.push_to_output();\n",
|
|
|
7838
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
7839
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
7840
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
7841
|
" IPython.keyboard_manager.enable()\n",
|
|
|
7842
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
7843
|
" fig.close_ws(fig, msg);\n",
|
|
|
7844
|
"}\n",
|
|
|
7845
|
"\n",
|
|
|
7846
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
7847
|
" fig.send_message('closing', msg);\n",
|
|
|
7848
|
" // fig.ws.close()\n",
|
|
|
7849
|
"}\n",
|
|
|
7850
|
"\n",
|
|
|
7851
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
7852
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
7853
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
7854
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
7855
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
7856
|
"}\n",
|
|
|
7857
|
"\n",
|
|
|
7858
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
7859
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
7860
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
7861
|
" this.send_message(\"ack\", {});\n",
|
|
|
7862
|
" var fig = this;\n",
|
|
|
7863
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
7864
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
7865
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
7866
|
"}\n",
|
|
|
7867
|
"\n",
|
|
|
7868
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
7869
|
" var fig = this;\n",
|
|
|
7870
|
"\n",
|
|
|
7871
|
" var nav_element = $('<div/>')\n",
|
|
|
7872
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
7873
|
" this.root.append(nav_element);\n",
|
|
|
7874
|
"\n",
|
|
|
7875
|
" // Define a callback function for later on.\n",
|
|
|
7876
|
" function toolbar_event(event) {\n",
|
|
|
7877
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
7878
|
" }\n",
|
|
|
7879
|
" function toolbar_mouse_event(event) {\n",
|
|
|
7880
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
7881
|
" }\n",
|
|
|
7882
|
"\n",
|
|
|
7883
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
7884
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
7885
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
7886
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
7887
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
7888
|
"\n",
|
|
|
7889
|
" if (!name) { continue; };\n",
|
|
|
7890
|
"\n",
|
|
|
7891
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
7892
|
" button.click(method_name, toolbar_event);\n",
|
|
|
7893
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
7894
|
" nav_element.append(button);\n",
|
|
|
7895
|
" }\n",
|
|
|
7896
|
"\n",
|
|
|
7897
|
" // Add the status bar.\n",
|
|
|
7898
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
7899
|
" nav_element.append(status_bar);\n",
|
|
|
7900
|
" this.message = status_bar[0];\n",
|
|
|
7901
|
"\n",
|
|
|
7902
|
" // Add the close button to the window.\n",
|
|
|
7903
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
7904
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
7905
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
7906
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
7907
|
" buttongrp.append(button);\n",
|
|
|
7908
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
7909
|
" titlebar.prepend(buttongrp);\n",
|
|
|
7910
|
"}\n",
|
|
|
7911
|
"\n",
|
|
|
7912
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
7913
|
" var fig = this\n",
|
|
|
7914
|
" el.on(\"remove\", function(){\n",
|
|
|
7915
|
"\tfig.close_ws(fig, {});\n",
|
|
|
7916
|
" });\n",
|
|
|
7917
|
"}\n",
|
|
|
7918
|
"\n",
|
|
|
7919
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
7920
|
" // this is important to make the div 'focusable\n",
|
|
|
7921
|
" el.attr('tabindex', 0)\n",
|
|
|
7922
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
7923
|
" // off when our div gets focus\n",
|
|
|
7924
|
"\n",
|
|
|
7925
|
" // location in version 3\n",
|
|
|
7926
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
7927
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
7928
|
" }\n",
|
|
|
7929
|
" else {\n",
|
|
|
7930
|
" // location in version 2\n",
|
|
|
7931
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
7932
|
" }\n",
|
|
|
7933
|
"\n",
|
|
|
7934
|
"}\n",
|
|
|
7935
|
"\n",
|
|
|
7936
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
7937
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
7938
|
" if (!manager)\n",
|
|
|
7939
|
" manager = IPython.keyboard_manager;\n",
|
|
|
7940
|
"\n",
|
|
|
7941
|
" // Check for shift+enter\n",
|
|
|
7942
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
7943
|
" this.canvas_div.blur();\n",
|
|
|
7944
|
" event.shiftKey = false;\n",
|
|
|
7945
|
" // Send a \"J\" for go to next cell\n",
|
|
|
7946
|
" event.which = 74;\n",
|
|
|
7947
|
" event.keyCode = 74;\n",
|
|
|
7948
|
" manager.command_mode();\n",
|
|
|
7949
|
" manager.handle_keydown(event);\n",
|
|
|
7950
|
" }\n",
|
|
|
7951
|
"}\n",
|
|
|
7952
|
"\n",
|
|
|
7953
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
7954
|
" fig.ondownload(fig, null);\n",
|
|
|
7955
|
"}\n",
|
|
|
7956
|
"\n",
|
|
|
7957
|
"\n",
|
|
|
7958
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
7959
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
7960
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
7961
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
7962
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
7963
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
7964
|
" var ncells = cells.length;\n",
|
|
|
7965
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
7966
|
" var cell = cells[i];\n",
|
|
|
7967
|
" if (cell.cell_type === 'code'){\n",
|
|
|
7968
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
7969
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
7970
|
" if (data.data) {\n",
|
|
|
7971
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
7972
|
" data = data.data;\n",
|
|
|
7973
|
" }\n",
|
|
|
7974
|
" if (data['text/html'] == html_output) {\n",
|
|
|
7975
|
" return [cell, data, j];\n",
|
|
|
7976
|
" }\n",
|
|
|
7977
|
" }\n",
|
|
|
7978
|
" }\n",
|
|
|
7979
|
" }\n",
|
|
|
7980
|
"}\n",
|
|
|
7981
|
"\n",
|
|
|
7982
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
7983
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
7984
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
7985
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
7986
|
"}\n"
|
|
|
7987
|
],
|
|
|
7988
|
"text/plain": [
|
|
|
7989
|
"<IPython.core.display.Javascript object>"
|
|
|
7990
|
]
|
|
|
7991
|
},
|
|
|
7992
|
"metadata": {},
|
|
|
7993
|
"output_type": "display_data"
|
|
|
7994
|
},
|
|
|
7995
|
{
|
|
|
7996
|
"data": {
|
|
|
7997
|
"text/html": [
|
|
|
7998
|
"<img src=\"data:image/png;base64,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vPHGGDlyZNRqtbrnurq6oiiKmD179hG/5+EywACg2gRgAAAA+jtkuHzsGxHf/3x1zmPfOKrv78MAPGfOnGhvb4/29vZYsGBBXHPNNXHsscfGww8/fNCv6+npiWuuuSaGDRsWL7300tH/Pf5/9ufkTgAmS7fcckvvf3k0ZMiQ+OIXvxg7d+6MiIjly5dHURQxf/78AV/39a9/PYqiiA8++CAiIsaPHx9nn332gOfee++9KIoipk2bdsTveTDbtm2Ljo6OurNkyRIDDAAqTAAGAACgv0OGy+9/PmL68dU53//8UX1/h/odwD09PXHRRRfFaaedFt3d3QO+7itf+cohd+hH9Pf4/wnA5E4AJkuvvvpqtLe3xw9+8IMYP358fOELX4itW7dGRMRTTz0VRVHEQw89NODrvvnNb0ZRFLFr166IiBg3blx8+tOfHvBcT09PFEURU6dOPeL3PJjp06cf9J/NMMAAoLoEYAAAAPrL5SeA+wfgiIipU6cedKd96623RlEU8a1vfeuwP0cAhsYEYIiIP/3TP40/+qM/ilqt5ieAAYBBIQADAADQXy6/A/hgAXjKlClRFEU8//zzva/dc889URRFfO1rXzuizxGAoTEBGCLivvvui6Io4je/+c0R/w7gESNG+B3AAMAAAjAAAAD95RqA9+3bF+eee24MGzYsdu/eHRERDz74YAwZMiQmTpw4YMf+UQRgaEwAhoi4++67oyiKeOGFFyIiYtSoUTFhwoQBz5133nkxbty43j9/+F8nrVy5su65hQsXRlEU8dRTT/W+drjvebgMMACoNgEYAACA/nIJwDNmzIi2trZoa2uLu+66Ky699NK6fzXzhRdeiGHDhsWoUaPi+9//fu+zH56P+jsSgKExAZisbNu2bcBr+/btizFjxsTw4cNjz549ERHx5S9/OYYPHx4bNmzofW7ZsmVRFEXce++9va9t3Lgxhg4dGlOmTOl9rVarxdixY+P000+PAwcO9L5+uO95uAwwAKg2ARgAAID+cgnAfc9xxx0Xl1xySdx77729P+l7sOf6nvvvv7/h5wjA0JgATFb+6q/+KsaNGxe33nprzJs3L2677ba44IILoiiKuOuuu3qf27BhQ5x00klxzjnnxOzZs+OOO+6I1tbWuPDCCwf8rt4Pf4fvzTffHPPmzYvx48dHURSxcOHCuueO5D0PhwEG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+ygfdgoBMFARVq70mQ4AO6JPAuyYPgmwY/okwPvTK4GPCwEwUBHcXAHsmD4JsGP6JMCO6ZMA70+vBD4uBMBARXBzBbBj+iTAjumTADumTwK8P70S+LgQAAMVwc0VwI7pkwA7pk8C7Jg+CfD+9Erg40IADFSENWvW5NJLL82aNWt29qUAfCzpkwA7pk8C7Jg+CfD+9Erg40IADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADLRomzZtyrnnnpt999037dq1yyGHHJKbb755Z18WwIfm9ttvT6FQeNe65557tpu7fPnyHH744dltt93y2c9+NgMGDMgbb7zRbE29FGjJ3njjjVxyySXp0aNH9txzzxQKhTQ2Nr7r3FWrVqVHjx7Zfffds+eee6Zfv35Zu3Zts3lbt27NyJEj8w//8A9p27ZtvvSlL+Xqq6/+H60JsLP8pX2yf//+73qP+Y//+I/N5uqTQCW5//77c+aZZ+af//mf0759+3z+859P37598/jjjzeb634SaCkEwECLduKJJ6ZNmzYZOHBgamtrc9hhh6VNmzZZtmzZzr40gA/FOwHwWWedlWnTpm1Xr776atO8X//612nXrl2++tWvplwu56KLLkrbtm3Ts2fPZmvqpUBL9swzz6RQKOTv//7v06lTp/cMNl544YX8zd/8Tfbff/9UVVVl2LBh2XPPPfOVr3wlmzdv3m7u+eefn0KhkB/96Eepq6tLnz59UigUMnPmzP/2mgA7y1/aJ/v375+2bds2u8e87rrrms3VJ4FKcsIJJ2SfffbJgAEDUl9fnyFDhuSzn/1sdt999zzyyCNN89xPAi2JABhose67774UCoWMHj26aWzjxo3Zf//9c9hhh+3EKwP48LwTAM+dO3eH83r16pV9990369evbxqrr69PoVDIkiVLmsb0UqCl27RpU15++eUkyQMPPPCewcYZZ5yR3XbbLc8991zT2C233JJCoZDa2tqmsRdffDG77rprzjzzzKaxbdu25cgjj8zf/d3fZcuWLR94TYCd6S/tk/3798/uu+/+vuvpk0ClWb58ebOw9Yknnkjbtm1z0kknNY25nwRaEgEw0GINGjQou+yyy3bhRpIMHz48hUIhzz///E66MoAPz38NgDds2JC33nqr2Zz169enTZs2GTRo0Hbjmzdvzh577JFTTjmlaUwvBSrJjoKNv/3bv03fvn2bjX/xi19M165dm14Xi8UUCoU8+uij2827+uqrUygUtns6wl+6JsDHxV8SAG/ZsqXZveF/pU8CrcVBBx2Ugw46qOm1+0mgJREAAy1Wt27d8k//9E/Nxm+99dYUCoV3fUwVQEv3TgC8xx57pFAoZJdddkmnTp3ywAMPNM256667UigUMnv27GZff8QRR2z3A6xeClSS9wo2XnzxxRQKhYwcObLZ1/Tr1y977bVX0+tTTz01u+++e7Zt27bdvCeffDKFQiETJkz4wGsCfFy8XwD8iU98Iu3bt0+hUMiee+6Zn/zkJ3njjTe2m6dPAq3Btm3b8rnPfS7du3dP4n4SaHkEwECLdeCBB6ZLly7Nxh999NEUCoXU1NTshKsC+HAtX748J5xwQhoaGnLttdfmiiuuyGc+85m0a9cuDz74YJJk7ty5KRQKWbp0abOv79u3b/bZZ5+m13opUEneK9h4Z3zq1KnNvmbQoEEpFArZtGlTkqRPnz7Zb7/9ms374x//mEKhkPPPP/8DrwnwcbGjAPj888/Peeedl9mzZ2fmzJnp379/CoVCDj/88O2eOqNPAq3BtGnTUigU0tDQkMT9JNDyCICBFmu//fZLr169mo0/9dRTKRQKGTdu3E64KoCP3urVq7PbbrulR48eSZKpU6emUCjkvvvuazb3e9/7Xj71qU81vdZLgUryXsHG0qVL3/PJCBdffHEKhULWrVuXJOnSpcu7Phlh69atKRQKOfvssz/wmgAfFzsKgN/NsGHDUigUMnPmzKYxfRKodL/97W/z13/91znssMOaPq/X/STQ0giAgRbLu9YA/tOJJ56YT37yk9myZYt3AAOtlncAA+zYBw2A//SnP+Wv/uqvcsoppzSN6ZNAJXv55Zez33775fOf/3xeeumlpnH3k0BLIwAGWiyfWwnwn9754XD9+vU+Axhotf5/fQZw+/btfWYbUJE+aACcJHvvvXeOO+64ptf6JFCpXn/99fzLv/xL9tprrzz66KPb/Z37SaClEQADLdbAgQOzyy67ZP369duNv/OIqueff34nXRnAR++EE05Iu3btsnXr1rz++utp06ZNBg0atN2czZs3Z4899sjJJ5/cNKaXApVkR8HG3nvvnb59+zYb/+IXv7jdkxCqq6tTKBSaHfrNmDGj2dMV/tI1AT4uPmgAvGHDhnziE5/Iaaed1jSmTwKVaOPGjTnyyCPTvn373H333e86x/0k0JIIgIEW6957702hUMjo0aObxjZt2pQDDjgghx566E68MoAPz9q1a5uNPfTQQ9l1111z7LHHNo317Nkz++67bzZs2NA0NmnSpBQKhdx0001NY3opUEl2FGycfvrp2W233bb7xZZ3nnZQLpebxl544YXsuuuuOfPMM5vGtm3bliOPPDKf+9znmj4H7oOsCfBx8V59cuPGjdvdN77jnafMLFiwoGlMnwQqzZYtW3LsscemTZs2WbRo0XvOcz8JtCQCYKBF69u3b9O73Gpra9OhQ4e0adMmd955586+NIAPRefOndO7d+8MHTo0dXV1Oeecc9K+fft86lOfyqpVq5rmrVixIm3bts1Xv/rVlMvlXHTRRWnXrl26d+/ebE29FGjpJk6cmCFDhuSMM85IoVDI8ccfnyFDhmTIkCF5/fXXkyTPP/98PvOZz2T//ffPhAkTMnz48Oy555750pe+1Oyz1d4JPE477bTU19enT58+KRQKmTFjxnbzPsiaADvT+/XJZ555Jp/+9KdzxhlnpKqqKlVVVendu3cKhUJ69uyZrVu3breePglUkrPPPjuFQiHHHHNMpk2b1qze4X4SaEkEwECLtnHjxgwcODD77LNP2rZtm4MPPjiLFy/e2ZcF8KGpqqrKIYcckr322itt2rTJvvvum379+mX16tXN5i5btiwdOnRIu3btsvfee+fMM89813d26KVAS/eFL3whhULhXeuZZ55pmrdy5cp079497du3z6c//emcdNJJeeWVV5qtt3Xr1gwfPjyr59P1AAADoElEQVRf+MIX8slPfjIHHnhgpk+f/q7/9l+6JsDO9H59ct26denXr18OOOCAtG/fPm3bts2BBx6Y4cOH580332y2nj4JVJKjjjrqPXtkobB9hOJ+EmgpBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAh/i/9uY8LuszENwAAAABJRU5ErkJggg==\" width=\"1600\">"
|
|
|
7999
|
],
|
|
|
8000
|
"text/plain": [
|
|
|
8001
|
"<IPython.core.display.HTML object>"
|
|
|
8002
|
]
|
|
|
8003
|
},
|
|
|
8004
|
"metadata": {},
|
|
|
8005
|
"output_type": "display_data"
|
|
|
8006
|
}
|
|
|
8007
|
],
|
|
|
8008
|
"source": [
|
|
|
8009
|
"for i in range(18,23):\n",
|
|
|
8010
|
" plt.figure()\n",
|
|
|
8011
|
" for ch in [\"B1\",\"B2\",\"B3\"]:\n",
|
|
|
8012
|
" spec = TF.fft(res.SWF(1,i)[ch], TF.LFR_Fs1)\n",
|
|
|
8013
|
" plt.plot(spec[\"f\"],spec[\"mod\"])\n",
|
|
|
8014
|
" plt.legend([\"B1\",\"B2\",\"B3\"])\n",
|
|
|
8015
|
" plt.show()"
|
|
|
8016
|
]
|
|
|
8017
|
},
|
|
|
8018
|
{
|
|
|
8019
|
"cell_type": "markdown",
|
|
|
8020
|
"metadata": {},
|
|
|
8021
|
"source": [
|
|
|
8022
|
"# Snapshot FFTs at F2"
|
|
|
8023
|
]
|
|
|
8024
|
},
|
|
|
8025
|
{
|
|
|
8026
|
"cell_type": "code",
|
|
|
8027
|
"execution_count": 7,
|
|
|
8028
|
"metadata": {
|
|
|
8029
|
"ExecuteTime": {
|
|
|
8030
|
"end_time": "2018-06-28T15:32:32.003883Z",
|
|
|
8031
|
"start_time": "2018-06-28T15:32:31.873589Z"
|
|
|
8032
|
},
|
|
|
8033
|
"scrolled": false
|
|
|
8034
|
},
|
|
|
8035
|
"outputs": [
|
|
|
8036
|
{
|
|
|
8037
|
"data": {
|
|
|
8038
|
"application/javascript": [
|
|
|
8039
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
8040
|
"window.mpl = {};\n",
|
|
|
8041
|
"\n",
|
|
|
8042
|
"\n",
|
|
|
8043
|
"mpl.get_websocket_type = function() {\n",
|
|
|
8044
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
8045
|
" return WebSocket;\n",
|
|
|
8046
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
8047
|
" return MozWebSocket;\n",
|
|
|
8048
|
" } else {\n",
|
|
|
8049
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
8050
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
8051
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
8052
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
8053
|
" };\n",
|
|
|
8054
|
"}\n",
|
|
|
8055
|
"\n",
|
|
|
8056
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
8057
|
" this.id = figure_id;\n",
|
|
|
8058
|
"\n",
|
|
|
8059
|
" this.ws = websocket;\n",
|
|
|
8060
|
"\n",
|
|
|
8061
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
8062
|
"\n",
|
|
|
8063
|
" if (!this.supports_binary) {\n",
|
|
|
8064
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
8065
|
" if (warnings) {\n",
|
|
|
8066
|
" warnings.style.display = 'block';\n",
|
|
|
8067
|
" warnings.textContent = (\n",
|
|
|
8068
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
8069
|
" \"Performance may be slow.\");\n",
|
|
|
8070
|
" }\n",
|
|
|
8071
|
" }\n",
|
|
|
8072
|
"\n",
|
|
|
8073
|
" this.imageObj = new Image();\n",
|
|
|
8074
|
"\n",
|
|
|
8075
|
" this.context = undefined;\n",
|
|
|
8076
|
" this.message = undefined;\n",
|
|
|
8077
|
" this.canvas = undefined;\n",
|
|
|
8078
|
" this.rubberband_canvas = undefined;\n",
|
|
|
8079
|
" this.rubberband_context = undefined;\n",
|
|
|
8080
|
" this.format_dropdown = undefined;\n",
|
|
|
8081
|
"\n",
|
|
|
8082
|
" this.image_mode = 'full';\n",
|
|
|
8083
|
"\n",
|
|
|
8084
|
" this.root = $('<div/>');\n",
|
|
|
8085
|
" this._root_extra_style(this.root)\n",
|
|
|
8086
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
8087
|
"\n",
|
|
|
8088
|
" $(parent_element).append(this.root);\n",
|
|
|
8089
|
"\n",
|
|
|
8090
|
" this._init_header(this);\n",
|
|
|
8091
|
" this._init_canvas(this);\n",
|
|
|
8092
|
" this._init_toolbar(this);\n",
|
|
|
8093
|
"\n",
|
|
|
8094
|
" var fig = this;\n",
|
|
|
8095
|
"\n",
|
|
|
8096
|
" this.waiting = false;\n",
|
|
|
8097
|
"\n",
|
|
|
8098
|
" this.ws.onopen = function () {\n",
|
|
|
8099
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
8100
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
8101
|
" if (mpl.ratio != 1) {\n",
|
|
|
8102
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
8103
|
" }\n",
|
|
|
8104
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
8105
|
" }\n",
|
|
|
8106
|
"\n",
|
|
|
8107
|
" this.imageObj.onload = function() {\n",
|
|
|
8108
|
" if (fig.image_mode == 'full') {\n",
|
|
|
8109
|
" // Full images could contain transparency (where diff images\n",
|
|
|
8110
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
8111
|
" // there is no ghosting.\n",
|
|
|
8112
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
8113
|
" }\n",
|
|
|
8114
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
8115
|
" };\n",
|
|
|
8116
|
"\n",
|
|
|
8117
|
" this.imageObj.onunload = function() {\n",
|
|
|
8118
|
" fig.ws.close();\n",
|
|
|
8119
|
" }\n",
|
|
|
8120
|
"\n",
|
|
|
8121
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
8122
|
"\n",
|
|
|
8123
|
" this.ondownload = ondownload;\n",
|
|
|
8124
|
"}\n",
|
|
|
8125
|
"\n",
|
|
|
8126
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
8127
|
" var titlebar = $(\n",
|
|
|
8128
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
8129
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
8130
|
" var titletext = $(\n",
|
|
|
8131
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
8132
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
8133
|
" titlebar.append(titletext)\n",
|
|
|
8134
|
" this.root.append(titlebar);\n",
|
|
|
8135
|
" this.header = titletext[0];\n",
|
|
|
8136
|
"}\n",
|
|
|
8137
|
"\n",
|
|
|
8138
|
"\n",
|
|
|
8139
|
"\n",
|
|
|
8140
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
8141
|
"\n",
|
|
|
8142
|
"}\n",
|
|
|
8143
|
"\n",
|
|
|
8144
|
"\n",
|
|
|
8145
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
8146
|
"\n",
|
|
|
8147
|
"}\n",
|
|
|
8148
|
"\n",
|
|
|
8149
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
8150
|
" var fig = this;\n",
|
|
|
8151
|
"\n",
|
|
|
8152
|
" var canvas_div = $('<div/>');\n",
|
|
|
8153
|
"\n",
|
|
|
8154
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
8155
|
"\n",
|
|
|
8156
|
" function canvas_keyboard_event(event) {\n",
|
|
|
8157
|
" return fig.key_event(event, event['data']);\n",
|
|
|
8158
|
" }\n",
|
|
|
8159
|
"\n",
|
|
|
8160
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
8161
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
8162
|
" this.canvas_div = canvas_div\n",
|
|
|
8163
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
8164
|
" this.root.append(canvas_div);\n",
|
|
|
8165
|
"\n",
|
|
|
8166
|
" var canvas = $('<canvas/>');\n",
|
|
|
8167
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
8168
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
8169
|
"\n",
|
|
|
8170
|
" this.canvas = canvas[0];\n",
|
|
|
8171
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
8172
|
"\n",
|
|
|
8173
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
8174
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
8175
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
8176
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
8177
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
8178
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
8179
|
"\n",
|
|
|
8180
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
8181
|
"\n",
|
|
|
8182
|
" var rubberband = $('<canvas/>');\n",
|
|
|
8183
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
8184
|
"\n",
|
|
|
8185
|
" var pass_mouse_events = true;\n",
|
|
|
8186
|
"\n",
|
|
|
8187
|
" canvas_div.resizable({\n",
|
|
|
8188
|
" start: function(event, ui) {\n",
|
|
|
8189
|
" pass_mouse_events = false;\n",
|
|
|
8190
|
" },\n",
|
|
|
8191
|
" resize: function(event, ui) {\n",
|
|
|
8192
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
8193
|
" },\n",
|
|
|
8194
|
" stop: function(event, ui) {\n",
|
|
|
8195
|
" pass_mouse_events = true;\n",
|
|
|
8196
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
8197
|
" },\n",
|
|
|
8198
|
" });\n",
|
|
|
8199
|
"\n",
|
|
|
8200
|
" function mouse_event_fn(event) {\n",
|
|
|
8201
|
" if (pass_mouse_events)\n",
|
|
|
8202
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
8203
|
" }\n",
|
|
|
8204
|
"\n",
|
|
|
8205
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
8206
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
8207
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
8208
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
8209
|
"\n",
|
|
|
8210
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
8211
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
8212
|
"\n",
|
|
|
8213
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
8214
|
" event = event.originalEvent;\n",
|
|
|
8215
|
" event['data'] = 'scroll'\n",
|
|
|
8216
|
" if (event.deltaY < 0) {\n",
|
|
|
8217
|
" event.step = 1;\n",
|
|
|
8218
|
" } else {\n",
|
|
|
8219
|
" event.step = -1;\n",
|
|
|
8220
|
" }\n",
|
|
|
8221
|
" mouse_event_fn(event);\n",
|
|
|
8222
|
" });\n",
|
|
|
8223
|
"\n",
|
|
|
8224
|
" canvas_div.append(canvas);\n",
|
|
|
8225
|
" canvas_div.append(rubberband);\n",
|
|
|
8226
|
"\n",
|
|
|
8227
|
" this.rubberband = rubberband;\n",
|
|
|
8228
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
8229
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
8230
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
8231
|
"\n",
|
|
|
8232
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
8233
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
8234
|
" // canvas in synch.\n",
|
|
|
8235
|
" canvas_div.css('width', width)\n",
|
|
|
8236
|
" canvas_div.css('height', height)\n",
|
|
|
8237
|
"\n",
|
|
|
8238
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
8239
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
8240
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
8241
|
"\n",
|
|
|
8242
|
" rubberband.attr('width', width);\n",
|
|
|
8243
|
" rubberband.attr('height', height);\n",
|
|
|
8244
|
" }\n",
|
|
|
8245
|
"\n",
|
|
|
8246
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
8247
|
" // upon first draw.\n",
|
|
|
8248
|
" this._resize_canvas(600, 600);\n",
|
|
|
8249
|
"\n",
|
|
|
8250
|
" // Disable right mouse context menu.\n",
|
|
|
8251
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
8252
|
" return false;\n",
|
|
|
8253
|
" });\n",
|
|
|
8254
|
"\n",
|
|
|
8255
|
" function set_focus () {\n",
|
|
|
8256
|
" canvas.focus();\n",
|
|
|
8257
|
" canvas_div.focus();\n",
|
|
|
8258
|
" }\n",
|
|
|
8259
|
"\n",
|
|
|
8260
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
8261
|
"}\n",
|
|
|
8262
|
"\n",
|
|
|
8263
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
8264
|
" var fig = this;\n",
|
|
|
8265
|
"\n",
|
|
|
8266
|
" var nav_element = $('<div/>')\n",
|
|
|
8267
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
8268
|
" this.root.append(nav_element);\n",
|
|
|
8269
|
"\n",
|
|
|
8270
|
" // Define a callback function for later on.\n",
|
|
|
8271
|
" function toolbar_event(event) {\n",
|
|
|
8272
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
8273
|
" }\n",
|
|
|
8274
|
" function toolbar_mouse_event(event) {\n",
|
|
|
8275
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
8276
|
" }\n",
|
|
|
8277
|
"\n",
|
|
|
8278
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
8279
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
8280
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
8281
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
8282
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
8283
|
"\n",
|
|
|
8284
|
" if (!name) {\n",
|
|
|
8285
|
" // put a spacer in here.\n",
|
|
|
8286
|
" continue;\n",
|
|
|
8287
|
" }\n",
|
|
|
8288
|
" var button = $('<button/>');\n",
|
|
|
8289
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
8290
|
" 'ui-button-icon-only');\n",
|
|
|
8291
|
" button.attr('role', 'button');\n",
|
|
|
8292
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
8293
|
" button.click(method_name, toolbar_event);\n",
|
|
|
8294
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
8295
|
"\n",
|
|
|
8296
|
" var icon_img = $('<span/>');\n",
|
|
|
8297
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
8298
|
" icon_img.addClass(image);\n",
|
|
|
8299
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
8300
|
"\n",
|
|
|
8301
|
" var tooltip_span = $('<span/>');\n",
|
|
|
8302
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
8303
|
" tooltip_span.html(tooltip);\n",
|
|
|
8304
|
"\n",
|
|
|
8305
|
" button.append(icon_img);\n",
|
|
|
8306
|
" button.append(tooltip_span);\n",
|
|
|
8307
|
"\n",
|
|
|
8308
|
" nav_element.append(button);\n",
|
|
|
8309
|
" }\n",
|
|
|
8310
|
"\n",
|
|
|
8311
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
8312
|
"\n",
|
|
|
8313
|
" var fmt_picker = $('<select/>');\n",
|
|
|
8314
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
8315
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
8316
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
8317
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
8318
|
"\n",
|
|
|
8319
|
" for (var ind in mpl.extensions) {\n",
|
|
|
8320
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
8321
|
" var option = $(\n",
|
|
|
8322
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
8323
|
" fmt_picker.append(option)\n",
|
|
|
8324
|
" }\n",
|
|
|
8325
|
"\n",
|
|
|
8326
|
" // Add hover states to the ui-buttons\n",
|
|
|
8327
|
" $( \".ui-button\" ).hover(\n",
|
|
|
8328
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
8329
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
8330
|
" );\n",
|
|
|
8331
|
"\n",
|
|
|
8332
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
8333
|
" nav_element.append(status_bar);\n",
|
|
|
8334
|
" this.message = status_bar[0];\n",
|
|
|
8335
|
"}\n",
|
|
|
8336
|
"\n",
|
|
|
8337
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
8338
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
8339
|
" // which will in turn request a refresh of the image.\n",
|
|
|
8340
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
8341
|
"}\n",
|
|
|
8342
|
"\n",
|
|
|
8343
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
8344
|
" properties['type'] = type;\n",
|
|
|
8345
|
" properties['figure_id'] = this.id;\n",
|
|
|
8346
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
8347
|
"}\n",
|
|
|
8348
|
"\n",
|
|
|
8349
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
8350
|
" if (!this.waiting) {\n",
|
|
|
8351
|
" this.waiting = true;\n",
|
|
|
8352
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
8353
|
" }\n",
|
|
|
8354
|
"}\n",
|
|
|
8355
|
"\n",
|
|
|
8356
|
"\n",
|
|
|
8357
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
8358
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
8359
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
8360
|
" fig.ondownload(fig, format);\n",
|
|
|
8361
|
"}\n",
|
|
|
8362
|
"\n",
|
|
|
8363
|
"\n",
|
|
|
8364
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
8365
|
" var size = msg['size'];\n",
|
|
|
8366
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
8367
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
8368
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
8369
|
" };\n",
|
|
|
8370
|
"}\n",
|
|
|
8371
|
"\n",
|
|
|
8372
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
8373
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
8374
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
8375
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
8376
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
8377
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
8378
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
8379
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
8380
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
8381
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
8382
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
8383
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
8384
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
8385
|
"\n",
|
|
|
8386
|
" fig.rubberband_context.clearRect(\n",
|
|
|
8387
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
8388
|
"\n",
|
|
|
8389
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
8390
|
"}\n",
|
|
|
8391
|
"\n",
|
|
|
8392
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
8393
|
" // Updates the figure title.\n",
|
|
|
8394
|
" fig.header.textContent = msg['label'];\n",
|
|
|
8395
|
"}\n",
|
|
|
8396
|
"\n",
|
|
|
8397
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
8398
|
" var cursor = msg['cursor'];\n",
|
|
|
8399
|
" switch(cursor)\n",
|
|
|
8400
|
" {\n",
|
|
|
8401
|
" case 0:\n",
|
|
|
8402
|
" cursor = 'pointer';\n",
|
|
|
8403
|
" break;\n",
|
|
|
8404
|
" case 1:\n",
|
|
|
8405
|
" cursor = 'default';\n",
|
|
|
8406
|
" break;\n",
|
|
|
8407
|
" case 2:\n",
|
|
|
8408
|
" cursor = 'crosshair';\n",
|
|
|
8409
|
" break;\n",
|
|
|
8410
|
" case 3:\n",
|
|
|
8411
|
" cursor = 'move';\n",
|
|
|
8412
|
" break;\n",
|
|
|
8413
|
" }\n",
|
|
|
8414
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
8415
|
"}\n",
|
|
|
8416
|
"\n",
|
|
|
8417
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
8418
|
" fig.message.textContent = msg['message'];\n",
|
|
|
8419
|
"}\n",
|
|
|
8420
|
"\n",
|
|
|
8421
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
8422
|
" // Request the server to send over a new figure.\n",
|
|
|
8423
|
" fig.send_draw_message();\n",
|
|
|
8424
|
"}\n",
|
|
|
8425
|
"\n",
|
|
|
8426
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
8427
|
" fig.image_mode = msg['mode'];\n",
|
|
|
8428
|
"}\n",
|
|
|
8429
|
"\n",
|
|
|
8430
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
8431
|
" // Called whenever the canvas gets updated.\n",
|
|
|
8432
|
" this.send_message(\"ack\", {});\n",
|
|
|
8433
|
"}\n",
|
|
|
8434
|
"\n",
|
|
|
8435
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
8436
|
"// Called in the figure constructor.\n",
|
|
|
8437
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
8438
|
" return function socket_on_message(evt) {\n",
|
|
|
8439
|
" if (evt.data instanceof Blob) {\n",
|
|
|
8440
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
8441
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
8442
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
8443
|
" * to be part of the websocket stream */\n",
|
|
|
8444
|
" evt.data.type = \"image/png\";\n",
|
|
|
8445
|
"\n",
|
|
|
8446
|
" /* Free the memory for the previous frames */\n",
|
|
|
8447
|
" if (fig.imageObj.src) {\n",
|
|
|
8448
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
8449
|
" fig.imageObj.src);\n",
|
|
|
8450
|
" }\n",
|
|
|
8451
|
"\n",
|
|
|
8452
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
8453
|
" evt.data);\n",
|
|
|
8454
|
" fig.updated_canvas_event();\n",
|
|
|
8455
|
" fig.waiting = false;\n",
|
|
|
8456
|
" return;\n",
|
|
|
8457
|
" }\n",
|
|
|
8458
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
8459
|
" fig.imageObj.src = evt.data;\n",
|
|
|
8460
|
" fig.updated_canvas_event();\n",
|
|
|
8461
|
" fig.waiting = false;\n",
|
|
|
8462
|
" return;\n",
|
|
|
8463
|
" }\n",
|
|
|
8464
|
"\n",
|
|
|
8465
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
8466
|
" var msg_type = msg['type'];\n",
|
|
|
8467
|
"\n",
|
|
|
8468
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
8469
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
8470
|
" try {\n",
|
|
|
8471
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
8472
|
" } catch (e) {\n",
|
|
|
8473
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
8474
|
" return;\n",
|
|
|
8475
|
" }\n",
|
|
|
8476
|
"\n",
|
|
|
8477
|
" if (callback) {\n",
|
|
|
8478
|
" try {\n",
|
|
|
8479
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
8480
|
" callback(fig, msg);\n",
|
|
|
8481
|
" } catch (e) {\n",
|
|
|
8482
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
8483
|
" }\n",
|
|
|
8484
|
" }\n",
|
|
|
8485
|
" };\n",
|
|
|
8486
|
"}\n",
|
|
|
8487
|
"\n",
|
|
|
8488
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
8489
|
"mpl.findpos = function(e) {\n",
|
|
|
8490
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
8491
|
" var targ;\n",
|
|
|
8492
|
" if (!e)\n",
|
|
|
8493
|
" e = window.event;\n",
|
|
|
8494
|
" if (e.target)\n",
|
|
|
8495
|
" targ = e.target;\n",
|
|
|
8496
|
" else if (e.srcElement)\n",
|
|
|
8497
|
" targ = e.srcElement;\n",
|
|
|
8498
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
8499
|
" targ = targ.parentNode;\n",
|
|
|
8500
|
"\n",
|
|
|
8501
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
8502
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
8503
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
8504
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
8505
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
8506
|
"\n",
|
|
|
8507
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
8508
|
"};\n",
|
|
|
8509
|
"\n",
|
|
|
8510
|
"/*\n",
|
|
|
8511
|
" * return a copy of an object with only non-object keys\n",
|
|
|
8512
|
" * we need this to avoid circular references\n",
|
|
|
8513
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
8514
|
" */\n",
|
|
|
8515
|
"function simpleKeys (original) {\n",
|
|
|
8516
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
8517
|
" if (typeof original[key] !== 'object')\n",
|
|
|
8518
|
" obj[key] = original[key]\n",
|
|
|
8519
|
" return obj;\n",
|
|
|
8520
|
" }, {});\n",
|
|
|
8521
|
"}\n",
|
|
|
8522
|
"\n",
|
|
|
8523
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
8524
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
8525
|
"\n",
|
|
|
8526
|
" if (name === 'button_press')\n",
|
|
|
8527
|
" {\n",
|
|
|
8528
|
" this.canvas.focus();\n",
|
|
|
8529
|
" this.canvas_div.focus();\n",
|
|
|
8530
|
" }\n",
|
|
|
8531
|
"\n",
|
|
|
8532
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
8533
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
8534
|
"\n",
|
|
|
8535
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
8536
|
" step: event.step,\n",
|
|
|
8537
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
8538
|
"\n",
|
|
|
8539
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
8540
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
8541
|
" * to control all of the cursor setting manually through the\n",
|
|
|
8542
|
" * 'cursor' event from matplotlib */\n",
|
|
|
8543
|
" event.preventDefault();\n",
|
|
|
8544
|
" return false;\n",
|
|
|
8545
|
"}\n",
|
|
|
8546
|
"\n",
|
|
|
8547
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
8548
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
8549
|
"}\n",
|
|
|
8550
|
"\n",
|
|
|
8551
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
8552
|
"\n",
|
|
|
8553
|
" // Prevent repeat events\n",
|
|
|
8554
|
" if (name == 'key_press')\n",
|
|
|
8555
|
" {\n",
|
|
|
8556
|
" if (event.which === this._key)\n",
|
|
|
8557
|
" return;\n",
|
|
|
8558
|
" else\n",
|
|
|
8559
|
" this._key = event.which;\n",
|
|
|
8560
|
" }\n",
|
|
|
8561
|
" if (name == 'key_release')\n",
|
|
|
8562
|
" this._key = null;\n",
|
|
|
8563
|
"\n",
|
|
|
8564
|
" var value = '';\n",
|
|
|
8565
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
8566
|
" value += \"ctrl+\";\n",
|
|
|
8567
|
" if (event.altKey && event.which != 18)\n",
|
|
|
8568
|
" value += \"alt+\";\n",
|
|
|
8569
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
8570
|
" value += \"shift+\";\n",
|
|
|
8571
|
"\n",
|
|
|
8572
|
" value += 'k';\n",
|
|
|
8573
|
" value += event.which.toString();\n",
|
|
|
8574
|
"\n",
|
|
|
8575
|
" this._key_event_extra(event, name);\n",
|
|
|
8576
|
"\n",
|
|
|
8577
|
" this.send_message(name, {key: value,\n",
|
|
|
8578
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
8579
|
" return false;\n",
|
|
|
8580
|
"}\n",
|
|
|
8581
|
"\n",
|
|
|
8582
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
8583
|
" if (name == 'download') {\n",
|
|
|
8584
|
" this.handle_save(this, null);\n",
|
|
|
8585
|
" } else {\n",
|
|
|
8586
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
8587
|
" }\n",
|
|
|
8588
|
"};\n",
|
|
|
8589
|
"\n",
|
|
|
8590
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
8591
|
" this.message.textContent = tooltip;\n",
|
|
|
8592
|
"};\n",
|
|
|
8593
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
8594
|
"\n",
|
|
|
8595
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
8596
|
"\n",
|
|
|
8597
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
8598
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
8599
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
8600
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
8601
|
" var ws = {};\n",
|
|
|
8602
|
"\n",
|
|
|
8603
|
" ws.close = function() {\n",
|
|
|
8604
|
" comm.close()\n",
|
|
|
8605
|
" };\n",
|
|
|
8606
|
" ws.send = function(m) {\n",
|
|
|
8607
|
" //console.log('sending', m);\n",
|
|
|
8608
|
" comm.send(m);\n",
|
|
|
8609
|
" };\n",
|
|
|
8610
|
" // Register the callback with on_msg.\n",
|
|
|
8611
|
" comm.on_msg(function(msg) {\n",
|
|
|
8612
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
8613
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
8614
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
8615
|
" });\n",
|
|
|
8616
|
" return ws;\n",
|
|
|
8617
|
"}\n",
|
|
|
8618
|
"\n",
|
|
|
8619
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
8620
|
" // This is the function which gets called when the mpl process\n",
|
|
|
8621
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
8622
|
"\n",
|
|
|
8623
|
" var id = msg.content.data.id;\n",
|
|
|
8624
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
8625
|
" // socket was opened in Python.\n",
|
|
|
8626
|
" var element = $(\"#\" + id);\n",
|
|
|
8627
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
8628
|
"\n",
|
|
|
8629
|
" function ondownload(figure, format) {\n",
|
|
|
8630
|
" window.open(figure.imageObj.src);\n",
|
|
|
8631
|
" }\n",
|
|
|
8632
|
"\n",
|
|
|
8633
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
8634
|
" ondownload,\n",
|
|
|
8635
|
" element.get(0));\n",
|
|
|
8636
|
"\n",
|
|
|
8637
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
8638
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
8639
|
" ws_proxy.onopen();\n",
|
|
|
8640
|
"\n",
|
|
|
8641
|
" fig.parent_element = element.get(0);\n",
|
|
|
8642
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
8643
|
" if (!fig.cell_info) {\n",
|
|
|
8644
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
8645
|
" return;\n",
|
|
|
8646
|
" }\n",
|
|
|
8647
|
"\n",
|
|
|
8648
|
" var output_index = fig.cell_info[2]\n",
|
|
|
8649
|
" var cell = fig.cell_info[0];\n",
|
|
|
8650
|
"\n",
|
|
|
8651
|
"};\n",
|
|
|
8652
|
"\n",
|
|
|
8653
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
8654
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
8655
|
" fig.root.unbind('remove')\n",
|
|
|
8656
|
"\n",
|
|
|
8657
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
8658
|
" fig.push_to_output();\n",
|
|
|
8659
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
8660
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
8661
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
8662
|
" IPython.keyboard_manager.enable()\n",
|
|
|
8663
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
8664
|
" fig.close_ws(fig, msg);\n",
|
|
|
8665
|
"}\n",
|
|
|
8666
|
"\n",
|
|
|
8667
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
8668
|
" fig.send_message('closing', msg);\n",
|
|
|
8669
|
" // fig.ws.close()\n",
|
|
|
8670
|
"}\n",
|
|
|
8671
|
"\n",
|
|
|
8672
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
8673
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
8674
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
8675
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
8676
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
8677
|
"}\n",
|
|
|
8678
|
"\n",
|
|
|
8679
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
8680
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
8681
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
8682
|
" this.send_message(\"ack\", {});\n",
|
|
|
8683
|
" var fig = this;\n",
|
|
|
8684
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
8685
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
8686
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
8687
|
"}\n",
|
|
|
8688
|
"\n",
|
|
|
8689
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
8690
|
" var fig = this;\n",
|
|
|
8691
|
"\n",
|
|
|
8692
|
" var nav_element = $('<div/>')\n",
|
|
|
8693
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
8694
|
" this.root.append(nav_element);\n",
|
|
|
8695
|
"\n",
|
|
|
8696
|
" // Define a callback function for later on.\n",
|
|
|
8697
|
" function toolbar_event(event) {\n",
|
|
|
8698
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
8699
|
" }\n",
|
|
|
8700
|
" function toolbar_mouse_event(event) {\n",
|
|
|
8701
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
8702
|
" }\n",
|
|
|
8703
|
"\n",
|
|
|
8704
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
8705
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
8706
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
8707
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
8708
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
8709
|
"\n",
|
|
|
8710
|
" if (!name) { continue; };\n",
|
|
|
8711
|
"\n",
|
|
|
8712
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
8713
|
" button.click(method_name, toolbar_event);\n",
|
|
|
8714
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
8715
|
" nav_element.append(button);\n",
|
|
|
8716
|
" }\n",
|
|
|
8717
|
"\n",
|
|
|
8718
|
" // Add the status bar.\n",
|
|
|
8719
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
8720
|
" nav_element.append(status_bar);\n",
|
|
|
8721
|
" this.message = status_bar[0];\n",
|
|
|
8722
|
"\n",
|
|
|
8723
|
" // Add the close button to the window.\n",
|
|
|
8724
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
8725
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
8726
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
8727
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
8728
|
" buttongrp.append(button);\n",
|
|
|
8729
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
8730
|
" titlebar.prepend(buttongrp);\n",
|
|
|
8731
|
"}\n",
|
|
|
8732
|
"\n",
|
|
|
8733
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
8734
|
" var fig = this\n",
|
|
|
8735
|
" el.on(\"remove\", function(){\n",
|
|
|
8736
|
"\tfig.close_ws(fig, {});\n",
|
|
|
8737
|
" });\n",
|
|
|
8738
|
"}\n",
|
|
|
8739
|
"\n",
|
|
|
8740
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
8741
|
" // this is important to make the div 'focusable\n",
|
|
|
8742
|
" el.attr('tabindex', 0)\n",
|
|
|
8743
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
8744
|
" // off when our div gets focus\n",
|
|
|
8745
|
"\n",
|
|
|
8746
|
" // location in version 3\n",
|
|
|
8747
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
8748
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
8749
|
" }\n",
|
|
|
8750
|
" else {\n",
|
|
|
8751
|
" // location in version 2\n",
|
|
|
8752
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
8753
|
" }\n",
|
|
|
8754
|
"\n",
|
|
|
8755
|
"}\n",
|
|
|
8756
|
"\n",
|
|
|
8757
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
8758
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
8759
|
" if (!manager)\n",
|
|
|
8760
|
" manager = IPython.keyboard_manager;\n",
|
|
|
8761
|
"\n",
|
|
|
8762
|
" // Check for shift+enter\n",
|
|
|
8763
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
8764
|
" this.canvas_div.blur();\n",
|
|
|
8765
|
" event.shiftKey = false;\n",
|
|
|
8766
|
" // Send a \"J\" for go to next cell\n",
|
|
|
8767
|
" event.which = 74;\n",
|
|
|
8768
|
" event.keyCode = 74;\n",
|
|
|
8769
|
" manager.command_mode();\n",
|
|
|
8770
|
" manager.handle_keydown(event);\n",
|
|
|
8771
|
" }\n",
|
|
|
8772
|
"}\n",
|
|
|
8773
|
"\n",
|
|
|
8774
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
8775
|
" fig.ondownload(fig, null);\n",
|
|
|
8776
|
"}\n",
|
|
|
8777
|
"\n",
|
|
|
8778
|
"\n",
|
|
|
8779
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
8780
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
8781
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
8782
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
8783
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
8784
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
8785
|
" var ncells = cells.length;\n",
|
|
|
8786
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
8787
|
" var cell = cells[i];\n",
|
|
|
8788
|
" if (cell.cell_type === 'code'){\n",
|
|
|
8789
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
8790
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
8791
|
" if (data.data) {\n",
|
|
|
8792
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
8793
|
" data = data.data;\n",
|
|
|
8794
|
" }\n",
|
|
|
8795
|
" if (data['text/html'] == html_output) {\n",
|
|
|
8796
|
" return [cell, data, j];\n",
|
|
|
8797
|
" }\n",
|
|
|
8798
|
" }\n",
|
|
|
8799
|
" }\n",
|
|
|
8800
|
" }\n",
|
|
|
8801
|
"}\n",
|
|
|
8802
|
"\n",
|
|
|
8803
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
8804
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
8805
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
8806
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
8807
|
"}\n"
|
|
|
8808
|
],
|
|
|
8809
|
"text/plain": [
|
|
|
8810
|
"<IPython.core.display.Javascript object>"
|
|
|
8811
|
]
|
|
|
8812
|
},
|
|
|
8813
|
"metadata": {},
|
|
|
8814
|
"output_type": "display_data"
|
|
|
8815
|
},
|
|
|
8816
|
{
|
|
|
8817
|
"data": {
|
|
|
8818
|
"text/html": [
|
|
|
8819
|
"<img src=\"data:image/png;base64,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ADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIAgAAwAAAAAAAAAAAECAIAAMAAAAAAAAAAAAAAGCADAAAAAAAAAAAAAABAgCwAAAAAAAAAAAAAAQIP4/YXHomaXSiUMAAAAASUVORK5CYII=\" width=\"1600\">"
|
|
|
8820
|
],
|
|
|
8821
|
"text/plain": [
|
|
|
8822
|
"<IPython.core.display.HTML object>"
|
|
|
8823
|
]
|
|
|
8824
|
},
|
|
|
8825
|
"metadata": {},
|
|
|
8826
|
"output_type": "display_data"
|
|
|
8827
|
},
|
|
|
8828
|
{
|
|
|
8829
|
"data": {
|
|
|
8830
|
"application/javascript": [
|
|
|
8831
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
8832
|
"window.mpl = {};\n",
|
|
|
8833
|
"\n",
|
|
|
8834
|
"\n",
|
|
|
8835
|
"mpl.get_websocket_type = function() {\n",
|
|
|
8836
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
8837
|
" return WebSocket;\n",
|
|
|
8838
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
8839
|
" return MozWebSocket;\n",
|
|
|
8840
|
" } else {\n",
|
|
|
8841
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
8842
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
8843
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
8844
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
8845
|
" };\n",
|
|
|
8846
|
"}\n",
|
|
|
8847
|
"\n",
|
|
|
8848
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
8849
|
" this.id = figure_id;\n",
|
|
|
8850
|
"\n",
|
|
|
8851
|
" this.ws = websocket;\n",
|
|
|
8852
|
"\n",
|
|
|
8853
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
8854
|
"\n",
|
|
|
8855
|
" if (!this.supports_binary) {\n",
|
|
|
8856
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
8857
|
" if (warnings) {\n",
|
|
|
8858
|
" warnings.style.display = 'block';\n",
|
|
|
8859
|
" warnings.textContent = (\n",
|
|
|
8860
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
8861
|
" \"Performance may be slow.\");\n",
|
|
|
8862
|
" }\n",
|
|
|
8863
|
" }\n",
|
|
|
8864
|
"\n",
|
|
|
8865
|
" this.imageObj = new Image();\n",
|
|
|
8866
|
"\n",
|
|
|
8867
|
" this.context = undefined;\n",
|
|
|
8868
|
" this.message = undefined;\n",
|
|
|
8869
|
" this.canvas = undefined;\n",
|
|
|
8870
|
" this.rubberband_canvas = undefined;\n",
|
|
|
8871
|
" this.rubberband_context = undefined;\n",
|
|
|
8872
|
" this.format_dropdown = undefined;\n",
|
|
|
8873
|
"\n",
|
|
|
8874
|
" this.image_mode = 'full';\n",
|
|
|
8875
|
"\n",
|
|
|
8876
|
" this.root = $('<div/>');\n",
|
|
|
8877
|
" this._root_extra_style(this.root)\n",
|
|
|
8878
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
8879
|
"\n",
|
|
|
8880
|
" $(parent_element).append(this.root);\n",
|
|
|
8881
|
"\n",
|
|
|
8882
|
" this._init_header(this);\n",
|
|
|
8883
|
" this._init_canvas(this);\n",
|
|
|
8884
|
" this._init_toolbar(this);\n",
|
|
|
8885
|
"\n",
|
|
|
8886
|
" var fig = this;\n",
|
|
|
8887
|
"\n",
|
|
|
8888
|
" this.waiting = false;\n",
|
|
|
8889
|
"\n",
|
|
|
8890
|
" this.ws.onopen = function () {\n",
|
|
|
8891
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
8892
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
8893
|
" if (mpl.ratio != 1) {\n",
|
|
|
8894
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
8895
|
" }\n",
|
|
|
8896
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
8897
|
" }\n",
|
|
|
8898
|
"\n",
|
|
|
8899
|
" this.imageObj.onload = function() {\n",
|
|
|
8900
|
" if (fig.image_mode == 'full') {\n",
|
|
|
8901
|
" // Full images could contain transparency (where diff images\n",
|
|
|
8902
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
8903
|
" // there is no ghosting.\n",
|
|
|
8904
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
8905
|
" }\n",
|
|
|
8906
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
8907
|
" };\n",
|
|
|
8908
|
"\n",
|
|
|
8909
|
" this.imageObj.onunload = function() {\n",
|
|
|
8910
|
" fig.ws.close();\n",
|
|
|
8911
|
" }\n",
|
|
|
8912
|
"\n",
|
|
|
8913
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
8914
|
"\n",
|
|
|
8915
|
" this.ondownload = ondownload;\n",
|
|
|
8916
|
"}\n",
|
|
|
8917
|
"\n",
|
|
|
8918
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
8919
|
" var titlebar = $(\n",
|
|
|
8920
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
8921
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
8922
|
" var titletext = $(\n",
|
|
|
8923
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
8924
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
8925
|
" titlebar.append(titletext)\n",
|
|
|
8926
|
" this.root.append(titlebar);\n",
|
|
|
8927
|
" this.header = titletext[0];\n",
|
|
|
8928
|
"}\n",
|
|
|
8929
|
"\n",
|
|
|
8930
|
"\n",
|
|
|
8931
|
"\n",
|
|
|
8932
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
8933
|
"\n",
|
|
|
8934
|
"}\n",
|
|
|
8935
|
"\n",
|
|
|
8936
|
"\n",
|
|
|
8937
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
8938
|
"\n",
|
|
|
8939
|
"}\n",
|
|
|
8940
|
"\n",
|
|
|
8941
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
8942
|
" var fig = this;\n",
|
|
|
8943
|
"\n",
|
|
|
8944
|
" var canvas_div = $('<div/>');\n",
|
|
|
8945
|
"\n",
|
|
|
8946
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
8947
|
"\n",
|
|
|
8948
|
" function canvas_keyboard_event(event) {\n",
|
|
|
8949
|
" return fig.key_event(event, event['data']);\n",
|
|
|
8950
|
" }\n",
|
|
|
8951
|
"\n",
|
|
|
8952
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
8953
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
8954
|
" this.canvas_div = canvas_div\n",
|
|
|
8955
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
8956
|
" this.root.append(canvas_div);\n",
|
|
|
8957
|
"\n",
|
|
|
8958
|
" var canvas = $('<canvas/>');\n",
|
|
|
8959
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
8960
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
8961
|
"\n",
|
|
|
8962
|
" this.canvas = canvas[0];\n",
|
|
|
8963
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
8964
|
"\n",
|
|
|
8965
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
8966
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
8967
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
8968
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
8969
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
8970
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
8971
|
"\n",
|
|
|
8972
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
8973
|
"\n",
|
|
|
8974
|
" var rubberband = $('<canvas/>');\n",
|
|
|
8975
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
8976
|
"\n",
|
|
|
8977
|
" var pass_mouse_events = true;\n",
|
|
|
8978
|
"\n",
|
|
|
8979
|
" canvas_div.resizable({\n",
|
|
|
8980
|
" start: function(event, ui) {\n",
|
|
|
8981
|
" pass_mouse_events = false;\n",
|
|
|
8982
|
" },\n",
|
|
|
8983
|
" resize: function(event, ui) {\n",
|
|
|
8984
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
8985
|
" },\n",
|
|
|
8986
|
" stop: function(event, ui) {\n",
|
|
|
8987
|
" pass_mouse_events = true;\n",
|
|
|
8988
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
8989
|
" },\n",
|
|
|
8990
|
" });\n",
|
|
|
8991
|
"\n",
|
|
|
8992
|
" function mouse_event_fn(event) {\n",
|
|
|
8993
|
" if (pass_mouse_events)\n",
|
|
|
8994
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
8995
|
" }\n",
|
|
|
8996
|
"\n",
|
|
|
8997
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
8998
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
8999
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
9000
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
9001
|
"\n",
|
|
|
9002
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
9003
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
9004
|
"\n",
|
|
|
9005
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
9006
|
" event = event.originalEvent;\n",
|
|
|
9007
|
" event['data'] = 'scroll'\n",
|
|
|
9008
|
" if (event.deltaY < 0) {\n",
|
|
|
9009
|
" event.step = 1;\n",
|
|
|
9010
|
" } else {\n",
|
|
|
9011
|
" event.step = -1;\n",
|
|
|
9012
|
" }\n",
|
|
|
9013
|
" mouse_event_fn(event);\n",
|
|
|
9014
|
" });\n",
|
|
|
9015
|
"\n",
|
|
|
9016
|
" canvas_div.append(canvas);\n",
|
|
|
9017
|
" canvas_div.append(rubberband);\n",
|
|
|
9018
|
"\n",
|
|
|
9019
|
" this.rubberband = rubberband;\n",
|
|
|
9020
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
9021
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
9022
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
9023
|
"\n",
|
|
|
9024
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
9025
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
9026
|
" // canvas in synch.\n",
|
|
|
9027
|
" canvas_div.css('width', width)\n",
|
|
|
9028
|
" canvas_div.css('height', height)\n",
|
|
|
9029
|
"\n",
|
|
|
9030
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
9031
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
9032
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
9033
|
"\n",
|
|
|
9034
|
" rubberband.attr('width', width);\n",
|
|
|
9035
|
" rubberband.attr('height', height);\n",
|
|
|
9036
|
" }\n",
|
|
|
9037
|
"\n",
|
|
|
9038
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
9039
|
" // upon first draw.\n",
|
|
|
9040
|
" this._resize_canvas(600, 600);\n",
|
|
|
9041
|
"\n",
|
|
|
9042
|
" // Disable right mouse context menu.\n",
|
|
|
9043
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
9044
|
" return false;\n",
|
|
|
9045
|
" });\n",
|
|
|
9046
|
"\n",
|
|
|
9047
|
" function set_focus () {\n",
|
|
|
9048
|
" canvas.focus();\n",
|
|
|
9049
|
" canvas_div.focus();\n",
|
|
|
9050
|
" }\n",
|
|
|
9051
|
"\n",
|
|
|
9052
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
9053
|
"}\n",
|
|
|
9054
|
"\n",
|
|
|
9055
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
9056
|
" var fig = this;\n",
|
|
|
9057
|
"\n",
|
|
|
9058
|
" var nav_element = $('<div/>')\n",
|
|
|
9059
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
9060
|
" this.root.append(nav_element);\n",
|
|
|
9061
|
"\n",
|
|
|
9062
|
" // Define a callback function for later on.\n",
|
|
|
9063
|
" function toolbar_event(event) {\n",
|
|
|
9064
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
9065
|
" }\n",
|
|
|
9066
|
" function toolbar_mouse_event(event) {\n",
|
|
|
9067
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
9068
|
" }\n",
|
|
|
9069
|
"\n",
|
|
|
9070
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
9071
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
9072
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
9073
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
9074
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
9075
|
"\n",
|
|
|
9076
|
" if (!name) {\n",
|
|
|
9077
|
" // put a spacer in here.\n",
|
|
|
9078
|
" continue;\n",
|
|
|
9079
|
" }\n",
|
|
|
9080
|
" var button = $('<button/>');\n",
|
|
|
9081
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
9082
|
" 'ui-button-icon-only');\n",
|
|
|
9083
|
" button.attr('role', 'button');\n",
|
|
|
9084
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
9085
|
" button.click(method_name, toolbar_event);\n",
|
|
|
9086
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
9087
|
"\n",
|
|
|
9088
|
" var icon_img = $('<span/>');\n",
|
|
|
9089
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
9090
|
" icon_img.addClass(image);\n",
|
|
|
9091
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
9092
|
"\n",
|
|
|
9093
|
" var tooltip_span = $('<span/>');\n",
|
|
|
9094
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
9095
|
" tooltip_span.html(tooltip);\n",
|
|
|
9096
|
"\n",
|
|
|
9097
|
" button.append(icon_img);\n",
|
|
|
9098
|
" button.append(tooltip_span);\n",
|
|
|
9099
|
"\n",
|
|
|
9100
|
" nav_element.append(button);\n",
|
|
|
9101
|
" }\n",
|
|
|
9102
|
"\n",
|
|
|
9103
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
9104
|
"\n",
|
|
|
9105
|
" var fmt_picker = $('<select/>');\n",
|
|
|
9106
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
9107
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
9108
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
9109
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
9110
|
"\n",
|
|
|
9111
|
" for (var ind in mpl.extensions) {\n",
|
|
|
9112
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
9113
|
" var option = $(\n",
|
|
|
9114
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
9115
|
" fmt_picker.append(option)\n",
|
|
|
9116
|
" }\n",
|
|
|
9117
|
"\n",
|
|
|
9118
|
" // Add hover states to the ui-buttons\n",
|
|
|
9119
|
" $( \".ui-button\" ).hover(\n",
|
|
|
9120
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
9121
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
9122
|
" );\n",
|
|
|
9123
|
"\n",
|
|
|
9124
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
9125
|
" nav_element.append(status_bar);\n",
|
|
|
9126
|
" this.message = status_bar[0];\n",
|
|
|
9127
|
"}\n",
|
|
|
9128
|
"\n",
|
|
|
9129
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
9130
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
9131
|
" // which will in turn request a refresh of the image.\n",
|
|
|
9132
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
9133
|
"}\n",
|
|
|
9134
|
"\n",
|
|
|
9135
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
9136
|
" properties['type'] = type;\n",
|
|
|
9137
|
" properties['figure_id'] = this.id;\n",
|
|
|
9138
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
9139
|
"}\n",
|
|
|
9140
|
"\n",
|
|
|
9141
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
9142
|
" if (!this.waiting) {\n",
|
|
|
9143
|
" this.waiting = true;\n",
|
|
|
9144
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
9145
|
" }\n",
|
|
|
9146
|
"}\n",
|
|
|
9147
|
"\n",
|
|
|
9148
|
"\n",
|
|
|
9149
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
9150
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
9151
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
9152
|
" fig.ondownload(fig, format);\n",
|
|
|
9153
|
"}\n",
|
|
|
9154
|
"\n",
|
|
|
9155
|
"\n",
|
|
|
9156
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
9157
|
" var size = msg['size'];\n",
|
|
|
9158
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
9159
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
9160
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
9161
|
" };\n",
|
|
|
9162
|
"}\n",
|
|
|
9163
|
"\n",
|
|
|
9164
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
9165
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
9166
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
9167
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
9168
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
9169
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
9170
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
9171
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
9172
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
9173
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
9174
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
9175
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
9176
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
9177
|
"\n",
|
|
|
9178
|
" fig.rubberband_context.clearRect(\n",
|
|
|
9179
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
9180
|
"\n",
|
|
|
9181
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
9182
|
"}\n",
|
|
|
9183
|
"\n",
|
|
|
9184
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
9185
|
" // Updates the figure title.\n",
|
|
|
9186
|
" fig.header.textContent = msg['label'];\n",
|
|
|
9187
|
"}\n",
|
|
|
9188
|
"\n",
|
|
|
9189
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
9190
|
" var cursor = msg['cursor'];\n",
|
|
|
9191
|
" switch(cursor)\n",
|
|
|
9192
|
" {\n",
|
|
|
9193
|
" case 0:\n",
|
|
|
9194
|
" cursor = 'pointer';\n",
|
|
|
9195
|
" break;\n",
|
|
|
9196
|
" case 1:\n",
|
|
|
9197
|
" cursor = 'default';\n",
|
|
|
9198
|
" break;\n",
|
|
|
9199
|
" case 2:\n",
|
|
|
9200
|
" cursor = 'crosshair';\n",
|
|
|
9201
|
" break;\n",
|
|
|
9202
|
" case 3:\n",
|
|
|
9203
|
" cursor = 'move';\n",
|
|
|
9204
|
" break;\n",
|
|
|
9205
|
" }\n",
|
|
|
9206
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
9207
|
"}\n",
|
|
|
9208
|
"\n",
|
|
|
9209
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
9210
|
" fig.message.textContent = msg['message'];\n",
|
|
|
9211
|
"}\n",
|
|
|
9212
|
"\n",
|
|
|
9213
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
9214
|
" // Request the server to send over a new figure.\n",
|
|
|
9215
|
" fig.send_draw_message();\n",
|
|
|
9216
|
"}\n",
|
|
|
9217
|
"\n",
|
|
|
9218
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
9219
|
" fig.image_mode = msg['mode'];\n",
|
|
|
9220
|
"}\n",
|
|
|
9221
|
"\n",
|
|
|
9222
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
9223
|
" // Called whenever the canvas gets updated.\n",
|
|
|
9224
|
" this.send_message(\"ack\", {});\n",
|
|
|
9225
|
"}\n",
|
|
|
9226
|
"\n",
|
|
|
9227
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
9228
|
"// Called in the figure constructor.\n",
|
|
|
9229
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
9230
|
" return function socket_on_message(evt) {\n",
|
|
|
9231
|
" if (evt.data instanceof Blob) {\n",
|
|
|
9232
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
9233
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
9234
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
9235
|
" * to be part of the websocket stream */\n",
|
|
|
9236
|
" evt.data.type = \"image/png\";\n",
|
|
|
9237
|
"\n",
|
|
|
9238
|
" /* Free the memory for the previous frames */\n",
|
|
|
9239
|
" if (fig.imageObj.src) {\n",
|
|
|
9240
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
9241
|
" fig.imageObj.src);\n",
|
|
|
9242
|
" }\n",
|
|
|
9243
|
"\n",
|
|
|
9244
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
9245
|
" evt.data);\n",
|
|
|
9246
|
" fig.updated_canvas_event();\n",
|
|
|
9247
|
" fig.waiting = false;\n",
|
|
|
9248
|
" return;\n",
|
|
|
9249
|
" }\n",
|
|
|
9250
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
9251
|
" fig.imageObj.src = evt.data;\n",
|
|
|
9252
|
" fig.updated_canvas_event();\n",
|
|
|
9253
|
" fig.waiting = false;\n",
|
|
|
9254
|
" return;\n",
|
|
|
9255
|
" }\n",
|
|
|
9256
|
"\n",
|
|
|
9257
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
9258
|
" var msg_type = msg['type'];\n",
|
|
|
9259
|
"\n",
|
|
|
9260
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
9261
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
9262
|
" try {\n",
|
|
|
9263
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
9264
|
" } catch (e) {\n",
|
|
|
9265
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
9266
|
" return;\n",
|
|
|
9267
|
" }\n",
|
|
|
9268
|
"\n",
|
|
|
9269
|
" if (callback) {\n",
|
|
|
9270
|
" try {\n",
|
|
|
9271
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
9272
|
" callback(fig, msg);\n",
|
|
|
9273
|
" } catch (e) {\n",
|
|
|
9274
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
9275
|
" }\n",
|
|
|
9276
|
" }\n",
|
|
|
9277
|
" };\n",
|
|
|
9278
|
"}\n",
|
|
|
9279
|
"\n",
|
|
|
9280
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
9281
|
"mpl.findpos = function(e) {\n",
|
|
|
9282
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
9283
|
" var targ;\n",
|
|
|
9284
|
" if (!e)\n",
|
|
|
9285
|
" e = window.event;\n",
|
|
|
9286
|
" if (e.target)\n",
|
|
|
9287
|
" targ = e.target;\n",
|
|
|
9288
|
" else if (e.srcElement)\n",
|
|
|
9289
|
" targ = e.srcElement;\n",
|
|
|
9290
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
9291
|
" targ = targ.parentNode;\n",
|
|
|
9292
|
"\n",
|
|
|
9293
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
9294
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
9295
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
9296
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
9297
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
9298
|
"\n",
|
|
|
9299
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
9300
|
"};\n",
|
|
|
9301
|
"\n",
|
|
|
9302
|
"/*\n",
|
|
|
9303
|
" * return a copy of an object with only non-object keys\n",
|
|
|
9304
|
" * we need this to avoid circular references\n",
|
|
|
9305
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
9306
|
" */\n",
|
|
|
9307
|
"function simpleKeys (original) {\n",
|
|
|
9308
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
9309
|
" if (typeof original[key] !== 'object')\n",
|
|
|
9310
|
" obj[key] = original[key]\n",
|
|
|
9311
|
" return obj;\n",
|
|
|
9312
|
" }, {});\n",
|
|
|
9313
|
"}\n",
|
|
|
9314
|
"\n",
|
|
|
9315
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
9316
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
9317
|
"\n",
|
|
|
9318
|
" if (name === 'button_press')\n",
|
|
|
9319
|
" {\n",
|
|
|
9320
|
" this.canvas.focus();\n",
|
|
|
9321
|
" this.canvas_div.focus();\n",
|
|
|
9322
|
" }\n",
|
|
|
9323
|
"\n",
|
|
|
9324
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
9325
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
9326
|
"\n",
|
|
|
9327
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
9328
|
" step: event.step,\n",
|
|
|
9329
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
9330
|
"\n",
|
|
|
9331
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
9332
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
9333
|
" * to control all of the cursor setting manually through the\n",
|
|
|
9334
|
" * 'cursor' event from matplotlib */\n",
|
|
|
9335
|
" event.preventDefault();\n",
|
|
|
9336
|
" return false;\n",
|
|
|
9337
|
"}\n",
|
|
|
9338
|
"\n",
|
|
|
9339
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
9340
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
9341
|
"}\n",
|
|
|
9342
|
"\n",
|
|
|
9343
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
9344
|
"\n",
|
|
|
9345
|
" // Prevent repeat events\n",
|
|
|
9346
|
" if (name == 'key_press')\n",
|
|
|
9347
|
" {\n",
|
|
|
9348
|
" if (event.which === this._key)\n",
|
|
|
9349
|
" return;\n",
|
|
|
9350
|
" else\n",
|
|
|
9351
|
" this._key = event.which;\n",
|
|
|
9352
|
" }\n",
|
|
|
9353
|
" if (name == 'key_release')\n",
|
|
|
9354
|
" this._key = null;\n",
|
|
|
9355
|
"\n",
|
|
|
9356
|
" var value = '';\n",
|
|
|
9357
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
9358
|
" value += \"ctrl+\";\n",
|
|
|
9359
|
" if (event.altKey && event.which != 18)\n",
|
|
|
9360
|
" value += \"alt+\";\n",
|
|
|
9361
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
9362
|
" value += \"shift+\";\n",
|
|
|
9363
|
"\n",
|
|
|
9364
|
" value += 'k';\n",
|
|
|
9365
|
" value += event.which.toString();\n",
|
|
|
9366
|
"\n",
|
|
|
9367
|
" this._key_event_extra(event, name);\n",
|
|
|
9368
|
"\n",
|
|
|
9369
|
" this.send_message(name, {key: value,\n",
|
|
|
9370
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
9371
|
" return false;\n",
|
|
|
9372
|
"}\n",
|
|
|
9373
|
"\n",
|
|
|
9374
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
9375
|
" if (name == 'download') {\n",
|
|
|
9376
|
" this.handle_save(this, null);\n",
|
|
|
9377
|
" } else {\n",
|
|
|
9378
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
9379
|
" }\n",
|
|
|
9380
|
"};\n",
|
|
|
9381
|
"\n",
|
|
|
9382
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
9383
|
" this.message.textContent = tooltip;\n",
|
|
|
9384
|
"};\n",
|
|
|
9385
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
9386
|
"\n",
|
|
|
9387
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
9388
|
"\n",
|
|
|
9389
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
9390
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
9391
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
9392
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
9393
|
" var ws = {};\n",
|
|
|
9394
|
"\n",
|
|
|
9395
|
" ws.close = function() {\n",
|
|
|
9396
|
" comm.close()\n",
|
|
|
9397
|
" };\n",
|
|
|
9398
|
" ws.send = function(m) {\n",
|
|
|
9399
|
" //console.log('sending', m);\n",
|
|
|
9400
|
" comm.send(m);\n",
|
|
|
9401
|
" };\n",
|
|
|
9402
|
" // Register the callback with on_msg.\n",
|
|
|
9403
|
" comm.on_msg(function(msg) {\n",
|
|
|
9404
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
9405
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
9406
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
9407
|
" });\n",
|
|
|
9408
|
" return ws;\n",
|
|
|
9409
|
"}\n",
|
|
|
9410
|
"\n",
|
|
|
9411
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
9412
|
" // This is the function which gets called when the mpl process\n",
|
|
|
9413
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
9414
|
"\n",
|
|
|
9415
|
" var id = msg.content.data.id;\n",
|
|
|
9416
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
9417
|
" // socket was opened in Python.\n",
|
|
|
9418
|
" var element = $(\"#\" + id);\n",
|
|
|
9419
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
9420
|
"\n",
|
|
|
9421
|
" function ondownload(figure, format) {\n",
|
|
|
9422
|
" window.open(figure.imageObj.src);\n",
|
|
|
9423
|
" }\n",
|
|
|
9424
|
"\n",
|
|
|
9425
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
9426
|
" ondownload,\n",
|
|
|
9427
|
" element.get(0));\n",
|
|
|
9428
|
"\n",
|
|
|
9429
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
9430
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
9431
|
" ws_proxy.onopen();\n",
|
|
|
9432
|
"\n",
|
|
|
9433
|
" fig.parent_element = element.get(0);\n",
|
|
|
9434
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
9435
|
" if (!fig.cell_info) {\n",
|
|
|
9436
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
9437
|
" return;\n",
|
|
|
9438
|
" }\n",
|
|
|
9439
|
"\n",
|
|
|
9440
|
" var output_index = fig.cell_info[2]\n",
|
|
|
9441
|
" var cell = fig.cell_info[0];\n",
|
|
|
9442
|
"\n",
|
|
|
9443
|
"};\n",
|
|
|
9444
|
"\n",
|
|
|
9445
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
9446
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
9447
|
" fig.root.unbind('remove')\n",
|
|
|
9448
|
"\n",
|
|
|
9449
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
9450
|
" fig.push_to_output();\n",
|
|
|
9451
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
9452
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
9453
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
9454
|
" IPython.keyboard_manager.enable()\n",
|
|
|
9455
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
9456
|
" fig.close_ws(fig, msg);\n",
|
|
|
9457
|
"}\n",
|
|
|
9458
|
"\n",
|
|
|
9459
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
9460
|
" fig.send_message('closing', msg);\n",
|
|
|
9461
|
" // fig.ws.close()\n",
|
|
|
9462
|
"}\n",
|
|
|
9463
|
"\n",
|
|
|
9464
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
9465
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
9466
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
9467
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
9468
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
9469
|
"}\n",
|
|
|
9470
|
"\n",
|
|
|
9471
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
9472
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
9473
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
9474
|
" this.send_message(\"ack\", {});\n",
|
|
|
9475
|
" var fig = this;\n",
|
|
|
9476
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
9477
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
9478
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
9479
|
"}\n",
|
|
|
9480
|
"\n",
|
|
|
9481
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
9482
|
" var fig = this;\n",
|
|
|
9483
|
"\n",
|
|
|
9484
|
" var nav_element = $('<div/>')\n",
|
|
|
9485
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
9486
|
" this.root.append(nav_element);\n",
|
|
|
9487
|
"\n",
|
|
|
9488
|
" // Define a callback function for later on.\n",
|
|
|
9489
|
" function toolbar_event(event) {\n",
|
|
|
9490
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
9491
|
" }\n",
|
|
|
9492
|
" function toolbar_mouse_event(event) {\n",
|
|
|
9493
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
9494
|
" }\n",
|
|
|
9495
|
"\n",
|
|
|
9496
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
9497
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
9498
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
9499
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
9500
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
9501
|
"\n",
|
|
|
9502
|
" if (!name) { continue; };\n",
|
|
|
9503
|
"\n",
|
|
|
9504
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
9505
|
" button.click(method_name, toolbar_event);\n",
|
|
|
9506
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
9507
|
" nav_element.append(button);\n",
|
|
|
9508
|
" }\n",
|
|
|
9509
|
"\n",
|
|
|
9510
|
" // Add the status bar.\n",
|
|
|
9511
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
9512
|
" nav_element.append(status_bar);\n",
|
|
|
9513
|
" this.message = status_bar[0];\n",
|
|
|
9514
|
"\n",
|
|
|
9515
|
" // Add the close button to the window.\n",
|
|
|
9516
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
9517
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
9518
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
9519
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
9520
|
" buttongrp.append(button);\n",
|
|
|
9521
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
9522
|
" titlebar.prepend(buttongrp);\n",
|
|
|
9523
|
"}\n",
|
|
|
9524
|
"\n",
|
|
|
9525
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
9526
|
" var fig = this\n",
|
|
|
9527
|
" el.on(\"remove\", function(){\n",
|
|
|
9528
|
"\tfig.close_ws(fig, {});\n",
|
|
|
9529
|
" });\n",
|
|
|
9530
|
"}\n",
|
|
|
9531
|
"\n",
|
|
|
9532
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
9533
|
" // this is important to make the div 'focusable\n",
|
|
|
9534
|
" el.attr('tabindex', 0)\n",
|
|
|
9535
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
9536
|
" // off when our div gets focus\n",
|
|
|
9537
|
"\n",
|
|
|
9538
|
" // location in version 3\n",
|
|
|
9539
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
9540
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
9541
|
" }\n",
|
|
|
9542
|
" else {\n",
|
|
|
9543
|
" // location in version 2\n",
|
|
|
9544
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
9545
|
" }\n",
|
|
|
9546
|
"\n",
|
|
|
9547
|
"}\n",
|
|
|
9548
|
"\n",
|
|
|
9549
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
9550
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
9551
|
" if (!manager)\n",
|
|
|
9552
|
" manager = IPython.keyboard_manager;\n",
|
|
|
9553
|
"\n",
|
|
|
9554
|
" // Check for shift+enter\n",
|
|
|
9555
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
9556
|
" this.canvas_div.blur();\n",
|
|
|
9557
|
" event.shiftKey = false;\n",
|
|
|
9558
|
" // Send a \"J\" for go to next cell\n",
|
|
|
9559
|
" event.which = 74;\n",
|
|
|
9560
|
" event.keyCode = 74;\n",
|
|
|
9561
|
" manager.command_mode();\n",
|
|
|
9562
|
" manager.handle_keydown(event);\n",
|
|
|
9563
|
" }\n",
|
|
|
9564
|
"}\n",
|
|
|
9565
|
"\n",
|
|
|
9566
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
9567
|
" fig.ondownload(fig, null);\n",
|
|
|
9568
|
"}\n",
|
|
|
9569
|
"\n",
|
|
|
9570
|
"\n",
|
|
|
9571
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
9572
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
9573
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
9574
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
9575
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
9576
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
9577
|
" var ncells = cells.length;\n",
|
|
|
9578
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
9579
|
" var cell = cells[i];\n",
|
|
|
9580
|
" if (cell.cell_type === 'code'){\n",
|
|
|
9581
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
9582
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
9583
|
" if (data.data) {\n",
|
|
|
9584
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
9585
|
" data = data.data;\n",
|
|
|
9586
|
" }\n",
|
|
|
9587
|
" if (data['text/html'] == html_output) {\n",
|
|
|
9588
|
" return [cell, data, j];\n",
|
|
|
9589
|
" }\n",
|
|
|
9590
|
" }\n",
|
|
|
9591
|
" }\n",
|
|
|
9592
|
" }\n",
|
|
|
9593
|
"}\n",
|
|
|
9594
|
"\n",
|
|
|
9595
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
9596
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
9597
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
9598
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
9599
|
"}\n"
|
|
|
9600
|
],
|
|
|
9601
|
"text/plain": [
|
|
|
9602
|
"<IPython.core.display.Javascript object>"
|
|
|
9603
|
]
|
|
|
9604
|
},
|
|
|
9605
|
"metadata": {},
|
|
|
9606
|
"output_type": "display_data"
|
|
|
9607
|
},
|
|
|
9608
|
{
|
|
|
9609
|
"data": {
|
|
|
9610
|
"text/html": [
|
|
|
9611
|
"<img src=\"data:image/png;base64,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\" width=\"1600\">"
|
|
|
9612
|
],
|
|
|
9613
|
"text/plain": [
|
|
|
9614
|
"<IPython.core.display.HTML object>"
|
|
|
9615
|
]
|
|
|
9616
|
},
|
|
|
9617
|
"metadata": {},
|
|
|
9618
|
"output_type": "display_data"
|
|
|
9619
|
},
|
|
|
9620
|
{
|
|
|
9621
|
"data": {
|
|
|
9622
|
"application/javascript": [
|
|
|
9623
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
9624
|
"window.mpl = {};\n",
|
|
|
9625
|
"\n",
|
|
|
9626
|
"\n",
|
|
|
9627
|
"mpl.get_websocket_type = function() {\n",
|
|
|
9628
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
9629
|
" return WebSocket;\n",
|
|
|
9630
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
9631
|
" return MozWebSocket;\n",
|
|
|
9632
|
" } else {\n",
|
|
|
9633
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
9634
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
9635
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
9636
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
9637
|
" };\n",
|
|
|
9638
|
"}\n",
|
|
|
9639
|
"\n",
|
|
|
9640
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
9641
|
" this.id = figure_id;\n",
|
|
|
9642
|
"\n",
|
|
|
9643
|
" this.ws = websocket;\n",
|
|
|
9644
|
"\n",
|
|
|
9645
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
9646
|
"\n",
|
|
|
9647
|
" if (!this.supports_binary) {\n",
|
|
|
9648
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
9649
|
" if (warnings) {\n",
|
|
|
9650
|
" warnings.style.display = 'block';\n",
|
|
|
9651
|
" warnings.textContent = (\n",
|
|
|
9652
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
9653
|
" \"Performance may be slow.\");\n",
|
|
|
9654
|
" }\n",
|
|
|
9655
|
" }\n",
|
|
|
9656
|
"\n",
|
|
|
9657
|
" this.imageObj = new Image();\n",
|
|
|
9658
|
"\n",
|
|
|
9659
|
" this.context = undefined;\n",
|
|
|
9660
|
" this.message = undefined;\n",
|
|
|
9661
|
" this.canvas = undefined;\n",
|
|
|
9662
|
" this.rubberband_canvas = undefined;\n",
|
|
|
9663
|
" this.rubberband_context = undefined;\n",
|
|
|
9664
|
" this.format_dropdown = undefined;\n",
|
|
|
9665
|
"\n",
|
|
|
9666
|
" this.image_mode = 'full';\n",
|
|
|
9667
|
"\n",
|
|
|
9668
|
" this.root = $('<div/>');\n",
|
|
|
9669
|
" this._root_extra_style(this.root)\n",
|
|
|
9670
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
9671
|
"\n",
|
|
|
9672
|
" $(parent_element).append(this.root);\n",
|
|
|
9673
|
"\n",
|
|
|
9674
|
" this._init_header(this);\n",
|
|
|
9675
|
" this._init_canvas(this);\n",
|
|
|
9676
|
" this._init_toolbar(this);\n",
|
|
|
9677
|
"\n",
|
|
|
9678
|
" var fig = this;\n",
|
|
|
9679
|
"\n",
|
|
|
9680
|
" this.waiting = false;\n",
|
|
|
9681
|
"\n",
|
|
|
9682
|
" this.ws.onopen = function () {\n",
|
|
|
9683
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
9684
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
9685
|
" if (mpl.ratio != 1) {\n",
|
|
|
9686
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
9687
|
" }\n",
|
|
|
9688
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
9689
|
" }\n",
|
|
|
9690
|
"\n",
|
|
|
9691
|
" this.imageObj.onload = function() {\n",
|
|
|
9692
|
" if (fig.image_mode == 'full') {\n",
|
|
|
9693
|
" // Full images could contain transparency (where diff images\n",
|
|
|
9694
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
9695
|
" // there is no ghosting.\n",
|
|
|
9696
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
9697
|
" }\n",
|
|
|
9698
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
9699
|
" };\n",
|
|
|
9700
|
"\n",
|
|
|
9701
|
" this.imageObj.onunload = function() {\n",
|
|
|
9702
|
" fig.ws.close();\n",
|
|
|
9703
|
" }\n",
|
|
|
9704
|
"\n",
|
|
|
9705
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
9706
|
"\n",
|
|
|
9707
|
" this.ondownload = ondownload;\n",
|
|
|
9708
|
"}\n",
|
|
|
9709
|
"\n",
|
|
|
9710
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
9711
|
" var titlebar = $(\n",
|
|
|
9712
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
9713
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
9714
|
" var titletext = $(\n",
|
|
|
9715
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
9716
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
9717
|
" titlebar.append(titletext)\n",
|
|
|
9718
|
" this.root.append(titlebar);\n",
|
|
|
9719
|
" this.header = titletext[0];\n",
|
|
|
9720
|
"}\n",
|
|
|
9721
|
"\n",
|
|
|
9722
|
"\n",
|
|
|
9723
|
"\n",
|
|
|
9724
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
9725
|
"\n",
|
|
|
9726
|
"}\n",
|
|
|
9727
|
"\n",
|
|
|
9728
|
"\n",
|
|
|
9729
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
9730
|
"\n",
|
|
|
9731
|
"}\n",
|
|
|
9732
|
"\n",
|
|
|
9733
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
9734
|
" var fig = this;\n",
|
|
|
9735
|
"\n",
|
|
|
9736
|
" var canvas_div = $('<div/>');\n",
|
|
|
9737
|
"\n",
|
|
|
9738
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
9739
|
"\n",
|
|
|
9740
|
" function canvas_keyboard_event(event) {\n",
|
|
|
9741
|
" return fig.key_event(event, event['data']);\n",
|
|
|
9742
|
" }\n",
|
|
|
9743
|
"\n",
|
|
|
9744
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
9745
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
9746
|
" this.canvas_div = canvas_div\n",
|
|
|
9747
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
9748
|
" this.root.append(canvas_div);\n",
|
|
|
9749
|
"\n",
|
|
|
9750
|
" var canvas = $('<canvas/>');\n",
|
|
|
9751
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
9752
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
9753
|
"\n",
|
|
|
9754
|
" this.canvas = canvas[0];\n",
|
|
|
9755
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
9756
|
"\n",
|
|
|
9757
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
9758
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
9759
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
9760
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
9761
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
9762
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
9763
|
"\n",
|
|
|
9764
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
9765
|
"\n",
|
|
|
9766
|
" var rubberband = $('<canvas/>');\n",
|
|
|
9767
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
9768
|
"\n",
|
|
|
9769
|
" var pass_mouse_events = true;\n",
|
|
|
9770
|
"\n",
|
|
|
9771
|
" canvas_div.resizable({\n",
|
|
|
9772
|
" start: function(event, ui) {\n",
|
|
|
9773
|
" pass_mouse_events = false;\n",
|
|
|
9774
|
" },\n",
|
|
|
9775
|
" resize: function(event, ui) {\n",
|
|
|
9776
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
9777
|
" },\n",
|
|
|
9778
|
" stop: function(event, ui) {\n",
|
|
|
9779
|
" pass_mouse_events = true;\n",
|
|
|
9780
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
9781
|
" },\n",
|
|
|
9782
|
" });\n",
|
|
|
9783
|
"\n",
|
|
|
9784
|
" function mouse_event_fn(event) {\n",
|
|
|
9785
|
" if (pass_mouse_events)\n",
|
|
|
9786
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
9787
|
" }\n",
|
|
|
9788
|
"\n",
|
|
|
9789
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
9790
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
9791
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
9792
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
9793
|
"\n",
|
|
|
9794
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
9795
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
9796
|
"\n",
|
|
|
9797
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
9798
|
" event = event.originalEvent;\n",
|
|
|
9799
|
" event['data'] = 'scroll'\n",
|
|
|
9800
|
" if (event.deltaY < 0) {\n",
|
|
|
9801
|
" event.step = 1;\n",
|
|
|
9802
|
" } else {\n",
|
|
|
9803
|
" event.step = -1;\n",
|
|
|
9804
|
" }\n",
|
|
|
9805
|
" mouse_event_fn(event);\n",
|
|
|
9806
|
" });\n",
|
|
|
9807
|
"\n",
|
|
|
9808
|
" canvas_div.append(canvas);\n",
|
|
|
9809
|
" canvas_div.append(rubberband);\n",
|
|
|
9810
|
"\n",
|
|
|
9811
|
" this.rubberband = rubberband;\n",
|
|
|
9812
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
9813
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
9814
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
9815
|
"\n",
|
|
|
9816
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
9817
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
9818
|
" // canvas in synch.\n",
|
|
|
9819
|
" canvas_div.css('width', width)\n",
|
|
|
9820
|
" canvas_div.css('height', height)\n",
|
|
|
9821
|
"\n",
|
|
|
9822
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
9823
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
9824
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
9825
|
"\n",
|
|
|
9826
|
" rubberband.attr('width', width);\n",
|
|
|
9827
|
" rubberband.attr('height', height);\n",
|
|
|
9828
|
" }\n",
|
|
|
9829
|
"\n",
|
|
|
9830
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
9831
|
" // upon first draw.\n",
|
|
|
9832
|
" this._resize_canvas(600, 600);\n",
|
|
|
9833
|
"\n",
|
|
|
9834
|
" // Disable right mouse context menu.\n",
|
|
|
9835
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
9836
|
" return false;\n",
|
|
|
9837
|
" });\n",
|
|
|
9838
|
"\n",
|
|
|
9839
|
" function set_focus () {\n",
|
|
|
9840
|
" canvas.focus();\n",
|
|
|
9841
|
" canvas_div.focus();\n",
|
|
|
9842
|
" }\n",
|
|
|
9843
|
"\n",
|
|
|
9844
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
9845
|
"}\n",
|
|
|
9846
|
"\n",
|
|
|
9847
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
9848
|
" var fig = this;\n",
|
|
|
9849
|
"\n",
|
|
|
9850
|
" var nav_element = $('<div/>')\n",
|
|
|
9851
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
9852
|
" this.root.append(nav_element);\n",
|
|
|
9853
|
"\n",
|
|
|
9854
|
" // Define a callback function for later on.\n",
|
|
|
9855
|
" function toolbar_event(event) {\n",
|
|
|
9856
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
9857
|
" }\n",
|
|
|
9858
|
" function toolbar_mouse_event(event) {\n",
|
|
|
9859
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
9860
|
" }\n",
|
|
|
9861
|
"\n",
|
|
|
9862
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
9863
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
9864
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
9865
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
9866
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
9867
|
"\n",
|
|
|
9868
|
" if (!name) {\n",
|
|
|
9869
|
" // put a spacer in here.\n",
|
|
|
9870
|
" continue;\n",
|
|
|
9871
|
" }\n",
|
|
|
9872
|
" var button = $('<button/>');\n",
|
|
|
9873
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
9874
|
" 'ui-button-icon-only');\n",
|
|
|
9875
|
" button.attr('role', 'button');\n",
|
|
|
9876
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
9877
|
" button.click(method_name, toolbar_event);\n",
|
|
|
9878
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
9879
|
"\n",
|
|
|
9880
|
" var icon_img = $('<span/>');\n",
|
|
|
9881
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
9882
|
" icon_img.addClass(image);\n",
|
|
|
9883
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
9884
|
"\n",
|
|
|
9885
|
" var tooltip_span = $('<span/>');\n",
|
|
|
9886
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
9887
|
" tooltip_span.html(tooltip);\n",
|
|
|
9888
|
"\n",
|
|
|
9889
|
" button.append(icon_img);\n",
|
|
|
9890
|
" button.append(tooltip_span);\n",
|
|
|
9891
|
"\n",
|
|
|
9892
|
" nav_element.append(button);\n",
|
|
|
9893
|
" }\n",
|
|
|
9894
|
"\n",
|
|
|
9895
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
9896
|
"\n",
|
|
|
9897
|
" var fmt_picker = $('<select/>');\n",
|
|
|
9898
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
9899
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
9900
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
9901
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
9902
|
"\n",
|
|
|
9903
|
" for (var ind in mpl.extensions) {\n",
|
|
|
9904
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
9905
|
" var option = $(\n",
|
|
|
9906
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
9907
|
" fmt_picker.append(option)\n",
|
|
|
9908
|
" }\n",
|
|
|
9909
|
"\n",
|
|
|
9910
|
" // Add hover states to the ui-buttons\n",
|
|
|
9911
|
" $( \".ui-button\" ).hover(\n",
|
|
|
9912
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
9913
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
9914
|
" );\n",
|
|
|
9915
|
"\n",
|
|
|
9916
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
9917
|
" nav_element.append(status_bar);\n",
|
|
|
9918
|
" this.message = status_bar[0];\n",
|
|
|
9919
|
"}\n",
|
|
|
9920
|
"\n",
|
|
|
9921
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
9922
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
9923
|
" // which will in turn request a refresh of the image.\n",
|
|
|
9924
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
9925
|
"}\n",
|
|
|
9926
|
"\n",
|
|
|
9927
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
9928
|
" properties['type'] = type;\n",
|
|
|
9929
|
" properties['figure_id'] = this.id;\n",
|
|
|
9930
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
9931
|
"}\n",
|
|
|
9932
|
"\n",
|
|
|
9933
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
9934
|
" if (!this.waiting) {\n",
|
|
|
9935
|
" this.waiting = true;\n",
|
|
|
9936
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
9937
|
" }\n",
|
|
|
9938
|
"}\n",
|
|
|
9939
|
"\n",
|
|
|
9940
|
"\n",
|
|
|
9941
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
9942
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
9943
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
9944
|
" fig.ondownload(fig, format);\n",
|
|
|
9945
|
"}\n",
|
|
|
9946
|
"\n",
|
|
|
9947
|
"\n",
|
|
|
9948
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
9949
|
" var size = msg['size'];\n",
|
|
|
9950
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
9951
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
9952
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
9953
|
" };\n",
|
|
|
9954
|
"}\n",
|
|
|
9955
|
"\n",
|
|
|
9956
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
9957
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
9958
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
9959
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
9960
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
9961
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
9962
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
9963
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
9964
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
9965
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
9966
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
9967
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
9968
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
9969
|
"\n",
|
|
|
9970
|
" fig.rubberband_context.clearRect(\n",
|
|
|
9971
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
9972
|
"\n",
|
|
|
9973
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
9974
|
"}\n",
|
|
|
9975
|
"\n",
|
|
|
9976
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
9977
|
" // Updates the figure title.\n",
|
|
|
9978
|
" fig.header.textContent = msg['label'];\n",
|
|
|
9979
|
"}\n",
|
|
|
9980
|
"\n",
|
|
|
9981
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
9982
|
" var cursor = msg['cursor'];\n",
|
|
|
9983
|
" switch(cursor)\n",
|
|
|
9984
|
" {\n",
|
|
|
9985
|
" case 0:\n",
|
|
|
9986
|
" cursor = 'pointer';\n",
|
|
|
9987
|
" break;\n",
|
|
|
9988
|
" case 1:\n",
|
|
|
9989
|
" cursor = 'default';\n",
|
|
|
9990
|
" break;\n",
|
|
|
9991
|
" case 2:\n",
|
|
|
9992
|
" cursor = 'crosshair';\n",
|
|
|
9993
|
" break;\n",
|
|
|
9994
|
" case 3:\n",
|
|
|
9995
|
" cursor = 'move';\n",
|
|
|
9996
|
" break;\n",
|
|
|
9997
|
" }\n",
|
|
|
9998
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
9999
|
"}\n",
|
|
|
10000
|
"\n",
|
|
|
10001
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
10002
|
" fig.message.textContent = msg['message'];\n",
|
|
|
10003
|
"}\n",
|
|
|
10004
|
"\n",
|
|
|
10005
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
10006
|
" // Request the server to send over a new figure.\n",
|
|
|
10007
|
" fig.send_draw_message();\n",
|
|
|
10008
|
"}\n",
|
|
|
10009
|
"\n",
|
|
|
10010
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
10011
|
" fig.image_mode = msg['mode'];\n",
|
|
|
10012
|
"}\n",
|
|
|
10013
|
"\n",
|
|
|
10014
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
10015
|
" // Called whenever the canvas gets updated.\n",
|
|
|
10016
|
" this.send_message(\"ack\", {});\n",
|
|
|
10017
|
"}\n",
|
|
|
10018
|
"\n",
|
|
|
10019
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
10020
|
"// Called in the figure constructor.\n",
|
|
|
10021
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
10022
|
" return function socket_on_message(evt) {\n",
|
|
|
10023
|
" if (evt.data instanceof Blob) {\n",
|
|
|
10024
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
10025
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
10026
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
10027
|
" * to be part of the websocket stream */\n",
|
|
|
10028
|
" evt.data.type = \"image/png\";\n",
|
|
|
10029
|
"\n",
|
|
|
10030
|
" /* Free the memory for the previous frames */\n",
|
|
|
10031
|
" if (fig.imageObj.src) {\n",
|
|
|
10032
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
10033
|
" fig.imageObj.src);\n",
|
|
|
10034
|
" }\n",
|
|
|
10035
|
"\n",
|
|
|
10036
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
10037
|
" evt.data);\n",
|
|
|
10038
|
" fig.updated_canvas_event();\n",
|
|
|
10039
|
" fig.waiting = false;\n",
|
|
|
10040
|
" return;\n",
|
|
|
10041
|
" }\n",
|
|
|
10042
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
10043
|
" fig.imageObj.src = evt.data;\n",
|
|
|
10044
|
" fig.updated_canvas_event();\n",
|
|
|
10045
|
" fig.waiting = false;\n",
|
|
|
10046
|
" return;\n",
|
|
|
10047
|
" }\n",
|
|
|
10048
|
"\n",
|
|
|
10049
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
10050
|
" var msg_type = msg['type'];\n",
|
|
|
10051
|
"\n",
|
|
|
10052
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
10053
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
10054
|
" try {\n",
|
|
|
10055
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
10056
|
" } catch (e) {\n",
|
|
|
10057
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
10058
|
" return;\n",
|
|
|
10059
|
" }\n",
|
|
|
10060
|
"\n",
|
|
|
10061
|
" if (callback) {\n",
|
|
|
10062
|
" try {\n",
|
|
|
10063
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
10064
|
" callback(fig, msg);\n",
|
|
|
10065
|
" } catch (e) {\n",
|
|
|
10066
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
10067
|
" }\n",
|
|
|
10068
|
" }\n",
|
|
|
10069
|
" };\n",
|
|
|
10070
|
"}\n",
|
|
|
10071
|
"\n",
|
|
|
10072
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
10073
|
"mpl.findpos = function(e) {\n",
|
|
|
10074
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
10075
|
" var targ;\n",
|
|
|
10076
|
" if (!e)\n",
|
|
|
10077
|
" e = window.event;\n",
|
|
|
10078
|
" if (e.target)\n",
|
|
|
10079
|
" targ = e.target;\n",
|
|
|
10080
|
" else if (e.srcElement)\n",
|
|
|
10081
|
" targ = e.srcElement;\n",
|
|
|
10082
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
10083
|
" targ = targ.parentNode;\n",
|
|
|
10084
|
"\n",
|
|
|
10085
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
10086
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
10087
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
10088
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
10089
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
10090
|
"\n",
|
|
|
10091
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
10092
|
"};\n",
|
|
|
10093
|
"\n",
|
|
|
10094
|
"/*\n",
|
|
|
10095
|
" * return a copy of an object with only non-object keys\n",
|
|
|
10096
|
" * we need this to avoid circular references\n",
|
|
|
10097
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
10098
|
" */\n",
|
|
|
10099
|
"function simpleKeys (original) {\n",
|
|
|
10100
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
10101
|
" if (typeof original[key] !== 'object')\n",
|
|
|
10102
|
" obj[key] = original[key]\n",
|
|
|
10103
|
" return obj;\n",
|
|
|
10104
|
" }, {});\n",
|
|
|
10105
|
"}\n",
|
|
|
10106
|
"\n",
|
|
|
10107
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
10108
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
10109
|
"\n",
|
|
|
10110
|
" if (name === 'button_press')\n",
|
|
|
10111
|
" {\n",
|
|
|
10112
|
" this.canvas.focus();\n",
|
|
|
10113
|
" this.canvas_div.focus();\n",
|
|
|
10114
|
" }\n",
|
|
|
10115
|
"\n",
|
|
|
10116
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
10117
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
10118
|
"\n",
|
|
|
10119
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
10120
|
" step: event.step,\n",
|
|
|
10121
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
10122
|
"\n",
|
|
|
10123
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
10124
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
10125
|
" * to control all of the cursor setting manually through the\n",
|
|
|
10126
|
" * 'cursor' event from matplotlib */\n",
|
|
|
10127
|
" event.preventDefault();\n",
|
|
|
10128
|
" return false;\n",
|
|
|
10129
|
"}\n",
|
|
|
10130
|
"\n",
|
|
|
10131
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
10132
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
10133
|
"}\n",
|
|
|
10134
|
"\n",
|
|
|
10135
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
10136
|
"\n",
|
|
|
10137
|
" // Prevent repeat events\n",
|
|
|
10138
|
" if (name == 'key_press')\n",
|
|
|
10139
|
" {\n",
|
|
|
10140
|
" if (event.which === this._key)\n",
|
|
|
10141
|
" return;\n",
|
|
|
10142
|
" else\n",
|
|
|
10143
|
" this._key = event.which;\n",
|
|
|
10144
|
" }\n",
|
|
|
10145
|
" if (name == 'key_release')\n",
|
|
|
10146
|
" this._key = null;\n",
|
|
|
10147
|
"\n",
|
|
|
10148
|
" var value = '';\n",
|
|
|
10149
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
10150
|
" value += \"ctrl+\";\n",
|
|
|
10151
|
" if (event.altKey && event.which != 18)\n",
|
|
|
10152
|
" value += \"alt+\";\n",
|
|
|
10153
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
10154
|
" value += \"shift+\";\n",
|
|
|
10155
|
"\n",
|
|
|
10156
|
" value += 'k';\n",
|
|
|
10157
|
" value += event.which.toString();\n",
|
|
|
10158
|
"\n",
|
|
|
10159
|
" this._key_event_extra(event, name);\n",
|
|
|
10160
|
"\n",
|
|
|
10161
|
" this.send_message(name, {key: value,\n",
|
|
|
10162
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
10163
|
" return false;\n",
|
|
|
10164
|
"}\n",
|
|
|
10165
|
"\n",
|
|
|
10166
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
10167
|
" if (name == 'download') {\n",
|
|
|
10168
|
" this.handle_save(this, null);\n",
|
|
|
10169
|
" } else {\n",
|
|
|
10170
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
10171
|
" }\n",
|
|
|
10172
|
"};\n",
|
|
|
10173
|
"\n",
|
|
|
10174
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
10175
|
" this.message.textContent = tooltip;\n",
|
|
|
10176
|
"};\n",
|
|
|
10177
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
10178
|
"\n",
|
|
|
10179
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
10180
|
"\n",
|
|
|
10181
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
10182
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
10183
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
10184
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
10185
|
" var ws = {};\n",
|
|
|
10186
|
"\n",
|
|
|
10187
|
" ws.close = function() {\n",
|
|
|
10188
|
" comm.close()\n",
|
|
|
10189
|
" };\n",
|
|
|
10190
|
" ws.send = function(m) {\n",
|
|
|
10191
|
" //console.log('sending', m);\n",
|
|
|
10192
|
" comm.send(m);\n",
|
|
|
10193
|
" };\n",
|
|
|
10194
|
" // Register the callback with on_msg.\n",
|
|
|
10195
|
" comm.on_msg(function(msg) {\n",
|
|
|
10196
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
10197
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
10198
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
10199
|
" });\n",
|
|
|
10200
|
" return ws;\n",
|
|
|
10201
|
"}\n",
|
|
|
10202
|
"\n",
|
|
|
10203
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
10204
|
" // This is the function which gets called when the mpl process\n",
|
|
|
10205
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
10206
|
"\n",
|
|
|
10207
|
" var id = msg.content.data.id;\n",
|
|
|
10208
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
10209
|
" // socket was opened in Python.\n",
|
|
|
10210
|
" var element = $(\"#\" + id);\n",
|
|
|
10211
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
10212
|
"\n",
|
|
|
10213
|
" function ondownload(figure, format) {\n",
|
|
|
10214
|
" window.open(figure.imageObj.src);\n",
|
|
|
10215
|
" }\n",
|
|
|
10216
|
"\n",
|
|
|
10217
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
10218
|
" ondownload,\n",
|
|
|
10219
|
" element.get(0));\n",
|
|
|
10220
|
"\n",
|
|
|
10221
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
10222
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
10223
|
" ws_proxy.onopen();\n",
|
|
|
10224
|
"\n",
|
|
|
10225
|
" fig.parent_element = element.get(0);\n",
|
|
|
10226
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
10227
|
" if (!fig.cell_info) {\n",
|
|
|
10228
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
10229
|
" return;\n",
|
|
|
10230
|
" }\n",
|
|
|
10231
|
"\n",
|
|
|
10232
|
" var output_index = fig.cell_info[2]\n",
|
|
|
10233
|
" var cell = fig.cell_info[0];\n",
|
|
|
10234
|
"\n",
|
|
|
10235
|
"};\n",
|
|
|
10236
|
"\n",
|
|
|
10237
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
10238
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
10239
|
" fig.root.unbind('remove')\n",
|
|
|
10240
|
"\n",
|
|
|
10241
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
10242
|
" fig.push_to_output();\n",
|
|
|
10243
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
10244
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
10245
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
10246
|
" IPython.keyboard_manager.enable()\n",
|
|
|
10247
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
10248
|
" fig.close_ws(fig, msg);\n",
|
|
|
10249
|
"}\n",
|
|
|
10250
|
"\n",
|
|
|
10251
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
10252
|
" fig.send_message('closing', msg);\n",
|
|
|
10253
|
" // fig.ws.close()\n",
|
|
|
10254
|
"}\n",
|
|
|
10255
|
"\n",
|
|
|
10256
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
10257
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
10258
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
10259
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
10260
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
10261
|
"}\n",
|
|
|
10262
|
"\n",
|
|
|
10263
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
10264
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
10265
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
10266
|
" this.send_message(\"ack\", {});\n",
|
|
|
10267
|
" var fig = this;\n",
|
|
|
10268
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
10269
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
10270
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
10271
|
"}\n",
|
|
|
10272
|
"\n",
|
|
|
10273
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
10274
|
" var fig = this;\n",
|
|
|
10275
|
"\n",
|
|
|
10276
|
" var nav_element = $('<div/>')\n",
|
|
|
10277
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
10278
|
" this.root.append(nav_element);\n",
|
|
|
10279
|
"\n",
|
|
|
10280
|
" // Define a callback function for later on.\n",
|
|
|
10281
|
" function toolbar_event(event) {\n",
|
|
|
10282
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
10283
|
" }\n",
|
|
|
10284
|
" function toolbar_mouse_event(event) {\n",
|
|
|
10285
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
10286
|
" }\n",
|
|
|
10287
|
"\n",
|
|
|
10288
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
10289
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
10290
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
10291
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
10292
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
10293
|
"\n",
|
|
|
10294
|
" if (!name) { continue; };\n",
|
|
|
10295
|
"\n",
|
|
|
10296
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
10297
|
" button.click(method_name, toolbar_event);\n",
|
|
|
10298
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
10299
|
" nav_element.append(button);\n",
|
|
|
10300
|
" }\n",
|
|
|
10301
|
"\n",
|
|
|
10302
|
" // Add the status bar.\n",
|
|
|
10303
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
10304
|
" nav_element.append(status_bar);\n",
|
|
|
10305
|
" this.message = status_bar[0];\n",
|
|
|
10306
|
"\n",
|
|
|
10307
|
" // Add the close button to the window.\n",
|
|
|
10308
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
10309
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
10310
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
10311
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
10312
|
" buttongrp.append(button);\n",
|
|
|
10313
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
10314
|
" titlebar.prepend(buttongrp);\n",
|
|
|
10315
|
"}\n",
|
|
|
10316
|
"\n",
|
|
|
10317
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
10318
|
" var fig = this\n",
|
|
|
10319
|
" el.on(\"remove\", function(){\n",
|
|
|
10320
|
"\tfig.close_ws(fig, {});\n",
|
|
|
10321
|
" });\n",
|
|
|
10322
|
"}\n",
|
|
|
10323
|
"\n",
|
|
|
10324
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
10325
|
" // this is important to make the div 'focusable\n",
|
|
|
10326
|
" el.attr('tabindex', 0)\n",
|
|
|
10327
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
10328
|
" // off when our div gets focus\n",
|
|
|
10329
|
"\n",
|
|
|
10330
|
" // location in version 3\n",
|
|
|
10331
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
10332
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
10333
|
" }\n",
|
|
|
10334
|
" else {\n",
|
|
|
10335
|
" // location in version 2\n",
|
|
|
10336
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
10337
|
" }\n",
|
|
|
10338
|
"\n",
|
|
|
10339
|
"}\n",
|
|
|
10340
|
"\n",
|
|
|
10341
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
10342
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
10343
|
" if (!manager)\n",
|
|
|
10344
|
" manager = IPython.keyboard_manager;\n",
|
|
|
10345
|
"\n",
|
|
|
10346
|
" // Check for shift+enter\n",
|
|
|
10347
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
10348
|
" this.canvas_div.blur();\n",
|
|
|
10349
|
" event.shiftKey = false;\n",
|
|
|
10350
|
" // Send a \"J\" for go to next cell\n",
|
|
|
10351
|
" event.which = 74;\n",
|
|
|
10352
|
" event.keyCode = 74;\n",
|
|
|
10353
|
" manager.command_mode();\n",
|
|
|
10354
|
" manager.handle_keydown(event);\n",
|
|
|
10355
|
" }\n",
|
|
|
10356
|
"}\n",
|
|
|
10357
|
"\n",
|
|
|
10358
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
10359
|
" fig.ondownload(fig, null);\n",
|
|
|
10360
|
"}\n",
|
|
|
10361
|
"\n",
|
|
|
10362
|
"\n",
|
|
|
10363
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
10364
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
10365
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
10366
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
10367
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
10368
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
10369
|
" var ncells = cells.length;\n",
|
|
|
10370
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
10371
|
" var cell = cells[i];\n",
|
|
|
10372
|
" if (cell.cell_type === 'code'){\n",
|
|
|
10373
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
10374
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
10375
|
" if (data.data) {\n",
|
|
|
10376
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
10377
|
" data = data.data;\n",
|
|
|
10378
|
" }\n",
|
|
|
10379
|
" if (data['text/html'] == html_output) {\n",
|
|
|
10380
|
" return [cell, data, j];\n",
|
|
|
10381
|
" }\n",
|
|
|
10382
|
" }\n",
|
|
|
10383
|
" }\n",
|
|
|
10384
|
" }\n",
|
|
|
10385
|
"}\n",
|
|
|
10386
|
"\n",
|
|
|
10387
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
10388
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
10389
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
10390
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
10391
|
"}\n"
|
|
|
10392
|
],
|
|
|
10393
|
"text/plain": [
|
|
|
10394
|
"<IPython.core.display.Javascript object>"
|
|
|
10395
|
]
|
|
|
10396
|
},
|
|
|
10397
|
"metadata": {},
|
|
|
10398
|
"output_type": "display_data"
|
|
|
10399
|
},
|
|
|
10400
|
{
|
|
|
10401
|
"data": {
|
|
|
10402
|
"text/html": [
|
|
|
10403
|
"<img src=\"data:image/png;base64,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buvWrdG9e/c49dRTm7Bl0HzNnj07b3Ji6dKl0bZt27jwwgtzdVdccUW0a9cu3n777VzdzJkzI6UUEyZMOGTthWLxta99Lc4444w47bTT8gLgfv36xXHHHRfr16/P1U2aNClSSvHUU08d6qZCs7J+/fo49thj45/+6Z+iqqqq3uv0I2jY6NGjI6UUCxYsqFV/ySWXREop3n///YjQn2BP27ZtixUrVkRExCuvvFJvANzYe6Q///nPcdhhh8XQoUNzddXV1dG3b9844YQTorKy8uB9GGhCjelL27dvj9mzZ+e997rrrouUUsycOTNXt2XLljjqqKOif//+ta698MILo3379rlxDYC6CYCBojV8+PBo3bp1rYmLiIgxY8ZESikqKiqaqGVQfE4++eQ4+eSTc/99zDHHxKBBg/Ku69mzZ3z5y18+lE2DZm/WrFnRunXrmD9/fl4AvH79+igpKam1kjGiZuLjiCOOiG9961uHurnQrIwfPz5SSrFo0aKIiNi0aVNeEKwfQeOMGDEiUkqxevXqvPpWrVrFpk2b9CdowN4C4MbeI40bNy5SSrFw4cJa1z3wwAORUrJjGS3C3vpSXebPnx8ppVrbO0+bNi1SSjFt2rRa177wwguRUoopU6YUsskAmSMABorWmWeeGZ/85Cfz6p9++ulIKcXjjz/eBK2C4lNdXR3HH398nH322RFR88R6SiluvPHGvGsvuuii6NSp06FuIjRblZWVceKJJ8bll18eEZEXAP/+97+PlFI8/PDDee/90pe+VOvBC2iJBg4cGB06dIiZM2dGz549I6UU7du3jyFDhuTOgdOPoHGefPLJ3HbP8+bNi4qKinjooYeiQ4cO8Z3vfCci9CdoSH2h1b7cI1122WXRvn37vK1s33jjjbyAC7JqXwPgGTNmREqp1lnZo0aNipRSrFy5sta127dvj1atWsV//dd/FbLJAJkjAAaKVllZWZxxxhl59QsXLoyUUtxxxx1N0CooPlOmTImUUtx1110RsetG7d577827dvjw4ZFSim3bth3qZkKzdNttt8WRRx4Zq1atioj8APiRRx6JlFI899xzee8dNGhQdO7c+ZC1FZqjE088MUpLS6O0tDSuvPLKePTRR+PKK6+MlFJ8/etfjwj9CPbFyJEjo127dpFSypVrrrkm97r+BHtXX2i1L/dI/fv3j27duuVd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RgiAAQAAAAAAADJCAAwAAAAAAACQEQJgAAAAAAAAgIwQAAMAAAAAAABkhAAYAAAAAAAAICMEwAAAAAAAAAAZIQAGAAAAAAAAyAgBMAAAAAAAAEBGCIABAAAAAAAAMkIADAAAAAAAAJARAmAAAAAAAACAjBAAAwAAAAAAAGSEABgAAAAAAAAgIwTAAAAAAAAAABkhAAYAAAAAAADICAEwAAAAAAAAQEYIgAEAAAAAAAAyQgAMAAAAAAAAkBECYAAAAAAAAICMEAADAAAAAAAAZIQAGAAAAAAAACAjBMAAAAAAAAAAGSEABgAAAAAAAMgIATAAAAAAAABARgiAAQAAAAAAADJCAAwAAAAAAACQEQJgAAAAAAAAgIwQAAMAAAAAAABkhAAYAAAAAAAAICMEwAAAAAAAAAAZIQAGAAAAAAAAyAgBMAAAAAAAAEBGCIABAAAAAAAAMkIADAAAAAAAAJARAmAAAAAAAACAjBAAAwAAAAAAAGSEABgAAAAAAAAgIwTAAAAAAAAAABkhAAYAAAAAAADICAEwAAAAAAAAQEYIgAEAAAAAAAAyQgAMAAAAAAAAkBECYAAAAAAAAICMEAADAAAAAAAAZIQAGAAAAAAAACAjBMAAAAAAAAAAGSEABgAAAAAAAMgIATAAAAAAAABARgiAAQAAAAAAADJCAAwAAAAAAACQEQJgAAAAAAAAgIwQAAMAAAAAAABkhAAYAAAAAAAAICMEwAAAAAAAAAAZIQAGAAAAAAAAyAgBMAAAAAAAAEBGCIABAAAAAAAAMkIADAAAAAAAAJARAmAAAAAAAACAjPj/4RPQTMh60jUAAAAASUVORK5CYII=\" width=\"1600\">"
|
|
|
10404
|
],
|
|
|
10405
|
"text/plain": [
|
|
|
10406
|
"<IPython.core.display.HTML object>"
|
|
|
10407
|
]
|
|
|
10408
|
},
|
|
|
10409
|
"metadata": {},
|
|
|
10410
|
"output_type": "display_data"
|
|
|
10411
|
},
|
|
|
10412
|
{
|
|
|
10413
|
"data": {
|
|
|
10414
|
"application/javascript": [
|
|
|
10415
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
10416
|
"window.mpl = {};\n",
|
|
|
10417
|
"\n",
|
|
|
10418
|
"\n",
|
|
|
10419
|
"mpl.get_websocket_type = function() {\n",
|
|
|
10420
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
10421
|
" return WebSocket;\n",
|
|
|
10422
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
10423
|
" return MozWebSocket;\n",
|
|
|
10424
|
" } else {\n",
|
|
|
10425
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
10426
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
10427
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
10428
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
10429
|
" };\n",
|
|
|
10430
|
"}\n",
|
|
|
10431
|
"\n",
|
|
|
10432
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
10433
|
" this.id = figure_id;\n",
|
|
|
10434
|
"\n",
|
|
|
10435
|
" this.ws = websocket;\n",
|
|
|
10436
|
"\n",
|
|
|
10437
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
10438
|
"\n",
|
|
|
10439
|
" if (!this.supports_binary) {\n",
|
|
|
10440
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
10441
|
" if (warnings) {\n",
|
|
|
10442
|
" warnings.style.display = 'block';\n",
|
|
|
10443
|
" warnings.textContent = (\n",
|
|
|
10444
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
10445
|
" \"Performance may be slow.\");\n",
|
|
|
10446
|
" }\n",
|
|
|
10447
|
" }\n",
|
|
|
10448
|
"\n",
|
|
|
10449
|
" this.imageObj = new Image();\n",
|
|
|
10450
|
"\n",
|
|
|
10451
|
" this.context = undefined;\n",
|
|
|
10452
|
" this.message = undefined;\n",
|
|
|
10453
|
" this.canvas = undefined;\n",
|
|
|
10454
|
" this.rubberband_canvas = undefined;\n",
|
|
|
10455
|
" this.rubberband_context = undefined;\n",
|
|
|
10456
|
" this.format_dropdown = undefined;\n",
|
|
|
10457
|
"\n",
|
|
|
10458
|
" this.image_mode = 'full';\n",
|
|
|
10459
|
"\n",
|
|
|
10460
|
" this.root = $('<div/>');\n",
|
|
|
10461
|
" this._root_extra_style(this.root)\n",
|
|
|
10462
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
10463
|
"\n",
|
|
|
10464
|
" $(parent_element).append(this.root);\n",
|
|
|
10465
|
"\n",
|
|
|
10466
|
" this._init_header(this);\n",
|
|
|
10467
|
" this._init_canvas(this);\n",
|
|
|
10468
|
" this._init_toolbar(this);\n",
|
|
|
10469
|
"\n",
|
|
|
10470
|
" var fig = this;\n",
|
|
|
10471
|
"\n",
|
|
|
10472
|
" this.waiting = false;\n",
|
|
|
10473
|
"\n",
|
|
|
10474
|
" this.ws.onopen = function () {\n",
|
|
|
10475
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
10476
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
10477
|
" if (mpl.ratio != 1) {\n",
|
|
|
10478
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
10479
|
" }\n",
|
|
|
10480
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
10481
|
" }\n",
|
|
|
10482
|
"\n",
|
|
|
10483
|
" this.imageObj.onload = function() {\n",
|
|
|
10484
|
" if (fig.image_mode == 'full') {\n",
|
|
|
10485
|
" // Full images could contain transparency (where diff images\n",
|
|
|
10486
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
10487
|
" // there is no ghosting.\n",
|
|
|
10488
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
10489
|
" }\n",
|
|
|
10490
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
10491
|
" };\n",
|
|
|
10492
|
"\n",
|
|
|
10493
|
" this.imageObj.onunload = function() {\n",
|
|
|
10494
|
" fig.ws.close();\n",
|
|
|
10495
|
" }\n",
|
|
|
10496
|
"\n",
|
|
|
10497
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
10498
|
"\n",
|
|
|
10499
|
" this.ondownload = ondownload;\n",
|
|
|
10500
|
"}\n",
|
|
|
10501
|
"\n",
|
|
|
10502
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
10503
|
" var titlebar = $(\n",
|
|
|
10504
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
10505
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
10506
|
" var titletext = $(\n",
|
|
|
10507
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
10508
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
10509
|
" titlebar.append(titletext)\n",
|
|
|
10510
|
" this.root.append(titlebar);\n",
|
|
|
10511
|
" this.header = titletext[0];\n",
|
|
|
10512
|
"}\n",
|
|
|
10513
|
"\n",
|
|
|
10514
|
"\n",
|
|
|
10515
|
"\n",
|
|
|
10516
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
10517
|
"\n",
|
|
|
10518
|
"}\n",
|
|
|
10519
|
"\n",
|
|
|
10520
|
"\n",
|
|
|
10521
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
10522
|
"\n",
|
|
|
10523
|
"}\n",
|
|
|
10524
|
"\n",
|
|
|
10525
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
10526
|
" var fig = this;\n",
|
|
|
10527
|
"\n",
|
|
|
10528
|
" var canvas_div = $('<div/>');\n",
|
|
|
10529
|
"\n",
|
|
|
10530
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
10531
|
"\n",
|
|
|
10532
|
" function canvas_keyboard_event(event) {\n",
|
|
|
10533
|
" return fig.key_event(event, event['data']);\n",
|
|
|
10534
|
" }\n",
|
|
|
10535
|
"\n",
|
|
|
10536
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
10537
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
10538
|
" this.canvas_div = canvas_div\n",
|
|
|
10539
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
10540
|
" this.root.append(canvas_div);\n",
|
|
|
10541
|
"\n",
|
|
|
10542
|
" var canvas = $('<canvas/>');\n",
|
|
|
10543
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
10544
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
10545
|
"\n",
|
|
|
10546
|
" this.canvas = canvas[0];\n",
|
|
|
10547
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
10548
|
"\n",
|
|
|
10549
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
10550
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
10551
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
10552
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
10553
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
10554
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
10555
|
"\n",
|
|
|
10556
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
10557
|
"\n",
|
|
|
10558
|
" var rubberband = $('<canvas/>');\n",
|
|
|
10559
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
10560
|
"\n",
|
|
|
10561
|
" var pass_mouse_events = true;\n",
|
|
|
10562
|
"\n",
|
|
|
10563
|
" canvas_div.resizable({\n",
|
|
|
10564
|
" start: function(event, ui) {\n",
|
|
|
10565
|
" pass_mouse_events = false;\n",
|
|
|
10566
|
" },\n",
|
|
|
10567
|
" resize: function(event, ui) {\n",
|
|
|
10568
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
10569
|
" },\n",
|
|
|
10570
|
" stop: function(event, ui) {\n",
|
|
|
10571
|
" pass_mouse_events = true;\n",
|
|
|
10572
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
10573
|
" },\n",
|
|
|
10574
|
" });\n",
|
|
|
10575
|
"\n",
|
|
|
10576
|
" function mouse_event_fn(event) {\n",
|
|
|
10577
|
" if (pass_mouse_events)\n",
|
|
|
10578
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
10579
|
" }\n",
|
|
|
10580
|
"\n",
|
|
|
10581
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
10582
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
10583
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
10584
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
10585
|
"\n",
|
|
|
10586
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
10587
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
10588
|
"\n",
|
|
|
10589
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
10590
|
" event = event.originalEvent;\n",
|
|
|
10591
|
" event['data'] = 'scroll'\n",
|
|
|
10592
|
" if (event.deltaY < 0) {\n",
|
|
|
10593
|
" event.step = 1;\n",
|
|
|
10594
|
" } else {\n",
|
|
|
10595
|
" event.step = -1;\n",
|
|
|
10596
|
" }\n",
|
|
|
10597
|
" mouse_event_fn(event);\n",
|
|
|
10598
|
" });\n",
|
|
|
10599
|
"\n",
|
|
|
10600
|
" canvas_div.append(canvas);\n",
|
|
|
10601
|
" canvas_div.append(rubberband);\n",
|
|
|
10602
|
"\n",
|
|
|
10603
|
" this.rubberband = rubberband;\n",
|
|
|
10604
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
10605
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
10606
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
10607
|
"\n",
|
|
|
10608
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
10609
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
10610
|
" // canvas in synch.\n",
|
|
|
10611
|
" canvas_div.css('width', width)\n",
|
|
|
10612
|
" canvas_div.css('height', height)\n",
|
|
|
10613
|
"\n",
|
|
|
10614
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
10615
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
10616
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
10617
|
"\n",
|
|
|
10618
|
" rubberband.attr('width', width);\n",
|
|
|
10619
|
" rubberband.attr('height', height);\n",
|
|
|
10620
|
" }\n",
|
|
|
10621
|
"\n",
|
|
|
10622
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
10623
|
" // upon first draw.\n",
|
|
|
10624
|
" this._resize_canvas(600, 600);\n",
|
|
|
10625
|
"\n",
|
|
|
10626
|
" // Disable right mouse context menu.\n",
|
|
|
10627
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
10628
|
" return false;\n",
|
|
|
10629
|
" });\n",
|
|
|
10630
|
"\n",
|
|
|
10631
|
" function set_focus () {\n",
|
|
|
10632
|
" canvas.focus();\n",
|
|
|
10633
|
" canvas_div.focus();\n",
|
|
|
10634
|
" }\n",
|
|
|
10635
|
"\n",
|
|
|
10636
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
10637
|
"}\n",
|
|
|
10638
|
"\n",
|
|
|
10639
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
10640
|
" var fig = this;\n",
|
|
|
10641
|
"\n",
|
|
|
10642
|
" var nav_element = $('<div/>')\n",
|
|
|
10643
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
10644
|
" this.root.append(nav_element);\n",
|
|
|
10645
|
"\n",
|
|
|
10646
|
" // Define a callback function for later on.\n",
|
|
|
10647
|
" function toolbar_event(event) {\n",
|
|
|
10648
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
10649
|
" }\n",
|
|
|
10650
|
" function toolbar_mouse_event(event) {\n",
|
|
|
10651
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
10652
|
" }\n",
|
|
|
10653
|
"\n",
|
|
|
10654
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
10655
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
10656
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
10657
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
10658
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
10659
|
"\n",
|
|
|
10660
|
" if (!name) {\n",
|
|
|
10661
|
" // put a spacer in here.\n",
|
|
|
10662
|
" continue;\n",
|
|
|
10663
|
" }\n",
|
|
|
10664
|
" var button = $('<button/>');\n",
|
|
|
10665
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
10666
|
" 'ui-button-icon-only');\n",
|
|
|
10667
|
" button.attr('role', 'button');\n",
|
|
|
10668
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
10669
|
" button.click(method_name, toolbar_event);\n",
|
|
|
10670
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
10671
|
"\n",
|
|
|
10672
|
" var icon_img = $('<span/>');\n",
|
|
|
10673
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
10674
|
" icon_img.addClass(image);\n",
|
|
|
10675
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
10676
|
"\n",
|
|
|
10677
|
" var tooltip_span = $('<span/>');\n",
|
|
|
10678
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
10679
|
" tooltip_span.html(tooltip);\n",
|
|
|
10680
|
"\n",
|
|
|
10681
|
" button.append(icon_img);\n",
|
|
|
10682
|
" button.append(tooltip_span);\n",
|
|
|
10683
|
"\n",
|
|
|
10684
|
" nav_element.append(button);\n",
|
|
|
10685
|
" }\n",
|
|
|
10686
|
"\n",
|
|
|
10687
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
10688
|
"\n",
|
|
|
10689
|
" var fmt_picker = $('<select/>');\n",
|
|
|
10690
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
10691
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
10692
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
10693
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
10694
|
"\n",
|
|
|
10695
|
" for (var ind in mpl.extensions) {\n",
|
|
|
10696
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
10697
|
" var option = $(\n",
|
|
|
10698
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
10699
|
" fmt_picker.append(option)\n",
|
|
|
10700
|
" }\n",
|
|
|
10701
|
"\n",
|
|
|
10702
|
" // Add hover states to the ui-buttons\n",
|
|
|
10703
|
" $( \".ui-button\" ).hover(\n",
|
|
|
10704
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
10705
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
10706
|
" );\n",
|
|
|
10707
|
"\n",
|
|
|
10708
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
10709
|
" nav_element.append(status_bar);\n",
|
|
|
10710
|
" this.message = status_bar[0];\n",
|
|
|
10711
|
"}\n",
|
|
|
10712
|
"\n",
|
|
|
10713
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
10714
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
10715
|
" // which will in turn request a refresh of the image.\n",
|
|
|
10716
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
10717
|
"}\n",
|
|
|
10718
|
"\n",
|
|
|
10719
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
10720
|
" properties['type'] = type;\n",
|
|
|
10721
|
" properties['figure_id'] = this.id;\n",
|
|
|
10722
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
10723
|
"}\n",
|
|
|
10724
|
"\n",
|
|
|
10725
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
10726
|
" if (!this.waiting) {\n",
|
|
|
10727
|
" this.waiting = true;\n",
|
|
|
10728
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
10729
|
" }\n",
|
|
|
10730
|
"}\n",
|
|
|
10731
|
"\n",
|
|
|
10732
|
"\n",
|
|
|
10733
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
10734
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
10735
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
10736
|
" fig.ondownload(fig, format);\n",
|
|
|
10737
|
"}\n",
|
|
|
10738
|
"\n",
|
|
|
10739
|
"\n",
|
|
|
10740
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
10741
|
" var size = msg['size'];\n",
|
|
|
10742
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
10743
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
10744
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
10745
|
" };\n",
|
|
|
10746
|
"}\n",
|
|
|
10747
|
"\n",
|
|
|
10748
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
10749
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
10750
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
10751
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
10752
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
10753
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
10754
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
10755
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
10756
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
10757
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
10758
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
10759
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
10760
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
10761
|
"\n",
|
|
|
10762
|
" fig.rubberband_context.clearRect(\n",
|
|
|
10763
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
10764
|
"\n",
|
|
|
10765
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
10766
|
"}\n",
|
|
|
10767
|
"\n",
|
|
|
10768
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
10769
|
" // Updates the figure title.\n",
|
|
|
10770
|
" fig.header.textContent = msg['label'];\n",
|
|
|
10771
|
"}\n",
|
|
|
10772
|
"\n",
|
|
|
10773
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
10774
|
" var cursor = msg['cursor'];\n",
|
|
|
10775
|
" switch(cursor)\n",
|
|
|
10776
|
" {\n",
|
|
|
10777
|
" case 0:\n",
|
|
|
10778
|
" cursor = 'pointer';\n",
|
|
|
10779
|
" break;\n",
|
|
|
10780
|
" case 1:\n",
|
|
|
10781
|
" cursor = 'default';\n",
|
|
|
10782
|
" break;\n",
|
|
|
10783
|
" case 2:\n",
|
|
|
10784
|
" cursor = 'crosshair';\n",
|
|
|
10785
|
" break;\n",
|
|
|
10786
|
" case 3:\n",
|
|
|
10787
|
" cursor = 'move';\n",
|
|
|
10788
|
" break;\n",
|
|
|
10789
|
" }\n",
|
|
|
10790
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
10791
|
"}\n",
|
|
|
10792
|
"\n",
|
|
|
10793
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
10794
|
" fig.message.textContent = msg['message'];\n",
|
|
|
10795
|
"}\n",
|
|
|
10796
|
"\n",
|
|
|
10797
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
10798
|
" // Request the server to send over a new figure.\n",
|
|
|
10799
|
" fig.send_draw_message();\n",
|
|
|
10800
|
"}\n",
|
|
|
10801
|
"\n",
|
|
|
10802
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
10803
|
" fig.image_mode = msg['mode'];\n",
|
|
|
10804
|
"}\n",
|
|
|
10805
|
"\n",
|
|
|
10806
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
10807
|
" // Called whenever the canvas gets updated.\n",
|
|
|
10808
|
" this.send_message(\"ack\", {});\n",
|
|
|
10809
|
"}\n",
|
|
|
10810
|
"\n",
|
|
|
10811
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
10812
|
"// Called in the figure constructor.\n",
|
|
|
10813
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
10814
|
" return function socket_on_message(evt) {\n",
|
|
|
10815
|
" if (evt.data instanceof Blob) {\n",
|
|
|
10816
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
10817
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
10818
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
10819
|
" * to be part of the websocket stream */\n",
|
|
|
10820
|
" evt.data.type = \"image/png\";\n",
|
|
|
10821
|
"\n",
|
|
|
10822
|
" /* Free the memory for the previous frames */\n",
|
|
|
10823
|
" if (fig.imageObj.src) {\n",
|
|
|
10824
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
10825
|
" fig.imageObj.src);\n",
|
|
|
10826
|
" }\n",
|
|
|
10827
|
"\n",
|
|
|
10828
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
10829
|
" evt.data);\n",
|
|
|
10830
|
" fig.updated_canvas_event();\n",
|
|
|
10831
|
" fig.waiting = false;\n",
|
|
|
10832
|
" return;\n",
|
|
|
10833
|
" }\n",
|
|
|
10834
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
10835
|
" fig.imageObj.src = evt.data;\n",
|
|
|
10836
|
" fig.updated_canvas_event();\n",
|
|
|
10837
|
" fig.waiting = false;\n",
|
|
|
10838
|
" return;\n",
|
|
|
10839
|
" }\n",
|
|
|
10840
|
"\n",
|
|
|
10841
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
10842
|
" var msg_type = msg['type'];\n",
|
|
|
10843
|
"\n",
|
|
|
10844
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
10845
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
10846
|
" try {\n",
|
|
|
10847
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
10848
|
" } catch (e) {\n",
|
|
|
10849
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
10850
|
" return;\n",
|
|
|
10851
|
" }\n",
|
|
|
10852
|
"\n",
|
|
|
10853
|
" if (callback) {\n",
|
|
|
10854
|
" try {\n",
|
|
|
10855
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
10856
|
" callback(fig, msg);\n",
|
|
|
10857
|
" } catch (e) {\n",
|
|
|
10858
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
10859
|
" }\n",
|
|
|
10860
|
" }\n",
|
|
|
10861
|
" };\n",
|
|
|
10862
|
"}\n",
|
|
|
10863
|
"\n",
|
|
|
10864
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
10865
|
"mpl.findpos = function(e) {\n",
|
|
|
10866
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
10867
|
" var targ;\n",
|
|
|
10868
|
" if (!e)\n",
|
|
|
10869
|
" e = window.event;\n",
|
|
|
10870
|
" if (e.target)\n",
|
|
|
10871
|
" targ = e.target;\n",
|
|
|
10872
|
" else if (e.srcElement)\n",
|
|
|
10873
|
" targ = e.srcElement;\n",
|
|
|
10874
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
10875
|
" targ = targ.parentNode;\n",
|
|
|
10876
|
"\n",
|
|
|
10877
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
10878
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
10879
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
10880
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
10881
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
10882
|
"\n",
|
|
|
10883
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
10884
|
"};\n",
|
|
|
10885
|
"\n",
|
|
|
10886
|
"/*\n",
|
|
|
10887
|
" * return a copy of an object with only non-object keys\n",
|
|
|
10888
|
" * we need this to avoid circular references\n",
|
|
|
10889
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
10890
|
" */\n",
|
|
|
10891
|
"function simpleKeys (original) {\n",
|
|
|
10892
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
10893
|
" if (typeof original[key] !== 'object')\n",
|
|
|
10894
|
" obj[key] = original[key]\n",
|
|
|
10895
|
" return obj;\n",
|
|
|
10896
|
" }, {});\n",
|
|
|
10897
|
"}\n",
|
|
|
10898
|
"\n",
|
|
|
10899
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
10900
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
10901
|
"\n",
|
|
|
10902
|
" if (name === 'button_press')\n",
|
|
|
10903
|
" {\n",
|
|
|
10904
|
" this.canvas.focus();\n",
|
|
|
10905
|
" this.canvas_div.focus();\n",
|
|
|
10906
|
" }\n",
|
|
|
10907
|
"\n",
|
|
|
10908
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
10909
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
10910
|
"\n",
|
|
|
10911
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
10912
|
" step: event.step,\n",
|
|
|
10913
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
10914
|
"\n",
|
|
|
10915
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
10916
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
10917
|
" * to control all of the cursor setting manually through the\n",
|
|
|
10918
|
" * 'cursor' event from matplotlib */\n",
|
|
|
10919
|
" event.preventDefault();\n",
|
|
|
10920
|
" return false;\n",
|
|
|
10921
|
"}\n",
|
|
|
10922
|
"\n",
|
|
|
10923
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
10924
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
10925
|
"}\n",
|
|
|
10926
|
"\n",
|
|
|
10927
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
10928
|
"\n",
|
|
|
10929
|
" // Prevent repeat events\n",
|
|
|
10930
|
" if (name == 'key_press')\n",
|
|
|
10931
|
" {\n",
|
|
|
10932
|
" if (event.which === this._key)\n",
|
|
|
10933
|
" return;\n",
|
|
|
10934
|
" else\n",
|
|
|
10935
|
" this._key = event.which;\n",
|
|
|
10936
|
" }\n",
|
|
|
10937
|
" if (name == 'key_release')\n",
|
|
|
10938
|
" this._key = null;\n",
|
|
|
10939
|
"\n",
|
|
|
10940
|
" var value = '';\n",
|
|
|
10941
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
10942
|
" value += \"ctrl+\";\n",
|
|
|
10943
|
" if (event.altKey && event.which != 18)\n",
|
|
|
10944
|
" value += \"alt+\";\n",
|
|
|
10945
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
10946
|
" value += \"shift+\";\n",
|
|
|
10947
|
"\n",
|
|
|
10948
|
" value += 'k';\n",
|
|
|
10949
|
" value += event.which.toString();\n",
|
|
|
10950
|
"\n",
|
|
|
10951
|
" this._key_event_extra(event, name);\n",
|
|
|
10952
|
"\n",
|
|
|
10953
|
" this.send_message(name, {key: value,\n",
|
|
|
10954
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
10955
|
" return false;\n",
|
|
|
10956
|
"}\n",
|
|
|
10957
|
"\n",
|
|
|
10958
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
10959
|
" if (name == 'download') {\n",
|
|
|
10960
|
" this.handle_save(this, null);\n",
|
|
|
10961
|
" } else {\n",
|
|
|
10962
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
10963
|
" }\n",
|
|
|
10964
|
"};\n",
|
|
|
10965
|
"\n",
|
|
|
10966
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
10967
|
" this.message.textContent = tooltip;\n",
|
|
|
10968
|
"};\n",
|
|
|
10969
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
10970
|
"\n",
|
|
|
10971
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
10972
|
"\n",
|
|
|
10973
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
10974
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
10975
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
10976
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
10977
|
" var ws = {};\n",
|
|
|
10978
|
"\n",
|
|
|
10979
|
" ws.close = function() {\n",
|
|
|
10980
|
" comm.close()\n",
|
|
|
10981
|
" };\n",
|
|
|
10982
|
" ws.send = function(m) {\n",
|
|
|
10983
|
" //console.log('sending', m);\n",
|
|
|
10984
|
" comm.send(m);\n",
|
|
|
10985
|
" };\n",
|
|
|
10986
|
" // Register the callback with on_msg.\n",
|
|
|
10987
|
" comm.on_msg(function(msg) {\n",
|
|
|
10988
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
10989
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
10990
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
10991
|
" });\n",
|
|
|
10992
|
" return ws;\n",
|
|
|
10993
|
"}\n",
|
|
|
10994
|
"\n",
|
|
|
10995
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
10996
|
" // This is the function which gets called when the mpl process\n",
|
|
|
10997
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
10998
|
"\n",
|
|
|
10999
|
" var id = msg.content.data.id;\n",
|
|
|
11000
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
11001
|
" // socket was opened in Python.\n",
|
|
|
11002
|
" var element = $(\"#\" + id);\n",
|
|
|
11003
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
11004
|
"\n",
|
|
|
11005
|
" function ondownload(figure, format) {\n",
|
|
|
11006
|
" window.open(figure.imageObj.src);\n",
|
|
|
11007
|
" }\n",
|
|
|
11008
|
"\n",
|
|
|
11009
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
11010
|
" ondownload,\n",
|
|
|
11011
|
" element.get(0));\n",
|
|
|
11012
|
"\n",
|
|
|
11013
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
11014
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
11015
|
" ws_proxy.onopen();\n",
|
|
|
11016
|
"\n",
|
|
|
11017
|
" fig.parent_element = element.get(0);\n",
|
|
|
11018
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
11019
|
" if (!fig.cell_info) {\n",
|
|
|
11020
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
11021
|
" return;\n",
|
|
|
11022
|
" }\n",
|
|
|
11023
|
"\n",
|
|
|
11024
|
" var output_index = fig.cell_info[2]\n",
|
|
|
11025
|
" var cell = fig.cell_info[0];\n",
|
|
|
11026
|
"\n",
|
|
|
11027
|
"};\n",
|
|
|
11028
|
"\n",
|
|
|
11029
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
11030
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
11031
|
" fig.root.unbind('remove')\n",
|
|
|
11032
|
"\n",
|
|
|
11033
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
11034
|
" fig.push_to_output();\n",
|
|
|
11035
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
11036
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
11037
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
11038
|
" IPython.keyboard_manager.enable()\n",
|
|
|
11039
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
11040
|
" fig.close_ws(fig, msg);\n",
|
|
|
11041
|
"}\n",
|
|
|
11042
|
"\n",
|
|
|
11043
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
11044
|
" fig.send_message('closing', msg);\n",
|
|
|
11045
|
" // fig.ws.close()\n",
|
|
|
11046
|
"}\n",
|
|
|
11047
|
"\n",
|
|
|
11048
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
11049
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
11050
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
11051
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
11052
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
11053
|
"}\n",
|
|
|
11054
|
"\n",
|
|
|
11055
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
11056
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
11057
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
11058
|
" this.send_message(\"ack\", {});\n",
|
|
|
11059
|
" var fig = this;\n",
|
|
|
11060
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
11061
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
11062
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
11063
|
"}\n",
|
|
|
11064
|
"\n",
|
|
|
11065
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
11066
|
" var fig = this;\n",
|
|
|
11067
|
"\n",
|
|
|
11068
|
" var nav_element = $('<div/>')\n",
|
|
|
11069
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
11070
|
" this.root.append(nav_element);\n",
|
|
|
11071
|
"\n",
|
|
|
11072
|
" // Define a callback function for later on.\n",
|
|
|
11073
|
" function toolbar_event(event) {\n",
|
|
|
11074
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
11075
|
" }\n",
|
|
|
11076
|
" function toolbar_mouse_event(event) {\n",
|
|
|
11077
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
11078
|
" }\n",
|
|
|
11079
|
"\n",
|
|
|
11080
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
11081
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
11082
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
11083
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
11084
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
11085
|
"\n",
|
|
|
11086
|
" if (!name) { continue; };\n",
|
|
|
11087
|
"\n",
|
|
|
11088
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
11089
|
" button.click(method_name, toolbar_event);\n",
|
|
|
11090
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
11091
|
" nav_element.append(button);\n",
|
|
|
11092
|
" }\n",
|
|
|
11093
|
"\n",
|
|
|
11094
|
" // Add the status bar.\n",
|
|
|
11095
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
11096
|
" nav_element.append(status_bar);\n",
|
|
|
11097
|
" this.message = status_bar[0];\n",
|
|
|
11098
|
"\n",
|
|
|
11099
|
" // Add the close button to the window.\n",
|
|
|
11100
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
11101
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
11102
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
11103
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
11104
|
" buttongrp.append(button);\n",
|
|
|
11105
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
11106
|
" titlebar.prepend(buttongrp);\n",
|
|
|
11107
|
"}\n",
|
|
|
11108
|
"\n",
|
|
|
11109
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
11110
|
" var fig = this\n",
|
|
|
11111
|
" el.on(\"remove\", function(){\n",
|
|
|
11112
|
"\tfig.close_ws(fig, {});\n",
|
|
|
11113
|
" });\n",
|
|
|
11114
|
"}\n",
|
|
|
11115
|
"\n",
|
|
|
11116
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
11117
|
" // this is important to make the div 'focusable\n",
|
|
|
11118
|
" el.attr('tabindex', 0)\n",
|
|
|
11119
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
11120
|
" // off when our div gets focus\n",
|
|
|
11121
|
"\n",
|
|
|
11122
|
" // location in version 3\n",
|
|
|
11123
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
11124
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
11125
|
" }\n",
|
|
|
11126
|
" else {\n",
|
|
|
11127
|
" // location in version 2\n",
|
|
|
11128
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
11129
|
" }\n",
|
|
|
11130
|
"\n",
|
|
|
11131
|
"}\n",
|
|
|
11132
|
"\n",
|
|
|
11133
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
11134
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
11135
|
" if (!manager)\n",
|
|
|
11136
|
" manager = IPython.keyboard_manager;\n",
|
|
|
11137
|
"\n",
|
|
|
11138
|
" // Check for shift+enter\n",
|
|
|
11139
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
11140
|
" this.canvas_div.blur();\n",
|
|
|
11141
|
" event.shiftKey = false;\n",
|
|
|
11142
|
" // Send a \"J\" for go to next cell\n",
|
|
|
11143
|
" event.which = 74;\n",
|
|
|
11144
|
" event.keyCode = 74;\n",
|
|
|
11145
|
" manager.command_mode();\n",
|
|
|
11146
|
" manager.handle_keydown(event);\n",
|
|
|
11147
|
" }\n",
|
|
|
11148
|
"}\n",
|
|
|
11149
|
"\n",
|
|
|
11150
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
11151
|
" fig.ondownload(fig, null);\n",
|
|
|
11152
|
"}\n",
|
|
|
11153
|
"\n",
|
|
|
11154
|
"\n",
|
|
|
11155
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
11156
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
11157
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
11158
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
11159
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
11160
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
11161
|
" var ncells = cells.length;\n",
|
|
|
11162
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
11163
|
" var cell = cells[i];\n",
|
|
|
11164
|
" if (cell.cell_type === 'code'){\n",
|
|
|
11165
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
11166
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
11167
|
" if (data.data) {\n",
|
|
|
11168
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
11169
|
" data = data.data;\n",
|
|
|
11170
|
" }\n",
|
|
|
11171
|
" if (data['text/html'] == html_output) {\n",
|
|
|
11172
|
" return [cell, data, j];\n",
|
|
|
11173
|
" }\n",
|
|
|
11174
|
" }\n",
|
|
|
11175
|
" }\n",
|
|
|
11176
|
" }\n",
|
|
|
11177
|
"}\n",
|
|
|
11178
|
"\n",
|
|
|
11179
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
11180
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
11181
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
11182
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
11183
|
"}\n"
|
|
|
11184
|
],
|
|
|
11185
|
"text/plain": [
|
|
|
11186
|
"<IPython.core.display.Javascript object>"
|
|
|
11187
|
]
|
|
|
11188
|
},
|
|
|
11189
|
"metadata": {},
|
|
|
11190
|
"output_type": "display_data"
|
|
|
11191
|
},
|
|
|
11192
|
{
|
|
|
11193
|
"data": {
|
|
|
11194
|
"text/html": [
|
|
|
11195
|
"<img src=\"data:image/png;base64,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l+9kgAEAAFDGDYsFYAAgL/bn5E4Ahp1YtGhR7LbbbvHII490CsCbNm2K3r17x7nnnlvzni1btsSee+4Zn/vc59peO/fcc2O33XarCcUREZdcckkURRGrV6/epXsZYAAAAJRx/eKnBGAAICv25+ROAIY6XnnllTj00EPjzDPPjIjoFIDvv//+KIoibrnllk7vff/73x9HHHFE25+PP/74OOSQQzo9t3DhwiiKIm6//fZdupsBBgAAQBk1AXjcPY2+DgBAt7M/J3cCMNQxceLE2HvvvWP9+vUR0TkA/+AHP4iiKOLee+/t9N6RI0fGm9/85rY/DxkyJIYNG9bpuUcffTSKooirrrpqh/d45plnoqmpqebMnj3bAAMAAGCnZj34WgA+VgAGADIgAJM7ARh24Nlnn403vOENcfnll7e91jEAz5w5M4qiiCVLlnR6/2c+85nYe++92/683377xUknndTpuSeffDKKoojvfve7O7zLmDFjoiiK7R4DDAAAgHpmCsAAQGYEYHInAMMOfOlLX4oDDjggtmzZ0vaabwADAACQmvYB+Jhv393o6wAAdDsBmNwJwLAdy5cvj169esWECRNi1apVbeeoo46Kgw46KFatWhXPPfec3wAGAACgx5v5s1UCMACQFftzcicAw3bcc889O/xPLr96zj777HjhhReid+/ece6559a8f8uWLbHnnnvGZz/72bbXzjnnnNhtt91i06ZNNc9efPHFURRFrF69epfuaIABAABQxnXtAvDfCcAAQAbsz8mdAAzbsWHDhrjttts6nSFDhsTf/M3fxG233RaPPPJIREQMHz48Bg8eHL///e/b3n/11VdHURQxb968ttcWL14cRVHEuHHj2l57+eWX44ADDoijjjpql+9ogAEAAFDGjAcEYAAgL/bn5E4Ahl3Q8TeAIyKWLl0a/fr1i8MPPzwmT54cF1xwQfTv3z9OOOGETu8fOXJk2zeGp0yZEu973/uid+/esWjRol2+iwEGAABAGe0D8NDLBGAAoPrsz8mdAAy7YHsBOCLivvvui/e9733Rv3//GDRoUIwaNarmG8Gveumll+Kcc86JN7/5zdGvX79497vfHXfeeefruosBBgAAQBnT718pAAMAWbE/J3cCMCTKAAMAAKCMawVgACAz9ufkTgCGRBlgAAAAlNE+AL//sp80+joAAN3O/pzc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uu5ogAEAAFDGsKuuqAnAsx58qtFXAgDoVvbn5E4AhpJeeeWVeOc73xlve9vb2l4766yzYsCAAfGb37z2/55esGBBp1D829/+Nvr06ROjRo1qe621tTWGDh0af/VXfxWvvPLKLt/HAAMAAKCMYZO/+1oAvuqEmCkAAwAVZ39O7gRg2AUf/vCHY99992378z777BMjR47s9NxBBx0UH/jAB9r+PGnSpCiKIh599NGa52688cYoiiLuu+++Xb6LAQYAAEAZwyZ/p10A/mDM/NmqRl8JAKBb2Z+TOwEY6njxxRdjw4YNsWLFivjOd74Tu+22W5x66qkR8f+/1VsURVx22WWd3vfpT3863vCGN7T9+fOf/3zsscce0draWvPcihUroiiKmDBhwi7fzQADAACgjOM6BODrBGAAoOLsz8mdAAx1nHnmmVEURRRFEb169YpTTjklnn/++YiIeOihh6Ioipg5c2an95177rlRFEW8/PLLERExYsSI2G+//To994c//CGKoojRo0fXvcczzzwTTU1NNWf27NkGGAAAADt17JXjawLwjAdWNfpKAADdSgAmdwIw1PHYY4/FggUL4rrrrosRI0bERz/60Vi3bl1ERNx7771RFEXccsstnd73jW98I4qiiI0bN0ZExLBhw+KQQw7p9FxLS0sURRFnn3123XuMGTOmLUR3PAYYAAAA9dQG4ONj+v0rG30lAIBuJQCTOwEYdsEHP/jBePe73x2tra2+AQwAAEASjpk8riYAX3OfAAwAVJsATO4EYNgFU6ZMiaIo4vHHH9/l3wDefffd/QYwAAAAf3LHXFkbgK8WgAGAirM/J3cCMOyCK664IoqiiCVLlkRExKBBg2LkyJGdnjvooINi2LBhbX+eOHFiFEURjz76aM1zN9xwQxRFEffee+8u38UAAwAAoIy/u/LbNQF42r1PNvpKAADdyv6c3AnAsB3PPPNMp9e2bt0aRxxxRAwYMCA2b94cERFf+tKXYsCAAbF69eq25xYuXBhFUcTkyZPbXluzZk306dMnRo0a1fZaa2trDB06NP7yL/8yXnnllV2+owEGAABAGX83qX0A/oAADABUnv05uROAYTtOPvnkGDZsWFx44YUxbdq0uOiii+Lggw+Ooihi/Pjxbc+tXr063vjGN8b+++8fEyZMiEsuuSQGDhwY73jHO9p+//dVr/4u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X4qIiMjvg+rn4uwUAIs0UJrARERERERE5IemrMzFxc1Ou/BnMdlMvG42GQHw4ndv3zEjCtwb8UVYM0w2E50sw3Bxs/OWdXv9dFxERESkjql+Ls5OAbBIA6UJTERERERERH7o/dk7cXGz09EyGJPNxFfhLY0AOPH723fcMxfcGzEzqDEmm4kOti64uK1i4KwN9dNxERERkTqm+rk4OwXAIg2UJjARERERERH5oSG+G3FxW0WH2C6YbCa8gxobAXBawO077lsB7o2I83sEk82EyWaiyfgFNPt+NZVV1fXTeREREZE6pPq5ODsFwCINlCYwERERERERueny9Rs0GWfH5ftFjlDX5veIEQDvmXf7zkXrwb0RKd5/d+zb1D0CFzc7h8ov1c8AREREROqQ6ufi7BQAizRQmsBERERERETkpszis7i42Wk6OcYR6ibOetAIgAtTbt/56A5wb8R+jwcc+zaf4YmLm511+0rrZwAiIiIidUj1c3F2CoBFGihNYCIiIiIiInJT3NbDuLjZaTbN1xHq7vH8ixEAl+y9feczB8G9ERVT73fs28L7W1zc7AQkF9TPAERERETqkOrn4uwUAIs0UJrARERERERE5Ca3Jdm4uNkx+bg7Qt2T0/5kBMAXy27fufIquDeixr0RvWZ3xmQz0TX8E1zc7Lxn21k/AxARERGpQ6qfi7NTACzSQGkCExERERERkZueCk7Dxc3OAPNYTDYTnW0duOHeCKb8EaqrfnqAdzNwb8Tzc3pispkYMPt1XNzs9PZM+em+IiIiIg2M6ufi7BQAizRQmsBEREREREQEoLKqmpYT1uDiZmdI/GuYbCZeiOtprP71aXnngyL6gXsjPrcZAXD/uSNxcbPj4mbn9MVr93YAIiIiInVM9XNxdgqARRooTWAiIiIiIiICsOvIWUd42zt+ACabCbfZfYwAOKLvnQ+a9yq4N8IrxrgEdOe4rri4rcTFzc6mglP3dgAiIiIidUz1c3F2CoBFGihNYCIiIiIiIgIQtrHQCIDHL3Tc/zfG3MMIgOP+ceeD7F+BeyOWBDZzHNN0khUXNzthGwvv7QBERERE6pjq5+LsFACLNFCawERERERERATgDXOGsfo3INoR5qYGtzUC4GUf3/mgzb7g3ohcjwccx3QPmIWLm523rdvv7QBERERE6pjq5+LsFACLNFCawERERERE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KdUwpZeUarjST+qzrKVLl2bGjBl56623tvdWPmwXAmCgJCxf7pkO0BD0EjQMvQQNRz9Bw9BL0DD0EjQc/QTw2REAAyXBPxihYeglaBh6CRqOfoKGoZegYeglaDj6CeCzIwAGSoJ/MELD0EvQMPQSNBz9BA1DL0HD0EvQcPQTwGdHAAyUBP9ghIahl6Bh6CVoOPoJGoZegoahl6Dh6CeAz44AGCgJr776aq688sq8+uqr23sq0KjpJWgYegkajn6ChqGXoGHoJWg4+gngsyMABgAAAAAAACgRAmAAAAAAAACAEiEABgAAAAAAACgRAmAAAAAAAACAEiEABgAAAAAAACgRAmAAAAAAAACAEiEABhq1devW5Yc//GH22Wef7LLLLjnkkEMyf/787T0t2GE99thj6devX/7lX/4lrVu3zn777ZfevXvn2WefrXfsypUr061bt7Rp0ya77bZbzj777Lz22mvbYdbQOAwePDhFUaRdu3b1frZ48eJ07NgxrVq1yl577ZVLLrkk77777naYJeyYli5dml69emW33XZLq1at0q5du9x8881bHKOP4JM999xzOeOMM7LvvvumVatW+epXv5qrr746f/rTn7Y4Tj/BX7377rv52c9+lm7dumW33XZLURQZO3bshx67tddIGzduzPXXX59//Md/TMuWLfO1r30tkyZN+ozfCWxfW9NLGzduzNixY9OrV698+ctfTuvWrdOuXbsMGjQoa9eu/dDzjh49Ov/0T/+Uli1b5qCDDsott9yyDd4NQOMnAAYatT59+qRFixYZMGBAysvL0759+7Ro0SIPPfTQ9p4a7JBOPfXU7L333rnkkktSWVmZQYMGZa+99kqbNm3y1FNPbT7upZdeyj/8wz/kwAMPzM0335whQ4Zkt912y7/+679m/fr12/EdwI7ppZdeSuvWrdOmTZt6AfCyZcuyyy675Bvf+EZGjRqVK664Ii1btsxxxx23nWYLO5Z58+Zl5513zqGHHpqbbropFRUVueyyyzJw4MDNx+gj+GSrV6/OF7/4xey///659tprU15ennPPPTdFUeSEE07YfJx+gi2tWrUqRVHkK1/5Srp06fKRAfCnuUa6/PLLUxRFvvvd76aioiI9evRIURSpra3dRu8Ktr2t6aV33303RVHksMMOy+DBg1NRUZHvfOc7adasWbp06ZJNmzZtcXxZWVmKosipp56aioqKnHPOOSmKItddd902fGcAjZMAGGi0Hn300RRFkRtuuGHz2Nq1a3PggQemffv223FmsONavHhxvc2J5557Li1btsxZZ521eeziiy9Oq1at8uKLL24eW7BgQYqiSHl5+TabLzQWZ5xxRrp27ZrOnTvXC4C7d++effbZJ2vWrNk8VllZmaIoMm/evG09VdihrFmzJnvttVdOPvnkbNy48SOP00fwyYYMGZKiKLJ8+fItxvv27ZuiKPLHP/4xiX6Cv7Vu3bq88sorSZLHH3/8IwPgrb1Gevnll7PTTjulX79+m8c2bdqUTp065ctf/nI2bNjw2b0Z2I62ppfWr1+fxYsX13vt1VdfnaIosmDBgs1j77//fvbYY4/06NFji2PPOuustGnTZvO6BsCHEwADjdbAgQPTvHnzLTYukmTo0KEpiiKrV6/eTjODxueb3/xmvvnNb27+/y996Uvp3bt3vePatm2bo446altODXZ4ixYtSvPmzfPkk0/WC4DXrFmTFi1abHEnY1K38fH5z38+559//raeLuxQRo0alaIosnLlyiTJe++9Vy8I1kewdS677LIURZHXX3+93nizZs3y3nvv6Sf4BB8XAG/tNdKIESNSFEVWrFixxXGTJk1KURS+sYwm4eN66cM8+eSTKYpii693nj17doqiyOzZs7c49uGHH05RFKmpqWnIKQOUHAEw0GgdffTR+ed//ud64/fee2+KosjMmTO3w6yg8dm0aVP23XffHHvssUnqfmO9KIpcf/319Y49++yzs/vuu2/rKcIOa8OGDfn617+eCy+8MEnqBcC//OUvUxRFpkyZUu+1hx9++Ba/eAFN0amnnppdd901CxYsSNu2bVMURdq0aZOLLrpo83Pg9BFsnTlz5mz+uudly5Zl9erVmTx5cnbddddceumlSfQTfJKPCq0+zTXSBRdckDZt2tT7Ktvf/va39QIuKFWfNgCeP39+iqLY4lnZgwcPTlEUefXVV7c4dv369WnWrFl+8IMfNOSUAUqOABhotNq1a5euXbvWG1+xYkWKokhZWdl2mBU0PjU1NSmKImPGjEny1wu18ePH1zt24MCBKYoi69at29bThB3Sbbfdli984Qt57bXXktQPgKdOnZqiKPLggw/We23v3r2z9957b7O5wo7o61//elq3bp3WrVvnkksuybRp03LJJZekKIr06dMniT6CT2PQoEFp1apViqLYXFdcccXmn+sn+HgfFVp9mmukHj165IADDqh33J/+9KcURZHLL7/8M5k77Eg+bQB89NFHZ9ddd81bb721eaxfv35p3rz5hx6/5557bv63IgAfTgAMNFoHHHBAunfvXm/8hRdeSFEUGTZs2HaYFTQuTz/9dHbddde0b99+87OoHnzwwY+8M+SnP/1piqLY4qIMmqo33ngju+++e2688cbNY38bAI8fPz5FUeTRRx+t9/pzzjknX/jCF7bJXGFHdcABB6Qoilx00UVbjF944YUpiiLPPfecPoJPoaamJt26dUtFRUWmTZuW8847L5/73Ody6623JrEuwSf5qNDq01wjde3a9UO/rWzjxo0piiL9+/f/TOYOO5JPEwB/8Az7kSNHbjF+3nnnpVWrVh/6mv322y8nnnhiQ0wVoGQJgIFGyx3A8Pd55ZVXcsABB2S//fbL73//+83j7gCGrXPRRRfloIMOyvr16zePuQMYPp127dqlKIosWrRoi/FFixalKIpUV1frI9hKtbW1adWqVV566aUtxs8999y0bt06b7zxhn6CT+AOYGgYWxsAT548OZ/73Oc+9Bn07gAG+PsIgIFGyzOA4X/v7bffzr/9279l9913z4oVK7b4mWcAwyd77rnn0qxZs9xyyy1ZtWrV5jr00EPTtm3brFq1Km+++aZnLcInOOaYY1IURZ555pktxp9++ukURZHhw4frI9hKnTp1SocOHeqNT58+PUVRZMGCBfoJPkFDPQO4devWngFMk7Y1AfD8+fOz8847p2fPnvnLX/5S7+eeAQzw9xEAA43WgAED0rx586xZs2aL8Q++Omb16tXbaWawY1u7dm06deqU1q1b5+GHH/7QY/bcc8/07t273njbtm0/9M57aGruv//+LZ6v+GHVv3//vP3222nRokUGDhy4xevXr1+fz3/+8znvvPO20zuAHcPll1+eoihy3333bTF+3333pSiKTJw4UR/BVmrbtm0OPfTQeuNTpkxJURSZM2eOfoJP8HGh1dZeI912220piqLeL9pOnDjxI+/Ah1LzSQHwkiVL0qZNm3To0CHvv//+hx4za9asFEWR2bNnbzG+ePHij7wjH4C/EgADjdaSJUtSFEVuuOGGzWPr1q3LQQcd9KEbH0CyYcOGnHDCCWnRokW9i6j/6aKLLkqrVq22+EWKD+6uHzVq1LaYKuzQXn/99dx55531ql27dvnKV76SO++8M08++WSS5Ljjjss+++yTd955Z/PrR48evXkzHpqyJ554IkVR5Fvf+tYW42eeeWZatGix+REF+gg+Wc+ePbPzzjvn2Wef3WL8pJNOSrNmzfQTbIWPC6229hrppZdeyk477ZR+/fptHtu0aVM6deqUfffdNxs2bPhM3wPsCD6ul1auXJk99tgj7dq1yx//+MePPMf777+f3XffPT179txi/Oyzz07r1q3z5ptvNvS0AUqKABho1Hr37r35N9jLy8vToUOHtGjRot5z5IA6/fv3T1EU6dWrV2pqaurVB1avXp099tgjBx54YG655ZYMHTo0u+22W772ta95/i98jL99BnCSLF26NC1btsw3vvGNjBo1KldccUV22WWXHHvssdtplrBjOe+881IURU4//fSMGDEivXv3TlEU+dGPfrT5GH0En2zRokVp3rx5vvSlL+Waa67JiBEj0r179xRFkQsuuGDzcfoJ6rv11lszaNCgXHzxxSmKIqecckoGDRqUQYMG5e23307y6a6RPngu8Pe+971UVlamR48em7/ZAkrZJ/XSO++8k/322y/NmjXLddddV29P4m+/pWzEiBEpiiKnnXZaKisr07dv3xRFkSFDhmyndwjQeAiAgUZt7dq1GTBgQPbee++0bNkyBx98cObOnbu9pwU7rM6dO3/sV9b+T8uXL8+xxx6b1q1b54tf/GLOOuus/OEPf9hOM4fG4cMC4CR56KGH0qFDh+yyyy7Zc889069fvy3uvIKm7M9//nOuuuqq7L///tlpp51y0EEHZdiwYfWO00fwyR599NF07949e++9d3baaae0bds2Q4YMqfdsRf0EW9p///0/8hpp1apVm4/b2mukjRs3ZujQodl///2z8847p127dpkwYcI2fEewfXxSL61atepj9yS+/e1v1ztnRUVFvvrVr2bnnXfOgQcemGHDhtV7xjYA9QmAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAP78BGAAAAPklEQVQAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRAiAAQAAAAAAAEqEABgAAAAAAACgRPw/mUQIdkg0zugAAAAASUVORK5CYII=\" width=\"1600\">"
|
|
|
11196
|
],
|
|
|
11197
|
"text/plain": [
|
|
|
11198
|
"<IPython.core.display.HTML object>"
|
|
|
11199
|
]
|
|
|
11200
|
},
|
|
|
11201
|
"metadata": {},
|
|
|
11202
|
"output_type": "display_data"
|
|
|
11203
|
},
|
|
|
11204
|
{
|
|
|
11205
|
"data": {
|
|
|
11206
|
"application/javascript": [
|
|
|
11207
|
"/* Put everything inside the global mpl namespace */\n",
|
|
|
11208
|
"window.mpl = {};\n",
|
|
|
11209
|
"\n",
|
|
|
11210
|
"\n",
|
|
|
11211
|
"mpl.get_websocket_type = function() {\n",
|
|
|
11212
|
" if (typeof(WebSocket) !== 'undefined') {\n",
|
|
|
11213
|
" return WebSocket;\n",
|
|
|
11214
|
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
|
|
|
11215
|
" return MozWebSocket;\n",
|
|
|
11216
|
" } else {\n",
|
|
|
11217
|
" alert('Your browser does not have WebSocket support.' +\n",
|
|
|
11218
|
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
|
|
|
11219
|
" 'Firefox 4 and 5 are also supported but you ' +\n",
|
|
|
11220
|
" 'have to enable WebSockets in about:config.');\n",
|
|
|
11221
|
" };\n",
|
|
|
11222
|
"}\n",
|
|
|
11223
|
"\n",
|
|
|
11224
|
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
|
|
|
11225
|
" this.id = figure_id;\n",
|
|
|
11226
|
"\n",
|
|
|
11227
|
" this.ws = websocket;\n",
|
|
|
11228
|
"\n",
|
|
|
11229
|
" this.supports_binary = (this.ws.binaryType != undefined);\n",
|
|
|
11230
|
"\n",
|
|
|
11231
|
" if (!this.supports_binary) {\n",
|
|
|
11232
|
" var warnings = document.getElementById(\"mpl-warnings\");\n",
|
|
|
11233
|
" if (warnings) {\n",
|
|
|
11234
|
" warnings.style.display = 'block';\n",
|
|
|
11235
|
" warnings.textContent = (\n",
|
|
|
11236
|
" \"This browser does not support binary websocket messages. \" +\n",
|
|
|
11237
|
" \"Performance may be slow.\");\n",
|
|
|
11238
|
" }\n",
|
|
|
11239
|
" }\n",
|
|
|
11240
|
"\n",
|
|
|
11241
|
" this.imageObj = new Image();\n",
|
|
|
11242
|
"\n",
|
|
|
11243
|
" this.context = undefined;\n",
|
|
|
11244
|
" this.message = undefined;\n",
|
|
|
11245
|
" this.canvas = undefined;\n",
|
|
|
11246
|
" this.rubberband_canvas = undefined;\n",
|
|
|
11247
|
" this.rubberband_context = undefined;\n",
|
|
|
11248
|
" this.format_dropdown = undefined;\n",
|
|
|
11249
|
"\n",
|
|
|
11250
|
" this.image_mode = 'full';\n",
|
|
|
11251
|
"\n",
|
|
|
11252
|
" this.root = $('<div/>');\n",
|
|
|
11253
|
" this._root_extra_style(this.root)\n",
|
|
|
11254
|
" this.root.attr('style', 'display: inline-block');\n",
|
|
|
11255
|
"\n",
|
|
|
11256
|
" $(parent_element).append(this.root);\n",
|
|
|
11257
|
"\n",
|
|
|
11258
|
" this._init_header(this);\n",
|
|
|
11259
|
" this._init_canvas(this);\n",
|
|
|
11260
|
" this._init_toolbar(this);\n",
|
|
|
11261
|
"\n",
|
|
|
11262
|
" var fig = this;\n",
|
|
|
11263
|
"\n",
|
|
|
11264
|
" this.waiting = false;\n",
|
|
|
11265
|
"\n",
|
|
|
11266
|
" this.ws.onopen = function () {\n",
|
|
|
11267
|
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
|
|
|
11268
|
" fig.send_message(\"send_image_mode\", {});\n",
|
|
|
11269
|
" if (mpl.ratio != 1) {\n",
|
|
|
11270
|
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
|
|
|
11271
|
" }\n",
|
|
|
11272
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
11273
|
" }\n",
|
|
|
11274
|
"\n",
|
|
|
11275
|
" this.imageObj.onload = function() {\n",
|
|
|
11276
|
" if (fig.image_mode == 'full') {\n",
|
|
|
11277
|
" // Full images could contain transparency (where diff images\n",
|
|
|
11278
|
" // almost always do), so we need to clear the canvas so that\n",
|
|
|
11279
|
" // there is no ghosting.\n",
|
|
|
11280
|
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
11281
|
" }\n",
|
|
|
11282
|
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
|
|
|
11283
|
" };\n",
|
|
|
11284
|
"\n",
|
|
|
11285
|
" this.imageObj.onunload = function() {\n",
|
|
|
11286
|
" fig.ws.close();\n",
|
|
|
11287
|
" }\n",
|
|
|
11288
|
"\n",
|
|
|
11289
|
" this.ws.onmessage = this._make_on_message_function(this);\n",
|
|
|
11290
|
"\n",
|
|
|
11291
|
" this.ondownload = ondownload;\n",
|
|
|
11292
|
"}\n",
|
|
|
11293
|
"\n",
|
|
|
11294
|
"mpl.figure.prototype._init_header = function() {\n",
|
|
|
11295
|
" var titlebar = $(\n",
|
|
|
11296
|
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
|
|
|
11297
|
" 'ui-helper-clearfix\"/>');\n",
|
|
|
11298
|
" var titletext = $(\n",
|
|
|
11299
|
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
|
|
|
11300
|
" 'text-align: center; padding: 3px;\"/>');\n",
|
|
|
11301
|
" titlebar.append(titletext)\n",
|
|
|
11302
|
" this.root.append(titlebar);\n",
|
|
|
11303
|
" this.header = titletext[0];\n",
|
|
|
11304
|
"}\n",
|
|
|
11305
|
"\n",
|
|
|
11306
|
"\n",
|
|
|
11307
|
"\n",
|
|
|
11308
|
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
|
|
|
11309
|
"\n",
|
|
|
11310
|
"}\n",
|
|
|
11311
|
"\n",
|
|
|
11312
|
"\n",
|
|
|
11313
|
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
|
|
|
11314
|
"\n",
|
|
|
11315
|
"}\n",
|
|
|
11316
|
"\n",
|
|
|
11317
|
"mpl.figure.prototype._init_canvas = function() {\n",
|
|
|
11318
|
" var fig = this;\n",
|
|
|
11319
|
"\n",
|
|
|
11320
|
" var canvas_div = $('<div/>');\n",
|
|
|
11321
|
"\n",
|
|
|
11322
|
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
|
|
|
11323
|
"\n",
|
|
|
11324
|
" function canvas_keyboard_event(event) {\n",
|
|
|
11325
|
" return fig.key_event(event, event['data']);\n",
|
|
|
11326
|
" }\n",
|
|
|
11327
|
"\n",
|
|
|
11328
|
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
|
|
|
11329
|
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
|
|
|
11330
|
" this.canvas_div = canvas_div\n",
|
|
|
11331
|
" this._canvas_extra_style(canvas_div)\n",
|
|
|
11332
|
" this.root.append(canvas_div);\n",
|
|
|
11333
|
"\n",
|
|
|
11334
|
" var canvas = $('<canvas/>');\n",
|
|
|
11335
|
" canvas.addClass('mpl-canvas');\n",
|
|
|
11336
|
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
|
|
|
11337
|
"\n",
|
|
|
11338
|
" this.canvas = canvas[0];\n",
|
|
|
11339
|
" this.context = canvas[0].getContext(\"2d\");\n",
|
|
|
11340
|
"\n",
|
|
|
11341
|
" var backingStore = this.context.backingStorePixelRatio ||\n",
|
|
|
11342
|
"\tthis.context.webkitBackingStorePixelRatio ||\n",
|
|
|
11343
|
"\tthis.context.mozBackingStorePixelRatio ||\n",
|
|
|
11344
|
"\tthis.context.msBackingStorePixelRatio ||\n",
|
|
|
11345
|
"\tthis.context.oBackingStorePixelRatio ||\n",
|
|
|
11346
|
"\tthis.context.backingStorePixelRatio || 1;\n",
|
|
|
11347
|
"\n",
|
|
|
11348
|
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
|
|
|
11349
|
"\n",
|
|
|
11350
|
" var rubberband = $('<canvas/>');\n",
|
|
|
11351
|
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
|
|
|
11352
|
"\n",
|
|
|
11353
|
" var pass_mouse_events = true;\n",
|
|
|
11354
|
"\n",
|
|
|
11355
|
" canvas_div.resizable({\n",
|
|
|
11356
|
" start: function(event, ui) {\n",
|
|
|
11357
|
" pass_mouse_events = false;\n",
|
|
|
11358
|
" },\n",
|
|
|
11359
|
" resize: function(event, ui) {\n",
|
|
|
11360
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
11361
|
" },\n",
|
|
|
11362
|
" stop: function(event, ui) {\n",
|
|
|
11363
|
" pass_mouse_events = true;\n",
|
|
|
11364
|
" fig.request_resize(ui.size.width, ui.size.height);\n",
|
|
|
11365
|
" },\n",
|
|
|
11366
|
" });\n",
|
|
|
11367
|
"\n",
|
|
|
11368
|
" function mouse_event_fn(event) {\n",
|
|
|
11369
|
" if (pass_mouse_events)\n",
|
|
|
11370
|
" return fig.mouse_event(event, event['data']);\n",
|
|
|
11371
|
" }\n",
|
|
|
11372
|
"\n",
|
|
|
11373
|
" rubberband.mousedown('button_press', mouse_event_fn);\n",
|
|
|
11374
|
" rubberband.mouseup('button_release', mouse_event_fn);\n",
|
|
|
11375
|
" // Throttle sequential mouse events to 1 every 20ms.\n",
|
|
|
11376
|
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
|
|
|
11377
|
"\n",
|
|
|
11378
|
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
|
|
|
11379
|
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
|
|
|
11380
|
"\n",
|
|
|
11381
|
" canvas_div.on(\"wheel\", function (event) {\n",
|
|
|
11382
|
" event = event.originalEvent;\n",
|
|
|
11383
|
" event['data'] = 'scroll'\n",
|
|
|
11384
|
" if (event.deltaY < 0) {\n",
|
|
|
11385
|
" event.step = 1;\n",
|
|
|
11386
|
" } else {\n",
|
|
|
11387
|
" event.step = -1;\n",
|
|
|
11388
|
" }\n",
|
|
|
11389
|
" mouse_event_fn(event);\n",
|
|
|
11390
|
" });\n",
|
|
|
11391
|
"\n",
|
|
|
11392
|
" canvas_div.append(canvas);\n",
|
|
|
11393
|
" canvas_div.append(rubberband);\n",
|
|
|
11394
|
"\n",
|
|
|
11395
|
" this.rubberband = rubberband;\n",
|
|
|
11396
|
" this.rubberband_canvas = rubberband[0];\n",
|
|
|
11397
|
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
|
|
|
11398
|
" this.rubberband_context.strokeStyle = \"#000000\";\n",
|
|
|
11399
|
"\n",
|
|
|
11400
|
" this._resize_canvas = function(width, height) {\n",
|
|
|
11401
|
" // Keep the size of the canvas, canvas container, and rubber band\n",
|
|
|
11402
|
" // canvas in synch.\n",
|
|
|
11403
|
" canvas_div.css('width', width)\n",
|
|
|
11404
|
" canvas_div.css('height', height)\n",
|
|
|
11405
|
"\n",
|
|
|
11406
|
" canvas.attr('width', width * mpl.ratio);\n",
|
|
|
11407
|
" canvas.attr('height', height * mpl.ratio);\n",
|
|
|
11408
|
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
|
|
|
11409
|
"\n",
|
|
|
11410
|
" rubberband.attr('width', width);\n",
|
|
|
11411
|
" rubberband.attr('height', height);\n",
|
|
|
11412
|
" }\n",
|
|
|
11413
|
"\n",
|
|
|
11414
|
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
|
|
|
11415
|
" // upon first draw.\n",
|
|
|
11416
|
" this._resize_canvas(600, 600);\n",
|
|
|
11417
|
"\n",
|
|
|
11418
|
" // Disable right mouse context menu.\n",
|
|
|
11419
|
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
|
|
|
11420
|
" return false;\n",
|
|
|
11421
|
" });\n",
|
|
|
11422
|
"\n",
|
|
|
11423
|
" function set_focus () {\n",
|
|
|
11424
|
" canvas.focus();\n",
|
|
|
11425
|
" canvas_div.focus();\n",
|
|
|
11426
|
" }\n",
|
|
|
11427
|
"\n",
|
|
|
11428
|
" window.setTimeout(set_focus, 100);\n",
|
|
|
11429
|
"}\n",
|
|
|
11430
|
"\n",
|
|
|
11431
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
11432
|
" var fig = this;\n",
|
|
|
11433
|
"\n",
|
|
|
11434
|
" var nav_element = $('<div/>')\n",
|
|
|
11435
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
11436
|
" this.root.append(nav_element);\n",
|
|
|
11437
|
"\n",
|
|
|
11438
|
" // Define a callback function for later on.\n",
|
|
|
11439
|
" function toolbar_event(event) {\n",
|
|
|
11440
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
11441
|
" }\n",
|
|
|
11442
|
" function toolbar_mouse_event(event) {\n",
|
|
|
11443
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
11444
|
" }\n",
|
|
|
11445
|
"\n",
|
|
|
11446
|
" for(var toolbar_ind in mpl.toolbar_items) {\n",
|
|
|
11447
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
11448
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
11449
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
11450
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
11451
|
"\n",
|
|
|
11452
|
" if (!name) {\n",
|
|
|
11453
|
" // put a spacer in here.\n",
|
|
|
11454
|
" continue;\n",
|
|
|
11455
|
" }\n",
|
|
|
11456
|
" var button = $('<button/>');\n",
|
|
|
11457
|
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
|
|
|
11458
|
" 'ui-button-icon-only');\n",
|
|
|
11459
|
" button.attr('role', 'button');\n",
|
|
|
11460
|
" button.attr('aria-disabled', 'false');\n",
|
|
|
11461
|
" button.click(method_name, toolbar_event);\n",
|
|
|
11462
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
11463
|
"\n",
|
|
|
11464
|
" var icon_img = $('<span/>');\n",
|
|
|
11465
|
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
|
|
|
11466
|
" icon_img.addClass(image);\n",
|
|
|
11467
|
" icon_img.addClass('ui-corner-all');\n",
|
|
|
11468
|
"\n",
|
|
|
11469
|
" var tooltip_span = $('<span/>');\n",
|
|
|
11470
|
" tooltip_span.addClass('ui-button-text');\n",
|
|
|
11471
|
" tooltip_span.html(tooltip);\n",
|
|
|
11472
|
"\n",
|
|
|
11473
|
" button.append(icon_img);\n",
|
|
|
11474
|
" button.append(tooltip_span);\n",
|
|
|
11475
|
"\n",
|
|
|
11476
|
" nav_element.append(button);\n",
|
|
|
11477
|
" }\n",
|
|
|
11478
|
"\n",
|
|
|
11479
|
" var fmt_picker_span = $('<span/>');\n",
|
|
|
11480
|
"\n",
|
|
|
11481
|
" var fmt_picker = $('<select/>');\n",
|
|
|
11482
|
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
|
|
|
11483
|
" fmt_picker_span.append(fmt_picker);\n",
|
|
|
11484
|
" nav_element.append(fmt_picker_span);\n",
|
|
|
11485
|
" this.format_dropdown = fmt_picker[0];\n",
|
|
|
11486
|
"\n",
|
|
|
11487
|
" for (var ind in mpl.extensions) {\n",
|
|
|
11488
|
" var fmt = mpl.extensions[ind];\n",
|
|
|
11489
|
" var option = $(\n",
|
|
|
11490
|
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
|
|
|
11491
|
" fmt_picker.append(option)\n",
|
|
|
11492
|
" }\n",
|
|
|
11493
|
"\n",
|
|
|
11494
|
" // Add hover states to the ui-buttons\n",
|
|
|
11495
|
" $( \".ui-button\" ).hover(\n",
|
|
|
11496
|
" function() { $(this).addClass(\"ui-state-hover\");},\n",
|
|
|
11497
|
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
|
|
|
11498
|
" );\n",
|
|
|
11499
|
"\n",
|
|
|
11500
|
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
|
|
|
11501
|
" nav_element.append(status_bar);\n",
|
|
|
11502
|
" this.message = status_bar[0];\n",
|
|
|
11503
|
"}\n",
|
|
|
11504
|
"\n",
|
|
|
11505
|
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
|
|
|
11506
|
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
|
|
|
11507
|
" // which will in turn request a refresh of the image.\n",
|
|
|
11508
|
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
|
|
|
11509
|
"}\n",
|
|
|
11510
|
"\n",
|
|
|
11511
|
"mpl.figure.prototype.send_message = function(type, properties) {\n",
|
|
|
11512
|
" properties['type'] = type;\n",
|
|
|
11513
|
" properties['figure_id'] = this.id;\n",
|
|
|
11514
|
" this.ws.send(JSON.stringify(properties));\n",
|
|
|
11515
|
"}\n",
|
|
|
11516
|
"\n",
|
|
|
11517
|
"mpl.figure.prototype.send_draw_message = function() {\n",
|
|
|
11518
|
" if (!this.waiting) {\n",
|
|
|
11519
|
" this.waiting = true;\n",
|
|
|
11520
|
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
|
|
|
11521
|
" }\n",
|
|
|
11522
|
"}\n",
|
|
|
11523
|
"\n",
|
|
|
11524
|
"\n",
|
|
|
11525
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
11526
|
" var format_dropdown = fig.format_dropdown;\n",
|
|
|
11527
|
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
|
|
|
11528
|
" fig.ondownload(fig, format);\n",
|
|
|
11529
|
"}\n",
|
|
|
11530
|
"\n",
|
|
|
11531
|
"\n",
|
|
|
11532
|
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
|
|
|
11533
|
" var size = msg['size'];\n",
|
|
|
11534
|
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
|
|
|
11535
|
" fig._resize_canvas(size[0], size[1]);\n",
|
|
|
11536
|
" fig.send_message(\"refresh\", {});\n",
|
|
|
11537
|
" };\n",
|
|
|
11538
|
"}\n",
|
|
|
11539
|
"\n",
|
|
|
11540
|
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
|
|
|
11541
|
" var x0 = msg['x0'] / mpl.ratio;\n",
|
|
|
11542
|
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
|
|
|
11543
|
" var x1 = msg['x1'] / mpl.ratio;\n",
|
|
|
11544
|
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
|
|
|
11545
|
" x0 = Math.floor(x0) + 0.5;\n",
|
|
|
11546
|
" y0 = Math.floor(y0) + 0.5;\n",
|
|
|
11547
|
" x1 = Math.floor(x1) + 0.5;\n",
|
|
|
11548
|
" y1 = Math.floor(y1) + 0.5;\n",
|
|
|
11549
|
" var min_x = Math.min(x0, x1);\n",
|
|
|
11550
|
" var min_y = Math.min(y0, y1);\n",
|
|
|
11551
|
" var width = Math.abs(x1 - x0);\n",
|
|
|
11552
|
" var height = Math.abs(y1 - y0);\n",
|
|
|
11553
|
"\n",
|
|
|
11554
|
" fig.rubberband_context.clearRect(\n",
|
|
|
11555
|
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
|
|
|
11556
|
"\n",
|
|
|
11557
|
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
|
|
|
11558
|
"}\n",
|
|
|
11559
|
"\n",
|
|
|
11560
|
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
|
|
|
11561
|
" // Updates the figure title.\n",
|
|
|
11562
|
" fig.header.textContent = msg['label'];\n",
|
|
|
11563
|
"}\n",
|
|
|
11564
|
"\n",
|
|
|
11565
|
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
|
|
|
11566
|
" var cursor = msg['cursor'];\n",
|
|
|
11567
|
" switch(cursor)\n",
|
|
|
11568
|
" {\n",
|
|
|
11569
|
" case 0:\n",
|
|
|
11570
|
" cursor = 'pointer';\n",
|
|
|
11571
|
" break;\n",
|
|
|
11572
|
" case 1:\n",
|
|
|
11573
|
" cursor = 'default';\n",
|
|
|
11574
|
" break;\n",
|
|
|
11575
|
" case 2:\n",
|
|
|
11576
|
" cursor = 'crosshair';\n",
|
|
|
11577
|
" break;\n",
|
|
|
11578
|
" case 3:\n",
|
|
|
11579
|
" cursor = 'move';\n",
|
|
|
11580
|
" break;\n",
|
|
|
11581
|
" }\n",
|
|
|
11582
|
" fig.rubberband_canvas.style.cursor = cursor;\n",
|
|
|
11583
|
"}\n",
|
|
|
11584
|
"\n",
|
|
|
11585
|
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
|
|
|
11586
|
" fig.message.textContent = msg['message'];\n",
|
|
|
11587
|
"}\n",
|
|
|
11588
|
"\n",
|
|
|
11589
|
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
|
|
|
11590
|
" // Request the server to send over a new figure.\n",
|
|
|
11591
|
" fig.send_draw_message();\n",
|
|
|
11592
|
"}\n",
|
|
|
11593
|
"\n",
|
|
|
11594
|
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
|
|
|
11595
|
" fig.image_mode = msg['mode'];\n",
|
|
|
11596
|
"}\n",
|
|
|
11597
|
"\n",
|
|
|
11598
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
11599
|
" // Called whenever the canvas gets updated.\n",
|
|
|
11600
|
" this.send_message(\"ack\", {});\n",
|
|
|
11601
|
"}\n",
|
|
|
11602
|
"\n",
|
|
|
11603
|
"// A function to construct a web socket function for onmessage handling.\n",
|
|
|
11604
|
"// Called in the figure constructor.\n",
|
|
|
11605
|
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
|
|
|
11606
|
" return function socket_on_message(evt) {\n",
|
|
|
11607
|
" if (evt.data instanceof Blob) {\n",
|
|
|
11608
|
" /* FIXME: We get \"Resource interpreted as Image but\n",
|
|
|
11609
|
" * transferred with MIME type text/plain:\" errors on\n",
|
|
|
11610
|
" * Chrome. But how to set the MIME type? It doesn't seem\n",
|
|
|
11611
|
" * to be part of the websocket stream */\n",
|
|
|
11612
|
" evt.data.type = \"image/png\";\n",
|
|
|
11613
|
"\n",
|
|
|
11614
|
" /* Free the memory for the previous frames */\n",
|
|
|
11615
|
" if (fig.imageObj.src) {\n",
|
|
|
11616
|
" (window.URL || window.webkitURL).revokeObjectURL(\n",
|
|
|
11617
|
" fig.imageObj.src);\n",
|
|
|
11618
|
" }\n",
|
|
|
11619
|
"\n",
|
|
|
11620
|
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
|
|
|
11621
|
" evt.data);\n",
|
|
|
11622
|
" fig.updated_canvas_event();\n",
|
|
|
11623
|
" fig.waiting = false;\n",
|
|
|
11624
|
" return;\n",
|
|
|
11625
|
" }\n",
|
|
|
11626
|
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
|
|
|
11627
|
" fig.imageObj.src = evt.data;\n",
|
|
|
11628
|
" fig.updated_canvas_event();\n",
|
|
|
11629
|
" fig.waiting = false;\n",
|
|
|
11630
|
" return;\n",
|
|
|
11631
|
" }\n",
|
|
|
11632
|
"\n",
|
|
|
11633
|
" var msg = JSON.parse(evt.data);\n",
|
|
|
11634
|
" var msg_type = msg['type'];\n",
|
|
|
11635
|
"\n",
|
|
|
11636
|
" // Call the \"handle_{type}\" callback, which takes\n",
|
|
|
11637
|
" // the figure and JSON message as its only arguments.\n",
|
|
|
11638
|
" try {\n",
|
|
|
11639
|
" var callback = fig[\"handle_\" + msg_type];\n",
|
|
|
11640
|
" } catch (e) {\n",
|
|
|
11641
|
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
|
|
|
11642
|
" return;\n",
|
|
|
11643
|
" }\n",
|
|
|
11644
|
"\n",
|
|
|
11645
|
" if (callback) {\n",
|
|
|
11646
|
" try {\n",
|
|
|
11647
|
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
|
|
|
11648
|
" callback(fig, msg);\n",
|
|
|
11649
|
" } catch (e) {\n",
|
|
|
11650
|
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
|
|
|
11651
|
" }\n",
|
|
|
11652
|
" }\n",
|
|
|
11653
|
" };\n",
|
|
|
11654
|
"}\n",
|
|
|
11655
|
"\n",
|
|
|
11656
|
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
|
|
|
11657
|
"mpl.findpos = function(e) {\n",
|
|
|
11658
|
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
|
|
|
11659
|
" var targ;\n",
|
|
|
11660
|
" if (!e)\n",
|
|
|
11661
|
" e = window.event;\n",
|
|
|
11662
|
" if (e.target)\n",
|
|
|
11663
|
" targ = e.target;\n",
|
|
|
11664
|
" else if (e.srcElement)\n",
|
|
|
11665
|
" targ = e.srcElement;\n",
|
|
|
11666
|
" if (targ.nodeType == 3) // defeat Safari bug\n",
|
|
|
11667
|
" targ = targ.parentNode;\n",
|
|
|
11668
|
"\n",
|
|
|
11669
|
" // jQuery normalizes the pageX and pageY\n",
|
|
|
11670
|
" // pageX,Y are the mouse positions relative to the document\n",
|
|
|
11671
|
" // offset() returns the position of the element relative to the document\n",
|
|
|
11672
|
" var x = e.pageX - $(targ).offset().left;\n",
|
|
|
11673
|
" var y = e.pageY - $(targ).offset().top;\n",
|
|
|
11674
|
"\n",
|
|
|
11675
|
" return {\"x\": x, \"y\": y};\n",
|
|
|
11676
|
"};\n",
|
|
|
11677
|
"\n",
|
|
|
11678
|
"/*\n",
|
|
|
11679
|
" * return a copy of an object with only non-object keys\n",
|
|
|
11680
|
" * we need this to avoid circular references\n",
|
|
|
11681
|
" * http://stackoverflow.com/a/24161582/3208463\n",
|
|
|
11682
|
" */\n",
|
|
|
11683
|
"function simpleKeys (original) {\n",
|
|
|
11684
|
" return Object.keys(original).reduce(function (obj, key) {\n",
|
|
|
11685
|
" if (typeof original[key] !== 'object')\n",
|
|
|
11686
|
" obj[key] = original[key]\n",
|
|
|
11687
|
" return obj;\n",
|
|
|
11688
|
" }, {});\n",
|
|
|
11689
|
"}\n",
|
|
|
11690
|
"\n",
|
|
|
11691
|
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
|
|
|
11692
|
" var canvas_pos = mpl.findpos(event)\n",
|
|
|
11693
|
"\n",
|
|
|
11694
|
" if (name === 'button_press')\n",
|
|
|
11695
|
" {\n",
|
|
|
11696
|
" this.canvas.focus();\n",
|
|
|
11697
|
" this.canvas_div.focus();\n",
|
|
|
11698
|
" }\n",
|
|
|
11699
|
"\n",
|
|
|
11700
|
" var x = canvas_pos.x * mpl.ratio;\n",
|
|
|
11701
|
" var y = canvas_pos.y * mpl.ratio;\n",
|
|
|
11702
|
"\n",
|
|
|
11703
|
" this.send_message(name, {x: x, y: y, button: event.button,\n",
|
|
|
11704
|
" step: event.step,\n",
|
|
|
11705
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
11706
|
"\n",
|
|
|
11707
|
" /* This prevents the web browser from automatically changing to\n",
|
|
|
11708
|
" * the text insertion cursor when the button is pressed. We want\n",
|
|
|
11709
|
" * to control all of the cursor setting manually through the\n",
|
|
|
11710
|
" * 'cursor' event from matplotlib */\n",
|
|
|
11711
|
" event.preventDefault();\n",
|
|
|
11712
|
" return false;\n",
|
|
|
11713
|
"}\n",
|
|
|
11714
|
"\n",
|
|
|
11715
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
11716
|
" // Handle any extra behaviour associated with a key event\n",
|
|
|
11717
|
"}\n",
|
|
|
11718
|
"\n",
|
|
|
11719
|
"mpl.figure.prototype.key_event = function(event, name) {\n",
|
|
|
11720
|
"\n",
|
|
|
11721
|
" // Prevent repeat events\n",
|
|
|
11722
|
" if (name == 'key_press')\n",
|
|
|
11723
|
" {\n",
|
|
|
11724
|
" if (event.which === this._key)\n",
|
|
|
11725
|
" return;\n",
|
|
|
11726
|
" else\n",
|
|
|
11727
|
" this._key = event.which;\n",
|
|
|
11728
|
" }\n",
|
|
|
11729
|
" if (name == 'key_release')\n",
|
|
|
11730
|
" this._key = null;\n",
|
|
|
11731
|
"\n",
|
|
|
11732
|
" var value = '';\n",
|
|
|
11733
|
" if (event.ctrlKey && event.which != 17)\n",
|
|
|
11734
|
" value += \"ctrl+\";\n",
|
|
|
11735
|
" if (event.altKey && event.which != 18)\n",
|
|
|
11736
|
" value += \"alt+\";\n",
|
|
|
11737
|
" if (event.shiftKey && event.which != 16)\n",
|
|
|
11738
|
" value += \"shift+\";\n",
|
|
|
11739
|
"\n",
|
|
|
11740
|
" value += 'k';\n",
|
|
|
11741
|
" value += event.which.toString();\n",
|
|
|
11742
|
"\n",
|
|
|
11743
|
" this._key_event_extra(event, name);\n",
|
|
|
11744
|
"\n",
|
|
|
11745
|
" this.send_message(name, {key: value,\n",
|
|
|
11746
|
" guiEvent: simpleKeys(event)});\n",
|
|
|
11747
|
" return false;\n",
|
|
|
11748
|
"}\n",
|
|
|
11749
|
"\n",
|
|
|
11750
|
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
|
|
|
11751
|
" if (name == 'download') {\n",
|
|
|
11752
|
" this.handle_save(this, null);\n",
|
|
|
11753
|
" } else {\n",
|
|
|
11754
|
" this.send_message(\"toolbar_button\", {name: name});\n",
|
|
|
11755
|
" }\n",
|
|
|
11756
|
"};\n",
|
|
|
11757
|
"\n",
|
|
|
11758
|
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
|
|
|
11759
|
" this.message.textContent = tooltip;\n",
|
|
|
11760
|
"};\n",
|
|
|
11761
|
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
|
|
|
11762
|
"\n",
|
|
|
11763
|
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
|
|
|
11764
|
"\n",
|
|
|
11765
|
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
|
|
|
11766
|
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
|
|
|
11767
|
" // object with the appropriate methods. Currently this is a non binary\n",
|
|
|
11768
|
" // socket, so there is still some room for performance tuning.\n",
|
|
|
11769
|
" var ws = {};\n",
|
|
|
11770
|
"\n",
|
|
|
11771
|
" ws.close = function() {\n",
|
|
|
11772
|
" comm.close()\n",
|
|
|
11773
|
" };\n",
|
|
|
11774
|
" ws.send = function(m) {\n",
|
|
|
11775
|
" //console.log('sending', m);\n",
|
|
|
11776
|
" comm.send(m);\n",
|
|
|
11777
|
" };\n",
|
|
|
11778
|
" // Register the callback with on_msg.\n",
|
|
|
11779
|
" comm.on_msg(function(msg) {\n",
|
|
|
11780
|
" //console.log('receiving', msg['content']['data'], msg);\n",
|
|
|
11781
|
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
|
|
|
11782
|
" ws.onmessage(msg['content']['data'])\n",
|
|
|
11783
|
" });\n",
|
|
|
11784
|
" return ws;\n",
|
|
|
11785
|
"}\n",
|
|
|
11786
|
"\n",
|
|
|
11787
|
"mpl.mpl_figure_comm = function(comm, msg) {\n",
|
|
|
11788
|
" // This is the function which gets called when the mpl process\n",
|
|
|
11789
|
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
|
|
|
11790
|
"\n",
|
|
|
11791
|
" var id = msg.content.data.id;\n",
|
|
|
11792
|
" // Get hold of the div created by the display call when the Comm\n",
|
|
|
11793
|
" // socket was opened in Python.\n",
|
|
|
11794
|
" var element = $(\"#\" + id);\n",
|
|
|
11795
|
" var ws_proxy = comm_websocket_adapter(comm)\n",
|
|
|
11796
|
"\n",
|
|
|
11797
|
" function ondownload(figure, format) {\n",
|
|
|
11798
|
" window.open(figure.imageObj.src);\n",
|
|
|
11799
|
" }\n",
|
|
|
11800
|
"\n",
|
|
|
11801
|
" var fig = new mpl.figure(id, ws_proxy,\n",
|
|
|
11802
|
" ondownload,\n",
|
|
|
11803
|
" element.get(0));\n",
|
|
|
11804
|
"\n",
|
|
|
11805
|
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
|
|
|
11806
|
" // web socket which is closed, not our websocket->open comm proxy.\n",
|
|
|
11807
|
" ws_proxy.onopen();\n",
|
|
|
11808
|
"\n",
|
|
|
11809
|
" fig.parent_element = element.get(0);\n",
|
|
|
11810
|
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
|
|
|
11811
|
" if (!fig.cell_info) {\n",
|
|
|
11812
|
" console.error(\"Failed to find cell for figure\", id, fig);\n",
|
|
|
11813
|
" return;\n",
|
|
|
11814
|
" }\n",
|
|
|
11815
|
"\n",
|
|
|
11816
|
" var output_index = fig.cell_info[2]\n",
|
|
|
11817
|
" var cell = fig.cell_info[0];\n",
|
|
|
11818
|
"\n",
|
|
|
11819
|
"};\n",
|
|
|
11820
|
"\n",
|
|
|
11821
|
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
|
|
|
11822
|
" var width = fig.canvas.width/mpl.ratio\n",
|
|
|
11823
|
" fig.root.unbind('remove')\n",
|
|
|
11824
|
"\n",
|
|
|
11825
|
" // Update the output cell to use the data from the current canvas.\n",
|
|
|
11826
|
" fig.push_to_output();\n",
|
|
|
11827
|
" var dataURL = fig.canvas.toDataURL();\n",
|
|
|
11828
|
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
|
|
|
11829
|
" // the notebook keyboard shortcuts fail.\n",
|
|
|
11830
|
" IPython.keyboard_manager.enable()\n",
|
|
|
11831
|
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
|
|
|
11832
|
" fig.close_ws(fig, msg);\n",
|
|
|
11833
|
"}\n",
|
|
|
11834
|
"\n",
|
|
|
11835
|
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
|
|
|
11836
|
" fig.send_message('closing', msg);\n",
|
|
|
11837
|
" // fig.ws.close()\n",
|
|
|
11838
|
"}\n",
|
|
|
11839
|
"\n",
|
|
|
11840
|
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
|
|
|
11841
|
" // Turn the data on the canvas into data in the output cell.\n",
|
|
|
11842
|
" var width = this.canvas.width/mpl.ratio\n",
|
|
|
11843
|
" var dataURL = this.canvas.toDataURL();\n",
|
|
|
11844
|
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
|
|
|
11845
|
"}\n",
|
|
|
11846
|
"\n",
|
|
|
11847
|
"mpl.figure.prototype.updated_canvas_event = function() {\n",
|
|
|
11848
|
" // Tell IPython that the notebook contents must change.\n",
|
|
|
11849
|
" IPython.notebook.set_dirty(true);\n",
|
|
|
11850
|
" this.send_message(\"ack\", {});\n",
|
|
|
11851
|
" var fig = this;\n",
|
|
|
11852
|
" // Wait a second, then push the new image to the DOM so\n",
|
|
|
11853
|
" // that it is saved nicely (might be nice to debounce this).\n",
|
|
|
11854
|
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
|
|
|
11855
|
"}\n",
|
|
|
11856
|
"\n",
|
|
|
11857
|
"mpl.figure.prototype._init_toolbar = function() {\n",
|
|
|
11858
|
" var fig = this;\n",
|
|
|
11859
|
"\n",
|
|
|
11860
|
" var nav_element = $('<div/>')\n",
|
|
|
11861
|
" nav_element.attr('style', 'width: 100%');\n",
|
|
|
11862
|
" this.root.append(nav_element);\n",
|
|
|
11863
|
"\n",
|
|
|
11864
|
" // Define a callback function for later on.\n",
|
|
|
11865
|
" function toolbar_event(event) {\n",
|
|
|
11866
|
" return fig.toolbar_button_onclick(event['data']);\n",
|
|
|
11867
|
" }\n",
|
|
|
11868
|
" function toolbar_mouse_event(event) {\n",
|
|
|
11869
|
" return fig.toolbar_button_onmouseover(event['data']);\n",
|
|
|
11870
|
" }\n",
|
|
|
11871
|
"\n",
|
|
|
11872
|
" for(var toolbar_ind in mpl.toolbar_items){\n",
|
|
|
11873
|
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
|
|
|
11874
|
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
|
|
|
11875
|
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
|
|
|
11876
|
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
|
|
|
11877
|
"\n",
|
|
|
11878
|
" if (!name) { continue; };\n",
|
|
|
11879
|
"\n",
|
|
|
11880
|
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
|
|
|
11881
|
" button.click(method_name, toolbar_event);\n",
|
|
|
11882
|
" button.mouseover(tooltip, toolbar_mouse_event);\n",
|
|
|
11883
|
" nav_element.append(button);\n",
|
|
|
11884
|
" }\n",
|
|
|
11885
|
"\n",
|
|
|
11886
|
" // Add the status bar.\n",
|
|
|
11887
|
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
|
|
|
11888
|
" nav_element.append(status_bar);\n",
|
|
|
11889
|
" this.message = status_bar[0];\n",
|
|
|
11890
|
"\n",
|
|
|
11891
|
" // Add the close button to the window.\n",
|
|
|
11892
|
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
|
|
|
11893
|
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
|
|
|
11894
|
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
|
|
|
11895
|
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
|
|
|
11896
|
" buttongrp.append(button);\n",
|
|
|
11897
|
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
|
|
|
11898
|
" titlebar.prepend(buttongrp);\n",
|
|
|
11899
|
"}\n",
|
|
|
11900
|
"\n",
|
|
|
11901
|
"mpl.figure.prototype._root_extra_style = function(el){\n",
|
|
|
11902
|
" var fig = this\n",
|
|
|
11903
|
" el.on(\"remove\", function(){\n",
|
|
|
11904
|
"\tfig.close_ws(fig, {});\n",
|
|
|
11905
|
" });\n",
|
|
|
11906
|
"}\n",
|
|
|
11907
|
"\n",
|
|
|
11908
|
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
|
|
|
11909
|
" // this is important to make the div 'focusable\n",
|
|
|
11910
|
" el.attr('tabindex', 0)\n",
|
|
|
11911
|
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
|
|
|
11912
|
" // off when our div gets focus\n",
|
|
|
11913
|
"\n",
|
|
|
11914
|
" // location in version 3\n",
|
|
|
11915
|
" if (IPython.notebook.keyboard_manager) {\n",
|
|
|
11916
|
" IPython.notebook.keyboard_manager.register_events(el);\n",
|
|
|
11917
|
" }\n",
|
|
|
11918
|
" else {\n",
|
|
|
11919
|
" // location in version 2\n",
|
|
|
11920
|
" IPython.keyboard_manager.register_events(el);\n",
|
|
|
11921
|
" }\n",
|
|
|
11922
|
"\n",
|
|
|
11923
|
"}\n",
|
|
|
11924
|
"\n",
|
|
|
11925
|
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
|
|
|
11926
|
" var manager = IPython.notebook.keyboard_manager;\n",
|
|
|
11927
|
" if (!manager)\n",
|
|
|
11928
|
" manager = IPython.keyboard_manager;\n",
|
|
|
11929
|
"\n",
|
|
|
11930
|
" // Check for shift+enter\n",
|
|
|
11931
|
" if (event.shiftKey && event.which == 13) {\n",
|
|
|
11932
|
" this.canvas_div.blur();\n",
|
|
|
11933
|
" event.shiftKey = false;\n",
|
|
|
11934
|
" // Send a \"J\" for go to next cell\n",
|
|
|
11935
|
" event.which = 74;\n",
|
|
|
11936
|
" event.keyCode = 74;\n",
|
|
|
11937
|
" manager.command_mode();\n",
|
|
|
11938
|
" manager.handle_keydown(event);\n",
|
|
|
11939
|
" }\n",
|
|
|
11940
|
"}\n",
|
|
|
11941
|
"\n",
|
|
|
11942
|
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
|
|
|
11943
|
" fig.ondownload(fig, null);\n",
|
|
|
11944
|
"}\n",
|
|
|
11945
|
"\n",
|
|
|
11946
|
"\n",
|
|
|
11947
|
"mpl.find_output_cell = function(html_output) {\n",
|
|
|
11948
|
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
|
|
|
11949
|
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
|
|
|
11950
|
" // IPython event is triggered only after the cells have been serialised, which for\n",
|
|
|
11951
|
" // our purposes (turning an active figure into a static one), is too late.\n",
|
|
|
11952
|
" var cells = IPython.notebook.get_cells();\n",
|
|
|
11953
|
" var ncells = cells.length;\n",
|
|
|
11954
|
" for (var i=0; i<ncells; i++) {\n",
|
|
|
11955
|
" var cell = cells[i];\n",
|
|
|
11956
|
" if (cell.cell_type === 'code'){\n",
|
|
|
11957
|
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
|
|
|
11958
|
" var data = cell.output_area.outputs[j];\n",
|
|
|
11959
|
" if (data.data) {\n",
|
|
|
11960
|
" // IPython >= 3 moved mimebundle to data attribute of output\n",
|
|
|
11961
|
" data = data.data;\n",
|
|
|
11962
|
" }\n",
|
|
|
11963
|
" if (data['text/html'] == html_output) {\n",
|
|
|
11964
|
" return [cell, data, j];\n",
|
|
|
11965
|
" }\n",
|
|
|
11966
|
" }\n",
|
|
|
11967
|
" }\n",
|
|
|
11968
|
" }\n",
|
|
|
11969
|
"}\n",
|
|
|
11970
|
"\n",
|
|
|
11971
|
"// Register the function which deals with the matplotlib target/channel.\n",
|
|
|
11972
|
"// The kernel may be null if the page has been refreshed.\n",
|
|
|
11973
|
"if (IPython.notebook.kernel != null) {\n",
|
|
|
11974
|
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
|
|
|
11975
|
"}\n"
|
|
|
11976
|
],
|
|
|
11977
|
"text/plain": [
|
|
|
11978
|
"<IPython.core.display.Javascript object>"
|
|
|
11979
|
]
|
|
|
11980
|
},
|
|
|
11981
|
"metadata": {},
|
|
|
11982
|
"output_type": "display_data"
|
|
|
11983
|
},
|
|
|
11984
|
{
|
|
|
11985
|
"data": {
|
|
|
11986
|
"text/html": [
|
|
|
11987
|
"<img src=\"data:image/png;base64,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G15qCMA3L1lb95UAAACgGPbnlE4AhkwZYACQrl88KwADAABAXezPKZ0ADJkywAAgXc0BeP4jAjAAAAC0i/05pROAIVMGGACk67H1jQF4ngAMAAAAbWN/TukEYMiUAQYA6fr5+m0CMAAAANTE/pzSCcCQKQMMANI1LAD/aE3dVwIAAIBi2J9TOgEYMmWAAUC6Hl3XGIC/KQADAABA29ifUzoBGDJlgAFAun4mAAMAAEBt7M8pnQAMmTLAACBdP31ma0MAvunhNXVfCQAAAIphf07pBGDIlAEGAOla3hSAb/zh6rqvBAAAAMWwP6d0AjBkygADgHT9ZK0ADAAAAHWxP6d0AjBkygADgHT9ZO2LDQH4GwIwAAAAtI39OaUTgCFTBhgApKs5AH/9IQEYAAAA2sX+nNIJwJApAwwA0rVsjQAMAAAAdbE/p3QCMGTKAAOAdP24KQB/TQAGAACAtrE/p3QCMOxDd3d3fPjDH47f/d3fjQkTJsSb3/zmmDp1atx9993Dnu3p6YkPfvCDccghh8TEiRPjIx/5SGzevHnYc/39/fH5z38+3v72t8e4cePiXe96V9x6662/0h0NMABI09LVjQH4hgefrvtKAAAAUAz7c0onAMM+fO9734sPfvCDcemll8b1118fV199dUydOjWqqorrrrtu8Ln169fHW97yljj66KPjy1/+cnzuc5+LiRMnxrvf/e7o6+tr+H9ecsklUVVV/MM//ENcf/31cdZZZ0VVVXHbbbe9oTsaYACQriVPvyAAAwAAQE3szymdAAyv0549e+Ld7353vOMd7xh87YILLogJEybEM888M/haV1fXsFD87LPPxpgxY2LGjBmDrw0MDMTUqVPjt37rt2LPnj0HfB8DDADS9YgADAAAALWxP6d0AjAcgD/5kz+JI488cvDXRxxxRJx99tnDnjvuuOPiD//wDwd/fe2110ZVVfH44483PHfrrbdGVVXx0EMPHfBdDDAASNePVgnAAAAAUBf7c0onAEMLO3bsiC1btsSqVavii1/8Yhx00EFxzjnnRMT//6neqqri85///LD3feQjH4k3velNg7/++7//+zjkkENiYGCg4blVq1ZFVVUxZ86cA76bAQYA6WoOwNcvFoABAACgXezPKZ0ADC2cf/75UVVVVFUVo0aNig9/+MOxdevWiIhYtmxZVFUV8+bNG/a+iy++OKqqip07d0ZExFlnnRVHHXXUsOdeeeWVqKoqLrnkkpb32LRpU3R3dzecBQsWGGAAkKiHV21pCMDXLV5V95UAAACgGAIwpROAoYUnnngiurq64pvf/GacddZZ8ed//uexcePGiIh48MEHo6qquOOOO4a979Of/nRUVRXbtm2LiIhp06bFO9/5zmHP9ff3R1VVceGFF7a8x8yZMwdDdPMxwAAgPQ8/JQADAABAXQRgSicAwwH4oz/6o3jPe94TAwMDfgIYANivHzYF4K/+lwAMAAAA7SIAUzoBGA7AddddF1VVxZNPPnnA3wF88MEH+w5gACjEQysbA/BcARgAAADaxv6c0gnAcACuvvrqqKoqli5dGhERkyZNirPPPnvYc8cdd1xMmzZt8NfXXHNNVFUVjz/+eMNzt9xyS1RVFQ8++OAB38UAA4B0PbhyswAMAAAANbE/p3QCMOzDpk2bhr22a9euOPnkk2PChAmxffv2iIj42Mc+FhMmTIh169YNPrdo0aKoqirmzp07+Nr69etjzJgxMWPGjMHXBgYGYurUqfGbv/mbsWfPngO+owEGAOlavKIxAH/lAQEYAAAA2sX+nNIJwLAPf/ZnfxbTpk2LSy+9NG644Ya47LLL4vjjj4+qquKqq64afG7dunXx5je/OY4++uiYM2dOXH755TFx4sR417veNfj9v3vt/V7gf/zHf4wbbrghzjrrrKiqKm655ZY3dEcDDADS1RyAr33gqbqvBAAAAMWwP6d0AjDsw2233RZnnnlmHHnkkTF69OiYOHFinHnmmfGd73xn2LPd3d3xgQ98IA4++OD4jd/4jTj33HNj48aNw57r7++Pyy+/PN72trfF2LFjY8qUKXHzzTe/4TsaYACQrv8SgAEAAKA29ueUTgCGTBlgAJCuB57c1BCAr/mBAAwAAADtYn9O6QRgyJQBBgDp+oEADAAAALWxP6d0AjBkygADgHT94AkBGAAAAOpif07pBGDIlAEGAOn6zyc2NgTg//ufK+u+EgAAABTD/pzSCcCQKQMMANK1qKcxAM9ZJAADAABAu9ifUzoBGDJlgAFAugRgAAAAqI/9OaUTgCFTBhgApKvr8cYA/GUBGAAAANrG/pzSCcCQKQMMANJ1f1MAvrpLAAYAAIB2sT+ndAIwZMoAA4B03df9vAAMAAAANbE/p3QCMGTKAAOAdH2/KQB/qWtF3VcCAACAYtifUzoBGDJlgAFAuu79hQAMAAAAdbE/p3QCMGTKAAOAdN37i+caAvAX7xeAAQAAoF3szymdAAyZMsAAIF3NAfgqARgAAADaxv6c0gnAkCkDDADSdc9jAjAAAADUxf6c0gnAkCkDDADS9b3mAHzfk3VfCQAAAIphf07pBGDIlAEGAOn67s8bA/CVAjAAAAC0jf05pROAIVMGGACka+HPNwjAAAAAUBP7c0onAEOmDDAASNfdjzYG4NnfF4ABAACgXezPKZ0ADJkywAAgXd9pCsBf+P4TdV8JAAAAimF/TukEYMiUAQYA6RKAAQAAoD7255ROAIZMGWAAkK4FP3u2IQB//l4BGAAAANrF/pzSCcCQKQMMANLVHICvEIABAACgbezPKZ0ADJkywAAgXXf9VAAGAACAutifUzoBGDJlgAFAuv7jp+sbAvD/uUcABgAAgHaxP6d0AjBkygADgHTdubwxAF9+T0/dVwIAAIBi2J9TOgEYMmWAAUC6vv0TARgAAADqYn9O6QRgyJQBBgDpGhaAvycAAwAAQLvYn1M6ARgyZYABQLq+JQADAABAbezPKZ0ADJkywAAgXf++bF1DAP6cAAwAAABtY39O6QRgyJQBBgDpuqMpAH/2u4/XfSUAAAAohv05pROAIVMGGACk644fC8AAAABQF/tzSicAQ6YMMABI1+0/fqYhAF+2UAAGAACAdrE/p3QCMGTKAAOAdDUH4FkCMAAAALSN/TmlE4AhUwYYAKTrtqUCMAAAANTF/pzSCcCQKQMMANJ1a1MA/t93C8AAAADQLvbnlE4AhkwZYACQrluWNAbgS+82rwEAAKBd7M8pnQAMmTLAACBdNy9ZKwADAABATezPKZ0ADJkywAAgXfMfaQzAM79jXgMAAEC72J9TOgEYMmWAAUC65gnAAAAAUBv7c0onAEOmDDAASJcADAAAAPWxP6d0AjBkygADgHTN+9GahgD8mQW/qPtKAAAAUAz7c0onAEOmDDAASNc3mwLwpwVgAAAAaBv7c0onAEOmDDAASNdNDwvAAAAAUBf7c0onAEOmDDAASNeNP1zdEID/1/9j706D5S7rvP/3g0ELqJoybuM9qJ0FAkiziKKiBhUUdKK4ZhxZxlEBwYi4MScsIUBIICyBbGSHQ0gCEZHFw76HTQgCAgHZJQmyS9gXk3zvB8GW7nPwD9b97991nev1qkoVaRtyPftY33elzlkCMAAAAHSK+zmlE4AhUwYMANJ1UlsAPuis26p+EgAAABTD/ZzSCcCQKQMGAOmae7UADAAAAFVxP6d0AjBkyoABQLraA/CBvxGAAQAAoFPczymdAAyZMmAAkK45AjAAAABUxv2c0gnAkCkDBgDpmr34/pYAfIAADAAAAB3jfk7pBGDIlAEDgHS1B+BRZwrAAAAA0Cnu55ROAIZMGTAASNesqwRgAAAAqIr7OaUTgCFTBgwA0jXzqvvaAvAfqn4SAAAAFMP9nNIJwJApAwYA6ZpxZWsA7vq1AAwAAACd4n5O6QRgyJQBA4B0CcAAAABQHfdzSicAQ6YMGACka3pbAP7fMwRgAAAA6BT3c0onAEOmDBgApOvEK1oD8P5n3Fr1kwAAAKAY7ueUTgCGTBkwAEjXtCvuFYABAACgIu7nlE4AhkwZMABI19TLWwPwL38lAAMAAECnuJ9TOgEYMmXAACBd7QH4FwIwAAAAdIz7OaUTgCFTBgwA0jXlsnsEYAAAAKiI+zmlE4AhUwYMANLVHoB/vkgABgAAgE5xP6d0AjBkyoABQLomX9oagH+26JaqnwQAAADFcD+ndAIwZMqAAUC6JgnAAAAAUBn3c0onAEOmDBgApOuES9oC8OkCMAAAAHSK+zmlE4AhUwYMANJ1/CV3twTgnwrAAAAA0DHu55ROAIZMGTAASNfEiwVgAAAAqIr7OaUTgCFTBgwA0nVcWwDe77Sbq34SAAAAFMP9nNIJwJApAwYA6RKAAQAAoDru55ROAIZMGTAASNdxF/2xJQD/RAAGAACAjnE/p3QCMGTKgAFAuo5tC8D7LhSAAQAAoFPczymdAAyZMmAAkK5jLhSAAQAAoCru55ROAIZMGTAASNfRF97VEoB/LAADAABAx7ifUzoBGDJlwAAgXRMuaA3AIxf8vuonAQAAQDHczymdAAyZMmAAkK6jBGAAAACojPs5pROAIVMGDADS1R6AfyQAAwAAQMe4n1M6ARgyZcAAIF1Hnt8WgOcLwAAAANAp7ueUTgCGTBkwAEjX+PPvFIABAACgIu7nlE4AhkwZMABI1/jzWgPwPvNvqvpJAAAAUAz3c0onAEOmDBgApGtcWwDe+1QBGAAAADrF/ZzSCcCQKQMGAOk6omepAAwAAAAVcT+ndAIwZMqAAUC6xv62NQD/cJ4ADAAAAJ3ifk7pBGDIlAEDgHS1B+C95i2p+kkAAABQDPdzSicAQ6YMGACk63ABGAAAACrjfk7pBGDIlAEDgHQddm5rAN7zFAEYAAAAOsX9nNIJwJApAwYA6Tr03DtaAvAeAjAAAAB0jPs5pROAIVMGDADSNeYcARgAAACq4n5O6QRgyJQBA4B0tQfgH3QLwAAAANAp7ueUTgCGTBkwAEjXIWffLgADAABARdzPKZ0ADJkyYACQrt4B+MaqnwQAAADFcD+ndAIwZMqAAUC6RrcF4O+fLAADAABAp7ifUzoBGDJlwAAgXQefJQADAABAVdzPKZ0ADJkyYACQroPOuq0lAH9PAAYAAICOcT+ndAIwZMqAAUC6DvxNawD+n5NuqPpJAAAAUAz3c0onAEOmDBgApOsAARgAAAAq435O6QRgyJQBA4B0jTqzNQB/VwAGAACAjnE/p3QCMGTKgAFAutoD8H/PFYABAACgU9zPKZ0ADJkyYACQrlFn/kEABgAAgIq4n1M6ARgyZcAAIF1dv24NwLsLwAAAANAx7ueUTgCGTBkwAEjX/57RGoB3m/O7qp8EAAAAxXA/p3QCMGTKgAFAuvY/41YBGAAAACrifk7pBGDIlAEDgHT98lcCMAAAAFTF/ZzSCcCQKQMGAOn6RVsA3nW2AAwAAACd4n5O6QRgyJQBA4B0CcAAAABQHfdzSicAQ6YMGACk6+eLWgPwLrOvr/pJAAAAUAz3c0onAEOmDBgApOtni24RgAEAAKAi7ueUTgCGTBkwAEjXz05vDcDfmSUAAwAAQKe4n1M6ARgyZcAAIF0/bQvA/zVTAAYAAIBOcT+ndAIwZMqAAUC69jvtZgEYAAAAKuJ+TukEYMiUAQOAdP2kLQB/e+Z1VT8JAAAAiuF+TukEYMiUAQOAdLUH4P+cIQADAABAp7ifUzoBGDJlwAAgXfsuFIABAACgKu7nlE4AhkwZMABI14/bAvAIARgAAAA6xv2c0gnAkCkDBgDpGrng960BeLoADAAAAJ3ifk7pBGDIlAEDgHT9SAAGAACAyrifUzoBGDJlwAAgXT+a3xqAvzX92qqfBAAAAMVwP6d0AjBkyoABQLr2mX9TSwD+5okCMAAAAHSK+zmlE4AhUwYMANIlAAMAAEB13M8pnQAMmTJgAJCuvU9tDcDfEIABAACgY9zPKZ0ADJkyYACQrh/Oaw3AX592TdVPAgAAgGK4n1M6ARgyZcAAIF17zVsiAAMAAEBF3M8pnQAMmTJgAJCuPU9pDcBfE4ABAACgY9zPKZ0ADJkyYACQrj3aAvBXpwrAAAAA0Cnu55ROAIZMGTAASNcPugVgAAAAqIr7OaUTgCFTBgwA0tUegHcWgAEAAKBj3M8pnQAMmTJgAJCuH3TfKAADAABARdzPKZ0ADJkyYACQru+f3BaAp1xd9ZMAAACgGO7nlE4AhkwZMABI1/faAvBXBGAAAADoGPdzSicAQ6YMGACk639OukEABgAAgIq4n1M6ARgyZcAAIF3fbQvAX54sAAMAAECnuJ9TOgEYMmXAACBd/z23NQAPn7y46icBAABAMdzPKZ0ADJkyYACQLgEYAAAAquN+TukEYMiUAQOAdO3eFoD/Y5IADAAAAJ3ifk7pBGDIlAEDgHTtNud3LQH4SycIwAAAANAp7ueUTgCGTBkwAEiXAAwAAADVcT+ndAIwZMqAAUC6dp3dGoC/KAADAABAx7ifUzoBGDJlwAAgXbvMvr4lAO90/FVVPwkAAACK4X5O6QRgyJQBA4B0fWeWAAwAAABVcT+ndAIwZMqAAUC6BGAAAACojvs5pROAIVMGDADS9V8zWwPwjhMFYAAAAOgU93NKJwBDpgwYAKTr2zOvE4ABAACgIu7nlE4AhkwZMABI13/OaA3AX5h4ZdVPAgAAgGK4n1M6ARgyZcAAIF0j2gLw548TgAEAAKBT3M8pnQAMfbjxxhtj5MiR8aEPfSjWW2+9+MAHPhAjRoyIu+++u9d377zzzthpp51i/fXXjwEDBsRuu+0Wjz/+eK/vrV69OiZMmBADBw6Mt7/97bH55pvHwoUL/+k3GjAASNeI6QIwAAAAVMX9nNIJwNCHb37zm/G+970v9t1335g9e3aMHTs2/u3f/i3WX3/9uP3225vfW758ebz73e+OIUOGxKRJk2LcuHExYMCA2HLLLeOVV15p+W+OGjUqarVa7LnnnjFr1qwYPnx41Gq1OO200/6pNxowAEjXt6Zf2xKAdxCAAQAAoGPczymdAAx9uPbaa3sF3HvuuSfe/va3x6677tr8bJ999ol11103HnrooeZnl1xySdRqtZg5c2bzsxUrVsQ666wTI0eObH62Zs2aGDZsWLz//e+PVatWveU3GjAASJcADAAAANVxP6d0AjC8BVtvvXVsvfXWzd+/973vjREjRvT63tChQ2OHHXZo/n7atGlRq9Vi6dKlLd9buHBh1Gq1uPrqq9/yWwwYAKTrmye2BuDtj72i6icBAABAMdzPKZ0ADG/SmjVrYoMNNogdd9wxItb+rd5arRYTJkzo9d3ddtst3vnOdzZ/v8cee8T6668fa9asafnefffdF7VaLSZPnvyW32PAACBd32gLwJ8TgAEAAKBj3M8pnQAMb9Kpp54atVot5s6dGxERS5YsiVqtFvPmzev13f333z9qtVq8/PLLERExfPjwGDx4cK/vvfDCC1Gr1WLUqFH/8M9+7LHH4o477mj5dfbZZxswAEjU16ddIwADAABARQRgSicAw5tw1113xb/+67/Gtttu2/x5vYsXL45arRaLFi3q9f3Ro0dHrVaLp59+OiIitt9++9h00017fW/16tVRq9Viv/32+4d//pgxY6JWq/X5y4ABQHq+1h6Aj7mi6icBAABAMQRgSicAw/+HRx55JAYPHhwf+MAH4uGHH25+7m8AAwBv5KtTWwPwZwVgAAAA6BgBmNIJwPAPrFy5Mrbaaqt45zvfGUuXLm35397qzwBeb731/AxgACjEzgIwAAAAVMb9nNIJwPAGXnrppRg2bFist956cd111/X5nfe85z0xYsSIXp8PHTo0tt9+++bvp06dGrVarVdEXrBgQdRqtVi8ePFbfp8BA4B0tQfgzxx9edVPAgAAgGK4n1M6ARj6sGrVqth5553jX/7lX+K88857w+/tvffese6668ayZcuan1166aVRq9Vi+vTpzc+WL18e66yzTowcObL52Zo1a2LYsGGxwQYbNH+u8FthwAAgXTtPubolAG8nAAMAAEDHuJ9TOgEY+rDffvtFrVaLr3zlK3Hqqaf2+vU3y5Yti3e9610xZMiQmDx5cowfPz4GDBgQm2++efPn//7N334u8F577RWzZ8+O4cOHR61WiwULFvxTbzRgAJCurwjAAAAAUBn3c0onAEMfPvOZz0StVnvDX693xx13xI477hjrrbdevOMd74hdd901Hn300V7/zdWrV8f48eOjXq/H2972tthss81i/vz5//QbDRgApOvLk1sD8LAJAjAAAAB0ivs5pROAIVMGDADSNXzy4pYA/OkJl1X9JAAAACiG+zmlE4AhUwYMANL1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fni888477Y9va2tr34yH3ux3v/tdpJTiwgsv7DB+wQUXREVFRfstCvQR7NmZZ54Z/fv3j5deeqnD+DnnnBN9+vTRT7AXPim02ttzpI0bN0a/fv1i3rx57WM7duyICRMmxBFHHBHbtm3br68BeoJP6qUXXnghDj744MjlcvHmm2/u9jk++OCDGDp0aJx55pkdxmfNmhVVVVXxxhtvdPa0ATJFAAyUtebm5vZ3sOfz+Rg/fnxUVFSU3EcO2Omqq66KlFJMmTIlli9fXlIf2bBhQxx88MExatSouO222+KGG26IIUOGxJgxY9z/Fz7Bx+8BHBGxZs2aGDBgQBx77LHR0tIS1157bQwcODAmTZrUTbOEnmXOnDmRUopzzz03lixZEs3NzZFSiq9//evtx+gj2LNVq1ZF375949BDD43vfve7sWTJkmhsbIyUUlx22WXtx+knKHX77bfHokWL4sorr4yUUkybNi0WLVoUixYtirfffjsi9u0c6aP7An/pS1+KYrEYTU1N7Z9sAVm2p1565513Yvjw4dGnT5+48cYbS/YkPv4pZUuWLImUUsyYMSOKxWJcdNFFkVKKxYsXd9MrBCgfAmCgrG3evDkWLFgQw4YNiwEDBsTxxx8fjzzySHdPC3qsk0466RM/svZfrV27NiZNmhRVVVVx0EEHxcyZM+Nvf/tbN80cysOuAuCIiCeffDLGjx8fAwcOjEMOOSTmzZvX4cor6M3+/ve/x3e+850YMWJE9OvXL0aPHh233HJLyXH6CPbsmWeeicbGxhg2bFj069cvqqurY/HixSX3VtRP0NGIESN2e460fv369uP29hxp+/btccMNN8SIESOif//+kcvl4ic/+UkXviLoHnvqpfXr13/insTFF19c8pyFQiFqamqif//+MWrUqLjllltK7rENQCkBMAAAAAAAAEBGCIABAAAAAAAAMkIADAAAAAAAAJARAmAAAAAAAACAjBAAAwAAAAAAAGSEABgAAAAAAAAgIwTAAAAAAAAAABkhAAYAAAAAAADICAEwAAAAAAAAQEYIgAEAAAAAAAAyQgAMAAAAAAAAkBECYAAAAAAAAICMEAADAAAAAAAAZIQAGAAAAAAAACAjBMAAAAAAAAAAGSEABgAAAAAAAMgIATAAAAAAAABARgiAAQAAAAAAADJCAAwAAAAAAACQEQJgAAAAAAAAgIwQAAMAAAAAAABkhAAYAAAAAAAAICMEwAAAAAAAAAAZIQAGAAAAAAAAyAgBMAAAAAAAAEBGCIABAAAAAAAAMkIADAAAAAAAAJARAmAAAAAAAACAjBAAAwAAAAAAAGSEABgAAAAAAAAgIwTAAAAAAAAAABkhAAYAAAAAAADICAEwAAAAAAAAQEYIgAEAAAAAAAAyQgAMAAAAAAAAkBECYAAAAAAAAICMEAADAAAAAAAAZIQAGAAAAAAAACAjBMAAAAAAAAAAGSEABgAAAAAAAMgIATAAAAAAAABARgiAAQAAAAAAADJCAAwAAAAAAACQEQJgAAAAAAAAgIwQAAMAAAAAAABkhAAYAAAAAAAAICMEwAAAAAAAAAAZIQAGAAAAAAAAyAgBMAAAAAAAAEBGCIABAAAAAAAAMkIADAAAAAAAAJARAmAAAAAAAACAjBAAAwAAAAAAAGSEABgAAAAAAAAgIwTAAAAAAAAAABkhAAYAAAAAAADICAEwAAAAAAAAQEYIgAEAAAAAAAAyQgAMAAAAAAAAkBECYAAAAAAAAICMEAADAAAAAAAAZIQAGAAAAAAAACAjBMAAAAAAAAAAGSEABgAAAAAAAMgIATAAAAAAAABARgiAAQAAAAAAADJCAAwAAAAAAACQEQJgAAAAAAAAgIwQAAMAAAAAAABkhAAYAAAAAAAAICMEwAAAAAAAAAAZIQAGAAAAAAAAyAgBMAAAAAAAAEBGCIABAAAAAAAAMkIADAAAAAAAAJARAmAAAAAAAACAjBAAAwAAAAAAAGSEABgAAAAAAAAgIwTAAAAAAAAAABkhAAYAAAAAAADIiP8P/zJQezLckNMAAAAASUVORK5CYII=\" width=\"1600\">"
|
|
|
11988
|
],
|
|
|
11989
|
"text/plain": [
|
|
|
11990
|
"<IPython.core.display.HTML object>"
|
|
|
11991
|
]
|
|
|
11992
|
},
|
|
|
11993
|
"metadata": {},
|
|
|
11994
|
"output_type": "display_data"
|
|
|
11995
|
}
|
|
|
11996
|
],
|
|
|
11997
|
"source": [
|
|
|
11998
|
"for i in range(18,23):\n",
|
|
|
11999
|
" plt.figure()\n",
|
|
|
12000
|
" for ch in [\"B1\",\"B2\",\"B3\"]:\n",
|
|
|
12001
|
" spec = TF.fft(res.SWF(2,i)[ch], TF.LFR_Fs2)\n",
|
|
|
12002
|
" plt.plot(spec[\"f\"],spec[\"mod\"])\n",
|
|
|
12003
|
" plt.legend([\"B1\",\"B2\",\"B3\"])\n",
|
|
|
12004
|
" plt.show()"
|
|
|
12005
|
]
|
|
|
12006
|
},
|
|
|
12007
|
{
|
|
|
12008
|
"cell_type": "markdown",
|
|
|
12009
|
"metadata": {},
|
|
|
12010
|
"source": [
|
|
|
12011
|
"# CSV snapshots export"
|
|
|
12012
|
]
|
|
|
12013
|
},
|
|
|
12014
|
{
|
|
|
12015
|
"cell_type": "code",
|
|
|
12016
|
"execution_count": 32,
|
|
|
12017
|
"metadata": {
|
|
|
12018
|
"ExecuteTime": {
|
|
|
12019
|
"end_time": "2018-06-28T15:50:23.481692Z",
|
|
|
12020
|
"start_time": "2018-06-28T15:50:22.344297Z"
|
|
|
12021
|
}
|
|
|
12022
|
},
|
|
|
12023
|
"outputs": [],
|
|
|
12024
|
"source": [
|
|
|
12025
|
"for F in range(3):\n",
|
|
|
12026
|
" with open(f\"/home/jeandet/Documents/SOLO_LFR_Notebooks/TEST_NEW_CAL_SIG/SnapShots_F{F}.txt\",\"w\") as output:\n",
|
|
|
12027
|
" output.write(\"B1\\tB2\\tB3\\n\")\n",
|
|
|
12028
|
" for idx in range(res.SWFCount()):\n",
|
|
|
12029
|
" snapshot = res.SWF(F,idx)[[\"B1\",\"B2\",\"B3\"]]\n",
|
|
|
12030
|
" for sample in snapshot.values:\n",
|
|
|
12031
|
" output.write(str(sample[0])+\"\\t\"+str(sample[1])+\"\\t\"+str(sample[2])+\"\\n\")"
|
|
|
12032
|
]
|
|
|
12033
|
}
|
|
|
12034
|
],
|
|
|
12035
|
"metadata": {
|
|
|
12036
|
"kernelspec": {
|
|
|
12037
|
"display_name": "Python 3",
|
|
|
12038
|
"language": "python",
|
|
|
12039
|
"name": "python3"
|
|
|
12040
|
},
|
|
|
12041
|
"language_info": {
|
|
|
12042
|
"codemirror_mode": {
|
|
|
12043
|
"name": "ipython",
|
|
|
12044
|
"version": 3
|
|
|
12045
|
},
|
|
|
12046
|
"file_extension": ".py",
|
|
|
12047
|
"mimetype": "text/x-python",
|
|
|
12048
|
"name": "python",
|
|
|
12049
|
"nbconvert_exporter": "python",
|
|
|
12050
|
"pygments_lexer": "ipython3",
|
|
|
12051
|
"version": "3.6.5"
|
|
|
12052
|
},
|
|
|
12053
|
"toc": {
|
|
|
12054
|
"colors": {
|
|
|
12055
|
"hover_highlight": "#DAA520",
|
|
|
12056
|
"navigate_num": "#000000",
|
|
|
12057
|
"navigate_text": "#333333",
|
|
|
12058
|
"running_highlight": "#FF0000",
|
|
|
12059
|
"selected_highlight": "#FFD700",
|
|
|
12060
|
"sidebar_border": "#EEEEEE",
|
|
|
12061
|
"wrapper_background": "#FFFFFF"
|
|
|
12062
|
},
|
|
|
12063
|
"moveMenuLeft": true,
|
|
|
12064
|
"nav_menu": {
|
|
|
12065
|
"height": "86px",
|
|
|
12066
|
"width": "252px"
|
|
|
12067
|
},
|
|
|
12068
|
"navigate_menu": true,
|
|
|
12069
|
"number_sections": true,
|
|
|
12070
|
"sideBar": true,
|
|
|
12071
|
"threshold": 4,
|
|
|
12072
|
"toc_cell": false,
|
|
|
12073
|
"toc_section_display": "block",
|
|
|
12074
|
"toc_window_display": false,
|
|
|
12075
|
"widenNotebook": false
|
|
|
12076
|
},
|
|
|
12077
|
"varInspector": {
|
|
|
12078
|
"cols": {
|
|
|
12079
|
"lenName": 16,
|
|
|
12080
|
"lenType": 16,
|
|
|
12081
|
"lenVar": 40
|
|
|
12082
|
},
|
|
|
12083
|
"kernels_config": {
|
|
|
12084
|
"python": {
|
|
|
12085
|
"delete_cmd_postfix": "",
|
|
|
12086
|
"delete_cmd_prefix": "del ",
|
|
|
12087
|
"library": "var_list.py",
|
|
|
12088
|
"varRefreshCmd": "print(var_dic_list())"
|
|
|
12089
|
},
|
|
|
12090
|
"r": {
|
|
|
12091
|
"delete_cmd_postfix": ") ",
|
|
|
12092
|
"delete_cmd_prefix": "rm(",
|
|
|
12093
|
"library": "var_list.r",
|
|
|
12094
|
"varRefreshCmd": "cat(var_dic_list()) "
|
|
|
12095
|
}
|
|
|
12096
|
},
|
|
|
12097
|
"types_to_exclude": [
|
|
|
12098
|
"module",
|
|
|
12099
|
"function",
|
|
|
12100
|
"builtin_function_or_method",
|
|
|
12101
|
"instance",
|
|
|
12102
|
"_Feature"
|
|
|
12103
|
],
|
|
|
12104
|
"window_display": false
|
|
|
12105
|
}
|
|
|
12106
|
},
|
|
|
12107
|
"nbformat": 4,
|
|
|
12108
|
"nbformat_minor": 2
|
|
|
12109
|
}
|