14#include "mitkImageWriteAccessor.h"
17 : m_Plugin(nullptr), m_OutputImage(nullptr)
29 reinterpret_cast<IUnknown*
>(*ppv)->AddRef() ;
36 return InterlockedIncrement(&m_cRef) ;
42 if (InterlockedDecrement(&m_cRef) == 0)
52 int nInterimBufferLen,
66 unsigned int dim[]={
static_cast<unsigned int>(abs(nOutX2 - nOutX1)),
static_cast<unsigned int>(abs(nOutY2 - nOutY1))};
68 m_OutputImage->Initialize(mitk::MakeScalarPixelType<BYTE>(), 2, dim);
84 m_Plugin->SetCallback(
nullptr,USPC_BUFFER_INTERIM_OUTPUT);
103 if (plugin ==
nullptr)
105 MITK_INFO(
"IUsgfwScanConverterPluginCB")(
"ScanConverterPlugin")
106 <<
"nullptr plugin set to the scan converter. The callback for the previous plugin is removed now.";
111 Usgfw2Lib::IUsgScanConverterPlugin* tmp_plugin;
112 hr = plugin->QueryInterface(__uuidof(Usgfw2Lib::IUsgScanConverterPlugin), (
void**)&tmp_plugin);
116 MITK_WARN(
"IUsgfwScanConverterPluginCB")(
"ScanConverterPlugin")
117 <<
"Could not query com interface for IUsgScanConverterPlugin (" << hr <<
").";
123 hr = tmp_plugin->get_ScanConverter((IUnknown**)&
m_Plugin);
127 MITK_WARN(
"IUsgfwScanConverterPluginCB")(
"ScanConverterPlugin")
128 <<
"Could not get ScanConverter from plugin (" << hr <<
").";
137 hr =
m_Plugin->SetCallback(
this,USPC_BUFFER_INTERIM_OUTPUT);
141 MITK_WARN(
"IUsgfwScanConverterPluginCB")(
"ScanConverterPlugin")
142 <<
"Could not set callback for plugin (" << hr <<
").";
mitk::Image::Pointer m_OutputImage
IUsgfwScanConverterPlugin * m_Plugin
USTelemedScanConverterPlugin()
virtual HRESULT __stdcall QueryInterface(const IID &iid, void **ppv)
std::mutex * m_OutputImageMutex
STDMETHOD SetScanConverterPlugin(IDispatch *plugin)
~USTelemedScanConverterPlugin()
virtual ULONG __stdcall AddRef()
STDMETHOD InterimOutBufferCB(PBYTE pBufferInterim, int nInterimBufferLen, PBYTE pBufferOut, int nOutBufferLen, int nOutX1, int nOutY1, int nOutX2, int nOutY2)
void SetOutputImage(mitk::Image::Pointer outputImage, std::mutex *outputImageMutex)
virtual ULONG __stdcall Release()