import { CanvasGradient, CanvasPattern, CanvasPatternRepetition, CanvasRenderingContext2D, Image, getContextById, } from "./index"; import { FillRule } from "../src/shared/FillRule"; var ctx: CanvasRenderingContext2D; var grd: CanvasGradient; var img: Image; var pattern: CanvasPattern; export function init(): void { ctx = getContextById("main"); } export function getCtxId(): i32 { assert(ctx); return load(changetype(ctx) + offsetof("id")); } export function addLinearGradient(): i32 { grd = ctx.createLinearGradient(0, 0, 100, 100); return load(changetype(grd) + offsetof("id")); } export function addColorStop(): void { assert(grd); grd.addColorStop(1.0, "blue"); } export function addRadialGradient(): i32 { grd = ctx.createRadialGradient(0, 0, 0, 100, 100, 100); return load(changetype(grd) + offsetof("id")); } export function createImage(): number { img = new Image(); img.src = "http://placekitten.com/400/300"; return load(changetype(img) + offsetof("_id")); } export function createPattern(): i32 { assert(ctx); assert(img); assert(img.loaded); pattern = ctx.createPattern(img, CanvasPatternRepetition.repeat); return load(changetype(pattern) + offsetof("id")); } export function setBadID(): void { assert(ctx); store(changetype(ctx) + offsetof("id"), -1); } export function commit(): void { assert(ctx); ctx.commit(); } export function disposePattern(): void { assert(pattern); pattern.dispose(); } export function measureText(): void { assert(ctx); ctx.measureText("testing!"); } export function disposeImage(): void { assert(img); img.dispose(); } export function disposeGradient(): void { assert(grd); grd.dispose(); } export function arc(x: f64, y: f64, r: f64, startAngle: f64, endAngle: f64, anticlockwise: bool): void { assert(ctx); ctx.arc(x, y, r, startAngle, endAngle, anticlockwise); } export function closePath(): void { assert(ctx); ctx.closePath(); } export function isPointInPath(x: f64, y: f64, fillRule: FillRule): bool { assert(ctx); return ctx.isPointInPath(x, y, fillRule); } export function isPointInStroke(x: f64, y: f64): bool { assert(ctx); return ctx.isPointInStroke(x, y); }