⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagemagickobject.cpp

📁 下载来的一个看图软件的源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    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 + -