Esempio n. 1
0
File: package.c Progetto: 8l/xedit
/*
 * Implementation
 */
void
LispPackageInit(void)
{
    Kinternal	= KEYWORD("INTERNAL");
    Kexternal	= KEYWORD("EXTERNAL");
    Kinherited	= KEYWORD("INHERITED");
}
Esempio n. 2
0
ULONG size(ULONG *arg)
{
	rsiVECTOR vec;
	float begin,end;
	int flags = rsiFActionLinear;

	if(!actor)
		return rsiERR_ACTOR;

	begin = (float)atof((char*)arg[0]);
	end = (float)atof((char*)arg[1]);

	if(!read_vector(&vec,(char*)arg[2]))
		return ERROR_VECTOR;

	if(arg[3])
	{
		if(KEYWORD((char*)arg[3], "LINEAR"))
			flags |= rsiFActionLinear;
		else
			if(KEYWORD((char*)arg[3], "SPLINE"))
				flags |= rsiFActionSpline;
			else
				return ERROR_INTERPOL;
	}

	return rsiSize(CTXT, actor->item,begin,end,&vec,/*rsiTSizeFlags,flags,*/rsiTDone);
}
Esempio n. 3
0
File: xaw.c Progetto: aosm/X11
LispObj *
Lisp_XawCoerceToListReturnStruct(LispBuiltin *builtin)
/*
 xaw-coerce-to-list-return-struct opaque
 */
{
    LispObj *result, *code, *ocod = COD;
    XawListReturnStruct *retlist;

    LispObj *opaque;

    opaque = ARGUMENT(0);

    if (!CHECKO(opaque, xawListReturnStruct_t))
	LispDestroy("%s: cannot convert %s to XawListReturnStruct",
		    STRFUN(builtin), STROBJ(opaque));

    retlist = (XawListReturnStruct*)(opaque->data.opaque.data);

    GCDisable();
    code = CONS(ATOM("MAKE-XAW-LIST-RETURN-STRUCT"),
		CONS(KEYWORD("STRING"),
		       CONS(STRING(retlist->string),
			    CONS(KEYWORD("INDEX"),
				 CONS(INTEGER(retlist->list_index), NIL)))));
    COD = CONS(code, COD);
    GCEnable();

    result = EVAL(code);
    COD = ocod;

    return (result);
}
Esempio n. 4
0
ULONG csg(ULONG *arg)
{
	int operation;
	void *csg;
	rsiResult err;

	err = rsiCreateCSG(CTXT, &csg);
	if(err)
		return err;

	if(arg[0])
	{
		if(KEYWORD((char*)arg[0], "UNION"))
			operation = rsiFCSGUnion;
		else
			if(KEYWORD((char*)arg[0], "INTERSECTION"))
				operation = rsiFCSGIntersection;
			else
				if(KEYWORD((char*)arg[0], "DIFFERENCE"))
					operation = rsiFCSGDifference;
				else
					return ERROR_CSGOPERATOR;

		err = rsiSetCSG(CTXT, csg, rsiTCSGOperator, operation, rsiTDone);
		if(err)
			return err;
	}

	if(arg[1])
	{
		err = rsiSetCSG(CTXT, csg, rsiTCSGFlags, rsiFCSGInverted, rsiTDone);
		if(err)
			return err;
	}

	if(insideCSG > 0)
	{
		SetCSGObject(csg);
		insideCSG--;
	}

	if(!AddCSGItem(csg))
		return ERROR_MEM;
	insideCSG += 2;

	return rsiERR_NONE;
}
Esempio n. 5
0
File: psql.c Progetto: aosm/X11
LispObj *
Lisp_PQnotifies(LispBuiltin *builtin)
/*
 pq-notifies connection
 */
{
    LispObj *result, *code, *cod = COD;
    PGconn *conn;
    PGnotify *notifies;

    LispObj *connection;

    connection = ARGUMENT(0);

    if (!CHECKO(connection, PGconn_t))
	LispDestroy("%s: cannot convert %s to PGconn*",
		    STRFUN(builtin), STROBJ(connection));
    conn = (PGconn*)(connection->data.opaque.data);

    if ((notifies = PQnotifies(conn)) == NULL)
	return (NIL);

    GCDisable();
    code = CONS(ATOM("MAKE-PG-NOTIFY"),
		  CONS(KEYWORD("RELNAME"),
		       CONS(STRING(notifies->relname),
			    CONS(KEYWORD("BE-PID"),
				 CONS(REAL(notifies->be_pid), NIL)))));
    COD = CONS(code, COD);
    GCEnable();
    result = EVAL(code);
    COD = cod;

    free(notifies);

    return (result);
}
Esempio n. 6
0
int f_newsurface(ULONG *arg)
{
	int flags = 0;
	rsiResult err;
	void *surface;

	if (KEYWORD(arg[1], "BRIGHT"))
		flags |= rsiFSurfBright;

	err = rsiCreateSurface(&surface, rsiTSurfFlags, flags, rsiTDone);
	if (err)
		return err;

	if (!arg[0])
		return ERROR_SURFACE;
		
	surf = AddSurfList((char*)arg[0], surface);
	if (!surf)
		return ERROR_MEM;

	return rsiERR_NONE;
}
Esempio n. 7
0
ULONG flare(ULONG *arg)
{
	rsiResult err;
	rsiCOLOR color;
	void *flare;
	float f;
	int flags;

	if (!light)
		return ERROR_NOLIGHT;

	err = rsiCreateFlare(CTXT, light, &flare);
	if (err)
		return err;

	if (arg[0])
	{
		f = (float)atof((char*)arg[0])/100;
		err = rsiSetFlare(CTXT, flare, rsiTFlarePos, f, rsiTDone);
		if (err)
			return err;
	}
	if (arg[1])
	{
		f = (float)atof((char*)arg[1])/100;
		err = rsiSetFlare(CTXT, flare, rsiTFlareRadius, f, rsiTDone);
		if (err)
			return err;
	}

	if (arg[2])
	{
		if (!read_color(&color, (char*)arg[2]))
		return ERROR_COLOR;

		err = rsiSetFlare(CTXT, flare, rsiTFlareColor, &color, rsiTDone);
		if (err)
			return err;
	}
	flags = 0;

	if (arg[3])
	{
		if (KEYWORD(arg[3], "DISC"))
			flags |= rsiFFlareDisc;
		else
			if (KEYWORD(arg[3], "POLYGON"))
				flags |= rsiFFlarePoly;
			else
				return ERROR_FLARETYPE;
	}
	err = rsiSetFlare(CTXT, flare, rsiTFlareType, flags, rsiTDone);
	if (err)
		return err;

	flags = 0;

	if (arg[4])
	{
		if (KEYWORD(arg[4], "PLAIN"))
			flags |= rsiFFlarePlain;
		else
			if (KEYWORD(arg[4], "RING"))
				flags |= rsiFFlareExp;
			else
				if (KEYWORD(arg[4], "RADIAL"))
					flags |= rsiFFlareRadial;
				else
					if (KEYWORD(arg[4], "EXP1"))
						flags |= rsiFFlareExp1;
					else
						if (KEYWORD(arg[4], "EXP2"))
							flags |= rsiFFlareExp2;
						else
							return ERROR_FLAREFUNC;
	}
	err = rsiSetFlare(CTXT, flare, rsiTFlareFunc, flags, rsiTDone);
	if (err)
		return err;


	if (arg[5])
	{
		err = rsiSetFlare(CTXT, flare, rsiTFlareEdges, (int)*(LONG*)arg[5], rsiTDone);
		if (err)
			return err;
	}

	if (arg[6])
	{

		f = (float)atof((char*)arg[6])*PI/180;
		err = rsiSetFlare(CTXT, flare, rsiTFlareTilt, f, rsiTDone);
		if (err)
			return err;
	}

	return rsiERR_NONE;
}
Esempio n. 8
0
File: regex.c Progetto: 8l/xedit
void
LispRegexInit(void)
{
    Knomatch = KEYWORD("NOMATCH");
}
Esempio n. 9
0
ULONG brush(ULONG *arg)
{
	void *brush,*actor;
	rsiVECTOR vec;
	int flags = 0;
	rsiResult err;

	if(!surf)
		return rsiERR_SURFACE;

	err = rsiAddBrush(CTXT, &brush,((char*)arg[0]),surf->item);
	if(err)
		return err;

	if(KEYWORD((char*)arg[1], "COLOR"))
		flags = rsiFBrushColor;
	else
		if(KEYWORD((char*)arg[1], "REFLECT"))
			flags = rsiFBrushReflectivity;
		else
			if(KEYWORD((char*)arg[1], "FILTER"))
				flags = rsiFBrushFilter;
			else
				if(KEYWORD((char*)arg[1], "ALTITUDE"))
					flags = rsiFBrushAltitude;
				else
					if(KEYWORD((char*)arg[1], "SPECULAR"))
						flags = rsiFBrushSpecular;
					else
						return ERROR_BRUSHTYPE;

	if(KEYWORD((char*)arg[2], "WRAPX"))
		flags |= rsiFBrushWrapX;
	else
		if(KEYWORD((char*)arg[2], "WRAPY"))
			flags |= rsiFBrushWrapY;
		else
			if(KEYWORD((char*)arg[2], "WRAPXY"))
				flags |= rsiFBrushWrapXY;
			else
				if(!KEYWORD((char*)arg[2], "FLAT"))
					return ERROR_BRUSHMETHOD;

	if(arg[6])
		flags |= rsiFBrushRepeat;
	if(arg[7])
		flags |= rsiFBrushMirror;
	if(arg[8])
		flags |= rsiFBrushSoft;

	err = rsiSetBrush(CTXT, brush,rsiTBrushFlags,flags,rsiTDone);
	if(err)
		return err;

	if(!read_vector(&vec,(char*)arg[3]))
		return ERROR_VECTOR;
	err = rsiSetBrush(CTXT, brush,rsiTBrushPos,&vec,rsiTDone);
	if(err)
		return err;

	if(!read_vector(&vec,(char*)arg[4]))
		return ERROR_VECTOR;
	err = rsiSetBrush(CTXT, brush,rsiTBrushAlign,&vec,rsiTDone);
	if(err)
		return err;

	if(!read_vector(&vec,(char*)arg[5]))
		return ERROR_VECTOR;
	err = rsiSetBrush(CTXT, brush,rsiTBrushSize,&vec,rsiTDone);
	if(err)
		return err;

	if(arg[9])
	{
		actor = FindActorListItem((char*)arg[9]);
		if(!actor)
			return rsiERR_ACTOR;
		err = rsiSetBrush(CTXT, brush,rsiTBrushActor,actor,rsiTDone);
		if(err)
			return err;
	}

	return rsiERR_NONE;
}
HaxeMessageSyntax::HaxeMessageSyntax()
{
	DEFINE_VOID("SpaceChar", RANGE(" \n\r\t"));
	DEFINE_VOID("Whitespace", REPEAT(INLINE("SpaceChar")));
	
	specialChar_ =
		DEFINE("SpecialChar",
			GLUE(
				CHAR('&'),
				KEYWORD("gt lt"),
				CHAR(';')
			)
		);
	gt_ = keywordByName("gt");
	lt_ = keywordByName("lt");
	
	value_ =
		DEFINE("Value",
			REPEAT(1,
				CHOICE(
					REF("SpecialChar"),
					GLUE(
						NOT(
							GLUE(
								INLINE("Whitespace"),
								CHAR('<')
							)
						),
						ANY()
					)
				)
			)
		);
	
	typeTip_ =
		DEFINE("TypeTip",
			GLUE(
				STRING("<type>"),
				INLINE("Whitespace"),
				REF("Value"),
				INLINE("Whitespace"),
				STRING("</type>")
			)
		);
	
	memberName_ = DEFINE("MemberName", REPEAT(1, OTHER('\"')));
	memberType_ = DEFINE("MemberType", REPEAT(0, 1, INLINE("Value")));
	memberDescription_ = DEFINE("MemberDescription", REPEAT(0, 1, INLINE("Value")));
	
	member_ =
		DEFINE("Member",
			GLUE(
				STRING("<i n=\""),
				REF("MemberName"),
				STRING("\"><t>"),
				REF("MemberType"),
				STRING("</t><d>"),
				REF("MemberDescription"),
				STRING("</d></i>")
			)
		);
	
	membersTip_ =
		DEFINE("MembersTip",
			GLUE(
				STRING("<list>"),
				REPEAT(1,
					GLUE(
						INLINE("Whitespace"),
						REF("Member")
					)
				),
				INLINE("Whitespace"),
				STRING("</list>")
			)
		);
	
	haxeTip_ =
		DEFINE("HaxeTip",
			FIND(
				GLUE(
					INLINE("Whitespace"),
					CHOICE(
						REF("TypeTip"),
						REF("MembersTip")
					),
					INLINE("Whitespace")
				)
			)
		);
	
	ENTRY("HaxeTip");
}
Esempio n. 11
0
File: psql.c Progetto: aosm/X11
LispObj *
Lisp_PQgetvalue(LispBuiltin *builtin)
/*
 pq-getvalue result tuple field &optional type-specifier
 */
{
    char *string;
    double real = 0.0;
    PGresult *res;
    int tuple, field, isint = 0, isreal = 0, integer;

    LispObj *result, *otupple, *field_number, *type;

    type = ARGUMENT(3);
    field_number = ARGUMENT(2);
    otupple = ARGUMENT(1);
    result = ARGUMENT(0);

    if (!CHECKO(result, PGresult_t))
	LispDestroy("%s: cannot convert %s to PGresult*",
		    STRFUN(builtin), STROBJ(result));
    res = (PGresult*)(result->data.opaque.data);

    CHECK_INDEX(otupple);
    tuple = FIXNUM_VALUE(otupple);

    CHECK_INDEX(field_number);
    field = FIXNUM_VALUE(field_number);

    string = PQgetvalue(res, tuple, field);

    if (type != UNSPEC) {
	char *typestring;

	CHECK_SYMBOL(type);
	typestring = ATOMID(type);

	if (strcmp(typestring, "INT16") == 0) {
	    integer = *(short*)string;
	    isint = 1;
	    goto simple_type;
	}
	else if (strcmp(typestring, "INT32") == 0) {
	    integer = *(int*)string;
	    isint = 1;
	    goto simple_type;
	}
	else if (strcmp(typestring, "FLOAT") == 0) {
	    real = *(float*)string;
	    isreal = 1;
	    goto simple_type;
	}
	else if (strcmp(typestring, "REAL") == 0) {
	    real = *(double*)string;
	    isreal = 1;
	    goto simple_type;
	}
	else if (strcmp(typestring, "PG-POLYGON") == 0)
	    goto polygon_type;
	else if (strcmp(typestring, "STRING") != 0)
	    LispDestroy("%s: unknown type %s",
			STRFUN(builtin), typestring);
    }

simple_type:
    return (isint ? INTEGER(integer) : isreal ? DFLOAT(real) :
	    (string ? STRING(string) : NIL));

polygon_type:
  {
    LispObj *poly, *box, *p = NIL, *cdr, *obj;
    POLYGON *polygon;
    int i, size;

    size = PQgetlength(res, tuple, field);
    polygon = (POLYGON*)(string - sizeof(int));

    GCDisable();
    /* get polygon->boundbox */
    cdr = EVAL(CONS(ATOM("MAKE-PG-POINT"),
		    CONS(KEYWORD("X"),
			 CONS(REAL(polygon->boundbox.high.x),
			      CONS(KEYWORD("Y"),
				   CONS(REAL(polygon->boundbox.high.y), NIL))))));
    obj = EVAL(CONS(ATOM("MAKE-PG-POINT"),
		    CONS(KEYWORD("X"),
			 CONS(REAL(polygon->boundbox.low.x),
			      CONS(KEYWORD("Y"),
				   CONS(REAL(polygon->boundbox.low.y), NIL))))));
    box = EVAL(CONS(ATOM("MAKE-PG-BOX"),
		    CONS(KEYWORD("HIGH"),
			 CONS(cdr,
			      CONS(KEYWORD("LOW"),
				   CONS(obj, NIL))))));
    /* get polygon->p values */
    for (i = 0; i < polygon->npts; i++) {
	obj = EVAL(CONS(ATOM("MAKE-PG-POINT"),
			CONS(KEYWORD("X"),
			     CONS(REAL(polygon->p[i].x),
			      CONS(KEYWORD("Y"),
				   CONS(REAL(polygon->p[i].y), NIL))))));
	if (i == 0)
	    p = cdr = CONS(obj, NIL);
	else {
	    RPLACD(cdr, CONS(obj, NIL));
	    cdr = CDR(cdr);
	}
    }

    /* make result */
    poly = EVAL(CONS(ATOM("MAKE-PG-POLYGON"),
		     CONS(KEYWORD("SIZE"),
			  CONS(REAL(size),
			       CONS(KEYWORD("NUM-POINTS"),
				    CONS(REAL(polygon->npts),
					 CONS(KEYWORD("BOUNDBOX"),
					      CONS(box,
						   CONS(KEYWORD("POINTS"),
							CONS(QUOTE(p), NIL))))))))));
    GCEnable();

    return (poly);
  }
}
Esempio n. 12
0
ULONG hypertexture(ULONG *arg)
{
	void *texture, *actor;
	rsiVECTOR vec;
	rsiResult err;
	float fnum;
	int type;

	if(!surf)
		return rsiERR_SURFACE;

	if(KEYWORD((char*)arg[0], "EXPLOSION"))
		type = rsiFHyperExplosion;
	else
		return ERROR_HYPERTYPE;

	err = rsiAddHyperTexture(CTXT, &texture,type,surf->item);
	if(err)
		return err;

	if(arg[1])
	{
		if(!read_vector(&vec,(char*)arg[1]))
			return ERROR_VECTOR;
		err = rsiSetHyperTexture(CTXT, texture,rsiTHyperPos,&vec,rsiTDone);
		if(err)
			return err;
	}

	if(arg[2])
	{
		if(!read_vector(&vec,(char*)arg[2]))
			return ERROR_VECTOR;
		err = rsiSetHyperTexture(CTXT, texture,rsiTHyperAlign,&vec,rsiTDone);
		if(err)
			return err;
	}

	if(arg[3])
	{
		if(!read_vector(&vec,(char*)arg[3]))
			return ERROR_VECTOR;
		err = rsiSetHyperTexture(CTXT, texture,rsiTHyperSize,&vec,rsiTDone);
		if(err)
			return err;
	}

	if(arg[4])
	{
		fnum = (float)atof((char*)arg[4]);
		err = rsiSetHyperTexture(CTXT, texture,rsiTHyperP1,fnum,rsiTDone);
		if(err)
			return err;
	}

	if(arg[5])
	{
		fnum = (float)atof((char*)arg[5]);
		err = rsiSetHyperTexture(CTXT, texture,rsiTHyperP2,fnum,rsiTDone);
		if(err)
			return err;
	}

	if(arg[6])
	{
		fnum = (float)atof((char*)arg[6]);
		err = rsiSetHyperTexture(CTXT, texture,rsiTHyperP3,fnum,rsiTDone);
		if(err)
			return err;
	}

	if(arg[7])
	{
		actor = FindActorListItem((char*)arg[7]);
		if(!actor)
			return rsiERR_ACTOR;
		err = rsiSetHyperTexture(CTXT, texture,rsiTHyperActor,actor,rsiTDone);
		if(err)
			return err;
	}

	return rsiERR_NONE;
}
static int
parse_arg_type(char **name, enum arg_type *ret)
{
	char *rest = NULL;
	enum arg_type candidate;

#define KEYWORD(KWD, TYPE)						\
	do {								\
		if (strncmp(*name, KWD, sizeof(KWD) - 1) == 0) {	\
			rest = *name + sizeof(KWD) - 1;			\
			candidate = TYPE;				\
			goto ok;					\
		}							\
	} while (0)

	KEYWORD("void", ARGTYPE_VOID);
	KEYWORD("int", ARGTYPE_INT);
	KEYWORD("uint", ARGTYPE_UINT);
	KEYWORD("long", ARGTYPE_LONG);
	KEYWORD("ulong", ARGTYPE_ULONG);
	KEYWORD("char", ARGTYPE_CHAR);
	KEYWORD("short", ARGTYPE_SHORT);
	KEYWORD("ushort", ARGTYPE_USHORT);
	KEYWORD("float", ARGTYPE_FLOAT);
	KEYWORD("double", ARGTYPE_DOUBLE);
	KEYWORD("array", ARGTYPE_ARRAY);
	KEYWORD("struct", ARGTYPE_STRUCT);

	/* Misspelling of int used in ltrace.conf that we used to
	 * ship.  */
	KEYWORD("itn", ARGTYPE_INT);

	assert(rest == NULL);
	return -1;

#undef KEYWORD

ok:
	if (isalnum(CTYPE_CONV(*rest)) || *rest == '_')
		return -1;

	*name = rest;
	*ret = candidate;
	return 0;
}
Esempio n. 14
0
int f_spotlight(ULONG *arg)
{
	rsiVECTOR vec;
	rsiCOLOR color;
	float fnum;
	void *actor;
	rsiResult err;
	ULONG flags = 0;

	err = rsiCreateSpotLight(&light);
	if (err)
		return err;

	if (!read_vector(&vec,(char*)arg[0]))
		return ERROR_VECTOR;
	err = rsiSetSpotLight(light,rsiTLightPos,&vec,rsiTDone);
	if (err)
		return err;

	if (arg[1])
	{
		if (!read_color(&color,(char*)arg[1]))
			return ERROR_COLOREXP;
		err = rsiSetSpotLight(light,rsiTLightColor,&color,rsiTDone);
		if (err)
			return err;
	}

	if (arg[2])
	{
		if (!read_vector(&vec,(char*)arg[2]))
			return ERROR_VECTOR;
		err = rsiSetSpotLight(light,rsiTLightLookPoint,&vec,rsiTDone);
		if (err)
			return err;
	}

	if (arg[3])
	{
		fnum = (float)atof((char*)arg[3]);
		err = rsiSetSpotLight(light, rsiTLightAngle,fnum,rsiTDone);
		if (err)
			return err;
	}

	if (arg[4])
	{
		fnum = (float)atof((char*)arg[4]);
		err = rsiSetSpotLight(light, rsiTLightRadius, fnum, rsiTDone);
		if (err)
			return err;
	}

	if (KEYWORD(arg[5], "SHADOW"))
		flags |= rsiFLightShadow;

	if (arg[6])
	{
		actor = FindActorListItem((char*)arg[6]);
		if (!actor)
			return rsiERR_ACTOR;

		err = rsiSetSpotLight(light, rsiTLightActor, actor,rsiTDone);
		if (err)
			return err;
	}

	if (arg[7])
	{
		actor = FindActorListItem((char*)arg[7]);
		if (!actor)
			return rsiERR_ACTOR;

		err = rsiSetSpotLight(light, rsiTLightLookPActor, actor,rsiTDone);
		if (err)
			return err;
	}

	if (arg[8])
	{
		fnum = (float)atof((char*)arg[8]);
		err = rsiSetSpotLight(light, rsiTLightFallOff, fnum,rsiTDone);
		if (err)
			return err;
	}

	if (!KEYWORD(arg[9], "NOSTAR"))
		flags |= rsiFLightStar;

	if (!KEYWORD(arg[10], "NOFLARES"))
		flags |= rsiFLightFlares;

	err = rsiSetSpotLight(light, rsiTLightFlags, flags, rsiTDone);
	if (err)
		return err;

	return rsiERR_NONE;
}
Esempio n. 15
0
/*
 * Implementation
 */
