@supraio/client-daemon-js 0.0.0-mznacl.266 → 0.0.0-mznacl.273

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -186756,466 +186756,6 @@ $packages["github.com/nuberu/webgl"] = (function() {
186756
186756
  $pkg.$init = $init;
186757
186757
  return $pkg;
186758
186758
  })();
186759
- $packages["golang.org/x/exp/shiny/driver/internal/dom"] = (function() {
186760
- var $pkg = {}, $init, focus, key, mouse, size, geom, math, strings, js, DomEvents, sliceType, funcType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, GetBrowserZoomRatio, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEvents, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
186761
- focus = $packages["golang.org/x/mobile/event/focus"];
186762
- key = $packages["golang.org/x/mobile/event/key"];
186763
- mouse = $packages["golang.org/x/mobile/event/mouse"];
186764
- size = $packages["golang.org/x/mobile/event/size"];
186765
- geom = $packages["golang.org/x/mobile/geom"];
186766
- math = $packages["math"];
186767
- strings = $packages["strings"];
186768
- js = $packages["syscall/js"];
186769
- DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/internal/dom", true, function(eventChan_, releases_) {
186770
- this.$val = this;
186771
- if (arguments.length === 0) {
186772
- this.eventChan = $chanNil;
186773
- this.releases = sliceType$1.nil;
186774
- return;
186775
- }
186776
- this.eventChan = eventChan_;
186777
- this.releases = releases_;
186778
- });
186779
- sliceType = $sliceType($emptyInterface);
186780
- funcType = $funcType([], [], false);
186781
- sliceType$1 = $sliceType(funcType);
186782
- sliceType$2 = $sliceType($Int32);
186783
- chanType = $chanType($emptyInterface, false, false);
186784
- ptrType = $ptrType(DomEvents);
186785
- GetDocWidth = function() {
186786
- return $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
186787
- };
186788
- $pkg.GetDocWidth = GetDocWidth;
186789
- GetDocHeight = function() {
186790
- return $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
186791
- };
186792
- $pkg.GetDocHeight = GetDocHeight;
186793
- GetScreenWidth = function() {
186794
- return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
186795
- };
186796
- $pkg.GetScreenWidth = GetScreenWidth;
186797
- GetScreenHeight = function() {
186798
- return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
186799
- };
186800
- $pkg.GetScreenHeight = GetScreenHeight;
186801
- GetBrowserZoomRatio = function() {
186802
- var chromeZoom1, chromeZoom2, chromeZoom3, docElClientWidth, scrollerWidthInNoZoom, scrollerWidthInZoom1, scrollerWidthInZoom2, windowInnerWidth, windowOuterWidth;
186803
- windowInnerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Float();
186804
- windowOuterWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Float();
186805
- docElClientWidth = $clone($clone($clone($clone(js.Global(), js.Value).Get("document"), js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value).Float();
186806
- scrollerWidthInNoZoom = windowInnerWidth - docElClientWidth;
186807
- chromeZoom1 = (windowOuterWidth - scrollerWidthInNoZoom) / windowInnerWidth;
186808
- scrollerWidthInZoom1 = math.Round(scrollerWidthInNoZoom * chromeZoom1);
186809
- chromeZoom2 = (windowOuterWidth - scrollerWidthInZoom1) / windowInnerWidth;
186810
- scrollerWidthInZoom2 = math.Round(scrollerWidthInNoZoom * chromeZoom2);
186811
- chromeZoom3 = (windowOuterWidth - scrollerWidthInZoom2) / windowInnerWidth;
186812
- return chromeZoom3;
186813
- };
186814
- $pkg.GetBrowserZoomRatio = GetBrowserZoomRatio;
186815
- SetWindowWidth = function(newInnerWidth) {
186816
- var {_r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s, $r, $c} = $restore(this, {newInnerWidth});
186817
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186818
- innerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
186819
- outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
186820
- outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
186821
- newOuterWidth = newInnerWidth + ((outerWidth - innerWidth >> 0)) >> 0;
186822
- screenWidth = GetScreenWidth();
186823
- if (newOuterWidth > screenWidth) {
186824
- newOuterWidth = screenWidth;
186825
- }
186826
- _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(newOuterWidth), new $Int(outerHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186827
- _r;
186828
- $s = -1; return;
186829
- /* */ } return; } var $f = {$blk: SetWindowWidth, $c: true, $r, _r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s};return $f;
186830
- };
186831
- $pkg.SetWindowWidth = SetWindowWidth;
186832
- SetWindowHeight = function(newInnerHeight) {
186833
- var {_r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s, $r, $c} = $restore(this, {newInnerHeight});
186834
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186835
- innerHeight = $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
186836
- outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
186837
- outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
186838
- newOuterHeight = newInnerHeight + ((outerHeight - innerHeight >> 0)) >> 0;
186839
- screenHeight = GetScreenHeight();
186840
- if (newOuterHeight > screenHeight) {
186841
- newOuterHeight = screenHeight;
186842
- }
186843
- _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(outerWidth), new $Int(newOuterHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186844
- _r;
186845
- $s = -1; return;
186846
- /* */ } return; } var $f = {$blk: SetWindowHeight, $c: true, $r, _r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s};return $f;
186847
- };
186848
- $pkg.SetWindowHeight = SetWindowHeight;
186849
- GetOrientation = function() {
186850
- var {$24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred, $r, $c} = $restore(this, {});
186851
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
186852
- orientation = [orientation];
186853
- orientation[0] = 0;
186854
- $deferred.push([(function(orientation) { return function() {
186855
- if (!($interfaceIsEqual($recover(), $ifaceNil))) {
186856
- orientation[0] = 0;
186857
- }
186858
- }; })(orientation), []]);
186859
- orientationType = $clone($clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("orientation"), js.Value).Get("type"), js.Value).String();
186860
- /* */ if (strings.HasPrefix(orientationType, "landscape")) { $s = 1; continue; }
186861
- /* */ $s = 2; continue;
186862
- /* if (strings.HasPrefix(orientationType, "landscape")) { */ case 1:
186863
- orientation[0] = 2;
186864
- $24r = orientation[0];
186865
- $s = 3; case 3: return $24r;
186866
- /* } */ case 2:
186867
- /* */ if (strings.HasPrefix(orientationType, "portrait")) { $s = 4; continue; }
186868
- /* */ $s = 5; continue;
186869
- /* if (strings.HasPrefix(orientationType, "portrait")) { */ case 4:
186870
- orientation[0] = 2;
186871
- $24r$1 = orientation[0];
186872
- $s = 6; case 6: return $24r$1;
186873
- /* } */ case 5:
186874
- orientation[0] = 0;
186875
- $24r$2 = orientation[0];
186876
- $s = 7; case 7: return $24r$2;
186877
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return orientation[0]; } if($curGoroutine.asleep) { var $f = {$blk: GetOrientation, $c: true, $r, $24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred};return $f; } }
186878
- };
186879
- $pkg.GetOrientation = GetOrientation;
186880
- NewDomEvents = function() {
186881
- return new DomEvents.ptr(new $Chan($emptyInterface, 0), $makeSlice(sliceType$1, 0));
186882
- };
186883
- $pkg.NewDomEvents = NewDomEvents;
186884
- DomEvents.ptr.prototype.GetEventChan = function() {
186885
- var d;
186886
- d = this;
186887
- return d.eventChan;
186888
- };
186889
- DomEvents.prototype.GetEventChan = function() { return this.$val.GetEventChan(); };
186890
- DomEvents.ptr.prototype.Release = function() {
186891
- var {_i, _ref, d, release, $s, $r, $c} = $restore(this, {});
186892
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186893
- d = this;
186894
- _ref = d.releases;
186895
- _i = 0;
186896
- /* while (true) { */ case 1:
186897
- /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
186898
- release = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
186899
- $r = release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186900
- _i++;
186901
- $s = 1; continue;
186902
- case 2:
186903
- $s = -1; return;
186904
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.Release, $c: true, $r, _i, _ref, d, release, $s};return $f;
186905
- };
186906
- DomEvents.prototype.Release = function() { return this.$val.Release(); };
186907
- DomEvents.ptr.prototype.BindEvents = function() {
186908
- var {d, $s, $r, $c} = $restore(this, {});
186909
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186910
- d = this;
186911
- $r = d.bindSizeEvents(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186912
- $go($methodVal(d, "emitSizeEvent"), []);
186913
- $r = d.bindMouseEvents(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186914
- $r = d.bindKeyEvents(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186915
- $r = d.bindFocusEvents(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186916
- $s = -1; return;
186917
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.BindEvents, $c: true, $r, d, $s};return $f;
186918
- };
186919
- DomEvents.prototype.BindEvents = function() { return this.$val.BindEvents(); };
186920
- DomEvents.ptr.prototype.bindSizeEvents = function() {
186921
- var {_r, d, onResize, $s, $r, $c} = $restore(this, {});
186922
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186923
- d = [d];
186924
- onResize = [onResize];
186925
- d[0] = this;
186926
- onResize[0] = $clone(js.FuncOf((function(d, onResize) { return function $b(this$1, args) {
186927
- var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
186928
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186929
- $r = d[0].emitSizeEvent(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186930
- $s = -1; return $ifaceNil;
186931
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
186932
- }; })(d, onResize)), js.Func);
186933
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186934
- _r;
186935
- d[0].releases = $append(d[0].releases, (function(d, onResize) { return function $b() {
186936
- var {_r$1, $s, $r, $c} = $restore(this, {});
186937
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186938
- _r$1 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186939
- _r$1;
186940
- $clone(onResize[0], js.Func).Release();
186941
- $s = -1; return;
186942
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, $s};return $f;
186943
- }; })(d, onResize));
186944
- $s = -1; return;
186945
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindSizeEvents, $c: true, $r, _r, d, onResize, $s};return $f;
186946
- };
186947
- DomEvents.prototype.bindSizeEvents = function() { return this.$val.bindSizeEvents(); };
186948
- DomEvents.ptr.prototype.emitSizeEvent = function() {
186949
- var {_q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s, $r, $c} = $restore(this, {});
186950
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186951
- d = this;
186952
- _r = GetOrientation(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186953
- orientation = _r;
186954
- pixelsPerPt = 1;
186955
- width = GetDocWidth();
186956
- height = GetDocHeight();
186957
- $r = $send(d.eventChan, (x = new size.Event.ptr(width, height, ((_q = width / ((pixelsPerPt >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((_q$1 = height / ((pixelsPerPt >> 0)), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), pixelsPerPt, orientation), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186958
- $s = -1; return;
186959
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
186960
- };
186961
- DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
186962
- DomEvents.ptr.prototype.bindMouseEvents = function() {
186963
- var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
186964
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186965
- d = [d];
186966
- onClick = [onClick];
186967
- onMove = [onMove];
186968
- onWheel = [onWheel];
186969
- d[0] = this;
186970
- onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
186971
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186972
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186973
- _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186974
- _r;
186975
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186976
- $s = -1; return $ifaceNil;
186977
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
186978
- }; })(d, onClick, onMove, onWheel)), js.Func);
186979
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
186980
- _r;
186981
- onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
186982
- var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186983
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186984
- _r$1 = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186985
- _r$1;
186986
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186987
- $s = -1; return $ifaceNil;
186988
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
186989
- }; })(d, onClick, onMove, onWheel)), js.Func);
186990
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
186991
- _r$1;
186992
- _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
186993
- _r$2;
186994
- onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
186995
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
186996
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
186997
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
186998
- $s = -1; return $ifaceNil;
186999
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
187000
- }; })(d, onClick, onMove, onWheel)), js.Func);
187001
- _r$3 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
187002
- _r$3;
187003
- d[0].releases = $append(d[0].releases, (function(d, onClick, onMove, onWheel) { return function $b() {
187004
- var {_r$4, _r$5, _r$6, _r$7, $s, $r, $c} = $restore(this, {});
187005
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
187006
- _r$4 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
187007
- _r$4;
187008
- _r$5 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
187009
- _r$5;
187010
- _r$6 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
187011
- _r$6;
187012
- _r$7 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
187013
- _r$7;
187014
- $clone(onMove[0], js.Func).Release();
187015
- $clone(onClick[0], js.Func).Release();
187016
- $clone(onWheel[0], js.Func).Release();
187017
- $s = -1; return;
187018
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$4, _r$5, _r$6, _r$7, $s};return $f;
187019
- }; })(d, onClick, onMove, onWheel));
187020
- $s = -1; return;
187021
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindMouseEvents, $c: true, $r, _r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s};return $f;
187022
- };
187023
- DomEvents.prototype.bindMouseEvents = function() { return this.$val.bindMouseEvents(); };
187024
- getMouseDirection = function(ev) {
187025
- var dir, ev;
187026
- dir = 0;
187027
- dir = 0;
187028
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mousedown") {
187029
- dir = 1;
187030
- }
187031
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mouseup") {
187032
- dir = 2;
187033
- }
187034
- return dir;
187035
- };
187036
- getWheelButton = function(ev) {
187037
- var deltaX, deltaY, ev;
187038
- deltaY = $clone($clone(ev, js.Value).Get("deltaY"), js.Value).Int();
187039
- deltaX = $clone($clone(ev, js.Value).Get("deltaX"), js.Value).Int();
187040
- if (deltaY > 0) {
187041
- return -2;
187042
- }
187043
- if (deltaY < 0) {
187044
- return -1;
187045
- }
187046
- if (deltaX > 0) {
187047
- return -4;
187048
- }
187049
- if (deltaX < 0) {
187050
- return -3;
187051
- }
187052
- return 0;
187053
- };
187054
- getMouseButton = function(ev) {
187055
- var _1, ev;
187056
- _1 = $clone($clone(ev, js.Value).Get("button"), js.Value).Int();
187057
- if (_1 === (0)) {
187058
- return 1;
187059
- } else if (_1 === (1)) {
187060
- return 2;
187061
- } else if (_1 === (2)) {
187062
- return 3;
187063
- } else if (_1 === (3)) {
187064
- return 8;
187065
- } else if (_1 === (4)) {
187066
- return 9;
187067
- } else {
187068
- return 0;
187069
- }
187070
- };
187071
- getEventModifiers = function(ev) {
187072
- var ev, mod;
187073
- mod = 0;
187074
- if ($clone($clone(ev, js.Value).Get("altKey"), js.Value).Bool()) {
187075
- mod = (mod | (4)) >>> 0;
187076
- }
187077
- if ($clone($clone(ev, js.Value).Get("ctrlKey"), js.Value).Bool()) {
187078
- mod = (mod | (2)) >>> 0;
187079
- }
187080
- if ($clone($clone(ev, js.Value).Get("shiftKey"), js.Value).Bool()) {
187081
- mod = (mod | (1)) >>> 0;
187082
- }
187083
- if ($clone($clone(ev, js.Value).Get("metaKey"), js.Value).Bool()) {
187084
- mod = (mod | (8)) >>> 0;
187085
- }
187086
- return mod;
187087
- };
187088
- DomEvents.ptr.prototype.bindFocusEvents = function() {
187089
- var {_r, _r$1, d, onFocus, $s, $r, $c} = $restore(this, {});
187090
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
187091
- d = [d];
187092
- onFocus = [onFocus];
187093
- d[0] = this;
187094
- onFocus[0] = $clone(js.FuncOf((function(d, onFocus) { return function $b(this$1, args) {
187095
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
187096
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
187097
- $r = $send(d[0].eventChan, (x = new focus.Event.ptr(isFocusIn($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187098
- $s = -1; return $ifaceNil;
187099
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
187100
- }; })(d, onFocus)), js.Func);
187101
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
187102
- _r;
187103
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
187104
- _r$1;
187105
- d[0].releases = $append(d[0].releases, (function(d, onFocus) { return function $b() {
187106
- var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
187107
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
187108
- _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
187109
- _r$2;
187110
- _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
187111
- _r$3;
187112
- $clone(onFocus[0], js.Func).Release();
187113
- $s = -1; return;
187114
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
187115
- }; })(d, onFocus));
187116
- $s = -1; return;
187117
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindFocusEvents, $c: true, $r, _r, _r$1, d, onFocus, $s};return $f;
187118
- };
187119
- DomEvents.prototype.bindFocusEvents = function() { return this.$val.bindFocusEvents(); };
187120
- isFocusIn = function(ev) {
187121
- var ev;
187122
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "focus") {
187123
- return true;
187124
- }
187125
- return false;
187126
- };
187127
- DomEvents.ptr.prototype.bindKeyEvents = function() {
187128
- var {_r, _r$1, d, onKey, $s, $r, $c} = $restore(this, {});
187129
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
187130
- d = [d];
187131
- onKey = [onKey];
187132
- d[0] = this;
187133
- onKey[0] = $clone(js.FuncOf((function(d, onKey) { return function $b(this$1, args) {
187134
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
187135
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
187136
- _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
187137
- _r;
187138
- $r = $send(d[0].eventChan, (x = new key.Event.ptr(getKeyRune($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyCode($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187139
- $s = -1; return $ifaceNil;
187140
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
187141
- }; })(d, onKey)), js.Func);
187142
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
187143
- _r;
187144
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
187145
- _r$1;
187146
- d[0].releases = $append(d[0].releases, (function(d, onKey) { return function $b() {
187147
- var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
187148
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
187149
- _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
187150
- _r$2;
187151
- _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
187152
- _r$3;
187153
- $clone(onKey[0], js.Func).Release();
187154
- $s = -1; return;
187155
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
187156
- }; })(d, onKey));
187157
- $s = -1; return;
187158
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindKeyEvents, $c: true, $r, _r, _r$1, d, onKey, $s};return $f;
187159
- };
187160
- DomEvents.prototype.bindKeyEvents = function() { return this.$val.bindKeyEvents(); };
187161
- getKeyRune = function(ev) {
187162
- var ev, key$1;
187163
- key$1 = (new sliceType$2($stringToRunes($clone($clone(ev, js.Value).Get("key"), js.Value).String())));
187164
- if (key$1.$length === 1) {
187165
- return (0 >= key$1.$length ? ($throwRuntimeError("index out of range"), undefined) : key$1.$array[key$1.$offset + 0]);
187166
- }
187167
- return -1;
187168
- };
187169
- getKeyDirection = function(ev) {
187170
- var dir, ev;
187171
- dir = 0;
187172
- dir = 0;
187173
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keydown") {
187174
- dir = 1;
187175
- }
187176
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keyup") {
187177
- dir = 2;
187178
- }
187179
- return dir;
187180
- };
187181
- getKeyCode = function(ev) {
187182
- var _entry, _entry$1, _tuple, _tuple$1, code, code$1, domCode, domKey, ev, exists, exists$1;
187183
- domCode = $clone($clone(ev, js.Value).Get("code"), js.Value).String();
187184
- _tuple = (_entry = $mapIndex(keyCodesMap,$String.keyFor(domCode)), _entry !== undefined ? [_entry.v, true] : [0, false]);
187185
- code = _tuple[0];
187186
- exists = _tuple[1];
187187
- if (exists) {
187188
- return code;
187189
- }
187190
- domKey = $clone($clone(ev, js.Value).Get("key"), js.Value).String();
187191
- _tuple$1 = (_entry$1 = $mapIndex(keyCodesByKeyMap,$String.keyFor(domKey)), _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
187192
- code$1 = _tuple$1[0];
187193
- exists$1 = _tuple$1[1];
187194
- if (exists$1) {
187195
- return code$1;
187196
- }
187197
- return 0;
187198
- };
187199
- ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/internal/dom", typ: $funcType([], [], false)}];
187200
- DomEvents.init("golang.org/x/exp/shiny/driver/internal/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
187201
- $init = function() {
187202
- $pkg.$init = function() {};
187203
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
187204
- $r = focus.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187205
- $r = key.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187206
- $r = mouse.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187207
- $r = size.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187208
- $r = geom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187209
- $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187210
- $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187211
- $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
187212
- keyCodesMap = $makeMap($String.keyFor, [{ k: "KeyA", v: 4 }, { k: "KeyB", v: 5 }, { k: "KeyC", v: 6 }, { k: "KeyD", v: 7 }, { k: "KeyE", v: 8 }, { k: "KeyF", v: 9 }, { k: "KeyG", v: 10 }, { k: "KeyH", v: 11 }, { k: "KeyI", v: 12 }, { k: "KeyJ", v: 13 }, { k: "KeyK", v: 14 }, { k: "KeyL", v: 15 }, { k: "KeyM", v: 16 }, { k: "KeyN", v: 17 }, { k: "KeyO", v: 18 }, { k: "KeyP", v: 19 }, { k: "KeyQ", v: 20 }, { k: "KeyR", v: 21 }, { k: "KeyS", v: 22 }, { k: "KeyT", v: 23 }, { k: "KeyU", v: 24 }, { k: "KeyV", v: 25 }, { k: "KeyW", v: 26 }, { k: "KeyX", v: 27 }, { k: "KeyY", v: 28 }, { k: "KeyZ", v: 29 }, { k: "Digit1", v: 30 }, { k: "Digit2", v: 31 }, { k: "Digit3", v: 32 }, { k: "Digit4", v: 33 }, { k: "Digit5", v: 34 }, { k: "Digit6", v: 35 }, { k: "Digit7", v: 36 }, { k: "Digit8", v: 37 }, { k: "Digit9", v: 38 }, { k: "Digit0", v: 39 }, { k: "Enter", v: 40 }, { k: "Escape", v: 41 }, { k: "Backspace", v: 42 }, { k: "Tab", v: 43 }, { k: "Space", v: 44 }, { k: "Minus", v: 45 }, { k: "Equal", v: 46 }, { k: "BracketLeft", v: 47 }, { k: "BracketRight", v: 48 }, { k: "Backslash", v: 49 }, { k: "Semicolon", v: 51 }, { k: "Quote", v: 52 }, { k: "Backquote", v: 53 }, { k: "Comma", v: 54 }, { k: "Period", v: 55 }, { k: "Slash", v: 56 }, { k: "CapsLock", v: 57 }, { k: "F1", v: 58 }, { k: "F2", v: 59 }, { k: "F3", v: 60 }, { k: "F4", v: 61 }, { k: "F5", v: 62 }, { k: "F6", v: 63 }, { k: "F7", v: 64 }, { k: "F8", v: 65 }, { k: "F9", v: 66 }, { k: "F10", v: 67 }, { k: "F11", v: 68 }, { k: "F12", v: 69 }, { k: "Pause", v: 72 }, { k: "Insert", v: 73 }, { k: "Home", v: 74 }, { k: "PageUp", v: 75 }, { k: "Delete", v: 76 }, { k: "End", v: 77 }, { k: "PageDown", v: 78 }, { k: "ArrowRight", v: 79 }, { k: "ArrowLeft", v: 80 }, { k: "ArrowDown", v: 81 }, { k: "ArrowUp", v: 82 }, { k: "NumLock", v: 83 }, { k: "NumpadDivide", v: 84 }, { k: "NumpadMultiply", v: 85 }, { k: "NumpadSubtract", v: 86 }, { k: "NumpadAdd", v: 87 }, { k: "NumpadEnter", v: 88 }, { k: "Numpad1", v: 89 }, { k: "Numpad2", v: 90 }, { k: "Numpad3", v: 91 }, { k: "Numpad4", v: 92 }, { k: "Numpad5", v: 93 }, { k: "Numpad6", v: 94 }, { k: "Numpad7", v: 95 }, { k: "Numpad8", v: 96 }, { k: "Numpad9", v: 97 }, { k: "Numpad0", v: 98 }, { k: "NumpadDecimal", v: 99 }, { k: "NumpadEqual", v: 103 }, { k: "F13", v: 104 }, { k: "F14", v: 105 }, { k: "F15", v: 106 }, { k: "F16", v: 107 }, { k: "F17", v: 108 }, { k: "F18", v: 109 }, { k: "F19", v: 110 }, { k: "F20", v: 111 }, { k: "F21", v: 112 }, { k: "F22", v: 113 }, { k: "F23", v: 114 }, { k: "F24", v: 115 }, { k: "Help", v: 117 }, { k: "ContextMenu", v: 118 }, { k: "VolumeMute", v: 127 }, { k: "VolumeUp", v: 128 }, { k: "VolumeDown", v: 129 }, { k: "ControlLeft", v: 224 }, { k: "ShiftLeft", v: 225 }, { k: "AltLeft", v: 226 }, { k: "MetaLeft", v: 227 }, { k: "ControlRight", v: 228 }, { k: "ShiftRight", v: 229 }, { k: "AltRight", v: 230 }, { k: "MetaRight", v: 231 }, { k: "PrintScreen", v: 0 }]);
187213
- keyCodesByKeyMap = $makeMap($String.keyFor, [{ k: "AudioVolumeMute", v: 127 }, { k: "AudioVolumeUp", v: 128 }, { k: "AudioVolumeDown", v: 129 }]);
187214
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
187215
- };
187216
- $pkg.$init = $init;
187217
- return $pkg;
187218
- })();
187219
186759
  $packages["golang.org/x/image/math/f64"] = (function() {
187220
186760
  var $pkg = {}, $init, Aff3;
187221
186761
  Aff3 = $pkg.Aff3 = $newType(48, $kindArray, "f64.Aff3", true, "golang.org/x/image/math/f64", true, null);
@@ -189171,1346 +188711,1343 @@ $packages["image/draw"] = (function() {
189171
188711
  _i$2 = 0;
189172
188712
  while (true) {
189173
188713
  if (!(_i$2 < _ref$3.$length)) { break; }
189174
- i$1 = _i$2;
189175
- arrayType.copy(((i$1 < 0 || i$1 >= quantErrorNext.$length) ? ($throwRuntimeError("index out of range"), undefined) : quantErrorNext.$array[quantErrorNext.$offset + i$1]), arrayType.zero());
189176
- _i$2++;
189177
- }
189178
- }
189179
- y = y + (1) >> 0;
189180
- $s = 10; continue;
189181
- case 11:
189182
- $s = -1; return;
189183
- /* */ } return; } var $f = {$blk: drawPaletted, $c: true, $r, _i, _i$1, _i$2, _index, _index$1, _index$10, _index$11, _index$12, _index$13, _index$14, _index$15, _index$2, _index$3, _index$4, _index$5, _index$6, _index$7, _index$8, _index$9, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, a, b, bestIndex, bestSum, col, dst, ea, eb, eg, er, floydSteinberg$1, g, i, i$1, index, ok, out, p, p$1, palette, pix, pxRGBA, quantErrorCurr, quantErrorNext, r, r$1, sa, sb, sg, sp, sr, src, src0, src0$1, src0$2, stride, sum, x$1, x$2, x$3, x$4, x$5, x$6, y, $s};return $f;
189184
- };
189185
- Op.methods = [{prop: "Draw", name: "Draw", pkg: "", typ: $funcType([Image, image.Rectangle, image.Image, image.Point], [], false)}];
189186
- Image.init([{prop: "At", name: "At", pkg: "", typ: $funcType([$Int, $Int], [color.Color], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "ColorModel", name: "ColorModel", pkg: "", typ: $funcType([], [color.Model], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$Int, $Int, color.Color], [], false)}]);
189187
- RGBA64Image.init([{prop: "At", name: "At", pkg: "", typ: $funcType([$Int, $Int], [color.Color], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "ColorModel", name: "ColorModel", pkg: "", typ: $funcType([], [color.Model], false)}, {prop: "RGBA64At", name: "RGBA64At", pkg: "", typ: $funcType([$Int, $Int], [color.RGBA64], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$Int, $Int, color.Color], [], false)}, {prop: "SetRGBA64", name: "SetRGBA64", pkg: "", typ: $funcType([$Int, $Int, color.RGBA64], [], false)}]);
189188
- $init = function() {
189189
- $pkg.$init = function() {};
189190
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
189191
- $r = image.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189192
- $r = color.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189193
- $r = imageutil.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189194
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189195
- };
189196
- $pkg.$init = $init;
189197
- return $pkg;
189198
- })();
189199
- $packages["golang.org/x/exp/shiny/screen"] = (function() {
189200
- var $pkg = {}, $init, f64, image, color, draw, utf8, Buffer, Texture, Window, PublishResult, NewWindowOptions, DrawOptions, ptrType, ptrType$1, ptrType$2, ptrType$3, sanitizeUTF8;
189201
- f64 = $packages["golang.org/x/image/math/f64"];
189202
- image = $packages["image"];
189203
- color = $packages["image/color"];
189204
- draw = $packages["image/draw"];
189205
- utf8 = $packages["unicode/utf8"];
189206
- Buffer = $pkg.Buffer = $newType(8, $kindInterface, "screen.Buffer", true, "golang.org/x/exp/shiny/screen", true, null);
189207
- Texture = $pkg.Texture = $newType(8, $kindInterface, "screen.Texture", true, "golang.org/x/exp/shiny/screen", true, null);
189208
- Window = $pkg.Window = $newType(8, $kindInterface, "screen.Window", true, "golang.org/x/exp/shiny/screen", true, null);
189209
- PublishResult = $pkg.PublishResult = $newType(0, $kindStruct, "screen.PublishResult", true, "golang.org/x/exp/shiny/screen", true, function(BackBufferPreserved_) {
189210
- this.$val = this;
189211
- if (arguments.length === 0) {
189212
- this.BackBufferPreserved = false;
189213
- return;
189214
- }
189215
- this.BackBufferPreserved = BackBufferPreserved_;
189216
- });
189217
- NewWindowOptions = $pkg.NewWindowOptions = $newType(0, $kindStruct, "screen.NewWindowOptions", true, "golang.org/x/exp/shiny/screen", true, function(Width_, Height_, Title_) {
189218
- this.$val = this;
189219
- if (arguments.length === 0) {
189220
- this.Width = 0;
189221
- this.Height = 0;
189222
- this.Title = "";
189223
- return;
189224
- }
189225
- this.Width = Width_;
189226
- this.Height = Height_;
189227
- this.Title = Title_;
189228
- });
189229
- DrawOptions = $pkg.DrawOptions = $newType(0, $kindStruct, "screen.DrawOptions", true, "golang.org/x/exp/shiny/screen", true, function() {
189230
- this.$val = this;
189231
- if (arguments.length === 0) {
189232
- return;
189233
- }
189234
- });
189235
- ptrType = $ptrType(NewWindowOptions);
189236
- ptrType$1 = $ptrType(image.RGBA);
189237
- ptrType$2 = $ptrType(image.YCbCr);
189238
- ptrType$3 = $ptrType(DrawOptions);
189239
- NewWindowOptions.ptr.prototype.GetTitle = function() {
189240
- var o;
189241
- o = this;
189242
- if (o === ptrType.nil) {
189243
- return "";
189244
- }
189245
- return sanitizeUTF8(o.Title, 4096);
189246
- };
189247
- NewWindowOptions.prototype.GetTitle = function() { return this.$val.GetTitle(); };
189248
- sanitizeUTF8 = function(s, n) {
189249
- var _tuple, i, n, n$1, r, s;
189250
- if (n < s.length) {
189251
- s = $substring(s, 0, n);
189252
- }
189253
- i = 0;
189254
- while (true) {
189255
- if (!(i < s.length)) { break; }
189256
- _tuple = utf8.DecodeRuneInString($substring(s, i));
189257
- r = _tuple[0];
189258
- n$1 = _tuple[1];
189259
- if ((r === 0) || ((r === 65533) && (n$1 === 1))) {
189260
- break;
189261
- }
189262
- i = i + (n$1) >> 0;
189263
- }
189264
- return $substring(s, 0, i);
189265
- };
189266
- ptrType.methods = [{prop: "GetTitle", name: "GetTitle", pkg: "", typ: $funcType([], [$String], false)}];
189267
- Buffer.init([{prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$2], false)}]);
189268
- Texture.init([{prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
189269
- Window.init([{prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [PublishResult], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
189270
- PublishResult.init("", [{prop: "BackBufferPreserved", name: "BackBufferPreserved", embedded: false, exported: true, typ: $Bool, tag: ""}]);
189271
- NewWindowOptions.init("", [{prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Title", name: "Title", embedded: false, exported: true, typ: $String, tag: ""}]);
189272
- DrawOptions.init("", []);
189273
- $init = function() {
189274
- $pkg.$init = function() {};
189275
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
189276
- $r = f64.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189277
- $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189278
- $r = color.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189279
- $r = draw.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189280
- $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189281
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189282
- };
189283
- $pkg.$init = $init;
189284
- return $pkg;
189285
- })();
189286
- $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
189287
- var $pkg = {}, $init, screen, image;
189288
- screen = $packages["golang.org/x/exp/shiny/screen"];
189289
- image = $packages["image"];
189290
- $init = function() {
189291
- $pkg.$init = function() {};
189292
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
189293
- $r = screen.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189294
- $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189295
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189296
- };
189297
- $pkg.$init = $init;
189298
- return $pkg;
189299
- })();
189300
- $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
189301
- var $pkg = {}, $init, screen, image, draw, ConvertYCbCrToRGBA;
189302
- screen = $packages["golang.org/x/exp/shiny/screen"];
189303
- image = $packages["image"];
189304
- draw = $packages["image/draw"];
189305
- ConvertYCbCrToRGBA = function(b) {
189306
- var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, b, $s, $r, $c} = $restore(this, {b});
189307
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189308
- _r = b.RGBA(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189309
- _arg = _r;
189310
- _r$1 = b.YCbCr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189311
- _r$2 = _r$1.Bounds(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189312
- _arg$1 = $clone(_r$2, image.Rectangle);
189313
- _r$3 = b.YCbCr(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189314
- _arg$2 = _r$3;
189315
- _r$4 = b.RGBA(); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189316
- _arg$3 = $clone(_r$4.Rect.Min, image.Point);
189317
- $r = draw.Draw(_arg, _arg$1, _arg$2, _arg$3, 1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188714
+ i$1 = _i$2;
188715
+ arrayType.copy(((i$1 < 0 || i$1 >= quantErrorNext.$length) ? ($throwRuntimeError("index out of range"), undefined) : quantErrorNext.$array[quantErrorNext.$offset + i$1]), arrayType.zero());
188716
+ _i$2++;
188717
+ }
188718
+ }
188719
+ y = y + (1) >> 0;
188720
+ $s = 10; continue;
188721
+ case 11:
189318
188722
  $s = -1; return;
189319
- /* */ } return; } var $f = {$blk: ConvertYCbCrToRGBA, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, b, $s};return $f;
188723
+ /* */ } return; } var $f = {$blk: drawPaletted, $c: true, $r, _i, _i$1, _i$2, _index, _index$1, _index$10, _index$11, _index$12, _index$13, _index$14, _index$15, _index$2, _index$3, _index$4, _index$5, _index$6, _index$7, _index$8, _index$9, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, a, b, bestIndex, bestSum, col, dst, ea, eb, eg, er, floydSteinberg$1, g, i, i$1, index, ok, out, p, p$1, palette, pix, pxRGBA, quantErrorCurr, quantErrorNext, r, r$1, sa, sb, sg, sp, sr, src, src0, src0$1, src0$2, stride, sum, x$1, x$2, x$3, x$4, x$5, x$6, y, $s};return $f;
189320
188724
  };
189321
- $pkg.ConvertYCbCrToRGBA = ConvertYCbCrToRGBA;
188725
+ Op.methods = [{prop: "Draw", name: "Draw", pkg: "", typ: $funcType([Image, image.Rectangle, image.Image, image.Point], [], false)}];
188726
+ Image.init([{prop: "At", name: "At", pkg: "", typ: $funcType([$Int, $Int], [color.Color], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "ColorModel", name: "ColorModel", pkg: "", typ: $funcType([], [color.Model], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$Int, $Int, color.Color], [], false)}]);
188727
+ RGBA64Image.init([{prop: "At", name: "At", pkg: "", typ: $funcType([$Int, $Int], [color.Color], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "ColorModel", name: "ColorModel", pkg: "", typ: $funcType([], [color.Model], false)}, {prop: "RGBA64At", name: "RGBA64At", pkg: "", typ: $funcType([$Int, $Int], [color.RGBA64], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$Int, $Int, color.Color], [], false)}, {prop: "SetRGBA64", name: "SetRGBA64", pkg: "", typ: $funcType([$Int, $Int, color.RGBA64], [], false)}]);
189322
188728
  $init = function() {
189323
188729
  $pkg.$init = function() {};
189324
188730
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
189325
- $r = screen.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189326
- $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189327
- $r = draw.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188731
+ $r = image.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188732
+ $r = color.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188733
+ $r = imageutil.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189328
188734
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189329
188735
  };
189330
188736
  $pkg.$init = $init;
189331
188737
  return $pkg;
189332
188738
  })();
189333
- $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189334
- var $pkg = {}, $init, fmt, webgl, types, dom, errscreen, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$3, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, main, newScreenImpl, newBuffer;
189335
- fmt = $packages["fmt"];
189336
- webgl = $packages["github.com/nuberu/webgl"];
189337
- types = $packages["github.com/nuberu/webgl/types"];
189338
- dom = $packages["golang.org/x/exp/shiny/driver/internal/dom"];
189339
- errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
189340
- imageutil = $packages["golang.org/x/exp/shiny/imageutil"];
189341
- screen = $packages["golang.org/x/exp/shiny/screen"];
188739
+ $packages["golang.org/x/exp/shiny/screen"] = (function() {
188740
+ var $pkg = {}, $init, f64, image, color, draw, utf8, Buffer, Texture, Window, PublishResult, NewWindowOptions, DrawOptions, ptrType, ptrType$1, ptrType$2, ptrType$3, sanitizeUTF8;
189342
188741
  f64 = $packages["golang.org/x/image/math/f64"];
189343
188742
  image = $packages["image"];
189344
188743
  color = $packages["image/color"];
189345
188744
  draw = $packages["image/draw"];
189346
- sync = $packages["sync"];
189347
- js = $packages["syscall/js"];
189348
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, width_, height_) {
189349
- this.$val = this;
189350
- if (arguments.length === 0) {
189351
- this.screen = ptrType.nil;
189352
- this.mutex = ptrType$1.nil;
189353
- this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
189354
- this.gl = ptrType$2.nil;
189355
- this.programRGBA = ptrType$3.nil;
189356
- this.imageTexRGBA = ptrType$4.nil;
189357
- this.programYUV420 = ptrType$3.nil;
189358
- this.imageTexY = ptrType$4.nil;
189359
- this.imageTexU = ptrType$4.nil;
189360
- this.imageTexV = ptrType$4.nil;
189361
- this.vertexArray = ptrType$5.nil;
189362
- this.released = false;
189363
- this.domEvents = ptrType$6.nil;
189364
- this.width = 0;
189365
- this.height = 0;
189366
- return;
189367
- }
189368
- this.screen = screen_;
189369
- this.mutex = mutex_;
189370
- this.canvasEl = canvasEl_;
189371
- this.gl = gl_;
189372
- this.programRGBA = programRGBA_;
189373
- this.imageTexRGBA = imageTexRGBA_;
189374
- this.programYUV420 = programYUV420_;
189375
- this.imageTexY = imageTexY_;
189376
- this.imageTexU = imageTexU_;
189377
- this.imageTexV = imageTexV_;
189378
- this.vertexArray = vertexArray_;
189379
- this.released = released_;
189380
- this.domEvents = domEvents_;
189381
- this.width = width_;
189382
- this.height = height_;
189383
- });
189384
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "webgldriver.screenImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(doc_) {
189385
- this.$val = this;
189386
- if (arguments.length === 0) {
189387
- this.doc = new js.Value.ptr(null, false, arrayType.zero());
189388
- return;
189389
- }
189390
- this.doc = doc_;
189391
- });
189392
- ArrayBufferSlice = $pkg.ArrayBufferSlice = $newType(0, $kindStruct, "webgldriver.ArrayBufferSlice", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(ArrayBuffer_, Offset_, Length_) {
188745
+ utf8 = $packages["unicode/utf8"];
188746
+ Buffer = $pkg.Buffer = $newType(8, $kindInterface, "screen.Buffer", true, "golang.org/x/exp/shiny/screen", true, null);
188747
+ Texture = $pkg.Texture = $newType(8, $kindInterface, "screen.Texture", true, "golang.org/x/exp/shiny/screen", true, null);
188748
+ Window = $pkg.Window = $newType(8, $kindInterface, "screen.Window", true, "golang.org/x/exp/shiny/screen", true, null);
188749
+ PublishResult = $pkg.PublishResult = $newType(0, $kindStruct, "screen.PublishResult", true, "golang.org/x/exp/shiny/screen", true, function(BackBufferPreserved_) {
189393
188750
  this.$val = this;
189394
188751
  if (arguments.length === 0) {
189395
- this.ArrayBuffer = new js.Value.ptr(null, false, arrayType.zero());
189396
- this.Offset = 0;
189397
- this.Length = 0;
188752
+ this.BackBufferPreserved = false;
189398
188753
  return;
189399
188754
  }
189400
- this.ArrayBuffer = ArrayBuffer_;
189401
- this.Offset = Offset_;
189402
- this.Length = Length_;
188755
+ this.BackBufferPreserved = BackBufferPreserved_;
189403
188756
  });
189404
- YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "webgldriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(Y_, Cb_, Cr_, YStride_, CStride_, SubsampleRatio_, Rect_, Use_) {
188757
+ NewWindowOptions = $pkg.NewWindowOptions = $newType(0, $kindStruct, "screen.NewWindowOptions", true, "golang.org/x/exp/shiny/screen", true, function(Width_, Height_, Title_) {
189405
188758
  this.$val = this;
189406
188759
  if (arguments.length === 0) {
189407
- this.Y = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189408
- this.Cb = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189409
- this.Cr = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189410
- this.YStride = 0;
189411
- this.CStride = 0;
189412
- this.SubsampleRatio = 0;
189413
- this.Rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0));
189414
- this.Use = false;
188760
+ this.Width = 0;
188761
+ this.Height = 0;
188762
+ this.Title = "";
189415
188763
  return;
189416
188764
  }
189417
- this.Y = Y_;
189418
- this.Cb = Cb_;
189419
- this.Cr = Cr_;
189420
- this.YStride = YStride_;
189421
- this.CStride = CStride_;
189422
- this.SubsampleRatio = SubsampleRatio_;
189423
- this.Rect = Rect_;
189424
- this.Use = Use_;
188765
+ this.Width = Width_;
188766
+ this.Height = Height_;
188767
+ this.Title = Title_;
189425
188768
  });
