diff --git a/packages/kernal/__tests__/lib/context-2d.test.ts b/packages/kernal/__tests__/lib/context-2d.test.ts index 415ee29..9e206f2 100644 --- a/packages/kernal/__tests__/lib/context-2d.test.ts +++ b/packages/kernal/__tests__/lib/context-2d.test.ts @@ -18,7 +18,38 @@ describe('@idraw/kernal: lib/context-2d', () => { expect(ctx2d.globalCompositeOperation).toStrictEqual(globalCompositeOperation); expect(ctx2d.$getAllAttrs()).toStrictEqual({ globalCompositeOperation }); expect(ctx2d.$getAllRecords()).toStrictEqual([ { name: 'globalCompositeOperation', type: 'attr', args: [ globalCompositeOperation ] } ]); - expect(1).toStrictEqual(1); + }); + + + test('Context2d.drawImage', async () => { + const ctx2d = new Context2d(); + const img = new Image(); + const dx = 11; + const dy = 12; + const dw = 51; + const dh = 52; + const sx = 61; + const sy = 62; + const sw = 101 + const sh = 102; + ctx2d.drawImage(img, dx, dy); + ctx2d.drawImage(img, dx, dy, dw, dh); + ctx2d.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh); + expect(ctx2d.$getAllRecords()).toStrictEqual([{ + name: 'drawImage', + type: 'method', + args: [img, dx, dy] + }, + { + name: 'drawImage', + type: 'method', + args: [img, dx, dy, dw, dh] + }, + { + name: 'drawImage', + type: 'method', + args: [img, sx, sy, sw, sh, dx, dy, dw, dh] + }]); }); }) diff --git a/packages/kernal/src/lib/context-2d.ts b/packages/kernal/src/lib/context-2d.ts index 4a6141d..d05f6ee 100644 --- a/packages/kernal/src/lib/context-2d.ts +++ b/packages/kernal/src/lib/context-2d.ts @@ -1,22 +1,22 @@ // import { TypeContext, TypeBoardSizeOptions } from '@idraw/types'; -// interface CanvasRenderingContext2D extends -// CanvasCompositing, -// CanvasDrawImage, -// CanvasDrawPath, -// CanvasFillStrokeStyles, -// CanvasFilters, -// CanvasImageData, -// CanvasImageSmoothing, -// CanvasPath, -// CanvasPathDrawingStyles, -// CanvasRect, -// CanvasShadowStyles, -// CanvasState, -// CanvasText, -// CanvasTextDrawingStyles, -// CanvasTransform, -// CanvasUserInterface {}; +interface CanvasRenderingContext2D extends + // CanvasCompositing, // OK + // CanvasDrawImage, // OK + CanvasDrawPath, + CanvasFillStrokeStyles, + CanvasFilters, + CanvasImageData, + CanvasImageSmoothing, + CanvasPath, + CanvasPathDrawingStyles, + CanvasRect, + CanvasShadowStyles, + CanvasState, + CanvasText, + CanvasTextDrawingStyles, + CanvasTransform, + CanvasUserInterface {}; type ContextRecord = { @@ -67,6 +67,21 @@ class Context2d { } + drawImage( + image: CanvasImageSource, sx: number, sy: number, + sw?: number, sh?: number, dx?: number, dy?: number, dw?: number, dh?: number + ): void{ + const args = Array.from(arguments); + this._records.push({ + name: 'drawImage', + type: 'method', + args: args, + }); + } + + // drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void { + // } + $getAllRecords(): ContextRecord[] { return this._records;