mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-11 06:22:44 +08:00
111 lines
2.3 KiB
C++
111 lines
2.3 KiB
C++
/*! \file ImageMetaDataIPTC.h
|
|
* \breif Declaration of the CImageMetaDataIPTC
|
|
*/
|
|
|
|
#pragma once
|
|
#include "resource.h" // main symbols
|
|
#include "IImageMetaData.h"
|
|
#include "metadatatypes.h"
|
|
|
|
#include "..\metadataparsers\iptcparser.h"
|
|
#include <string>
|
|
#include "..\XML\MetaDataTransform.h"
|
|
#include "MetaDataInterface.h"
|
|
|
|
|
|
/*! \class CImageMetaDataExif
|
|
*/
|
|
[
|
|
coclass,
|
|
default(IImageMetaDataIPTC),
|
|
threading(apartment),
|
|
support_error_info("IImageMetaDataIPTC"),
|
|
vi_progid("AVSImageMetaData.ImageMetaDataIPTC"),
|
|
progid("AVSImageMetaData.ImageMetaDataIPTC.1"),
|
|
version(1.0),
|
|
uuid("670B7133-278D-4935-A812-8744E2C2215C")
|
|
]
|
|
class ATL_NO_VTABLE CImageMetaDataIPTC :
|
|
public IImageMetaDataIPTC,
|
|
public AVS::Image::Details::ImageMetaDataCommonImpl
|
|
{
|
|
friend class CImageMetaDataParser;
|
|
public:
|
|
CImageMetaDataIPTC()
|
|
{
|
|
}
|
|
|
|
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
|
|
HRESULT FinalConstruct()
|
|
{
|
|
return S_OK;
|
|
}
|
|
|
|
void FinalRelease()
|
|
{
|
|
}
|
|
|
|
|
|
public:
|
|
// IImageMetaDataIPTC Methods
|
|
// IImageMetaDataCommon Methods
|
|
|
|
STDMETHOD(get_MetaDataType)(DWORD * dwMode)
|
|
{
|
|
if (NULL == dwMode)
|
|
return E_POINTER;
|
|
*dwMode = AVS::Image::MetaDataTypes::IPTC;
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHOD(GetCommonXML)(DWORD dwMode, BSTR * bstrMetaDataXML)
|
|
{
|
|
HRESULT hr;
|
|
if (NULL == bstrMetaDataXML)
|
|
return E_POINTER;
|
|
*bstrMetaDataXML = NULL;
|
|
|
|
BSTR bsIPTCXml = NULL;
|
|
if FAILED(hr = GetXML(0, &bsIPTCXml))
|
|
return hr;
|
|
|
|
BSTR bsResultXml = NULL;
|
|
if (!AVS::Image::XML::MetaDataXMLTransform::TransformIPTCToCommon(bsIPTCXml, &bsResultXml))
|
|
return E_FAIL;
|
|
|
|
*bstrMetaDataXML = bsResultXml;
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHOD(GetXML)(DWORD dwMode, BSTR * bstrMetaDataXML)
|
|
{
|
|
if (NULL == bstrMetaDataXML)
|
|
return E_POINTER;
|
|
*bstrMetaDataXML = CComBSTR(_GetXML().c_str()).Copy();
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHOD(SetTranslateXML)(BSTR bstrTranslateXML)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
STDMETHOD(SetAdditionalParam)(BSTR ParamName, VARIANT ParamValue)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
STDMETHOD(GetAdditionalParam)(BSTR ParamName, VARIANT * ParamValue)
|
|
{
|
|
if (_bstr_t(ParamName) == _bstr_t(L"TypeName"))
|
|
{
|
|
(*ParamValue).vt = VT_BSTR;
|
|
(*ParamValue).bstrVal = ::SysAllocString(L"IPTC");
|
|
return S_OK;
|
|
}
|
|
return E_INVALIDARG;
|
|
}
|
|
};
|
|
|