2004-06-03 11:38:14 -07:00
|
|
|
#include "precompiled.h"
|
2004-05-29 17:46:58 -07:00
|
|
|
|
|
|
|
|
#include "ScriptingHost.h"
|
2005-01-18 02:52:22 -08:00
|
|
|
#include "ScriptCustomTypes.h"
|
2004-05-29 17:46:58 -07:00
|
|
|
|
|
|
|
|
// POINT2D
|
|
|
|
|
|
|
|
|
|
JSClass Point2dClass =
|
|
|
|
|
{
|
|
|
|
|
"Point2d", 0,
|
|
|
|
|
JS_PropertyStub, JS_PropertyStub,
|
|
|
|
|
JS_PropertyStub, JS_PropertyStub,
|
|
|
|
|
JS_EnumerateStub, JS_ResolveStub,
|
|
|
|
|
JS_ConvertStub, JS_FinalizeStub
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
JSPropertySpec Point2dProperties[] =
|
|
|
|
|
{
|
|
|
|
|
{"x", 0, JSPROP_ENUMERATE},
|
|
|
|
|
{"y", 1, JSPROP_ENUMERATE},
|
|
|
|
|
{0}
|
|
|
|
|
};
|
|
|
|
|
|
2005-08-09 08:55:44 -07:00
|
|
|
JSBool Point2d_Constructor(JSContext* UNUSED(cx), JSObject* obj, uintN argc, jsval* argv, jsval* UNUSED(rval))
|
2004-05-29 17:46:58 -07:00
|
|
|
{
|
|
|
|
|
if (argc == 2)
|
|
|
|
|
{
|
|
|
|
|
g_ScriptingHost.SetObjectProperty(obj, "x", argv[0]);
|
|
|
|
|
g_ScriptingHost.SetObjectProperty(obj, "y", argv[1]);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
jsval zero = INT_TO_JSVAL(0);
|
|
|
|
|
g_ScriptingHost.SetObjectProperty(obj, "x", zero);
|
|
|
|
|
g_ScriptingHost.SetObjectProperty(obj, "y", zero);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return JS_TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
2005-01-18 02:52:22 -08:00
|
|
|
// Colour
|
|
|
|
|
|
|
|
|
|
void SColour::SColourInit( float _r, float _g, float _b, float _a )
|
|
|
|
|
{
|
|
|
|
|
r = _r; g = _g; b = _b; a = _a;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SColour::ScriptingInit()
|
|
|
|
|
{
|
2007-05-29 12:01:21 -07:00
|
|
|
AddMethod<CStr, &SColour::ToString>( "toString", 0 );
|
2005-04-22 00:12:55 -07:00
|
|
|
AddProperty<float>( L"r", (float IJSObject::*)&SColour::r );
|
|
|
|
|
AddProperty<float>( L"g", (float IJSObject::*)&SColour::g );
|
|
|
|
|
AddProperty<float>( L"b", (float IJSObject::*)&SColour::b );
|
|
|
|
|
AddProperty<float>( L"a", (float IJSObject::*)&SColour::a );
|
2005-03-30 08:14:19 -08:00
|
|
|
|
2005-01-18 02:52:22 -08:00
|
|
|
CJSObject<SColour>::ScriptingInit( "Colour", SColour::Construct, 3 );
|
|
|
|
|
}
|
|
|
|
|
|
2007-05-29 12:01:21 -07:00
|
|
|
CStr SColour::ToString( JSContext* UNUSED(cx), uintN UNUSED(argc), jsval* UNUSED(argv) )
|
2005-01-18 02:52:22 -08:00
|
|
|
{
|
2007-05-29 12:01:21 -07:00
|
|
|
return "[object Colour: ( " + CStr(r) + ", " + CStr(g) + ", " + CStr(b) + ", " + CStr(a) + " )]";
|
2005-01-18 02:52:22 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2005-08-09 08:55:44 -07:00
|
|
|
JSBool SColour::Construct( JSContext* UNUSED(cx), JSObject* UNUSED(obj), uint argc, jsval* argv, jsval* rval )
|
2005-01-18 02:52:22 -08:00
|
|
|
{
|
2005-06-27 21:06:25 -07:00
|
|
|
debug_assert( argc >= 3 );
|
2005-01-18 02:52:22 -08:00
|
|
|
float alpha = 1.0;
|
|
|
|
|
if( argc >= 4 ) alpha = ToPrimitive<float>( argv[3] );
|
|
|
|
|
|
|
|
|
|
SColour* col = new SColour( ToPrimitive<float>( argv[0] ),
|
|
|
|
|
ToPrimitive<float>( argv[1] ),
|
|
|
|
|
ToPrimitive<float>( argv[2] ),
|
|
|
|
|
alpha );
|
|
|
|
|
|
|
|
|
|
col->m_EngineOwned = false;
|
|
|
|
|
|
|
|
|
|
*rval = OBJECT_TO_JSVAL( col->GetScript() );
|
|
|
|
|
|
|
|
|
|
return( JS_TRUE );
|
2005-01-19 14:32:25 -08:00
|
|
|
}
|
2005-01-22 17:36:47 -08:00
|
|
|
|
|
|
|
|
// (Simon) Added this to prevent a deep copy, which evidently makes direct
|
|
|
|
|
// copies of the heap allocated objects within CJSObject, which eventually
|
|
|
|
|
// goes boom
|
|
|
|
|
SColour &SColour::operator = (const SColour &o)
|
|
|
|
|
{
|
|
|
|
|
r=o.r;
|
|
|
|
|
g=o.g;
|
|
|
|
|
b=o.b;
|
|
|
|
|
a=o.a;
|
|
|
|
|
|
|
|
|
|
return *this;
|
|
|
|
|
}
|