@supraio/client-daemon-js 0.0.0-jvmaster.334 → 0.0.0-jvmaster.337

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.
@@ -185276,62 +185276,6 @@ $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"] = (functio
185276
185276
  $pkg.$init = $init;
185277
185277
  return $pkg;
185278
185278
  })();
185279
- $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
185280
- var $pkg = {}, $init, binary, fmt, errs, message, focus, key, mouse, sync;
185281
- binary = $packages["encoding/binary"];
185282
- fmt = $packages["fmt"];
185283
- errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
185284
- message = $packages["github.com/supraio/client-daemon/pkg/message"];
185285
- focus = $packages["golang.org/x/mobile/event/focus"];
185286
- key = $packages["golang.org/x/mobile/event/key"];
185287
- mouse = $packages["golang.org/x/mobile/event/mouse"];
185288
- sync = $packages["sync"];
185289
- $init = function() {
185290
- $pkg.$init = function() {};
185291
- /* */ 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:
185292
- $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185293
- $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185294
- $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185295
- $r = message.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185296
- $r = focus.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185297
- $r = key.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185298
- $r = mouse.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185299
- $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185300
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185301
- };
185302
- $pkg.$init = $init;
185303
- return $pkg;
185304
- })();
185305
- $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
185306
- var $pkg = {}, $init, time;
185307
- time = $packages["time"];
185308
- $init = function() {
185309
- $pkg.$init = function() {};
185310
- /* */ 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:
185311
- $r = time.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185312
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185313
- };
185314
- $pkg.$init = $init;
185315
- return $pkg;
185316
- })();
185317
- $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function() {
185318
- var $pkg = {}, $init, binary, errs, netpacket, frame;
185319
- binary = $packages["encoding/binary"];
185320
- errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
185321
- netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
185322
- frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
185323
- $init = function() {
185324
- $pkg.$init = function() {};
185325
- /* */ 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:
185326
- $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185327
- $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185328
- $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185329
- $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
185330
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
185331
- };
185332
- $pkg.$init = $init;
185333
- return $pkg;
185334
- })();
185335
185279
  $packages["github.com/nuberu/webgl/types"] = (function() {
185336
185280
  var $pkg = {}, $init, js, VertexArray, UniformLocation, Texture, Shader, ShaderPrecisionFormat, Program, Buffer, FrameBuffer, RenderBuffer, GLEnum, PowerPreference, Attributes, ActiveInfo, funcType, arrayType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, NewVertexArray, NewUniformLocation, NewTexture, NewShader, NewShaderPrecisionFormat, NewProgram, NewBuffer, NewFrameBuffer, NewRenderBuffer, NewActiveInfo;
185337
185281
  js = $packages["syscall/js"];
@@ -189709,47 +189653,11 @@ $packages["golang.org/x/exp/shiny/driver/internal/errscreen"] = (function() {
189709
189653
  $pkg.$init = $init;
189710
189654
  return $pkg;
189711
189655
  })();
189712
- $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
189713
- var $pkg = {}, $init, screen, image, draw, ConvertYCbCrToRGBA;
189714
- screen = $packages["golang.org/x/exp/shiny/screen"];
189715
- image = $packages["image"];
189716
- draw = $packages["image/draw"];
189717
- ConvertYCbCrToRGBA = function(b) {
189718
- var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, b, $s, $r, $c} = $restore(this, {b});
189719
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189720
- _r = b.RGBA(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
189721
- _arg = _r;
189722
- _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; }
189723
- _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; }
189724
- _arg$1 = $clone(_r$2, image.Rectangle);
189725
- _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; }
189726
- _arg$2 = _r$3;
189727
- _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; }
189728
- _arg$3 = $clone(_r$4.Rect.Min, image.Point);
189729
- $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; }
189730
- $s = -1; return;
189731
- /* */ } 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;
189732
- };
189733
- $pkg.ConvertYCbCrToRGBA = ConvertYCbCrToRGBA;
189734
- $init = function() {
189735
- $pkg.$init = function() {};
189736
- /* */ 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:
189737
- $r = screen.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189738
- $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189739
- $r = draw.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189740
- /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
189741
- };
189742
- $pkg.$init = $init;
189743
- return $pkg;
189744
- })();
189745
- $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189746
- 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;
189656
+ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
189657
+ 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;
189747
189658
  fmt = $packages["fmt"];
189748
- webgl = $packages["github.com/nuberu/webgl"];
189749
- types = $packages["github.com/nuberu/webgl/types"];
189750
189659
  errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
189751
189660
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
189752
- imageutil = $packages["golang.org/x/exp/shiny/imageutil"];
189753
189661
  screen = $packages["golang.org/x/exp/shiny/screen"];
189754
189662
  f64 = $packages["golang.org/x/image/math/f64"];
189755
189663
  image = $packages["image"];
@@ -189757,43 +189665,27 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189757
189665
  draw = $packages["image/draw"];
189758
189666
  sync = $packages["sync"];
189759
189667
  js = $packages["syscall/js"];
189760
- 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_) {
189668
+ 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_) {
189761
189669
  this.$val = this;
189762
189670
  if (arguments.length === 0) {
189763
189671
  this.screen = ptrType.nil;
189764
189672
  this.mutex = ptrType$1.nil;
189765
189673
  this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
189766
- this.gl = ptrType$2.nil;
189767
- this.programRGBA = ptrType$3.nil;
189768
- this.imageTexRGBA = ptrType$4.nil;
189769
- this.programYUV420 = ptrType$3.nil;
189770
- this.imageTexY = ptrType$4.nil;
189771
- this.imageTexU = ptrType$4.nil;
189772
- this.imageTexV = ptrType$4.nil;
189773
- this.vertexArray = ptrType$5.nil;
189674
+ this.ctx2d = new js.Value.ptr(null, false, arrayType.zero());
189774
189675
  this.released = false;
189775
- this.domEvents = ptrType$6.nil;
189776
- this.width = 0;
189777
- this.height = 0;
189676
+ this.domEvents = ptrType$2.nil;
189677
+ this.resizeCallback = new js.Func.ptr(new js.Value.ptr(null, false, arrayType.zero()));
189778
189678
  return;
189779
189679
  }
189780
189680
  this.screen = screen_;
189781
189681
  this.mutex = mutex_;
189782
189682
  this.canvasEl = canvasEl_;
189783
- this.gl = gl_;
189784
- this.programRGBA = programRGBA_;
189785
- this.imageTexRGBA = imageTexRGBA_;
189786
- this.programYUV420 = programYUV420_;
189787
- this.imageTexY = imageTexY_;
189788
- this.imageTexU = imageTexU_;
189789
- this.imageTexV = imageTexV_;
189790
- this.vertexArray = vertexArray_;
189683
+ this.ctx2d = ctx2d_;
189791
189684
  this.released = released_;
189792
189685
  this.domEvents = domEvents_;
189793
- this.width = width_;
189794
- this.height = height_;
189686
+ this.resizeCallback = resizeCallback_;
189795
189687
  });
189796
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "webgldriver.screenImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(doc_) {
189688
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(doc_) {
189797
189689
  this.$val = this;
189798
189690
  if (arguments.length === 0) {
189799
189691
  this.doc = new js.Value.ptr(null, false, arrayType.zero());
@@ -189801,50 +189693,24 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189801
189693
  }
189802
189694
  this.doc = doc_;
189803
189695
  });
189804
- ArrayBufferSlice = $pkg.ArrayBufferSlice = $newType(0, $kindStruct, "webgldriver.ArrayBufferSlice", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(ArrayBuffer_, Offset_, Length_) {
189805
- this.$val = this;
189806
- if (arguments.length === 0) {
189807
- this.ArrayBuffer = new js.Value.ptr(null, false, arrayType.zero());
189808
- this.Offset = 0;
189809
- this.Length = 0;
189810
- return;
189811
- }
189812
- this.ArrayBuffer = ArrayBuffer_;
189813
- this.Offset = Offset_;
189814
- this.Length = Length_;
189815
- });
189816
- 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_) {
189696
+ YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
189817
189697
  this.$val = this;
189818
189698
  if (arguments.length === 0) {
189819
- this.Y = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189820
- this.Cb = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189821
- this.Cr = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
189822
- this.YStride = 0;
189823
- this.CStride = 0;
189824
- this.SubsampleRatio = 0;
189825
- this.Rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0));
189826
- this.Use = false;
189699
+ this.CanvasImageSource = ptrType$5.nil;
189827
189700
  return;
189828
189701
  }
189829
- this.Y = Y_;
189830
- this.Cb = Cb_;
189831
- this.Cr = Cr_;
189832
- this.YStride = YStride_;
189833
- this.CStride = CStride_;
189834
- this.SubsampleRatio = SubsampleRatio_;
189835
- this.Rect = Rect_;
189836
- this.Use = Use_;
189702
+ this.CanvasImageSource = CanvasImageSource_;
189837
189703
  });
189838
- 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_) {
189704
+ 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_) {
189839
189705
  this.$val = this;
189840
189706
  if (arguments.length === 0) {
189841
189707
  this.screen = ptrType.nil;
189842
189708
  this.size = new image.Point.ptr(0, 0);
189843
189709
  this.mutex = ptrType$1.nil;
189844
189710
  this.released = false;
189845
- 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)));
189846
- 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)));
189847
- this.ycbcrJS = ptrType$8.nil;
189711
+ 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)));
189712
+ 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)));
189713
+ this.ycbcrJS = ptrType$4.nil;
189848
189714
  return;
189849
189715
  }
189850
189716
  this.screen = screen_;
@@ -189855,89 +189721,85 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189855
189721
  this.ycbcr = ycbcr_;
189856
189722
  this.ycbcrJS = ycbcrJS_;
189857
189723
  });
189858
- sliceType = $sliceType($Float32);
189859
- sliceType$1 = $sliceType($Uint16);
189860
- sliceType$2 = $sliceType($emptyInterface);
189724
+ sliceType = $sliceType($emptyInterface);
189861
189725
  ptrType = $ptrType(screenImpl);
189862
189726
  ptrType$1 = $ptrType(sync.Mutex);
189863
189727
  funcType = $funcType([], [], false);
189864
189728
  arrayType = $arrayType(funcType, 0);
189865
- ptrType$2 = $ptrType(webgl.RenderingContext);
189866
- ptrType$3 = $ptrType(types.Program);
189867
- ptrType$4 = $ptrType(types.Texture);
189868
- ptrType$5 = $ptrType(types.VertexArray);
189869
- ptrType$6 = $ptrType(dom.DomEvents);
189870
- ptrType$7 = $ptrType(BufferImpl);
189871
- sliceType$3 = $sliceType($Uint8);
189872
- ptrType$8 = $ptrType(YCbCrJS);
189873
- ptrType$9 = $ptrType(screen.DrawOptions);
189874
- ptrType$10 = $ptrType(windowImpl);
189875
- ptrType$11 = $ptrType(screen.NewWindowOptions);
189876
- ptrType$12 = $ptrType(ArrayBufferSlice);
189877
- ptrType$13 = $ptrType(image.RGBA);
189878
- ptrType$14 = $ptrType(image.YCbCr);
189729
+ ptrType$2 = $ptrType(dom.DomEvents);
189730
+ ptrType$3 = $ptrType(BufferImpl);
189731
+ sliceType$1 = $sliceType($Uint8);
189732
+ ptrType$4 = $ptrType(YCbCrJS);
189733
+ ptrType$5 = $ptrType(js.Value);
189734
+ ptrType$6 = $ptrType(screen.DrawOptions);
189735
+ ptrType$7 = $ptrType(windowImpl);
189736
+ ptrType$8 = $ptrType(screen.NewWindowOptions);
189737
+ ptrType$9 = $ptrType(image.RGBA);
189738
+ ptrType$10 = $ptrType(image.YCbCr);
189879
189739
  newWindow = function(screen$1, opts) {
189880
- 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});
189740
+ 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});
189881
189741
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189882
- _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; }
189883
- canvasEl = $clone(_r, js.Value);
189884
- _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; }
189742
+ adaptCanvas = [adaptCanvas];
189743
+ canvasEl = [canvasEl];
189744
+ _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; }
189745
+ canvasEl[0] = $clone(_r, js.Value);
189746
+ _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; }
189885
189747
  _r$1;
