Browse Source

* ImageBitmapRenderingContext

Michael Van Canneyt 4 months ago
parent
commit
c1a974cdb2
2 changed files with 19 additions and 5 deletions
  1. 1 0
      packages/rtl/src/web.pas
  2. 18 5
      packages/rtl/src/weborworker.pas

+ 1 - 0
packages/rtl/src/web.pas

@@ -2615,6 +2615,7 @@ Type
     Function getContext(contextType : string; contextAttributes : TJSObject) : TJSObject;
     Function getContextAs2DContext(contextType : string; contextAttributes : TJSObject) : TJSCanvasRenderingContext2D; external name 'getContext';
     Function getContextAs2DContext(contextType : string) : TJSCanvasRenderingContext2D; external name 'getContext';
+    Function getContextAsImageBitmapContext(contextType : string) : TJSImageBitmapCanvasRenderingContext; external name 'getContext'; reintroduce;
     Procedure toBlob (aCallBack : THTMLCanvasToBlobCallback; aMimeType : String); overload;
     Procedure toBlob (aCallBack : THTMLCanvasToBlobCallback; aMimeType : String; aQuality : Double); overload;
     Function toDataURL : String; overload;

+ 18 - 5
packages/rtl/src/weborworker.pas

@@ -58,6 +58,8 @@ type
   NotificationPermission = String;
   NotificationDirection = String;
   NotificationPermissionCallback = Procedure (permission : NotificationPermission);
+  TJSHTMLOffscreenCanvas = class;
+  TJSOffscreenCanvasRenderingContext2D = class;
 
 
   TJSFileSystemFileHandleArray = array of TJSFileSystemFileHandle;
@@ -1762,9 +1764,7 @@ type
     property strokeStyleAsPattern : TJSCanvasPattern Read FstrokeStylePattern Write FstrokeStylePattern;
   end;
 
-  TJSCanvasRenderingContext2D = class external name 'CanvasRenderingContext2D'(TJSBaseCanvasRenderingContext2D)
-  end;
-
+  TJSCanvasRenderingContext2D = class external name 'CanvasRenderingContext2D'(TJSBaseCanvasRenderingContext2D);
 
   { TJSImageBitmap }
 
@@ -1778,15 +1778,25 @@ type
     property height : cardinal read FHeight;
   end;
 
-  TJSOffscreenCanvasRenderingContext2D = class;
+
+  TJSImageBitmapCanvasRenderingContext = class external name 'ImageBitmapRenderingContext'  (TJSBaseCanvasRenderingContext2D)
+    procedure transferFromImageBitmap(aBitmap : TJSImageBitmap);
+  private
+    FCanvas: TJSHTMLOffscreenCanvas; external name 'canvas';
+  public
+    property canvas : TJSHTMLOffscreenCanvas Read FCanvas;
+  end;
+
+
 
   TJSHTMLOffscreenCanvas = Class external name 'OffscreenCanvas' (TJSObject)
   Public
     constructor New(x,y : Cardinal); overload;
     Function getContext(contextType : string; contextAttributes : TJSObject) : JSValue;
     Function getContext(contextType : string) : JSValue;
-    Function getContextAs2DContext(contextType : string; contextAttributes : TJSObject) : TJSOffscreenCanvasRenderingContext2D; external name 'getContext'; reintroduce;
     Function getContextAs2DContext(contextType : string) : TJSOffscreenCanvasRenderingContext2D; external name 'getContext'; reintroduce;
+    Function getContextAs2DContext(contextType : string; contextAttributes : TJSObject) : TJSOffscreenCanvasRenderingContext2D; external name 'getContext'; reintroduce;
+    Function getContextAsImageBitmapContext(contextType : string) : TJSImageBitmapCanvasRenderingContext; external name 'getContext'; reintroduce;
     function transferToImageBitmap: TJSImageBitmap;
     height : Integer;
     width : Integer;
@@ -1799,6 +1809,9 @@ type
     property canvas : TJSHTMLOffscreenCanvas Read FCanvas;
   end;
 
+
+
+
 var
   Console : TJSConsole; external name 'console';
   Crypto: TJSCrypto; external name 'crypto';