189426
- BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "webgldriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
188769
+ DrawOptions = $pkg.DrawOptions = $newType(0, $kindStruct, "screen.DrawOptions", true, "golang.org/x/exp/shiny/screen", true, function() {
189427
188770
  this.$val = this;
189428
188771
  if (arguments.length === 0) {
189429
- this.screen = ptrType.nil;
189430
- this.size = new image.Point.ptr(0, 0);
189431
- this.mutex = ptrType$1.nil;
189432
- this.released = false;
189433
- this.rgba = new image.RGBA.ptr(sliceType$3.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
189434
- this.ycbcr = new image.YCbCr.ptr(sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
189435
- this.ycbcrJS = ptrType$8.nil;
189436
188772
  return;
189437
188773
  }
189438
- this.screen = screen_;
189439
- this.size = size_;
189440
- this.mutex = mutex_;
189441
- this.released = released_;
189442
- this.rgba = rgba_;
189443
- this.ycbcr = ycbcr_;
189444
- this.ycbcrJS = ycbcrJS_;
189445
188774
  });
189446
- sliceType = $sliceType($Float32);
189447
- sliceType$1 = $sliceType($Uint16);
189448
- sliceType$2 = $sliceType($emptyInterface);
189449
- ptrType = $ptrType(screenImpl);
189450
- ptrType$1 = $ptrType(sync.Mutex);
189451
- funcType = $funcType([], [], false);
189452
- arrayType = $arrayType(funcType, 0);
189453
- ptrType$2 = $ptrType(webgl.RenderingContext);
189454
- ptrType$3 = $ptrType(types.Program);
189455
- ptrType$4 = $ptrType(types.Texture);
189456
- ptrType$5 = $ptrType(types.VertexArray);
189457
- ptrType$6 = $ptrType(dom.DomEvents);
189458
- ptrType$7 = $ptrType(BufferImpl);
189459
- sliceType$3 = $sliceType($Uint8);
189460
- ptrType$8 = $ptrType(YCbCrJS);
189461
- ptrType$9 = $ptrType(screen.DrawOptions);
189462
- ptrType$10 = $ptrType(windowImpl);
189463
- ptrType$11 = $ptrType(screen.NewWindowOptions);
189464
- ptrType$12 = $ptrType(ArrayBufferSlice);
189465
- ptrType$13 = $ptrType(image.RGBA);
189466
- ptrType$14 = $ptrType(image.YCbCr);
189467
- newWindow = function(screen$1, opts) {
189468
- var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
189469
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189470
- _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType$2([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189471
- canvasEl = $clone(_r, js.Value);
189472
- _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType$2([new canvasEl.constructor.elem(canvasEl)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189473
- _r$1;
189474
- _r$2 = webgl.FromCanvas($clone(canvasEl, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189475
- _tuple = _r$2;
189476
- gl = _tuple[0];
189477
- err = _tuple[1];
189478
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189479
- $panic(err);
188775
+ ptrType = $ptrType(NewWindowOptions);
188776
+ ptrType$1 = $ptrType(image.RGBA);
188777
+ ptrType$2 = $ptrType(image.YCbCr);
188778
+ ptrType$3 = $ptrType(DrawOptions);
188779
+ NewWindowOptions.ptr.prototype.GetTitle = function() {
188780
+ var o;
188781
+ o = this;
188782
+ if (o === ptrType.nil) {
188783
+ return "";
189480
188784
  }
189481
- domEvents = dom.NewDomEvents();
189482
- w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl, js.Value), gl, ptrType$3.nil, ptrType$4.nil, ptrType$3.nil, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, ptrType$5.nil, false, domEvents, 0, 0);
189483
- /* */ if (!((opts.Width === 0))) { $s = 4; continue; }
189484
- /* */ $s = 5; continue;
189485
- /* if (!((opts.Width === 0))) { */ case 4:
189486
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189487
- /* } */ case 5:
189488
- /* */ if (!((opts.Height === 0))) { $s = 7; continue; }
189489
- /* */ $s = 8; continue;
189490
- /* if (!((opts.Height === 0))) { */ case 7:
189491
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189492
- /* } */ case 8:
189493
- /* */ if (!(opts.Title === "")) { $s = 10; continue; }
189494
- /* */ $s = 11; continue;
189495
- /* if (!(opts.Title === "")) { */ case 10:
189496
- _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType$2([new $String("title")])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189497
- _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType$2([new $Int(0)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189498
- $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189499
- /* } */ case 11:
189500
- _r$5 = w.createBuffers(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189501
- w.vertexArray = _r$5;
189502
- $r = domEvents.BindEvents(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189503
- $s = -1; return w;
189504
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s};return $f;
188785
+ return sanitizeUTF8(o.Title, 4096);
189505
188786
  };
189506
- windowImpl.ptr.prototype.ensureCanvasSize = function(width, height) {
189507
- var height, w, width;
189508
- w = this;
189509
- if (!(($clone($clone(w.canvasEl, js.Value).Get("width"), js.Value).Int() === width))) {
189510
- $clone(w.canvasEl, js.Value).Set("width", new $Int(width));
188787
+ NewWindowOptions.prototype.GetTitle = function() { return this.$val.GetTitle(); };
188788
+ sanitizeUTF8 = function(s, n) {
188789
+ var _tuple, i, n, n$1, r, s;
188790
+ if (n < s.length) {
188791
+ s = $substring(s, 0, n);
189511
188792
  }
189512
- if (!(($clone($clone(w.canvasEl, js.Value).Get("height"), js.Value).Int() === height))) {
189513
- $clone(w.canvasEl, js.Value).Set("height", new $Int(height));
188793
+ i = 0;
188794
+ while (true) {
188795
+ if (!(i < s.length)) { break; }
188796
+ _tuple = utf8.DecodeRuneInString($substring(s, i));
188797
+ r = _tuple[0];
188798
+ n$1 = _tuple[1];
188799
+ if ((r === 0) || ((r === 65533) && (n$1 === 1))) {
188800
+ break;
188801
+ }
188802
+ i = i + (n$1) >> 0;
189514
188803
  }
188804
+ return $substring(s, 0, i);
189515
188805
  };
189516
- windowImpl.prototype.ensureCanvasSize = function(width, height) { return this.$val.ensureCanvasSize(width, height); };
189517
- windowImpl.ptr.prototype.clear = function() {
189518
- var {w, $s, $r, $c} = $restore(this, {});
189519
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189520
- w = this;
189521
- $r = w.gl.ClearColor(0, 0, 0, 1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189522
- $r = w.gl.Clear(16384); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189523
- $s = -1; return;
189524
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.clear, $c: true, $r, w, $s};return $f;
189525
- };
189526
- windowImpl.prototype.clear = function() { return this.$val.clear(); };
189527
- windowImpl.ptr.prototype.Release = function() {
189528
- var {_r, w, $s, $deferred, $r, $c} = $restore(this, {});
189529
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
189530
- w = this;
189531
- $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189532
- $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
189533
- /* */ if (w.released) { $s = 2; continue; }
189534
- /* */ $s = 3; continue;
189535
- /* if (w.released) { */ case 2:
189536
- $s = 4; case 4: return;
189537
- /* } */ case 3:
189538
- _r = $clone(w.canvasEl, js.Value).Call("remove", sliceType$2.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189539
- _r;
189540
- $r = w.domEvents.Release(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189541
- w.released = true;
189542
- $s = -1; return;
189543
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, _r, w, $s, $deferred};return $f; } }
188806
+ ptrType.methods = [{prop: "GetTitle", name: "GetTitle", pkg: "", typ: $funcType([], [$String], false)}];
188807
+ Buffer.init([{prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$2], false)}]);
188808
+ Texture.init([{prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
188809
+ Window.init([{prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [PublishResult], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, Texture, image.Rectangle, draw.Op, ptrType$3], [], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, Buffer, image.Rectangle], [], false)}]);
188810
+ PublishResult.init("", [{prop: "BackBufferPreserved", name: "BackBufferPreserved", embedded: false, exported: true, typ: $Bool, tag: ""}]);
188811
+ NewWindowOptions.init("", [{prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Title", name: "Title", embedded: false, exported: true, typ: $String, tag: ""}]);
188812
+ DrawOptions.init("", []);
188813
+ $init = function() {
188814
+ $pkg.$init = function() {};
188815
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
188816
+ $r = f64.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188817
+ $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188818
+ $r = color.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188819
+ $r = draw.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188820
+ $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188821
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189544
188822
  };
189545
- windowImpl.prototype.Release = function() { return this.$val.Release(); };
189546
- windowImpl.ptr.prototype.Publish = function() {
189547
- var w;
189548
- w = this;
189549
- if (w.released) {
189550
- return new screen.PublishResult.ptr(false);
189551
- }
189552
- return new screen.PublishResult.ptr(false);
188823
+ $pkg.$init = $init;
188824
+ return $pkg;
188825
+ })();
188826
+ $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
188827
+ var $pkg = {}, $init, screen, image;
188828
+ screen = $packages["golang.org/x/exp/shiny/screen"];
188829
+ image = $packages["image"];
188830
+ $init = function() {
188831
+ $pkg.$init = function() {};
188832
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
188833
+ $r = screen.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188834
+ $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188835
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189553
188836
  };
189554
- windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
189555
- windowImpl.ptr.prototype.Send = function(event) {
189556
- var event, w;
189557
- w = this;
189558
- if (w.released) {
188837
+ $pkg.$init = $init;
188838
+ return $pkg;
188839
+ })();
188840
+ $packages["golang.org/x/exp/shiny/driver/util/dom"] = (function() {
188841
+ var $pkg = {}, $init, focus, key, mouse, size, geom, math, strings, js, DomEvents, sliceType, funcType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetScreenWidth, GetScreenHeight, GetBrowserZoomRatio, SetWindowWidth, SetWindowHeight, GetOrientation, NewDomEvents, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
188842
+ focus = $packages["golang.org/x/mobile/event/focus"];
188843
+ key = $packages["golang.org/x/mobile/event/key"];
188844
+ mouse = $packages["golang.org/x/mobile/event/mouse"];
188845
+ size = $packages["golang.org/x/mobile/event/size"];
188846
+ geom = $packages["golang.org/x/mobile/geom"];
188847
+ math = $packages["math"];
188848
+ strings = $packages["strings"];
188849
+ js = $packages["syscall/js"];
188850
+ DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "golang.org/x/exp/shiny/driver/util/dom", true, function(eventChan_, releases_) {
188851
+ this.$val = this;
188852
+ if (arguments.length === 0) {
188853
+ this.eventChan = $chanNil;
188854
+ this.releases = sliceType$1.nil;
189559
188855
  return;
189560
188856
  }
189561
- $panic(new $String("Not implemented"));
188857
+ this.eventChan = eventChan_;
188858
+ this.releases = releases_;
188859
+ });
188860
+ sliceType = $sliceType($emptyInterface);
188861
+ funcType = $funcType([], [], false);
188862
+ sliceType$1 = $sliceType(funcType);
188863
+ sliceType$2 = $sliceType($Int32);
188864
+ chanType = $chanType($emptyInterface, false, false);
188865
+ ptrType = $ptrType(DomEvents);
188866
+ GetDocWidth = function() {
188867
+ return $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
189562
188868
  };
189563
- windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
189564
- windowImpl.ptr.prototype.SendFirst = function(event) {
189565
- var event, w;
189566
- w = this;
189567
- if (w.released) {
189568
- return;
189569
- }
189570
- $panic(new $String("Not implemented"));
188869
+ $pkg.GetDocWidth = GetDocWidth;
188870
+ GetDocHeight = function() {
188871
+ return $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
189571
188872
  };
189572
- windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
189573
- windowImpl.ptr.prototype.NextEvent = function() {
189574
- var {_r, ev, w, $s, $r, $c} = $restore(this, {});
189575
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189576
- w = this;
189577
- _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189578
- ev = _r[0];
189579
- $s = -1; return ev;
189580
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
188873
+ $pkg.GetDocHeight = GetDocHeight;
188874
+ GetScreenWidth = function() {
188875
+ return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("width"), js.Value).Int();
189581
188876
  };
189582
- windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
189583
- windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
189584
- var {dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
188877
+ $pkg.GetScreenWidth = GetScreenWidth;
188878
+ GetScreenHeight = function() {
188879
+ return $clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("height"), js.Value).Int();
188880
+ };
188881
+ $pkg.GetScreenHeight = GetScreenHeight;
188882
+ GetBrowserZoomRatio = function() {
188883
+ var chromeZoom1, chromeZoom2, chromeZoom3, docElClientWidth, scrollerWidthInNoZoom, scrollerWidthInZoom1, scrollerWidthInZoom2, windowInnerWidth, windowOuterWidth;
188884
+ windowInnerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Float();
188885
+ windowOuterWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Float();
188886
+ docElClientWidth = $clone($clone($clone($clone(js.Global(), js.Value).Get("document"), js.Value).Get("documentElement"), js.Value).Get("clientWidth"), js.Value).Float();
188887
+ scrollerWidthInNoZoom = windowInnerWidth - docElClientWidth;
188888
+ chromeZoom1 = (windowOuterWidth - scrollerWidthInNoZoom) / windowInnerWidth;
188889
+ scrollerWidthInZoom1 = math.Round(scrollerWidthInNoZoom * chromeZoom1);
188890
+ chromeZoom2 = (windowOuterWidth - scrollerWidthInZoom1) / windowInnerWidth;
188891
+ scrollerWidthInZoom2 = math.Round(scrollerWidthInNoZoom * chromeZoom2);
188892
+ chromeZoom3 = (windowOuterWidth - scrollerWidthInZoom2) / windowInnerWidth;
188893
+ return chromeZoom3;
188894
+ };
188895
+ $pkg.GetBrowserZoomRatio = GetBrowserZoomRatio;
188896
+ SetWindowWidth = function(newInnerWidth) {
188897
+ var {_r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s, $r, $c} = $restore(this, {newInnerWidth});
189585
188898
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189586
- w = this;
189587
- if (w.released) {
189588
- $s = -1; return;
188899
+ innerWidth = $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
188900
+ outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
188901
+ outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
188902
+ newOuterWidth = newInnerWidth + ((outerWidth - innerWidth >> 0)) >> 0;
188903
+ screenWidth = GetScreenWidth();
188904
+ if (newOuterWidth > screenWidth) {
188905
+ newOuterWidth = screenWidth;
189589
188906
  }
189590
- $r = w.drawBufferRGBA($clone(dp, image.Point), src, $clone(sr, image.Rectangle)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188907
+ _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(newOuterWidth), new $Int(outerHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188908
+ _r;
189591
188909
  $s = -1; return;
189592
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, dp, sr, src, w, $s};return $f;
188910
+ /* */ } return; } var $f = {$blk: SetWindowWidth, $c: true, $r, _r, innerWidth, newInnerWidth, newOuterWidth, outerHeight, outerWidth, screenWidth, $s};return $f;
189593
188911
  };
189594
- windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
189595
- windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
189596
- var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, dp, jsSrc, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
188912
+ $pkg.SetWindowWidth = SetWindowWidth;
188913
+ SetWindowHeight = function(newInnerHeight) {
188914
+ var {_r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s, $r, $c} = $restore(this, {newInnerHeight});
189597
188915
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189598
- w = this;
189599
- if (w.released) {
189600
- $s = -1; return;
188916
+ innerHeight = $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
188917
+ outerHeight = $clone($clone(js.Global(), js.Value).Get("outerHeight"), js.Value).Int();
188918
+ outerWidth = $clone($clone(js.Global(), js.Value).Get("outerWidth"), js.Value).Int();
188919
+ newOuterHeight = newInnerHeight + ((outerHeight - innerHeight >> 0)) >> 0;
188920
+ screenHeight = GetScreenHeight();
188921
+ if (newOuterHeight > screenHeight) {
188922
+ newOuterHeight = screenHeight;
189601
188923
  }
189602
- _ref = src;
189603
- /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
189604
- /* */ $s = 2; continue;
189605
- /* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
189606
- jsSrc = _ref.$val;
189607
- _r = jsSrc.YCbCrJS(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189608
- /* */ if (_r.Use) { $s = 3; continue; }
189609
- /* */ $s = 4; continue;
189610
- /* if (_r.Use) { */ case 3:
189611
- _r$1 = jsSrc.YCbCrJS(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189612
- /* */ if (!((_r$1.SubsampleRatio === 2))) { $s = 6; continue; }
189613
- /* */ $s = 7; continue;
189614
- /* if (!((_r$1.SubsampleRatio === 2))) { */ case 6:
189615
- $panic(new $String("Only image.YCbCrSubsampleRatio420 SubsampleRatio is currently supported"));
189616
- /* } */ case 7:
189617
- _arg = $clone(dp, image.Point);
189618
- _r$2 = jsSrc.YCbCrJS(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189619
- _r$3 = _r$2.Y.slice(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189620
- _arg$1 = $clone(_r$3, js.Value);
189621
- _r$4 = jsSrc.YCbCrJS(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189622
- _r$5 = _r$4.Cb.slice(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189623
- _arg$2 = $clone(_r$5, js.Value);
189624
- _r$6 = jsSrc.YCbCrJS(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189625
- _r$7 = _r$6.Cr.slice(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
189626
- _arg$3 = $clone(_r$7, js.Value);
189627
- _arg$4 = $clone(sr, image.Rectangle);
189628
- $r = w.drawBufferYUV420JSArrayBuffers(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189629
- $s = -1; return;
189630
- /* } */ case 4:
189631
- /* } */ case 2:
189632
- _r$8 = src.YCbCr(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
189633
- /* */ if (_r$8.SubsampleRatio === 2) { $s = 16; continue; }
189634
- /* */ $s = 17; continue;
189635
- /* if (_r$8.SubsampleRatio === 2) { */ case 16:
189636
- $r = w.drawBufferYUV420($clone(dp, image.Point), src, $clone(sr, image.Rectangle)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189637
- $s = 18; continue;
189638
- /* } else { */ case 17:
189639
- _r$9 = src.RGBA(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
189640
- /* */ if (_r$9.Pix.$length === 0) { $s = 21; continue; }
189641
- /* */ $s = 22; continue;
189642
- /* if (_r$9.Pix.$length === 0) { */ case 21:
189643
- $r = imageutil.ConvertYCbCrToRGBA(src); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189644
- /* } */ case 22:
189645
- $r = w.drawBufferRGBA($clone(dp, image.Point), src, $clone(sr, image.Rectangle)); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189646
- /* } */ case 18:
188924
+ _r = $clone(js.Global(), js.Value).Call("resizeTo", new sliceType([new $Int(outerWidth), new $Int(newOuterHeight)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
188925
+ _r;
189647
188926
  $s = -1; return;
189648
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, dp, jsSrc, sr, src, w, $s};return $f;
189649
- };
189650
- windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
189651
- windowImpl.ptr.prototype.Fill = function(dr, src, op) {
189652
- var dr, op, src, w;
189653
- w = this;
189654
- if (w.released) {
189655
- return;
189656
- }
189657
- $panic(new $String("Not implemented"));
189658
- };
189659
- windowImpl.prototype.Fill = function(dr, src, op) { return this.$val.Fill(dr, src, op); };
189660
- windowImpl.ptr.prototype.Draw = function(src2dst, src, sr, op, opts) {
189661
- var op, opts, sr, src, src2dst, w;
189662
- w = this;
189663
- if (w.released) {
189664
- return;
189665
- }
189666
- $panic(new $String("Not implemented"));
189667
- };
189668
- windowImpl.prototype.Draw = function(src2dst, src, sr, op, opts) { return this.$val.Draw(src2dst, src, sr, op, opts); };
189669
- windowImpl.ptr.prototype.DrawUniform = function(src2dst, src, sr, op, opts) {
189670
- var op, opts, sr, src, src2dst, w;
189671
- w = this;
189672
- if (w.released) {
189673
- return;
189674
- }
189675
- $panic(new $String("Not implemented"));
189676
- };
189677
- windowImpl.prototype.DrawUniform = function(src2dst, src, sr, op, opts) { return this.$val.DrawUniform(src2dst, src, sr, op, opts); };
189678
- windowImpl.ptr.prototype.Copy = function(dp, src, sr, op, opts) {
189679
- var dp, op, opts, sr, src, w;
189680
- w = this;
189681
- if (w.released) {
189682
- return;
189683
- }
189684
- $panic(new $String("Not implemented"));
188927
+ /* */ } return; } var $f = {$blk: SetWindowHeight, $c: true, $r, _r, innerHeight, newInnerHeight, newOuterHeight, outerHeight, outerWidth, screenHeight, $s};return $f;
189685
188928
  };
189686
- windowImpl.prototype.Copy = function(dp, src, sr, op, opts) { return this.$val.Copy(dp, src, sr, op, opts); };
189687
- windowImpl.ptr.prototype.Scale = function(dr, src, sr, op, opts) {
189688
- var dr, op, opts, sr, src, w;
189689
- w = this;
189690
- if (w.released) {
189691
- return;
189692
- }
189693
- $panic(new $String("Not implemented"));
188929
+ $pkg.SetWindowHeight = SetWindowHeight;
188930
+ GetOrientation = function() {
188931
+ var {$24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred, $r, $c} = $restore(this, {});
188932
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
188933
+ orientation = [orientation];
188934
+ orientation[0] = 0;
188935
+ $deferred.push([(function(orientation) { return function() {
188936
+ if (!($interfaceIsEqual($recover(), $ifaceNil))) {
188937
+ orientation[0] = 0;
188938
+ }
188939
+ }; })(orientation), []]);
188940
+ orientationType = $clone($clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("orientation"), js.Value).Get("type"), js.Value).String();
188941
+ /* */ if (strings.HasPrefix(orientationType, "landscape")) { $s = 1; continue; }
188942
+ /* */ $s = 2; continue;
188943
+ /* if (strings.HasPrefix(orientationType, "landscape")) { */ case 1:
188944
+ orientation[0] = 2;
188945
+ $24r = orientation[0];
188946
+ $s = 3; case 3: return $24r;
188947
+ /* } */ case 2:
188948
+ /* */ if (strings.HasPrefix(orientationType, "portrait")) { $s = 4; continue; }
188949
+ /* */ $s = 5; continue;
188950
+ /* if (strings.HasPrefix(orientationType, "portrait")) { */ case 4:
188951
+ orientation[0] = 2;
188952
+ $24r$1 = orientation[0];
188953
+ $s = 6; case 6: return $24r$1;
188954
+ /* } */ case 5:
188955
+ orientation[0] = 0;
188956
+ $24r$2 = orientation[0];
188957
+ $s = 7; case 7: return $24r$2;
188958
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return orientation[0]; } if($curGoroutine.asleep) { var $f = {$blk: GetOrientation, $c: true, $r, $24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred};return $f; } }
189694
188959
  };
189695
- windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
189696
- main = function(f) {
189697
- var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
189698
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189699
- retErr = $ifaceNil;
189700
- _tuple = newScreenImpl();
189701
- s = _tuple[0];
189702
- err = _tuple[1];
189703
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189704
- retErr = err;
189705
- $s = -1; return retErr;
189706
- }
189707
- $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189708
- retErr = $ifaceNil;
189709
- $s = -1; return retErr;
189710
- /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
188960
+ $pkg.GetOrientation = GetOrientation;
188961
+ NewDomEvents = function() {
188962
+ return new DomEvents.ptr(new $Chan($emptyInterface, 0), $makeSlice(sliceType$1, 0));
189711
188963
  };
189712
- newScreenImpl = function() {
189713
- var s;
189714
- s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
189715
- return [s, $ifaceNil];
188964
+ $pkg.NewDomEvents = NewDomEvents;
188965
+ DomEvents.ptr.prototype.GetEventChan = function() {
188966
+ var d;
188967
+ d = this;
188968
+ return d.eventChan;
189716
188969
  };
189717
- screenImpl.ptr.prototype.NewBuffer = function(size) {
189718
- var buffer, s, size;
189719
- s = this;
189720
- buffer = newBuffer(s, $clone(size, image.Point));
189721
- return [buffer, $ifaceNil];
188970
+ DomEvents.prototype.GetEventChan = function() { return this.$val.GetEventChan(); };
188971
+ DomEvents.ptr.prototype.Release = function() {
188972
+ var {_i, _ref, d, release, $s, $r, $c} = $restore(this, {});
188973
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
188974
+ d = this;
188975
+ _ref = d.releases;
188976
+ _i = 0;
188977
+ /* while (true) { */ case 1:
188978
+ /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
188979
+ release = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
188980
+ $r = release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188981
+ _i++;
188982
+ $s = 1; continue;
188983
+ case 2:
188984
+ $s = -1; return;
188985
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.Release, $c: true, $r, _i, _ref, d, release, $s};return $f;
189722
188986
  };
189723
- screenImpl.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
189724
- screenImpl.ptr.prototype.NewTexture = function(size) {
189725
- var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
188987
+ DomEvents.prototype.Release = function() { return this.$val.Release(); };
188988
+ DomEvents.ptr.prototype.BindEvents = function() {
188989
+ var {d, $s, $r, $c} = $restore(this, {});
189726
188990
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189727
- s = this;
189728
- _r = fmt.Errorf("Texture not implemented", sliceType$2.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189729
- $24r = [$ifaceNil, _r];
189730
- $s = 2; case 2: return $24r;
189731
- /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
188991
+ d = this;
188992
+ $r = d.bindSizeEvents(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188993
+ $go($methodVal(d, "emitSizeEvent"), []);
188994
+ $r = d.bindMouseEvents(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188995
+ $r = d.bindKeyEvents(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188996
+ $r = d.bindFocusEvents(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
188997
+ $s = -1; return;
188998
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.BindEvents, $c: true, $r, d, $s};return $f;
189732
188999
  };
189733
- screenImpl.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
189734
- screenImpl.ptr.prototype.NewWindow = function(opts) {
189735
- var {_r, opts, s, window, $s, $r, $c} = $restore(this, {opts});
189000
+ DomEvents.prototype.BindEvents = function() { return this.$val.BindEvents(); };
189001
+ DomEvents.ptr.prototype.bindSizeEvents = function() {
189002
+ var {_r, d, onResize, $s, $r, $c} = $restore(this, {});
189736
189003
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189737
- s = this;
189738
- _r = newWindow(s, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189739
- window = _r;
189740
- $s = -1; return [window, $ifaceNil];
189741
- /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
189004
+ d = [d];
189005
+ onResize = [onResize];
189006
+ d[0] = this;
189007
+ onResize[0] = $clone(js.FuncOf((function(d, onResize) { return function $b(this$1, args) {
189008
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
189009
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189010
+ $r = d[0].emitSizeEvent(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189011
+ $s = -1; return $ifaceNil;
189012
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
189013
+ }; })(d, onResize)), js.Func);
189014
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189015
+ _r;
189016
+ d[0].releases = $append(d[0].releases, (function(d, onResize) { return function $b() {
189017
+ var {_r$1, $s, $r, $c} = $restore(this, {});
189018
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189019
+ _r$1 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189020
+ _r$1;
189021
+ $clone(onResize[0], js.Func).Release();
189022
+ $s = -1; return;
189023
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, $s};return $f;
189024
+ }; })(d, onResize));
189025
+ $s = -1; return;
189026
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindSizeEvents, $c: true, $r, _r, d, onResize, $s};return $f;
189742
189027
  };
189743
- screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
189744
- windowImpl.ptr.prototype.createAndAttachVertexShader = function(shaderProgram) {
189745
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, shaderProgram, vertShader, w, $s, $r, $c} = $restore(this, {shaderProgram});
189028
+ DomEvents.prototype.bindSizeEvents = function() { return this.$val.bindSizeEvents(); };
189029
+ DomEvents.ptr.prototype.emitSizeEvent = function() {
189030
+ var {_q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s, $r, $c} = $restore(this, {});
189746
189031
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189747
- w = this;
189748
- _r = w.gl.CreateVertexShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189749
- vertShader = _r;
189750
- $r = w.gl.ShaderSource(vertShader, "\nattribute vec2 a_postion;\nattribute vec2 a_texCoord;\nvarying vec2 v_texCoord;\n\nvoid main() {\n\tgl_Position = vec4(a_postion, 0.0, 1.0);\n\tv_texCoord = a_texCoord;\n}\n"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189751
- $r = w.gl.CompileShader(vertShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189752
- _r$1 = w.gl.GetShaderParameterCompileStatus(vertShader); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189753
- /* */ if (!_r$1) { $s = 4; continue; }
189754
- /* */ $s = 5; continue;
189755
- /* if (!_r$1) { */ case 4:
189756
- _r$2 = w.gl.GetShaderInfoLog(vertShader); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189757
- _arg = new $String(_r$2);
189758
- _r$3 = fmt.Errorf("Vertex shader: %s", new sliceType$2([_arg])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189759
- $24r = _r$3;
189760
- $s = 9; case 9: return $24r;
189761
- /* } */ case 5:
189762
- $r = w.gl.AttachShader(shaderProgram, vertShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189763
- $r = w.gl.BindAttribLocation(shaderProgram, 0, "a_position"); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189764
- $r = w.gl.BindAttribLocation(shaderProgram, 1, "a_texCoord"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189765
- $r = w.gl.DeleteShader(vertShader); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189766
- $s = -1; return $ifaceNil;
189767
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndAttachVertexShader, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, shaderProgram, vertShader, w, $s};return $f;
189032
+ d = this;
189033
+ _r = GetOrientation(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189034
+ orientation = _r;
189035
+ pixelsPerPt = 1;
189036
+ width = GetDocWidth();
189037
+ height = GetDocHeight();
189038
+ $r = $send(d.eventChan, (x = new size.Event.ptr(width, height, ((_q = width / ((pixelsPerPt >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((_q$1 = height / ((pixelsPerPt >> 0)), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), pixelsPerPt, orientation), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189039
+ $s = -1; return;
189040
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
189768
189041
  };
189769
- windowImpl.prototype.createAndAttachVertexShader = function(shaderProgram) { return this.$val.createAndAttachVertexShader(shaderProgram); };
189770
- windowImpl.ptr.prototype.ensureYUV420Textures = function(width, height) {
189771
- var {_q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
189042
+ DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
189043
+ DomEvents.ptr.prototype.bindMouseEvents = function() {
189044
+ var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
189772
189045
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189773
- w = this;
189774
- /* */ if (w.programYUV420 === ptrType$3.nil) { $s = 1; continue; }
189775
- /* */ $s = 2; continue;
189776
- /* if (w.programYUV420 === ptrType$3.nil) { */ case 1:
189777
- err = $ifaceNil;
189778
- _r = w.createAndLinkProgramYUV420(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189779
- _tuple = _r;
189780
- w.programYUV420 = _tuple[0];
189781
- err = _tuple[1];
189782
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189783
- $panic(err);
189784
- }
189785
- /* } */ case 2:
189786
- if ((w.width === width) && (w.height === height)) {
189046
+ d = [d];
189047
+ onClick = [onClick];
189048
+ onMove = [onMove];
189049
+ onWheel = [onWheel];
189050
+ d[0] = this;
189051
+ onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
189052
+ var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189053
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189054
+ _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189055
+ _r;
189056
+ $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189057
+ $s = -1; return $ifaceNil;
189058
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
189059
+ }; })(d, onClick, onMove, onWheel)), js.Func);
189060
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189061
+ _r;
189062
+ onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
189063
+ var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189064
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189065
+ _r$1 = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189066
+ _r$1;
189067
+ $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189068
+ $s = -1; return $ifaceNil;
189069
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
189070
+ }; })(d, onClick, onMove, onWheel)), js.Func);
189071
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189072
+ _r$1;
189073
+ _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189074
+ _r$2;
189075
+ onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
189076
+ var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189077
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189078
+ $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189079
+ $s = -1; return $ifaceNil;
189080
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
189081
+ }; })(d, onClick, onMove, onWheel)), js.Func);
189082
+ _r$3 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189083
+ _r$3;
189084
+ d[0].releases = $append(d[0].releases, (function(d, onClick, onMove, onWheel) { return function $b() {
189085
+ var {_r$4, _r$5, _r$6, _r$7, $s, $r, $c} = $restore(this, {});
189086
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189087
+ _r$4 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189088
+ _r$4;
189089
+ _r$5 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189090
+ _r$5;
189091
+ _r$6 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189092
+ _r$6;
189093
+ _r$7 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
189094
+ _r$7;
189095
+ $clone(onMove[0], js.Func).Release();
189096
+ $clone(onClick[0], js.Func).Release();
189097
+ $clone(onWheel[0], js.Func).Release();
189787
189098
  $s = -1; return;
189099
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$4, _r$5, _r$6, _r$7, $s};return $f;
189100
+ }; })(d, onClick, onMove, onWheel));
189101
+ $s = -1; return;
189102
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindMouseEvents, $c: true, $r, _r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s};return $f;
189103
+ };
189104
+ DomEvents.prototype.bindMouseEvents = function() { return this.$val.bindMouseEvents(); };
189105
+ getMouseDirection = function(ev) {
189106
+ var dir, ev;
189107
+ dir = 0;
189108
+ dir = 0;
189109
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mousedown") {
189110
+ dir = 1;
189111
+ }
189112
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mouseup") {
189113
+ dir = 2;
189114
+ }
189115
+ return dir;
189116
+ };
189117
+ getWheelButton = function(ev) {
189118
+ var deltaX, deltaY, ev;
189119
+ deltaY = $clone($clone(ev, js.Value).Get("deltaY"), js.Value).Int();
189120
+ deltaX = $clone($clone(ev, js.Value).Get("deltaX"), js.Value).Int();
189121
+ if (deltaY > 0) {
189122
+ return -2;
189123
+ }
189124
+ if (deltaY < 0) {
189125
+ return -1;
189126
+ }
189127
+ if (deltaX > 0) {
189128
+ return -4;
189129
+ }
189130
+ if (deltaX < 0) {
189131
+ return -3;
189132
+ }
189133
+ return 0;
189134
+ };
189135
+ getMouseButton = function(ev) {
189136
+ var _1, ev;
189137
+ _1 = $clone($clone(ev, js.Value).Get("button"), js.Value).Int();
189138
+ if (_1 === (0)) {
189139
+ return 1;
189140
+ } else if (_1 === (1)) {
189141
+ return 2;
189142
+ } else if (_1 === (2)) {
189143
+ return 3;
189144
+ } else if (_1 === (3)) {
189145
+ return 8;
189146
+ } else if (_1 === (4)) {
189147
+ return 9;
189148
+ } else {
189149
+ return 0;
189788
189150
  }
189789
- w.ensureCanvasSize(width, height);
189790
- _r$1 = w.createTexture(33985, 6409, width, height); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189791
- w.imageTexY = _r$1;
189792
- _r$2 = w.createTexture(33986, 6409, (_q = width / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), (_q$1 = height / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189793
- w.imageTexU = _r$2;
189794
- _r$3 = w.createTexture(33987, 6409, (_q$2 = width / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), (_q$3 = height / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189795
- w.imageTexV = _r$3;
189796
- $r = w.gl.Enable(2929); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189797
- $r = w.gl.Viewport(0, 0, width, height); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189798
- w.width = width;
189799
- w.height = height;
189800
- $r = w.clear(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189801
- $s = -1; return;
189802
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.ensureYUV420Textures, $c: true, $r, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _tuple, err, height, w, width, $s};return $f;
189803
189151
  };
189804
- windowImpl.prototype.ensureYUV420Textures = function(width, height) { return this.$val.ensureYUV420Textures(width, height); };
189805
- windowImpl.ptr.prototype.createAndLinkProgramYUV420 = function() {
189806
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, err, imageULoc, imageVLoc, imageYLoc, shaderProgram, w, $s, $r, $c} = $restore(this, {});
189807
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189808
- w = this;
189809
- _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189810
- shaderProgram = _r;
189811
- _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189812
- err = _r$1;
189813
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189814
- $s = -1; return [ptrType$3.nil, err];
189152
+ getEventModifiers = function(ev) {
189153
+ var ev, mod;
189154
+ mod = 0;
189155
+ if ($clone($clone(ev, js.Value).Get("altKey"), js.Value).Bool()) {
189156
+ mod = (mod | (4)) >>> 0;
189815
189157
  }
189816
- _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_imageY;\nuniform sampler2D u_imageU;\nuniform sampler2D u_imageV;\n\nvoid main(void) {\n\tfloat yChannel = texture2D(u_imageY, v_texCoord).x;\n\tfloat uChannel = texture2D(u_imageU, v_texCoord).x;\n\tfloat vChannel = texture2D(u_imageV, v_texCoord).x;\n\n\t// This does the colorspace conversion from Y'UV to RGB as a matrix\n\t// multiply. It also does the offset of the U and V channels from\n\t// [0,1] to [-.5,.5] as part of the transform.\n\tvec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\n\tmat4 conversion = mat4(1.0, 0.0, 1.402, -0.701,\n\t\t\t\t\t\t\t1.0, -0.344, -0.714, 0.529,\n\t\t\t\t\t\t\t1.0, 1.772, 0.0, -0.886,\n\t\t\t\t\t\t\t0, 0, 0, 0);\n\tvec3 rgb = (channels * conversion).xyz;\n\n\t// This is another Y'UV transform that can be used, but it doesn't\n\t// accurately transform my source image. Your images may well fare\n\t// better with it, however, considering they come from a different\n\t// source, and because I'm not sure that my original was converted\n\t// to Y'UV420p with the same RGB->YUV (or YCrCb) conversion as\n\t// yours.\n\t//\n\t// vec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\t// float3x4 conversion = float3x4(1.0, 0.0, 1.13983, -0.569915,\n\t// 1.0, -0.39465, -0.58060, 0.487625,\n\t// 1.0, 2.03211, 0.0, -1.016055);\n\t// float3 rgb = mul(conversion, channels);\n\tgl_FragColor = vec4(rgb, 1.0);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189817
- err = _r$2;
189818
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189819
- $s = -1; return [ptrType$3.nil, err];
189158
+ if ($clone($clone(ev, js.Value).Get("ctrlKey"), js.Value).Bool()) {
189159
+ mod = (mod | (2)) >>> 0;
189820
189160
  }
189821
- $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189822
- _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189823
- /* */ if (!_r$3) { $s = 5; continue; }
189824
- /* */ $s = 6; continue;
189825
- /* if (!_r$3) { */ case 5:
189826
- _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189827
- _arg = new $String(_r$4);
189828
- _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189829
- $24r = [ptrType$3.nil, _r$5];
189830
- $s = 10; case 10: return $24r;
189831
- /* } */ case 6:
189832
- $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189833
- _r$6 = w.gl.GetUniformLocation(shaderProgram, "u_imageY"); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189834
- imageYLoc = _r$6;
189835
- $r = w.gl.Uniform1i(imageYLoc, 1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189836
- _r$7 = w.gl.GetUniformLocation(shaderProgram, "u_imageU"); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
189837
- imageULoc = _r$7;
189838
- $r = w.gl.Uniform1i(imageULoc, 2); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189839
- _r$8 = w.gl.GetUniformLocation(shaderProgram, "u_imageV"); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
189840
- imageVLoc = _r$8;
189841
- $r = w.gl.Uniform1i(imageVLoc, 3); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189842
- $s = -1; return [shaderProgram, $ifaceNil];
189843
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndLinkProgramYUV420, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, err, imageULoc, imageVLoc, imageYLoc, shaderProgram, w, $s};return $f;
189161
+ if ($clone($clone(ev, js.Value).Get("shiftKey"), js.Value).Bool()) {
189162
+ mod = (mod | (1)) >>> 0;
189163
+ }
189164
+ if ($clone($clone(ev, js.Value).Get("metaKey"), js.Value).Bool()) {
189165
+ mod = (mod | (8)) >>> 0;
189166
+ }
189167
+ return mod;
189844
189168
  };
189845
- windowImpl.prototype.createAndLinkProgramYUV420 = function() { return this.$val.createAndLinkProgramYUV420(); };
189846
- windowImpl.ptr.prototype.drawBufferYUV420 = function(dp, src, sr) {
189847
- var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189169
+ DomEvents.ptr.prototype.bindFocusEvents = function() {
189170
+ var {_r, _r$1, d, onFocus, $s, $r, $c} = $restore(this, {});
189848
189171
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189849
- w = this;
189850
- _arg = $clone(dp, image.Point);
189851
- _r = src.YCbCr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189852
- _r$1 = webgl.TypedArrayOf(_r.Y); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189853
- _arg$1 = $clone(_r$1, js.Value);
189854
- _r$2 = src.YCbCr(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189855
- _r$3 = webgl.TypedArrayOf(_r$2.Cb); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189856
- _arg$2 = $clone(_r$3, js.Value);
189857
- _r$4 = src.YCbCr(); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189858
- _r$5 = webgl.TypedArrayOf(_r$4.Cr); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189859
- _arg$3 = $clone(_r$5, js.Value);
189860
- _arg$4 = $clone(sr, image.Rectangle);
189861
- $r = w.drawBufferYUV420JSArrayBuffers(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189172
+ d = [d];
189173
+ onFocus = [onFocus];
189174
+ d[0] = this;
189175
+ onFocus[0] = $clone(js.FuncOf((function(d, onFocus) { return function $b(this$1, args) {
189176
+ var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189177
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189178
+ $r = $send(d[0].eventChan, (x = new focus.Event.ptr(isFocusIn($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189179
+ $s = -1; return $ifaceNil;
189180
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
189181
+ }; })(d, onFocus)), js.Func);
189182
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189183
+ _r;
189184
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189185
+ _r$1;
189186
+ d[0].releases = $append(d[0].releases, (function(d, onFocus) { return function $b() {
189187
+ var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
189188
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189189
+ _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189190
+ _r$2;
189191
+ _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189192
+ _r$3;
189193
+ $clone(onFocus[0], js.Func).Release();
189194
+ $s = -1; return;
189195
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
189196
+ }; })(d, onFocus));
189862
189197
  $s = -1; return;
189863
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.drawBufferYUV420, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, dp, sr, src, w, $s};return $f;
189198
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindFocusEvents, $c: true, $r, _r, _r$1, d, onFocus, $s};return $f;
189864
189199
  };
189865
- windowImpl.prototype.drawBufferYUV420 = function(dp, src, sr) { return this.$val.drawBufferYUV420(dp, src, sr); };
189866
- windowImpl.ptr.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) {
189867
- var {_q, _q$1, _q$2, _q$3, cb, cr, dp, sr, w, y, $s, $r, $c} = $restore(this, {dp, y, cb, cr, sr});
189868
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189869
- w = this;
189870
- $r = w.ensureYUV420Textures(sr.Max.X, sr.Max.Y); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189871
- $r = w.gl.UseProgram(w.programYUV420); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189872
- $r = w.gl.BindTexture(3553, w.imageTexY); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189873
- $r = w.gl.TexSubImage2D(3553, 0, dp.X, dp.Y, sr.Max.X, sr.Max.Y, 6409, 5121, $clone(y, js.Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189874
- $r = w.gl.BindTexture(3553, w.imageTexU); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189875
- $r = w.gl.TexSubImage2D(3553, 0, dp.X, dp.Y, (_q = sr.Max.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), (_q$1 = sr.Max.Y / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 6409, 5121, $clone(cb, js.Value)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189876
- $r = w.gl.BindTexture(3553, w.imageTexV); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189877
- $r = w.gl.TexSubImage2D(3553, 0, dp.X, dp.Y, (_q$2 = sr.Max.X / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), (_q$3 = sr.Max.Y / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")), 6409, 5121, $clone(cr, js.Value)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189878
- $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189879
- $r = w.gl.DrawElements(4, elementsIndices.$length, 5123, new $Int64(0, 0)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189880
- $s = -1; return;
189881
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.drawBufferYUV420JSArrayBuffers, $c: true, $r, _q, _q$1, _q$2, _q$3, cb, cr, dp, sr, w, y, $s};return $f;
189200
+ DomEvents.prototype.bindFocusEvents = function() { return this.$val.bindFocusEvents(); };
189201
+ isFocusIn = function(ev) {
189202
+ var ev;
189203
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "focus") {
189204
+ return true;
189205
+ }
189206
+ return false;
189882
189207
  };
189883
- windowImpl.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) { return this.$val.drawBufferYUV420JSArrayBuffers(dp, y, cb, cr, sr); };
189884
- windowImpl.ptr.prototype.ensureRGBATextures = function(width, height) {
189885
- var {_r, _r$1, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
189208
+ DomEvents.ptr.prototype.bindKeyEvents = function() {
189209
+ var {_r, _r$1, d, onKey, $s, $r, $c} = $restore(this, {});
189886
189210
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189887
- w = this;
189888
- /* */ if (w.programRGBA === ptrType$3.nil) { $s = 1; continue; }
189889
- /* */ $s = 2; continue;
189890
- /* if (w.programRGBA === ptrType$3.nil) { */ case 1:
189891
- err = $ifaceNil;
189892
- _r = w.createAndLinkProgramRGBA(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189893
- _tuple = _r;
189894
- w.programRGBA = _tuple[0];
189895
- err = _tuple[1];
189896
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189897
- $panic(err);
189898
- }
189899
- /* } */ case 2:
189900
- if ((w.width === width) && (w.height === height)) {
189211
+ d = [d];
189212
+ onKey = [onKey];
189213
+ d[0] = this;
189214
+ onKey[0] = $clone(js.FuncOf((function(d, onKey) { return function $b(this$1, args) {
189215
+ var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
189216
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189217
+ _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189218
+ _r;
189219
+ $r = $send(d[0].eventChan, (x = new key.Event.ptr(getKeyRune($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyCode($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189220
+ $s = -1; return $ifaceNil;
189221
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
189222
+ }; })(d, onKey)), js.Func);
189223
+ _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189224
+ _r;
189225
+ _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189226
+ _r$1;
189227
+ d[0].releases = $append(d[0].releases, (function(d, onKey) { return function $b() {
189228
+ var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
189229
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189230
+ _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189231
+ _r$2;
189232
+ _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189233
+ _r$3;
189234
+ $clone(onKey[0], js.Func).Release();
189901
189235
  $s = -1; return;
189902
- }
189903
- w.ensureCanvasSize(width, height);
189904
- _r$1 = w.createTexture(33984, 6408, width, height); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189905
- w.imageTexRGBA = _r$1;
189906
- $r = w.gl.Enable(2929); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189907
- $r = w.gl.Viewport(0, 0, width, height); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189908
- w.width = width;
189909
- w.height = height;
189910
- $r = w.clear(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189236
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
189237
+ }; })(d, onKey));
189911
189238
  $s = -1; return;
189912
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.ensureRGBATextures, $c: true, $r, _r, _r$1, _tuple, err, height, w, width, $s};return $f;
189239
+ /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindKeyEvents, $c: true, $r, _r, _r$1, d, onKey, $s};return $f;
189913
189240
  };
189914
- windowImpl.prototype.ensureRGBATextures = function(width, height) { return this.$val.ensureRGBATextures(width, height); };
189915
- windowImpl.ptr.prototype.createAndLinkProgramRGBA = function() {
189916
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, err, imageLoc, shaderProgram, w, $s, $r, $c} = $restore(this, {});
189917
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189918
- w = this;
189919
- _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189920
- shaderProgram = _r;
189921
- _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189922
- err = _r$1;
189923
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189924
- $s = -1; return [ptrType$3.nil, err];
189241
+ DomEvents.prototype.bindKeyEvents = function() { return this.$val.bindKeyEvents(); };
189242
+ getKeyRune = function(ev) {
189243
+ var ev, key$1;
189244
+ key$1 = (new sliceType$2($stringToRunes($clone($clone(ev, js.Value).Get("key"), js.Value).String())));
189245
+ if (key$1.$length === 1) {
189246
+ return (0 >= key$1.$length ? ($throwRuntimeError("index out of range"), undefined) : key$1.$array[key$1.$offset + 0]);
189925
189247
  }
189926
- _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\n\nvoid main(void) {\n\tgl_FragColor = texture2D(u_image, v_texCoord);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189927
- err = _r$2;
189928
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189929
- $s = -1; return [ptrType$3.nil, err];
189248
+ return -1;
189249
+ };
189250
+ getKeyDirection = function(ev) {
189251
+ var dir, ev;
189252
+ dir = 0;
189253
+ dir = 0;
189254
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keydown") {
189255
+ dir = 1;
189930
189256
  }
189931
- $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189932
- _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189933
- /* */ if (!_r$3) { $s = 5; continue; }
189934
- /* */ $s = 6; continue;
189935
- /* if (!_r$3) { */ case 5:
189936
- _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189937
- _arg = new $String(_r$4);
189938
- _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189939
- $24r = [ptrType$3.nil, _r$5];
189940
- $s = 10; case 10: return $24r;
189941
- /* } */ case 6:
189942
- $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189943
- _r$6 = w.gl.GetUniformLocation(shaderProgram, "u_image"); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189944
- imageLoc = _r$6;
189945
- $r = w.gl.Uniform1i(imageLoc, 0); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189946
- $s = -1; return [shaderProgram, $ifaceNil];
189947
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndLinkProgramRGBA, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, err, imageLoc, shaderProgram, w, $s};return $f;
189257
+ if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keyup") {
189258
+ dir = 2;
189259
+ }
189260
+ return dir;
189261
+ };
189262
+ getKeyCode = function(ev) {
189263
+ var _entry, _entry$1, _tuple, _tuple$1, code, code$1, domCode, domKey, ev, exists, exists$1;
189264
+ domCode = $clone($clone(ev, js.Value).Get("code"), js.Value).String();
189265
+ _tuple = (_entry = $mapIndex(keyCodesMap,$String.keyFor(domCode)), _entry !== undefined ? [_entry.v, true] : [0, false]);
189266
+ code = _tuple[0];
189267
+ exists = _tuple[1];
189268
+ if (exists) {
189269
+ return code;
189270
+ }
189271
+ domKey = $clone($clone(ev, js.Value).Get("key"), js.Value).String();
189272
+ _tuple$1 = (_entry$1 = $mapIndex(keyCodesByKeyMap,$String.keyFor(domKey)), _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
189273
+ code$1 = _tuple$1[0];
189274
+ exists$1 = _tuple$1[1];
189275
+ if (exists$1) {
189276
+ return code$1;
189277
+ }
189278
+ return 0;
189948
189279
  };
189949
- windowImpl.prototype.createAndLinkProgramRGBA = function() { return this.$val.createAndLinkProgramRGBA(); };
189950
- windowImpl.ptr.prototype.drawBufferRGBA = function(dp, src, sr) {
189951
- var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189280
+ ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "golang.org/x/exp/shiny/driver/util/dom", typ: $funcType([], [], false)}];
189281
+ DomEvents.init("golang.org/x/exp/shiny/driver/util/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
189282
+ $init = function() {
189283
+ $pkg.$init = function() {};
189284
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
189285
+ $r = focus.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189286
+ $r = key.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189287
+ $r = mouse.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189288
+ $r = size.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189289
+ $r = geom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189290
+ $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189291
+ $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189292
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189293
+ keyCodesMap = $makeMap($String.keyFor, [{ k: "KeyA", v: 4 }, { k: "KeyB", v: 5 }, { k: "KeyC", v: 6 }, { k: "KeyD", v: 7 }, { k: "KeyE", v: 8 }, { k: "KeyF", v: 9 }, { k: "KeyG", v: 10 }, { k: "KeyH", v: 11 }, { k: "KeyI", v: 12 }, { k: "KeyJ", v: 13 }, { k: "KeyK", v: 14 }, { k: "KeyL", v: 15 }, { k: "KeyM", v: 16 }, { k: "KeyN", v: 17 }, { k: "KeyO", v: 18 }, { k: "KeyP", v: 19 }, { k: "KeyQ", v: 20 }, { k: "KeyR", v: 21 }, { k: "KeyS", v: 22 }, { k: "KeyT", v: 23 }, { k: "KeyU", v: 24 }, { k: "KeyV", v: 25 }, { k: "KeyW", v: 26 }, { k: "KeyX", v: 27 }, { k: "KeyY", v: 28 }, { k: "KeyZ", v: 29 }, { k: "Digit1", v: 30 }, { k: "Digit2", v: 31 }, { k: "Digit3", v: 32 }, { k: "Digit4", v: 33 }, { k: "Digit5", v: 34 }, { k: "Digit6", v: 35 }, { k: "Digit7", v: 36 }, { k: "Digit8", v: 37 }, { k: "Digit9", v: 38 }, { k: "Digit0", v: 39 }, { k: "Enter", v: 40 }, { k: "Escape", v: 41 }, { k: "Backspace", v: 42 }, { k: "Tab", v: 43 }, { k: "Space", v: 44 }, { k: "Minus", v: 45 }, { k: "Equal", v: 46 }, { k: "BracketLeft", v: 47 }, { k: "BracketRight", v: 48 }, { k: "Backslash", v: 49 }, { k: "Semicolon", v: 51 }, { k: "Quote", v: 52 }, { k: "Backquote", v: 53 }, { k: "Comma", v: 54 }, { k: "Period", v: 55 }, { k: "Slash", v: 56 }, { k: "CapsLock", v: 57 }, { k: "F1", v: 58 }, { k: "F2", v: 59 }, { k: "F3", v: 60 }, { k: "F4", v: 61 }, { k: "F5", v: 62 }, { k: "F6", v: 63 }, { k: "F7", v: 64 }, { k: "F8", v: 65 }, { k: "F9", v: 66 }, { k: "F10", v: 67 }, { k: "F11", v: 68 }, { k: "F12", v: 69 }, { k: "Pause", v: 72 }, { k: "Insert", v: 73 }, { k: "Home", v: 74 }, { k: "PageUp", v: 75 }, { k: "Delete", v: 76 }, { k: "End", v: 77 }, { k: "PageDown", v: 78 }, { k: "ArrowRight", v: 79 }, { k: "ArrowLeft", v: 80 }, { k: "ArrowDown", v: 81 }, { k: "ArrowUp", v: 82 }, { k: "NumLock", v: 83 }, { k: "NumpadDivide", v: 84 }, { k: "NumpadMultiply", v: 85 }, { k: "NumpadSubtract", v: 86 }, { k: "NumpadAdd", v: 87 }, { k: "NumpadEnter", v: 88 }, { k: "Numpad1", v: 89 }, { k: "Numpad2", v: 90 }, { k: "Numpad3", v: 91 }, { k: "Numpad4", v: 92 }, { k: "Numpad5", v: 93 }, { k: "Numpad6", v: 94 }, { k: "Numpad7", v: 95 }, { k: "Numpad8", v: 96 }, { k: "Numpad9", v: 97 }, { k: "Numpad0", v: 98 }, { k: "NumpadDecimal", v: 99 }, { k: "NumpadEqual", v: 103 }, { k: "F13", v: 104 }, { k: "F14", v: 105 }, { k: "F15", v: 106 }, { k: "F16", v: 107 }, { k: "F17", v: 108 }, { k: "F18", v: 109 }, { k: "F19", v: 110 }, { k: "F20", v: 111 }, { k: "F21", v: 112 }, { k: "F22", v: 113 }, { k: "F23", v: 114 }, { k: "F24", v: 115 }, { k: "Help", v: 117 }, { k: "ContextMenu", v: 118 }, { k: "VolumeMute", v: 127 }, { k: "VolumeUp", v: 128 }, { k: "VolumeDown", v: 129 }, { k: "ControlLeft", v: 224 }, { k: "ShiftLeft", v: 225 }, { k: "AltLeft", v: 226 }, { k: "MetaLeft", v: 227 }, { k: "ControlRight", v: 228 }, { k: "ShiftRight", v: 229 }, { k: "AltRight", v: 230 }, { k: "MetaRight", v: 231 }, { k: "PrintScreen", v: 0 }]);
189294
+ keyCodesByKeyMap = $makeMap($String.keyFor, [{ k: "AudioVolumeMute", v: 127 }, { k: "AudioVolumeUp", v: 128 }, { k: "AudioVolumeDown", v: 129 }]);
189295
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189296
+ };
189297
+ $pkg.$init = $init;
189298
+ return $pkg;
189299
+ })();
189300
+ $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
189301
+ var $pkg = {}, $init, screen, image, draw, ConvertYCbCrToRGBA;
189302
+ screen = $packages["golang.org/x/exp/shiny/screen"];
189303
+ image = $packages["image"];
189304
+ draw = $packages["image/draw"];
189305
+ ConvertYCbCrToRGBA = function(b) {
189306
+ var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, b, $s, $r, $c} = $restore(this, {b});
189952
189307
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189953
- w = this;
189954
- $r = w.ensureRGBATextures(sr.Max.X, sr.Max.Y); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189955
- $r = w.gl.UseProgram(w.programRGBA); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189956
- $r = w.gl.BindTexture(3553, w.imageTexRGBA); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189957
- _arg = dp.X;
189958
- _arg$1 = dp.Y;
189959
- _arg$2 = sr.Max.X;
189960
- _arg$3 = sr.Max.Y;
189961
- _r = src.RGBA(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189962
- _r$1 = webgl.TypedArrayOf(_r.Pix); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189963
- _arg$4 = $clone(_r$1, js.Value);
189964
- $r = w.gl.TexSubImage2D(3553, 0, _arg, _arg$1, _arg$2, _arg$3, 6408, 5121, _arg$4); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189965
- $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189966
- $r = w.gl.DrawElements(4, elementsIndices.$length, 5123, new $Int64(0, 0)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189308
+ _r = b.RGBA(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189309
+ _arg = _r;
189310
+ _r$1 = b.YCbCr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189311
+ _r$2 = _r$1.Bounds(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189312
+ _arg$1 = $clone(_r$2, image.Rectangle);
189313
+ _r$3 = b.YCbCr(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189314
+ _arg$2 = _r$3;
189315
+ _r$4 = b.RGBA(); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189316
+ _arg$3 = $clone(_r$4.Rect.Min, image.Point);
189317
+ $r = draw.Draw(_arg, _arg$1, _arg$2, _arg$3, 1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189967
189318
  $s = -1; return;
189968
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.drawBufferRGBA, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, dp, sr, src, w, $s};return $f;
189319
+ /* */ } return; } var $f = {$blk: ConvertYCbCrToRGBA, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, b, $s};return $f;
189969
189320
  };
189970
- windowImpl.prototype.drawBufferRGBA = function(dp, src, sr) { return this.$val.drawBufferRGBA(dp, src, sr); };
189971
- windowImpl.ptr.prototype.createBuffers = function() {
189972
- var {_r, _r$1, _r$2, elementBuffer, emptyFloat, floatLen, vertexArray, vertexBuffer, w, $s, $r, $c} = $restore(this, {});
189973
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189974
- w = this;
189975
- _r = w.gl.CreateVertexArray(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189976
- vertexArray = _r;
189977
- _r$1 = w.gl.CreateBuffer(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189978
- vertexBuffer = _r$1;
189979
- _r$2 = w.gl.CreateBuffer(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189980
- elementBuffer = _r$2;
189981
- $r = w.gl.BindVertexArray(vertexArray); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189982
- $r = w.gl.BindBuffer(34962, vertexBuffer); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189983
- $r = w.gl.BufferData(34962, texCoordsVertices, 35044); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189984
- $r = w.gl.BindBuffer(34963, elementBuffer); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189985
- $r = w.gl.BufferDataUI16(34963, elementsIndices, 35044); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189986
- emptyFloat = 0;
189987
- floatLen = 4;
189988
- $r = w.gl.VertexAttribPointer(0, 2, 5126, false, $imul(4, floatLen), 0); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189989
- $r = w.gl.EnableVertexAttribArray(0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189990
- $r = w.gl.VertexAttribPointer(1, 2, 5126, false, $imul(4, floatLen), $imul(2, floatLen)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189991
- $r = w.gl.EnableVertexAttribArray(1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189992
- $s = -1; return vertexArray;
189993
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createBuffers, $c: true, $r, _r, _r$1, _r$2, elementBuffer, emptyFloat, floatLen, vertexArray, vertexBuffer, w, $s};return $f;
189321
+ $pkg.ConvertYCbCrToRGBA = ConvertYCbCrToRGBA;
189322
+ $init = function() {
189323
+ $pkg.$init = function() {};
189324
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
189325
+ $r = screen.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189326
+ $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189327
+ $r = draw.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189328
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189994
189329
  };
189995
- windowImpl.prototype.createBuffers = function() { return this.$val.createBuffers(); };
189996
- windowImpl.ptr.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) {
189997
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, fragShader, fragmentShaderCode, shaderProgram, w, $s, $r, $c} = $restore(this, {shaderProgram, fragmentShaderCode});
189330
+ $pkg.$init = $init;
189331
+ return $pkg;
189332
+ })();
189333
+ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189334
+ var $pkg = {}, $init, fmt, webgl, types, errscreen, dom, imageutil, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, ArrayBufferSlice, YCbCrJS, BufferImpl, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$3, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, texCoordsVertices, elementsIndices, newWindow, main, newScreenImpl, newBuffer;
189335
+ fmt = $packages["fmt"];
189336
+ webgl = $packages["github.com/nuberu/webgl"];
189337
+ types = $packages["github.com/nuberu/webgl/types"];
189338
+ errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
189339
+ dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
189340
+ imageutil = $packages["golang.org/x/exp/shiny/imageutil"];
189341
+ screen = $packages["golang.org/x/exp/shiny/screen"];
189342
+ f64 = $packages["golang.org/x/image/math/f64"];
189343
+ image = $packages["image"];
189344
+ color = $packages["image/color"];
189345
+ draw = $packages["image/draw"];
189346
+ sync = $packages["sync"];
189347
+ js = $packages["syscall/js"];
189348
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "webgldriver.windowImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(screen_, mutex_, canvasEl_, gl_, programRGBA_, imageTexRGBA_, programYUV420_, imageTexY_, imageTexU_, imageTexV_, vertexArray_, released_, domEvents_, width_, height_) {
189349
+ this.$val = this;
189350
+ if (arguments.length === 0) {
189351
+ this.screen = ptrType.nil;
189352
+ this.mutex = ptrType$1.nil;
189353
+ this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
189354
+ this.gl = ptrType$2.nil;
189355
+ this.programRGBA = ptrType$3.nil;
189356
+ this.imageTexRGBA = ptrType$4.nil;
189357
+ this.programYUV420 = ptrType$3.nil;
189358
+ this.imageTexY = ptrType$4.nil;
189359
+ this.imageTexU = ptrType$4.nil;
189360
+ this.imageTexV = ptrType$4.nil;
189361
+ this.vertexArray = ptrType$5.nil;
189362
+ this.released = false;
189363
+ this.domEvents = ptrType$6.nil;
189364
+ this.width = 0;
189365
+ this.height = 0;
189366
+ return;
189367
+ }
189368
+ this.screen = screen_;
189369
+ this.mutex = mutex_;
189370
+ this.canvasEl = canvasEl_;
189371
+ this.gl = gl_;
189372
+ this.programRGBA = programRGBA_;
189373
+ this.imageTexRGBA = imageTexRGBA_;
189374
+ this.programYUV420 = programYUV420_;
189375
+ this.imageTexY = imageTexY_;
189376
+ this.imageTexU = imageTexU_;
189377
+ this.imageTexV = imageTexV_;
189378
+ this.vertexArray = vertexArray_;
189379
+ this.released = released_;
189380
+ this.domEvents = domEvents_;
189381
+ this.width = width_;
189382
+ this.height = height_;
189383
+ });
189384
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "webgldriver.screenImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(doc_) {
189385
+ this.$val = this;
189386
+ if (arguments.length === 0) {
189387
+ this.doc = new js.Value.ptr(null, false, arrayType.zero());
189388
+ return;
189389
+ }
189390
+ this.doc = doc_;
189391
+ });
189392
+ ArrayBufferSlice = $pkg.ArrayBufferSlice = $newType(0, $kindStruct, "webgldriver.ArrayBufferSlice", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(ArrayBuffer_, Offset_, Length_) {
189393
+ this.$val = this;
189394
+ if (arguments.length === 0) {
189395
+ this.ArrayBuffer = new js.Value.ptr(null, false, arrayType.zero());
189396
+ this.Offset = 0;
189397
+ this.Length = 0;
189398
+ return;
189399
+ }
189400
+ this.ArrayBuffer = ArrayBuffer_;
189401
+ this.Offset = Offset_;
189402
+ this.Length = Length_;
189403
+ });
189404
+ YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "webgldriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(Y_, Cb_, Cr_, YStride_, CStride_, SubsampleRatio_, Rect_, Use_) {
189405
+ this.$val = this;
189406
+ if (arguments.length === 0) {
189407
+ this.Y = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189408
+ this.Cb = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189409
+ this.Cr = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189410
+ this.YStride = 0;
189411
+ this.CStride = 0;
189412
+ this.SubsampleRatio = 0;
189413
+ this.Rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0));
189414
+ this.Use = false;
189415
+ return;
189416
+ }
189417
+ this.Y = Y_;
189418
+ this.Cb = Cb_;
189419
+ this.Cr = Cr_;
189420
+ this.YStride = YStride_;
189421
+ this.CStride = CStride_;
189422
+ this.SubsampleRatio = SubsampleRatio_;
189423
+ this.Rect = Rect_;
189424
+ this.Use = Use_;
189425
+ });
189426
+ BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "webgldriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
189427
+ this.$val = this;
189428
+ if (arguments.length === 0) {
189429
+ this.screen = ptrType.nil;
189430
+ this.size = new image.Point.ptr(0, 0);
189431
+ this.mutex = ptrType$1.nil;
189432
+ this.released = false;
189433
+ this.rgba = new image.RGBA.ptr(sliceType$3.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
189434
+ this.ycbcr = new image.YCbCr.ptr(sliceType$3.nil, sliceType$3.nil, sliceType$3.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
189435
+ this.ycbcrJS = ptrType$8.nil;
189436
+ return;
189437
+ }
189438
+ this.screen = screen_;
189439
+ this.size = size_;
189440
+ this.mutex = mutex_;
189441
+ this.released = released_;
189442
+ this.rgba = rgba_;
189443
+ this.ycbcr = ycbcr_;
189444
+ this.ycbcrJS = ycbcrJS_;
189445
+ });
189446
+ sliceType = $sliceType($Float32);
189447
+ sliceType$1 = $sliceType($Uint16);
189448
+ sliceType$2 = $sliceType($emptyInterface);
189449
+ ptrType = $ptrType(screenImpl);
189450
+ ptrType$1 = $ptrType(sync.Mutex);
189451
+ funcType = $funcType([], [], false);
189452
+ arrayType = $arrayType(funcType, 0);
189453
+ ptrType$2 = $ptrType(webgl.RenderingContext);
189454
+ ptrType$3 = $ptrType(types.Program);
189455
+ ptrType$4 = $ptrType(types.Texture);
189456
+ ptrType$5 = $ptrType(types.VertexArray);
189457
+ ptrType$6 = $ptrType(dom.DomEvents);
189458
+ ptrType$7 = $ptrType(BufferImpl);
189459
+ sliceType$3 = $sliceType($Uint8);
189460
+ ptrType$8 = $ptrType(YCbCrJS);
189461
+ ptrType$9 = $ptrType(screen.DrawOptions);
189462
+ ptrType$10 = $ptrType(windowImpl);
189463
+ ptrType$11 = $ptrType(screen.NewWindowOptions);
189464
+ ptrType$12 = $ptrType(ArrayBufferSlice);
189465
+ ptrType$13 = $ptrType(image.RGBA);
189466
+ ptrType$14 = $ptrType(image.YCbCr);
189467
+ newWindow = function(screen$1, opts) {
189468
+ var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
189998
189469
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189999
- w = this;
190000
- _r = w.gl.CreateFragmentShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190001
- fragShader = _r;
190002
- $r = w.gl.ShaderSource(fragShader, fragmentShaderCode); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190003
- $r = w.gl.CompileShader(fragShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190004
- _r$1 = w.gl.GetShaderParameterCompileStatus(fragShader); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190005
- /* */ if (!_r$1) { $s = 4; continue; }
189470
+ _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType$2([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189471
+ canvasEl = $clone(_r, js.Value);
189472
+ _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType$2([new canvasEl.constructor.elem(canvasEl)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189473
+ _r$1;
189474
+ _r$2 = webgl.FromCanvas($clone(canvasEl, js.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189475
+ _tuple = _r$2;
189476
+ gl = _tuple[0];
189477
+ err = _tuple[1];
189478
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189479
+ $panic(err);
189480
+ }
189481
+ domEvents = dom.NewDomEvents();
189482
+ w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl, js.Value), gl, ptrType$3.nil, ptrType$4.nil, ptrType$3.nil, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, ptrType$5.nil, false, domEvents, 0, 0);
189483
+ /* */ if (!((opts.Width === 0))) { $s = 4; continue; }
190006
189484
  /* */ $s = 5; continue;
190007
- /* if (!_r$1) { */ case 4:
190008
- _r$2 = w.gl.GetShaderInfoLog(fragShader); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190009
- _arg = new $String(_r$2);
190010
- _r$3 = fmt.Errorf("Fragment shader: %s", new sliceType$2([_arg])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190011
- $24r = _r$3;
190012
- $s = 9; case 9: return $24r;
189485
+ /* if (!((opts.Width === 0))) { */ case 4:
189486
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190013
189487
  /* } */ case 5:
190014
- $r = w.gl.AttachShader(shaderProgram, fragShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190015
- $r = w.gl.DeleteShader(fragShader); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190016
- $s = -1; return $ifaceNil;
190017
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndAttachFragmentShader, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, fragShader, fragmentShaderCode, shaderProgram, w, $s};return $f;
189488
+ /* */ if (!((opts.Height === 0))) { $s = 7; continue; }
189489
+ /* */ $s = 8; continue;
189490
+ /* if (!((opts.Height === 0))) { */ case 7:
189491
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189492
+ /* } */ case 8:
189493
+ /* */ if (!(opts.Title === "")) { $s = 10; continue; }
189494
+ /* */ $s = 11; continue;
189495
+ /* if (!(opts.Title === "")) { */ case 10:
189496
+ _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType$2([new $String("title")])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189497
+ _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType$2([new $Int(0)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189498
+ $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189499
+ /* } */ case 11:
189500
+ _r$5 = w.createBuffers(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189501
+ w.vertexArray = _r$5;
189502
+ $r = domEvents.BindEvents(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189503
+ $s = -1; return w;
189504
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, canvasEl, domEvents, err, gl, opts, screen$1, w, $s};return $f;
190018
189505
  };
190019
- windowImpl.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) { return this.$val.createAndAttachFragmentShader(shaderProgram, fragmentShaderCode); };
190020
- windowImpl.ptr.prototype.createTexture = function(unit, format, width, height) {
190021
- var {_r, format, height, imageTex, unit, w, width, $s, $r, $c} = $restore(this, {unit, format, width, height});
190022
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189506
+ windowImpl.ptr.prototype.ensureCanvasSize = function(width, height) {
189507
+ var height, w, width;
190023
189508
  w = this;
190024
- $r = w.gl.ActiveTexture(((unit >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190025
- _r = w.gl.CreateTexture(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190026
- imageTex = _r;
190027
- $r = w.gl.BindTexture(3553, imageTex); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190028
- $r = w.gl.TexParameterWrapS(3553, 10497); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190029
- $r = w.gl.TexParameterWrapT(3553, 10497); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190030
- $r = w.gl.TexParameterMinFilter(3553, 9729); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190031
- $r = w.gl.TexParameterMagFilter(3553, 9729); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190032
- $r = w.gl.TexImage2Db(3553, 0, format, width, height, 0, format, sliceType$3.nil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190033
- $s = -1; return imageTex;
190034
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createTexture, $c: true, $r, _r, format, height, imageTex, unit, w, width, $s};return $f;
189509
+ if (!(($clone($clone(w.canvasEl, js.Value).Get("width"), js.Value).Int() === width))) {
189510
+ $clone(w.canvasEl, js.Value).Set("width", new $Int(width));
189511
+ }
189512
+ if (!(($clone($clone(w.canvasEl, js.Value).Get("height"), js.Value).Int() === height))) {
189513
+ $clone(w.canvasEl, js.Value).Set("height", new $Int(height));
189514
+ }
190035
189515
  };
190036
- windowImpl.prototype.createTexture = function(unit, format, width, height) { return this.$val.createTexture(unit, format, width, height); };
190037
- ArrayBufferSlice.ptr.prototype.slice = function() {
190038
- var {$24r, _r, a, $s, $r, $c} = $restore(this, {});
189516
+ windowImpl.prototype.ensureCanvasSize = function(width, height) { return this.$val.ensureCanvasSize(width, height); };
189517
+ windowImpl.ptr.prototype.clear = function() {
189518
+ var {w, $s, $r, $c} = $restore(this, {});
190039
189519
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190040
- a = this;
190041
- _r = $clone(a.ArrayBuffer, js.Value).Call("subarray", new sliceType$2([new $Int(a.Offset), new $Int(a.Length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190042
- $24r = _r;
190043
- $s = 2; case 2: return $24r;
190044
- /* */ } return; } var $f = {$blk: ArrayBufferSlice.ptr.prototype.slice, $c: true, $r, $24r, _r, a, $s};return $f;
190045
- };
190046
- ArrayBufferSlice.prototype.slice = function() { return this.$val.slice(); };
190047
- newBuffer = function(screen$1, size) {
190048
- var _q, _q$1, _q$2, b, rect, screen$1, size;
190049
- rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
190050
- b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$3, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$3, ($imul(size.X, size.Y))), $makeSlice(sliceType$3, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$3, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$8.nil);
190051
- return b;
189520
+ w = this;
189521
+ $r = w.gl.ClearColor(0, 0, 0, 1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189522
+ $r = w.gl.Clear(16384); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189523
+ $s = -1; return;
189524
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.clear, $c: true, $r, w, $s};return $f;
190052
189525
  };
190053
- BufferImpl.ptr.prototype.Size = function() {
190054
- var b;
190055
- b = this;
190056
- return b.size;
189526
+ windowImpl.prototype.clear = function() { return this.$val.clear(); };
189527
+ windowImpl.ptr.prototype.Release = function() {
189528
+ var {_r, w, $s, $deferred, $r, $c} = $restore(this, {});
189529
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
189530
+ w = this;
189531
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189532
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
189533
+ /* */ if (w.released) { $s = 2; continue; }
189534
+ /* */ $s = 3; continue;
189535
+ /* if (w.released) { */ case 2:
189536
+ $s = 4; case 4: return;
189537
+ /* } */ case 3:
189538
+ _r = $clone(w.canvasEl, js.Value).Call("remove", sliceType$2.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189539
+ _r;
189540
+ $r = w.domEvents.Release(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189541
+ w.released = true;
189542
+ $s = -1; return;
189543
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, _r, w, $s, $deferred};return $f; } }
190057
189544
  };
190058
- BufferImpl.prototype.Size = function() { return this.$val.Size(); };
190059
- BufferImpl.ptr.prototype.Bounds = function() {
190060
- var b;
190061
- b = this;
190062
- return new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(b.size, image.Point));
189545
+ windowImpl.prototype.Release = function() { return this.$val.Release(); };
189546
+ windowImpl.ptr.prototype.Publish = function() {
189547
+ var w;
189548
+ w = this;
189549
+ if (w.released) {
189550
+ return new screen.PublishResult.ptr(false);
189551
+ }
189552
+ return new screen.PublishResult.ptr(false);
190063
189553
  };
190064
- BufferImpl.prototype.Bounds = function() { return this.$val.Bounds(); };
190065
- BufferImpl.ptr.prototype.RGBA = function() {
190066
- var b;
190067
- b = this;
190068
- return b.rgba;
189554
+ windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
189555
+ windowImpl.ptr.prototype.Send = function(event) {
189556
+ var event, w;
189557
+ w = this;
189558
+ if (w.released) {
189559
+ return;
189560
+ }
189561
+ $panic(new $String("Not implemented"));
190069
189562
  };
190070
- BufferImpl.prototype.RGBA = function() { return this.$val.RGBA(); };
190071
- BufferImpl.ptr.prototype.YCbCr = function() {
190072
- var b;
190073
- b = this;
190074
- return b.ycbcr;
189563
+ windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
189564
+ windowImpl.ptr.prototype.SendFirst = function(event) {
189565
+ var event, w;
189566
+ w = this;
189567
+ if (w.released) {
189568
+ return;
189569
+ }
189570
+ $panic(new $String("Not implemented"));
190075
189571
  };
190076
- BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
190077
- BufferImpl.ptr.prototype.YCbCrJS = function() {
190078
- var {_r, b, emptyBuffer, $s, $r, $c} = $restore(this, {});
189572
+ windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
189573
+ windowImpl.ptr.prototype.NextEvent = function() {
189574
+ var {_r, ev, w, $s, $r, $c} = $restore(this, {});
190079
189575
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190080
- b = this;
190081
- /* */ if (b.ycbcrJS === ptrType$8.nil) { $s = 1; continue; }
190082
- /* */ $s = 2; continue;
190083
- /* if (b.ycbcrJS === ptrType$8.nil) { */ case 1:
190084
- _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190085
- emptyBuffer = $clone(_r, js.Value);
190086
- b.ycbcrJS = new YCbCrJS.ptr($clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), b.ycbcr.YStride, b.ycbcr.CStride, 2, $clone(b.ycbcr.Rect, image.Rectangle), false);
190087
- /* } */ case 2:
190088
- $s = -1; return b.ycbcrJS;
190089
- /* */ } return; } var $f = {$blk: BufferImpl.ptr.prototype.YCbCrJS, $c: true, $r, _r, b, emptyBuffer, $s};return $f;
189576
+ w = this;
189577
+ _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189578
+ ev = _r[0];
189579
+ $s = -1; return ev;
189580
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
190090
189581
  };
190091
- BufferImpl.prototype.YCbCrJS = function() { return this.$val.YCbCrJS(); };
190092
- BufferImpl.ptr.prototype.Release = function() {
190093
- var {b, $s, $deferred, $r, $c} = $restore(this, {});
190094
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190095
- b = this;
190096
- $r = b.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190097
- $deferred.push([$methodVal(b.mutex, "Unlock"), []]);
190098
- /* */ if (b.released) { $s = 2; continue; }
190099
- /* */ $s = 3; continue;
190100
- /* if (b.released) { */ case 2:
190101
- $s = 4; case 4: return;
190102
- /* } */ case 3:
190103
- b.released = true;
189582
+ windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
189583
+ windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
189584
+ var {dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189585
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189586
+ w = this;
189587
+ if (w.released) {
189588
+ $s = -1; return;
189589
+ }
189590
+ $r = w.drawBufferRGBA($clone(dp, image.Point), src, $clone(sr, image.Rectangle)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190104
189591
  $s = -1; return;
190105
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
190106
- };
190107
- BufferImpl.prototype.Release = function() { return this.$val.Release(); };
190108
- ptrType$10.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$5], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$4], false)}];
190109
- ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$11], [screen.Window, $error], false)}];
190110
- ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
190111
- ptrType$7.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$13], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$8], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
190112
- windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
190113
- screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190114
- ArrayBufferSlice.init("", [{prop: "ArrayBuffer", name: "ArrayBuffer", embedded: false, exported: true, typ: js.Value, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Length", name: "Length", embedded: false, exported: true, typ: $Int, tag: ""}]);
190115
- YCbCrJS.init("", [{prop: "Y", name: "Y", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cb", name: "Cb", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cr", name: "Cr", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "YStride", name: "YStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "CStride", name: "CStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "SubsampleRatio", name: "SubsampleRatio", embedded: false, exported: true, typ: image.YCbCrSubsampleRatio, tag: ""}, {prop: "Rect", name: "Rect", embedded: false, exported: true, typ: image.Rectangle, tag: ""}, {prop: "Use", name: "Use", embedded: false, exported: true, typ: $Bool, tag: ""}]);
190116
- BufferImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$8, tag: ""}]);
190117
- $init = function() {
190118
- $pkg.$init = function() {};
190119
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190120
- $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190121
- $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190122
- $r = types.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190123
- $r = dom.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190124
- $r = errscreen.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190125
- $r = imageutil.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190126
- $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190127
- $r = f64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190128
- $r = image.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190129
- $r = color.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190130
- $r = draw.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190131
- $r = sync.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190132
- $r = js.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190133
- texCoordsVertices = new sliceType([1, 1, 1, 0, 1, -1, 1, 1, -1, -1, 0, 1, -1, 1, 0, 0]);
190134
- elementsIndices = new sliceType$1([0, 1, 3, 1, 2, 3]);
190135
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189592
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, dp, sr, src, w, $s};return $f;
190136
189593
  };
190137
- $pkg.$init = $init;
190138
- return $pkg;
190139
- })();
190140
- $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function() {
190141
- var $pkg = {}, $init, errs, general, webgldriver, image, js;
190142
- errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190143
- general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190144
- webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
190145
- image = $packages["image"];
190146
- js = $packages["syscall/js"];
190147
- $init = function() {
190148
- $pkg.$init = function() {};
190149
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190150
- $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190151
- $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190152
- $r = webgldriver.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190153
- $r = image.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190154
- $r = js.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190155
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189594
+ windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
189595
+ windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
189596
+ var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, dp, jsSrc, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189597
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189598
+ w = this;
189599
+ if (w.released) {
189600
+ $s = -1; return;
189601
+ }
189602
+ _ref = src;
189603
+ /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
189604
+ /* */ $s = 2; continue;
189605
+ /* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
189606
+ jsSrc = _ref.$val;
189607
+ _r = jsSrc.YCbCrJS(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189608
+ /* */ if (_r.Use) { $s = 3; continue; }
189609
+ /* */ $s = 4; continue;
189610
+ /* if (_r.Use) { */ case 3:
189611
+ _r$1 = jsSrc.YCbCrJS(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189612
+ /* */ if (!((_r$1.SubsampleRatio === 2))) { $s = 6; continue; }
189613
+ /* */ $s = 7; continue;
189614
+ /* if (!((_r$1.SubsampleRatio === 2))) { */ case 6:
189615
+ $panic(new $String("Only image.YCbCrSubsampleRatio420 SubsampleRatio is currently supported"));
189616
+ /* } */ case 7:
189617
+ _arg = $clone(dp, image.Point);
189618
+ _r$2 = jsSrc.YCbCrJS(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189619
+ _r$3 = _r$2.Y.slice(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189620
+ _arg$1 = $clone(_r$3, js.Value);
189621
+ _r$4 = jsSrc.YCbCrJS(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189622
+ _r$5 = _r$4.Cb.slice(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189623
+ _arg$2 = $clone(_r$5, js.Value);
189624
+ _r$6 = jsSrc.YCbCrJS(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189625
+ _r$7 = _r$6.Cr.slice(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
189626
+ _arg$3 = $clone(_r$7, js.Value);
189627
+ _arg$4 = $clone(sr, image.Rectangle);
189628
+ $r = w.drawBufferYUV420JSArrayBuffers(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189629
+ $s = -1; return;
189630
+ /* } */ case 4:
189631
+ /* } */ case 2:
189632
+ _r$8 = src.YCbCr(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
189633
+ /* */ if (_r$8.SubsampleRatio === 2) { $s = 16; continue; }
189634
+ /* */ $s = 17; continue;
189635
+ /* if (_r$8.SubsampleRatio === 2) { */ case 16:
189636
+ $r = w.drawBufferYUV420($clone(dp, image.Point), src, $clone(sr, image.Rectangle)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189637
+ $s = 18; continue;
189638
+ /* } else { */ case 17:
189639
+ _r$9 = src.RGBA(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
189640
+ /* */ if (_r$9.Pix.$length === 0) { $s = 21; continue; }
189641
+ /* */ $s = 22; continue;
189642
+ /* if (_r$9.Pix.$length === 0) { */ case 21:
189643
+ $r = imageutil.ConvertYCbCrToRGBA(src); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189644
+ /* } */ case 22:
189645
+ $r = w.drawBufferRGBA($clone(dp, image.Point), src, $clone(sr, image.Rectangle)); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189646
+ /* } */ case 18:
189647
+ $s = -1; return;
189648
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, dp, jsSrc, sr, src, w, $s};return $f;
190156
189649
  };
190157
- $pkg.$init = $init;
190158
- return $pkg;
190159
- })();
190160
- $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"] = (function() {
190161
- var $pkg = {}, $init, errs, jshelper, general, js;
190162
- errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190163
- jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190164
- general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190165
- js = $packages["syscall/js"];
190166
- $init = function() {
190167
- $pkg.$init = function() {};
190168
- /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190169
- $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190170
- $r = jshelper.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190171
- $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190172
- $r = js.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190173
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189650
+ windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
189651
+ windowImpl.ptr.prototype.Fill = function(dr, src, op) {
189652
+ var dr, op, src, w;
189653
+ w = this;
189654
+ if (w.released) {
189655
+ return;
189656
+ }
189657
+ $panic(new $String("Not implemented"));
190174
189658
  };
190175
- $pkg.$init = $init;
190176
- return $pkg;
190177
- })();
190178
- $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190179
- var $pkg = {}, $init, fmt, dom, errscreen, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, newWindow, main, newScreenImpl, newBuffer;
190180
- fmt = $packages["fmt"];
190181
- dom = $packages["golang.org/x/exp/shiny/driver/internal/dom"];
190182
- errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
190183
- screen = $packages["golang.org/x/exp/shiny/screen"];
190184
- f64 = $packages["golang.org/x/image/math/f64"];
190185
- image = $packages["image"];
190186
- color = $packages["image/color"];
190187
- draw = $packages["image/draw"];
190188
- sync = $packages["sync"];
190189
- js = $packages["syscall/js"];
190190
- windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_) {
190191
- this.$val = this;
190192
- if (arguments.length === 0) {
190193
- this.screen = ptrType.nil;
190194
- this.mutex = ptrType$1.nil;
190195
- this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
190196
- this.ctx2d = new js.Value.ptr(null, false, arrayType.zero());
190197
- this.released = false;
190198
- this.domEvents = ptrType$2.nil;
190199
- this.resizeCallback = new js.Func.ptr(new js.Value.ptr(null, false, arrayType.zero()));
189659
+ windowImpl.prototype.Fill = function(dr, src, op) { return this.$val.Fill(dr, src, op); };
189660
+ windowImpl.ptr.prototype.Draw = function(src2dst, src, sr, op, opts) {
189661
+ var op, opts, sr, src, src2dst, w;
189662
+ w = this;
189663
+ if (w.released) {
190200
189664
  return;
190201
189665
  }
190202
- this.screen = screen_;
190203
- this.mutex = mutex_;
190204
- this.canvasEl = canvasEl_;
190205
- this.ctx2d = ctx2d_;
190206
- this.released = released_;
190207
- this.domEvents = domEvents_;
190208
- this.resizeCallback = resizeCallback_;
190209
- });
190210
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(doc_) {
190211
- this.$val = this;
190212
- if (arguments.length === 0) {
190213
- this.doc = new js.Value.ptr(null, false, arrayType.zero());
189666
+ $panic(new $String("Not implemented"));
189667
+ };
189668
+ windowImpl.prototype.Draw = function(src2dst, src, sr, op, opts) { return this.$val.Draw(src2dst, src, sr, op, opts); };
189669
+ windowImpl.ptr.prototype.DrawUniform = function(src2dst, src, sr, op, opts) {
189670
+ var op, opts, sr, src, src2dst, w;
189671
+ w = this;
189672
+ if (w.released) {
190214
189673
  return;
190215
189674
  }
190216
- this.doc = doc_;
190217
- });
190218
- YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
190219
- this.$val = this;
190220
- if (arguments.length === 0) {
190221
- this.CanvasImageSource = ptrType$5.nil;
189675
+ $panic(new $String("Not implemented"));
189676
+ };
189677
+ windowImpl.prototype.DrawUniform = function(src2dst, src, sr, op, opts) { return this.$val.DrawUniform(src2dst, src, sr, op, opts); };
189678
+ windowImpl.ptr.prototype.Copy = function(dp, src, sr, op, opts) {
189679
+ var dp, op, opts, sr, src, w;
189680
+ w = this;
189681
+ if (w.released) {
190222
189682
  return;
190223
189683
  }
190224
- this.CanvasImageSource = CanvasImageSource_;
190225
- });
190226
- BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "canvasdriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
190227
- this.$val = this;
190228
- if (arguments.length === 0) {
190229
- this.screen = ptrType.nil;
190230
- this.size = new image.Point.ptr(0, 0);
190231
- this.mutex = ptrType$1.nil;
190232
- this.released = false;
190233
- this.rgba = new image.RGBA.ptr(sliceType$1.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
190234
- this.ycbcr = new image.YCbCr.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
190235
- this.ycbcrJS = ptrType$4.nil;
189684
+ $panic(new $String("Not implemented"));
189685
+ };
189686
+ windowImpl.prototype.Copy = function(dp, src, sr, op, opts) { return this.$val.Copy(dp, src, sr, op, opts); };
189687
+ windowImpl.ptr.prototype.Scale = function(dr, src, sr, op, opts) {
189688
+ var dr, op, opts, sr, src, w;
189689
+ w = this;
189690
+ if (w.released) {
190236
189691
  return;
190237
189692
  }
190238
- this.screen = screen_;
190239
- this.size = size_;
190240
- this.mutex = mutex_;
190241
- this.released = released_;
190242
- this.rgba = rgba_;
190243
- this.ycbcr = ycbcr_;
190244
- this.ycbcrJS = ycbcrJS_;
190245
- });
190246
- sliceType = $sliceType($emptyInterface);
190247
- ptrType = $ptrType(screenImpl);
190248
- ptrType$1 = $ptrType(sync.Mutex);
190249
- funcType = $funcType([], [], false);
190250
- arrayType = $arrayType(funcType, 0);
190251
- ptrType$2 = $ptrType(dom.DomEvents);
190252
- ptrType$3 = $ptrType(BufferImpl);
190253
- sliceType$1 = $sliceType($Uint8);
190254
- ptrType$4 = $ptrType(YCbCrJS);
190255
- ptrType$5 = $ptrType(js.Value);
190256
- ptrType$6 = $ptrType(screen.DrawOptions);
190257
- ptrType$7 = $ptrType(windowImpl);
190258
- ptrType$8 = $ptrType(screen.NewWindowOptions);
190259
- ptrType$9 = $ptrType(image.RGBA);
190260
- ptrType$10 = $ptrType(image.YCbCr);
190261
- newWindow = function(screen$1, opts) {
190262
- var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
189693
+ $panic(new $String("Not implemented"));
189694
+ };
189695
+ windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
189696
+ main = function(f) {
189697
+ var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
190263
189698
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190264
- adaptCanvas = [adaptCanvas];
190265
- canvasEl = [canvasEl];
190266
- _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190267
- canvasEl[0] = $clone(_r, js.Value);
190268
- _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType([new canvasEl[0].constructor.elem(canvasEl[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190269
- _r$1;
190270
- adaptCanvas[0] = (function(adaptCanvas, canvasEl) { return function() {
190271
- var height, scale, width;
190272
- scale = dom.GetBrowserZoomRatio();
190273
- width = (((dom.GetScreenWidth()) / scale >> 0));
190274
- if (!(($clone($clone(canvasEl[0], js.Value).Get("width"), js.Value).Int() === width))) {
190275
- $clone(canvasEl[0], js.Value).Set("width", new $Int(width));
190276
- }
190277
- height = (((dom.GetScreenHeight()) / scale >> 0));
190278
- if (!(($clone($clone(canvasEl[0], js.Value).Get("height"), js.Value).Int() === height))) {
190279
- $clone(canvasEl[0], js.Value).Set("height", new $Int(height));
190280
- }
190281
- }; })(adaptCanvas, canvasEl);
190282
- $r = adaptCanvas[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190283
- resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl) { return function $b(this$1, args) {
190284
- var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
190285
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190286
- $r = adaptCanvas[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190287
- $s = -1; return $ifaceNil;
190288
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
190289
- }; })(adaptCanvas, canvasEl)), js.Func);
190290
- _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback.constructor.elem(resizeCallback)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190291
- _r$2;
190292
- /* */ if (!((opts.Width === 0))) { $s = 5; continue; }
190293
- /* */ $s = 6; continue;
190294
- /* if (!((opts.Width === 0))) { */ case 5:
190295
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190296
- /* } */ case 6:
190297
- /* */ if (!((opts.Height === 0))) { $s = 8; continue; }
190298
- /* */ $s = 9; continue;
190299
- /* if (!((opts.Height === 0))) { */ case 8:
190300
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190301
- /* } */ case 9:
190302
- /* */ if (!(opts.Title === "")) { $s = 11; continue; }
190303
- /* */ $s = 12; continue;
190304
- /* if (!(opts.Title === "")) { */ case 11:
190305
- _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType([new $String("title")])); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190306
- _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190307
- $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190308
- /* } */ case 12:
190309
- _r$5 = $clone(canvasEl[0], js.Value).Call("getContext", new sliceType([new $String("2d")])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190310
- ctx2d = $clone(_r$5, js.Value);
190311
- /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 17; continue; }
190312
- /* */ $s = 18; continue;
190313
- /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 17:
190314
- _r$6 = fmt.Errorf("Cannot get 2d context of canvas", sliceType.nil); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190315
- $panic(_r$6);
190316
- /* } */ case 18:
190317
- domEvents = dom.NewDomEvents();
190318
- w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
190319
- $r = domEvents.BindEvents(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190320
- $s = -1; return w;
190321
- /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s};return $f;
189699
+ retErr = $ifaceNil;
189700
+ _tuple = newScreenImpl();
189701
+ s = _tuple[0];
189702
+ err = _tuple[1];
189703
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189704
+ retErr = err;
189705
+ $s = -1; return retErr;
189706
+ }
189707
+ $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189708
+ retErr = $ifaceNil;
189709
+ $s = -1; return retErr;
189710
+ /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
189711
+ };
189712
+ newScreenImpl = function() {
189713
+ var s;
189714
+ s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
189715
+ return [s, $ifaceNil];
189716
+ };
189717
+ screenImpl.ptr.prototype.NewBuffer = function(size) {
189718
+ var buffer, s, size;
189719
+ s = this;
189720
+ buffer = newBuffer(s, $clone(size, image.Point));
189721
+ return [buffer, $ifaceNil];
189722
+ };
189723
+ screenImpl.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
189724
+ screenImpl.ptr.prototype.NewTexture = function(size) {
189725
+ var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
189726
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189727
+ s = this;
189728
+ _r = fmt.Errorf("Texture not implemented", sliceType$2.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189729
+ $24r = [$ifaceNil, _r];
189730
+ $s = 2; case 2: return $24r;
189731
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
190322
189732
  };
190323
- windowImpl.ptr.prototype.Release = function() {
190324
- var {_r, _r$1, w, x, $s, $deferred, $r, $c} = $restore(this, {});
190325
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190326
- w = this;
190327
- $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190328
- $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
190329
- /* */ if (w.released) { $s = 2; continue; }
190330
- /* */ $s = 3; continue;
190331
- /* if (w.released) { */ case 2:
190332
- $s = 4; case 4: return;
190333
- /* } */ case 3:
190334
- _r = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), (x = w.resizeCallback, new x.constructor.elem(x))])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190335
- _r;
190336
- $clone(w.resizeCallback, js.Func).Release();
190337
- _r$1 = $clone(w.canvasEl, js.Value).Call("remove", sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190338
- _r$1;
190339
- $r = w.domEvents.Release(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190340
- w.released = true;
190341
- $s = -1; return;
190342
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, _r, _r$1, w, x, $s, $deferred};return $f; } }
189733
+ screenImpl.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
189734
+ screenImpl.ptr.prototype.NewWindow = function(opts) {
189735
+ var {_r, opts, s, window, $s, $r, $c} = $restore(this, {opts});
189736
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189737
+ s = this;
189738
+ _r = newWindow(s, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189739
+ window = _r;
189740
+ $s = -1; return [window, $ifaceNil];
189741
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
190343
189742
  };
190344
- windowImpl.prototype.Release = function() { return this.$val.Release(); };
190345
- windowImpl.ptr.prototype.Publish = function() {
190346
- var w;
189743
+ screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
189744
+ windowImpl.ptr.prototype.createAndAttachVertexShader = function(shaderProgram) {
189745
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, shaderProgram, vertShader, w, $s, $r, $c} = $restore(this, {shaderProgram});
189746
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190347
189747
  w = this;
190348
- if (w.released) {
190349
- return new screen.PublishResult.ptr(false);
190350
- }
190351
- return new screen.PublishResult.ptr(false);
189748
+ _r = w.gl.CreateVertexShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189749
+ vertShader = _r;
189750
+ $r = w.gl.ShaderSource(vertShader, "\nattribute vec2 a_postion;\nattribute vec2 a_texCoord;\nvarying vec2 v_texCoord;\n\nvoid main() {\n\tgl_Position = vec4(a_postion, 0.0, 1.0);\n\tv_texCoord = a_texCoord;\n}\n"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189751
+ $r = w.gl.CompileShader(vertShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189752
+ _r$1 = w.gl.GetShaderParameterCompileStatus(vertShader); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189753
+ /* */ if (!_r$1) { $s = 4; continue; }
189754
+ /* */ $s = 5; continue;
189755
+ /* if (!_r$1) { */ case 4:
189756
+ _r$2 = w.gl.GetShaderInfoLog(vertShader); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189757
+ _arg = new $String(_r$2);
189758
+ _r$3 = fmt.Errorf("Vertex shader: %s", new sliceType$2([_arg])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189759
+ $24r = _r$3;
189760
+ $s = 9; case 9: return $24r;
189761
+ /* } */ case 5:
189762
+ $r = w.gl.AttachShader(shaderProgram, vertShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189763
+ $r = w.gl.BindAttribLocation(shaderProgram, 0, "a_position"); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189764
+ $r = w.gl.BindAttribLocation(shaderProgram, 1, "a_texCoord"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189765
+ $r = w.gl.DeleteShader(vertShader); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189766
+ $s = -1; return $ifaceNil;
189767
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndAttachVertexShader, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, shaderProgram, vertShader, w, $s};return $f;
190352
189768
  };
190353
- windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
190354
- windowImpl.ptr.prototype.Send = function(event) {
190355
- var event, w;
189769
+ windowImpl.prototype.createAndAttachVertexShader = function(shaderProgram) { return this.$val.createAndAttachVertexShader(shaderProgram); };
189770
+ windowImpl.ptr.prototype.ensureYUV420Textures = function(width, height) {
189771
+ var {_q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
189772
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190356
189773
  w = this;
190357
- if (w.released) {
190358
- return;
189774
+ /* */ if (w.programYUV420 === ptrType$3.nil) { $s = 1; continue; }
189775
+ /* */ $s = 2; continue;
189776
+ /* if (w.programYUV420 === ptrType$3.nil) { */ case 1:
189777
+ err = $ifaceNil;
189778
+ _r = w.createAndLinkProgramYUV420(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189779
+ _tuple = _r;
189780
+ w.programYUV420 = _tuple[0];
189781
+ err = _tuple[1];
189782
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189783
+ $panic(err);
189784
+ }
189785
+ /* } */ case 2:
189786
+ if ((w.width === width) && (w.height === height)) {
189787
+ $s = -1; return;
190359
189788
  }
190360
- $panic(new $String("Not implemented"));
189789
+ w.ensureCanvasSize(width, height);
189790
+ _r$1 = w.createTexture(33985, 6409, width, height); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189791
+ w.imageTexY = _r$1;
189792
+ _r$2 = w.createTexture(33986, 6409, (_q = width / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), (_q$1 = height / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189793
+ w.imageTexU = _r$2;
189794
+ _r$3 = w.createTexture(33987, 6409, (_q$2 = width / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), (_q$3 = height / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189795
+ w.imageTexV = _r$3;
189796
+ $r = w.gl.Enable(2929); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189797
+ $r = w.gl.Viewport(0, 0, width, height); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189798
+ w.width = width;
189799
+ w.height = height;
189800
+ $r = w.clear(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189801
+ $s = -1; return;
189802
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.ensureYUV420Textures, $c: true, $r, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _tuple, err, height, w, width, $s};return $f;
190361
189803
  };
190362
- windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
190363
- windowImpl.ptr.prototype.SendFirst = function(event) {
190364
- var event, w;
189804
+ windowImpl.prototype.ensureYUV420Textures = function(width, height) { return this.$val.ensureYUV420Textures(width, height); };
189805
+ windowImpl.ptr.prototype.createAndLinkProgramYUV420 = function() {
189806
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, err, imageULoc, imageVLoc, imageYLoc, shaderProgram, w, $s, $r, $c} = $restore(this, {});
189807
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190365
189808
  w = this;
190366
- if (w.released) {
190367
- return;
189809
+ _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189810
+ shaderProgram = _r;
189811
+ _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189812
+ err = _r$1;
189813
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189814
+ $s = -1; return [ptrType$3.nil, err];
190368
189815
  }
190369
- $panic(new $String("Not implemented"));
189816
+ _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_imageY;\nuniform sampler2D u_imageU;\nuniform sampler2D u_imageV;\n\nvoid main(void) {\n\tfloat yChannel = texture2D(u_imageY, v_texCoord).x;\n\tfloat uChannel = texture2D(u_imageU, v_texCoord).x;\n\tfloat vChannel = texture2D(u_imageV, v_texCoord).x;\n\n\t// This does the colorspace conversion from Y'UV to RGB as a matrix\n\t// multiply. It also does the offset of the U and V channels from\n\t// [0,1] to [-.5,.5] as part of the transform.\n\tvec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\n\tmat4 conversion = mat4(1.0, 0.0, 1.402, -0.701,\n\t\t\t\t\t\t\t1.0, -0.344, -0.714, 0.529,\n\t\t\t\t\t\t\t1.0, 1.772, 0.0, -0.886,\n\t\t\t\t\t\t\t0, 0, 0, 0);\n\tvec3 rgb = (channels * conversion).xyz;\n\n\t// This is another Y'UV transform that can be used, but it doesn't\n\t// accurately transform my source image. Your images may well fare\n\t// better with it, however, considering they come from a different\n\t// source, and because I'm not sure that my original was converted\n\t// to Y'UV420p with the same RGB->YUV (or YCrCb) conversion as\n\t// yours.\n\t//\n\t// vec4 channels = vec4(yChannel, uChannel, vChannel, 1.0);\n\t// float3x4 conversion = float3x4(1.0, 0.0, 1.13983, -0.569915,\n\t// 1.0, -0.39465, -0.58060, 0.487625,\n\t// 1.0, 2.03211, 0.0, -1.016055);\n\t// float3 rgb = mul(conversion, channels);\n\tgl_FragColor = vec4(rgb, 1.0);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189817
+ err = _r$2;
189818
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189819
+ $s = -1; return [ptrType$3.nil, err];
189820
+ }
189821
+ $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189822
+ _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189823
+ /* */ if (!_r$3) { $s = 5; continue; }
189824
+ /* */ $s = 6; continue;
189825
+ /* if (!_r$3) { */ case 5:
189826
+ _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189827
+ _arg = new $String(_r$4);
189828
+ _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189829
+ $24r = [ptrType$3.nil, _r$5];
189830
+ $s = 10; case 10: return $24r;
189831
+ /* } */ case 6:
189832
+ $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189833
+ _r$6 = w.gl.GetUniformLocation(shaderProgram, "u_imageY"); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189834
+ imageYLoc = _r$6;
189835
+ $r = w.gl.Uniform1i(imageYLoc, 1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189836
+ _r$7 = w.gl.GetUniformLocation(shaderProgram, "u_imageU"); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
189837
+ imageULoc = _r$7;
189838
+ $r = w.gl.Uniform1i(imageULoc, 2); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189839
+ _r$8 = w.gl.GetUniformLocation(shaderProgram, "u_imageV"); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
189840
+ imageVLoc = _r$8;
189841
+ $r = w.gl.Uniform1i(imageVLoc, 3); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189842
+ $s = -1; return [shaderProgram, $ifaceNil];
189843
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndLinkProgramYUV420, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, err, imageULoc, imageVLoc, imageYLoc, shaderProgram, w, $s};return $f;
190370
189844
  };
190371
- windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
190372
- windowImpl.ptr.prototype.NextEvent = function() {
190373
- var {_r, ev, w, $s, $r, $c} = $restore(this, {});
189845
+ windowImpl.prototype.createAndLinkProgramYUV420 = function() { return this.$val.createAndLinkProgramYUV420(); };
189846
+ windowImpl.ptr.prototype.drawBufferYUV420 = function(dp, src, sr) {
189847
+ var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
190374
189848
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190375
189849
  w = this;
190376
- _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190377
- ev = _r[0];
190378
- $s = -1; return ev;
190379
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
189850
+ _arg = $clone(dp, image.Point);
189851
+ _r = src.YCbCr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189852
+ _r$1 = webgl.TypedArrayOf(_r.Y); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189853
+ _arg$1 = $clone(_r$1, js.Value);
189854
+ _r$2 = src.YCbCr(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189855
+ _r$3 = webgl.TypedArrayOf(_r$2.Cb); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189856
+ _arg$2 = $clone(_r$3, js.Value);
189857
+ _r$4 = src.YCbCr(); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189858
+ _r$5 = webgl.TypedArrayOf(_r$4.Cr); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189859
+ _arg$3 = $clone(_r$5, js.Value);
189860
+ _arg$4 = $clone(sr, image.Rectangle);
189861
+ $r = w.drawBufferYUV420JSArrayBuffers(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189862
+ $s = -1; return;
189863
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.drawBufferYUV420, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, dp, sr, src, w, $s};return $f;
190380
189864
  };
190381
- windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
190382
- windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
190383
- var {_r, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189865
+ windowImpl.prototype.drawBufferYUV420 = function(dp, src, sr) { return this.$val.drawBufferYUV420(dp, src, sr); };
189866
+ windowImpl.ptr.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) {
189867
+ var {_q, _q$1, _q$2, _q$3, cb, cr, dp, sr, w, y, $s, $r, $c} = $restore(this, {dp, y, cb, cr, sr});
190384
189868
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190385
189869
  w = this;
190386
- if (w.released) {
190387
- $s = -1; return;
190388
- }
190389
- _r = fmt.Errorf("Not implemented, use UploadYCbCr instead", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190390
- $panic(_r);
189870
+ $r = w.ensureYUV420Textures(sr.Max.X, sr.Max.Y); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189871
+ $r = w.gl.UseProgram(w.programYUV420); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189872
+ $r = w.gl.BindTexture(3553, w.imageTexY); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189873
+ $r = w.gl.TexSubImage2D(3553, 0, dp.X, dp.Y, sr.Max.X, sr.Max.Y, 6409, 5121, $clone(y, js.Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189874
+ $r = w.gl.BindTexture(3553, w.imageTexU); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189875
+ $r = w.gl.TexSubImage2D(3553, 0, dp.X, dp.Y, (_q = sr.Max.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), (_q$1 = sr.Max.Y / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 6409, 5121, $clone(cb, js.Value)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189876
+ $r = w.gl.BindTexture(3553, w.imageTexV); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189877
+ $r = w.gl.TexSubImage2D(3553, 0, dp.X, dp.Y, (_q$2 = sr.Max.X / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), (_q$3 = sr.Max.Y / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")), 6409, 5121, $clone(cr, js.Value)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189878
+ $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189879
+ $r = w.gl.DrawElements(4, elementsIndices.$length, 5123, new $Int64(0, 0)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190391
189880
  $s = -1; return;
190392
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, _r, dp, sr, src, w, $s};return $f;
189881
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.drawBufferYUV420JSArrayBuffers, $c: true, $r, _q, _q$1, _q$2, _q$3, cb, cr, dp, sr, w, y, $s};return $f;
190393
189882
  };
190394
- windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
190395
- windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
190396
- var {_r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s, $r, $c} = $restore(this, {dp, src, sr});
189883
+ windowImpl.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) { return this.$val.drawBufferYUV420JSArrayBuffers(dp, y, cb, cr, sr); };
189884
+ windowImpl.ptr.prototype.ensureRGBATextures = function(width, height) {
189885
+ var {_r, _r$1, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
190397
189886
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190398
189887
  w = this;
190399
- if (w.released) {
190400
- $s = -1; return;
190401
- }
190402
- _ref = src;
190403
- /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 1; continue; }
189888
+ /* */ if (w.programRGBA === ptrType$3.nil) { $s = 1; continue; }
190404
189889
  /* */ $s = 2; continue;
190405
- /* if ($assertType(_ref, ptrType$3, true)[1]) { */ case 1:
190406
- jsSrc = _ref.$val;
190407
- _r = $clone(w.ctx2d, js.Value).Call("drawImage", new sliceType([(x = jsSrc.YCbCrJS().CanvasImageSource, new x.constructor.elem(x)), new $Int(0), new $Int(0)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190408
- _r;
190409
- $s = -1; return;
189890
+ /* if (w.programRGBA === ptrType$3.nil) { */ case 1:
189891
+ err = $ifaceNil;
189892
+ _r = w.createAndLinkProgramRGBA(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189893
+ _tuple = _r;
189894
+ w.programRGBA = _tuple[0];
189895
+ err = _tuple[1];
189896
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189897
+ $panic(err);
189898
+ }
190410
189899
  /* } */ case 2:
190411
- _r$1 = fmt.Errorf("Not implemented, use canvasdriver.BufferImpl instead", sliceType.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190412
- $panic(_r$1);
189900
+ if ((w.width === width) && (w.height === height)) {
189901
+ $s = -1; return;
189902
+ }
189903
+ w.ensureCanvasSize(width, height);
189904
+ _r$1 = w.createTexture(33984, 6408, width, height); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189905
+ w.imageTexRGBA = _r$1;
189906
+ $r = w.gl.Enable(2929); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189907
+ $r = w.gl.Viewport(0, 0, width, height); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189908
+ w.width = width;
189909
+ w.height = height;
189910
+ $r = w.clear(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190413
189911
  $s = -1; return;
190414
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s};return $f;
189912
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.ensureRGBATextures, $c: true, $r, _r, _r$1, _tuple, err, height, w, width, $s};return $f;
190415
189913
  };
190416
- windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
190417
- windowImpl.ptr.prototype.Fill = function(dr, src, op) {
190418
- var dr, op, src, w;
189914
+ windowImpl.prototype.ensureRGBATextures = function(width, height) { return this.$val.ensureRGBATextures(width, height); };
189915
+ windowImpl.ptr.prototype.createAndLinkProgramRGBA = function() {
189916
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, err, imageLoc, shaderProgram, w, $s, $r, $c} = $restore(this, {});
189917
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190419
189918
  w = this;
190420
- if (w.released) {
190421
- return;
189919
+ _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189920
+ shaderProgram = _r;
189921
+ _r$1 = w.createAndAttachVertexShader(shaderProgram); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189922
+ err = _r$1;
189923
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189924
+ $s = -1; return [ptrType$3.nil, err];
190422
189925
  }
190423
- $panic(new $String("Not implemented"));
190424
- };
190425
- windowImpl.prototype.Fill = function(dr, src, op) { return this.$val.Fill(dr, src, op); };
190426
- windowImpl.ptr.prototype.Draw = function(src2dst, src, sr, op, opts) {
190427
- var op, opts, sr, src, src2dst, w;
190428
- w = this;
190429
- if (w.released) {
190430
- return;
189926
+ _r$2 = w.createAndAttachFragmentShader(shaderProgram, "\nprecision mediump float;\nvarying vec2 v_texCoord;\nuniform sampler2D u_image;\n\nvoid main(void) {\n\tgl_FragColor = texture2D(u_image, v_texCoord);\n}\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189927
+ err = _r$2;
189928
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
189929
+ $s = -1; return [ptrType$3.nil, err];
190431
189930
  }
190432
- $panic(new $String("Not implemented"));
189931
+ $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189932
+ _r$3 = w.gl.GetProgramParameterLinkStatus(shaderProgram); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
189933
+ /* */ if (!_r$3) { $s = 5; continue; }
189934
+ /* */ $s = 6; continue;
189935
+ /* if (!_r$3) { */ case 5:
189936
+ _r$4 = w.gl.GetProgramInfoLog(shaderProgram); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
189937
+ _arg = new $String(_r$4);
189938
+ _r$5 = fmt.Errorf("Program: %s", new sliceType$2([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
189939
+ $24r = [ptrType$3.nil, _r$5];
189940
+ $s = 10; case 10: return $24r;
189941
+ /* } */ case 6:
189942
+ $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189943
+ _r$6 = w.gl.GetUniformLocation(shaderProgram, "u_image"); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
189944
+ imageLoc = _r$6;
189945
+ $r = w.gl.Uniform1i(imageLoc, 0); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189946
+ $s = -1; return [shaderProgram, $ifaceNil];
189947
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndLinkProgramRGBA, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, err, imageLoc, shaderProgram, w, $s};return $f;
190433
189948
  };
190434
- windowImpl.prototype.Draw = function(src2dst, src, sr, op, opts) { return this.$val.Draw(src2dst, src, sr, op, opts); };
190435
- windowImpl.ptr.prototype.DrawUniform = function(src2dst, src, sr, op, opts) {
190436
- var op, opts, sr, src, src2dst, w;
189949
+ windowImpl.prototype.createAndLinkProgramRGBA = function() { return this.$val.createAndLinkProgramRGBA(); };
189950
+ windowImpl.ptr.prototype.drawBufferRGBA = function(dp, src, sr) {
189951
+ var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189952
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190437
189953
  w = this;
190438
- if (w.released) {
190439
- return;
190440
- }
190441
- $panic(new $String("Not implemented"));
189954
+ $r = w.ensureRGBATextures(sr.Max.X, sr.Max.Y); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189955
+ $r = w.gl.UseProgram(w.programRGBA); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189956
+ $r = w.gl.BindTexture(3553, w.imageTexRGBA); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189957
+ _arg = dp.X;
189958
+ _arg$1 = dp.Y;
189959
+ _arg$2 = sr.Max.X;
189960
+ _arg$3 = sr.Max.Y;
189961
+ _r = src.RGBA(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189962
+ _r$1 = webgl.TypedArrayOf(_r.Pix); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189963
+ _arg$4 = $clone(_r$1, js.Value);
189964
+ $r = w.gl.TexSubImage2D(3553, 0, _arg, _arg$1, _arg$2, _arg$3, 6408, 5121, _arg$4); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189965
+ $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189966
+ $r = w.gl.DrawElements(4, elementsIndices.$length, 5123, new $Int64(0, 0)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189967
+ $s = -1; return;
189968
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.drawBufferRGBA, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, dp, sr, src, w, $s};return $f;
190442
189969
  };
190443
- windowImpl.prototype.DrawUniform = function(src2dst, src, sr, op, opts) { return this.$val.DrawUniform(src2dst, src, sr, op, opts); };
190444
- windowImpl.ptr.prototype.Copy = function(dp, src, sr, op, opts) {
190445
- var dp, op, opts, sr, src, w;
189970
+ windowImpl.prototype.drawBufferRGBA = function(dp, src, sr) { return this.$val.drawBufferRGBA(dp, src, sr); };
189971
+ windowImpl.ptr.prototype.createBuffers = function() {
189972
+ var {_r, _r$1, _r$2, elementBuffer, emptyFloat, floatLen, vertexArray, vertexBuffer, w, $s, $r, $c} = $restore(this, {});
189973
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190446
189974
  w = this;
190447
- if (w.released) {
190448
- return;
190449
- }
190450
- $panic(new $String("Not implemented"));
189975
+ _r = w.gl.CreateVertexArray(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189976
+ vertexArray = _r;
189977
+ _r$1 = w.gl.CreateBuffer(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
189978
+ vertexBuffer = _r$1;
189979
+ _r$2 = w.gl.CreateBuffer(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
189980
+ elementBuffer = _r$2;
189981
+ $r = w.gl.BindVertexArray(vertexArray); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189982
+ $r = w.gl.BindBuffer(34962, vertexBuffer); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189983
+ $r = w.gl.BufferData(34962, texCoordsVertices, 35044); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189984
+ $r = w.gl.BindBuffer(34963, elementBuffer); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189985
+ $r = w.gl.BufferDataUI16(34963, elementsIndices, 35044); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189986
+ emptyFloat = 0;
189987
+ floatLen = 4;
189988
+ $r = w.gl.VertexAttribPointer(0, 2, 5126, false, $imul(4, floatLen), 0); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189989
+ $r = w.gl.EnableVertexAttribArray(0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189990
+ $r = w.gl.VertexAttribPointer(1, 2, 5126, false, $imul(4, floatLen), $imul(2, floatLen)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189991
+ $r = w.gl.EnableVertexAttribArray(1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189992
+ $s = -1; return vertexArray;
189993
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createBuffers, $c: true, $r, _r, _r$1, _r$2, elementBuffer, emptyFloat, floatLen, vertexArray, vertexBuffer, w, $s};return $f;
190451
189994
  };
190452
- windowImpl.prototype.Copy = function(dp, src, sr, op, opts) { return this.$val.Copy(dp, src, sr, op, opts); };
190453
- windowImpl.ptr.prototype.Scale = function(dr, src, sr, op, opts) {
190454
- var dr, op, opts, sr, src, w;
189995
+ windowImpl.prototype.createBuffers = function() { return this.$val.createBuffers(); };
189996
+ windowImpl.ptr.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) {
189997
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, fragShader, fragmentShaderCode, shaderProgram, w, $s, $r, $c} = $restore(this, {shaderProgram, fragmentShaderCode});
189998
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190455
189999
  w = this;
190456
- if (w.released) {
190457
- return;
190458
- }
190459
- $panic(new $String("Not implemented"));
190000
+ _r = w.gl.CreateFragmentShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190001
+ fragShader = _r;
190002
+ $r = w.gl.ShaderSource(fragShader, fragmentShaderCode); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190003
+ $r = w.gl.CompileShader(fragShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190004
+ _r$1 = w.gl.GetShaderParameterCompileStatus(fragShader); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190005
+ /* */ if (!_r$1) { $s = 4; continue; }
190006
+ /* */ $s = 5; continue;
190007
+ /* if (!_r$1) { */ case 4:
190008
+ _r$2 = w.gl.GetShaderInfoLog(fragShader); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190009
+ _arg = new $String(_r$2);
190010
+ _r$3 = fmt.Errorf("Fragment shader: %s", new sliceType$2([_arg])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190011
+ $24r = _r$3;
190012
+ $s = 9; case 9: return $24r;
190013
+ /* } */ case 5:
190014
+ $r = w.gl.AttachShader(shaderProgram, fragShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190015
+ $r = w.gl.DeleteShader(fragShader); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190016
+ $s = -1; return $ifaceNil;
190017
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createAndAttachFragmentShader, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, fragShader, fragmentShaderCode, shaderProgram, w, $s};return $f;
190460
190018
  };
190461
- windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
190462
- main = function(f) {
190463
- var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
190019
+ windowImpl.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) { return this.$val.createAndAttachFragmentShader(shaderProgram, fragmentShaderCode); };
190020
+ windowImpl.ptr.prototype.createTexture = function(unit, format, width, height) {
190021
+ var {_r, format, height, imageTex, unit, w, width, $s, $r, $c} = $restore(this, {unit, format, width, height});
190464
190022
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190465
- retErr = $ifaceNil;
190466
- _tuple = newScreenImpl();
190467
- s = _tuple[0];
190468
- err = _tuple[1];
190469
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190470
- retErr = err;
190471
- $s = -1; return retErr;
190472
- }
190473
- $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190474
- retErr = $ifaceNil;
190475
- $s = -1; return retErr;
190476
- /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
190477
- };
190478
- newScreenImpl = function() {
190479
- var s;
190480
- s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
190481
- return [s, $ifaceNil];
190482
- };
190483
- screenImpl.ptr.prototype.NewBuffer = function(size) {
190484
- var buffer, s, size;
190485
- s = this;
190486
- buffer = newBuffer(s, $clone(size, image.Point));
190487
- return [buffer, $ifaceNil];
190023
+ w = this;
190024
+ $r = w.gl.ActiveTexture(((unit >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190025
+ _r = w.gl.CreateTexture(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190026
+ imageTex = _r;
190027
+ $r = w.gl.BindTexture(3553, imageTex); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190028
+ $r = w.gl.TexParameterWrapS(3553, 10497); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190029
+ $r = w.gl.TexParameterWrapT(3553, 10497); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190030
+ $r = w.gl.TexParameterMinFilter(3553, 9729); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190031
+ $r = w.gl.TexParameterMagFilter(3553, 9729); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190032
+ $r = w.gl.TexImage2Db(3553, 0, format, width, height, 0, format, sliceType$3.nil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190033
+ $s = -1; return imageTex;
190034
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createTexture, $c: true, $r, _r, format, height, imageTex, unit, w, width, $s};return $f;
190488
190035
  };
190489
- screenImpl.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
190490
- screenImpl.ptr.prototype.NewTexture = function(size) {
190491
- var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
190036
+ windowImpl.prototype.createTexture = function(unit, format, width, height) { return this.$val.createTexture(unit, format, width, height); };
190037
+ ArrayBufferSlice.ptr.prototype.slice = function() {
190038
+ var {$24r, _r, a, $s, $r, $c} = $restore(this, {});
190492
190039
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190493
- s = this;
190494
- _r = fmt.Errorf("Texture not implemented", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190495
- $24r = [$ifaceNil, _r];
190040
+ a = this;
190041
+ _r = $clone(a.ArrayBuffer, js.Value).Call("subarray", new sliceType$2([new $Int(a.Offset), new $Int(a.Length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190042
+ $24r = _r;
190496
190043
  $s = 2; case 2: return $24r;
190497
- /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
190498
- };
190499
- screenImpl.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
190500
- screenImpl.ptr.prototype.NewWindow = function(opts) {
190501
- var {_r, opts, s, window, $s, $r, $c} = $restore(this, {opts});
190502
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190503
- s = this;
190504
- _r = newWindow(s, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190505
- window = _r;
190506
- $s = -1; return [window, $ifaceNil];
190507
- /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
190044
+ /* */ } return; } var $f = {$blk: ArrayBufferSlice.ptr.prototype.slice, $c: true, $r, $24r, _r, a, $s};return $f;
190508
190045
  };
190509
- screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
190046
+ ArrayBufferSlice.prototype.slice = function() { return this.$val.slice(); };
190510
190047
  newBuffer = function(screen$1, size) {
190511
190048
  var _q, _q$1, _q$2, b, rect, screen$1, size;
190512
190049
  rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
190513
- b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$1, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$1, ($imul(size.X, size.Y))), $makeSlice(sliceType$1, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$1, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$4.nil);
190050
+ b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$3, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$3, ($imul(size.X, size.Y))), $makeSlice(sliceType$3, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$3, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$8.nil);
190514
190051
  return b;
190515
190052
  };
190516
190053
  BufferImpl.ptr.prototype.Size = function() {
@@ -190538,12 +190075,18 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190538
190075
  };
190539
190076
  BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
190540
190077
  BufferImpl.ptr.prototype.YCbCrJS = function() {
190541
- var b;
190078
+ var {_r, b, emptyBuffer, $s, $r, $c} = $restore(this, {});
190079
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190542
190080
  b = this;
190543
- if (b.ycbcrJS === ptrType$4.nil) {
190544
- b.ycbcrJS = new YCbCrJS.ptr(ptrType$5.nil);
190545
- }
190546
- return b.ycbcrJS;
190081
+ /* */ if (b.ycbcrJS === ptrType$8.nil) { $s = 1; continue; }
190082
+ /* */ $s = 2; continue;
190083
+ /* if (b.ycbcrJS === ptrType$8.nil) { */ case 1:
190084
+ _r = $clone($clone(js.Global(), js.Value).Get("ArrayBuffer"), js.Value).New(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190085
+ emptyBuffer = $clone(_r, js.Value);
190086
+ b.ycbcrJS = new YCbCrJS.ptr($clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), $clone(new ArrayBufferSlice.ptr($clone(emptyBuffer, js.Value), 0, 0), ArrayBufferSlice), b.ycbcr.YStride, b.ycbcr.CStride, 2, $clone(b.ycbcr.Rect, image.Rectangle), false);
190087
+ /* } */ case 2:
190088
+ $s = -1; return b.ycbcrJS;
190089
+ /* */ } return; } var $f = {$blk: BufferImpl.ptr.prototype.YCbCrJS, $c: true, $r, _r, b, emptyBuffer, $s};return $f;
190547
190090
  };
190548
190091
  BufferImpl.prototype.YCbCrJS = function() { return this.$val.YCbCrJS(); };
190549
190092
  BufferImpl.ptr.prototype.Release = function() {
@@ -190562,478 +190105,529 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190562
190105
  /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
190563
190106
  };
190564
190107
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
190565
- ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}];
190566
- ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$8], [screen.Window, $error], false)}];
190567
- ptrType$3.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$4], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
190568
- windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}]);
190569
- screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190570
- YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$5, tag: ""}]);
190571
- BufferImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$4, tag: ""}]);
190108
+ ptrType$10.methods = [{prop: "ensureCanvasSize", name: "ensureCanvasSize", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "clear", name: "clear", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$9], [], false)}, {prop: "createAndAttachVertexShader", name: "createAndAttachVertexShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3], [$error], false)}, {prop: "ensureYUV420Textures", name: "ensureYUV420Textures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramYUV420", name: "createAndLinkProgramYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferYUV420", name: "drawBufferYUV420", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "drawBufferYUV420JSArrayBuffers", name: "drawBufferYUV420JSArrayBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, js.Value, js.Value, js.Value, image.Rectangle], [], false)}, {prop: "ensureRGBATextures", name: "ensureRGBATextures", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([$Int, $Int], [], false)}, {prop: "createAndLinkProgramRGBA", name: "createAndLinkProgramRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "drawBufferRGBA", name: "drawBufferRGBA", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "createBuffers", name: "createBuffers", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [ptrType$5], false)}, {prop: "createAndAttachFragmentShader", name: "createAndAttachFragmentShader", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([ptrType$3, $String], [$error], false)}, {prop: "createTexture", name: "createTexture", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([types.GLEnum, types.GLEnum, $Int, $Int], [ptrType$4], false)}];
190109
+ ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$11], [screen.Window, $error], false)}];
190110
+ ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
190111
+ ptrType$7.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$13], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$14], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$8], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
190112
+ windowImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "gl", name: "gl", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "programRGBA", name: "programRGBA", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexRGBA", name: "imageTexRGBA", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "programYUV420", name: "programYUV420", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "imageTexY", name: "imageTexY", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexU", name: "imageTexU", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "imageTexV", name: "imageTexV", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "vertexArray", name: "vertexArray", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: $Int, tag: ""}]);
190113
+ screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190114
+ ArrayBufferSlice.init("", [{prop: "ArrayBuffer", name: "ArrayBuffer", embedded: false, exported: true, typ: js.Value, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Length", name: "Length", embedded: false, exported: true, typ: $Int, tag: ""}]);
190115
+ YCbCrJS.init("", [{prop: "Y", name: "Y", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cb", name: "Cb", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "Cr", name: "Cr", embedded: false, exported: true, typ: ArrayBufferSlice, tag: ""}, {prop: "YStride", name: "YStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "CStride", name: "CStride", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "SubsampleRatio", name: "SubsampleRatio", embedded: false, exported: true, typ: image.YCbCrSubsampleRatio, tag: ""}, {prop: "Rect", name: "Rect", embedded: false, exported: true, typ: image.Rectangle, tag: ""}, {prop: "Use", name: "Use", embedded: false, exported: true, typ: $Bool, tag: ""}]);
190116
+ BufferImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$8, tag: ""}]);
190572
190117
  $init = function() {
190573
190118
  $pkg.$init = function() {};
190574
190119
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190575
190120
  $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190576
- $r = dom.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190577
- $r = errscreen.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190578
- $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190579
- $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190580
- $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190581
- $r = color.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190582
- $r = draw.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190583
- $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190584
- $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190121
+ $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190122
+ $r = types.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190123
+ $r = errscreen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190124
+ $r = dom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190125
+ $r = imageutil.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190126
+ $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190127
+ $r = f64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190128
+ $r = image.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190129
+ $r = color.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190130
+ $r = draw.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190131
+ $r = sync.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190132
+ $r = js.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190133
+ texCoordsVertices = new sliceType([1, 1, 1, 0, 1, -1, 1, 1, -1, -1, 0, 1, -1, 1, 0, 0]);
190134
+ elementsIndices = new sliceType$1([0, 1, 3, 1, 2, 3]);
190585
190135
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190586
190136
  };
190587
190137
  $pkg.$init = $init;
190588
190138
  return $pkg;
190589
190139
  })();
190590
- $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190591
- var $pkg = {}, $init, hex, webgl, errs, jshelper, general, canvasdriver, image, js;
190592
- hex = $packages["encoding/hex"];
190593
- webgl = $packages["github.com/nuberu/webgl"];
190140
+ $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"] = (function() {
190141
+ var $pkg = {}, $init, errs, general, webgldriver, image, js;
190594
190142
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190595
- jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190596
190143
  general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190597
- canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
190144
+ webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
190598
190145
  image = $packages["image"];
190599
190146
  js = $packages["syscall/js"];
190600
190147
  $init = function() {
190601
190148
  $pkg.$init = function() {};
190602
190149
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190603
- $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190604
- $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190605
- $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190606
- $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190607
- $r = general.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190608
- $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190609
- $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190610
- $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190150
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190151
+ $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190152
+ $r = webgldriver.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190153
+ $r = image.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190154
+ $r = js.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190611
190155
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190612
190156
  };
190613
190157
  $pkg.$init = $init;
190614
190158
  return $pkg;
190615
190159
  })();
190616
- $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
190617
- var $pkg = {}, $init, errs, general, h264_decoder, nacldecoder, webcodecs, js;
190160
+ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"] = (function() {
190161
+ var $pkg = {}, $init, errs, jshelper, general, js;
190618
190162
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190619
- general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190620
- h264_decoder = $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"];
190621
- nacldecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"];
190622
- webcodecs = $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"];
190163
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190164
+ general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190623
190165
  js = $packages["syscall/js"];
190624
190166
  $init = function() {
190625
190167
  $pkg.$init = function() {};
190626
190168
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190627
190169
  $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190628
- $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190629
- $r = h264_decoder.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190630
- $r = nacldecoder.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190631
- $r = webcodecs.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190632
- $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190170
+ $r = jshelper.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190171
+ $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190172
+ $r = js.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190633
190173
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190634
190174
  };
190635
190175
  $pkg.$init = $init;
190636
190176
  return $pkg;
190637
190177
  })();
190638
- $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom"] = (function() {
190639
- var $pkg = {}, $init, focus, key, mouse, size, geom, math, strings, js, DomEvents, sliceType, funcType, sliceType$1, sliceType$2, chanType, ptrType, keyCodesMap, keyCodesByKeyMap, GetDocWidth, GetDocHeight, GetOrientation, NewDomEvents, getMouseDirection, getWheelButton, getMouseButton, getEventModifiers, isFocusIn, getKeyRune, getKeyDirection, getKeyCode;
190640
- focus = $packages["golang.org/x/mobile/event/focus"];
190641
- key = $packages["golang.org/x/mobile/event/key"];
190642
- mouse = $packages["golang.org/x/mobile/event/mouse"];
190643
- size = $packages["golang.org/x/mobile/event/size"];
190644
- geom = $packages["golang.org/x/mobile/geom"];
190645
- math = $packages["math"];
190646
- strings = $packages["strings"];
190178
+ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190179
+ var $pkg = {}, $init, fmt, errscreen, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, YCbCrJS, BufferImpl, sliceType, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, newWindow, main, newScreenImpl, newBuffer;
190180
+ fmt = $packages["fmt"];
190181
+ errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
190182
+ dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
190183
+ screen = $packages["golang.org/x/exp/shiny/screen"];
190184
+ f64 = $packages["golang.org/x/image/math/f64"];
190185
+ image = $packages["image"];
190186
+ color = $packages["image/color"];
190187
+ draw = $packages["image/draw"];
190188
+ sync = $packages["sync"];
190647
190189
  js = $packages["syscall/js"];
190648
- DomEvents = $pkg.DomEvents = $newType(0, $kindStruct, "dom.DomEvents", true, "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom", true, function(eventChan_, releases_) {
190190
+ windowImpl = $pkg.windowImpl = $newType(0, $kindStruct, "canvasdriver.windowImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(screen_, mutex_, canvasEl_, ctx2d_, released_, domEvents_, resizeCallback_) {
190649
190191
  this.$val = this;
190650
190192
  if (arguments.length === 0) {
190651
- this.eventChan = $chanNil;
190652
- this.releases = sliceType$1.nil;
190193
+ this.screen = ptrType.nil;
190194
+ this.mutex = ptrType$1.nil;
190195
+ this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
190196
+ this.ctx2d = new js.Value.ptr(null, false, arrayType.zero());
190197
+ this.released = false;
190198
+ this.domEvents = ptrType$2.nil;
190199
+ this.resizeCallback = new js.Func.ptr(new js.Value.ptr(null, false, arrayType.zero()));
190653
190200
  return;
190654
190201
  }
190655
- this.eventChan = eventChan_;
190656
- this.releases = releases_;
190202
+ this.screen = screen_;
190203
+ this.mutex = mutex_;
190204
+ this.canvasEl = canvasEl_;
190205
+ this.ctx2d = ctx2d_;
190206
+ this.released = released_;
190207
+ this.domEvents = domEvents_;
190208
+ this.resizeCallback = resizeCallback_;
190209
+ });
190210
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(doc_) {
190211
+ this.$val = this;
190212
+ if (arguments.length === 0) {
190213
+ this.doc = new js.Value.ptr(null, false, arrayType.zero());
190214
+ return;
190215
+ }
190216
+ this.doc = doc_;
190217
+ });
190218
+ YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
190219
+ this.$val = this;
190220
+ if (arguments.length === 0) {
190221
+ this.CanvasImageSource = ptrType$5.nil;
190222
+ return;
190223
+ }
190224
+ this.CanvasImageSource = CanvasImageSource_;
190225
+ });
190226
+ BufferImpl = $pkg.BufferImpl = $newType(0, $kindStruct, "canvasdriver.BufferImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(screen_, size_, mutex_, released_, rgba_, ycbcr_, ycbcrJS_) {
190227
+ this.$val = this;
190228
+ if (arguments.length === 0) {
190229
+ this.screen = ptrType.nil;
190230
+ this.size = new image.Point.ptr(0, 0);
190231
+ this.mutex = ptrType$1.nil;
190232
+ this.released = false;
190233
+ this.rgba = new image.RGBA.ptr(sliceType$1.nil, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
190234
+ this.ycbcr = new image.YCbCr.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0, new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0)));
190235
+ this.ycbcrJS = ptrType$4.nil;
190236
+ return;
190237
+ }
190238
+ this.screen = screen_;
190239
+ this.size = size_;
190240
+ this.mutex = mutex_;
190241
+ this.released = released_;
190242
+ this.rgba = rgba_;
190243
+ this.ycbcr = ycbcr_;
190244
+ this.ycbcrJS = ycbcrJS_;
190657
190245
  });
190658
190246
  sliceType = $sliceType($emptyInterface);
190247
+ ptrType = $ptrType(screenImpl);
190248
+ ptrType$1 = $ptrType(sync.Mutex);
190659
190249
  funcType = $funcType([], [], false);
190660
- sliceType$1 = $sliceType(funcType);
190661
- sliceType$2 = $sliceType($Int32);
190662
- chanType = $chanType($emptyInterface, false, false);
190663
- ptrType = $ptrType(DomEvents);
190664
- GetDocWidth = function() {
190665
- return $clone($clone(js.Global(), js.Value).Get("innerWidth"), js.Value).Int();
190666
- };
190667
- $pkg.GetDocWidth = GetDocWidth;
190668
- GetDocHeight = function() {
190669
- return $clone($clone(js.Global(), js.Value).Get("innerHeight"), js.Value).Int();
190670
- };
190671
- $pkg.GetDocHeight = GetDocHeight;
190672
- GetOrientation = function() {
190673
- var {$24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred, $r, $c} = $restore(this, {});
190674
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190675
- orientation = [orientation];
190676
- orientation[0] = 0;
190677
- $deferred.push([(function(orientation) { return function() {
190678
- if (!($interfaceIsEqual($recover(), $ifaceNil))) {
190679
- orientation[0] = 0;
190680
- }
190681
- }; })(orientation), []]);
190682
- orientationType = $clone($clone($clone($clone(js.Global(), js.Value).Get("screen"), js.Value).Get("orientation"), js.Value).Get("type"), js.Value).String();
190683
- /* */ if (strings.HasPrefix(orientationType, "landscape")) { $s = 1; continue; }
190684
- /* */ $s = 2; continue;
190685
- /* if (strings.HasPrefix(orientationType, "landscape")) { */ case 1:
190686
- orientation[0] = 2;
190687
- $24r = orientation[0];
190688
- $s = 3; case 3: return $24r;
190689
- /* } */ case 2:
190690
- /* */ if (strings.HasPrefix(orientationType, "portrait")) { $s = 4; continue; }
190691
- /* */ $s = 5; continue;
190692
- /* if (strings.HasPrefix(orientationType, "portrait")) { */ case 4:
190693
- orientation[0] = 2;
190694
- $24r$1 = orientation[0];
190695
- $s = 6; case 6: return $24r$1;
190696
- /* } */ case 5:
190697
- orientation[0] = 0;
190698
- $24r$2 = orientation[0];
190699
- $s = 7; case 7: return $24r$2;
190700
- /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return orientation[0]; } if($curGoroutine.asleep) { var $f = {$blk: GetOrientation, $c: true, $r, $24r, $24r$1, $24r$2, orientation, orientationType, $s, $deferred};return $f; } }
190701
- };
190702
- $pkg.GetOrientation = GetOrientation;
190703
- NewDomEvents = function() {
190704
- return new DomEvents.ptr(new $Chan($emptyInterface, 0), $makeSlice(sliceType$1, 0));
190705
- };
190706
- $pkg.NewDomEvents = NewDomEvents;
190707
- DomEvents.ptr.prototype.GetEventChan = function() {
190708
- var d;
190709
- d = this;
190710
- return d.eventChan;
190711
- };
190712
- DomEvents.prototype.GetEventChan = function() { return this.$val.GetEventChan(); };
190713
- DomEvents.ptr.prototype.Release = function() {
190714
- var {_i, _ref, d, release, $s, $r, $c} = $restore(this, {});
190715
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190716
- d = this;
190717
- _ref = d.releases;
190718
- _i = 0;
190719
- /* while (true) { */ case 1:
190720
- /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
190721
- release = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
190722
- $r = release(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190723
- _i++;
190724
- $s = 1; continue;
190725
- case 2:
190726
- $s = -1; return;
190727
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.Release, $c: true, $r, _i, _ref, d, release, $s};return $f;
190728
- };
190729
- DomEvents.prototype.Release = function() { return this.$val.Release(); };
190730
- DomEvents.ptr.prototype.BindEvents = function() {
190731
- var {d, $s, $r, $c} = $restore(this, {});
190732
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190733
- d = this;
190734
- $r = d.bindSizeEvents(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190735
- $go($methodVal(d, "emitSizeEvent"), []);
190736
- $r = d.bindMouseEvents(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190737
- $r = d.bindKeyEvents(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190738
- $r = d.bindFocusEvents(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190739
- $s = -1; return;
190740
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.BindEvents, $c: true, $r, d, $s};return $f;
190741
- };
190742
- DomEvents.prototype.BindEvents = function() { return this.$val.BindEvents(); };
190743
- DomEvents.ptr.prototype.bindSizeEvents = function() {
190744
- var {_r, d, onResize, $s, $r, $c} = $restore(this, {});
190250
+ arrayType = $arrayType(funcType, 0);
190251
+ ptrType$2 = $ptrType(dom.DomEvents);
190252
+ ptrType$3 = $ptrType(BufferImpl);
190253
+ sliceType$1 = $sliceType($Uint8);
190254
+ ptrType$4 = $ptrType(YCbCrJS);
190255
+ ptrType$5 = $ptrType(js.Value);
190256
+ ptrType$6 = $ptrType(screen.DrawOptions);
190257
+ ptrType$7 = $ptrType(windowImpl);
190258
+ ptrType$8 = $ptrType(screen.NewWindowOptions);
190259
+ ptrType$9 = $ptrType(image.RGBA);
190260
+ ptrType$10 = $ptrType(image.YCbCr);
190261
+ newWindow = function(screen$1, opts) {
190262
+ var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s, $r, $c} = $restore(this, {screen$1, opts});
190745
190263
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190746
- d = [d];
190747
- onResize = [onResize];
190748
- d[0] = this;
190749
- onResize[0] = $clone(js.FuncOf((function(d, onResize) { return function $b(this$1, args) {
190264
+ adaptCanvas = [adaptCanvas];
190265
+ canvasEl = [canvasEl];
190266
+ _r = $clone(screen$1.doc, js.Value).Call("createElement", new sliceType([new $String("canvas")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190267
+ canvasEl[0] = $clone(_r, js.Value);
190268
+ _r$1 = $clone($clone(screen$1.doc, js.Value).Get("body"), js.Value).Call("appendChild", new sliceType([new canvasEl[0].constructor.elem(canvasEl[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190269
+ _r$1;
190270
+ adaptCanvas[0] = (function(adaptCanvas, canvasEl) { return function() {
190271
+ var height, scale, width;
190272
+ scale = dom.GetBrowserZoomRatio();
190273
+ width = (((dom.GetScreenWidth()) / scale >> 0));
190274
+ if (!(($clone($clone(canvasEl[0], js.Value).Get("width"), js.Value).Int() === width))) {
190275
+ $clone(canvasEl[0], js.Value).Set("width", new $Int(width));
190276
+ }
190277
+ height = (((dom.GetScreenHeight()) / scale >> 0));
190278
+ if (!(($clone($clone(canvasEl[0], js.Value).Get("height"), js.Value).Int() === height))) {
190279
+ $clone(canvasEl[0], js.Value).Set("height", new $Int(height));
190280
+ }
190281
+ }; })(adaptCanvas, canvasEl);
190282
+ $r = adaptCanvas[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190283
+ resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl) { return function $b(this$1, args) {
190750
190284
  var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
190751
190285
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190752
- $r = d[0].emitSizeEvent(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190286
+ $r = adaptCanvas[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190753
190287
  $s = -1; return $ifaceNil;
190754
190288
  /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
190755
- }; })(d, onResize)), js.Func);
190756
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190757
- _r;
190758
- d[0].releases = $append(d[0].releases, (function(d, onResize) { return function $b() {
190759
- var {_r$1, $s, $r, $c} = $restore(this, {});
190760
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190761
- _r$1 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), new onResize[0].constructor.elem(onResize[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190762
- _r$1;
190763
- $clone(onResize[0], js.Func).Release();
190764
- $s = -1; return;
190765
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, $s};return $f;
190766
- }; })(d, onResize));
190767
- $s = -1; return;
190768
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindSizeEvents, $c: true, $r, _r, d, onResize, $s};return $f;
190769
- };
190770
- DomEvents.prototype.bindSizeEvents = function() { return this.$val.bindSizeEvents(); };
190771
- DomEvents.ptr.prototype.emitSizeEvent = function() {
190772
- var {_q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s, $r, $c} = $restore(this, {});
190773
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190774
- d = this;
190775
- _r = GetOrientation(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190776
- orientation = _r;
190777
- pixelsPerPt = 1;
190778
- width = GetDocWidth();
190779
- height = GetDocHeight();
190780
- $r = $send(d.eventChan, (x = new size.Event.ptr(width, height, ((_q = width / ((pixelsPerPt >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((_q$1 = height / ((pixelsPerPt >> 0)), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), pixelsPerPt, orientation), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190781
- $s = -1; return;
190782
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.emitSizeEvent, $c: true, $r, _q, _q$1, _r, d, height, orientation, pixelsPerPt, width, x, $s};return $f;
190289
+ }; })(adaptCanvas, canvasEl)), js.Func);
190290
+ _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("resize"), new resizeCallback.constructor.elem(resizeCallback)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190291
+ _r$2;
190292
+ /* */ if (!((opts.Width === 0))) { $s = 5; continue; }
190293
+ /* */ $s = 6; continue;
190294
+ /* if (!((opts.Width === 0))) { */ case 5:
190295
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190296
+ /* } */ case 6:
190297
+ /* */ if (!((opts.Height === 0))) { $s = 8; continue; }
190298
+ /* */ $s = 9; continue;
190299
+ /* if (!((opts.Height === 0))) { */ case 8:
190300
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190301
+ /* } */ case 9:
190302
+ /* */ if (!(opts.Title === "")) { $s = 11; continue; }
190303
+ /* */ $s = 12; continue;
190304
+ /* if (!(opts.Title === "")) { */ case 11:
190305
+ _r$3 = $clone($clone(screen$1.doc, js.Value).Get("head"), js.Value).Call("getElementsByTagName", new sliceType([new $String("title")])); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190306
+ _r$4 = $clone(_r$3, js.Value).Call("item", new sliceType([new $Int(0)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190307
+ $r = $clone(_r$4, js.Value).Set("innerHTML", new $String(opts.Title)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190308
+ /* } */ case 12:
190309
+ _r$5 = $clone(canvasEl[0], js.Value).Call("getContext", new sliceType([new $String("2d")])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190310
+ ctx2d = $clone(_r$5, js.Value);
190311
+ /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 17; continue; }
190312
+ /* */ $s = 18; continue;
190313
+ /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 17:
190314
+ _r$6 = fmt.Errorf("Cannot get 2d context of canvas", sliceType.nil); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190315
+ $panic(_r$6);
190316
+ /* } */ case 18:
190317
+ domEvents = dom.NewDomEvents();
190318
+ w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
190319
+ $r = domEvents.BindEvents(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190320
+ $s = -1; return w;
190321
+ /* */ } return; } var $f = {$blk: newWindow, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, adaptCanvas, canvasEl, ctx2d, domEvents, opts, resizeCallback, screen$1, w, $s};return $f;
190783
190322
  };
190784
- DomEvents.prototype.emitSizeEvent = function() { return this.$val.emitSizeEvent(); };
190785
- DomEvents.ptr.prototype.bindMouseEvents = function() {
190786
- var {_r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s, $r, $c} = $restore(this, {});
190787
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190788
- d = [d];
190789
- onClick = [onClick];
190790
- onMove = [onMove];
190791
- onWheel = [onWheel];
190792
- d[0] = this;
190793
- onMove[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
190794
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
190795
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190796
- _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190797
- _r;
190798
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), 0, getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 0), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190799
- $s = -1; return $ifaceNil;
190800
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
190801
- }; })(d, onClick, onMove, onWheel)), js.Func);
190802
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190323
+ windowImpl.ptr.prototype.Release = function() {
190324
+ var {_r, _r$1, w, x, $s, $deferred, $r, $c} = $restore(this, {});
190325
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190326
+ w = this;
190327
+ $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190328
+ $deferred.push([$methodVal(w.mutex, "Unlock"), []]);
190329
+ /* */ if (w.released) { $s = 2; continue; }
190330
+ /* */ $s = 3; continue;
190331
+ /* if (w.released) { */ case 2:
190332
+ $s = 4; case 4: return;
190333
+ /* } */ case 3:
190334
+ _r = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("resize"), (x = w.resizeCallback, new x.constructor.elem(x))])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190803
190335
  _r;
190804
- onClick[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
190805
- var {_r$1, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
190806
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190807
- _r$1 = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190808
- _r$1;
190809
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getMouseButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getMouseDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190810
- $s = -1; return $ifaceNil;
190811
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$1, args, this$1, x, $s};return $f;
190812
- }; })(d, onClick, onMove, onWheel)), js.Func);
190813
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190336
+ $clone(w.resizeCallback, js.Func).Release();
190337
+ _r$1 = $clone(w.canvasEl, js.Value).Call("remove", sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190814
190338
  _r$1;
190815
- _r$2 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190816
- _r$2;
190817
- onWheel[0] = $clone(js.FuncOf((function(d, onClick, onMove, onWheel) { return function $b(this$1, args) {
190818
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
190819
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190820
- $r = $send(d[0].eventChan, (x = new mouse.Event.ptr(($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetX"), js.Value).Float())), ($fround($clone($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Get("offsetY"), js.Value).Float())), getWheelButton($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), 3), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190821
- $s = -1; return $ifaceNil;
190822
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
190823
- }; })(d, onClick, onMove, onWheel)), js.Func);
190824
- _r$3 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190825
- _r$3;
190826
- d[0].releases = $append(d[0].releases, (function(d, onClick, onMove, onWheel) { return function $b() {
190827
- var {_r$4, _r$5, _r$6, _r$7, $s, $r, $c} = $restore(this, {});
190828
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190829
- _r$4 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousemove"), new onMove[0].constructor.elem(onMove[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
190830
- _r$4;
190831
- _r$5 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mousedown"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
190832
- _r$5;
190833
- _r$6 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("mouseup"), new onClick[0].constructor.elem(onClick[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
190834
- _r$6;
190835
- _r$7 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("wheel"), new onWheel[0].constructor.elem(onWheel[0])])); /* */ $s = 4; case 4: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
190836
- _r$7;
190837
- $clone(onMove[0], js.Func).Release();
190838
- $clone(onClick[0], js.Func).Release();
190839
- $clone(onWheel[0], js.Func).Release();
190840
- $s = -1; return;
190841
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$4, _r$5, _r$6, _r$7, $s};return $f;
190842
- }; })(d, onClick, onMove, onWheel));
190339
+ $r = w.domEvents.Release(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190340
+ w.released = true;
190843
190341
  $s = -1; return;
190844
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindMouseEvents, $c: true, $r, _r, _r$1, _r$2, _r$3, d, onClick, onMove, onWheel, $s};return $f;
190342
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: windowImpl.ptr.prototype.Release, $c: true, $r, _r, _r$1, w, x, $s, $deferred};return $f; } }
190845
190343
  };
190846
- DomEvents.prototype.bindMouseEvents = function() { return this.$val.bindMouseEvents(); };
190847
- getMouseDirection = function(ev) {
190848
- var dir, ev;
190849
- dir = 0;
190850
- dir = 0;
190851
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mousedown") {
190852
- dir = 1;
190853
- }
190854
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "mouseup") {
190855
- dir = 2;
190344
+ windowImpl.prototype.Release = function() { return this.$val.Release(); };
190345
+ windowImpl.ptr.prototype.Publish = function() {
190346
+ var w;
190347
+ w = this;
190348
+ if (w.released) {
190349
+ return new screen.PublishResult.ptr(false);
190856
190350
  }
190857
- return dir;
190351
+ return new screen.PublishResult.ptr(false);
190858
190352
  };
190859
- getWheelButton = function(ev) {
190860
- var deltaX, deltaY, ev;
190861
- deltaY = $clone($clone(ev, js.Value).Get("deltaY"), js.Value).Int();
190862
- deltaX = $clone($clone(ev, js.Value).Get("deltaX"), js.Value).Int();
190863
- if (deltaY > 0) {
190864
- return -2;
190865
- }
190866
- if (deltaY < 0) {
190867
- return -1;
190868
- }
190869
- if (deltaX > 0) {
190870
- return -4;
190871
- }
190872
- if (deltaX < 0) {
190873
- return -3;
190353
+ windowImpl.prototype.Publish = function() { return this.$val.Publish(); };
190354
+ windowImpl.ptr.prototype.Send = function(event) {
190355
+ var event, w;
190356
+ w = this;
190357
+ if (w.released) {
190358
+ return;
190874
190359
  }
190875
- return 0;
190360
+ $panic(new $String("Not implemented"));
190876
190361
  };
190877
- getMouseButton = function(ev) {
190878
- var _1, ev;
190879
- _1 = $clone($clone(ev, js.Value).Get("button"), js.Value).Int();
190880
- if (_1 === (0)) {
190881
- return 1;
190882
- } else if (_1 === (1)) {
190883
- return 2;
190884
- } else if (_1 === (2)) {
190885
- return 3;
190886
- } else if (_1 === (3)) {
190887
- return 8;
190888
- } else if (_1 === (4)) {
190889
- return 9;
190890
- } else {
190891
- return 0;
190362
+ windowImpl.prototype.Send = function(event) { return this.$val.Send(event); };
190363
+ windowImpl.ptr.prototype.SendFirst = function(event) {
190364
+ var event, w;
190365
+ w = this;
190366
+ if (w.released) {
190367
+ return;
190892
190368
  }
190369
+ $panic(new $String("Not implemented"));
190893
190370
  };
190894
- getEventModifiers = function(ev) {
190895
- var ev, mod;
190896
- mod = 0;
190897
- if ($clone($clone(ev, js.Value).Get("altKey"), js.Value).Bool()) {
190898
- mod = (mod | (4)) >>> 0;
190899
- }
190900
- if ($clone($clone(ev, js.Value).Get("ctrlKey"), js.Value).Bool()) {
190901
- mod = (mod | (2)) >>> 0;
190902
- }
190903
- if ($clone($clone(ev, js.Value).Get("shiftKey"), js.Value).Bool()) {
190904
- mod = (mod | (1)) >>> 0;
190905
- }
190906
- if ($clone($clone(ev, js.Value).Get("metaKey"), js.Value).Bool()) {
190907
- mod = (mod | (8)) >>> 0;
190908
- }
190909
- return mod;
190371
+ windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
190372
+ windowImpl.ptr.prototype.NextEvent = function() {
190373
+ var {_r, ev, w, $s, $r, $c} = $restore(this, {});
190374
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190375
+ w = this;
190376
+ _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190377
+ ev = _r[0];
190378
+ $s = -1; return ev;
190379
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
190910
190380
  };
190911
- DomEvents.ptr.prototype.bindFocusEvents = function() {
190912
- var {_r, _r$1, d, onFocus, $s, $r, $c} = $restore(this, {});
190381
+ windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
190382
+ windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
190383
+ var {_r, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
190913
190384
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190914
- d = [d];
190915
- onFocus = [onFocus];
190916
- d[0] = this;
190917
- onFocus[0] = $clone(js.FuncOf((function(d, onFocus) { return function $b(this$1, args) {
190918
- var {args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
190919
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190920
- $r = $send(d[0].eventChan, (x = new focus.Event.ptr(isFocusIn($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190921
- $s = -1; return $ifaceNil;
190922
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, x, $s};return $f;
190923
- }; })(d, onFocus)), js.Func);
190924
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190925
- _r;
190926
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190927
- _r$1;
190928
- d[0].releases = $append(d[0].releases, (function(d, onFocus) { return function $b() {
190929
- var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
190930
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190931
- _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("focus"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190932
- _r$2;
190933
- _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("blur"), new onFocus[0].constructor.elem(onFocus[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190934
- _r$3;
190935
- $clone(onFocus[0], js.Func).Release();
190385
+ w = this;
190386
+ if (w.released) {
190936
190387
  $s = -1; return;
190937
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
190938
- }; })(d, onFocus));
190939
- $s = -1; return;
190940
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindFocusEvents, $c: true, $r, _r, _r$1, d, onFocus, $s};return $f;
190941
- };
190942
- DomEvents.prototype.bindFocusEvents = function() { return this.$val.bindFocusEvents(); };
190943
- isFocusIn = function(ev) {
190944
- var ev;
190945
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "focus") {
190946
- return true;
190947
190388
  }
190948
- return false;
190389
+ _r = fmt.Errorf("Not implemented, use UploadYCbCr instead", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190390
+ $panic(_r);
190391
+ $s = -1; return;
190392
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, _r, dp, sr, src, w, $s};return $f;
190949
190393
  };
190950
- DomEvents.ptr.prototype.bindKeyEvents = function() {
190951
- var {_r, _r$1, d, onKey, $s, $r, $c} = $restore(this, {});
190394
+ windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
190395
+ windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
190396
+ var {_r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s, $r, $c} = $restore(this, {dp, src, sr});
190952
190397
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190953
- d = [d];
190954
- onKey = [onKey];
190955
- d[0] = this;
190956
- onKey[0] = $clone(js.FuncOf((function(d, onKey) { return function $b(this$1, args) {
190957
- var {_r, args, this$1, x, $s, $r, $c} = $restore(this, {this$1, args});
190958
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190959
- _r = $clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value).Call("preventDefault", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190960
- _r;
190961
- $r = $send(d[0].eventChan, (x = new key.Event.ptr(getKeyRune($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyCode($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getEventModifiers($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value)), getKeyDirection($clone((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), js.Value))), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190962
- $s = -1; return $ifaceNil;
190963
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r, args, this$1, x, $s};return $f;
190964
- }; })(d, onKey)), js.Func);
190965
- _r = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190966
- _r;
190967
- _r$1 = $clone(js.Global(), js.Value).Call("addEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190968
- _r$1;
190969
- d[0].releases = $append(d[0].releases, (function(d, onKey) { return function $b() {
190970
- var {_r$2, _r$3, $s, $r, $c} = $restore(this, {});
190971
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190972
- _r$2 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keydown"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
190973
- _r$2;
190974
- _r$3 = $clone(js.Global(), js.Value).Call("removeEventListener", new sliceType([new $String("keyup"), new onKey[0].constructor.elem(onKey[0])])); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
190975
- _r$3;
190976
- $clone(onKey[0], js.Func).Release();
190398
+ w = this;
190399
+ if (w.released) {
190400
+ $s = -1; return;
190401
+ }
190402
+ _ref = src;
190403
+ /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 1; continue; }
190404
+ /* */ $s = 2; continue;
190405
+ /* if ($assertType(_ref, ptrType$3, true)[1]) { */ case 1:
190406
+ jsSrc = _ref.$val;
190407
+ _r = $clone(w.ctx2d, js.Value).Call("drawImage", new sliceType([(x = jsSrc.YCbCrJS().CanvasImageSource, new x.constructor.elem(x)), new $Int(0), new $Int(0)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190408
+ _r;
190977
190409
  $s = -1; return;
190978
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, _r$2, _r$3, $s};return $f;
190979
- }; })(d, onKey));
190410
+ /* } */ case 2:
190411
+ _r$1 = fmt.Errorf("Not implemented, use canvasdriver.BufferImpl instead", sliceType.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
190412
+ $panic(_r$1);
190980
190413
  $s = -1; return;
190981
- /* */ } return; } var $f = {$blk: DomEvents.ptr.prototype.bindKeyEvents, $c: true, $r, _r, _r$1, d, onKey, $s};return $f;
190414
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s};return $f;
190982
190415
  };
190983
- DomEvents.prototype.bindKeyEvents = function() { return this.$val.bindKeyEvents(); };
190984
- getKeyRune = function(ev) {
190985
- var ev, key$1;
190986
- key$1 = (new sliceType$2($stringToRunes($clone($clone(ev, js.Value).Get("key"), js.Value).String())));
190987
- if (key$1.$length === 1) {
190988
- return (0 >= key$1.$length ? ($throwRuntimeError("index out of range"), undefined) : key$1.$array[key$1.$offset + 0]);
190416
+ windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
190417
+ windowImpl.ptr.prototype.Fill = function(dr, src, op) {
190418
+ var dr, op, src, w;
190419
+ w = this;
190420
+ if (w.released) {
190421
+ return;
190989
190422
  }
190990
- return -1;
190423
+ $panic(new $String("Not implemented"));
190991
190424
  };
190992
- getKeyDirection = function(ev) {
190993
- var dir, ev;
190994
- dir = 0;
190995
- dir = 0;
190996
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keydown") {
190997
- dir = 1;
190425
+ windowImpl.prototype.Fill = function(dr, src, op) { return this.$val.Fill(dr, src, op); };
190426
+ windowImpl.ptr.prototype.Draw = function(src2dst, src, sr, op, opts) {
190427
+ var op, opts, sr, src, src2dst, w;
190428
+ w = this;
190429
+ if (w.released) {
190430
+ return;
190998
190431
  }
190999
- if ($clone($clone(ev, js.Value).Get("type"), js.Value).String() === "keyup") {
191000
- dir = 2;
190432
+ $panic(new $String("Not implemented"));
190433
+ };
190434
+ windowImpl.prototype.Draw = function(src2dst, src, sr, op, opts) { return this.$val.Draw(src2dst, src, sr, op, opts); };
190435
+ windowImpl.ptr.prototype.DrawUniform = function(src2dst, src, sr, op, opts) {
190436
+ var op, opts, sr, src, src2dst, w;
190437
+ w = this;
190438
+ if (w.released) {
190439
+ return;
191001
190440
  }
191002
- return dir;
190441
+ $panic(new $String("Not implemented"));
191003
190442
  };
191004
- getKeyCode = function(ev) {
191005
- var _entry, _entry$1, _tuple, _tuple$1, code, code$1, domCode, domKey, ev, exists, exists$1;
191006
- domCode = $clone($clone(ev, js.Value).Get("code"), js.Value).String();
191007
- _tuple = (_entry = $mapIndex(keyCodesMap,$String.keyFor(domCode)), _entry !== undefined ? [_entry.v, true] : [0, false]);
191008
- code = _tuple[0];
191009
- exists = _tuple[1];
191010
- if (exists) {
191011
- return code;
190443
+ windowImpl.prototype.DrawUniform = function(src2dst, src, sr, op, opts) { return this.$val.DrawUniform(src2dst, src, sr, op, opts); };
190444
+ windowImpl.ptr.prototype.Copy = function(dp, src, sr, op, opts) {
190445
+ var dp, op, opts, sr, src, w;
190446
+ w = this;
190447
+ if (w.released) {
190448
+ return;
191012
190449
  }
191013
- domKey = $clone($clone(ev, js.Value).Get("key"), js.Value).String();
191014
- _tuple$1 = (_entry$1 = $mapIndex(keyCodesByKeyMap,$String.keyFor(domKey)), _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
191015
- code$1 = _tuple$1[0];
191016
- exists$1 = _tuple$1[1];
191017
- if (exists$1) {
191018
- return code$1;
190450
+ $panic(new $String("Not implemented"));
190451
+ };
190452
+ windowImpl.prototype.Copy = function(dp, src, sr, op, opts) { return this.$val.Copy(dp, src, sr, op, opts); };
190453
+ windowImpl.ptr.prototype.Scale = function(dr, src, sr, op, opts) {
190454
+ var dr, op, opts, sr, src, w;
190455
+ w = this;
190456
+ if (w.released) {
190457
+ return;
191019
190458
  }
191020
- return 0;
190459
+ $panic(new $String("Not implemented"));
190460
+ };
190461
+ windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
190462
+ main = function(f) {
190463
+ var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
190464
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190465
+ retErr = $ifaceNil;
190466
+ _tuple = newScreenImpl();
190467
+ s = _tuple[0];
190468
+ err = _tuple[1];
190469
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190470
+ retErr = err;
190471
+ $s = -1; return retErr;
190472
+ }
190473
+ $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190474
+ retErr = $ifaceNil;
190475
+ $s = -1; return retErr;
190476
+ /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
190477
+ };
190478
+ newScreenImpl = function() {
190479
+ var s;
190480
+ s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
190481
+ return [s, $ifaceNil];
190482
+ };
190483
+ screenImpl.ptr.prototype.NewBuffer = function(size) {
190484
+ var buffer, s, size;
190485
+ s = this;
190486
+ buffer = newBuffer(s, $clone(size, image.Point));
190487
+ return [buffer, $ifaceNil];
190488
+ };
190489
+ screenImpl.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
190490
+ screenImpl.ptr.prototype.NewTexture = function(size) {
190491
+ var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
190492
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190493
+ s = this;
190494
+ _r = fmt.Errorf("Texture not implemented", sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190495
+ $24r = [$ifaceNil, _r];
190496
+ $s = 2; case 2: return $24r;
190497
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
190498
+ };
190499
+ screenImpl.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
190500
+ screenImpl.ptr.prototype.NewWindow = function(opts) {
190501
+ var {_r, opts, s, window, $s, $r, $c} = $restore(this, {opts});
190502
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190503
+ s = this;
190504
+ _r = newWindow(s, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190505
+ window = _r;
190506
+ $s = -1; return [window, $ifaceNil];
190507
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
190508
+ };
190509
+ screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
190510
+ newBuffer = function(screen$1, size) {
190511
+ var _q, _q$1, _q$2, b, rect, screen$1, size;
190512
+ rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
190513
+ b = new BufferImpl.ptr(screen$1, $clone(size, image.Point), new sync.Mutex.ptr(0, 0), false, $clone(new image.RGBA.ptr($makeSlice(sliceType$1, ($imul(($imul(4, size.X)), size.Y))), $imul(4, size.X), $clone(rect, image.Rectangle)), image.RGBA), $clone(new image.YCbCr.ptr($makeSlice(sliceType$1, ($imul(size.X, size.Y))), $makeSlice(sliceType$1, (_q$1 = ($imul(size.X, size.Y)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), $makeSlice(sliceType$1, (_q$2 = ($imul(size.X, size.Y)) / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))), size.X, (_q = size.X / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 2, $clone(rect, image.Rectangle)), image.YCbCr), ptrType$4.nil);
190514
+ return b;
190515
+ };
190516
+ BufferImpl.ptr.prototype.Size = function() {
190517
+ var b;
190518
+ b = this;
190519
+ return b.size;
190520
+ };
190521
+ BufferImpl.prototype.Size = function() { return this.$val.Size(); };
190522
+ BufferImpl.ptr.prototype.Bounds = function() {
190523
+ var b;
190524
+ b = this;
190525
+ return new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(b.size, image.Point));
190526
+ };
190527
+ BufferImpl.prototype.Bounds = function() { return this.$val.Bounds(); };
190528
+ BufferImpl.ptr.prototype.RGBA = function() {
190529
+ var b;
190530
+ b = this;
190531
+ return b.rgba;
190532
+ };
190533
+ BufferImpl.prototype.RGBA = function() { return this.$val.RGBA(); };
190534
+ BufferImpl.ptr.prototype.YCbCr = function() {
190535
+ var b;
190536
+ b = this;
190537
+ return b.ycbcr;
190538
+ };
190539
+ BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
190540
+ BufferImpl.ptr.prototype.YCbCrJS = function() {
190541
+ var b;
190542
+ b = this;
190543
+ if (b.ycbcrJS === ptrType$4.nil) {
190544
+ b.ycbcrJS = new YCbCrJS.ptr(ptrType$5.nil);
190545
+ }
190546
+ return b.ycbcrJS;
190547
+ };
190548
+ BufferImpl.prototype.YCbCrJS = function() { return this.$val.YCbCrJS(); };
190549
+ BufferImpl.ptr.prototype.Release = function() {
190550
+ var {b, $s, $deferred, $r, $c} = $restore(this, {});
190551
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190552
+ b = this;
190553
+ $r = b.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190554
+ $deferred.push([$methodVal(b.mutex, "Unlock"), []]);
190555
+ /* */ if (b.released) { $s = 2; continue; }
190556
+ /* */ $s = 3; continue;
190557
+ /* if (b.released) { */ case 2:
190558
+ $s = 4; case 4: return;
190559
+ /* } */ case 3:
190560
+ b.released = true;
190561
+ $s = -1; return;
190562
+ /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: BufferImpl.ptr.prototype.Release, $c: true, $r, b, $s, $deferred};return $f; } }
191021
190563
  };
191022
- ptrType.methods = [{prop: "GetEventChan", name: "GetEventChan", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "BindEvents", name: "BindEvents", pkg: "", typ: $funcType([], [], false)}, {prop: "bindSizeEvents", name: "bindSizeEvents", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom", typ: $funcType([], [], false)}, {prop: "emitSizeEvent", name: "emitSizeEvent", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom", typ: $funcType([], [], false)}, {prop: "bindMouseEvents", name: "bindMouseEvents", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom", typ: $funcType([], [], false)}, {prop: "bindFocusEvents", name: "bindFocusEvents", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom", typ: $funcType([], [], false)}, {prop: "bindKeyEvents", name: "bindKeyEvents", pkg: "github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom", typ: $funcType([], [], false)}];
191023
- DomEvents.init("github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom", [{prop: "eventChan", name: "eventChan", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "releases", name: "releases", embedded: false, exported: false, typ: sliceType$1, tag: ""}]);
190564
+ BufferImpl.prototype.Release = function() { return this.$val.Release(); };
190565
+ ptrType$7.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}, {prop: "Publish", name: "Publish", pkg: "", typ: $funcType([], [screen.PublishResult], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "SendFirst", name: "SendFirst", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "NextEvent", name: "NextEvent", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Upload", name: "Upload", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "UploadYCbCr", name: "UploadYCbCr", pkg: "", typ: $funcType([image.Point, screen.Buffer, image.Rectangle], [], false)}, {prop: "Fill", name: "Fill", pkg: "", typ: $funcType([image.Rectangle, color.Color, draw.Op], [], false)}, {prop: "Draw", name: "Draw", pkg: "", typ: $funcType([f64.Aff3, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "DrawUniform", name: "DrawUniform", pkg: "", typ: $funcType([f64.Aff3, color.Color, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([image.Point, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}, {prop: "Scale", name: "Scale", pkg: "", typ: $funcType([image.Rectangle, screen.Texture, image.Rectangle, draw.Op, ptrType$6], [], false)}];
190566
+ ptrType.methods = [{prop: "NewBuffer", name: "NewBuffer", pkg: "", typ: $funcType([image.Point], [screen.Buffer, $error], false)}, {prop: "NewTexture", name: "NewTexture", pkg: "", typ: $funcType([image.Point], [screen.Texture, $error], false)}, {prop: "NewWindow", name: "NewWindow", pkg: "", typ: $funcType([ptrType$8], [screen.Window, $error], false)}];
190567
+ ptrType$3.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [image.Point], false)}, {prop: "Bounds", name: "Bounds", pkg: "", typ: $funcType([], [image.Rectangle], false)}, {prop: "RGBA", name: "RGBA", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "YCbCr", name: "YCbCr", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "YCbCrJS", name: "YCbCrJS", pkg: "", typ: $funcType([], [ptrType$4], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}];
190568
+ windowImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "canvasEl", name: "canvasEl", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "ctx2d", name: "ctx2d", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "domEvents", name: "domEvents", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "resizeCallback", name: "resizeCallback", embedded: false, exported: false, typ: js.Func, tag: ""}]);
190569
+ screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190570
+ YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$5, tag: ""}]);
190571
+ BufferImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "screen", name: "screen", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: image.Point, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "released", name: "released", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "rgba", name: "rgba", embedded: false, exported: false, typ: image.RGBA, tag: ""}, {prop: "ycbcr", name: "ycbcr", embedded: false, exported: false, typ: image.YCbCr, tag: ""}, {prop: "ycbcrJS", name: "ycbcrJS", embedded: false, exported: false, typ: ptrType$4, tag: ""}]);
191024
190572
  $init = function() {
191025
190573
  $pkg.$init = function() {};
191026
190574
  /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
191027
- $r = focus.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191028
- $r = key.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191029
- $r = mouse.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191030
- $r = size.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191031
- $r = geom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191032
- $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191033
- $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190575
+ $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190576
+ $r = errscreen.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190577
+ $r = dom.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190578
+ $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190579
+ $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190580
+ $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190581
+ $r = color.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190582
+ $r = draw.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190583
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190584
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190585
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190586
+ };
190587
+ $pkg.$init = $init;
190588
+ return $pkg;
190589
+ })();
190590
+ $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"] = (function() {
190591
+ var $pkg = {}, $init, hex, webgl, errs, jshelper, general, canvasdriver, image, js;
190592
+ hex = $packages["encoding/hex"];
190593
+ webgl = $packages["github.com/nuberu/webgl"];
190594
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190595
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190596
+ general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190597
+ canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
190598
+ image = $packages["image"];
190599
+ js = $packages["syscall/js"];
190600
+ $init = function() {
190601
+ $pkg.$init = function() {};
190602
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190603
+ $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190604
+ $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190605
+ $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190606
+ $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190607
+ $r = general.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190608
+ $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190609
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191034
190610
  $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191035
- keyCodesMap = $makeMap($String.keyFor, [{ k: "KeyA", v: 4 }, { k: "KeyB", v: 5 }, { k: "KeyC", v: 6 }, { k: "KeyD", v: 7 }, { k: "KeyE", v: 8 }, { k: "KeyF", v: 9 }, { k: "KeyG", v: 10 }, { k: "KeyH", v: 11 }, { k: "KeyI", v: 12 }, { k: "KeyJ", v: 13 }, { k: "KeyK", v: 14 }, { k: "KeyL", v: 15 }, { k: "KeyM", v: 16 }, { k: "KeyN", v: 17 }, { k: "KeyO", v: 18 }, { k: "KeyP", v: 19 }, { k: "KeyQ", v: 20 }, { k: "KeyR", v: 21 }, { k: "KeyS", v: 22 }, { k: "KeyT", v: 23 }, { k: "KeyU", v: 24 }, { k: "KeyV", v: 25 }, { k: "KeyW", v: 26 }, { k: "KeyX", v: 27 }, { k: "KeyY", v: 28 }, { k: "KeyZ", v: 29 }, { k: "Digit1", v: 30 }, { k: "Digit2", v: 31 }, { k: "Digit3", v: 32 }, { k: "Digit4", v: 33 }, { k: "Digit5", v: 34 }, { k: "Digit6", v: 35 }, { k: "Digit7", v: 36 }, { k: "Digit8", v: 37 }, { k: "Digit9", v: 38 }, { k: "Digit0", v: 39 }, { k: "Enter", v: 40 }, { k: "Escape", v: 41 }, { k: "Backspace", v: 42 }, { k: "Tab", v: 43 }, { k: "Space", v: 44 }, { k: "Minus", v: 45 }, { k: "Equal", v: 46 }, { k: "BracketLeft", v: 47 }, { k: "BracketRight", v: 48 }, { k: "Backslash", v: 49 }, { k: "Semicolon", v: 51 }, { k: "Quote", v: 52 }, { k: "Backquote", v: 53 }, { k: "Comma", v: 54 }, { k: "Period", v: 55 }, { k: "Slash", v: 56 }, { k: "CapsLock", v: 57 }, { k: "F1", v: 58 }, { k: "F2", v: 59 }, { k: "F3", v: 60 }, { k: "F4", v: 61 }, { k: "F5", v: 62 }, { k: "F6", v: 63 }, { k: "F7", v: 64 }, { k: "F8", v: 65 }, { k: "F9", v: 66 }, { k: "F10", v: 67 }, { k: "F11", v: 68 }, { k: "F12", v: 69 }, { k: "Pause", v: 72 }, { k: "Insert", v: 73 }, { k: "Home", v: 74 }, { k: "PageUp", v: 75 }, { k: "Delete", v: 76 }, { k: "End", v: 77 }, { k: "PageDown", v: 78 }, { k: "ArrowRight", v: 79 }, { k: "ArrowLeft", v: 80 }, { k: "ArrowDown", v: 81 }, { k: "ArrowUp", v: 82 }, { k: "NumLock", v: 83 }, { k: "NumpadDivide", v: 84 }, { k: "NumpadMultiply", v: 85 }, { k: "NumpadSubtract", v: 86 }, { k: "NumpadAdd", v: 87 }, { k: "NumpadEnter", v: 88 }, { k: "Numpad1", v: 89 }, { k: "Numpad2", v: 90 }, { k: "Numpad3", v: 91 }, { k: "Numpad4", v: 92 }, { k: "Numpad5", v: 93 }, { k: "Numpad6", v: 94 }, { k: "Numpad7", v: 95 }, { k: "Numpad8", v: 96 }, { k: "Numpad9", v: 97 }, { k: "Numpad0", v: 98 }, { k: "NumpadDecimal", v: 99 }, { k: "NumpadEqual", v: 103 }, { k: "F13", v: 104 }, { k: "F14", v: 105 }, { k: "F15", v: 106 }, { k: "F16", v: 107 }, { k: "F17", v: 108 }, { k: "F18", v: 109 }, { k: "F19", v: 110 }, { k: "F20", v: 111 }, { k: "F21", v: 112 }, { k: "F22", v: 113 }, { k: "F23", v: 114 }, { k: "F24", v: 115 }, { k: "Help", v: 117 }, { k: "ContextMenu", v: 118 }, { k: "VolumeMute", v: 127 }, { k: "VolumeUp", v: 128 }, { k: "VolumeDown", v: 129 }, { k: "ControlLeft", v: 224 }, { k: "ShiftLeft", v: 225 }, { k: "AltLeft", v: 226 }, { k: "MetaLeft", v: 227 }, { k: "ControlRight", v: 228 }, { k: "ShiftRight", v: 229 }, { k: "AltRight", v: 230 }, { k: "MetaRight", v: 231 }, { k: "PrintScreen", v: 0 }]);
191036
- keyCodesByKeyMap = $makeMap($String.keyFor, [{ k: "AudioVolumeMute", v: 127 }, { k: "AudioVolumeUp", v: 128 }, { k: "AudioVolumeDown", v: 129 }]);
190611
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190612
+ };
190613
+ $pkg.$init = $init;
190614
+ return $pkg;
190615
+ })();
190616
+ $packages["github.com/supraio/client-daemon/pkg/x264"] = (function() {
190617
+ var $pkg = {}, $init, errs, general, h264_decoder, nacldecoder, webcodecs;
190618
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190619
+ general = $packages["github.com/supraio/client-daemon/pkg/x264/general"];
190620
+ h264_decoder = $packages["github.com/supraio/client-daemon/pkg/x264/h264decoder"];
190621
+ nacldecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"];
190622
+ webcodecs = $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"];
190623
+ $init = function() {
190624
+ $pkg.$init = function() {};
190625
+ /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
190626
+ $r = errs.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190627
+ $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190628
+ $r = h264_decoder.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190629
+ $r = nacldecoder.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190630
+ $r = webcodecs.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191037
190631
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191038
190632
  };
191039
190633
  $pkg.$init = $init;
@@ -191042,7 +190636,7 @@ $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom"
191042
190636
  $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"] = (function() {
191043
190637
  var $pkg = {}, $init, fmt, dom, screen, f64, image, color, draw, sync, js, windowImpl, screenImpl, BufferImpl, sliceType, ptrType, ptrType$1, funcType, arrayType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, newWindow, newScreenImpl, main, newBuffer;
191044
190638
  fmt = $packages["fmt"];
191045
- dom = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver/dom"];
190639
+ dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
191046
190640
  screen = $packages["golang.org/x/exp/shiny/screen"];
191047
190641
  f64 = $packages["golang.org/x/image/math/f64"];
191048
190642
  image = $packages["image"];
@@ -191379,7 +190973,7 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
191379
190973
  return $pkg;
191380
190974
  })();
191381
190975
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191382
- var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, errs, input, message, netclient, netpacket, netstream, stats, window, x264, nacldriver, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, screenParams, ScreenManager, ProcessInfo, ProcessInfoManager, ptrType$2, funcType, sliceType$1, sliceType$3, arrayType, ptrType$14, openScreenWindows, mutex, NewScreenManager, NewProcessInfoManager;
190976
+ var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, errs, input, message, netclient, netpacket, netstream, stats, window, x264, nacldecoder, nacldriver, webcodecs, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, screenParams, ScreenManager, ProcessInfo, ProcessInfoManager, ptrType$2, funcType, sliceType$1, sliceType$3, arrayType, ptrType$14, openScreenWindows, mutex, NewScreenManager, NewProcessInfoManager;
191383
190977
  binary = $packages["encoding/binary"];
191384
190978
  json = $packages["encoding/json"];
191385
190979
  query = $packages["github.com/google/go-querystring/query"];
@@ -191394,7 +190988,9 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191394
190988
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
191395
190989
  window = $packages["github.com/supraio/client-daemon/pkg/window"];
191396
190990
  x264 = $packages["github.com/supraio/client-daemon/pkg/x264"];
190991
+ nacldecoder = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder"];
191397
190992
  nacldriver = $packages["github.com/supraio/client-daemon/pkg/x264/nacldecoder/nacldriver"];
190993
+ webcodecs = $packages["github.com/supraio/client-daemon/pkg/x264/webcodecs"];
191398
190994
  canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
191399
190995
  webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
191400
190996
  screen = $packages["golang.org/x/exp/shiny/screen"];
@@ -191841,25 +191437,27 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191841
191437
  $r = stats.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191842
191438
  $r = window.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191843
191439
  $r = x264.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191844
- $r = nacldriver.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191845
- $r = canvasdriver.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191846
- $r = webgldriver.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191847
- $r = screen.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191848
- $r = focus.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191849
- $r = key.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191850
- $r = lifecycle.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191851
- $r = mouse.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191852
- $r = size.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191853
- $r = image.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191854
- $r = io.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191855
- $r = ioutil.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191856
- $r = log.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191857
- $r = os.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191858
- $r = path.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191859
- $r = strings.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191860
- $r = sync.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191861
- $r = js.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191862
- $r = time.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191440
+ $r = nacldecoder.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191441
+ $r = nacldriver.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191442
+ $r = webcodecs.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191443
+ $r = canvasdriver.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191444
+ $r = webgldriver.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191445
+ $r = screen.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191446
+ $r = focus.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191447
+ $r = key.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191448
+ $r = lifecycle.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191449
+ $r = mouse.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191450
+ $r = size.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191451
+ $r = image.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191452
+ $r = io.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191453
+ $r = ioutil.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191454
+ $r = log.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191455
+ $r = os.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191456
+ $r = path.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191457
+ $r = strings.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191458
+ $r = sync.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191459
+ $r = js.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191460
+ $r = time.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191863
191461
  openScreenWindows = $makeMap($String.keyFor, []);
191864
191462
  mutex = new sync.Mutex.ptr(0, 0);
191865
191463
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;