189886
- _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; }
189887
- _tuple = _r$2;
189888
- gl = _tuple[0];
189889
- err = _tuple[1];
189890
- if (!($interfaceIsEqual(err, $ifaceNil))) {
189891
- $panic(err);
189892
- }
189893
- domEvents = dom.NewDomEvents();
189894
- 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);
189895
- /* */ if (!((opts.Width === 0))) { $s = 4; continue; }
189896
- /* */ $s = 5; continue;
189897
- /* if (!((opts.Width === 0))) { */ case 4:
189898
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189899
- /* } */ case 5:
189900
- /* */ if (!((opts.Height === 0))) { $s = 7; continue; }
189901
- /* */ $s = 8; continue;
189902
- /* if (!((opts.Height === 0))) { */ case 7:
189903
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189904
- /* } */ case 8:
189905
- /* */ if (!(opts.Title === "")) { $s = 10; continue; }
189906
- /* */ $s = 11; continue;
189907
- /* if (!(opts.Title === "")) { */ case 10:
189908
- _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; }
189909
- _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; }
189910
- $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; }
189911
- /* } */ case 11:
189912
- _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; }
189913
- w.vertexArray = _r$5;
189914
- $r = domEvents.BindEvents(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189915
- $s = -1; return w;
189916
- /* */ } 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;
189917
- };
189918
- windowImpl.ptr.prototype.ensureCanvasSize = function(width, height) {
189919
- var height, w, width;
189920
- w = this;
189921
- if (!(($clone($clone(w.canvasEl, js.Value).Get("width"), js.Value).Int() === width))) {
189922
- $clone(w.canvasEl, js.Value).Set("width", new $Int(width));
189923
- }
189924
- if (!(($clone($clone(w.canvasEl, js.Value).Get("height"), js.Value).Int() === height))) {
189925
- $clone(w.canvasEl, js.Value).Set("height", new $Int(height));
189926
- }
189927
- };
189928
- windowImpl.prototype.ensureCanvasSize = function(width, height) { return this.$val.ensureCanvasSize(width, height); };
189929
- windowImpl.ptr.prototype.clear = function() {
189930
- var {w, $s, $r, $c} = $restore(this, {});
189931
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189932
- w = this;
189933
- $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; }
189934
- $r = w.gl.Clear(16384); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189935
- $s = -1; return;
189936
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.clear, $c: true, $r, w, $s};return $f;
189937
- };
189938
- windowImpl.prototype.clear = function() { return this.$val.clear(); };
189748
+ adaptCanvas[0] = (function(adaptCanvas, canvasEl) { return function() {
189749
+ var height, scale, width;
189750
+ scale = dom.GetBrowserZoomRatio();
189751
+ width = (((dom.GetScreenWidth()) / scale >> 0));
189752
+ if (!(($clone($clone(canvasEl[0], js.Value).Get("width"), js.Value).Int() === width))) {
189753
+ $clone(canvasEl[0], js.Value).Set("width", new $Int(width));
189754
+ }
189755
+ height = (((dom.GetScreenHeight()) / scale >> 0));
189756
+ if (!(($clone($clone(canvasEl[0], js.Value).Get("height"), js.Value).Int() === height))) {
189757
+ $clone(canvasEl[0], js.Value).Set("height", new $Int(height));
189758
+ }
189759
+ }; })(adaptCanvas, canvasEl);
189760
+ $r = adaptCanvas[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189761
+ resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl) { return function $b(this$1, args) {
189762
+ var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
189763
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189764
+ $r = adaptCanvas[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189765
+ $s = -1; return $ifaceNil;
189766
+ /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
189767
+ }; })(adaptCanvas, canvasEl)), js.Func);
189768
+ _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; }
189769
+ _r$2;
189770
+ /* */ if (!((opts.Width === 0))) { $s = 5; continue; }
189771
+ /* */ $s = 6; continue;
189772
+ /* if (!((opts.Width === 0))) { */ case 5:
189773
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189774
+ /* } */ case 6:
189775
+ /* */ if (!((opts.Height === 0))) { $s = 8; continue; }
189776
+ /* */ $s = 9; continue;
189777
+ /* if (!((opts.Height === 0))) { */ case 8:
189778
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189779
+ /* } */ case 9:
189780
+ /* */ if (!(opts.Title === "")) { $s = 11; continue; }
189781
+ /* */ $s = 12; continue;
189782
+ /* if (!(opts.Title === "")) { */ case 11:
189783
+ _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; }
189784
+ _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; }
189785
+ $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; }
189786
+ /* } */ case 12:
189787
+ _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; }
189788
+ ctx2d = $clone(_r$5, js.Value);
189789
+ /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 17; continue; }
189790
+ /* */ $s = 18; continue;
189791
+ /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 17:
189792
+ _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; }
189793
+ $panic(_r$6);
189794
+ /* } */ case 18:
189795
+ domEvents = dom.NewDomEvents();
189796
+ w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
189797
+ $r = domEvents.BindEvents(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189798
+ $s = -1; return w;
189799
+ /* */ } 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;
189800
+ };
189939
189801
  windowImpl.ptr.prototype.Release = function() {
189940
- var {_r, w, $s, $deferred, $r, $c} = $restore(this, {});
189802
+ var {_r, _r$1, w, x, $s, $deferred, $r, $c} = $restore(this, {});
189941
189803
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
189942
189804
  w = this;
189943
189805
  $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -189947,12 +189809,15 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189947
189809
  /* if (w.released) { */ case 2:
189948
189810
  $s = 4; case 4: return;
189949
189811
  /* } */ case 3:
189950
- _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; }
189812
+ _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; }
189951
189813
  _r;
189952
- $r = w.domEvents.Release(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189814
+ $clone(w.resizeCallback, js.Func).Release();
189815
+ _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; }
189816
+ _r$1;
189817
+ $r = w.domEvents.Release(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
189953
189818
  w.released = true;
189954
189819
  $s = -1; return;
189955
- /* */ } 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; } }
189820
+ /* */ } 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; } }
189956
189821
  };
189957
189822
  windowImpl.prototype.Release = function() { return this.$val.Release(); };
189958
189823
  windowImpl.ptr.prototype.Publish = function() {
@@ -189993,71 +189858,38 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
189993
189858
  };
189994
189859
  windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
189995
189860
  windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
189996
- var {dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189861
+ var {_r, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
189997
189862
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
189998
189863
  w = this;
189999
189864
  if (w.released) {
190000
189865
  $s = -1; return;
190001
189866
  }
190002
- $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; }
189867
+ _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; }
189868
+ $panic(_r);
190003
189869
  $s = -1; return;
190004
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, dp, sr, src, w, $s};return $f;
189870
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, _r, dp, sr, src, w, $s};return $f;
190005
189871
  };
190006
189872
  windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
190007
189873
  windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
190008
- 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});
189874
+ var {_r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s, $r, $c} = $restore(this, {dp, src, sr});
190009
189875
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190010
189876
  w = this;
190011
189877
  if (w.released) {
190012
189878
  $s = -1; return;
190013
189879
  }
190014
189880
  _ref = src;
190015
- /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
189881
+ /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 1; continue; }
190016
189882
  /* */ $s = 2; continue;
190017
- /* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
189883
+ /* if ($assertType(_ref, ptrType$3, true)[1]) { */ case 1:
190018
189884
  jsSrc = _ref.$val;
190019
- _r = jsSrc.YCbCrJS(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190020
- /* */ if (_r.Use) { $s = 3; continue; }
190021
- /* */ $s = 4; continue;
190022
- /* if (_r.Use) { */ case 3:
190023
- _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; }
190024
- /* */ if (!((_r$1.SubsampleRatio === 2))) { $s = 6; continue; }
190025
- /* */ $s = 7; continue;
190026
- /* if (!((_r$1.SubsampleRatio === 2))) { */ case 6:
190027
- $panic(new $String("Only image.YCbCrSubsampleRatio420 SubsampleRatio is currently supported"));
190028
- /* } */ case 7:
190029
- _arg = $clone(dp, image.Point);
190030
- _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; }
190031
- _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; }
190032
- _arg$1 = $clone(_r$3, js.Value);
190033
- _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; }
190034
- _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; }
190035
- _arg$2 = $clone(_r$5, js.Value);
190036
- _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; }
190037
- _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; }
190038
- _arg$3 = $clone(_r$7, js.Value);
190039
- _arg$4 = $clone(sr, image.Rectangle);
190040
- $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; }
190041
- $s = -1; return;
190042
- /* } */ case 4:
189885
+ _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; }
189886
+ _r;
189887
+ $s = -1; return;
190043
189888
  /* } */ case 2:
190044
- _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; }
190045
- /* */ if (_r$8.SubsampleRatio === 2) { $s = 16; continue; }
190046
- /* */ $s = 17; continue;
190047
- /* if (_r$8.SubsampleRatio === 2) { */ case 16:
190048
- $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; }
190049
- $s = 18; continue;
190050
- /* } else { */ case 17:
190051
- _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; }
190052
- /* */ if (_r$9.Pix.$length === 0) { $s = 21; continue; }
190053
- /* */ $s = 22; continue;
190054
- /* if (_r$9.Pix.$length === 0) { */ case 21:
190055
- $r = imageutil.ConvertYCbCrToRGBA(src); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190056
- /* } */ case 22:
190057
- $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; }
190058
- /* } */ case 18:
189889
+ _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; }
189890
+ $panic(_r$1);
190059
189891
  $s = -1; return;
190060
- /* */ } 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;
189892
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s};return $f;
190061
189893
  };
190062
189894
  windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
190063
189895
  windowImpl.ptr.prototype.Fill = function(dr, src, op) {
@@ -190137,7 +189969,7 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
190137
189969
  var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
190138
189970
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190139
189971
  s = this;
190140
- _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; }
189972
+ _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; }
190141
189973
  $24r = [$ifaceNil, _r];
190142
189974
  $s = 2; case 2: return $24r;
190143
189975
  /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
@@ -190153,544 +189985,211 @@ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
190153
189985
  /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
190154
189986
  };
190155
189987
  screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
190156
- windowImpl.ptr.prototype.createAndAttachVertexShader = function(shaderProgram) {
190157
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, shaderProgram, vertShader, w, $s, $r, $c} = $restore(this, {shaderProgram});
190158
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190159
- w = this;
190160
- _r = w.gl.CreateVertexShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190161
- vertShader = _r;
190162
- $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; }
190163
- $r = w.gl.CompileShader(vertShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190164
- _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; }
190165
- /* */ if (!_r$1) { $s = 4; continue; }
190166
- /* */ $s = 5; continue;
190167
- /* if (!_r$1) { */ case 4:
190168
- _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; }
190169
- _arg = new $String(_r$2);
190170
- _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; }
190171
- $24r = _r$3;
190172
- $s = 9; case 9: return $24r;
190173
- /* } */ case 5:
190174
- $r = w.gl.AttachShader(shaderProgram, vertShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190175
- $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; }
190176
- $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; }
190177
- $r = w.gl.DeleteShader(vertShader); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190178
- $s = -1; return $ifaceNil;
190179
- /* */ } 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;
189988
+ newBuffer = function(screen$1, size) {
189989
+ var _q, _q$1, _q$2, b, rect, screen$1, size;
189990
+ rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
189991
+ 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);
189992
+ return b;
190180
189993
  };
190181
- windowImpl.prototype.createAndAttachVertexShader = function(shaderProgram) { return this.$val.createAndAttachVertexShader(shaderProgram); };
190182
- windowImpl.ptr.prototype.ensureYUV420Textures = function(width, height) {
190183
- 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});
190184
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190185
- w = this;
190186
- /* */ if (w.programYUV420 === ptrType$3.nil) { $s = 1; continue; }
190187
- /* */ $s = 2; continue;
190188
- /* if (w.programYUV420 === ptrType$3.nil) { */ case 1:
190189
- err = $ifaceNil;
190190
- _r = w.createAndLinkProgramYUV420(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190191
- _tuple = _r;
190192
- w.programYUV420 = _tuple[0];
190193
- err = _tuple[1];
190194
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190195
- $panic(err);
190196
- }
190197
- /* } */ case 2:
190198
- if ((w.width === width) && (w.height === height)) {
190199
- $s = -1; return;
189994
+ BufferImpl.ptr.prototype.Size = function() {
189995
+ var b;
189996
+ b = this;
189997
+ return b.size;
189998
+ };
189999
+ BufferImpl.prototype.Size = function() { return this.$val.Size(); };
190000
+ BufferImpl.ptr.prototype.Bounds = function() {
190001
+ var b;
190002
+ b = this;
190003
+ return new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(b.size, image.Point));
190004
+ };
190005
+ BufferImpl.prototype.Bounds = function() { return this.$val.Bounds(); };
190006
+ BufferImpl.ptr.prototype.RGBA = function() {
190007
+ var b;
190008
+ b = this;
190009
+ return b.rgba;
190010
+ };
190011
+ BufferImpl.prototype.RGBA = function() { return this.$val.RGBA(); };
190012
+ BufferImpl.ptr.prototype.YCbCr = function() {
190013
+ var b;
190014
+ b = this;
190015
+ return b.ycbcr;
190016
+ };
190017
+ BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
190018
+ BufferImpl.ptr.prototype.YCbCrJS = function() {
190019
+ var b;
190020
+ b = this;
190021
+ if (b.ycbcrJS === ptrType$4.nil) {
190022
+ b.ycbcrJS = new YCbCrJS.ptr(ptrType$5.nil);
190200
190023
  }
190201
- w.ensureCanvasSize(width, height);
190202
- _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; }
190203
- w.imageTexY = _r$1;
190204
- _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; }
190205
- w.imageTexU = _r$2;
190206
- _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; }
190207
- w.imageTexV = _r$3;
190208
- $r = w.gl.Enable(2929); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190209
- $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; }
190210
- w.width = width;
190211
- w.height = height;
190212
- $r = w.clear(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190024
+ return b.ycbcrJS;
190025
+ };
190026
+ BufferImpl.prototype.YCbCrJS = function() { return this.$val.YCbCrJS(); };
190027
+ BufferImpl.ptr.prototype.Release = function() {
190028
+ var {b, $s, $deferred, $r, $c} = $restore(this, {});
190029
+ /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190030
+ b = this;
190031
+ $r = b.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190032
+ $deferred.push([$methodVal(b.mutex, "Unlock"), []]);
190033
+ /* */ if (b.released) { $s = 2; continue; }
190034
+ /* */ $s = 3; continue;
190035
+ /* if (b.released) { */ case 2:
190036
+ $s = 4; case 4: return;
190037
+ /* } */ case 3:
190038
+ b.released = true;
190213
190039
  $s = -1; return;
190214
- /* */ } 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;
190215
- };
190216
- windowImpl.prototype.ensureYUV420Textures = function(width, height) { return this.$val.ensureYUV420Textures(width, height); };
190217
- windowImpl.ptr.prototype.createAndLinkProgramYUV420 = function() {
190218
- 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, {});
190219
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190220
- w = this;
190221
- _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190222
- shaderProgram = _r;
190223
- _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; }
190224
- err = _r$1;
190225
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190226
- $s = -1; return [ptrType$3.nil, err];
190227
- }
190228
- _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; }
190229
- err = _r$2;
190230
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190231
- $s = -1; return [ptrType$3.nil, err];
190232
- }
190233
- $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190234
- _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; }
190235
- /* */ if (!_r$3) { $s = 5; continue; }
190236
- /* */ $s = 6; continue;
190237
- /* if (!_r$3) { */ case 5:
190238
- _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; }
190239
- _arg = new $String(_r$4);
190240
- _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; }
190241
- $24r = [ptrType$3.nil, _r$5];
190242
- $s = 10; case 10: return $24r;
190243
- /* } */ case 6:
190244
- $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190245
- _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; }
190246
- imageYLoc = _r$6;
190247
- $r = w.gl.Uniform1i(imageYLoc, 1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190248
- _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; }
190249
- imageULoc = _r$7;
190250
- $r = w.gl.Uniform1i(imageULoc, 2); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190251
- _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; }
190252
- imageVLoc = _r$8;
190253
- $r = w.gl.Uniform1i(imageVLoc, 3); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190254
- $s = -1; return [shaderProgram, $ifaceNil];
190255
- /* */ } 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;
190256
- };
190257
- windowImpl.prototype.createAndLinkProgramYUV420 = function() { return this.$val.createAndLinkProgramYUV420(); };
190258
- windowImpl.ptr.prototype.drawBufferYUV420 = function(dp, src, sr) {
190259
- 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});
190260
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190261
- w = this;
190262
- _arg = $clone(dp, image.Point);
190263
- _r = src.YCbCr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190264
- _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; }
190265
- _arg$1 = $clone(_r$1, js.Value);
190266
- _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; }
190267
- _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; }
190268
- _arg$2 = $clone(_r$3, js.Value);
190269
- _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; }
190270
- _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; }
190271
- _arg$3 = $clone(_r$5, js.Value);
190272
- _arg$4 = $clone(sr, image.Rectangle);
190273
- $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; }
190274
- $s = -1; return;
190275
- /* */ } 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;
190276
- };
190277
- windowImpl.prototype.drawBufferYUV420 = function(dp, src, sr) { return this.$val.drawBufferYUV420(dp, src, sr); };
190278
- windowImpl.ptr.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) {
190279
- var {_q, _q$1, _q$2, _q$3, cb, cr, dp, sr, w, y, $s, $r, $c} = $restore(this, {dp, y, cb, cr, sr});
190280
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190281
- w = this;
190282
- $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; }
190283
- $r = w.gl.UseProgram(w.programYUV420); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190284
- $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; }
190285
- $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; }
190286
- $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; }
190287
- $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; }
190288
- $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; }
190289
- $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; }
190290
- $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190291
- $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; }
190292
- $s = -1; return;
190293
- /* */ } 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;
190294
- };
190295
- windowImpl.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) { return this.$val.drawBufferYUV420JSArrayBuffers(dp, y, cb, cr, sr); };
190296
- windowImpl.ptr.prototype.ensureRGBATextures = function(width, height) {
190297
- var {_r, _r$1, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
190298
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190299
- w = this;
190300
- /* */ if (w.programRGBA === ptrType$3.nil) { $s = 1; continue; }
190301
- /* */ $s = 2; continue;
190302
- /* if (w.programRGBA === ptrType$3.nil) { */ case 1:
190303
- err = $ifaceNil;
190304
- _r = w.createAndLinkProgramRGBA(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190305
- _tuple = _r;
190306
- w.programRGBA = _tuple[0];
190307
- err = _tuple[1];
190308
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190309
- $panic(err);
190310
- }
190311
- /* } */ case 2:
190312
- if ((w.width === width) && (w.height === height)) {
190313
- $s = -1; return;
190314
- }
190315
- w.ensureCanvasSize(width, height);
190316
- _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; }
190317
- w.imageTexRGBA = _r$1;
190318
- $r = w.gl.Enable(2929); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190319
- $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; }
190320
- w.width = width;
190321
- w.height = height;
190322
- $r = w.clear(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190323
- $s = -1; return;
190324
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.ensureRGBATextures, $c: true, $r, _r, _r$1, _tuple, err, height, w, width, $s};return $f;
190325
- };
190326
- windowImpl.prototype.ensureRGBATextures = function(width, height) { return this.$val.ensureRGBATextures(width, height); };
190327
- windowImpl.ptr.prototype.createAndLinkProgramRGBA = function() {
190328
- 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, {});
190329
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190330
- w = this;
190331
- _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190332
- shaderProgram = _r;
190333
- _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; }
190334
- err = _r$1;
190335
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190336
- $s = -1; return [ptrType$3.nil, err];
190337
- }
190338
- _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; }
190339
- err = _r$2;
190340
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190341
- $s = -1; return [ptrType$3.nil, err];
190342
- }
190343
- $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190344
- _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; }
190345
- /* */ if (!_r$3) { $s = 5; continue; }
190346
- /* */ $s = 6; continue;
190347
- /* if (!_r$3) { */ case 5:
190348
- _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; }
190349
- _arg = new $String(_r$4);
190350
- _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; }
190351
- $24r = [ptrType$3.nil, _r$5];
190352
- $s = 10; case 10: return $24r;
190353
- /* } */ case 6:
190354
- $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190355
- _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; }
190356
- imageLoc = _r$6;
190357
- $r = w.gl.Uniform1i(imageLoc, 0); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190358
- $s = -1; return [shaderProgram, $ifaceNil];
190359
- /* */ } 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;
190360
- };
190361
- windowImpl.prototype.createAndLinkProgramRGBA = function() { return this.$val.createAndLinkProgramRGBA(); };
190362
- windowImpl.ptr.prototype.drawBufferRGBA = function(dp, src, sr) {
190363
- 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});
190364
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190365
- w = this;
190366
- $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; }
190367
- $r = w.gl.UseProgram(w.programRGBA); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190368
- $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; }
190369
- _arg = dp.X;
190370
- _arg$1 = dp.Y;
190371
- _arg$2 = sr.Max.X;
190372
- _arg$3 = sr.Max.Y;
190373
- _r = src.RGBA(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190374
- _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; }
190375
- _arg$4 = $clone(_r$1, js.Value);
190376
- $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; }
190377
- $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190378
- $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; }
190379
- $s = -1; return;
190380
- /* */ } 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;
190381
- };
190382
- windowImpl.prototype.drawBufferRGBA = function(dp, src, sr) { return this.$val.drawBufferRGBA(dp, src, sr); };
190383
- windowImpl.ptr.prototype.createBuffers = function() {
190384
- var {_r, _r$1, _r$2, elementBuffer, emptyFloat, floatLen, vertexArray, vertexBuffer, w, $s, $r, $c} = $restore(this, {});
190385
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190386
- w = this;
190387
- _r = w.gl.CreateVertexArray(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190388
- vertexArray = _r;
190389
- _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; }
190390
- vertexBuffer = _r$1;
190391
- _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; }
190392
- elementBuffer = _r$2;
190393
- $r = w.gl.BindVertexArray(vertexArray); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190394
- $r = w.gl.BindBuffer(34962, vertexBuffer); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190395
- $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; }
190396
- $r = w.gl.BindBuffer(34963, elementBuffer); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190397
- $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; }
190398
- emptyFloat = 0;
190399
- floatLen = 4;
190400
- $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; }
190401
- $r = w.gl.EnableVertexAttribArray(0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190402
- $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; }
190403
- $r = w.gl.EnableVertexAttribArray(1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190404
- $s = -1; return vertexArray;
190405
- /* */ } 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;
190406
- };
190407
- windowImpl.prototype.createBuffers = function() { return this.$val.createBuffers(); };
190408
- windowImpl.ptr.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) {
190409
- var {$24r, _arg, _r, _r$1, _r$2, _r$3, fragShader, fragmentShaderCode, shaderProgram, w, $s, $r, $c} = $restore(this, {shaderProgram, fragmentShaderCode});
190410
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190411
- w = this;
190412
- _r = w.gl.CreateFragmentShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190413
- fragShader = _r;
190414
- $r = w.gl.ShaderSource(fragShader, fragmentShaderCode); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190415
- $r = w.gl.CompileShader(fragShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190416
- _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; }
190417
- /* */ if (!_r$1) { $s = 4; continue; }
190418
- /* */ $s = 5; continue;
190419
- /* if (!_r$1) { */ case 4:
190420
- _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; }
190421
- _arg = new $String(_r$2);
190422
- _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; }
190423
- $24r = _r$3;
190424
- $s = 9; case 9: return $24r;
190425
- /* } */ case 5:
190426
- $r = w.gl.AttachShader(shaderProgram, fragShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190427
- $r = w.gl.DeleteShader(fragShader); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190428
- $s = -1; return $ifaceNil;
190429
- /* */ } 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;
190430
- };
190431
- windowImpl.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) { return this.$val.createAndAttachFragmentShader(shaderProgram, fragmentShaderCode); };
190432
- windowImpl.ptr.prototype.createTexture = function(unit, format, width, height) {
190433
- var {_r, format, height, imageTex, unit, w, width, $s, $r, $c} = $restore(this, {unit, format, width, height});
190434
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190435
- w = this;
190436
- $r = w.gl.ActiveTexture(((unit >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190437
- _r = w.gl.CreateTexture(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190438
- imageTex = _r;
190439
- $r = w.gl.BindTexture(3553, imageTex); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190440
- $r = w.gl.TexParameterWrapS(3553, 10497); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190441
- $r = w.gl.TexParameterWrapT(3553, 10497); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190442
- $r = w.gl.TexParameterMinFilter(3553, 9729); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190443
- $r = w.gl.TexParameterMagFilter(3553, 9729); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190444
- $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; }
190445
- $s = -1; return imageTex;
190446
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createTexture, $c: true, $r, _r, format, height, imageTex, unit, w, width, $s};return $f;
190447
- };
190448
- windowImpl.prototype.createTexture = function(unit, format, width, height) { return this.$val.createTexture(unit, format, width, height); };
190449
- ArrayBufferSlice.ptr.prototype.slice = function() {
190450
- var {$24r, _r, a, $s, $r, $c} = $restore(this, {});
190451
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190452
- a = this;
190453
- _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; }
190454
- $24r = _r;
190455
- $s = 2; case 2: return $24r;
190456
- /* */ } return; } var $f = {$blk: ArrayBufferSlice.ptr.prototype.slice, $c: true, $r, $24r, _r, a, $s};return $f;
190457
- };
190458
- ArrayBufferSlice.prototype.slice = function() { return this.$val.slice(); };
190459
- newBuffer = function(screen$1, size) {
190460
- var _q, _q$1, _q$2, b, rect, screen$1, size;
190461
- rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
190462
- 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);
190463
- return b;
190464
- };
190465
- BufferImpl.ptr.prototype.Size = function() {
190466
- var b;
190467
- b = this;
190468
- return b.size;
190469
- };
190470
- BufferImpl.prototype.Size = function() { return this.$val.Size(); };
190471
- BufferImpl.ptr.prototype.Bounds = function() {
190472
- var b;
190473
- b = this;
190474
- return new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(b.size, image.Point));
190475
- };
190476
- BufferImpl.prototype.Bounds = function() { return this.$val.Bounds(); };
190477
- BufferImpl.ptr.prototype.RGBA = function() {
190478
- var b;
190479
- b = this;
190480
- return b.rgba;
190481
- };
190482
- BufferImpl.prototype.RGBA = function() { return this.$val.RGBA(); };
190483
- BufferImpl.ptr.prototype.YCbCr = function() {
190484
- var b;
190485
- b = this;
190486
- return b.ycbcr;
190487
- };
190488
- BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
190489
- BufferImpl.ptr.prototype.YCbCrJS = function() {
190490
- var {_r, b, emptyBuffer, $s, $r, $c} = $restore(this, {});
190491
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190492
- b = this;
190493
- /* */ if (b.ycbcrJS === ptrType$8.nil) { $s = 1; continue; }
190494
- /* */ $s = 2; continue;
190495
- /* if (b.ycbcrJS === ptrType$8.nil) { */ case 1:
190496
- _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; }
190497
- emptyBuffer = $clone(_r, js.Value);
190498
- 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);
190499
- /* } */ case 2:
190500
- $s = -1; return b.ycbcrJS;
190501
- /* */ } return; } var $f = {$blk: BufferImpl.ptr.prototype.YCbCrJS, $c: true, $r, _r, b, emptyBuffer, $s};return $f;
190502
- };
190503
- BufferImpl.prototype.YCbCrJS = function() { return this.$val.YCbCrJS(); };
190504
- BufferImpl.ptr.prototype.Release = function() {
190505
- var {b, $s, $deferred, $r, $c} = $restore(this, {});
190506
- /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190507
- b = this;
190508
- $r = b.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190509
- $deferred.push([$methodVal(b.mutex, "Unlock"), []]);
190510
- /* */ if (b.released) { $s = 2; continue; }
190511
- /* */ $s = 3; continue;
190512
- /* if (b.released) { */ case 2:
190513
- $s = 4; case 4: return;
190514
- /* } */ case 3:
190515
- b.released = true;
190516
- $s = -1; return;
190517
- /* */ } 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; } }
190040
+ /* */ } 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; } }
190518
190041
  };
190519
190042
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
190520
- 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)}];
190521
- 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)}];
190522
- ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
190523
- 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)}];
190524
- 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: ""}]);
190525
- screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190526
- 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: ""}]);
190527
- 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: ""}]);
190528
- 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: ""}]);
190043
+ 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)}];
190044
+ 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)}];
190045
+ 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)}];
190046
+ 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: ""}]);
190047
+ screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190048
+ YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$5, tag: ""}]);
190049
+ 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: ""}]);
190529
190050
  $init = function() {
190530
190051
  $pkg.$init = function() {};
190531
190052
  /* */ 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:
190532
190053
  $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190533
- $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190534
- $r = types.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190535
- $r = errscreen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190536
- $r = dom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190537
- $r = imageutil.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190538
- $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190539
- $r = f64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190540
- $r = image.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190541
- $r = color.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190542
- $r = draw.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190543
- $r = sync.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190544
- $r = js.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190545
- texCoordsVertices = new sliceType([1, 1, 1, 0, 1, -1, 1, 1, -1, -1, 0, 1, -1, 1, 0, 0]);
190546
- elementsIndices = new sliceType$1([0, 1, 3, 1, 2, 3]);
190054
+ $r = errscreen.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190055
+ $r = dom.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190056
+ $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190057
+ $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190058
+ $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190059
+ $r = color.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190060
+ $r = draw.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190061
+ $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190062
+ $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190547
190063
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190548
190064
  };
190549
190065
  $pkg.$init = $init;
190550
190066
  return $pkg;
190551
190067
  })();
190552
- $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (function() {
190553
- var $pkg = {}, $init, md5, hex, general, errs, webgldriver, image, log, js;
190554
- md5 = $packages["crypto/md5"];
190068
+ $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function() {
190069
+ var $pkg = {}, $init, hex, webgl, general, errs, jshelper, canvasdriver, image, log, js;
190555
190070
  hex = $packages["encoding/hex"];
190071
+ webgl = $packages["github.com/nuberu/webgl"];
190556
190072
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
190557
190073
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190558
- webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
190074
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190075
+ canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
190559
190076
  image = $packages["image"];
190560
190077
  log = $packages["log"];
190561
190078
  js = $packages["syscall/js"];
190562
190079
  $init = function() {
190563
190080
  $pkg.$init = function() {};
190564
190081
  /* */ 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:
190565
- $r = md5.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190566
- $r = hex.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190082
+ $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190083
+ $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190567
190084
  $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190568
190085
  $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190569
- $r = webgldriver.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190570
- $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190571
- $r = log.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190572
- $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190086
+ $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190087
+ $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190088
+ $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190089
+ $r = log.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190090
+ $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190573
190091
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190574
190092
  };
190575
190093
  $pkg.$init = $init;
190576
190094
  return $pkg;
190577
190095
  })();
190578
- $packages["github.com/supraio/client-daemon/pkg/videostream"] = (function() {
190579
- var $pkg = {}, $init, Protocol, videoStreamer, Register;
190580
- Protocol = $pkg.Protocol = $newType(1, $kindUint8, "videostream.Protocol", true, "github.com/supraio/client-daemon/pkg/videostream", true, null);
190581
- Register = function(newVideoStreamer) {
190582
- var newVideoStreamer;
190583
- if (!($interfaceIsEqual(videoStreamer, $ifaceNil))) {
190584
- $panic(new $String("VideoStreamer already registered"));
190585
- }
190586
- videoStreamer = newVideoStreamer;
190096
+ $packages["github.com/supraio/client-daemon/pkg/input"] = (function() {
190097
+ var $pkg = {}, $init, binary, fmt, errs, message, focus, key, mouse, sync;
190098
+ binary = $packages["encoding/binary"];
190099
+ fmt = $packages["fmt"];
190100
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190101
+ message = $packages["github.com/supraio/client-daemon/pkg/message"];
190102
+ focus = $packages["golang.org/x/mobile/event/focus"];
190103
+ key = $packages["golang.org/x/mobile/event/key"];
190104
+ mouse = $packages["golang.org/x/mobile/event/mouse"];
190105
+ sync = $packages["sync"];
190106
+ $init = function() {
190107
+ $pkg.$init = function() {};
190108
+ /* */ 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:
190109
+ $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190110
+ $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190111
+ $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190112
+ $r = message.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190113
+ $r = focus.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190114
+ $r = key.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190115
+ $r = mouse.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190116
+ $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190117
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190587
190118
  };
190588
- $pkg.Register = Register;
190119
+ $pkg.$init = $init;
190120
+ return $pkg;
190121
+ })();
190122
+ $packages["github.com/supraio/client-daemon/pkg/render/frame"] = (function() {
190123
+ var $pkg = {}, $init, time;
190124
+ time = $packages["time"];
190589
190125
  $init = function() {
190590
190126
  $pkg.$init = function() {};
190591
190127
  /* */ 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:
190592
- videoStreamer = $ifaceNil;
190128
+ $r = time.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190593
190129
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190594
190130
  };
190595
190131
  $pkg.$init = $init;
190596
190132
  return $pkg;
190597
190133
  })();
190598
- $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function() {
190599
- var $pkg = {}, $init, fmt, general, errs, jshelper, videostream, js, SOSVideoStreamer, funcType, arrayType, ptrType$1, init;
190600
- fmt = $packages["fmt"];
190601
- general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
190134
+ $packages["github.com/supraio/client-daemon/pkg/render/netframe"] = (function() {
190135
+ var $pkg = {}, $init, binary, errs, netpacket, frame;
190136
+ binary = $packages["encoding/binary"];
190602
190137
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
190603
- jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
190604
- videostream = $packages["github.com/supraio/client-daemon/pkg/videostream"];
190605
- js = $packages["syscall/js"];
190606
- SOSVideoStreamer = $pkg.SOSVideoStreamer = $newType(0, $kindStruct, "sosstream.SOSVideoStreamer", true, "github.com/supraio/client-daemon/pkg/decoder/sosstream", true, function(sos_) {
190607
- this.$val = this;
190608
- if (arguments.length === 0) {
190609
- this.sos = new js.Value.ptr(null, false, arrayType.zero());
190610
- return;
190611
- }
190612
- this.sos = sos_;
190613
- });
190614
- funcType = $funcType([], [], false);
190615
- arrayType = $arrayType(funcType, 0);
190616
- ptrType$1 = $ptrType(SOSVideoStreamer);
190617
- init = function() {
190618
- var videoStreamer;
190619
- videoStreamer = new SOSVideoStreamer.ptr($clone($clone(js.Global(), js.Value).Get("sos"), js.Value));
190620
- videostream.Register(videoStreamer);
190621
- };
190622
- SOSVideoStreamer.ptr.prototype.IsAvailable = function() {
190623
- var m;
190624
- m = this;
190625
- return !$clone(m.sos, js.Value).IsUndefined() && $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("stream"), js.Value).Truthy();
190626
- };
190627
- SOSVideoStreamer.prototype.IsAvailable = function() { return this.$val.IsAvailable(); };
190628
- SOSVideoStreamer.ptr.prototype.GetProtocol = function() {
190629
- var _1, m, protocol, protocolValue;
190630
- m = this;
190631
- protocolValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamProtocol"), js.Value);
190632
- protocol = 0;
190633
- if (!$clone(protocolValue, js.Value).IsUndefined() && ($clone(protocolValue, js.Value).Type() === 4)) {
190634
- _1 = $clone(protocolValue, js.Value).String();
190635
- if (_1 === ("UDP")) {
190636
- protocol = 0;
190637
- } else if (_1 === ("HTTP")) {
190638
- protocol = 1;
190639
- } else if (_1 === ("HTTPMP4")) {
190640
- protocol = 2;
190641
- } else if (_1 === ("RTP")) {
190642
- protocol = 3;
190643
- } else {
190644
- protocol = 0;
190645
- }
190646
- }
190647
- return protocol;
190648
- };
190649
- SOSVideoStreamer.prototype.GetProtocol = function() { return this.$val.GetProtocol(); };
190650
- SOSVideoStreamer.ptr.prototype.GetPort = function() {
190651
- var m, port, portValue;
190652
- m = this;
190653
- portValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamPort"), js.Value);
190654
- port = 5000;
190655
- if (!$clone(portValue, js.Value).IsUndefined() && ($clone(portValue, js.Value).Type() === 3)) {
190656
- port = $clone(portValue, js.Value).Int();
190657
- }
190658
- return ((port << 16 >>> 16));
190138
+ netpacket = $packages["github.com/supraio/client-daemon/pkg/netpacket"];
190139
+ frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
190140
+ $init = function() {
190141
+ $pkg.$init = function() {};
190142
+ /* */ 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:
190143
+ $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190144
+ $r = errs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190145
+ $r = netpacket.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190146
+ $r = frame.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190147
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190659
190148
  };
190660
- SOSVideoStreamer.prototype.GetPort = function() { return this.$val.GetPort(); };
190661
- SOSVideoStreamer.ptr.prototype.GetHostname = function() {
190662
- var hostname, hostnameValue, m;
190663
- m = this;
190664
- hostnameValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamHostname"), js.Value);
190665
- hostname = "";
190666
- if (!$clone(hostnameValue, js.Value).IsUndefined() && ($clone(hostnameValue, js.Value).Type() === 4)) {
190667
- hostname = $clone(hostnameValue, js.Value).String();
190668
- }
190669
- return hostname;
190149
+ $pkg.$init = $init;
190150
+ return $pkg;
190151
+ })();
190152
+ $packages["golang.org/x/exp/shiny/imageutil"] = (function() {
190153
+ var $pkg = {}, $init, screen, image, draw, ConvertYCbCrToRGBA;
190154
+ screen = $packages["golang.org/x/exp/shiny/screen"];
190155
+ image = $packages["image"];
190156
+ draw = $packages["image/draw"];
190157
+ ConvertYCbCrToRGBA = function(b) {
190158
+ var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, b, $s, $r, $c} = $restore(this, {b});
190159
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190160
+ _r = b.RGBA(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190161
+ _arg = _r;
190162
+ _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; }
190163
+ _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; }
190164
+ _arg$1 = $clone(_r$2, image.Rectangle);
190165
+ _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; }
190166
+ _arg$2 = _r$3;
190167
+ _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; }
190168
+ _arg$3 = $clone(_r$4.Rect.Min, image.Point);
190169
+ $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; }
190170
+ $s = -1; return;
190171
+ /* */ } 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;
190670
190172
  };
190671
- SOSVideoStreamer.prototype.GetHostname = function() { return this.$val.GetHostname(); };
190672
- ptrType$1.methods = [{prop: "IsAvailable", name: "IsAvailable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "GetProtocol", name: "GetProtocol", pkg: "", typ: $funcType([], [videostream.Protocol], false)}, {prop: "GetPort", name: "GetPort", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "GetHostname", name: "GetHostname", pkg: "", typ: $funcType([], [$String], false)}];
190673
- SOSVideoStreamer.init("github.com/supraio/client-daemon/pkg/decoder/sosstream", [{prop: "sos", name: "sos", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190173
+ $pkg.ConvertYCbCrToRGBA = ConvertYCbCrToRGBA;
190674
190174
  $init = function() {
190675
190175
  $pkg.$init = function() {};
190676
190176
  /* */ 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:
190677
- $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190678
- $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190679
- $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190680
- $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190681
- $r = videostream.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190682
- $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190683
- init();
190177
+ $r = screen.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190178
+ $r = image.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190179
+ $r = draw.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190684
190180
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
190685
190181
  };
190686
190182
  $pkg.$init = $init;
190687
190183
  return $pkg;
190688
190184
  })();
190689
- $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190690
- 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;
190185
+ $packages["golang.org/x/exp/shiny/driver/webgldriver"] = (function() {
190186
+ 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;
190691
190187
  fmt = $packages["fmt"];
190188
+ webgl = $packages["github.com/nuberu/webgl"];
190189
+ types = $packages["github.com/nuberu/webgl/types"];
190692
190190
  errscreen = $packages["golang.org/x/exp/shiny/driver/internal/errscreen"];
190693
190191
  dom = $packages["golang.org/x/exp/shiny/driver/util/dom"];
190192
+ imageutil = $packages["golang.org/x/exp/shiny/imageutil"];
190694
190193
  screen = $packages["golang.org/x/exp/shiny/screen"];
190695
190194
  f64 = $packages["golang.org/x/image/math/f64"];
190696
190195
  image = $packages["image"];
@@ -190698,27 +190197,43 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190698
190197
  draw = $packages["image/draw"];
190699
190198
  sync = $packages["sync"];
190700
190199
  js = $packages["syscall/js"];
190701
- 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_) {
190200
+ 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_) {
190702
190201
  this.$val = this;
190703
190202
  if (arguments.length === 0) {
190704
190203
  this.screen = ptrType.nil;
190705
190204
  this.mutex = ptrType$1.nil;
190706
190205
  this.canvasEl = new js.Value.ptr(null, false, arrayType.zero());
190707
- this.ctx2d = new js.Value.ptr(null, false, arrayType.zero());
190206
+ this.gl = ptrType$2.nil;
190207
+ this.programRGBA = ptrType$3.nil;
190208
+ this.imageTexRGBA = ptrType$4.nil;
190209
+ this.programYUV420 = ptrType$3.nil;
190210
+ this.imageTexY = ptrType$4.nil;
190211
+ this.imageTexU = ptrType$4.nil;
190212
+ this.imageTexV = ptrType$4.nil;
190213
+ this.vertexArray = ptrType$5.nil;
190708
190214
  this.released = false;
190709
- this.domEvents = ptrType$2.nil;
190710
- this.resizeCallback = new js.Func.ptr(new js.Value.ptr(null, false, arrayType.zero()));
190215
+ this.domEvents = ptrType$6.nil;
190216
+ this.width = 0;
190217
+ this.height = 0;
190711
190218
  return;
190712
190219
  }
190713
190220
  this.screen = screen_;
190714
190221
  this.mutex = mutex_;
190715
190222
  this.canvasEl = canvasEl_;
190716
- this.ctx2d = ctx2d_;
190223
+ this.gl = gl_;
190224
+ this.programRGBA = programRGBA_;
190225
+ this.imageTexRGBA = imageTexRGBA_;
190226
+ this.programYUV420 = programYUV420_;
190227
+ this.imageTexY = imageTexY_;
190228
+ this.imageTexU = imageTexU_;
190229
+ this.imageTexV = imageTexV_;
190230
+ this.vertexArray = vertexArray_;
190717
190231
  this.released = released_;
190718
190232
  this.domEvents = domEvents_;
190719
- this.resizeCallback = resizeCallback_;
190233
+ this.width = width_;
190234
+ this.height = height_;
190720
190235
  });
190721
- screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "canvasdriver.screenImpl", true, "golang.org/x/exp/shiny/driver/canvasdriver", false, function(doc_) {
190236
+ screenImpl = $pkg.screenImpl = $newType(0, $kindStruct, "webgldriver.screenImpl", true, "golang.org/x/exp/shiny/driver/webgldriver", false, function(doc_) {
190722
190237
  this.$val = this;
190723
190238
  if (arguments.length === 0) {
190724
190239
  this.doc = new js.Value.ptr(null, false, arrayType.zero());
@@ -190726,24 +190241,50 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190726
190241
  }
190727
190242
  this.doc = doc_;
190728
190243
  });
190729
- YCbCrJS = $pkg.YCbCrJS = $newType(0, $kindStruct, "canvasdriver.YCbCrJS", true, "golang.org/x/exp/shiny/driver/canvasdriver", true, function(CanvasImageSource_) {
190244
+ ArrayBufferSlice = $pkg.ArrayBufferSlice = $newType(0, $kindStruct, "webgldriver.ArrayBufferSlice", true, "golang.org/x/exp/shiny/driver/webgldriver", true, function(ArrayBuffer_, Offset_, Length_) {
190730
190245
  this.$val = this;
190731
190246
  if (arguments.length === 0) {
190732
- this.CanvasImageSource = ptrType$5.nil;
190247
+ this.ArrayBuffer = new js.Value.ptr(null, false, arrayType.zero());
190248
+ this.Offset = 0;
190249
+ this.Length = 0;
190733
190250
  return;
190734
190251
  }
190735
- this.CanvasImageSource = CanvasImageSource_;
190252
+ this.ArrayBuffer = ArrayBuffer_;
190253
+ this.Offset = Offset_;
190254
+ this.Length = Length_;
190736
190255
  });
190737
- 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_) {
190256
+ 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_) {
190257
+ this.$val = this;
190258
+ if (arguments.length === 0) {
190259
+ this.Y = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
190260
+ this.Cb = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
190261
+ this.Cr = new ArrayBufferSlice.ptr(new js.Value.ptr(null, false, arrayType.zero()), 0, 0);
190262
+ this.YStride = 0;
190263
+ this.CStride = 0;
190264
+ this.SubsampleRatio = 0;
190265
+ this.Rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), new image.Point.ptr(0, 0));
190266
+ this.Use = false;
190267
+ return;
190268
+ }
190269
+ this.Y = Y_;
190270
+ this.Cb = Cb_;
190271
+ this.Cr = Cr_;
190272
+ this.YStride = YStride_;
190273
+ this.CStride = CStride_;
190274
+ this.SubsampleRatio = SubsampleRatio_;
190275
+ this.Rect = Rect_;
190276
+ this.Use = Use_;
190277
+ });
190278
+ 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_) {
190738
190279
  this.$val = this;
190739
190280
  if (arguments.length === 0) {
190740
190281
  this.screen = ptrType.nil;
190741
190282
  this.size = new image.Point.ptr(0, 0);
190742
190283
  this.mutex = ptrType$1.nil;
190743
190284
  this.released = false;
190744
- 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)));
190745
- 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)));
190746
- this.ycbcrJS = ptrType$4.nil;
190285
+ 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)));
190286
+ 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)));
190287
+ this.ycbcrJS = ptrType$8.nil;
190747
190288
  return;
190748
190289
  }
190749
190290
  this.screen = screen_;
@@ -190754,85 +190295,89 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190754
190295
  this.ycbcr = ycbcr_;
190755
190296
  this.ycbcrJS = ycbcrJS_;
190756
190297
  });
190757
- sliceType = $sliceType($emptyInterface);
190298
+ sliceType = $sliceType($Float32);
190299
+ sliceType$1 = $sliceType($Uint16);
190300
+ sliceType$2 = $sliceType($emptyInterface);
190758
190301
  ptrType = $ptrType(screenImpl);
190759
190302
  ptrType$1 = $ptrType(sync.Mutex);
190760
190303
  funcType = $funcType([], [], false);
190761
190304
  arrayType = $arrayType(funcType, 0);
190762
- ptrType$2 = $ptrType(dom.DomEvents);
190763
- ptrType$3 = $ptrType(BufferImpl);
190764
- sliceType$1 = $sliceType($Uint8);
190765
- ptrType$4 = $ptrType(YCbCrJS);
190766
- ptrType$5 = $ptrType(js.Value);
190767
- ptrType$6 = $ptrType(screen.DrawOptions);
190768
- ptrType$7 = $ptrType(windowImpl);
190769
- ptrType$8 = $ptrType(screen.NewWindowOptions);
190770
- ptrType$9 = $ptrType(image.RGBA);
190771
- ptrType$10 = $ptrType(image.YCbCr);
190305
+ ptrType$2 = $ptrType(webgl.RenderingContext);
190306
+ ptrType$3 = $ptrType(types.Program);
190307
+ ptrType$4 = $ptrType(types.Texture);
190308
+ ptrType$5 = $ptrType(types.VertexArray);
190309
+ ptrType$6 = $ptrType(dom.DomEvents);
190310
+ ptrType$7 = $ptrType(BufferImpl);
190311
+ sliceType$3 = $sliceType($Uint8);
190312
+ ptrType$8 = $ptrType(YCbCrJS);
190313
+ ptrType$9 = $ptrType(screen.DrawOptions);
190314
+ ptrType$10 = $ptrType(windowImpl);
190315
+ ptrType$11 = $ptrType(screen.NewWindowOptions);
190316
+ ptrType$12 = $ptrType(ArrayBufferSlice);
190317
+ ptrType$13 = $ptrType(image.RGBA);
190318
+ ptrType$14 = $ptrType(image.YCbCr);
190772
190319
  newWindow = function(screen$1, opts) {
190773
- 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});
190320
+ 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});
190774
190321
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190775
- adaptCanvas = [adaptCanvas];
190776
- canvasEl = [canvasEl];
190777
- _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; }
190778
- canvasEl[0] = $clone(_r, js.Value);
190779
- _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; }
190322
+ _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; }
190323
+ canvasEl = $clone(_r, js.Value);
190324
+ _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; }
190780
190325
  _r$1;
190781
- adaptCanvas[0] = (function(adaptCanvas, canvasEl) { return function() {
190782
- var height, scale, width;
190783
- scale = dom.GetBrowserZoomRatio();
190784
- width = (((dom.GetScreenWidth()) / scale >> 0));
190785
- if (!(($clone($clone(canvasEl[0], js.Value).Get("width"), js.Value).Int() === width))) {
190786
- $clone(canvasEl[0], js.Value).Set("width", new $Int(width));
190787
- }
190788
- height = (((dom.GetScreenHeight()) / scale >> 0));
190789
- if (!(($clone($clone(canvasEl[0], js.Value).Get("height"), js.Value).Int() === height))) {
190790
- $clone(canvasEl[0], js.Value).Set("height", new $Int(height));
190791
- }
190792
- }; })(adaptCanvas, canvasEl);
190793
- $r = adaptCanvas[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190794
- resizeCallback = $clone(js.FuncOf((function(adaptCanvas, canvasEl) { return function $b(this$1, args) {
190795
- var {args, this$1, $s, $r, $c} = $restore(this, {this$1, args});
190796
- /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190797
- $r = adaptCanvas[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190798
- $s = -1; return $ifaceNil;
190799
- /* */ } return; } var $f = {$blk: $b, $c: true, $r, args, this$1, $s};return $f;
190800
- }; })(adaptCanvas, canvasEl)), js.Func);
190801
- _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; }
190802
- _r$2;
190803
- /* */ if (!((opts.Width === 0))) { $s = 5; continue; }
190804
- /* */ $s = 6; continue;
190805
- /* if (!((opts.Width === 0))) { */ case 5:
190806
- $r = dom.SetWindowWidth(opts.Width); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190807
- /* } */ case 6:
190808
- /* */ if (!((opts.Height === 0))) { $s = 8; continue; }
190809
- /* */ $s = 9; continue;
190810
- /* if (!((opts.Height === 0))) { */ case 8:
190811
- $r = dom.SetWindowHeight(opts.Height); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190812
- /* } */ case 9:
190813
- /* */ if (!(opts.Title === "")) { $s = 11; continue; }
190814
- /* */ $s = 12; continue;
190815
- /* if (!(opts.Title === "")) { */ case 11:
190816
- _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; }
190817
- _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; }
190818
- $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; }
190819
- /* } */ case 12:
190820
- _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; }
190821
- ctx2d = $clone(_r$5, js.Value);
190822
- /* */ if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { $s = 17; continue; }
190823
- /* */ $s = 18; continue;
190824
- /* if ($clone(ctx2d, js.Value).IsUndefined() || $clone(ctx2d, js.Value).IsNull()) { */ case 17:
190825
- _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; }
190826
- $panic(_r$6);
190827
- /* } */ case 18:
190326
+ _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; }
190327
+ _tuple = _r$2;
190328
+ gl = _tuple[0];
190329
+ err = _tuple[1];
190330
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190331
+ $panic(err);
190332
+ }
190828
190333
  domEvents = dom.NewDomEvents();
190829
- w = new windowImpl.ptr(screen$1, ptrType$1.nil, $clone(canvasEl[0], js.Value), $clone(ctx2d, js.Value), false, domEvents, $clone(resizeCallback, js.Func));
190830
- $r = domEvents.BindEvents(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190334
+ 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);
190335
+ /* */ if (!((opts.Width === 0))) { $s = 4; continue; }
190336
+ /* */ $s = 5; continue;
190337
+ /* if (!((opts.Width === 0))) { */ case 4:
190338
+ $r = dom.SetWindowWidth(opts.Width); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190339
+ /* } */ case 5:
190340
+ /* */ if (!((opts.Height === 0))) { $s = 7; continue; }
190341
+ /* */ $s = 8; continue;
190342
+ /* if (!((opts.Height === 0))) { */ case 7:
190343
+ $r = dom.SetWindowHeight(opts.Height); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190344
+ /* } */ case 8:
190345
+ /* */ if (!(opts.Title === "")) { $s = 10; continue; }
190346
+ /* */ $s = 11; continue;
190347
+ /* if (!(opts.Title === "")) { */ case 10:
190348
+ _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; }
190349
+ _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; }
190350
+ $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; }
190351
+ /* } */ case 11:
190352
+ _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; }
190353
+ w.vertexArray = _r$5;
190354
+ $r = domEvents.BindEvents(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190831
190355
  $s = -1; return w;
190832
- /* */ } 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;
190356
+ /* */ } 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;
190357
+ };
190358
+ windowImpl.ptr.prototype.ensureCanvasSize = function(width, height) {
190359
+ var height, w, width;
190360
+ w = this;
190361
+ if (!(($clone($clone(w.canvasEl, js.Value).Get("width"), js.Value).Int() === width))) {
190362
+ $clone(w.canvasEl, js.Value).Set("width", new $Int(width));
190363
+ }
190364
+ if (!(($clone($clone(w.canvasEl, js.Value).Get("height"), js.Value).Int() === height))) {
190365
+ $clone(w.canvasEl, js.Value).Set("height", new $Int(height));
190366
+ }
190367
+ };
190368
+ windowImpl.prototype.ensureCanvasSize = function(width, height) { return this.$val.ensureCanvasSize(width, height); };
190369
+ windowImpl.ptr.prototype.clear = function() {
190370
+ var {w, $s, $r, $c} = $restore(this, {});
190371
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190372
+ w = this;
190373
+ $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; }
190374
+ $r = w.gl.Clear(16384); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190375
+ $s = -1; return;
190376
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.clear, $c: true, $r, w, $s};return $f;
190833
190377
  };
190378
+ windowImpl.prototype.clear = function() { return this.$val.clear(); };
190834
190379
  windowImpl.ptr.prototype.Release = function() {
190835
- var {_r, _r$1, w, x, $s, $deferred, $r, $c} = $restore(this, {});
190380
+ var {_r, w, $s, $deferred, $r, $c} = $restore(this, {});
190836
190381
  /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred);
190837
190382
  w = this;
190838
190383
  $r = w.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
@@ -190841,16 +190386,13 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190841
190386
  /* */ $s = 3; continue;
190842
190387
  /* if (w.released) { */ case 2:
190843
190388
  $s = 4; case 4: return;
190844
- /* } */ case 3:
190845
- _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; }
190846
- _r;
190847
- $clone(w.resizeCallback, js.Func).Release();
190848
- _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; }
190849
- _r$1;
190850
- $r = w.domEvents.Release(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190389
+ /* } */ case 3:
190390
+ _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; }
190391
+ _r;
190392
+ $r = w.domEvents.Release(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190851
190393
  w.released = true;
190852
190394
  $s = -1; return;
190853
- /* */ } 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; } }
190395
+ /* */ } 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; } }
190854
190396
  };
190855
190397
  windowImpl.prototype.Release = function() { return this.$val.Release(); };
190856
190398
  windowImpl.ptr.prototype.Publish = function() {
@@ -190877,151 +190419,487 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
190877
190419
  if (w.released) {
190878
190420
  return;
190879
190421
  }
190880
- $panic(new $String("Not implemented"));
190422
+ $panic(new $String("Not implemented"));
190423
+ };
190424
+ windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
190425
+ windowImpl.ptr.prototype.NextEvent = function() {
190426
+ var {_r, ev, w, $s, $r, $c} = $restore(this, {});
190427
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190428
+ w = this;
190429
+ _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190430
+ ev = _r[0];
190431
+ $s = -1; return ev;
190432
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
190433
+ };
190434
+ windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
190435
+ windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
190436
+ var {dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
190437
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190438
+ w = this;
190439
+ if (w.released) {
190440
+ $s = -1; return;
190441
+ }
190442
+ $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; }
190443
+ $s = -1; return;
190444
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, dp, sr, src, w, $s};return $f;
190445
+ };
190446
+ windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
190447
+ windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
190448
+ 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});
190449
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190450
+ w = this;
190451
+ if (w.released) {
190452
+ $s = -1; return;
190453
+ }
190454
+ _ref = src;
190455
+ /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
190456
+ /* */ $s = 2; continue;
190457
+ /* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
190458
+ jsSrc = _ref.$val;
190459
+ _r = jsSrc.YCbCrJS(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190460
+ /* */ if (_r.Use) { $s = 3; continue; }
190461
+ /* */ $s = 4; continue;
190462
+ /* if (_r.Use) { */ case 3:
190463
+ _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; }
190464
+ /* */ if (!((_r$1.SubsampleRatio === 2))) { $s = 6; continue; }
190465
+ /* */ $s = 7; continue;
190466
+ /* if (!((_r$1.SubsampleRatio === 2))) { */ case 6:
190467
+ $panic(new $String("Only image.YCbCrSubsampleRatio420 SubsampleRatio is currently supported"));
190468
+ /* } */ case 7:
190469
+ _arg = $clone(dp, image.Point);
190470
+ _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; }
190471
+ _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; }
190472
+ _arg$1 = $clone(_r$3, js.Value);
190473
+ _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; }
190474
+ _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; }
190475
+ _arg$2 = $clone(_r$5, js.Value);
190476
+ _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; }
190477
+ _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; }
190478
+ _arg$3 = $clone(_r$7, js.Value);
190479
+ _arg$4 = $clone(sr, image.Rectangle);
190480
+ $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; }
190481
+ $s = -1; return;
190482
+ /* } */ case 4:
190483
+ /* } */ case 2:
190484
+ _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; }
190485
+ /* */ if (_r$8.SubsampleRatio === 2) { $s = 16; continue; }
190486
+ /* */ $s = 17; continue;
190487
+ /* if (_r$8.SubsampleRatio === 2) { */ case 16:
190488
+ $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; }
190489
+ $s = 18; continue;
190490
+ /* } else { */ case 17:
190491
+ _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; }
190492
+ /* */ if (_r$9.Pix.$length === 0) { $s = 21; continue; }
190493
+ /* */ $s = 22; continue;
190494
+ /* if (_r$9.Pix.$length === 0) { */ case 21:
190495
+ $r = imageutil.ConvertYCbCrToRGBA(src); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190496
+ /* } */ case 22:
190497
+ $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; }
190498
+ /* } */ case 18:
190499
+ $s = -1; return;
190500
+ /* */ } 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;
190501
+ };
190502
+ windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
190503
+ windowImpl.ptr.prototype.Fill = function(dr, src, op) {
190504
+ var dr, op, src, w;
190505
+ w = this;
190506
+ if (w.released) {
190507
+ return;
190508
+ }
190509
+ $panic(new $String("Not implemented"));
190510
+ };
190511
+ windowImpl.prototype.Fill = function(dr, src, op) { return this.$val.Fill(dr, src, op); };
190512
+ windowImpl.ptr.prototype.Draw = function(src2dst, src, sr, op, opts) {
190513
+ var op, opts, sr, src, src2dst, w;
190514
+ w = this;
190515
+ if (w.released) {
190516
+ return;
190517
+ }
190518
+ $panic(new $String("Not implemented"));
190519
+ };
190520
+ windowImpl.prototype.Draw = function(src2dst, src, sr, op, opts) { return this.$val.Draw(src2dst, src, sr, op, opts); };
190521
+ windowImpl.ptr.prototype.DrawUniform = function(src2dst, src, sr, op, opts) {
190522
+ var op, opts, sr, src, src2dst, w;
190523
+ w = this;
190524
+ if (w.released) {
190525
+ return;
190526
+ }
190527
+ $panic(new $String("Not implemented"));
190528
+ };
190529
+ windowImpl.prototype.DrawUniform = function(src2dst, src, sr, op, opts) { return this.$val.DrawUniform(src2dst, src, sr, op, opts); };
190530
+ windowImpl.ptr.prototype.Copy = function(dp, src, sr, op, opts) {
190531
+ var dp, op, opts, sr, src, w;
190532
+ w = this;
190533
+ if (w.released) {
190534
+ return;
190535
+ }
190536
+ $panic(new $String("Not implemented"));
190537
+ };
190538
+ windowImpl.prototype.Copy = function(dp, src, sr, op, opts) { return this.$val.Copy(dp, src, sr, op, opts); };
190539
+ windowImpl.ptr.prototype.Scale = function(dr, src, sr, op, opts) {
190540
+ var dr, op, opts, sr, src, w;
190541
+ w = this;
190542
+ if (w.released) {
190543
+ return;
190544
+ }
190545
+ $panic(new $String("Not implemented"));
190546
+ };
190547
+ windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
190548
+ main = function(f) {
190549
+ var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
190550
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190551
+ retErr = $ifaceNil;
190552
+ _tuple = newScreenImpl();
190553
+ s = _tuple[0];
190554
+ err = _tuple[1];
190555
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190556
+ retErr = err;
190557
+ $s = -1; return retErr;
190558
+ }
190559
+ $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190560
+ retErr = $ifaceNil;
190561
+ $s = -1; return retErr;
190562
+ /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
190563
+ };
190564
+ newScreenImpl = function() {
190565
+ var s;
190566
+ s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
190567
+ return [s, $ifaceNil];
190568
+ };
190569
+ screenImpl.ptr.prototype.NewBuffer = function(size) {
190570
+ var buffer, s, size;
190571
+ s = this;
190572
+ buffer = newBuffer(s, $clone(size, image.Point));
190573
+ return [buffer, $ifaceNil];
190574
+ };
190575
+ screenImpl.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
190576
+ screenImpl.ptr.prototype.NewTexture = function(size) {
190577
+ var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
190578
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190579
+ s = this;
190580
+ _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; }
190581
+ $24r = [$ifaceNil, _r];
190582
+ $s = 2; case 2: return $24r;
190583
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
190584
+ };
190585
+ screenImpl.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
190586
+ screenImpl.ptr.prototype.NewWindow = function(opts) {
190587
+ var {_r, opts, s, window, $s, $r, $c} = $restore(this, {opts});
190588
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190589
+ s = this;
190590
+ _r = newWindow(s, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190591
+ window = _r;
190592
+ $s = -1; return [window, $ifaceNil];
190593
+ /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
190594
+ };
190595
+ screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
190596
+ windowImpl.ptr.prototype.createAndAttachVertexShader = function(shaderProgram) {
190597
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, shaderProgram, vertShader, w, $s, $r, $c} = $restore(this, {shaderProgram});
190598
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190599
+ w = this;
190600
+ _r = w.gl.CreateVertexShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190601
+ vertShader = _r;
190602
+ $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; }
190603
+ $r = w.gl.CompileShader(vertShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190604
+ _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; }
190605
+ /* */ if (!_r$1) { $s = 4; continue; }
190606
+ /* */ $s = 5; continue;
190607
+ /* if (!_r$1) { */ case 4:
190608
+ _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; }
190609
+ _arg = new $String(_r$2);
190610
+ _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; }
190611
+ $24r = _r$3;
190612
+ $s = 9; case 9: return $24r;
190613
+ /* } */ case 5:
190614
+ $r = w.gl.AttachShader(shaderProgram, vertShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190615
+ $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; }
190616
+ $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; }
190617
+ $r = w.gl.DeleteShader(vertShader); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190618
+ $s = -1; return $ifaceNil;
190619
+ /* */ } 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;
190620
+ };
190621
+ windowImpl.prototype.createAndAttachVertexShader = function(shaderProgram) { return this.$val.createAndAttachVertexShader(shaderProgram); };
190622
+ windowImpl.ptr.prototype.ensureYUV420Textures = function(width, height) {
190623
+ 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});
190624
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190625
+ w = this;
190626
+ /* */ if (w.programYUV420 === ptrType$3.nil) { $s = 1; continue; }
190627
+ /* */ $s = 2; continue;
190628
+ /* if (w.programYUV420 === ptrType$3.nil) { */ case 1:
190629
+ err = $ifaceNil;
190630
+ _r = w.createAndLinkProgramYUV420(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190631
+ _tuple = _r;
190632
+ w.programYUV420 = _tuple[0];
190633
+ err = _tuple[1];
190634
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190635
+ $panic(err);
190636
+ }
190637
+ /* } */ case 2:
190638
+ if ((w.width === width) && (w.height === height)) {
190639
+ $s = -1; return;
190640
+ }
190641
+ w.ensureCanvasSize(width, height);
190642
+ _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; }
190643
+ w.imageTexY = _r$1;
190644
+ _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; }
190645
+ w.imageTexU = _r$2;
190646
+ _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; }
190647
+ w.imageTexV = _r$3;
190648
+ $r = w.gl.Enable(2929); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190649
+ $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; }
190650
+ w.width = width;
190651
+ w.height = height;
190652
+ $r = w.clear(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190653
+ $s = -1; return;
190654
+ /* */ } 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;
190655
+ };
190656
+ windowImpl.prototype.ensureYUV420Textures = function(width, height) { return this.$val.ensureYUV420Textures(width, height); };
190657
+ windowImpl.ptr.prototype.createAndLinkProgramYUV420 = function() {
190658
+ 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, {});
190659
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190660
+ w = this;
190661
+ _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190662
+ shaderProgram = _r;
190663
+ _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; }
190664
+ err = _r$1;
190665
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190666
+ $s = -1; return [ptrType$3.nil, err];
190667
+ }
190668
+ _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; }
190669
+ err = _r$2;
190670
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190671
+ $s = -1; return [ptrType$3.nil, err];
190672
+ }
190673
+ $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190674
+ _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; }
190675
+ /* */ if (!_r$3) { $s = 5; continue; }
190676
+ /* */ $s = 6; continue;
190677
+ /* if (!_r$3) { */ case 5:
190678
+ _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; }
190679
+ _arg = new $String(_r$4);
190680
+ _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; }
190681
+ $24r = [ptrType$3.nil, _r$5];
190682
+ $s = 10; case 10: return $24r;
190683
+ /* } */ case 6:
190684
+ $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190685
+ _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; }
190686
+ imageYLoc = _r$6;
190687
+ $r = w.gl.Uniform1i(imageYLoc, 1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190688
+ _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; }
190689
+ imageULoc = _r$7;
190690
+ $r = w.gl.Uniform1i(imageULoc, 2); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190691
+ _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; }
190692
+ imageVLoc = _r$8;
190693
+ $r = w.gl.Uniform1i(imageVLoc, 3); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190694
+ $s = -1; return [shaderProgram, $ifaceNil];
190695
+ /* */ } 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;
190881
190696
  };
190882
- windowImpl.prototype.SendFirst = function(event) { return this.$val.SendFirst(event); };
190883
- windowImpl.ptr.prototype.NextEvent = function() {
190884
- var {_r, ev, w, $s, $r, $c} = $restore(this, {});
190697
+ windowImpl.prototype.createAndLinkProgramYUV420 = function() { return this.$val.createAndLinkProgramYUV420(); };
190698
+ windowImpl.ptr.prototype.drawBufferYUV420 = function(dp, src, sr) {
190699
+ 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});
190885
190700
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190886
190701
  w = this;
190887
- _r = $recv(w.domEvents.GetEventChan()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190888
- ev = _r[0];
190889
- $s = -1; return ev;
190890
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.NextEvent, $c: true, $r, _r, ev, w, $s};return $f;
190702
+ _arg = $clone(dp, image.Point);
190703
+ _r = src.YCbCr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190704
+ _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; }
190705
+ _arg$1 = $clone(_r$1, js.Value);
190706
+ _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; }
190707
+ _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; }
190708
+ _arg$2 = $clone(_r$3, js.Value);
190709
+ _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; }
190710
+ _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; }
190711
+ _arg$3 = $clone(_r$5, js.Value);
190712
+ _arg$4 = $clone(sr, image.Rectangle);
190713
+ $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; }
190714
+ $s = -1; return;
190715
+ /* */ } 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;
190891
190716
  };
190892
- windowImpl.prototype.NextEvent = function() { return this.$val.NextEvent(); };
190893
- windowImpl.ptr.prototype.Upload = function(dp, src, sr) {
190894
- var {_r, dp, sr, src, w, $s, $r, $c} = $restore(this, {dp, src, sr});
190717
+ windowImpl.prototype.drawBufferYUV420 = function(dp, src, sr) { return this.$val.drawBufferYUV420(dp, src, sr); };
190718
+ windowImpl.ptr.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) {
190719
+ var {_q, _q$1, _q$2, _q$3, cb, cr, dp, sr, w, y, $s, $r, $c} = $restore(this, {dp, y, cb, cr, sr});
190895
190720
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190896
190721
  w = this;
190897
- if (w.released) {
190898
- $s = -1; return;
190899
- }
190900
- _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; }
190901
- $panic(_r);
190722
+ $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; }
190723
+ $r = w.gl.UseProgram(w.programYUV420); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190724
+ $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; }
190725
+ $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; }
190726
+ $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; }
190727
+ $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; }
190728
+ $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; }
190729
+ $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; }
190730
+ $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190731
+ $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; }
190902
190732
  $s = -1; return;
190903
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.Upload, $c: true, $r, _r, dp, sr, src, w, $s};return $f;
190733
+ /* */ } 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;
190904
190734
  };
190905
- windowImpl.prototype.Upload = function(dp, src, sr) { return this.$val.Upload(dp, src, sr); };
190906
- windowImpl.ptr.prototype.UploadYCbCr = function(dp, src, sr) {
190907
- var {_r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s, $r, $c} = $restore(this, {dp, src, sr});
190735
+ windowImpl.prototype.drawBufferYUV420JSArrayBuffers = function(dp, y, cb, cr, sr) { return this.$val.drawBufferYUV420JSArrayBuffers(dp, y, cb, cr, sr); };
190736
+ windowImpl.ptr.prototype.ensureRGBATextures = function(width, height) {
190737
+ var {_r, _r$1, _tuple, err, height, w, width, $s, $r, $c} = $restore(this, {width, height});
190908
190738
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190909
190739
  w = this;
190910
- if (w.released) {
190911
- $s = -1; return;
190912
- }
190913
- _ref = src;
190914
- /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 1; continue; }
190740
+ /* */ if (w.programRGBA === ptrType$3.nil) { $s = 1; continue; }
190915
190741
  /* */ $s = 2; continue;
190916
- /* if ($assertType(_ref, ptrType$3, true)[1]) { */ case 1:
190917
- jsSrc = _ref.$val;
190918
- _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; }
190919
- _r;
190920
- $s = -1; return;
190742
+ /* if (w.programRGBA === ptrType$3.nil) { */ case 1:
190743
+ err = $ifaceNil;
190744
+ _r = w.createAndLinkProgramRGBA(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190745
+ _tuple = _r;
190746
+ w.programRGBA = _tuple[0];
190747
+ err = _tuple[1];
190748
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190749
+ $panic(err);
190750
+ }
190921
190751
  /* } */ case 2:
190922
- _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; }
190923
- $panic(_r$1);
190924
- $s = -1; return;
190925
- /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.UploadYCbCr, $c: true, $r, _r, _r$1, _ref, dp, jsSrc, sr, src, w, x, $s};return $f;
190926
- };
190927
- windowImpl.prototype.UploadYCbCr = function(dp, src, sr) { return this.$val.UploadYCbCr(dp, src, sr); };
190928
- windowImpl.ptr.prototype.Fill = function(dr, src, op) {
190929
- var dr, op, src, w;
190930
- w = this;
190931
- if (w.released) {
190932
- return;
190752
+ if ((w.width === width) && (w.height === height)) {
190753
+ $s = -1; return;
190933
190754
  }
190934
- $panic(new $String("Not implemented"));
190755
+ w.ensureCanvasSize(width, height);
190756
+ _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; }
190757
+ w.imageTexRGBA = _r$1;
190758
+ $r = w.gl.Enable(2929); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190759
+ $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; }
190760
+ w.width = width;
190761
+ w.height = height;
190762
+ $r = w.clear(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190763
+ $s = -1; return;
190764
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.ensureRGBATextures, $c: true, $r, _r, _r$1, _tuple, err, height, w, width, $s};return $f;
190935
190765
  };
190936
- windowImpl.prototype.Fill = function(dr, src, op) { return this.$val.Fill(dr, src, op); };
190937
- windowImpl.ptr.prototype.Draw = function(src2dst, src, sr, op, opts) {
190938
- var op, opts, sr, src, src2dst, w;
190766
+ windowImpl.prototype.ensureRGBATextures = function(width, height) { return this.$val.ensureRGBATextures(width, height); };
190767
+ windowImpl.ptr.prototype.createAndLinkProgramRGBA = function() {
190768
+ 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, {});
190769
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190939
190770
  w = this;
190940
- if (w.released) {
190941
- return;
190771
+ _r = w.gl.CreateProgram(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190772
+ shaderProgram = _r;
190773
+ _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; }
190774
+ err = _r$1;
190775
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190776
+ $s = -1; return [ptrType$3.nil, err];
190942
190777
  }
190943
- $panic(new $String("Not implemented"));
190944
- };
190945
- windowImpl.prototype.Draw = function(src2dst, src, sr, op, opts) { return this.$val.Draw(src2dst, src, sr, op, opts); };
190946
- windowImpl.ptr.prototype.DrawUniform = function(src2dst, src, sr, op, opts) {
190947
- var op, opts, sr, src, src2dst, w;
190948
- w = this;
190949
- if (w.released) {
190950
- return;
190778
+ _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; }
190779
+ err = _r$2;
190780
+ if (!($interfaceIsEqual(err, $ifaceNil))) {
190781
+ $s = -1; return [ptrType$3.nil, err];
190951
190782
  }
190952
- $panic(new $String("Not implemented"));
190783
+ $r = w.gl.LinkProgram(shaderProgram); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190784
+ _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; }
190785
+ /* */ if (!_r$3) { $s = 5; continue; }
190786
+ /* */ $s = 6; continue;
190787
+ /* if (!_r$3) { */ case 5:
190788
+ _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; }
190789
+ _arg = new $String(_r$4);
190790
+ _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; }
190791
+ $24r = [ptrType$3.nil, _r$5];
190792
+ $s = 10; case 10: return $24r;
190793
+ /* } */ case 6:
190794
+ $r = w.gl.UseProgram(shaderProgram); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190795
+ _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; }
190796
+ imageLoc = _r$6;
190797
+ $r = w.gl.Uniform1i(imageLoc, 0); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190798
+ $s = -1; return [shaderProgram, $ifaceNil];
190799
+ /* */ } 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;
190953
190800
  };
190954
- windowImpl.prototype.DrawUniform = function(src2dst, src, sr, op, opts) { return this.$val.DrawUniform(src2dst, src, sr, op, opts); };
190955
- windowImpl.ptr.prototype.Copy = function(dp, src, sr, op, opts) {
190956
- var dp, op, opts, sr, src, w;
190801
+ windowImpl.prototype.createAndLinkProgramRGBA = function() { return this.$val.createAndLinkProgramRGBA(); };
190802
+ windowImpl.ptr.prototype.drawBufferRGBA = function(dp, src, sr) {
190803
+ 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});
190804
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190957
190805
  w = this;
190958
- if (w.released) {
190959
- return;
190960
- }
190961
- $panic(new $String("Not implemented"));
190806
+ $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; }
190807
+ $r = w.gl.UseProgram(w.programRGBA); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190808
+ $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; }
190809
+ _arg = dp.X;
190810
+ _arg$1 = dp.Y;
190811
+ _arg$2 = sr.Max.X;
190812
+ _arg$3 = sr.Max.Y;
190813
+ _r = src.RGBA(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190814
+ _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; }
190815
+ _arg$4 = $clone(_r$1, js.Value);
190816
+ $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; }
190817
+ $r = w.gl.BindVertexArray(w.vertexArray); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190818
+ $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; }
190819
+ $s = -1; return;
190820
+ /* */ } 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;
190962
190821
  };
190963
- windowImpl.prototype.Copy = function(dp, src, sr, op, opts) { return this.$val.Copy(dp, src, sr, op, opts); };
190964
- windowImpl.ptr.prototype.Scale = function(dr, src, sr, op, opts) {
190965
- var dr, op, opts, sr, src, w;
190822
+ windowImpl.prototype.drawBufferRGBA = function(dp, src, sr) { return this.$val.drawBufferRGBA(dp, src, sr); };
190823
+ windowImpl.ptr.prototype.createBuffers = function() {
190824
+ var {_r, _r$1, _r$2, elementBuffer, emptyFloat, floatLen, vertexArray, vertexBuffer, w, $s, $r, $c} = $restore(this, {});
190825
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190966
190826
  w = this;
190967
- if (w.released) {
190968
- return;
190969
- }
190970
- $panic(new $String("Not implemented"));
190827
+ _r = w.gl.CreateVertexArray(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190828
+ vertexArray = _r;
190829
+ _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; }
190830
+ vertexBuffer = _r$1;
190831
+ _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; }
190832
+ elementBuffer = _r$2;
190833
+ $r = w.gl.BindVertexArray(vertexArray); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190834
+ $r = w.gl.BindBuffer(34962, vertexBuffer); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190835
+ $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; }
190836
+ $r = w.gl.BindBuffer(34963, elementBuffer); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190837
+ $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; }
190838
+ emptyFloat = 0;
190839
+ floatLen = 4;
190840
+ $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; }
190841
+ $r = w.gl.EnableVertexAttribArray(0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190842
+ $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; }
190843
+ $r = w.gl.EnableVertexAttribArray(1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190844
+ $s = -1; return vertexArray;
190845
+ /* */ } 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;
190971
190846
  };
190972
- windowImpl.prototype.Scale = function(dr, src, sr, op, opts) { return this.$val.Scale(dr, src, sr, op, opts); };
190973
- main = function(f) {
190974
- var {_tuple, err, f, retErr, s, $s, $r, $c} = $restore(this, {f});
190847
+ windowImpl.prototype.createBuffers = function() { return this.$val.createBuffers(); };
190848
+ windowImpl.ptr.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) {
190849
+ var {$24r, _arg, _r, _r$1, _r$2, _r$3, fragShader, fragmentShaderCode, shaderProgram, w, $s, $r, $c} = $restore(this, {shaderProgram, fragmentShaderCode});
190975
190850
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
190976
- retErr = $ifaceNil;
190977
- _tuple = newScreenImpl();
190978
- s = _tuple[0];
190979
- err = _tuple[1];
190980
- if (!($interfaceIsEqual(err, $ifaceNil))) {
190981
- retErr = err;
190982
- $s = -1; return retErr;
190983
- }
190984
- $r = f(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190985
- retErr = $ifaceNil;
190986
- $s = -1; return retErr;
190987
- /* */ } return; } var $f = {$blk: main, $c: true, $r, _tuple, err, f, retErr, s, $s};return $f;
190988
- };
190989
- newScreenImpl = function() {
190990
- var s;
190991
- s = new screenImpl.ptr($clone($clone(js.Global(), js.Value).Get("document"), js.Value));
190992
- return [s, $ifaceNil];
190993
- };
190994
- screenImpl.ptr.prototype.NewBuffer = function(size) {
190995
- var buffer, s, size;
190996
- s = this;
190997
- buffer = newBuffer(s, $clone(size, image.Point));
190998
- return [buffer, $ifaceNil];
190851
+ w = this;
190852
+ _r = w.gl.CreateFragmentShader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190853
+ fragShader = _r;
190854
+ $r = w.gl.ShaderSource(fragShader, fragmentShaderCode); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190855
+ $r = w.gl.CompileShader(fragShader); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190856
+ _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; }
190857
+ /* */ if (!_r$1) { $s = 4; continue; }
190858
+ /* */ $s = 5; continue;
190859
+ /* if (!_r$1) { */ case 4:
190860
+ _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; }
190861
+ _arg = new $String(_r$2);
190862
+ _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; }
190863
+ $24r = _r$3;
190864
+ $s = 9; case 9: return $24r;
190865
+ /* } */ case 5:
190866
+ $r = w.gl.AttachShader(shaderProgram, fragShader); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190867
+ $r = w.gl.DeleteShader(fragShader); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190868
+ $s = -1; return $ifaceNil;
190869
+ /* */ } 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;
190999
190870
  };
191000
- screenImpl.prototype.NewBuffer = function(size) { return this.$val.NewBuffer(size); };
191001
- screenImpl.ptr.prototype.NewTexture = function(size) {
191002
- var {$24r, _r, s, size, $s, $r, $c} = $restore(this, {size});
190871
+ windowImpl.prototype.createAndAttachFragmentShader = function(shaderProgram, fragmentShaderCode) { return this.$val.createAndAttachFragmentShader(shaderProgram, fragmentShaderCode); };
190872
+ windowImpl.ptr.prototype.createTexture = function(unit, format, width, height) {
190873
+ var {_r, format, height, imageTex, unit, w, width, $s, $r, $c} = $restore(this, {unit, format, width, height});
191003
190874
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191004
- s = this;
191005
- _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; }
191006
- $24r = [$ifaceNil, _r];
191007
- $s = 2; case 2: return $24r;
191008
- /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewTexture, $c: true, $r, $24r, _r, s, size, $s};return $f;
190875
+ w = this;
190876
+ $r = w.gl.ActiveTexture(((unit >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190877
+ _r = w.gl.CreateTexture(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
190878
+ imageTex = _r;
190879
+ $r = w.gl.BindTexture(3553, imageTex); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190880
+ $r = w.gl.TexParameterWrapS(3553, 10497); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190881
+ $r = w.gl.TexParameterWrapT(3553, 10497); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190882
+ $r = w.gl.TexParameterMinFilter(3553, 9729); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190883
+ $r = w.gl.TexParameterMagFilter(3553, 9729); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190884
+ $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; }
190885
+ $s = -1; return imageTex;
190886
+ /* */ } return; } var $f = {$blk: windowImpl.ptr.prototype.createTexture, $c: true, $r, _r, format, height, imageTex, unit, w, width, $s};return $f;
191009
190887
  };
191010
- screenImpl.prototype.NewTexture = function(size) { return this.$val.NewTexture(size); };
191011
- screenImpl.ptr.prototype.NewWindow = function(opts) {
191012
- var {_r, opts, s, window, $s, $r, $c} = $restore(this, {opts});
190888
+ windowImpl.prototype.createTexture = function(unit, format, width, height) { return this.$val.createTexture(unit, format, width, height); };
190889
+ ArrayBufferSlice.ptr.prototype.slice = function() {
190890
+ var {$24r, _r, a, $s, $r, $c} = $restore(this, {});
191013
190891
  /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191014
- s = this;
191015
- _r = newWindow(s, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
191016
- window = _r;
191017
- $s = -1; return [window, $ifaceNil];
191018
- /* */ } return; } var $f = {$blk: screenImpl.ptr.prototype.NewWindow, $c: true, $r, _r, opts, s, window, $s};return $f;
190892
+ a = this;
190893
+ _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; }
190894
+ $24r = _r;
190895
+ $s = 2; case 2: return $24r;
190896
+ /* */ } return; } var $f = {$blk: ArrayBufferSlice.ptr.prototype.slice, $c: true, $r, $24r, _r, a, $s};return $f;
191019
190897
  };
191020
- screenImpl.prototype.NewWindow = function(opts) { return this.$val.NewWindow(opts); };
190898
+ ArrayBufferSlice.prototype.slice = function() { return this.$val.slice(); };
191021
190899
  newBuffer = function(screen$1, size) {
191022
190900
  var _q, _q$1, _q$2, b, rect, screen$1, size;
191023
190901
  rect = new image.Rectangle.ptr(new image.Point.ptr(0, 0), $clone(size, image.Point));
191024
- 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);
190902
+ 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);
191025
190903
  return b;
191026
190904
  };
191027
190905
  BufferImpl.ptr.prototype.Size = function() {
@@ -191049,12 +190927,18 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191049
190927
  };
191050
190928
  BufferImpl.prototype.YCbCr = function() { return this.$val.YCbCr(); };
191051
190929
  BufferImpl.ptr.prototype.YCbCrJS = function() {
191052
- var b;
190930
+ var {_r, b, emptyBuffer, $s, $r, $c} = $restore(this, {});
190931
+ /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0:
191053
190932
  b = this;
191054
- if (b.ycbcrJS === ptrType$4.nil) {
191055
- b.ycbcrJS = new YCbCrJS.ptr(ptrType$5.nil);
191056
- }
191057
- return b.ycbcrJS;
190933
+ /* */ if (b.ycbcrJS === ptrType$8.nil) { $s = 1; continue; }
190934
+ /* */ $s = 2; continue;
190935
+ /* if (b.ycbcrJS === ptrType$8.nil) { */ case 1:
190936
+ _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; }
190937
+ emptyBuffer = $clone(_r, js.Value);
190938
+ 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);
190939
+ /* } */ case 2:
190940
+ $s = -1; return b.ycbcrJS;
190941
+ /* */ } return; } var $f = {$blk: BufferImpl.ptr.prototype.YCbCrJS, $c: true, $r, _r, b, emptyBuffer, $s};return $f;
191058
190942
  };
191059
190943
  BufferImpl.prototype.YCbCrJS = function() { return this.$val.YCbCrJS(); };
191060
190944
  BufferImpl.ptr.prototype.Release = function() {
@@ -191073,54 +190957,170 @@ $packages["golang.org/x/exp/shiny/driver/canvasdriver"] = (function() {
191073
190957
  /* */ } 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; } }
191074
190958
  };
191075
190959
  BufferImpl.prototype.Release = function() { return this.$val.Release(); };
191076
- 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)}];
191077
- 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)}];
191078
- 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)}];
191079
- 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: ""}]);
191080
- screenImpl.init("golang.org/x/exp/shiny/driver/canvasdriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191081
- YCbCrJS.init("", [{prop: "CanvasImageSource", name: "CanvasImageSource", embedded: false, exported: true, typ: ptrType$5, tag: ""}]);
191082
- 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: ""}]);
190960
+ 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)}];
190961
+ 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)}];
190962
+ ptrType$12.methods = [{prop: "slice", name: "slice", pkg: "golang.org/x/exp/shiny/driver/webgldriver", typ: $funcType([], [js.Value], false)}];
190963
+ 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)}];
190964
+ 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: ""}]);
190965
+ screenImpl.init("golang.org/x/exp/shiny/driver/webgldriver", [{prop: "doc", name: "doc", embedded: false, exported: false, typ: js.Value, tag: ""}]);
190966
+ 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: ""}]);
190967
+ 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: ""}]);
190968
+ 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: ""}]);
191083
190969
  $init = function() {
191084
190970
  $pkg.$init = function() {};
191085
190971
  /* */ 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:
191086
190972
  $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191087
- $r = errscreen.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191088
- $r = dom.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191089
- $r = screen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191090
- $r = f64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191091
- $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191092
- $r = color.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191093
- $r = draw.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191094
- $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191095
- $r = js.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190973
+ $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190974
+ $r = types.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190975
+ $r = errscreen.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190976
+ $r = dom.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190977
+ $r = imageutil.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190978
+ $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190979
+ $r = f64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190980
+ $r = image.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190981
+ $r = color.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190982
+ $r = draw.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190983
+ $r = sync.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190984
+ $r = js.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
190985
+ texCoordsVertices = new sliceType([1, 1, 1, 0, 1, -1, 1, 1, -1, -1, 0, 1, -1, 1, 0, 0]);
190986
+ elementsIndices = new sliceType$1([0, 1, 3, 1, 2, 3]);
191096
190987
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191097
190988
  };
