Skip to content

Instantly share code, notes, and snippets.

@Xanewok
Created November 23, 2017 01:30
Show Gist options
  • Select an option

  • Save Xanewok/0a729401d5b68f03e9e782f92de49f4a to your computer and use it in GitHub Desktop.

Select an option

Save Xanewok/0a729401d5b68f03e9e782f92de49f4a to your computer and use it in GitHub Desktop.
unsafe extern fn readPixels(cx: *mut JSContext, _obj: HandleObject, this: *const WebGLRenderingContext, args: *const JSJitMethodCallArgs) -> bool {
return wrap_panic(panic::AssertUnwindSafe(|| {
let this = &*this;
let args = &*args;
let argc = args._base.argc_;
if argc < 7 {
throw_type_error(cx, "Not enough arguments to \"WebGLRenderingContext.readPixels\".");
return false;
}
let arg0: i32 = match FromJSValConvertible::from_jsval(cx, args.get(0), ConversionBehavior::Default) {
Ok(ConversionResult::Success(v)) => v,
Ok(ConversionResult::Failure(error)) => {
throw_type_error(cx, &error);
return false;
}
_ => { return false;
}
};
let arg1: i32 = match FromJSValConvertible::from_jsval(cx, args.get(1), ConversionBehavior::Default) {
Ok(ConversionResult::Success(v)) => v,
Ok(ConversionResult::Failure(error)) => {
throw_type_error(cx, &error);
return false;
}
_ => { return false;
}
};
let arg2: i32 = match FromJSValConvertible::from_jsval(cx, args.get(2), ConversionBehavior::Default) {
Ok(ConversionResult::Success(v)) => v,
Ok(ConversionResult::Failure(error)) => {
throw_type_error(cx, &error);
return false;
}
_ => { return false;
}
};
let arg3: i32 = match FromJSValConvertible::from_jsval(cx, args.get(3), ConversionBehavior::Default) {
Ok(ConversionResult::Success(v)) => v,
Ok(ConversionResult::Failure(error)) => {
throw_type_error(cx, &error);
return false;
}
_ => { return false;
}
};
let arg4: u32 = match FromJSValConvertible::from_jsval(cx, args.get(4), ConversionBehavior::Default) {
Ok(ConversionResult::Success(v)) => v,
Ok(ConversionResult::Failure(error)) => {
throw_type_error(cx, &error);
return false;
}
_ => { return false;
}
};
let arg5: u32 = match FromJSValConvertible::from_jsval(cx, args.get(5), ConversionBehavior::Default) {
Ok(ConversionResult::Success(v)) => v,
Ok(ConversionResult::Failure(error)) => {
throw_type_error(cx, &error);
return false;
}
_ => { return false;
}
};
let arg6: *mut JSObject = if args.get(6).get().is_object() {
args.get(6).get().to_object()
} else if args.get(6).get().is_null_or_undefined() {
ptr::null_mut()
} else {
throw_type_error(cx, "Value is not an object.");
return false;
};
let result: Result<(), Error> = this.ReadPixels(cx, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
let result = match result {
Ok(result) => result,
Err(e) => {
throw_dom_exception(cx, &this.global(), e);
return false;
},
};
(result).to_jsval(cx, args.rval());
return true;
}), false);
}
const readPixels_methodinfo: JSJitInfo = JSJitInfo {
call: readPixels as *const os::raw::c_void,
protoID: PrototypeList::ID::WebGLRenderingContext as u16,
depth: 0,
_bitfield_1:
JSJitInfo::new_bitfield_1(
JSJitInfo_OpType::Method as u8,
JSJitInfo_AliasSet::AliasEverything as u8,
JSValueType::JSVAL_TYPE_UNDEFINED as u8,
false,
false,
false,
false,
false,
false,
0 as u16,
)
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment