mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-11 05:24:10 +08:00
115 lines
4.3 KiB
C++
115 lines
4.3 KiB
C++
// ImageSource.h : Declaration of the CAVSXMLImageSource
|
||
|
||
#pragma once
|
||
#include "resource.h" // main symbols
|
||
#include <atldefine.h>
|
||
|
||
#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
|
||
#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
|
||
#endif
|
||
|
||
// IAVSXMLImageSource
|
||
[
|
||
object,
|
||
uuid("3F44C0DE-5FEA-4D5C-B5AB-C5C53D1FB8D4"),
|
||
dual, helpstring("IAVSXMLImageSource Interface"),
|
||
pointer_default(unique)
|
||
]
|
||
__interface IAVSXMLImageSource : IDispatch
|
||
{
|
||
[id(200), helpstring("method Open")] HRESULT LoadImage([in] BSTR sXMLString, [in] LONG nWidth, LONG nHeight, [out,retval] IUnknown** ppImage);
|
||
[propget, id(210), helpstring("property IAVSImageFilesCache2")] HRESULT FilesCache([out, retval] IUnknown** ppVal);
|
||
[propput, id(210), helpstring("property IAVSImageFilesCache2")] HRESULT FilesCache([in] IUnknown* pNewVal);
|
||
[id(220), helpstring("method SetAdditionalParam")] HRESULT SetAdditionalParam([in] BSTR ParamName, [in] VARIANT ParamValue);
|
||
[id(230), helpstring("method GetAdditionalParam")] HRESULT GetAdditionalParam([in] BSTR ParamName, [out, retval] VARIANT* ParamValue);
|
||
};
|
||
|
||
|
||
// _IAVSXMLImageSourceEvents
|
||
[
|
||
dispinterface,
|
||
uuid("8C817913-75EB-4819-9361-F86665E01CFC"),
|
||
helpstring("_IAVSXMLImageSourceEvents Interface")
|
||
]
|
||
__interface _IAVSXMLImageSourceEvents
|
||
{
|
||
};
|
||
|
||
|
||
// CAVSXMLImageSource
|
||
|
||
[
|
||
coclass,
|
||
default(IAVSXMLImageSource, _IAVSXMLImageSourceEvents),
|
||
threading(apartment),
|
||
event_source(com),
|
||
vi_progid("AVSImageConverter.AVSXMLImageSource"),
|
||
progid("AVSImageConverter.AVSXMLImageSource.1"),
|
||
version(1.0),
|
||
uuid("71ABA05D-1926-40CB-927E-794CD8E54351"),
|
||
helpstring("AVSXMLImageSource Class")
|
||
]
|
||
class ATL_NO_VTABLE CAVSXMLImageSource :
|
||
public IAVSXMLImageSource
|
||
{
|
||
ImageStudio::IAVSImageCache* m_piFilesCache;
|
||
ImageStudio::IImageTransforms* m_piTransform;
|
||
ImageFile::IImageFile3* m_piImageFile;
|
||
ImageVideoFile::IImageVideoFile4* m_piImageVideoFile;
|
||
CString m_sCurApngFile;
|
||
long m_nLastFrame;
|
||
CRITICAL_SECTION m_csThread;
|
||
INT32 m_nMinWidth;
|
||
INT32 m_nMinHeight;
|
||
public:
|
||
CAVSXMLImageSource():m_piFilesCache(NULL),m_piTransform(NULL),m_piImageFile(NULL),m_piImageVideoFile(NULL),m_nMinWidth(-1),m_nMinHeight(-1)
|
||
{
|
||
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL, CLSCTX_INPROC, ImageStudio::IID_IImageTransforms, (void**)(&m_piTransform));
|
||
CoCreateInstance(ImageFile::CLSID_ImageFile3, NULL, CLSCTX_INPROC, ImageFile::IID_IImageFile3, (void**)(&m_piImageFile));
|
||
CoCreateInstance(ImageVideoFile::CLSID_CImageVideoFile3, NULL, CLSCTX_INPROC, ImageVideoFile::IID_IImageVideoFile4, (void**)(&m_piImageVideoFile));
|
||
if( NULL != m_piImageVideoFile )
|
||
{
|
||
VARIANT vtResizeType;
|
||
vtResizeType.vt = VT_I4;
|
||
vtResizeType.lVal = 0; //<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> resize <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
m_piImageVideoFile->SetAdditionalParam( _T("resizetype"), vtResizeType );
|
||
VARIANT vtWithAlpha;
|
||
vtWithAlpha.vt = VT_BOOL;
|
||
vtWithAlpha.lVal = VARIANT_TRUE; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
m_piImageVideoFile->SetAdditionalParam( _T("drawwithalpha"), vtWithAlpha );
|
||
}
|
||
m_sCurApngFile = _T("");
|
||
m_nLastFrame = -1;
|
||
}
|
||
|
||
__event __interface _IAVSXMLImageSourceEvents;
|
||
|
||
|
||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||
|
||
HRESULT FinalConstruct()
|
||
{
|
||
InitializeCriticalSection(&m_csThread);
|
||
return S_OK;
|
||
}
|
||
|
||
void FinalRelease()
|
||
{
|
||
DeleteCriticalSection(&m_csThread);
|
||
RELEASEINTERFACE(m_piTransform);
|
||
RELEASEINTERFACE(m_piImageFile);
|
||
if( NULL != m_piImageVideoFile )
|
||
m_piImageVideoFile->CloseFile();
|
||
RELEASEINTERFACE(m_piImageVideoFile);
|
||
RELEASEINTERFACE(m_piFilesCache);
|
||
}
|
||
|
||
public:
|
||
STDMETHOD(LoadImage)( BSTR sXMLString, LONG nWidth, LONG nHeight, IUnknown** ppImage);
|
||
STDMETHOD(get_FilesCache)( IUnknown** ppVal);
|
||
STDMETHOD(put_FilesCache)( IUnknown* pNewVal);
|
||
STDMETHOD(SetAdditionalParam)(BSTR ParamName, VARIANT ParamValue);
|
||
STDMETHOD(GetAdditionalParam)(BSTR ParamName, VARIANT* ParamValue);
|
||
};
|
||
|