Beispiel #1
0
void process_execArgv(xsMachine* the)
{
	int i;
	xsResult = xsNewInstanceOf(xsArrayPrototype);
	for (i = gargi; i < gargc; i++) {
		xsSetAt(xsResult, xsInteger(i - gargi), xsString(gargv[i]));
	}
}
Beispiel #2
0
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));
}
Beispiel #3
0
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;
}
Beispiel #4
0
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;
	}
}