📄 imagemagickobject.cpp
字号:
hr = Perform(MagickLib::IdentifyImageCommand,pArrayVar,pVar,&exception); if (FAILED(hr)) { if (exception.reason) reason = exception.reason; if (exception.description) description = exception.description; } } __except(1) { hr = E_UNEXPECTED; reason = "exception"; description = translate_exception(_exception_code()); } if (FAILED(hr)) { hr = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,dwErrorBase+1001); MagickLib::FormatString(message_text,"identify: %d: %.1024s: %.1024s", exception.severity,reason, description); Error(A2W(message_text),__uuidof(IMagickImage),hr); } MagickLib::DestroyExceptionInfo(&exception); return hr;}HRESULT MagickImage::AddArgs(BSTR widestr){ HRESULT hr = E_OUTOFMEMORY; if (m_argvIndex >= m_argc) return hr; hr = S_OK; MAKE_ANSIPTR_FROMWIDE(ptrANSI, widestr); m_argv[m_argvIndex++] = ptrANSI; (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "arg: %s",ptrANSI); if (m_argvIndex >= m_argc) hr = ReAllocateArgs( nDefaultArgumentSize ); return hr;}HRESULT MagickImage::AddArgs(LPTSTR lpstr){ HRESULT hr = E_OUTOFMEMORY; if (m_argvIndex >= m_argc) return hr; hr = S_OK;#ifdef _UNICODE MAKE_ANSIPTR_FROMWIDE(ptrANSI, lpstr);#else MAKE_COPY_OF_ANSI(ptrANSI, lpstr);#endif m_argv[m_argvIndex++] = ptrANSI; (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "arg: %s",ptrANSI); if (m_argvIndex >= m_argc) hr = ReAllocateArgs( nDefaultArgumentSize ); return hr;}HRESULT MagickImage::AllocateArgs(int cArgc){ m_argv = new LPTSTR [cArgc]; m_argv_t = new LPTSTR [cArgc]; if ((m_argv == NULL) || (m_argv_t == NULL)) return E_OUTOFMEMORY; m_argc = cArgc; m_argvIndex = 0; for (int i=0; i<m_argc; i++) { m_argv[i] = NULL; m_argv_t[i] = NULL; } return S_OK;}HRESULT MagickImage::ReAllocateArgs(int cArgc){ LPTSTR *argv = m_argv; LPTSTR *argv_t = m_argv_t; int argc = m_argc + cArgc; argv = new LPTSTR [argc]; argv_t = new LPTSTR [argc]; if ((argv == NULL) || (argv_t == NULL)) return E_OUTOFMEMORY; for (int i=0; i<argc; i++) { if (i < m_argc) { argv[i] = m_argv[i]; argv_t[i] = m_argv_t[i]; } else { argv[i] = NULL; argv_t[i] = NULL; } } if (m_argv) { delete m_argv; m_argv = argv; } if (m_argv_t) { delete m_argv_t; m_argv_t = argv_t; } m_argc = argc; return S_OK;}void MagickImage::DeleteArgs(){ EmptyArgs(); if (m_argv) delete m_argv; if (m_argv_t) delete m_argv_t;}char **MagickImage::GetArgv(){ return m_argv;}char **MagickImage::GetArgvT(){ return m_argv_t;}int MagickImage::GetArgc(){ return m_argvIndex;}void MagickImage::EmptyArgs(){ for (int i=0; i<m_argc; i++) { if (m_argv[i] != NULL) delete (void *) (m_argv[i]); m_argv[i] = NULL; if (m_argv_t[i] != NULL) delete (void *) (m_argv_t[i]); m_argv_t[i] = NULL; } m_argvIndex = 0;}STDMETHODIMP MagickImage::OnStartPage(IUnknown* pUnk) { (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage"); if(!pUnk) return E_POINTER; CComPtr<IScriptingContext> spContext; HRESULT hr; // Get the IScriptingContext Interface hr = pUnk->QueryInterface(__uuidof(IScriptingContext), (void **)&spContext); if(FAILED(hr)) return hr; // Get Request Object Pointer hr = spContext->get_Request(&m_piRequest); if(FAILED(hr)) { (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage get Request failed"); //spContext.Release(); //return hr; } // Get Response Object Pointer hr = spContext->get_Response(&m_piResponse); if(FAILED(hr)) { (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage get Response failed"); //m_piRequest.Release(); //return hr; } // Get Server Object Pointer hr = spContext->get_Server(&m_piServer); if(FAILED(hr)) { (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage get Server failed"); //m_piRequest.Release(); //m_piResponse.Release(); //return hr; } // Get Session Object Pointer hr = spContext->get_Session(&m_piSession); if(FAILED(hr)) { (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage get Session failed"); //m_piRequest.Release(); //m_piResponse.Release(); //m_piServer.Release(); //return hr; } // Get Application Object Pointer hr = spContext->get_Application(&m_piApplication); if(FAILED(hr)) { (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage get Application failed"); //m_piRequest.Release(); //m_piResponse.Release(); //m_piServer.Release(); //m_piSession.Release(); //return hr; } m_bOnStartPageCalled = TRUE; { CComPtr<IRequestDictionary>pReadDictionary; CComPtr<IReadCookie>pCookieDictionary; hr=m_piRequest->get_Cookies(&pReadDictionary); if(SUCCEEDED(hr)) { CComVariant vtIn(_T("MAGICK_DEBUG")); CComVariant vtKey(_T("level")); CComVariant vtOut; CComVariant vtCookieValue; hr=pReadDictionary->get_Item(vtIn,&vtOut); if(SUCCEEDED(hr) && (V_VT(&vtOut)==VT_DISPATCH)) { pCookieDictionary = (IReadCookie*)(vtOut.pdispVal); hr=pCookieDictionary->get_Item(vtKey,&vtCookieValue); if(SUCCEEDED(hr) && (V_VT(&vtCookieValue)==VT_BSTR)) { CW2T str(vtCookieValue.bstrVal); int level = atoi((LPCTSTR)str);#if defined(_ENABLE_OLD_LOGGING_SUPPORT_) MagickLib::DebugLevel(level);#endif (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage debug level: %d",level); } else (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage - parse error"); } else (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage - no MAGICK_DEBUG"); } else (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnStartPage - no cookies"); } return S_OK;}STDMETHODIMP MagickImage::OnEndPage () { (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "OnEndPage"); m_bOnStartPageCalled = FALSE; // Release all interfaces if (m_piRequest) m_piRequest.Release(); if (m_piResponse) m_piResponse.Release(); if (m_piServer) m_piServer.Release(); if (m_piSession) m_piSession.Release(); if (m_piApplication) m_piApplication.Release(); return S_OK;}HRESULT MagickImage::Activate(){ (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "Activate"); HRESULT hr = GetObjectContext(&m_spObjectContext); if (SUCCEEDED(hr)) return S_OK; return hr;} BOOL MagickImage::CanBePooled(){ (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "CanBePooled"); return FALSE;} void MagickImage::Deactivate(){ (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "Deactivate"); m_spObjectContext.Release();} int LocalGetFieldCount( string &s, const TCHAR* psz ){ int len = _tcslen( psz ); int pos = 0; int iCount = 1; while( (pos = s.find(psz, pos)) >= 0 ) { pos += len; iCount++; } return iCount;};int LocalGetFieldCount( string &s, const TCHAR& ch ){ int pos = 0; int iCount = 1; while( (pos = s.find(ch, pos)) >= 0 ) { pos++; iCount++; } return iCount;};string LocalGetField( string &s, const TCHAR* delim, int fieldnum ){ int lenDelim = _tcslen( delim ); int pos = 0, term = 0; int retlen = 0, retpos = 0; while( fieldnum-- >= 0 ) { term = s.find(delim, pos); if( term >= 0 ) { retpos = pos; retlen = term - pos; pos = term + lenDelim; } else { retpos = pos; retlen = s.length() - pos; break; } } return s.substr(retpos, retlen);};string LocalGetField( string &s, const TCHAR& ch, int fieldnum ){ int pos = 0, term = 0; int retlen = 0, retpos = 0; while( fieldnum-- >= 0 ) { term = s.find(ch, pos); if( term >= 0 ) { retpos = pos; retlen = term - pos; pos = term + 1; } else { retpos = pos; retlen = s.length() - pos; break; } } return s.substr(retpos, retlen);};HRESULT MagickImage::Construct(IDispatch * pCtorObj){ USES_CONVERSION; (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "Construct"); CComPtr<IObjectConstructString> spObjectConstructString; HRESULT hr = pCtorObj->QueryInterface(&spObjectConstructString); if (SUCCEEDED(hr)) { CComBSTR bstrConstruct; hr = spObjectConstructString->get_ConstructString(&bstrConstruct); if (SUCCEEDED(hr)) { string options; MAKE_ANSIPTR_FROMWIDE(ptrANSI, bstrConstruct); (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "Construct data: %s",ptrANSI); options = W2CA(bstrConstruct); int nOptions = LocalGetFieldCount(options,_T(',')); for (int nOptionIndex = 0; nOptionIndex < nOptions; nOptionIndex++) { string param = LocalGetField( options, _T(','), nOptionIndex ); int nParams = LocalGetFieldCount(param,_T('=')); if (nParams == 2) { string name = LocalGetField( param, _T('='), 0 ); string value = LocalGetField( param, _T('='), 1 ); (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(), "Construct name: %s value: %s", name.c_str(),value.c_str());#if defined(_ENABLE_OLD_LOGGING_SUPPORT_) if (name.compare(_T("MAGICK_DEBUG_LEVEL")) == 0) MagickLib::DebugLevel(atoi(value.c_str())); if (name.compare(_T("MAGICK_DEBUG_PATH")) == 0) MagickLib::DebugFilePath(value.c_str()); if (name.compare(_T("MAGICK_LOG_EVENTMASK")) == 0) MagickLib::SetLogEventMask(value.c_str());#endif } } } } return hr;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -