// This file is part of VSTGUI. It is subject to the license terms // in the LICENSE file found in the top-level directory of this // distribution and at http://github.com/steinbergmedia/vstgui/LICENSE #pragma once #include "scriptobject.h" #include "../../lib/vstguifwd.h" #include "../../uidescription/uidescriptionfwd.h" //------------------------------------------------------------------------ namespace VSTGUI { namespace ScriptingInternal { TJS::CScriptVar* makeTransformMatrixObject (); ScriptObject makeGraphicsPathScriptObject (const SharedPointer& p); //------------------------------------------------------------------------ struct DrawContextObject : ScriptObject, TJS::IScriptVarLifeTimeObserver { DrawContextObject (); ~DrawContextObject () noexcept override; void setDrawContext (CDrawContext* context, IUIDescription* uiDesc); void onDestroy (CScriptVar* v) override; private: // CanvasRenderingContext2D API // clang-format off /* fillStyle: string | CanvasGradient | CanvasPattern; filter: string font: string; fontKerning: string; fontStretch: string; fontVariantCaps: string; globalAlpha: number; globalCompositionOperation: string; lineCap: string; lineDashOffset: number; lineJoin: string; lineWidth: number; miterLimit: number; shadowBlur: number; shadowColor: string; shadowOffsetX: number; shadowOffsetY: number; strokeStyle: string; textAlign: string; textBaseline: string; arc: (x: number, y: number, r: number, sAngle: number, eAngle: number, counterClockwise?: boolean) => void; arcTo: (x1: number, y1: number, x2: number, y2: number, r: number) => void; beginPath: () => void; bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number) => void; clearRect: (x: number, y: number, width: number, height: number) => void; clip: () => void; closePath: () => void; createImageData: (width: number, height: number, imageData: ImageData) => void; createLinearGradient: (x0: number, yo: number, x1: number, y1: number) => CanvasGradient; createPattern: () => CanvasPattern; createRadialGradient: (x0: number, y0: number, r0: number, x1: number, y1: number, r1: number) => CanvasGradient; drawFocusIfNeeded: (html: HTMLElement) => void; drawImage: (image: Image,dx: number,dy: number,sx?: number,sy?: number,sWidth?: number,sHeight?: number,dWidth?: number,dHeight?: number) => void; ellipse: (x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean) => void; fill: (Path2D?: Path2D, fillRule?: any) => void; fillRect: (x: number, y: number, width: number, height: number) => void; fillText: (text: string, x: number, y: number, maxWidth?: number) => void; getImageData: (sx: number, sy: number, sw: number, sh: number) => Promise; getLineDash: () => number[]; isPointInPath: (x: number, y: number, fillRule: any, path: Path2D) => boolean; isPointInStroke: (x: number, y: number, path: Path2D) => boolean; lineTo: (x: number, y: number) => void; measureText: (text: string) => any; moveTo: (x: number, y: number) => void; putImageData: (imageData: ImageData, dx: number, dy: number, dirtyX?: number, dirtyY?: number, dirtyWidth?: number, dirtyHeight?: number) => void; quadraticCurveTo: (cpx: number, cpy: number, x: number, y: number) => void; rect: (x: number, y: number, width: number, height: number) => void; reset: () => void resetTransform: () => void restore: () => void; rotate: (angle: number) => void; roundRect: (x: number, y: number, width: number, height: number, radii: number) => void save: () => void; scale: (x: number, y: number) => void; setLineDash: (segments: number[]) => void; setTransform: (a: number, b: number, c: number, d: number, e: number, f: number) => void; stroke: (path?: Path2D) => void; strokeRect: (x: number, y: number, width: number, height: number) => void; strokeText: (text: string, x: number, y: number, maxWidth?: number) => void; transform: (a: number, b: number, c: number, d: number, e: number, f: number) => void; translate: (x: number, y: number) => void; */ // clang-format on struct Impl; std::unique_ptr impl; }; //------------------------------------------------------------------------ } // ScriptingInternal } // VSTGUI