void
LispStreamInit(void)
{
    Oopen		= STATIC_ATOM("OPEN");
    Oclose		= STATIC_ATOM("CLOSE");
    Otruename		= STATIC_ATOM("TRUENAME");

    Kif_does_not_exist	= KEYWORD("IF-DOES-NOT-EXIST");
    Kprobe		= KEYWORD("PROBE");
    Kinput		= KEYWORD("INPUT");
    Koutput		= KEYWORD("OUTPUT");
    Kio			= KEYWORD("IO");
    Knew_version	= KEYWORD("NEW-VERSION");
    Krename		= KEYWORD("RENAME");
    Krename_and_delete	= KEYWORD("RENAME-AND-DELETE");
    Koverwrite		= KEYWORD("OVERWRITE");
    Kappend		= KEYWORD("APPEND");
    Ksupersede		= KEYWORD("SUPERSEDE");
    Kcreate		= KEYWORD("CREATE");
}
Esempio n. 16
0
int f_startrender(ULONG *arg)
{
	rsiResult err;
	int flags = 0;
	float begin, end;
	int left,top,right,bottom;
	void *dmy = NULL;
	BOOL res;
	rsiSMALL_COLOR *scr;

	if(insideCSG > 0)
		return ERROR_CSG;

	if (KEYWORD(arg[0], "QUICK"))
		flags |= rsiFRenderQuick;

	if (arg[1])
	{
		err = rsiSetOctreeDepth(atoi((char*)arg[1]));
		if (err)
			return err;
	}

	if (arg[2])
		begin = (float)atof((char*)arg[2]);
	else
		begin = 0.;

	if (arg[3])
		end = (float)atof((char*)arg[3]);
	else
		end = 0.;

	if (arg[4])
		left = atoi((char *)arg[4]);
	else
		left = rsiFDefault;

	if (arg[5])
		top = atoi((char *)arg[5]);
	else
		top = rsiFDefault;

	if (arg[6])
		right = atoi((char *)arg[6]);
	else
		right = rsiFDefault;

	if (arg[7])
		bottom = atoi((char *)arg[7]);
	else
		bottom = rsiFDefault;

	if (arg[8])
	{
		err = rsiSetWorld(dmy, rsiTWorldMinObjects, atoi((char *)arg[8]), rsiTDone);
		if(err)
			return err;
	}

	err = rsiSetRenderField(left,top,right,bottom);
	if (err)
		return err;

	if (scrarray)
		delete [ ] scrarray;

	err = rsiRender((UBYTE**)&scr,rsiTRenderFlags,flags,rsiTRenderTimeBegin,begin,rsiTRenderTimeEnd,end,rsiTDone);
	
	if (err)
		return err;
	
	scrarray = new rsiSMALL_COLOR[xRes*yRes];
	if(!scrarray)
		return ERROR_MEM;

	memcpy(scrarray, scr, sizeof(rsiSMALL_COLOR)*xRes*yRes);
	return err;
}
Esempio n. 17
0
int f_setworld(ULONG *arg)
{
	rsiCOLOR color;
	float fnum;
	rsiResult err;
	void *dmy=NULL;

	if (arg[0])
	{
		if (!read_color(&color,(char*)arg[0]))
			return ERROR_COLOREXP;
		err = rsiSetWorld(dmy,rsiTWorldBackground,&color,rsiTDone);
		if (err)
			return err;
	}

	if (arg[1])
	{
		if (!read_color(&color,(char*)arg[1]))
			return ERROR_COLOREXP;
		err = rsiSetWorld(dmy,rsiTWorldAmbient,&color,rsiTDone);
		if (err)
			return err;
	}

	if (KEYWORD(arg[2], "RANDJIT"))
	{
		err = rsiSetRandomJitter(KEYWORD(arg[2], "RANDJIT"));
		if (err)
			return err;
	}

	if (arg[3])
	{
		err = rsiSetWorld(dmy,rsiTWorldBackdropPic,(char*)arg[3],rsiTDone);
		if (err)
			return err;
	}

	if (arg[4])
	{
		fnum = (float)atof((char*)arg[4]);
		err = rsiSetWorld(dmy,rsiTWorldFogLength,fnum,rsiTDone);
		if (err)
			return err;
	}

	if (arg[5])
	{
		fnum = (float)atof((char*)arg[5]);
		err = rsiSetWorld(dmy,rsiTWorldFogHeight,fnum,rsiTDone);
		if (err)
			return err;
	}

	if (arg[6])
	{
		if (!read_color(&color,(char*)arg[6]))
			return ERROR_COLOREXP;
		err = rsiSetWorld(dmy,rsiTWorldFogColor,&color,rsiTDone);
		if (err)
			return err;
	}

	if (arg[7])
	{
		err = rsiSetWorld(dmy,rsiTWorldReflectionMap,(char*)arg[7],rsiTDone);
		if (err)
			return err;
	}

	return rsiERR_NONE;
}