void VJSImage::_thumbnail(XBOX::VJSParms_callStaticFunction& ioParms, VJSPictureContainer* inPict) { bool ok = true; if (!ioParms.IsNumberParam(1)) { ok = false; vThrowError(VE_JVSC_WRONG_PARAMETER_TYPE_NUMBER, "1"); } if (!ioParms.IsNumberParam(2)) { ok = false; vThrowError(VE_JVSC_WRONG_PARAMETER_TYPE_NUMBER, "2"); } VPicture* pic = inPict->GetPict(); if (pic != nil && ok) { sLONG w = 0, h = 0, mode = 0; ioParms.GetLongParam(1, &w); ioParms.GetLongParam(2, &h); ioParms.GetLongParam(3, &mode); if (w == 0) w = 300; if (h == 0) h = 300; if (mode == 0) mode = 4; VPicture* thumb = pic->BuildThumbnail(w, h, (PictureMosaic)mode); if (thumb != nil) { VPictureCodecFactoryRef fact; VPicture* thumb2 = new VPicture(); VError err = fact->Encode(*thumb, L".jpg", *thumb2, nil); if (err == VE_OK) { /* VJSPictureContainer* pictContains = new VJSPictureContainer(thumb2, true, ioParms.GetContextRef()); ioParms.ReturnValue(VJSImage::CreateInstance(ioParms.GetContextRef(), pictContains)); pictContains->Release(); */ ioParms.ReturnVValue(*thumb2); delete thumb2; } else { delete thumb2; ioParms.ReturnNullValue(); } delete thumb; } else ioParms.ReturnNullValue(); } else ioParms.ReturnNullValue(); }
void VJSXMLHttpRequest::_GetResponseHeader(XBOX::VJSParms_callStaticFunction& ioParms, XMLHttpRequest* inXhr) { XBOX::VString pHeader; bool resHeader; resHeader=ioParms.GetStringParam(1, pHeader); if(resHeader && inXhr) { XBOX::VString value; XBOX::VError res; res=inXhr->GetResponseHeader(pHeader, &value); //Don't throw any error here, but returns null if(res==XBOX::VE_OK) ioParms.ReturnString(value); else ioParms.ReturnNullValue(); } else XBOX::vThrowError(VE_XHRQ_JS_BINDING_ERROR); }
void VJSNetServerSyncClass::_accept (XBOX::VJSParms_callStaticFunction &ioParms, VJSNetServerObject *inServer) { xbox_assert(inServer != NULL); sLONG timeOut; if (ioParms.CountParams() >= 1) { if (!ioParms.IsNumberParam(1) || !ioParms.GetLongParam(1, &timeOut)) { XBOX::vThrowError(XBOX::VE_JVSC_WRONG_PARAMETER_TYPE_NUMBER, "1"); return; } if (timeOut < 0) { XBOX::vThrowError(XBOX::VE_JVSC_WRONG_PARAMETER_TYPE_NUMBER, "1"); return; } } else timeOut = 0; XBOX::XTCPSock *socket; // If socket returned is NULL, accept() has timed out or an error has occured. // An exception is thrown by GetNewConnectedSocket() if erroneous. if ((socket = inServer->fSockListener->GetNewConnectedSocket(timeOut)) == NULL) ioParms.ReturnNullValue(); else { XBOX::VTCPEndPoint *endPoint = NULL; VJSNetSocketObject *socketObject = NULL; if ((endPoint = new XBOX::VTCPEndPoint(socket)) == NULL || (socketObject = new VJSNetSocketObject(true, VJSNetSocketObject::eTYPE_TCP4, false)) == NULL) { if (endPoint != NULL) endPoint->Release(); if (socketObject != NULL) socketObject->Release(); socket->Close(); delete socket; XBOX::vThrowError(XBOX::VE_MEMORY_FULL); } else { socketObject->fEndPoint = endPoint; socketObject->fEndPoint->SetNoDelay(false); XBOX::VJSObject newSocketSync = VJSNetSocketSyncClass::CreateInstance(ioParms.GetContext(), socketObject); XBOX::VString address; socketObject->fObjectRef = newSocketSync.GetObjectRef(); socketObject->fWorker = VJSWorker::RetainWorker(ioParms.GetContext()); socketObject->fEndPoint->GetIP(address); newSocketSync.SetProperty("remoteAddress", address); newSocketSync.SetProperty("remotePort", (sLONG) socketObject->fEndPoint->GetPort() & 0xffff); ioParms.ReturnValue(newSocketSync); } } }