191098
190989
  $pkg.$init = $init;
191099
190990
  return $pkg;
191100
190991
  })();
191101
- $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"] = (function() {
191102
- var $pkg = {}, $init, hex, webgl, general, errs, jshelper, canvasdriver, image, log, js;
190992
+ $packages["github.com/supraio/client-daemon/pkg/decoder/h264decoder"] = (function() {
190993
+ var $pkg = {}, $init, md5, hex, general, errs, webgldriver, image, log, js;
190994
+ md5 = $packages["crypto/md5"];
191103
190995
  hex = $packages["encoding/hex"];
191104
- webgl = $packages["github.com/nuberu/webgl"];
191105
190996
  general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
191106
190997
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191107
- jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
191108
- canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
190998
+ webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
191109
190999
  image = $packages["image"];
191110
191000
  log = $packages["log"];
191111
191001
  js = $packages["syscall/js"];
191112
191002
  $init = function() {
191113
191003
  $pkg.$init = function() {};
191114
191004
  /* */ 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:
191115
- $r = hex.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191116
- $r = webgl.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191005
+ $r = md5.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191006
+ $r = hex.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191117
191007
  $r = general.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191118
191008
  $r = errs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191119
- $r = jshelper.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191120
- $r = canvasdriver.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191121
- $r = image.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191122
- $r = log.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191123
- $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191009
+ $r = webgldriver.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191010
+ $r = image.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191011
+ $r = log.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191012
+ $r = js.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191013
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191014
+ };
191015
+ $pkg.$init = $init;
191016
+ return $pkg;
191017
+ })();
191018
+ $packages["github.com/supraio/client-daemon/pkg/videostream"] = (function() {
191019
+ var $pkg = {}, $init, Protocol, videoStreamer, Register;
191020
+ Protocol = $pkg.Protocol = $newType(1, $kindUint8, "videostream.Protocol", true, "github.com/supraio/client-daemon/pkg/videostream", true, null);
191021
+ Register = function(newVideoStreamer) {
191022
+ var newVideoStreamer;
191023
+ if (!($interfaceIsEqual(videoStreamer, $ifaceNil))) {
191024
+ $panic(new $String("VideoStreamer already registered"));
191025
+ }
191026
+ videoStreamer = newVideoStreamer;
191027
+ };
191028
+ $pkg.Register = Register;
191029
+ $init = function() {
191030
+ $pkg.$init = function() {};
191031
+ /* */ 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:
191032
+ videoStreamer = $ifaceNil;
191033
+ /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191034
+ };
191035
+ $pkg.$init = $init;
191036
+ return $pkg;
191037
+ })();
191038
+ $packages["github.com/supraio/client-daemon/pkg/decoder/sosstream"] = (function() {
191039
+ var $pkg = {}, $init, fmt, general, errs, jshelper, videostream, js, SOSVideoStreamer, funcType, arrayType, ptrType$1, init;
191040
+ fmt = $packages["fmt"];
191041
+ general = $packages["github.com/supraio/client-daemon/pkg/decoder/general"];
191042
+ errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191043
+ jshelper = $packages["github.com/supraio/client-daemon/pkg/jshelper"];
191044
+ videostream = $packages["github.com/supraio/client-daemon/pkg/videostream"];
191045
+ js = $packages["syscall/js"];
191046
+ SOSVideoStreamer = $pkg.SOSVideoStreamer = $newType(0, $kindStruct, "sosstream.SOSVideoStreamer", true, "github.com/supraio/client-daemon/pkg/decoder/sosstream", true, function(sos_) {
191047
+ this.$val = this;
191048
+ if (arguments.length === 0) {
191049
+ this.sos = new js.Value.ptr(null, false, arrayType.zero());
191050
+ return;
191051
+ }
191052
+ this.sos = sos_;
191053
+ });
191054
+ funcType = $funcType([], [], false);
191055
+ arrayType = $arrayType(funcType, 0);
191056
+ ptrType$1 = $ptrType(SOSVideoStreamer);
191057
+ init = function() {
191058
+ var videoStreamer;
191059
+ videoStreamer = new SOSVideoStreamer.ptr($clone($clone(js.Global(), js.Value).Get("sos"), js.Value));
191060
+ videostream.Register(videoStreamer);
191061
+ };
191062
+ SOSVideoStreamer.ptr.prototype.IsAvailable = function() {
191063
+ var m;
191064
+ m = this;
191065
+ return !$clone(m.sos, js.Value).IsUndefined() && $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("stream"), js.Value).Truthy();
191066
+ };
191067
+ SOSVideoStreamer.prototype.IsAvailable = function() { return this.$val.IsAvailable(); };
191068
+ SOSVideoStreamer.ptr.prototype.GetProtocol = function() {
191069
+ var _1, m, protocol, protocolValue;
191070
+ m = this;
191071
+ protocolValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamProtocol"), js.Value);
191072
+ protocol = 0;
191073
+ if (!$clone(protocolValue, js.Value).IsUndefined() && ($clone(protocolValue, js.Value).Type() === 4)) {
191074
+ _1 = $clone(protocolValue, js.Value).String();
191075
+ if (_1 === ("UDP")) {
191076
+ protocol = 0;
191077
+ } else if (_1 === ("HTTP")) {
191078
+ protocol = 1;
191079
+ } else if (_1 === ("HTTPMP4")) {
191080
+ protocol = 2;
191081
+ } else if (_1 === ("RTP")) {
191082
+ protocol = 3;
191083
+ } else {
191084
+ protocol = 0;
191085
+ }
191086
+ }
191087
+ return protocol;
191088
+ };
191089
+ SOSVideoStreamer.prototype.GetProtocol = function() { return this.$val.GetProtocol(); };
191090
+ SOSVideoStreamer.ptr.prototype.GetPort = function() {
191091
+ var m, port, portValue;
191092
+ m = this;
191093
+ portValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamPort"), js.Value);
191094
+ port = 5000;
191095
+ if (!$clone(portValue, js.Value).IsUndefined() && ($clone(portValue, js.Value).Type() === 3)) {
191096
+ port = $clone(portValue, js.Value).Int();
191097
+ }
191098
+ return ((port << 16 >>> 16));
191099
+ };
191100
+ SOSVideoStreamer.prototype.GetPort = function() { return this.$val.GetPort(); };
191101
+ SOSVideoStreamer.ptr.prototype.GetHostname = function() {
191102
+ var hostname, hostnameValue, m;
191103
+ m = this;
191104
+ hostnameValue = $clone($clone($clone(m.sos, js.Value).Get("config"), js.Value).Get("streamHostname"), js.Value);
191105
+ hostname = "";
191106
+ if (!$clone(hostnameValue, js.Value).IsUndefined() && ($clone(hostnameValue, js.Value).Type() === 4)) {
191107
+ hostname = $clone(hostnameValue, js.Value).String();
191108
+ }
191109
+ return hostname;
191110
+ };
191111
+ SOSVideoStreamer.prototype.GetHostname = function() { return this.$val.GetHostname(); };
191112
+ ptrType$1.methods = [{prop: "IsAvailable", name: "IsAvailable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "GetProtocol", name: "GetProtocol", pkg: "", typ: $funcType([], [videostream.Protocol], false)}, {prop: "GetPort", name: "GetPort", pkg: "", typ: $funcType([], [$Uint16], false)}, {prop: "GetHostname", name: "GetHostname", pkg: "", typ: $funcType([], [$String], false)}];
191113
+ SOSVideoStreamer.init("github.com/supraio/client-daemon/pkg/decoder/sosstream", [{prop: "sos", name: "sos", embedded: false, exported: false, typ: js.Value, tag: ""}]);
191114
+ $init = function() {
191115
+ $pkg.$init = function() {};
191116
+ /* */ 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:
191117
+ $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191118
+ $r = general.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191119
+ $r = errs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191120
+ $r = jshelper.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191121
+ $r = videostream.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191122
+ $r = js.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191123
+ init();
191124
191124
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191125
191125
  };
191126
191126
  $pkg.$init = $init;
@@ -191189,7 +191189,7 @@ $packages["github.com/supraio/client-daemon/pkg/stats"] = (function() {
191189
191189
  return $pkg;
191190
191190
  })();
191191
191191
  $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
191192
- var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, color, draw, log, time;
191192
+ var $pkg = {}, $init, decoder, errs, frame, netframe, screenbuffer, stats, screen, image, log, time;
191193
191193
  decoder = $packages["github.com/supraio/client-daemon/pkg/decoder"];
191194
191194
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191195
191195
  frame = $packages["github.com/supraio/client-daemon/pkg/render/frame"];
@@ -191198,8 +191198,6 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
191198
191198
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
191199
191199
  screen = $packages["golang.org/x/exp/shiny/screen"];
191200
191200
  image = $packages["image"];
191201
- color = $packages["image/color"];
191202
- draw = $packages["image/draw"];
191203
191201
  log = $packages["log"];
191204
191202
  time = $packages["time"];
191205
191203
  $init = function() {
@@ -191213,10 +191211,8 @@ $packages["github.com/supraio/client-daemon/pkg/render/player"] = (function() {
191213
191211
  $r = stats.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191214
191212
  $r = screen.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191215
191213
  $r = image.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191216
- $r = color.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191217
- $r = draw.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191218
- $r = log.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191219
- $r = time.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191214
+ $r = log.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191215
+ $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
191220
191216
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
191221
191217
  };
191222
191218
  $pkg.$init = $init;
@@ -191562,7 +191558,7 @@ $packages["golang.org/x/mobile/event/lifecycle"] = (function() {
191562
191558
  return $pkg;
191563
191559
  })();
191564
191560
  $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191565
- var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, nacldecoder, nacldriver, errs, helper, input, message, netclient, netpacket, netstream, netframe, player, overlaydriver, stats, videostream, window, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, screenParams, ScreenManager, ProcessInfo, ProcessInfoManager, ptrType, funcType, sliceType$1, sliceType$3, arrayType, ptrType$12, openScreenWindows, mutex, NewScreenManager, NewProcessInfoManager;
191561
+ var $pkg = {}, $init, binary, json, query, clientscreen, clipboard, nacldecoder, nacldriver, webcodecs, errs, helper, input, message, netclient, netpacket, netstream, netframe, player, overlaydriver, stats, videostream, window, canvasdriver, webgldriver, screen, focus, key, lifecycle, mouse, size, image, io, ioutil, log, os, path, strings, sync, js, time, screenParams, ScreenManager, ProcessInfo, ProcessInfoManager, ptrType, funcType, sliceType$1, sliceType$3, arrayType, ptrType$12, openScreenWindows, mutex, NewScreenManager, NewProcessInfoManager;
191566
191562
  binary = $packages["encoding/binary"];
191567
191563
  json = $packages["encoding/json"];
191568
191564
  query = $packages["github.com/google/go-querystring/query"];
@@ -191570,6 +191566,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191570
191566
  clipboard = $packages["github.com/supraio/client-daemon/pkg/clipboard"];
191571
191567
  nacldecoder = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder"];
191572
191568
  nacldriver = $packages["github.com/supraio/client-daemon/pkg/decoder/nacldecoder/nacldriver"];
191569
+ webcodecs = $packages["github.com/supraio/client-daemon/pkg/decoder/webcodecs"];
191573
191570
  errs = $packages["github.com/supraio/client-daemon/pkg/errs"];
191574
191571
  helper = $packages["github.com/supraio/client-daemon/pkg/helper"];
191575
191572
  input = $packages["github.com/supraio/client-daemon/pkg/input"];
@@ -191583,6 +191580,7 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
191583
191580
  stats = $packages["github.com/supraio/client-daemon/pkg/stats"];
191584
191581
  videostream = $packages["github.com/supraio/client-daemon/pkg/videostream"];
191585
191582
  window = $packages["github.com/supraio/client-daemon/pkg/window"];
191583
+ canvasdriver = $packages["golang.org/x/exp/shiny/driver/canvasdriver"];
191586
191584
  webgldriver = $packages["golang.org/x/exp/shiny/driver/webgldriver"];
191587
191585
  screen = $packages["golang.org/x/exp/shiny/screen"];
191588
191586
  focus = $packages["golang.org/x/mobile/event/focus"];
@@ -192021,36 +192019,38 @@ $packages["github.com/supraio/client-daemon/pkg/render"] = (function() {
192021
192019
  $r = clipboard.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192022
192020
  $r = nacldecoder.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192023
192021
  $r = nacldriver.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192024
- $r = errs.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192025
- $r = helper.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192026
- $r = input.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192027
- $r = message.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192028
- $r = netclient.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192029
- $r = netpacket.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192030
- $r = netstream.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192031
- $r = netframe.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192032
- $r = player.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192033
- $r = overlaydriver.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192034
- $r = stats.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192035
- $r = videostream.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192036
- $r = window.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192037
- $r = webgldriver.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192038
- $r = screen.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192039
- $r = focus.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192040
- $r = key.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192041
- $r = lifecycle.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192042
- $r = mouse.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192043
- $r = size.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192044
- $r = image.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192045
- $r = io.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192046
- $r = ioutil.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192047
- $r = log.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192048
- $r = os.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192049
- $r = path.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192050
- $r = strings.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192051
- $r = sync.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192052
- $r = js.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192053
- $r = time.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192022
+ $r = webcodecs.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192023
+ $r = errs.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192024
+ $r = helper.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192025
+ $r = input.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192026
+ $r = message.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192027
+ $r = netclient.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192028
+ $r = netpacket.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192029
+ $r = netstream.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192030
+ $r = netframe.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192031
+ $r = player.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192032
+ $r = overlaydriver.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192033
+ $r = stats.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192034
+ $r = videostream.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192035
+ $r = window.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192036
+ $r = canvasdriver.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192037
+ $r = webgldriver.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192038
+ $r = screen.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192039
+ $r = focus.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192040
+ $r = key.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192041
+ $r = lifecycle.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192042
+ $r = mouse.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192043
+ $r = size.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192044
+ $r = image.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192045
+ $r = io.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192046
+ $r = ioutil.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192047
+ $r = log.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192048
+ $r = os.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192049
+ $r = path.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192050
+ $r = strings.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192051
+ $r = sync.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192052
+ $r = js.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192053
+ $r = time.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
192054
192054
  openScreenWindows = $makeMap($String.keyFor, []);
192055
192055
  mutex = new sync.Mutex.ptr(0, 0);
192056
192056
  /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;