|
@@ -2,6 +2,8 @@
|
|
|
{$h+}
|
|
|
{$modeswitch externalclass}
|
|
|
|
|
|
+{$DEFINE IMAGE_USEOSC}
|
|
|
+
|
|
|
unit fresnel.pas2js.wasmapi;
|
|
|
|
|
|
interface
|
|
@@ -608,7 +610,12 @@ var
|
|
|
V : TJSDataView;
|
|
|
D : TJSUint8ClampedArray;
|
|
|
ImgData : TJSImageData;
|
|
|
- Canv : TJSCanvasRenderingContext2D;
|
|
|
+ Canv2,Canv : TJSCanvasRenderingContext2D;
|
|
|
+
|
|
|
+{$IFDEF IMAGE_USEOSC}
|
|
|
+ OSC : TJSHTMLOffscreenCanvasElement;
|
|
|
+ OSCImgBitmap : TJSImageBitmap;
|
|
|
+{$ENDIF}
|
|
|
|
|
|
begin
|
|
|
{$IFNDEF NOLOGAPICALLS}
|
|
@@ -623,13 +630,24 @@ begin
|
|
|
V:=getModuleMemoryDataView;
|
|
|
D:=TJSUint8ClampedArray.New(V.Buffer,aImageData,aImageWidth*aImageWidth*4);
|
|
|
ImgData:=TJSImageData.new(D,aImageWidth,aImageWidth);
|
|
|
- Window.createImageBitmap(ImgData)._then(
|
|
|
+{$IFDEF IMAGE_USEOSC}
|
|
|
+ OSC:=TJSHTMLOffscreenCanvasElement.New(aImageWidth,aImageHeight);
|
|
|
+ Canv2:=OSC.getContextAs2DContext('2d');
|
|
|
+ Canv2.clearRect(0,0,aImageWidth,aImageHeight);
|
|
|
+ Canv2.putImageData(ImgData,0,0);
|
|
|
+ OSCImgBitmap:=OSC.transferToImageBitmap;
|
|
|
+ Canv.drawImage(OSCImgBitmap ,aX,aY,aWidth,aHeight);
|
|
|
+ OSCImgBitmap.close();
|
|
|
+
|
|
|
+{$ELSE}
|
|
|
+Window.createImageBitmap(ImgData)._then(
|
|
|
function (res : jsvalue) : JSValue
|
|
|
var
|
|
|
ImgBitmap : TJSImageBitmap absolute res;
|
|
|
begin
|
|
|
Canv.drawImage(ImgBitmap,aX,aY,aWidth,aHeight);
|
|
|
end);
|
|
|
+{$ENDIF}
|
|
|
Result:=ECANVAS_SUCCESS;
|
|
|
end;
|
|
|
|
|
@@ -1165,7 +1183,7 @@ function TWasmFresnelApi.FillText(aID: TCanvasID; X: Longint; Y: Longint; aText:
|
|
|
Var
|
|
|
C : TJSCanvasRenderingContext2D;
|
|
|
S : String;
|
|
|
- M : TJSTextMetrics;
|
|
|
+
|
|
|
begin
|
|
|
S:=Env.GetUTF8StringFromMem(aText,aTextLen);
|
|
|
{$IFNDEF NOLOGAPICALLS}
|
|
@@ -1179,7 +1197,6 @@ begin
|
|
|
if Assigned(C) then
|
|
|
begin
|
|
|
S:=Env.GetUTF8StringFromMem(aText,aTextLen);
|
|
|
-// M:=C.measureText(S);
|
|
|
C.FillText(S,X,Y);
|
|
|
Result:=ECANVAS_SUCCESS;
|
|
|
end;
|