33#import "MyOpenGLView.h"
37static JSBool
OoliteGetProperty(JSContext *context, JSObject *
this, jsid propID, jsval *value);
38static JSBool
OoliteSetProperty(JSContext *context, JSObject *
this, jsid propID, JSBool strict, jsval *value);
119 if (!JSID_IS_INT(propID))
return YES;
126 switch (JSID_TO_INT(propID))
137 *value = INT_TO_JSVAL(JS_GetVersion(context));
141 *value = STRING_TO_JSVAL(JS_NewStringCopyZ(context, JS_VersionToString(JS_GetVersion(context))));
145 result = [UNIVERSE gameSettings];
153 return JS_NewNumberValue(context, [gameView colorSaturation], value);
156 *value = INT_TO_JSVAL([
UNIVERSE currentPostFX]);
161 NSString *toneMapperStr =
@"OOHDR_TONEMAPPER_UNDEFINED";
163 if ([gameView hdrOutput])
168 result = toneMapperStr;
174 NSString *toneMapperStr =
@"OOSDR_TONEMAPPER_UNDEFINED";
175 if (![gameView hdrOutput])
179 result = toneMapperStr;
185 return JS_NewNumberValue(context, [
UNIVERSE timeAccelerationFactor], value);
200static JSBool
OoliteSetProperty(JSContext *context, JSObject *
this, jsid propID, JSBool strict, jsval *value)
202 if (!JSID_IS_INT(propID))
return YES;
208 NSString *sValue =
nil;
211 switch (JSID_TO_INT(propID))
214 if (JS_ValueToNumber(context, *value, &fValue))
223 if (JS_ValueToInt32(context, *value, &iValue))
225 iValue =
MAX(iValue, 0);
226 [UNIVERSE setCurrentPostFX:iValue];
232 if (!JSVAL_IS_STRING(*value))
break;
237 if ([gameView hdrOutput]) [gameView setHDRToneMapper:OOHDRToneMapperFromString(sValue)];
238 else OOJSReportWarning(context,
@"hdrToneMapper cannot be set if not running in HDR mode");
245 if (!JSVAL_IS_STRING(*value))
break;
249 if (![gameView hdrOutput]) [gameView
setSDRToneMapper:OOSDRToneMapperFromString(sValue)];
250 else OOJSReportWarning(context,
@"sdrToneMapper cannot be set if not running in SDR mode");
257 if (JS_ValueToNumber(context, *value, &fValue))
259 [UNIVERSE setTimeAccelerationFactor:fValue];
279 return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
301 NSEnumerator *componentEnum =
nil;
307 if ([components isKindOfClass:[NSArray
class]])
310 for (componentEnum = [components objectEnumerator]; (component = [componentEnum nextObject]); )
312 if (![component isKindOfClass:[NSNumber
class]])
319 else if ([components isKindOfClass:[NSString
class]])
323 else components =
nil;
325 if (components !=
nil)
NSString * OOStringFromHDRToneMapper(OOHDRToneMapper toneMapper)
NSString * OOStringFromSDRToneMapper(OOSDRToneMapper toneMapper)
#define OOJS_NATIVE_ENTER(cx)
static JSBool OoliteGetProperty(JSContext *context, JSObject *this, jsid propID, jsval *value)
static JSFunctionSpec sOoliteMethods[]
static JSBool OoliteSetProperty(JSContext *context, JSObject *this, jsid propID, JSBool strict, jsval *value)
@ kOolite_timeAccelerationFactor
@ kOolite_colorSaturation
@ kOolite_jsVersionString
static JSPropertySpec sOoliteProperties[]
static JSClass sOoliteClass
static JSBool OoliteCompareVersion(JSContext *context, uintN argc, jsval *vp)
void InitOOJSOolite(JSContext *context, JSObject *global)
static NSString * VersionString(void)
static NSArray * VersionComponents(void)
id OOJSNativeObjectFromJSValue(JSContext *context, jsval value)
void OOJSReportWarning(JSContext *context, NSString *format,...)
#define OOJS_PROP_READWRITE_CB
OOINLINE jsval OOJSValueFromNativeObject(JSContext *context, id object)
void OOJSReportBadPropertySelector(JSContext *context, JSObject *thisObj, jsid propID, JSPropertySpec *propertySpec)
NSString * OOStringFromJSValue(JSContext *context, jsval value)
JSBool OOJSUnconstructableConstruct(JSContext *context, uintN argc, jsval *vp)
#define OOJS_PROP_READONLY
void OOJSReportBadPropertyValue(JSContext *context, JSObject *thisObj, jsid propID, JSPropertySpec *propertySpec, jsval value)
#define OOJS_PROP_READONLY_CB
#define OOJS_RETURN_INT(v)
NSArray * ComponentsFromVersionString(NSString *string)
NSComparisonResult CompareVersions(NSArray *version1, NSArray *version2)
void adjustColorSaturation:(float colorSaturationAdjustment)
void setSDRToneMapper:(OOSDRToneMapper newToneMapper)