void process_execArgv(xsMachine* the) { int i; xsResult = xsNewInstanceOf(xsArrayPrototype); for (i = gargi; i < gargc; i++) { xsSetAt(xsResult, xsInteger(i - gargi), xsString(gargv[i])); } }
void xs_system_init(xsMachine *the) { int i, j; xsSet(xsThis, xsID("_global"), xsGlobal); mc_rng_init(NULL, 0); /* * set config */ if (mc_conf.deviceID == NULL) return; /* nothing to set */ xsVars(4); xsGet(xsVar(0), xsThis, xsID("_config")); /* LEDs */ xsSetNewInstanceOf(xsVar(1), xsArrayPrototype); for (i = 0, j = 0; i < MC_MAX_LED_PINS; i++) { if (mc_conf.led_pins[i] >= 0) { xsSetInteger(xsVar(2), j); j++; xsSetInteger(xsVar(3), mc_conf.led_pins[i]); xsSetAt(xsVar(1), xsVar(2), xsVar(3)); } } if (j > 0) xsSet(xsVar(0), xsID("ledPins"), xsVar(1)); /* wakeup buttons */ xsSetNewInstanceOf(xsVar(1), xsArrayPrototype); for (i = 0, j = 0; i < MC_MAX_WAKEUP_BUTTONS; i++) { if (mc_conf.wakeup_buttons[i] >= 0) { xsSetInteger(xsVar(2), j); j++; xsSetInteger(xsVar(3), mc_conf.wakeup_buttons[i]); xsSetAt(xsVar(1), xsVar(2), xsVar(3)); } } if (j > 0) xsSet(xsVar(0), xsID("wakeupButtons"), xsVar(1)); /* power/ground enable */ xsSetBoolean(xsVar(1), mc_conf.power_ground_pinmux); xsSet(xsVar(0), xsID("powerGroundPinmux"), xsVar(1)); xsSetBoolean(xsVar(1), mc_conf.usb_console); xsSet(xsVar(0), xsID("usbConsole"), xsVar(1)); }
void KPR_canvasRenderingContext2D_getLineDash(xsMachine *the) { FskCanvas2dContext ctx = xsGetHostData(xsThis); double *dash = NULL; FskErr err; UInt32 len, i; bailIfError(FskCanvas2dGetLineDash(ctx, &len, &dash)); len *= 2; /* Convert from cycles to length */ xsResult = xsNew1(xsGlobal, xsID("Array"), xsInteger(len)); for (i = 0; i < len; i++) xsSetAt(xsResult, xsInteger(i), xsNumber(dash[i])); bail: (void)FskMemPtrDispose(dash); return; }
static void KPR_canvasRenderingContext2D_getStyle(xsMachine *the, xsBooleanValue stroke) { FskCanvas2dContext ctx; const FskColorSourceUnion* csu; UInt32 c, i; FskGradientStop *stop; xsVars(3); ctx = xsGetHostData(xsThis); if (stroke) csu = (const FskColorSourceUnion *)FskCanvas2dGetStrokeStyle(ctx); else csu = (const FskColorSourceUnion *)FskCanvas2dGetFillStyle(ctx); switch (csu->so.type) { case kFskColorSourceTypeConstant: KprSerializeColor(the, &csu->cn.color, &xsResult); break; case kFskColorSourceTypeLinearGradient: xsResult = xsNewInstanceOf(xsGet(xsGet(xsGlobal, xsID("KPR")), xsID("canvasLinearGradient"))); xsSet(xsResult, xsID("x0"), xsNumber(FskFixedToFloat(csu->lg.gradientVector[0].x))); xsSet(xsResult, xsID("y0"), xsNumber(FskFixedToFloat(csu->lg.gradientVector[0].y))); xsSet(xsResult, xsID("x1"), xsNumber(FskFixedToFloat(csu->lg.gradientVector[1].x))); xsSet(xsResult, xsID("y1"), xsNumber(FskFixedToFloat(csu->lg.gradientVector[1].y))); c = csu->lg.numStops; stop = csu->lg.gradientStops; goto getStops; case kFskColorSourceTypeRadialGradient: xsResult = xsNewInstanceOf(xsGet(xsGet(xsGlobal, xsID("KPR")), xsID("canvasRadialGradient"))); xsSet(xsResult, xsID("x0"), xsNumber(FskFixedToFloat(csu->rg.focus.x))); xsSet(xsResult, xsID("y0"), xsNumber(FskFixedToFloat(csu->rg.focus.y))); xsSet(xsResult, xsID("r0"), xsNumber(0)); xsSet(xsResult, xsID("x1"), xsNumber(FskFixedToFloat(csu->rg.center.x))); xsSet(xsResult, xsID("y1"), xsNumber(FskFixedToFloat(csu->rg.center.y))); xsSet(xsResult, xsID("r1"), xsNumber(FskFixedToFloat(csu->rg.radius))); c = csu->rg.numStops; stop = csu->rg.gradientStops; getStops: xsVar(0) = xsNew1(xsGlobal, xsID("Array"), xsInteger(c)); for (i = 0; i < c; i++) { xsVar(1) = xsNewInstanceOf(xsGet(xsGet(xsGlobal, xsID("KPR")), xsID("canvasGradientStop"))); xsSet(xsVar(1), xsID("offset"), xsNumber(FskFractToFloat(stop->offset))); KprSerializeColor(the, &stop->color, &xsVar(2)); xsSet(xsVar(1), xsID("color"), xsVar(2)); xsSetAt(xsVar(0), xsInteger(i), xsVar(1)); stop++; } xsSet(xsResult, xsID("stops"), xsVar(0)); break; case kFskColorSourceTypeTexture: xsResult = xsNewInstanceOf(xsGet(xsGet(xsGlobal, xsID("KPR")), xsID("canvasPattern"))); // @@ fskBitmapToXSBitmap(the, (FskBitmap)csu->tx.texture, false, &xsVar(0)); xsSet(xsResult, xsID("image"), xsVar(0)); c = csu->tx.spreadMethod & kFskCanvas2dPatternRepeatX; i = csu->tx.spreadMethod & kFskCanvas2dPatternRepeatY; if (c && i) xsSet(xsResult, xsID("repetition"), xsString("repeat")); else if (c) xsSet(xsResult, xsID("repetition"), xsString("repeat-x")); else if (i) xsSet(xsResult, xsID("repetition"), xsString("repeat-y")); else xsSet(xsResult, xsID("repetition"), xsString("no-repeat")); break; } }