TITANIUM_FUNCTION(ThreeDMatrix, translate)
		{
			ENSURE_ARGUMENT_INDEX(2);
			ENSURE_DOUBLE_AT_INDEX(tx, 0);
			ENSURE_DOUBLE_AT_INDEX(ty, 1);
			ENSURE_DOUBLE_AT_INDEX(tz, 2);
			const auto matrix = translate(tx, ty, tz);
			if (matrix) {
				return matrix->get_object();
			} else {
				return get_context().CreateUndefined();
			}
		}
		TITANIUM_FUNCTION(ThreeDMatrix, scale)
		{
			ENSURE_ARGUMENT_INDEX(2);
			ENSURE_DOUBLE_AT_INDEX(sx, 0);
			ENSURE_DOUBLE_AT_INDEX(sy, 1);
			ENSURE_DOUBLE_AT_INDEX(sz, 2);
			const auto matrix = scale(sx, sy, sz);
			if (matrix) {
				return matrix->get_object();
			} else {
				return get_context().CreateUndefined();
			}
		}
		TITANIUM_FUNCTION(ThreeDMatrix, rotate)
		{
			ENSURE_ARGUMENT_INDEX(3);
			ENSURE_DOUBLE_AT_INDEX(angle, 0);
			ENSURE_DOUBLE_AT_INDEX(x, 1);
			ENSURE_DOUBLE_AT_INDEX(y, 2);
			ENSURE_DOUBLE_AT_INDEX(z, 3);
			const auto matrix = rotate(angle, x, y, z);
			if (matrix) {
				return matrix->get_object();
			} else {
				return get_context().CreateUndefined();
			}
		}
예제 #4
0
	TITANIUM_FUNCTION(API, log)
	{
		const auto js_context = this_object.get_context();
		if (arguments.size() == 1) {
			ENSURE_STRING_AT_INDEX(message, 0);
			GetStaticObject(js_context).GetPrivate<API>()->log("info", message);
		} else if (arguments.size() == 2) {
			ENSURE_ARGUMENT_INDEX(1);
			ENSURE_STRING_AT_INDEX(level, 0);
			JOIN_ARGUMENT_STRINGS(message, 1);
			GetStaticObject(js_context).GetPrivate<API>()->log(level, message.str());
		}

		return js_context.CreateUndefined();
	}
		//
		// _executeListener is internal function for Ti.App event callback.
		//
		TITANIUM_FUNCTION(WebView, _executeListener)
		{
			ENSURE_ARGUMENT_INDEX(1);
			ENSURE_OBJECT_AT_INDEX(callee, 1);
			auto webview = callee.GetProperty("webview");
			if (!webview.IsObject()) {
				TITANIUM_LOG_WARN("WebView._executeListener: Can't find this object");
				return get_context().CreateUndefined();
			}
			auto webview_ptr = static_cast<JSObject>(webview).GetPrivate<Titanium::UI::WebView>();
			TITANIUM_ASSERT(webview_ptr);

			ENSURE_OBJECT_AT_INDEX(data, 0);
			webview_ptr->_executeListener(
				static_cast<std::string>(data.GetProperty("type")),
				static_cast<std::string>(static_cast<JSValue>(data).ToJSONString()));

			return get_context().CreateUndefined();
		}